From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753012AbbCQRzl (ORCPT ); Tue, 17 Mar 2015 13:55:41 -0400 Received: from relay4-d.mail.gandi.net ([217.70.183.196]:58266 "EHLO relay4-d.mail.gandi.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752062AbbCQRzj (ORCPT ); Tue, 17 Mar 2015 13:55:39 -0400 Date: Tue, 17 Mar 2015 10:55:33 -0700 From: josh@joshtriplett.org To: Mathieu Desnoyers Cc: "Paul E. McKenney" , Peter Zijlstra , linux-kernel@vger.kernel.org, KOSAKI Motohiro , Steven Rostedt , Nicholas Miell , Linus Torvalds , Ingo Molnar , Alan Cox , Lai Jiangshan , Stephen Hemminger , Andrew Morton , Thomas Gleixner , David Howells Subject: Re: [RFC PATCH] sys_membarrier(): system/process-wide memory barrier (x86) (v12) Message-ID: <20150317175533.GA4141@cloud> References: <1426447459-28620-1-git-send-email-mathieu.desnoyers@efficios.com> <1203077851.9491.1426520636551.JavaMail.zimbra@efficios.com> <20150316172104.GH21418@twins.programming.kicks-ass.net> <1003922584.10662.1426532015839.JavaMail.zimbra@efficios.com> <20150316205435.GJ21418@twins.programming.kicks-ass.net> <910572156.13900.1426556725438.JavaMail.zimbra@efficios.com> <20150317063059.GJ2896@worktop.programming.kicks-ass.net> <680573370.19261.1426598016060.JavaMail.zimbra@efficios.com> <1311724860.20775.1426610187883.JavaMail.zimbra@efficios.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1311724860.20775.1426610187883.JavaMail.zimbra@efficios.com> User-Agent: Mutt/1.5.20 (2009-06-14) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Mar 17, 2015 at 04:36:27PM +0000, Mathieu Desnoyers wrote: > > > On Tue, Mar 17, 2015 at 01:45:25AM +0000, Mathieu Desnoyers wrote: > [...] > > > > > > > Would you see it as acceptable if we start by implementing > > > > only the non-expedited sys_membarrier() ? > > > > > > Sure. > > > > > > > Then we can add > > > > the expedited-private implementation after rq->curr becomes > > > > available through RCU. > > > > > > Yeah, or not at all; I'm still trying to get Paul to remove the > > > expedited nonsense from the kernel RCU bits; and now you want it in > > > userspace too :/ > > > > The non-expedited case makes sense when we batch RCU work > > with call_rcu. However, some users require to use synchronize_rcu() > > directly after modifying their data structure. Therefore, the > > latency associated with sys_membarrier() then becomes important, > > hence the interest for an expedited scheme. > > > > I agree that we should try to find a way to implement it with > > low disturbance on the CPU's rq locks. I'd be certainly > > OK with starting with just the non-expedited scheme, and add > > the expedited scheme later on. This is why we have the flags > > anyway. > > Paul, I'm currently reworking the patch to keep only the > non-expedited scheme. I don't need to touch the scheduler > internals anymore, so should I move the sys_membarrier > system call implementation into kernel/rcu/update.c ? If you don't need access to scheduler internals, I'd suggest putting it in its own file (something like kernel/membarrier.c), so that you can use obj-$(CONFIG_MEMBARRIER) in a Makefile to enable/disable it rather than an #ifdef in a .c file. - Josh Triplett