From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933777AbcIEN5s (ORCPT ); Mon, 5 Sep 2016 09:57:48 -0400 Received: from mx0b-001b2d01.pphosted.com ([148.163.158.5]:35794 "EHLO mx0a-001b2d01.pphosted.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S933711AbcIEN5o (ORCPT ); Mon, 5 Sep 2016 09:57:44 -0400 X-IBM-Helo: d03dlp02.boulder.ibm.com X-IBM-MailFrom: paulmck@linux.vnet.ibm.com Date: Mon, 5 Sep 2016 06:57:37 -0700 From: "Paul E. McKenney" To: Peter Zijlstra Cc: Linus Torvalds , Will Deacon , Oleg Nesterov , Benjamin Herrenschmidt , Michael Ellerman , linux-kernel@vger.kernel.org, Nicholas Piggin , Ingo Molnar , Alan Stern Subject: Re: Question on smp_mb__before_spinlock Reply-To: paulmck@linux.vnet.ibm.com References: <20160905093753.GN10138@twins.programming.kicks-ass.net> <20160905103714.GZ3663@linux.vnet.ibm.com> <20160905113435.GZ10153@twins.programming.kicks-ass.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20160905113435.GZ10153@twins.programming.kicks-ass.net> User-Agent: Mutt/1.5.21 (2010-09-15) X-TM-AS-GCONF: 00 X-Content-Scanned: Fidelis XPS MAILER x-cbid: 16090513-0028-0000-0000-00000583D819 X-IBM-SpamModules-Scores: X-IBM-SpamModules-Versions: BY=3.00005714; HX=3.00000240; KW=3.00000007; PH=3.00000004; SC=3.00000184; SDB=6.00754094; UDB=6.00356768; IPR=6.00526919; BA=6.00004693; NDR=6.00000001; ZLA=6.00000005; ZF=6.00000009; ZB=6.00000000; ZP=6.00000000; ZH=6.00000000; ZU=6.00000002; MB=3.00012585; XFM=3.00000011; UTC=2016-09-05 13:57:41 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 16090513-0029-0000-0000-00002EF4C4F1 Message-Id: <20160905135737.GA3663@linux.vnet.ibm.com> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:,, definitions=2016-09-05_06:,, signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 suspectscore=0 malwarescore=0 phishscore=0 adultscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1604210000 definitions=main-1609050210 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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