Commit 3e66a9ab authored by Richard Cochran's avatar Richard Cochran Committed by Rafael J. Wysocki

intel_idle: Clean up all registered devices on exit.

This driver registers cpuidle devices when a CPU comes online, but it
leaves the registrations in place when a CPU goes offline.  The module
exit code only unregisters the currently online CPUs, leaving the
devices for offline CPUs dangling.

This patch changes the driver to clean up all registrations on exit,
even those from CPUs that are offline.
Signed-off-by: default avatarRichard Cochran <rcochran@linutronix.de>
Signed-off-by: default avatarLen Brown <len.brown@intel.com>
Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
parent 08820546
...@@ -1245,12 +1245,19 @@ static int __init intel_idle_init(void) ...@@ -1245,12 +1245,19 @@ static int __init intel_idle_init(void)
static void __exit intel_idle_exit(void) static void __exit intel_idle_exit(void)
{ {
struct cpuidle_device *dev;
int i;
cpu_notifier_register_begin(); cpu_notifier_register_begin();
if (lapic_timer_reliable_states != LAPIC_TIMER_ALWAYS_RELIABLE) if (lapic_timer_reliable_states != LAPIC_TIMER_ALWAYS_RELIABLE)
on_each_cpu(__setup_broadcast_timer, (void *)false, 1); on_each_cpu(__setup_broadcast_timer, (void *)false, 1);
__unregister_cpu_notifier(&cpu_hotplug_notifier); __unregister_cpu_notifier(&cpu_hotplug_notifier);
intel_idle_cpuidle_devices_uninit();
for_each_possible_cpu(i) {
dev = per_cpu_ptr(intel_idle_cpuidle_devices, i);
cpuidle_unregister_device(dev);
}
cpu_notifier_register_done(); cpu_notifier_register_done();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment