Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1627578
| From | Peter Zijlstra <peterz@infradead.org> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | Re: [PATCH tip/core/rcu 07/13] rcu: Add smp_mb__after_atomic() to sync_exp_work_done() |
| Date | 2017-04-20 17:10 +0200 |
| Message-ID | <tylSy-26m-29@gated-at.bofh.it> (permalink) |
| References | (5 earlier) <tvR2y-6iE-1@gated-at.bofh.it> <tvRce-6mR-11@gated-at.bofh.it> <ty7cS-1dY-19@gated-at.bofh.it> <tyihX-8g4-1@gated-at.bofh.it> <tylSy-26m-7@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
On Thu, Apr 20, 2017 at 08:03:21AM -0700, Paul E. McKenney wrote:
> On Thu, Apr 20, 2017 at 01:17:43PM +0200, Peter Zijlstra wrote:
> > > +/**
> > > + * spin_is_locked - Conditionally interpose after prior critical sections
> > > + * @lock: the spinlock whose critical sections are to be interposed.
> > > + *
> > > + * Semantically this is equivalent to a spin_trylock(), and, if
> > > + * the spin_trylock() succeeds, immediately followed by a (mythical)
> > > + * spin_unlock_relaxed(). The return value from spin_trylock() is returned
> > > + * by spin_is_locked(). Note that all current architectures have extremely
> > > + * efficient implementations in which the spin_is_locked() does not even
> > > + * write to the lock variable.
> > > + *
> > > + * A successful spin_is_locked() primitive in some sense "takes its place"
> > > + * after some critical section for the lock in question. Any accesses
> > > + * following a successful spin_is_locked() call will therefore happen
> > > + * after any accesses by any of the preceding critical section for that
> > > + * same lock. Note however, that spin_is_locked() provides absolutely no
> > > + * ordering guarantees for code preceding the call to that spin_is_locked().
> > > + */
> > > static __always_inline int spin_is_locked(spinlock_t *lock)
> > > {
> > > return raw_spin_is_locked(&lock->rlock);
> >
> > I'm current confused on this one. The case listed in the qspinlock code
> > doesn't appear to exist in the kernel anymore (or at least, I'm having
> > trouble finding it).
> >
> > That said, I'm also not sure spin_is_locked() provides an acquire, as
> > that comment has an explicit smp_acquire__after_ctrl_dep();
>
> OK, I have dropped this portion of the patch for the moment.
>
> Going forward, exactly what semantics do you believe spin_is_locked()
> provides?
>
> Do any of the current implementations need to change to provide the
> semantics expected by the various use cases?
I don't have anything other than the comment I wrote back then. I would
have to go audit all spin_is_locked() implementations and users (again).
Back to linux.kernel | Previous | Next — Previous in thread | Find similar | Unroll thread
[PATCH tip/core/rcu 07/13] rcu: Add smp_mb__after_atomic() to sync_exp_work_done() "Paul E. McKenney" <paulmck@linux.vnet.ibm.com> - 2017-04-12 19:00 +0200
Re: [PATCH tip/core/rcu 07/13] rcu: Add smp_mb__after_atomic() to sync_exp_work_done() Peter Zijlstra <peterz@infradead.org> - 2017-04-13 11:20 +0200
Re: [PATCH tip/core/rcu 07/13] rcu: Add smp_mb__after_atomic() to sync_exp_work_done() Peter Zijlstra <peterz@infradead.org> - 2017-04-13 11:40 +0200
Re: [PATCH tip/core/rcu 07/13] rcu: Add smp_mb__after_atomic() to sync_exp_work_done() "Paul E. McKenney" <paulmck@linux.vnet.ibm.com> - 2017-04-13 18:20 +0200
Re: [PATCH tip/core/rcu 07/13] rcu: Add smp_mb__after_atomic() to sync_exp_work_done() Peter Zijlstra <peterz@infradead.org> - 2017-04-13 18:30 +0200
Re: [PATCH tip/core/rcu 07/13] rcu: Add smp_mb__after_atomic() to sync_exp_work_done() "Paul E. McKenney" <paulmck@linux.vnet.ibm.com> - 2017-04-13 19:00 +0200
Re: [PATCH tip/core/rcu 07/13] rcu: Add smp_mb__after_atomic() to sync_exp_work_done() Peter Zijlstra <peterz@infradead.org> - 2017-04-13 19:20 +0200
Re: [PATCH tip/core/rcu 07/13] rcu: Add smp_mb__after_atomic() to sync_exp_work_done() "Paul E. McKenney" <paulmck@linux.vnet.ibm.com> - 2017-04-13 19:50 +0200
Re: [PATCH tip/core/rcu 07/13] rcu: Add smp_mb__after_atomic() to sync_exp_work_done() Peter Zijlstra <peterz@infradead.org> - 2017-04-13 20:00 +0200
Re: [PATCH tip/core/rcu 07/13] rcu: Add smp_mb__after_atomic() to sync_exp_work_done() Peter Zijlstra <peterz@infradead.org> - 2017-04-13 20:10 +0200
Re: [PATCH tip/core/rcu 07/13] rcu: Add smp_mb__after_atomic() to sync_exp_work_done() "Paul E. McKenney" <paulmck@linux.vnet.ibm.com> - 2017-04-20 01:30 +0200
Re: [PATCH tip/core/rcu 07/13] rcu: Add smp_mb__after_atomic() to sync_exp_work_done() "Paul E. McKenney" <paulmck@linux.vnet.ibm.com> - 2017-04-20 01:30 +0200
Re: [PATCH tip/core/rcu 07/13] rcu: Add smp_mb__after_atomic() to sync_exp_work_done() Peter Zijlstra <peterz@infradead.org> - 2017-04-20 13:20 +0200
Re: [PATCH tip/core/rcu 07/13] rcu: Add smp_mb__after_atomic() to sync_exp_work_done() "Paul E. McKenney" <paulmck@linux.vnet.ibm.com> - 2017-04-20 17:10 +0200
Re: [PATCH tip/core/rcu 07/13] rcu: Add smp_mb__after_atomic() to sync_exp_work_done() Peter Zijlstra <peterz@infradead.org> - 2017-04-20 17:10 +0200
csiph-web