From: dxiao@broadcom.com (David Xiao)
To: linux-arm-kernel@lists.infradead.org
Subject: LDREX/STREX and pre-emption on SMP hardware
Date: Fri, 21 Aug 2009 14:29:06 -0700 [thread overview]
Message-ID: <1250890146.29685.18.camel@david-laptop> (raw)
In-Reply-To: <1250870319.10642.23.camel@pc1117.cambridge.arm.com>
On Fri, 2009-08-21 at 08:58 -0700, Catalin Marinas wrote:
> On Fri, 2009-08-21 at 16:50 +0100, Jamie Lokier wrote:
> > Catalin Marinas wrote:
> > > 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.
> >
> > What about when an interrupt handler uses ldrex/strex? There is no
> > call to __switch_to.
>
> I don't see any issues with interrupt handlers, the exclusives should
> work as expected.
>
> The problem is with user apps using the exclusives and the same virtual
> address could be used with LDREX/STREX in two different applications.
> The (local) exclusive monitor may consider a LDREX in the one app and
> STREX in the other app are part of the same pair and store the data
> successfully.
>
The DDI0406A ARM V7 Architecture Reference Manual (section A3.4.1) seems
to indicate that the exclusive monitor is tagging/matching the physical
memory address accessed by the LDREX/STREX instructions.
And in the same document (section A3.4.5), it seems to suggest that the
reason we need to do CLREX during the context switch is that because the
IsExclusiveLocal() implementation does not have to do memory
address/size check, but just the exclusive state check.
Could you confirm that, Catalin? Thanks.
David
next prev parent reply other threads:[~2009-08-21 21:29 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-08-21 15:07 LDREX/STREX and pre-emption on SMP hardware Richard Crewe
2009-08-21 15:42 ` Catalin Marinas
2009-08-21 15:50 ` Jamie Lokier
2009-08-21 15:58 ` Catalin Marinas
2009-08-21 21:29 ` David Xiao [this message]
2009-08-24 15:44 ` Catalin Marinas
2009-08-24 17:14 ` David Xiao
2009-08-24 17:41 ` Catalin Marinas
2009-08-24 18:59 ` David Xiao
2009-09-14 1:43 ` Jamie Lokier
2009-09-14 8:53 ` Catalin Marinas
2009-09-14 10:00 ` Russell King - ARM Linux
2009-09-14 10:06 ` Catalin Marinas
2009-09-14 11:47 ` Catalin Marinas
2009-09-14 12:21 ` Catalin Marinas
2009-09-14 12:43 ` Bill Gatliff
2009-09-14 12:57 ` Catalin Marinas
2009-09-14 19:30 ` Bill Gatliff
2009-09-14 14:09 ` Russell King - ARM Linux
2009-09-14 14:21 ` Russell King - ARM Linux
2009-09-14 14:26 ` Catalin Marinas
2009-09-14 15:35 ` Catalin Marinas
2009-09-14 23:16 ` Jamie Lokier
2009-09-14 14:23 ` Russell King - ARM Linux
2009-09-14 14:29 ` Catalin Marinas
2009-09-18 20:20 ` Russell King - ARM Linux
2009-09-18 22:51 ` Catalin Marinas
2009-08-24 21:12 ` Jamie Lokier
2009-08-25 8:33 ` Catalin Marinas
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1250890146.29685.18.camel@david-laptop \
--to=dxiao@broadcom.com \
--cc=linux-arm-kernel@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox