diff options
author | Shaohua Li <shaohua.li@intel.com> | 2005-12-12 03:37:02 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2005-12-12 11:57:42 -0500 |
commit | 82584ef75b7c14f22028595b0e8aa904464c5240 (patch) | |
tree | 3f144ec21f06b0d2f57a67f0b543a42ae3dac5a4 /arch/i386 | |
parent | b3e55c727ff7349c5db722fbdb8d99a151e8e0bf (diff) |
[PATCH] x86: fix NMI with CPU hotplug
With CPU hotplug enabled, NMI watchdog stoped working. It appears the
violation is the cpu_online check in nmi handler. local ACPI based NMI
watchdog is initialized before we set CPU online for APs. It's quite
possible a NMI is fired before we set CPU online, and that's what happens
here.
Signed-off-by: Shaohua Li <shaohua.li@intel.com>
Acked-by: Zwane Mwaikambo <zwane@arm.linux.org.uk>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'arch/i386')
-rw-r--r-- | arch/i386/kernel/traps.c | 7 |
1 files changed, 0 insertions, 7 deletions
diff --git a/arch/i386/kernel/traps.c b/arch/i386/kernel/traps.c index c34d1bfc5161..f0dffa03fbba 100644 --- a/arch/i386/kernel/traps.c +++ b/arch/i386/kernel/traps.c | |||
@@ -650,13 +650,6 @@ fastcall void do_nmi(struct pt_regs * regs, long error_code) | |||
650 | 650 | ||
651 | cpu = smp_processor_id(); | 651 | cpu = smp_processor_id(); |
652 | 652 | ||
653 | #ifdef CONFIG_HOTPLUG_CPU | ||
654 | if (!cpu_online(cpu)) { | ||
655 | nmi_exit(); | ||
656 | return; | ||
657 | } | ||
658 | #endif | ||
659 | |||
660 | ++nmi_count(cpu); | 653 | ++nmi_count(cpu); |
661 | 654 | ||
662 | if (!rcu_dereference(nmi_callback)(regs, cpu)) | 655 | if (!rcu_dereference(nmi_callback)(regs, cpu)) |