x86: fix ioapic bug again
un-revert:
commit 4960c9df1407c2723459c60ff13e6efe0c209c62
Author: Thomas Gleixner <tglx@linutronix.de>
Date: Tue Jan 22 10:23:01 2008 +0100
Revert "x86: fix NMI watchdog & 'stopped time' problem"
This reverts commit d4d25deca49ec2527a634557bf5a6cf449f85deb.
needs a proper fix though ...
Signed-off-by: Ingo Molnar <mingo@elte.hu>
diff --git a/arch/x86/kernel/nmi_32.c b/arch/x86/kernel/nmi_32.c
index 662e63e..8421d0a 100644
--- a/arch/x86/kernel/nmi_32.c
+++ b/arch/x86/kernel/nmi_32.c
@@ -26,6 +26,7 @@
#include <asm/smp.h>
#include <asm/nmi.h>
+#include <asm/timer.h>
#include "mach_traps.h"
@@ -81,7 +82,7 @@
prev_nmi_count = kmalloc(NR_CPUS * sizeof(int), GFP_KERNEL);
if (!prev_nmi_count)
- return -1;
+ goto error;
printk(KERN_INFO "Testing NMI watchdog ... ");
@@ -118,7 +119,7 @@
if (!atomic_read(&nmi_active)) {
kfree(prev_nmi_count);
atomic_set(&nmi_active, -1);
- return -1;
+ goto error;
}
printk("OK.\n");
@@ -129,6 +130,10 @@
kfree(prev_nmi_count);
return 0;
+error:
+ timer_ack = !cpu_has_tsc;
+
+ return -1;
}
static int __init setup_nmi_watchdog(char *str)