Messages in this thread | | | Date | Thu, 16 Nov 2017 09:58:04 +0100 | From | Peter Zijlstra <> | Subject | Re: [PATCH] refcount: provide same memory ordering guarantees as in atomic_t |
| |
On Wed, Nov 15, 2017 at 10:01:11PM +0100, Andrea Parri wrote:
> > And in specific things like: > > > > 135e8c9250dd5 > > ecf7d01c229d1 > > > > which use the release of rq->lock paired with the next acquire of the > > same rq->lock to match with an smp_rmb(). > > Those cycles are currently forbidden by LKMM _when_ you consider the > smp_mb__after_spinlock() from schedule(). See rfi-rel-acq-is-not-mb > from my previous email and Alan's remarks about cumul-fence.
I'm not sure I get your point; and you all seem to forget I do not in fact speak the ordering lingo. So I have no idea what rfi-blah-blah or cumul-fence mean.
I know rel-acq isn't smp_mb() and I don't think any of the above patches need it to be. They just need it do be a local ordering, no?
Even without smp_mb__after_spinlock() we get that:
spin_lock(&x) x = 1 spin_unlock(&x) spin_lock(&x) y = 1 spin_unlock(&x)
guarantees that x happens-before y, right?
And that should be sufficient to then order something else against, like for example:
r2 = y smp_rmb() r1 = x
no?
| |