Re: [PATCH v10 00/12] barrier: Add smp_cond_load_{relaxed,acquire}_timeout()
From: David Laight
Date: Wed Mar 25 2026 - 16:25:25 EST
On Wed, 25 Mar 2026 16:32:49 +0000
Catalin Marinas <catalin.marinas@xxxxxxx> wrote:
> On Wed, Mar 25, 2026 at 03:42:10PM +0000, David Laight wrote:
...
> > Looking at the code I think the "sevl; wfe" pair should be higher up.
>
> Yes, I replied to your other message. We could move it higher indeed,
> before the condition check, but I can't get my head around the ordering.
> Can need_resched() check be speculated before the WFE? I need to think
> some more.
I don't think speculation can matter.
Both SEVL and WFE must be serialised against any other instructions
that can change the event flag (as well as each other) otherwise
everything is broken.
Apart from that it doesn't matter, what matters is the instruction
boundary the interrupt happens at.
Actually both SEVL and WFE may be synchronising instructions and very slow.
So you may not want to put them in the fast path where the condition
is true on entry (or even true after a retry).
So the code might have to look like:
for (;;) {
VAL = mem;
if (cond(VAL)) return;
SEVL; WFE;
if (cond(VAL)) return;
v1 = LDX(mem);
if (v1 == VAL)
WFE;
}
Definitely needs a comment that both 'return from exception' and
losing the exclusive access set the event flag.
The asm probably ought to have a full "memory" clobber.
Just in case the compiler gets lively with re-ordering.
David