diff options
author | Gautham R Shenoy <ego@in.ibm.com> | 2008-01-25 15:08:02 -0500 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-01-25 15:08:02 -0500 |
commit | 86ef5c9a8edd78e6bf92879f32329d89b2d55b5a (patch) | |
tree | 7bf46885326a6fdbb0c3596855408e9a5634dd3a /Documentation/cpu-hotplug.txt | |
parent | d221938c049f4845da13c8593132595a6b9222a8 (diff) |
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>
Diffstat (limited to 'Documentation/cpu-hotplug.txt')
-rw-r--r-- | Documentation/cpu-hotplug.txt | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/Documentation/cpu-hotplug.txt b/Documentation/cpu-hotplug.txt index a741f658a3c9..fb94f5a71b68 100644 --- a/Documentation/cpu-hotplug.txt +++ b/Documentation/cpu-hotplug.txt | |||
@@ -109,12 +109,13 @@ Never use anything other than cpumask_t to represent bitmap of CPUs. | |||
109 | for_each_cpu_mask(x,mask) - Iterate over some random collection of cpu mask. | 109 | for_each_cpu_mask(x,mask) - Iterate over some random collection of cpu mask. |
110 | 110 | ||
111 | #include <linux/cpu.h> | 111 | #include <linux/cpu.h> |
112 | lock_cpu_hotplug() and unlock_cpu_hotplug(): | 112 | get_online_cpus() and put_online_cpus(): |
113 | 113 | ||
114 | The above calls are used to inhibit cpu hotplug operations. While holding the | 114 | The above calls are used to inhibit cpu hotplug operations. While the |
115 | cpucontrol mutex, cpu_online_map will not change. If you merely need to avoid | 115 | cpu_hotplug.refcount is non zero, the cpu_online_map will not change. |
116 | cpus going away, you could also use preempt_disable() and preempt_enable() | 116 | If you merely need to avoid cpus going away, you could also use |
117 | for those sections. Just remember the critical section cannot call any | 117 | preempt_disable() and preempt_enable() for those sections. |
118 | Just remember the critical section cannot call any | ||
118 | function that can sleep or schedule this process away. The preempt_disable() | 119 | function that can sleep or schedule this process away. The preempt_disable() |
119 | will work as long as stop_machine_run() is used to take a cpu down. | 120 | will work as long as stop_machine_run() is used to take a cpu down. |
120 | 121 | ||