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 /arch/powerpc/platforms/pseries/rtasd.c | |
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 'arch/powerpc/platforms/pseries/rtasd.c')
-rw-r--r-- | arch/powerpc/platforms/pseries/rtasd.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/arch/powerpc/platforms/pseries/rtasd.c b/arch/powerpc/platforms/pseries/rtasd.c index 73401c820110..e3078ce41518 100644 --- a/arch/powerpc/platforms/pseries/rtasd.c +++ b/arch/powerpc/platforms/pseries/rtasd.c | |||
@@ -382,7 +382,7 @@ static void do_event_scan_all_cpus(long delay) | |||
382 | { | 382 | { |
383 | int cpu; | 383 | int cpu; |
384 | 384 | ||
385 | lock_cpu_hotplug(); | 385 | get_online_cpus(); |
386 | cpu = first_cpu(cpu_online_map); | 386 | cpu = first_cpu(cpu_online_map); |
387 | for (;;) { | 387 | for (;;) { |
388 | set_cpus_allowed(current, cpumask_of_cpu(cpu)); | 388 | set_cpus_allowed(current, cpumask_of_cpu(cpu)); |
@@ -390,15 +390,15 @@ static void do_event_scan_all_cpus(long delay) | |||
390 | set_cpus_allowed(current, CPU_MASK_ALL); | 390 | set_cpus_allowed(current, CPU_MASK_ALL); |
391 | 391 | ||
392 | /* Drop hotplug lock, and sleep for the specified delay */ | 392 | /* Drop hotplug lock, and sleep for the specified delay */ |
393 | unlock_cpu_hotplug(); | 393 | put_online_cpus(); |
394 | msleep_interruptible(delay); | 394 | msleep_interruptible(delay); |
395 | lock_cpu_hotplug(); | 395 | get_online_cpus(); |
396 | 396 | ||
397 | cpu = next_cpu(cpu, cpu_online_map); | 397 | cpu = next_cpu(cpu, cpu_online_map); |
398 | if (cpu == NR_CPUS) | 398 | if (cpu == NR_CPUS) |
399 | break; | 399 | break; |
400 | } | 400 | } |
401 | unlock_cpu_hotplug(); | 401 | put_online_cpus(); |
402 | } | 402 | } |
403 | 403 | ||
404 | static int rtasd(void *unused) | 404 | static int rtasd(void *unused) |