|
@@ -436,7 +436,7 @@ static ssize_t microcode_write (struct file *file, const char __user *buf, size_
|
|
return -EINVAL;
|
|
return -EINVAL;
|
|
}
|
|
}
|
|
|
|
|
|
- lock_cpu_hotplug();
|
|
|
|
|
|
+ get_online_cpus();
|
|
mutex_lock(µcode_mutex);
|
|
mutex_lock(µcode_mutex);
|
|
|
|
|
|
user_buffer = (void __user *) buf;
|
|
user_buffer = (void __user *) buf;
|
|
@@ -447,7 +447,7 @@ static ssize_t microcode_write (struct file *file, const char __user *buf, size_
|
|
ret = (ssize_t)len;
|
|
ret = (ssize_t)len;
|
|
|
|
|
|
mutex_unlock(µcode_mutex);
|
|
mutex_unlock(µcode_mutex);
|
|
- unlock_cpu_hotplug();
|
|
|
|
|
|
+ put_online_cpus();
|
|
|
|
|
|
return ret;
|
|
return ret;
|
|
}
|
|
}
|
|
@@ -658,14 +658,14 @@ static ssize_t reload_store(struct sys_device *dev, const char *buf, size_t sz)
|
|
|
|
|
|
old = current->cpus_allowed;
|
|
old = current->cpus_allowed;
|
|
|
|
|
|
- lock_cpu_hotplug();
|
|
|
|
|
|
+ get_online_cpus();
|
|
set_cpus_allowed(current, cpumask_of_cpu(cpu));
|
|
set_cpus_allowed(current, cpumask_of_cpu(cpu));
|
|
|
|
|
|
mutex_lock(µcode_mutex);
|
|
mutex_lock(µcode_mutex);
|
|
if (uci->valid)
|
|
if (uci->valid)
|
|
err = cpu_request_microcode(cpu);
|
|
err = cpu_request_microcode(cpu);
|
|
mutex_unlock(µcode_mutex);
|
|
mutex_unlock(µcode_mutex);
|
|
- unlock_cpu_hotplug();
|
|
|
|
|
|
+ put_online_cpus();
|
|
set_cpus_allowed(current, old);
|
|
set_cpus_allowed(current, old);
|
|
}
|
|
}
|
|
if (err)
|
|
if (err)
|
|
@@ -817,9 +817,9 @@ static int __init microcode_init (void)
|
|
return PTR_ERR(microcode_pdev);
|
|
return PTR_ERR(microcode_pdev);
|
|
}
|
|
}
|
|
|
|
|
|
- lock_cpu_hotplug();
|
|
|
|
|
|
+ get_online_cpus();
|
|
error = sysdev_driver_register(&cpu_sysdev_class, &mc_sysdev_driver);
|
|
error = sysdev_driver_register(&cpu_sysdev_class, &mc_sysdev_driver);
|
|
- unlock_cpu_hotplug();
|
|
|
|
|
|
+ put_online_cpus();
|
|
if (error) {
|
|
if (error) {
|
|
microcode_dev_exit();
|
|
microcode_dev_exit();
|
|
platform_device_unregister(microcode_pdev);
|
|
platform_device_unregister(microcode_pdev);
|
|
@@ -839,9 +839,9 @@ static void __exit microcode_exit (void)
|
|
|
|
|
|
unregister_hotcpu_notifier(&mc_cpu_notifier);
|
|
unregister_hotcpu_notifier(&mc_cpu_notifier);
|
|
|
|
|
|
- lock_cpu_hotplug();
|
|
|
|
|
|
+ get_online_cpus();
|
|
sysdev_driver_unregister(&cpu_sysdev_class, &mc_sysdev_driver);
|
|
sysdev_driver_unregister(&cpu_sysdev_class, &mc_sysdev_driver);
|
|
- unlock_cpu_hotplug();
|
|
|
|
|
|
+ put_online_cpus();
|
|
|
|
|
|
platform_device_unregister(microcode_pdev);
|
|
platform_device_unregister(microcode_pdev);
|
|
}
|
|
}
|