Messages in this thread |  | | Date | Thu, 06 Feb 2014 21:34:00 +0530 | From | "Srivatsa S. Bhat" <> | Subject | Re: [PATCH 38/51] intel-idle: Fix CPU hotplug callback registration |
| |
On 02/06/2014 06:13 PM, Rafael J. Wysocki wrote: > On Thursday, February 06, 2014 03:41:23 AM Srivatsa S. Bhat wrote: >> Subsystems that want to register CPU hotplug callbacks, as well as perform >> initialization for the CPUs that are already online, often do it as shown >> below: >> >> get_online_cpus(); >> >> for_each_online_cpu(cpu) >> init_cpu(cpu); >> >> register_cpu_notifier(&foobar_cpu_notifier); >> >> put_online_cpus(); >> >> This is wrong, since it is prone to ABBA deadlocks involving the >> cpu_add_remove_lock and the cpu_hotplug.lock (when running concurrently >> with CPU hotplug operations). >> >> Instead, the correct and race-free way of performing the callback >> registration is: >> >> cpu_maps_update_begin(); >> >> for_each_online_cpu(cpu) >> init_cpu(cpu); >> >> /* Note the use of the double underscored version of the API */ >> __register_cpu_notifier(&foobar_cpu_notifier); >> >> cpu_maps_update_done(); >> >> >> Fix the intel-idle code by using this latter form of callback registration. >> >> Cc: Len Brown <lenb@kernel.org> >> Cc: "Rafael J. Wysocki" <rjw@rjwysocki.net> >> Cc: linux-pm@vger.kernel.org >> Signed-off-by: Srivatsa S. Bhat <srivatsa.bhat@linux.vnet.ibm.com> > > This looks good to me. Len, what do you think? >
Thanks a lot Rafael!
> Srivatsa, how does it depend on the rest of your series? >
It depends only on the first patch in the series: http://article.gmane.org/gmane.linux.kernel/1641640
But don't take this patch yet, we are discussing a possible rename of the function cpu_maps_update_begin()/done(). So I'll post a v2 after the name is finalized.
Thank you!
Regards, Srivatsa S. Bhat
|  |