From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753401AbbFXNt3 (ORCPT ); Wed, 24 Jun 2015 09:49:29 -0400 Received: from e32.co.us.ibm.com ([32.97.110.150]:43564 "EHLO e32.co.us.ibm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753325AbbFXNtQ (ORCPT ); Wed, 24 Jun 2015 09:49:16 -0400 X-Helo: d03dlp01.boulder.ibm.com X-MailFrom: paulmck@linux.vnet.ibm.com X-RcptTo: linux-kernel@vger.kernel.org Date: Wed, 24 Jun 2015 06:48:53 -0700 From: "Paul E. McKenney" To: Peter Zijlstra Cc: Oleg Nesterov , tj@kernel.org, mingo@redhat.com, linux-kernel@vger.kernel.org, der.herr@hofr.at, dave@stgolabs.net, riel@redhat.com, viro@ZenIV.linux.org.uk, torvalds@linux-foundation.org Subject: Re: [RFC][PATCH 12/13] stop_machine: Remove lglock Message-ID: <20150624134834.GB3892@linux.vnet.ibm.com> Reply-To: paulmck@linux.vnet.ibm.com References: <20150623105548.GE18673@twins.programming.kicks-ass.net> <20150623112041.GF18673@twins.programming.kicks-ass.net> <20150623130826.GG18673@twins.programming.kicks-ass.net> <20150623173038.GJ3892@linux.vnet.ibm.com> <20150623180411.GF3644@twins.programming.kicks-ass.net> <20150623182626.GO3892@linux.vnet.ibm.com> <20150623190506.GA7731@linux.vnet.ibm.com> <20150624022332.GA16620@linux.vnet.ibm.com> <20150624083257.GI3644@twins.programming.kicks-ass.net> <20150624093102.GI18673@twins.programming.kicks-ass.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20150624093102.GI18673@twins.programming.kicks-ass.net> User-Agent: Mutt/1.5.21 (2010-09-15) X-TM-AS-MML: disable X-Content-Scanned: Fidelis XPS MAILER x-cbid: 15062413-0005-0000-0000-000010BBFEBF Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Jun 24, 2015 at 11:31:02AM +0200, Peter Zijlstra wrote: > On Wed, Jun 24, 2015 at 10:32:57AM +0200, Peter Zijlstra wrote: > > + s = atomic_long_read(&rsp->expedited_done); > > + if (ULONG_CMP_GE((ulong)s, (ulong)snap)) { > > + /* ensure test happens before caller kfree */ > > + smp_mb__before_atomic(); /* ^^^ */ > > FWIW isn't that guaranteed by the control dep? For trailing stores, yes, but not for trailing loads. Of course, trailing loads don't matter in the pure kfree case, but do matter in other situations. And this isn't anywhere near a fastpath, so I am not all that worried about the extra memory barrier. Thanx, Paul > > + atomic_long_inc(&rsp->expedited_workdone1); > > + goto unlock; > > + } >