Commit 6516ab6f authored by Linus Torvalds's avatar Linus Torvalds

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
parents 06e79d3b 46c498c2
...@@ -24,6 +24,9 @@ struct smpboot_thread_data; ...@@ -24,6 +24,9 @@ struct smpboot_thread_data;
* parked (cpu offline) * parked (cpu offline)
* @unpark: Optional unpark function, called when the thread is * @unpark: Optional unpark function, called when the thread is
* unparked (cpu online) * unparked (cpu online)
* @pre_unpark: Optional unpark function, called before the thread is
* unparked (cpu online). This is not guaranteed to be
* called on the target cpu of the thread. Careful!
* @selfparking: Thread is not parked by the park function. * @selfparking: Thread is not parked by the park function.
* @thread_comm: The base name of the thread * @thread_comm: The base name of the thread
*/ */
...@@ -37,6 +40,7 @@ struct smp_hotplug_thread { ...@@ -37,6 +40,7 @@ struct smp_hotplug_thread {
void (*cleanup)(unsigned int cpu, bool online); void (*cleanup)(unsigned int cpu, bool online);
void (*park)(unsigned int cpu); void (*park)(unsigned int cpu);
void (*unpark)(unsigned int cpu); void (*unpark)(unsigned int cpu);
void (*pre_unpark)(unsigned int cpu);
bool selfparking; bool selfparking;
const char *thread_comm; const char *thread_comm;
}; };
......
...@@ -209,6 +209,8 @@ static void smpboot_unpark_thread(struct smp_hotplug_thread *ht, unsigned int cp ...@@ -209,6 +209,8 @@ static void smpboot_unpark_thread(struct smp_hotplug_thread *ht, unsigned int cp
{ {
struct task_struct *tsk = *per_cpu_ptr(ht->store, cpu); struct task_struct *tsk = *per_cpu_ptr(ht->store, cpu);
if (ht->pre_unpark)
ht->pre_unpark(cpu);
kthread_unpark(tsk); kthread_unpark(tsk);
} }
......
...@@ -336,7 +336,7 @@ static struct smp_hotplug_thread cpu_stop_threads = { ...@@ -336,7 +336,7 @@ static struct smp_hotplug_thread cpu_stop_threads = {
.create = cpu_stop_create, .create = cpu_stop_create,
.setup = cpu_stop_unpark, .setup = cpu_stop_unpark,
.park = cpu_stop_park, .park = cpu_stop_park,
.unpark = cpu_stop_unpark, .pre_unpark = cpu_stop_unpark,
.selfparking = true, .selfparking = true,
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment