All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
To: Peter Zijlstra <peterz@infradead.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>,
	Will Deacon <will.deacon@arm.com>,
	Oleg Nesterov <oleg@redhat.com>,
	Benjamin Herrenschmidt <benh@kernel.crashing.org>,
	Michael Ellerman <mpe@ellerman.id.au>,
	linux-kernel@vger.kernel.org, Nicholas Piggin <npiggin@gmail.com>,
	Ingo Molnar <mingo@kernel.org>,
	Alan Stern <stern@rowland.harvard.edu>
Subject: Re: Question on smp_mb__before_spinlock
Date: Mon, 5 Sep 2016 06:57:37 -0700	[thread overview]
Message-ID: <20160905135737.GA3663@linux.vnet.ibm.com> (raw)
In-Reply-To: <20160905113435.GZ10153@twins.programming.kicks-ass.net>

On Mon, Sep 05, 2016 at 01:34:35PM +0200, Peter Zijlstra wrote:
> On Mon, Sep 05, 2016 at 03:37:14AM -0700, Paul E. McKenney wrote:
> > On Mon, Sep 05, 2016 at 11:37:53AM +0200, Peter Zijlstra wrote:
> > > Hi all,
> > > 
> > > So recently I've had two separate issues that touched upon
> > > smp_mb__before_spinlock().
> > > 
> > > 
> > > Since its inception, our understanding of ACQUIRE, esp. as applied to
> > > spinlocks, has changed somewhat. Also, I wonder if, with a simple
> > > change, we cannot make it provide more.
> > > 
> > > The problem with the comment is that the STORE done by spin_lock isn't
> > > itself ordered by the ACQUIRE, and therefore a later LOAD can pass over
> > > it and cross with any prior STORE, rendering the default WMB
> > > insufficient (pointed out by Alan).
> > > 
> > > Now, this is only really a problem on PowerPC and ARM64, the former of
> > > which already defined smp_mb__before_spinlock() as a smp_mb(), the
> > > latter does not, Will?
> > > 
> > > The second issue I wondered about is spinlock transitivity. All except
> > > powerpc have RCsc locks, and since Power already does a full mb, would
> > > it not make sense to put it _after_ the spin_lock(), which would provide
> > > the same guarantee, but also upgrades the section to RCsc.
> > > 
> > > That would make all schedule() calls fully transitive against one
> > > another.
> > > 
> > > 
> > > That is, would something like the below make sense?
> > 
> > Looks to me like you have reinvented smp_mb__after_unlock_lock()...
> 
> Will said the same, but that one doesn't in fact do the first bit, as
> ARM64 also needs a full barrier for that, while it doesn't need that to
> upgrade to RCsc.

Fair enough!

							Thanx, Paul

  reply	other threads:[~2016-09-05 13:57 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-09-05  9:37 Question on smp_mb__before_spinlock Peter Zijlstra
2016-09-05  9:56 ` kbuild test robot
2016-09-05 10:19   ` Peter Zijlstra
2016-09-05 11:26     ` Fengguang Wu
2016-09-05 10:10 ` Will Deacon
2016-09-06 11:17   ` Peter Zijlstra
2016-09-06 17:42     ` Will Deacon
2016-09-05 10:37 ` Paul E. McKenney
2016-09-05 11:34   ` Peter Zijlstra
2016-09-05 13:57     ` Paul E. McKenney [this message]
2016-09-05 10:51 ` kbuild test robot
2016-09-07 12:17 ` Nicholas Piggin
2016-09-07 13:23   ` Peter Zijlstra
2016-09-07 13:51     ` Will Deacon
2016-09-12  2:35       ` Nicholas Piggin
2016-09-12  2:27     ` Nicholas Piggin
2016-09-12 12:54       ` Peter Zijlstra
2016-09-13  2:05         ` Nicholas Piggin

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=20160905135737.GA3663@linux.vnet.ibm.com \
    --to=paulmck@linux.vnet.ibm.com \
    --cc=benh@kernel.crashing.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=mpe@ellerman.id.au \
    --cc=npiggin@gmail.com \
    --cc=oleg@redhat.com \
    --cc=peterz@infradead.org \
    --cc=stern@rowland.harvard.edu \
    --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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.