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
This commit is contained in:
@@ -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 {
|
|||||||
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
|
|||||||
{
|
{
|
||||||
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 = {
|
|||||||
.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,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user