aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorShaohua Li <shaohua.li@intel.com>2005-12-12 03:37:02 -0500
committerLinus Torvalds <torvalds@g5.osdl.org>2005-12-12 11:57:42 -0500
commit82584ef75b7c14f22028595b0e8aa904464c5240 (patch)
tree3f144ec21f06b0d2f57a67f0b543a42ae3dac5a4 /arch
parentb3e55c727ff7349c5db722fbdb8d99a151e8e0bf (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')
-rw-r--r--arch/i386/kernel/traps.c7
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))