Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752589AbbGOOSb (ORCPT ); Wed, 15 Jul 2015 10:18:31 -0400 Received: from e39.co.us.ibm.com ([32.97.110.160]:49993 "EHLO e39.co.us.ibm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751976AbbGOOS1 (ORCPT ); Wed, 15 Jul 2015 10:18:27 -0400 X-Helo: d03dlp01.boulder.ibm.com X-MailFrom: paulmck@linux.vnet.ibm.com X-RcptTo: linux-kernel@vger.kernel.org Date: Wed, 15 Jul 2015 07:18:14 -0700 From: "Paul E. McKenney" To: Michael Ellerman Cc: Benjamin Herrenschmidt , Will Deacon , linux-arch@vger.kernel.org, linux-kernel@vger.kernel.org, Peter Zijlstra , Michael Ellerman Subject: Re: [RFC PATCH v2] memory-barriers: remove smp_mb__after_unlock_lock() Message-ID: <20150715141814.GZ3717@linux.vnet.ibm.com> Reply-To: paulmck@linux.vnet.ibm.com References: <1436789704-10086-1-git-send-email-will.deacon@arm.com> <1436826689.3948.233.camel@kernel.crashing.org> <1436929578.10956.3.camel@ellerman.id.au> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1436929578.10956.3.camel@ellerman.id.au> User-Agent: Mutt/1.5.21 (2010-09-15) X-TM-AS-MML: disable X-Content-Scanned: Fidelis XPS MAILER x-cbid: 15071514-0033-0000-0000-000005298C08 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 3063 Lines: 72 On Wed, Jul 15, 2015 at 01:06:18PM +1000, Michael Ellerman wrote: > On Tue, 2015-07-14 at 08:31 +1000, Benjamin Herrenschmidt wrote: > > On Mon, 2015-07-13 at 13:15 +0100, Will Deacon wrote: > > > smp_mb__after_unlock_lock is used to promote an UNLOCK + LOCK sequence > > > into a full memory barrier. > > > > > > However: > > > > > > - This ordering guarantee is already provided without the barrier on > > > all architectures apart from PowerPC > > > > > > - The barrier only applies to UNLOCK + LOCK, not general > > > RELEASE + ACQUIRE operations > > > > > > - Locks are generally assumed to offer SC ordering semantics, so > > > having this additional barrier is error-prone and complicates the > > > callers of LOCK/UNLOCK primitives > > > > > > - The barrier is not well used outside of RCU and, because it was > > > retrofitted into the kernel, it's not clear whether other areas of > > > the kernel are incorrectly relying on UNLOCK + LOCK implying a full > > > barrier > > > > > > This patch removes the barrier and instead requires architectures to > > > provide full barrier semantics for an UNLOCK + LOCK sequence. > > > > > > Cc: Benjamin Herrenschmidt > > > Cc: Paul McKenney > > > Cc: Peter Zijlstra > > > Signed-off-by: Will Deacon > > > --- > > > > > > This didn't go anywhere last time I posted it, but here it is again. > > > I'd really appreciate some feedback from the PowerPC guys, especially as > > > to whether this change requires them to add an additional barrier in > > > arch_spin_unlock and what the cost of that would be. > > > > We'd have to turn the lwsync in unlock or the isync in lock into a full > > barrier. As it is, we *almost* have a full barrier semantic, but not > > quite, as in things can get mixed up inside spin_lock between the LL and > > the SC (things leaking in past LL and things leaking "out" up before SC > > and then getting mixed up in there). > > > > Michael, at some point you were experimenting a bit with that and tried > > to get some perf numbers of the impact that would have, did that > > solidify ? Otherwise, I'll have a look when I'm back next week. > > I was mainly experimenting with replacing the lwsync in lock with an isync. > > But I think you're talking about making it a full sync in lock. > > That was about +7% on p8, +25% on p7 and +88% on p6. Just for completeness, what were you running as benchmark? ;-) Thanx, Paul > We got stuck deciding whether isync was safe to use as a memory barrier, > because the wording in the arch is a bit vague. > > But if we're talking about a full sync then I think there is no question that's > OK and we should just do it. > > cheers > > -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/