From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1760726AbcBYOsx (ORCPT ); Thu, 25 Feb 2016 09:48:53 -0500 Received: from bombadil.infradead.org ([198.137.202.9]:34879 "EHLO bombadil.infradead.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932951AbcBYOsv (ORCPT ); Thu, 25 Feb 2016 09:48:51 -0500 Date: Thu, 25 Feb 2016 15:48:38 +0100 From: Peter Zijlstra To: "Paul E. McKenney" Cc: Mathieu Desnoyers , linux-kernel@vger.kernel.org, Ingo Molnar , Lai Jiangshan , dipankar@in.ibm.com, Andrew Morton , josh@joshtriplett.org, Thomas Gleixner , rostedt , David Howells , edumazet@google.com, dvhart@linux.intel.com, fweisbec@gmail.com, Oleg Nesterov , bobby prani Subject: Re: [PATCH tip/core/rcu 02/14] documentation: Fix control dependency and identical stores Message-ID: <20160225144838.GP6356@twins.programming.kicks-ass.net> References: <20160224050021.GA14616@linux.vnet.ibm.com> <1456290047-16654-2-git-send-email-paulmck@linux.vnet.ibm.com> <467632883.7240.1456348324456.JavaMail.zimbra@efficios.com> <20160224214013.GF3522@linux.vnet.ibm.com> <20160225082143.GZ6357@twins.programming.kicks-ass.net> <20160225140703.GJ3522@linux.vnet.ibm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20160225140703.GJ3522@linux.vnet.ibm.com> User-Agent: Mutt/1.5.21 (2012-12-30) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, Feb 25, 2016 at 06:07:03AM -0800, Paul E. McKenney wrote: > Still bad wording... > > It hasn't actually moved anything over the barrier(). It has instead > moved both the barrier() and the WRITE_ONCE(b, p) to precede the "if > (q)". Mathieu mentioned this over IRC yesterday, and I queue a change > so that the paragraph now reads as follows: > > (*) If both legs of the "if" statement begin with identical stores to > the same variable, then those stores must be ordered, either by > preceding both of them with smp_mb() or by using smp_store_release() > to carry out the stores. Please note that it is -not- sufficient > to use barrier() at beginning of each leg of the "if" statement > because, as shown by the example above, optimizing compilers can > destroy the control dependency while respecting the letter of the > barrier() law. > > Does hat help? Maybe.. I still feel the compiler should not do this; but I'm having a hard time explaining why.