aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86_64/kernel/genapic_cluster.c
diff options
context:
space:
mode:
authorZwane Mwaikambo <zwane@arm.linux.org.uk>2006-01-11 16:43:09 -0500
committerLinus Torvalds <torvalds@g5.osdl.org>2006-01-11 22:01:57 -0500
commit329d400f47ddfe8ff599823d739c5c5565da3207 (patch)
tree903b45e7ebcccbbd8172e207315c036ceb70f6e8 /arch/x86_64/kernel/genapic_cluster.c
parent73ca5358aab55e2e29993a31f3776c54c05ae729 (diff)
[PATCH] x86_64/i386: Remove preempt disable calls in lowlevel IPI
I noticed that some lowlevel send_IPI_mask helpers had a hotplug/preempt race whereupon the cpu_online_map was read before disabling preemption; ... cpumask_t mask = cpu_online_map; int cpu = get_cpu(); cpu_clear(cpu, mask); ... But then i realised that there is no need for these lowlevel functions to be going through all this trouble when all the callers are already made hotplug/preempt safe. Signed-off-by: Zwane Mwaikambo <zwane@arm.linux.org.uk> Signed-off-by: Andi Kleen <ak@suse.de> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'arch/x86_64/kernel/genapic_cluster.c')
-rw-r--r--arch/x86_64/kernel/genapic_cluster.c5
1 files changed, 1 insertions, 4 deletions
diff --git a/arch/x86_64/kernel/genapic_cluster.c b/arch/x86_64/kernel/genapic_cluster.c
index a472d62f899a..43fcf62fef0f 100644
--- a/arch/x86_64/kernel/genapic_cluster.c
+++ b/arch/x86_64/kernel/genapic_cluster.c
@@ -72,14 +72,11 @@ static void cluster_send_IPI_mask(cpumask_t mask, int vector)
72static void cluster_send_IPI_allbutself(int vector) 72static void cluster_send_IPI_allbutself(int vector)
73{ 73{
74 cpumask_t mask = cpu_online_map; 74 cpumask_t mask = cpu_online_map;
75 int me = get_cpu(); /* Ensure we are not preempted when we clear */
76 75
77 cpu_clear(me, mask); 76 cpu_clear(smp_processor_id(), mask);
78 77
79 if (!cpus_empty(mask)) 78 if (!cpus_empty(mask))
80 cluster_send_IPI_mask(mask, vector); 79 cluster_send_IPI_mask(mask, vector);
81
82 put_cpu();
83} 80}
84 81
85static void cluster_send_IPI_all(int vector) 82static void cluster_send_IPI_all(int vector)