|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 2/3] xen/arm64: resync atomics and spinlock asm with Linux
At 16:20 +0100 on 19 Jul (1374250809), Ian Campbell wrote:
> This picks up the changes from Linux commit 3a0310eb369a:
> arm64: atomics: fix grossly inconsistent asm constraints for exclusives
>
> Our uses of inline asm constraints for atomic operations are fairly
> wild and varied. We basically need to guarantee the following:
>
> 1. Any instructions with barrier implications
> (load-acquire/store-release) have a "memory" clobber
>
> 2. When performing exclusive accesses, the addresing mode is generated
> using the "Q" constraint
>
> 3. Atomic blocks which use the condition flags, have a "cc" clobber
>
> This patch addresses these concerns which, as well as fixing the
> semantics of the code, stops GCC complaining about impossible asm
> constraints.
>
> Signed-off-by: Will Deacon <will.deacon@xxxxxxx>
> Signed-off-by: Catalin Marinas <catalin.marinas@xxxxxxx>
>
> Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx>
In so far as this is just pulling in upstream fixes to code we copied
from linux, Acked-by: Tim Deegan <tim@xxxxxxx>
But I don't understand the new 'memory' clobbers around in this patch.
Or rather, I don't understand why there are memory clobbers but not
DMBs.
The ARM ARM says:
"The synchronization primitives follow the memory order model of the
memory type accessed by the instructions. For this reason:
- Portable code for claiming a spin-lock must include a Data
Memory Barrier (DMB) operation, performed by a DMB instruction,
between claiming the spin-lock and making any access that makes
use of the spin-lock.
- Portable code for releasing a spin-lock must include a DMB
instruction before writing to clear the spin-lock.
This requirement applies to code using:
- the Load-Exclusive/Store-Exclusive instruction pairs, for
example LDREX/STREX
- the deprecated synchronization primitives, SWP/SWPB."
Are the callers of these ops expected to put in the DMBs separately?
Tim.
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |