[PATCH] avoid timer interrupt replay effect when onlining cpu

Nathan Lynch ntl at pobox.com
Tue Feb 7 15:44:23 EST 2006


When a cpu is hotplug-onlined, if we don't set per_cpu(last_jiffy) to
something sane, timer_interrupt will execute its while loop for every
tick missed since the cpu was last online (or since the system was
booted, if we're adding a new cpu).  This can cause weird hangs, ssh
sessions dropping, and we can even go xmon if we take a global IPI at
the wrong time.

Signed-off-by: Nathan Lynch <ntl at pobox.com>


--- powerpc-timer_interrupt-replay.orig/arch/powerpc/kernel/smp.c
+++ powerpc-timer_interrupt-replay/arch/powerpc/kernel/smp.c
@@ -540,6 +540,9 @@ int __devinit start_secondary(void *unus
 	if (smp_ops->take_timebase)
 		smp_ops->take_timebase();
 
+	if (system_state > SYSTEM_BOOTING)
+		per_cpu(last_jiffy, cpu) = get_tb();
+
 	spin_lock(&call_lock);
 	cpu_set(cpu, cpu_online_map);
 	spin_unlock(&call_lock);



More information about the Linuxppc64-dev mailing list