LDREX/STREX and pre-emption on SMP hardware
Catalin Marinas
catalin.marinas at arm.com
Fri Aug 21 11:42:35 EDT 2009
On Fri, 2009-08-21 at 16:07 +0100, Richard Crewe wrote:
> Section A2.9.3 of the ARM architecture ref. manual seems to imply that
> ldrex/strex instruction pairs won't work correctly if they are nested
> due to pre-emption.
>
> Should a strex instruction be added to the low-level interrupt handler
> or should all ldrex/strex instruction pairs be protected from
> pre-emption by disabling interrupts?
There is no need to since preemption means rescheduling which implies a
call to the __switch_to function in entry-armv.S. This function clears
the exclusive monitor state explicitly.
> I have a suspicion that this may only cause problems on SMP systems.
In some situations, there may be a problem on UP systems as LDREX/STREX
are used on non-SMP kernels as well for some atomic operations.
--
Catalin
More information about the linux-arm-kernel
mailing list