mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-26 08:31:13 +00:00
cpu-hotplug: replace lock_cpu_hotplug() with get_online_cpus()
Replace all lock_cpu_hotplug/unlock_cpu_hotplug from the kernel and use get_online_cpus and put_online_cpus instead as it highlights the refcount semantics in these operations. The new API guarantees protection against the cpu-hotplug operation, but it doesn't guarantee serialized access to any of the local data structures. Hence the changes needs to be reviewed. In case of pseries_add_processor/pseries_remove_processor, use cpu_maps_update_begin()/cpu_maps_update_done() as we're modifying the cpu_present_map there. Signed-off-by: Gautham R Shenoy <ego@in.ibm.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
parent
d221938c04
commit
86ef5c9a8e
15 changed files with 62 additions and 61 deletions
|
@ -436,7 +436,7 @@ static ssize_t microcode_write (struct file *file, const char __user *buf, size_
|
|||
return -EINVAL;
|
||||
}
|
||||
|
||||
lock_cpu_hotplug();
|
||||
get_online_cpus();
|
||||
mutex_lock(µcode_mutex);
|
||||
|
||||
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;
|
||||
|
||||
mutex_unlock(µcode_mutex);
|
||||
unlock_cpu_hotplug();
|
||||
put_online_cpus();
|
||||
|
||||
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;
|
||||
|
||||
lock_cpu_hotplug();
|
||||
get_online_cpus();
|
||||
set_cpus_allowed(current, cpumask_of_cpu(cpu));
|
||||
|
||||
mutex_lock(µcode_mutex);
|
||||
if (uci->valid)
|
||||
err = cpu_request_microcode(cpu);
|
||||
mutex_unlock(µcode_mutex);
|
||||
unlock_cpu_hotplug();
|
||||
put_online_cpus();
|
||||
set_cpus_allowed(current, old);
|
||||
}
|
||||
if (err)
|
||||
|
@ -817,9 +817,9 @@ static int __init microcode_init (void)
|
|||
return PTR_ERR(microcode_pdev);
|
||||
}
|
||||
|
||||
lock_cpu_hotplug();
|
||||
get_online_cpus();
|
||||
error = sysdev_driver_register(&cpu_sysdev_class, &mc_sysdev_driver);
|
||||
unlock_cpu_hotplug();
|
||||
put_online_cpus();
|
||||
if (error) {
|
||||
microcode_dev_exit();
|
||||
platform_device_unregister(microcode_pdev);
|
||||
|
@ -839,9 +839,9 @@ static void __exit microcode_exit (void)
|
|||
|
||||
unregister_hotcpu_notifier(&mc_cpu_notifier);
|
||||
|
||||
lock_cpu_hotplug();
|
||||
get_online_cpus();
|
||||
sysdev_driver_unregister(&cpu_sysdev_class, &mc_sysdev_driver);
|
||||
unlock_cpu_hotplug();
|
||||
put_online_cpus();
|
||||
|
||||
platform_device_unregister(microcode_pdev);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue