Thread (4 messages) 4 messages, 4 authors, 2016-06-14

Re: [PATCH] locking/qspinlock: Use atomic_sub_return_release in queued_spin_unlock

From: Peter Zijlstra <peterz@infradead.org>
Date: 2016-06-14 12:04:59
Also in: lkml

On Tue, Jun 14, 2016 at 01:52:53PM +0800, Boqun Feng wrote:
On Mon, Jun 13, 2016 at 12:45:23PM -0700, Davidlohr Bueso wrote:
quoted
On Fri, 03 Jun 2016, Pan Xinhui wrote:
quoted
The existing version uses a heavy barrier while only release semantics
is required. So use atomic_sub_return_release instead.

Suggested-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Signed-off-by: Pan Xinhui <redacted>
I just noticed this change in -tip and, while I know that saving a barrier
in core spinlock paths is perhaps a worthy exception, I cannot help but
wonder if this is the begging of the end for smp__{before,after}_atomic().
This is surely a good direction I think, that is using _acquire and
_release primitives to replace those barriers. However, I think we
should do this carefully, because the _acquire and _release primitives
are RCpc because they are on PPC, IOW, a ACQUIRE and RELEASE pair is not
a full barrier nor provides global transivity. I'm worried about there
are some users depending on the full-barrier semantics, which means we
must audit each use carefully before we make the change.
Very good point indeed. And yes, the whole RCpc thing, but also the
tricky wandering store on PPC/ARM64 ACQUIRE makes for lots of 'fun' we
can do without.
Besides, if we want to do the conversion, we'd better have _acquire and
_release variants for non-value-returning atomic operations.
Indeed, I've been tempted to introduce those before.
I remember you were working on those variants. How is that going?
Ah, if Davidlohr is working on that, brilliant, less work for me ;-)
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help