Messages in this thread Patch in this message | | | Date | Wed, 13 Jun 2012 13:47:25 -0700 | From | "Paul E. McKenney" <> | Subject | Re: [RFC patch 2/5] smpboot: Provide infrastructure for percpu hotplug threads |
| |
On Wed, Jun 13, 2012 at 12:17:45PM -0700, Paul E. McKenney wrote: > On Wed, Jun 13, 2012 at 09:02:55PM +0200, Thomas Gleixner wrote: > > On Wed, 13 Jun 2012, Paul E. McKenney wrote: > > > On Wed, Jun 13, 2012 at 11:00:54AM -0000, Thomas Gleixner wrote: > > > > /* Now call notifier in preparation. */ > > > > cpu_notify(CPU_ONLINE | mod, hcpu); > > > > + smpboot_unpark_threads(cpu); > > > > > > OK, RCU must use the lower-level interfaces, given that one of > > > then CPU_ONLINE notifiers might invoke synchronize_rcu(). > > > > We can start the threads before the notifiers. There is no > > restriction. > > Sounds very good in both cases!
Just for reference, here is what I am using.
Anticipatory changes in advance of Thomas's next patchset
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
diff --git a/kernel/cpu.c b/kernel/cpu.c index 6ab5d82..510ba5e 100644 --- a/kernel/cpu.c +++ b/kernel/cpu.c @@ -372,10 +372,10 @@ static int __cpuinit _cpu_up(unsigned int cpu, int tasks_frozen) if (ret != 0) goto out_notify; BUG_ON(!cpu_online(cpu)); + smpboot_unpark_threads(cpu); /* Now call notifier in preparation. */ cpu_notify(CPU_ONLINE | mod, hcpu); - smpboot_unpark_threads(cpu); out_notify: if (ret != 0) diff --git a/kernel/smpboot.c b/kernel/smpboot.c index d7a3659..7d54e7c 100644 --- a/kernel/smpboot.c +++ b/kernel/smpboot.c @@ -201,7 +201,7 @@ void smpboot_park_threads(unsigned int cpu) struct smp_hotplug_thread *cur; mutex_lock(&smpboot_threads_lock); - list_for_each_entry(cur, &hotplug_threads, list) + list_for_each_entry_reverse(cur, &hotplug_threads, list) smpboot_park_thread(cur, cpu); mutex_unlock(&smpboot_threads_lock); }
| |