From: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
To: Will Deacon <will.deacon@arm.com>
Cc: Peter Zijlstra <peterz@infradead.org>,
Linus Torvalds <torvalds@linux-foundation.org>,
Boqun Feng <boqun.feng@gmail.com>,
Oleg Nesterov <oleg@redhat.com>, Ingo Molnar <mingo@kernel.org>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
Jonathan Corbet <corbet@lwn.net>,
Michal Hocko <mhocko@kernel.org>,
David Howells <dhowells@redhat.com>,
Michael Ellerman <mpe@ellerman.id.au>,
Benjamin Herrenschmidt <benh@kernel.crashing.org>,
Paul Mackerras <paulus@samba.org>
Subject: Re: [PATCH 4/4] locking: Introduce smp_cond_acquire()
Date: Mon, 16 Nov 2015 08:44:43 -0800 [thread overview]
Message-ID: <20151116164443.GA5184@linux.vnet.ibm.com> (raw)
In-Reply-To: <20151116162452.GD1999@arm.com>
On Mon, Nov 16, 2015 at 04:24:53PM +0000, Will Deacon wrote:
> On Mon, Nov 16, 2015 at 05:04:45PM +0100, Peter Zijlstra wrote:
> > On Mon, Nov 16, 2015 at 04:56:58PM +0100, Peter Zijlstra wrote:
> > > On Thu, Nov 12, 2015 at 10:21:39AM -0800, Linus Torvalds wrote:
> > > > Now, the point of spin_unlock_wait() (and "spin_is_locked()") should
> > > > generally be that you have some external ordering guarantee that
> > > > guarantees that the lock has been taken. For example, for the IPC
> > > > semaphores, we do either one of:
> > > >
> > > > (a) get large lock, then - once you hold that lock - wait for each small lock
> > > >
> > > > or
> > > >
> > > > (b) get small lock, then - once you hold that lock - check that the
> > > > largo lock is unlocked
> > > >
> > > > and that's the case we should really worry about. The other uses of
> > > > spin_unlock_wait() should have similar "I have other reasons to know
> > > > I've seen that the lock was taken, or will never be taken after this
> > > > because XYZ".
> > >
> > > I don't think this is true for the usage in do_exit(), we have no
> > > knowledge on if pi_lock is taken or not. We just want to make sure that
> > > _if_ it were taken, we wait until it is released.
> >
> > And unless PPC would move to using RCsc locks with a SYNC in
> > spin_lock(), I don't think it makes sense to add
> > smp_mb__after_unlock_lock() to all tsk->pi_lock instances to fix this.
> > As that is far more expensive than flipping the exit path to do
> > spin_lock()+spin_unlock().
>
> ... or we upgrade spin_unlock_wait to a LOCK operation, which might be
> slightly cheaper than spin_lock()+spin_unlock().
Or we supply a heavyweight version of spin_unlock_wait() that forces
the cache miss. But I bet that the difference in overhead between
spin_lock()+spin_unlock() and the heavyweight version would be down in
the noise.
Thanx, Paul
next prev parent reply other threads:[~2015-11-16 16:44 UTC|newest]
Thread overview: 78+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-11-02 13:29 [PATCH 0/4] scheduler ordering bits Peter Zijlstra
2015-11-02 13:29 ` [PATCH 1/4] sched: Better document the try_to_wake_up() barriers Peter Zijlstra
2015-12-04 0:09 ` Byungchul Park
2015-12-04 0:58 ` Byungchul Park
2015-11-02 13:29 ` [PATCH 2/4] sched: Document Program-Order guarantees Peter Zijlstra
2015-11-02 20:27 ` Paul Turner
2015-11-02 20:34 ` Peter Zijlstra
2015-11-02 22:09 ` Paul Turner
2015-11-02 22:12 ` Peter Zijlstra
2015-11-20 10:02 ` Peter Zijlstra
2015-11-20 14:08 ` Boqun Feng
2015-11-20 14:18 ` Peter Zijlstra
2015-11-20 14:21 ` Boqun Feng
2015-11-20 19:41 ` Peter Zijlstra
2015-11-02 13:29 ` [PATCH 3/4] sched: Fix a race in try_to_wake_up() vs schedule() Peter Zijlstra
2015-11-02 13:29 ` [PATCH 4/4] locking: Introduce smp_cond_acquire() Peter Zijlstra
2015-11-02 13:57 ` Peter Zijlstra
2015-11-02 17:43 ` Will Deacon
2015-11-03 1:14 ` Paul E. McKenney
2015-11-03 1:25 ` Linus Torvalds
2015-11-02 17:42 ` Will Deacon
2015-11-02 18:08 ` Linus Torvalds
2015-11-02 18:37 ` Will Deacon
2015-11-02 19:17 ` Linus Torvalds
2015-11-02 19:57 ` Will Deacon
2015-11-02 20:23 ` Peter Zijlstra
2015-11-02 21:56 ` Peter Zijlstra
2015-11-03 1:57 ` Paul E. McKenney
2015-11-03 19:40 ` Linus Torvalds
2015-11-04 3:57 ` Paul E. McKenney
2015-11-04 4:43 ` Linus Torvalds
2015-11-04 12:54 ` Paul E. McKenney
2015-11-02 20:36 ` David Howells
2015-11-02 20:40 ` Peter Zijlstra
2015-11-02 21:11 ` Linus Torvalds
2015-11-03 17:59 ` Oleg Nesterov
2015-11-03 18:23 ` Peter Zijlstra
2015-11-11 9:39 ` Boqun Feng
2015-11-11 10:34 ` Boqun Feng
2015-11-11 19:53 ` Oleg Nesterov
2015-11-12 13:50 ` Paul E. McKenney
2015-11-11 12:12 ` Peter Zijlstra
2015-11-11 19:39 ` Oleg Nesterov
2015-11-11 21:23 ` Linus Torvalds
2015-11-12 7:14 ` Boqun Feng
2015-11-12 10:28 ` Peter Zijlstra
2015-11-12 15:00 ` Oleg Nesterov
2015-11-12 14:40 ` Paul E. McKenney
2015-11-12 14:49 ` Boqun Feng
2015-11-12 15:02 ` Paul E. McKenney
2015-11-12 21:53 ` Will Deacon
2015-11-12 14:50 ` Peter Zijlstra
2015-11-12 15:01 ` Paul E. McKenney
2015-11-12 15:08 ` Peter Zijlstra
2015-11-12 15:20 ` Paul E. McKenney
2015-11-12 21:25 ` Will Deacon
2015-11-12 15:18 ` Boqun Feng
2015-11-12 18:38 ` Oleg Nesterov
2015-11-12 18:02 ` Peter Zijlstra
2015-11-12 19:33 ` Oleg Nesterov
2015-11-12 18:59 ` Paul E. McKenney
2015-11-12 21:33 ` Will Deacon
2015-11-12 23:43 ` Paul E. McKenney
2015-11-16 13:58 ` Will Deacon
2015-11-12 18:21 ` Linus Torvalds
2015-11-12 22:09 ` Will Deacon
2015-11-16 15:56 ` Peter Zijlstra
2015-11-16 16:04 ` Peter Zijlstra
2015-11-16 16:24 ` Will Deacon
2015-11-16 16:44 ` Paul E. McKenney [this message]
2015-11-16 16:46 ` Will Deacon
2015-11-16 17:15 ` Paul E. McKenney
2015-11-16 21:58 ` Linus Torvalds
2015-11-17 11:51 ` Will Deacon
2015-11-17 21:01 ` Paul E. McKenney
2015-11-18 11:25 ` Will Deacon
2015-11-19 18:01 ` Will Deacon
2015-11-20 10:09 ` Peter Zijlstra
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=20151116164443.GA5184@linux.vnet.ibm.com \
--to=paulmck@linux.vnet.ibm.com \
--cc=benh@kernel.crashing.org \
--cc=boqun.feng@gmail.com \
--cc=corbet@lwn.net \
--cc=dhowells@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mhocko@kernel.org \
--cc=mingo@kernel.org \
--cc=mpe@ellerman.id.au \
--cc=oleg@redhat.com \
--cc=paulus@samba.org \
--cc=peterz@infradead.org \
--cc=torvalds@linux-foundation.org \
--cc=will.deacon@arm.com \
/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