From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932098Ab3KVR75 (ORCPT ); Fri, 22 Nov 2013 12:59:57 -0500 Received: from mailout32.mail01.mtsvc.net ([216.70.64.70]:39894 "EHLO n23.mail01.mtsvc.net" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1753756Ab3KVR74 (ORCPT ); Fri, 22 Nov 2013 12:59:56 -0500 Message-ID: <528F9B8D.2090806@hurleysoftware.com> Date: Fri, 22 Nov 2013 12:59:41 -0500 From: Peter Hurley User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.1.1 MIME-Version: 1.0 To: Peter Zijlstra , "Paul E. McKenney" CC: linux-kernel@vger.kernel.org, Will Deacon , Tim Chen , Ingo Molnar , Andrew Morton , Thomas Gleixner , linux-arch@vger.kernel.org, Linus Torvalds , Waiman Long , Andrea Arcangeli , Alex Shi , Andi Kleen , Michel Lespinasse , Davidlohr Bueso , Matthew R Wilcox , Dave Hansen , Rik van Riel , Raghavendra K T , George Spelvin , "H. Peter Anvin" , Arnd Bergmann , Aswin Chandramouleeswaran , Scott J Norton , "Figo.zhang" Subject: Re: [RFC] Control dependencies References: <20131121161733.GH10022@twins.programming.kicks-ass.net> <20131121180237.GX4138@linux.vnet.ibm.com> <20131122134630.GQ3866@twins.programming.kicks-ass.net> In-Reply-To: <20131122134630.GQ3866@twins.programming.kicks-ass.net> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Authenticated-User: 990527 peter@hurleysoftware.com Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 11/22/2013 08:46 AM, Peter Zijlstra wrote: > How about the below version? > > --- > --- a/kernel/events/ring_buffer.c > +++ b/kernel/events/ring_buffer.c > @@ -61,19 +61,20 @@ static void perf_output_put_handle(struc > * > * kernel user > * > - * READ ->data_tail READ ->data_head > - * smp_mb() (A) smp_rmb() (C) > - * WRITE $data READ $data > - * smp_wmb() (B) smp_mb() (D) > - * STORE ->data_head WRITE ->data_tail > + * if (LOAD ->data_tail) { LOAD ->data_head > + * (A) smp_rmb() (C) > + * STORE $data LOAD $data > + * smp_wmb() (B) smp_mb() (D) > + * STORE ->data_head STORE ->data_tail I wasn't subscribed to linux-arch so missed the smp_store_release() outcome, if there was one. Are (B) and (D) still slated for changing to STORE.rel semantics, aka smp_store_release()? I realize that, for the perf ring buffer, (D) is in userspace but I'm also interested in non-perf situations where (D) would be in the kernel. Regards, Peter Hurley