RE: [patch 17/19] dynticks: Fix nmi watchdog

From: Pallipadi, Venkatesh
Date: Thu Nov 09 2006 - 20:19:35 EST




>-----Original Message-----
>From: linux-kernel-owner@xxxxxxxxxxxxxxx
>[mailto:linux-kernel-owner@xxxxxxxxxxxxxxx] On Behalf Of
>Thomas Gleixner
>Sent: Thursday, November 09, 2006 3:39 PM
>To: Andrew Morton
>Cc: LKML; Ingo Molnar; Len Brown; John Stultz; Arjan van de
>Ven; Andi Kleen; Roman Zippel
>Subject: [patch 17/19] dynticks: Fix nmi watchdog
>
>From: Thomas Gleixner <tglx@xxxxxxxxxxxxx>
>
>The NMI watchdog implementation assumes that the local APIC timer
>interrupt is happening. This assumption is not longer true when
>high resolution timers and dynamic ticks come into play, as they
>may switch off the local APIC timer completely. Take the PIT/HPET
>interrupts into account too, to avoid false positives.
>
>Signed-off-by: Thomas Gleixner <tglx@xxxxxxxxxxxxx>
>Signed-off-by: Ingo Molnar <mingo@xxxxxxx>
>
>Index: linux-2.6.19-rc5-mm1/arch/i386/kernel/nmi.c
>===================================================================
>--- linux-2.6.19-rc5-mm1.orig/arch/i386/kernel/nmi.c
>2006-11-09 17:47:58.000000000 +0100
>+++ linux-2.6.19-rc5-mm1/arch/i386/kernel/nmi.c
>2006-11-09 20:52:29.000000000 +0100
>@@ -23,6 +23,7 @@
> #include <linux/dmi.h>
> #include <linux/kprobes.h>
> #include <linux/cpumask.h>
>+#include <linux/kernel_stat.h>
>
> #include <asm/smp.h>
> #include <asm/nmi.h>
>@@ -920,9 +921,13 @@ __kprobes int nmi_watchdog_tick(struct p
> 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 ...
>

Similar change is needed for x86-64 as well. No?

Thanks,
Venki
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/