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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



 

>-----Original Message-----
>From: [email protected] 
>[mailto:[email protected]] 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 <[email protected]>
>
>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 <[email protected]>
>Signed-off-by: Ingo Molnar <[email protected]>
>
>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 [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux