ARM: mcpm: use -st dsb option prior to sev instructions
authorWill Deacon <will.deacon@arm.com>
Tue, 14 May 2013 09:08:07 +0000 (10:08 +0100)
committerWill Deacon <will.deacon@arm.com>
Mon, 12 Aug 2013 11:25:45 +0000 (12:25 +0100)
In a similar manner to our spinlock implementation, mcpm uses sev to
wake up cores waiting on a lock when the lock is unlocked. In order to
ensure that the final write unlocking the lock is visible, a dsb
instruction is executed immediately prior to the sev.

This patch changes these dsbs to use the -st option, since we only
require that the store unlocking the lock is made visible.

Acked-by: Nicolas Pitre <nico@linaro.org>
Reviewed-by: Dave Martin <dave.martin@arm.com>
Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Will Deacon <will.deacon@arm.com>
arch/arm/common/mcpm_head.S
arch/arm/common/vlock.S

index 80f0336..39c96df 100644 (file)
@@ -151,7 +151,7 @@ mcpm_setup_leave:
 
        mov     r0, #INBOUND_NOT_COMING_UP
        strb    r0, [r8, #MCPM_SYNC_CLUSTER_INBOUND]
-       dsb
+       dsb     st
        sev
 
        mov     r0, r11
index ff19858..8b7df28 100644 (file)
@@ -42,7 +42,7 @@
        dmb
        mov     \rscratch, #0
        strb    \rscratch, [\rbase, \rcpu]
-       dsb
+       dsb     st
        sev
 .endm
 
@@ -102,7 +102,7 @@ ENTRY(vlock_unlock)
        dmb
        mov     r1, #VLOCK_OWNER_NONE
        strb    r1, [r0, #VLOCK_OWNER_OFFSET]
-       dsb
+       dsb     st
        sev
        bx      lr
 ENDPROC(vlock_unlock)