On Fri, Nov 20, 2020 at 12:57:56PM +1000, Nicholas Piggin wrote: > powerpc keeps a counter in the mm which counts bits set in mm_cpumask as > well as other things. This means it can't use generic code to clear bits > out of the mask and doesn't adjust the arch specific counter. > > Add an arch override allowing powerpc to use clear_tasks_mm_cpumask(). > > Signed-off-by: Nicholas Piggin <npig...@gmail.com>
Seems reasonable enough.. Acked-by: Peter Zijlstra (Intel) <pet...@infradead.org> > --- > kernel/cpu.c | 6 +++++- > 1 file changed, 5 insertions(+), 1 deletion(-) > > diff --git a/kernel/cpu.c b/kernel/cpu.c > index 6ff2578ecf17..2b8d7a5db383 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(); > -- > 2.23.0 >