diff options
Diffstat (limited to 'kernel/cpu.c')
| -rw-r--r-- | kernel/cpu.c | 15 | 
1 files changed, 13 insertions, 2 deletions
| diff --git a/kernel/cpu.c b/kernel/cpu.c index 6ff2578ecf17..4e11e91010e1 100644 --- a/kernel/cpu.c +++ b/kernel/cpu.c @@ -815,6 +815,10 @@ void __init cpuhp_threads_init(void)  }  #ifdef CONFIG_HOTPLUG_CPU +#ifndef arch_clear_mm_cpumask_cpu +#define arch_clear_mm_cpumask_cpu(cpu, mm) cpumask_clear_cpu(cpu, mm_cpumask(mm)) +#endif +  /**   * clear_tasks_mm_cpumask - Safely clear tasks' mm_cpumask for a CPU   * @cpu: a CPU id @@ -850,7 +854,7 @@ void clear_tasks_mm_cpumask(int cpu)  		t = find_lock_task_mm(p);  		if (!t)  			continue; -		cpumask_clear_cpu(cpu, mm_cpumask(t->mm)); +		arch_clear_mm_cpumask_cpu(cpu, t->mm);  		task_unlock(t);  	}  	rcu_read_unlock(); @@ -1602,7 +1606,7 @@ static struct cpuhp_step cpuhp_hp_states[] = {  		.name			= "ap:online",  	},  	/* -	 * Handled on controll processor until the plugged processor manages +	 * Handled on control processor until the plugged processor manages  	 * this itself.  	 */  	[CPUHP_TEARDOWN_CPU] = { @@ -1611,6 +1615,13 @@ static struct cpuhp_step cpuhp_hp_states[] = {  		.teardown.single	= takedown_cpu,  		.cant_stop		= true,  	}, + +	[CPUHP_AP_SCHED_WAIT_EMPTY] = { +		.name			= "sched:waitempty", +		.startup.single		= NULL, +		.teardown.single	= sched_cpu_wait_empty, +	}, +  	/* Handle smpboot threads park/unpark */  	[CPUHP_AP_SMPBOOT_THREADS] = {  		.name			= "smpboot/threads:online", | 
