diff options
author | Nathan Lynch <ntl@pobox.com> | 2006-02-07 05:44:23 +0100 |
---|---|---|
committer | Paul Mackerras <paulus@samba.org> | 2006-02-07 11:51:54 +0100 |
commit | 7d4d61544a12333600bdb9b018a149868418692e (patch) | |
tree | ef645b27fcfbcad4ccf870cfb1832a14c1aadee6 /arch | |
parent | [PATCH] powerpc: hypervisor check in pseries_kexec_cpu_down (diff) | |
download | linux-7d4d61544a12333600bdb9b018a149868418692e.tar.xz linux-7d4d61544a12333600bdb9b018a149868418692e.zip |
[PATCH] powerpc: avoid timer interrupt replay effect when onlining cpu
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>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/powerpc/kernel/smp.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/arch/powerpc/kernel/smp.c b/arch/powerpc/kernel/smp.c index c8458c531b25..13595a64f013 100644 --- a/arch/powerpc/kernel/smp.c +++ b/arch/powerpc/kernel/smp.c @@ -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); |