From f1c967caadcf387329ccbe43aeec9bcc791cdb43 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Fri, 16 Feb 2007 01:28:09 -0800 Subject: [PATCH] --- yaml --- r: 48595 b: refs/heads/master c: f8b5035b9abd01b52ec6416f0c6bade7e603742c h: refs/heads/master i: 48593: adc8ff50bb6114ffc60ce862af64d560098277e4 48591: 974edcd599947115ec507616481aef7fc4012a15 v: v3 --- [refs] | 2 +- trunk/arch/i386/kernel/nmi.c | 9 +++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index a8c9ec0aee34..d5e39a74530b 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 741673473a5b26497d5390f38d478362e27e22ad +refs/heads/master: f8b5035b9abd01b52ec6416f0c6bade7e603742c diff --git a/trunk/arch/i386/kernel/nmi.c b/trunk/arch/i386/kernel/nmi.c index 5d8a07c20281..821df34d2b3a 100644 --- a/trunk/arch/i386/kernel/nmi.c +++ b/trunk/arch/i386/kernel/nmi.c @@ -23,6 +23,7 @@ #include #include #include +#include #include #include @@ -973,9 +974,13 @@ __kprobes int nmi_watchdog_tick(struct pt_regs * regs, unsigned reason) cpu_clear(cpu, backtrace_mask); } - sum = per_cpu(irq_stat, cpu).apic_timer_irqs; + /* + * Take the local apic timer and PIT/HPET into account. We don't + * know which one is active, when we have highres/dyntick on + */ + sum = per_cpu(irq_stat, cpu).apic_timer_irqs + kstat_irqs(0); - /* if the apic timer isn't firing, this cpu isn't doing much */ + /* if the none of the timers isn't firing, this cpu isn't doing much */ if (!touched && last_irq_sums[cpu] == sum) { /* * Ayiee, looks like this CPU is stuck ...