[PATCH] powerpc: avoid timer interrupt replay effect when onlining cpu
authorNathan Lynch <ntl@pobox.com>
Tue, 7 Feb 2006 04:44:23 +0000 (22:44 -0600)
committerPaul Mackerras <paulus@samba.org>
Tue, 7 Feb 2006 10:51:54 +0000 (21:51 +1100)
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@pobox.com>
Signed-off-by: Paul Mackerras <paulus@samba.org>
arch/powerpc/kernel/smp.c

index c8458c531b255f3dbb97b94b5023ead71b6f5193..13595a64f013a2c1b31f2ce0d7cf86be2b1c3ae9 100644 (file)
@@ -540,6 +540,9 @@ int __devinit start_secondary(void *unused)
        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);