History

Merge branch 'core-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip

Pull smpboot bugfix from Thomas Gleixner: "A single bugfix for a regression introduced with the conversion of the stop machine threads to the generic smpboot thread management facility" * 'core-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: stop_machine: Mark per cpu stopper enabled early

Linus Torvalds committed 13 years ago

Commit 6516ab62 parents 06e79d3 46c498c3 files · +7 −1Browse files

Unified · Split

3 files
  1. include/linux/smpboot.h +4 −0
  2. kernel/smpboot.c +2 −0
  3. kernel/stop_machine.c +1 −1
include/linux/smpboot.h+4−0
@@ -24,6 +24,9 @@ struct smpboot_thread_data; · 23 unmodified lines
2424 * parked (cpu offline)
2525 * @unpark: Optional unpark function, called when the thread is
2626 * unparked (cpu online)
27+ * @pre_unpark: Optional unpark function, called before the thread is
28+ * unparked (cpu online). This is not guaranteed to be
29+ * called on the target cpu of the thread. Careful!
2730 * @selfparking: Thread is not parked by the park function.
2831 * @thread_comm: The base name of the thread
2932 */
@@ -37,6 +40,7 @@ struct smp_hotplug_thread { · 7 unmodified lines
3740 void (*cleanup)(unsigned int cpu, bool online);
3841 void (*park)(unsigned int cpu);
3942 void (*unpark)(unsigned int cpu);
43+ void (*pre_unpark)(unsigned int cpu);
4044 bool selfparking;
4145 const char *thread_comm;
4246 };
kernel/smpboot.c+2−0
@@ -209,6 +209,8 @@ static void smpboot_unpark_thread(struct smp_hotplug_thread *ht, unsigned int cp · 208 unmodified lines
209209 {
210210 struct task_struct *tsk = *per_cpu_ptr(ht->store, cpu);
211211
212+ if (ht->pre_unpark)
213+ ht->pre_unpark(cpu);
212214 kthread_unpark(tsk);
213215 }
214216
kernel/stop_machine.c+1−1
@@ -336,7 +336,7 @@ static struct smp_hotplug_thread cpu_stop_threads = { · 335 unmodified lines
336336 .create = cpu_stop_create,
337337 .setup = cpu_stop_unpark,
338338 .park = cpu_stop_park,
339− .unpark = cpu_stop_unpark,
339+ .pre_unpark = cpu_stop_unpark,
340340 .selfparking = true,
341341 };
342342