From: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
To: "Srivatsa S. Bhat" <srivatsa.bhat@linux.vnet.ibm.com>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>,
Arjan van de Ven <arjan@infradead.org>,
Steven Rostedt <rostedt@goodmis.org>,
"rusty@rustcorp.com.au" <rusty@rustcorp.com.au>,
"Rafael J. Wysocki" <rjw@sisk.pl>,
Srivatsa Vaddagiri <vatsa@linux.vnet.ibm.com>,
"akpm@linux-foundation.org" <akpm@linux-foundation.org>,
Paul Gortmaker <paul.gortmaker@windriver.com>,
Milton Miller <miltonm@bga.com>, "mingo@elte.hu" <mingo@elte.hu>,
Tejun Heo <tj@kernel.org>,
KOSAKI Motohiro <kosaki.motohiro@gmail.com>,
linux-kernel <linux-kernel@vger.kernel.org>,
Linux PM mailing list <linux-pm@vger.kernel.org>
Subject: Re: CPU Hotplug rework
Date: Thu, 5 Apr 2012 10:55:49 -0700 [thread overview]
Message-ID: <20120405175549.GA9127@linux.vnet.ibm.com> (raw)
In-Reply-To: <20120405173918.GC8194@linux.vnet.ibm.com>
On Thu, Apr 05, 2012 at 10:39:18AM -0700, Paul E. McKenney wrote:
> On Mon, Mar 19, 2012 at 08:18:42PM +0530, Srivatsa S. Bhat wrote:
> > On 03/19/2012 08:14 PM, Srivatsa S. Bhat wrote:
> >
> > > Hi,
> > >
> > > There had been some discussion on CPU Hotplug redesign/rework
> > > some time ago, but it was buried under a thread with a different
> > > subject.
> > > (http://thread.gmane.org/gmane.linux.kernel/1246208/focus=1246404)
> > >
> > > So I am opening a new thread with an appropriate subject to discuss
> > > what needs to be done and how to go about it, as part of the rework.
> > >
> > > Peter Zijlstra and Paul McKenney had come up with TODO lists for the
> > > rework, and here are their extracts from the previous discussion:
>
> Finally getting around to looking at this in more detail...
>
> > Additional things that I would like to add to the list:
> >
> > 1. Fix issues with CPU Hotplug callback registration. Currently there
> > is no totally-race-free way to register callbacks and do setup
> > for already online cpus.
> >
> > I had posted an incomplete patchset some time ago regarding this,
> > which gives an idea of the direction I had in mind.
> > http://thread.gmane.org/gmane.linux.kernel/1258880/focus=15826
>
> Another approach is to have the registration function return the
> CPU mask corresponding to the instant at which registration occurred,
> perhaps via an additional function argument that points to a
> cpumask_var_t that can be NULL if you don't care. Then you can
> do setup for the CPUs indicated in the mask.
>
> Or am I missing the race you had in mind? Or is the point to make
> sure that the notifiers execute in order?
>
> > 2. There is a mismatch between the code and the documentation around
> > the difference between [un/register]_hotcpu_notifier and
> > [un/register]_cpu_notifier. And I remember seeing several places in
> > the code that uses them inconsistently. Not terribly important, but
> > good to fix it up while we are at it.
>
> The following lead me to believe that they were the same:
>
> #define register_hotcpu_notifier(nb) register_cpu_notifier(nb)
> #define unregister_hotcpu_notifier(nb) unregister_cpu_notifier(nb)
>
> What am I missing here?
>
> > 3. There was another thread where stuff related to CPU hotplug had been
> > discussed. It had exposed some new challenges to CPU hotplug, if we
> > were to support asynchronous smp booting.
> >
> > http://thread.gmane.org/gmane.linux.kernel/1246209/focus=48535
> > http://thread.gmane.org/gmane.linux.kernel/1246209/focus=48542
> > http://thread.gmane.org/gmane.linux.kernel/1246209/focus=1253241
> > http://thread.gmane.org/gmane.linux.kernel/1246209/focus=1253267
>
> Good points! ;-)
>
> > 4. Because the current CPU offline code depends on stop_machine(), every
> > online CPU must cooperate with the offline event. This means, whenever
> > we do a preempt_disable(), it ensures not only that that particular
> > CPU won't go offline, but also that *any* CPU cannot go offline. This
> > is more like a side-effect of using stop_machine().
> >
> > So when trying to move over to stop_one_cpu(), we have to carefully audit
> > places where preempt_disable() has been used in that manner (ie.,
> > preempt_disable used as a light-weight and non-blocking form of
> > get_online_cpus()). Because when we move to stop_one_cpu() to do CPU offline,
> > a preempt disabled section will prevent only that particular CPU from
> > going offline.
> >
> > I haven't audited preempt_disable() calls yet, but one such use was there
> > in brlocks (include/linux/lglock.h) until quite recently.
>
> I was thinking in terms of the offline code path doing a synchronize_sched()
> to allow preempt_disable() to retain a reasonable approximation of its
> current semantics. This would require a pair of CPU masks, one for code
> using CPU-based primitives (e.g., sending IPIs) and another for code
> implementing those primitives.
>
> Or is there some situation that makes this approach fail?
Hmmm... I suppose that -rt's use of migrate_disable() needs some other
approach in any case, unless -rt's offlining waits for all pre-existing
migrate_disable() sections to finish.
Thanx, Paul
next prev parent reply other threads:[~2012-04-05 21:43 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-03-19 14:44 CPU Hotplug rework Srivatsa S. Bhat
2012-03-19 14:48 ` Srivatsa S. Bhat
2012-03-20 11:28 ` Peter Zijlstra
2012-04-05 17:39 ` Paul E. McKenney
2012-04-05 17:55 ` Paul E. McKenney [this message]
2012-04-05 23:06 ` Paul E. McKenney
2012-04-06 20:15 ` Srivatsa S. Bhat
2012-04-09 16:46 ` Paul E. McKenney
2012-04-10 7:56 ` Nikunj A Dadhania
2012-04-06 19:52 ` Srivatsa S. Bhat
2012-04-09 17:13 ` Paul E. McKenney
2012-04-10 13:41 ` Srivatsa S. Bhat
2012-04-10 15:46 ` Paul E. McKenney
2012-04-10 17:26 ` Srivatsa S. Bhat
2012-04-11 0:09 ` Steven Rostedt
2012-04-11 0:28 ` Paul E. McKenney
2012-04-11 0:37 ` Steven Rostedt
2012-04-11 1:00 ` Paul E. McKenney
2012-04-11 6:02 ` Srivatsa S. Bhat
2012-04-11 12:28 ` Paul E. McKenney
2012-03-19 23:42 ` Rusty Russell
2012-03-20 10:42 ` Peter Zijlstra
2012-03-20 23:00 ` Rusty Russell
2012-03-21 9:01 ` Peter Zijlstra
2012-03-22 4:25 ` Rusty Russell
2012-03-22 22:49 ` Paul E. McKenney
2012-03-23 23:27 ` Rusty Russell
2012-03-24 0:23 ` Paul E. McKenney
2012-03-26 0:41 ` Rusty Russell
2012-03-26 8:02 ` Peter Zijlstra
2012-03-26 13:09 ` Steven Rostedt
2012-03-26 13:38 ` Peter Zijlstra
2012-03-26 15:22 ` Steven Rostedt
2012-03-26 16:13 ` Peter Zijlstra
2012-03-26 17:05 ` Steven Rostedt
2012-03-26 17:59 ` Peter Zijlstra
2012-03-27 1:32 ` Rusty Russell
2012-03-27 3:05 ` Steven Rostedt
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20120405175549.GA9127@linux.vnet.ibm.com \
--to=paulmck@linux.vnet.ibm.com \
--cc=a.p.zijlstra@chello.nl \
--cc=akpm@linux-foundation.org \
--cc=arjan@infradead.org \
--cc=kosaki.motohiro@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=miltonm@bga.com \
--cc=mingo@elte.hu \
--cc=paul.gortmaker@windriver.com \
--cc=rjw@sisk.pl \
--cc=rostedt@goodmis.org \
--cc=rusty@rustcorp.com.au \
--cc=srivatsa.bhat@linux.vnet.ibm.com \
--cc=tj@kernel.org \
--cc=vatsa@linux.vnet.ibm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.