|
|
@@ -271,9 +271,6 @@ static void thermal_throttle_remove_dev(struct device *dev)
|
|
|
sysfs_remove_group(&dev->kobj, &thermal_attr_group);
|
|
|
}
|
|
|
|
|
|
-/* Mutex protecting device creation against CPU hotplug: */
|
|
|
-static DEFINE_MUTEX(therm_cpu_lock);
|
|
|
-
|
|
|
/* Get notified when a cpu comes on/off. Be hotplug friendly. */
|
|
|
static int
|
|
|
thermal_throttle_cpu_callback(struct notifier_block *nfb,
|
|
|
@@ -289,18 +286,14 @@ thermal_throttle_cpu_callback(struct notifier_block *nfb,
|
|
|
switch (action) {
|
|
|
case CPU_UP_PREPARE:
|
|
|
case CPU_UP_PREPARE_FROZEN:
|
|
|
- mutex_lock(&therm_cpu_lock);
|
|
|
err = thermal_throttle_add_dev(dev, cpu);
|
|
|
- mutex_unlock(&therm_cpu_lock);
|
|
|
WARN_ON(err);
|
|
|
break;
|
|
|
case CPU_UP_CANCELED:
|
|
|
case CPU_UP_CANCELED_FROZEN:
|
|
|
case CPU_DEAD:
|
|
|
case CPU_DEAD_FROZEN:
|
|
|
- mutex_lock(&therm_cpu_lock);
|
|
|
thermal_throttle_remove_dev(dev);
|
|
|
- mutex_unlock(&therm_cpu_lock);
|
|
|
break;
|
|
|
}
|
|
|
return notifier_from_errno(err);
|
|
|
@@ -321,17 +314,11 @@ static __init int thermal_throttle_init_device(void)
|
|
|
|
|
|
cpu_notifier_register_begin();
|
|
|
|
|
|
-#ifdef CONFIG_HOTPLUG_CPU
|
|
|
- mutex_lock(&therm_cpu_lock);
|
|
|
-#endif
|
|
|
/* connect live CPUs to sysfs */
|
|
|
for_each_online_cpu(cpu) {
|
|
|
err = thermal_throttle_add_dev(get_cpu_device(cpu), cpu);
|
|
|
WARN_ON(err);
|
|
|
}
|
|
|
-#ifdef CONFIG_HOTPLUG_CPU
|
|
|
- mutex_unlock(&therm_cpu_lock);
|
|
|
-#endif
|
|
|
|
|
|
__register_hotcpu_notifier(&thermal_throttle_cpu_notifier);
|
|
|
cpu_notifier_register_done();
|