linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: George Anzinger <george@mvista.com>
To: Andrew Morton <akpm@osdl.org>
Cc: lkml <linux-kernel@vger.kernel.org>
Subject: [PATCH] NMI watch dog notify patch
Date: Thu, 28 Jul 2005 13:31:58 -0700	[thread overview]
Message-ID: <42E940BE.3020908@mvista.com> (raw)

[-- Attachment #1: Type: text/plain, Size: 503 bytes --]

Andrew,
I have been doing some work on kgdb to pull a few of it "fingers" out of 
various places in the kernel.  This is the final location where we have 
a kgdb intercept not covered by a notify.

On a related issue, I feel very queasy with sending nmi interrupts and 
non-nmi events to the same notify code.  Would you be open to a patch to 
create a seperate notify list for nmi events?


-
George Anzinger   george@mvista.com
HRT (High-res-timers):  http://sourceforge.net/projects/high-res-timers/

[-- Attachment #2: nmi-notify.patch --]
[-- Type: text/plain, Size: 1981 bytes --]

Source: MontaVista Software, Inc. George Anzinger <george@mvista.com>
Type: Enhancement 
Description:
	This patch adds a notify to the nmi watchdog to notify that
	the system is about to be taken down by the watchdog.  If the
	notify is handled with a NOTIFY_STOP return, the system is
	given a new lease on life.

	This give debug code a chance to a) catch watchdog timeouts and
	b) possibly allow the system to continue, realizing that 
	the time out may be due to debugger activities such as single 
	stepping which is usually done with "other" cpus held.

Signed-off-by: George Anzinger<george@mvista.com>

 nmi.c |   15 ++++++++++++---
 1 files changed, 12 insertions(+), 3 deletions(-)

Index: linux-2.6.13-rc/arch/i386/kernel/nmi.c
===================================================================
--- linux-2.6.13-rc.orig/arch/i386/kernel/nmi.c
+++ linux-2.6.13-rc/arch/i386/kernel/nmi.c
@@ -26,11 +26,13 @@
 #include <linux/nmi.h>
 #include <linux/sysdev.h>
 #include <linux/sysctl.h>
+#include <linux/notifier.h>
 
 #include <asm/smp.h>
 #include <asm/mtrr.h>
 #include <asm/mpspec.h>
 #include <asm/nmi.h>
+#include <asm/kdebug.h>
 
 #include "mach_traps.h"
 
@@ -494,8 +496,15 @@ void nmi_watchdog_tick (struct pt_regs *
 		 * wait a few IRQs (5 seconds) before doing the oops ...
 		 */
 		alert_counter[cpu]++;
-		if (alert_counter[cpu] == 5*nmi_hz)
-			die_nmi(regs, "NMI Watchdog detected LOCKUP");
+		if (alert_counter[cpu] == 5*nmi_hz) {
+			if (notify_die(DIE_NMIWATCHDOG, "nmi_ipi_watchdog", 
+				       regs, 0, 0, SIGINT) == NOTIFY_STOP) {
+				last_irq_sums[cpu] = sum;
+				alert_counter[cpu] = 0;
+			} else {
+				die_nmi(regs, "NMI Watchdog detected LOCKUP");
+			}
+		}
 	} else {
 		last_irq_sums[cpu] = sum;
 		alert_counter[cpu] = 0;
@@ -555,7 +564,7 @@ int proc_unknown_nmi_panic(ctl_table *ta
 			return -EBUSY;
 		} else {
 			set_nmi_callback(unknown_nmi_panic_callback);
-		}
+		} 
 	} else {
 		release_lapic_nmi();
 		unset_nmi_callback();

             reply	other threads:[~2005-07-28 20:38 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-07-28 20:31 George Anzinger [this message]
2005-07-28 23:13 ` [PATCH] NMI watch dog notify patch Andrew Morton
2005-07-28 23:58   ` George Anzinger
2005-07-29  0:12     ` Andrew Morton
2005-07-29  1:50 ` Keith Owens
2005-07-29  4:16   ` George Anzinger
2005-07-29  5:09     ` Keith Owens
2005-07-29  5:14       ` Andrew Morton
2005-07-29 20:55         ` George Anzinger
2005-07-30  3:24           ` Keith Owens
2005-08-01 22:58             ` George Anzinger
2005-08-02 20:26               ` [PATCH] " George Anzinger

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=42E940BE.3020908@mvista.com \
    --to=george@mvista.com \
    --cc=akpm@osdl.org \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).