Skip to content

Commit

Permalink
intel_idle: Clean up all registered devices on exit.
Browse files Browse the repository at this point in the history
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: Richard Cochran <rcochran@linutronix.de>
Signed-off-by: Len Brown <len.brown@intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
  • Loading branch information
Richard Cochran authored and Rafael J. Wysocki committed Apr 7, 2016
1 parent 0882054 commit 3e66a9a
Showing 1 changed file with 8 additions and 1 deletion.
9 changes: 8 additions & 1 deletion drivers/idle/intel_idle.c
Original file line number Diff line number Diff line change
Expand Up @@ -1245,12 +1245,19 @@ static int __init intel_idle_init(void)

static void __exit intel_idle_exit(void)
{
struct cpuidle_device *dev;
int i;

cpu_notifier_register_begin();

if (lapic_timer_reliable_states != LAPIC_TIMER_ALWAYS_RELIABLE)
on_each_cpu(__setup_broadcast_timer, (void *)false, 1);
__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();

Expand Down

0 comments on commit 3e66a9a

Please sign in to comment.