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