Do you have a reference on this?<br><br>I have been under the impression that DMB is a barrier for all memory accesses. I find no support in ARMv7, for the hypothesis that DSB is needed to order between Device and Normal.<br>
<br>Regards,<br>Martin Furmanski<br><br><div class="gmail_quote">On Fri, Mar 25, 2011 at 11:16 AM, Catalin Marinas <span dir="ltr"><<a href="mailto:catalin.marinas@arm.com">catalin.marinas@arm.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">Since mandatory barriers may be used (explicitly or implicitly via readl<br>
etc.) to ensure the ordering between Device and Normal memory accesses,<br>
a DMB is not enough. This patch converts it to a DSB.<br>
<br>
Cc: Russell King <<a href="mailto:linux@arm.linux.org.uk">linux@arm.linux.org.uk</a>><br>
Cc: Colin Cross <<a href="mailto:ccross@android.com">ccross@android.com</a>><br>
Signed-off-by: Catalin Marinas <<a href="mailto:catalin.marinas@arm.com">catalin.marinas@arm.com</a>><br>
---<br>
arch/arm/include/asm/system.h | 2 +-<br>
arch/arm/mach-realview/include/mach/barriers.h | 2 +-<br>
arch/arm/mach-tegra/include/mach/barriers.h | 2 +-<br>
3 files changed, 3 insertions(+), 3 deletions(-)<br>
<br>
diff --git a/arch/arm/include/asm/system.h b/arch/arm/include/asm/system.h<br>
index 9a87823..926d867 100644<br>
--- a/arch/arm/include/asm/system.h<br>
+++ b/arch/arm/include/asm/system.h<br>
@@ -159,7 +159,7 @@ extern unsigned int user_debug;<br>
#include <mach/barriers.h><br>
#elif defined(CONFIG_ARM_DMA_MEM_BUFFERABLE) || defined(CONFIG_SMP)<br>
#define mb() do { dsb(); outer_sync(); } while (0)<br>
-#define rmb() dmb()<br>
+#define rmb() dsb()<br>
#define wmb() mb()<br>
#else<br>
#include <asm/memory.h><br>
diff --git a/arch/arm/mach-realview/include/mach/barriers.h b/arch/arm/mach-realview/include/mach/barriers.h<br>
index 0c5d749..9a73219 100644<br>
--- a/arch/arm/mach-realview/include/mach/barriers.h<br>
+++ b/arch/arm/mach-realview/include/mach/barriers.h<br>
@@ -4,5 +4,5 @@<br>
* operation to deadlock the system.<br>
*/<br>
#define mb() dsb()<br>
-#define rmb() dmb()<br>
+#define rmb() dsb()<br>
#define wmb() mb()<br>
diff --git a/arch/arm/mach-tegra/include/mach/barriers.h b/arch/arm/mach-tegra/include/mach/barriers.h<br>
index cc11517..425b42e 100644<br>
--- a/arch/arm/mach-tegra/include/mach/barriers.h<br>
+++ b/arch/arm/mach-tegra/include/mach/barriers.h<br>
@@ -23,7 +23,7 @@<br>
<br>
#include <asm/outercache.h><br>
<br>
-#define rmb() dmb()<br>
+#define rmb() dsb()<br>
#define wmb() do { dsb(); outer_sync(); } while (0)<br>
#define mb() wmb()<br>
<br>
<br>
<br>
<br>
_______________________________________________<br>
linux-arm-kernel mailing list<br>
<a href="mailto:linux-arm-kernel@lists.infradead.org">linux-arm-kernel@lists.infradead.org</a><br>
<a href="http://lists.infradead.org/mailman/listinfo/linux-arm-kernel" target="_blank">http://lists.infradead.org/mailman/listinfo/linux-arm-kernel</a><br>
</blockquote></div><br>