Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1758658AbbBGUGc (ORCPT ); Sat, 7 Feb 2015 15:06:32 -0500 Received: from e33.co.us.ibm.com ([32.97.110.151]:34280 "EHLO e33.co.us.ibm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756004AbbBGUGa (ORCPT ); Sat, 7 Feb 2015 15:06:30 -0500 Date: Sat, 7 Feb 2015 12:06:24 -0800 From: "Paul E. McKenney" To: Frederic Weisbecker Cc: Rik van Riel , kvm@vger.kernel.org, borntraeger@de.ibm.com, linux-kernel@vger.kernel.org, mtosatti@redhat.com, mingo@kernel.orgm, ak@linux.intel.com, oleg@redhat.com, masami.hiramatsu.pt@hitachi.com, lcapitulino@redhat.com, pbonzini@redhat.com Subject: Re: [PATCH 1/5] rcu,nohz: add state parameter to context_tracking_user_enter/exit Message-ID: <20150207200624.GZ5418@linux.vnet.ibm.com> Reply-To: paulmck@linux.vnet.ibm.com References: <1423167832-17609-2-git-send-email-riel@redhat.com> <20150206172209.GC21905@lerouge> <54D505E5.9000003@redhat.com> <20150206182258.GH21905@lerouge> <54D50D4C.8010505@redhat.com> <20150206231511.GA18934@lerouge> <54D58C3E.50804@redhat.com> <20150207063421.GY5418@linux.vnet.ibm.com> <20150207071453.GA12268@linux.vnet.ibm.com> <20150207083036.GA24538@lerouge> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20150207083036.GA24538@lerouge> User-Agent: Mutt/1.5.21 (2010-09-15) X-TM-AS-MML: disable X-Content-Scanned: Fidelis XPS MAILER x-cbid: 15020720-0009-0000-0000-00000896CE83 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 4397 Lines: 92 On Sat, Feb 07, 2015 at 09:30:41AM +0100, Frederic Weisbecker wrote: > On Fri, Feb 06, 2015 at 11:14:53PM -0800, Paul E. McKenney wrote: > > On Fri, Feb 06, 2015 at 10:34:21PM -0800, Paul E. McKenney wrote: > > > On Fri, Feb 06, 2015 at 10:53:34PM -0500, Rik van Riel wrote: > > > > -----BEGIN PGP SIGNED MESSAGE----- > > > > Hash: SHA1 > > > > > > > > On 02/06/2015 06:15 PM, Frederic Weisbecker wrote: > > > > > > > > > Just a few things then: > > > > > > > > > > 1) In this case rename context_tracking_user_enter/exit() to > > > > > context_tracking_enter() and context_tracking_exit(), since it's > > > > > not anymore about user only but about any generic context. > > > > > > > > > > 2) We have the "WARN_ON_ONCE(!current->mm);" condition that is a > > > > > debug check specific to userspace transitions because kernel > > > > > threads aren't expected to resume to userspace. Can we also expect > > > > > that we never switch to/from guest from a kernel thread? AFAICS > > > > > this happens from an ioctl (thus user task) in x86 for kvm. But I > > > > > only know this case. > > > > > > > > > > 3) You might want to update a few comments that assume we only deal > > > > > with userspace transitions. > > > > > > > > > > 4) trace_user_enter/exit() should stay user-transitions specific. > > > > > > > > Paul, would you like me to send follow-up patches with the cleanups > > > > suggested by Frederic, or would you prefer me to send a new series > > > > with the cleanups integrated? > > > > > > I would prefer a new series, in order to prevent possible future > > > confusion. > > > > Of course, if Frederic would rather push them himself, I am fine with > > that. And in that case, you should ask him for his preferences, which > > just might differ from mine. ;-) > > I prefer a new series too. Now whether you or me take the patches, I don't mind > either way :-) > > Also I wonder how this feature is going to be enabled. Will it be enabled on > full dynticks or should it be a seperate feature depending on full dynticks? > Or even just CONFIG_RCU_USER_EQS? Because I'm still unclear about how and what > this is used, if it involves full dynticks or only RCU extended quiescent states. Well, we certainly need it documented. And validation considerations would push for keeping the number of possible combinations low, while paranoia about added feature would push for having it be separately enabled. And if distros are going to enable this at build time, we either need -serious- validation or a way to disable at boot time. On the desired/required combinations of features, let's see... If I understand this completely, which I probably don't, we have the following considerations: o NO_HZ_FULL: Needed to get rid of the scheduling-clock interrupt during guest execution, though I am not sure whether we really have that completely wired up with this patch set. Regardless, Rik, for your use case, do you care about whether or not the guest gets interrupted by the host's scheduling-clock interrupts? (Based on discussion in this thread, my guess is "yes".) o RCU_NOCB_CPUS: Implied by NO_HZ_FULL, but only on CPUs actually enabled for NO_HZ_FULL operation, either by NO_HZ_FULL_ALL at build time or by nohz_full= at boot time. Needed to avoid interrupting the guest with host RCU callback invocation. Rik, does your use case care about guests being interrupted by RCU callback invocation? (Based on discussion in this thread, my guess is "yes".) o RCU_USER_EQS: Implied by NO_HZ_FULL, and I would have to go look to see what relation this has to nohz_full=. Needed for RCU to be able to recognize userspace-execution quiescent states on a given CPU without disturbing that CPU. Unless I am missing something subtle, you have to have this for this patch series to make sense. If my guesses are correct, the best approach would be to have this new mode of operation implied by NO_HZ_FULL. The patches seem simple enough that killer validation should be practical, which would avoid further complication of the Kconfig combinatorial space. So, are my guesses correct? Thanx, Paul -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/