Messages in this thread | | | Date | Tue, 23 Jun 2015 19:24:16 +0200 | From | Oleg Nesterov <> | Subject | Re: [RFC][PATCH 12/13] stop_machine: Remove lglock |
| |
On 06/23, Oleg Nesterov wrote: > > > It would be nice to remove stop_cpus_mutex, it actually protects > stop_cpus_work... Then probably stop_two_cpus() can just use > stop_cpus(). We could simply make stop_cpus_mutex per-cpu too, > but this doesn't look nice.
IOW. Suppose we add ->work_mutex into struct cpu_stopper. Btw, I think we should move all per-cpu variables there...
Now,
lock_stop_cpus_works(cpumask) { for_each_cpu(cpu, cpumask) mutex_lock(per_cpu(cpu_stopper_task, cpu).work_mutex); }
unlock_stop_cpus_works(cpumask) { for_each_cpu(cpu, cpumask) mutex_lock(...); }
which should be used instead of stop_cpus_mutex. After this change stop_two_cpus() can just use stop_cpus().
Off-topic. Can't we make __stop_machine() static? The only caller, _cpu_down() can safely call stop_machine(), get_online_cpus() is fine under cpu_hotplug_begin().
Oleg.
| |