According comment of smp_call_function(), 
smp_call_function() "run a function on all other CPUs.",
not on all online CPUs.

Signed-off-by: Laurent Vivier <Laurent.Vivier@bull.net>
---
 smp.c |    7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/arch/x86_64/kernel/smp.c b/arch/x86_64/kernel/smp.c
--- a/arch/x86_64/kernel/smp.c
+++ b/arch/x86_64/kernel/smp.c
@@ -459,7 +459,12 @@ EXPORT_SYMBOL(smp_call_function_single);
 int smp_call_function (void (*func) (void *info), void *info, int nonatomic,
 			int wait)
 {
-	return smp_call_function_mask(cpu_online_map, func, info, wait);
+	cpumask_t allbutself;
+
+	allbutself = cpu_online_map;
+	cpu_clear(smp_processor_id(), allbutself);
+
+	return smp_call_function_mask(allbutself, func, info, wait);
 }
 EXPORT_SYMBOL(smp_call_function);
 
