diff options
author | Will Deacon <will.deacon@arm.com> | 2013-05-14 05:08:07 -0400 |
---|---|---|
committer | Will Deacon <will.deacon@arm.com> | 2013-08-12 07:25:45 -0400 |
commit | 40a5c0b415f080638a744177653aac4527002bbf (patch) | |
tree | e789ba4420cf5dc77a8ce6466c31e2a3af4b5858 /arch/arm/common | |
parent | e3ab547f57bd626201d4b715b696c80ad1ef4ba2 (diff) |
ARM: mcpm: use -st dsb option prior to sev instructions
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>
Diffstat (limited to 'arch/arm/common')
-rw-r--r-- | arch/arm/common/mcpm_head.S | 2 | ||||
-rw-r--r-- | arch/arm/common/vlock.S | 4 |
2 files changed, 3 insertions, 3 deletions
diff --git a/arch/arm/common/mcpm_head.S b/arch/arm/common/mcpm_head.S index 80f033614a1f..39c96df3477a 100644 --- a/arch/arm/common/mcpm_head.S +++ b/arch/arm/common/mcpm_head.S | |||
@@ -151,7 +151,7 @@ mcpm_setup_leave: | |||
151 | 151 | ||
152 | mov r0, #INBOUND_NOT_COMING_UP | 152 | mov r0, #INBOUND_NOT_COMING_UP |
153 | strb r0, [r8, #MCPM_SYNC_CLUSTER_INBOUND] | 153 | strb r0, [r8, #MCPM_SYNC_CLUSTER_INBOUND] |
154 | dsb | 154 | dsb st |
155 | sev | 155 | sev |
156 | 156 | ||
157 | mov r0, r11 | 157 | mov r0, r11 |
diff --git a/arch/arm/common/vlock.S b/arch/arm/common/vlock.S index ff198583f683..8b7df283fedf 100644 --- a/arch/arm/common/vlock.S +++ b/arch/arm/common/vlock.S | |||
@@ -42,7 +42,7 @@ | |||
42 | dmb | 42 | dmb |
43 | mov \rscratch, #0 | 43 | mov \rscratch, #0 |
44 | strb \rscratch, [\rbase, \rcpu] | 44 | strb \rscratch, [\rbase, \rcpu] |
45 | dsb | 45 | dsb st |
46 | sev | 46 | sev |
47 | .endm | 47 | .endm |
48 | 48 | ||
@@ -102,7 +102,7 @@ ENTRY(vlock_unlock) | |||
102 | dmb | 102 | dmb |
103 | mov r1, #VLOCK_OWNER_NONE | 103 | mov r1, #VLOCK_OWNER_NONE |
104 | strb r1, [r0, #VLOCK_OWNER_OFFSET] | 104 | strb r1, [r0, #VLOCK_OWNER_OFFSET] |
105 | dsb | 105 | dsb st |
106 | sev | 106 | sev |
107 | bx lr | 107 | bx lr |
108 | ENDPROC(vlock_unlock) | 108 | ENDPROC(vlock_unlock) |