public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] x86, mce: reset kernel for no-match exception errors
@ 2009-08-27  8:41 Jin Dongming
  2009-08-27  9:08 ` Andi Kleen
  0 siblings, 1 reply; 2+ messages in thread
From: Jin Dongming @ 2009-08-27  8:41 UTC (permalink / raw)
  To: H.Peter Anvin
  Cc: LKLM, Ingo Molnar, Andi Kleen, Huang Ying, Kenji Kaneshige,
	Hidetoshi Seto

The last case of severity table is used for no match exception error.
Maybe such kind of error could not happen. But I think when the error
really happened, the kernel should be reset. Because such error is
unknown and unexpected. So I make this patch for fixing this problem.

This patch is based on tip/x86/mce.

Signed-off-by: Jin Dongming <jin.dongming@np.css.fujitsu.com>
---
 arch/x86/kernel/cpu/mcheck/mce-severity.c |    2 +-
 arch/x86/kernel/cpu/mcheck/mce.c          |    6 ++++++
 2 files changed, 7 insertions(+), 1 deletions(-)

diff --git a/arch/x86/kernel/cpu/mcheck/mce-severity.c b/arch/x86/kernel/cpu/mcheck/mce-severity.c
index bc35a07..092755b 100644
--- a/arch/x86/kernel/cpu/mcheck/mce-severity.c
+++ b/arch/x86/kernel/cpu/mcheck/mce-severity.c
@@ -97,7 +97,7 @@ static struct severity {
 	     "Action optional with lost events", SER),
 	BITSET(MCI_STATUS_UC|MCI_STATUS_OVER, PANIC, "Overflowed uncorrected"),
 	BITSET(MCI_STATUS_UC, UC, "Uncorrected"),
-	BITSET(0, SOME, "No match")	/* always matches. keep at end */
+	BITSET(0, PANIC, "Unknown Error")     /* always matches. keep at end */
 };
 
 /*
diff --git a/arch/x86/kernel/cpu/mcheck/mce.c b/arch/x86/kernel/cpu/mcheck/mce.c
index 2c3bcd1..cc6e9cb 100644
--- a/arch/x86/kernel/cpu/mcheck/mce.c
+++ b/arch/x86/kernel/cpu/mcheck/mce.c
@@ -245,6 +245,12 @@ static void mce_panic(char *msg, struct mce *final, char *exp)
 		struct mce *m = &mcelog.entry[i];
 		if (!(m->status & MCI_STATUS_VAL))
 			continue;
+		/*
+		 * When no-match error happened, it is a corrected error and
+		 * logged as final one. Prevents it from being printed twice.
+		 */
+		if (final && !memcmp(m, final, sizeof(struct mce)))
+			continue;
 		if (!(m->status & MCI_STATUS_UC))
 			print_mce(m);
 	}
-- 
1.6.2.2


^ permalink raw reply related	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2009-08-27  9:08 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-08-27  8:41 [PATCH] x86, mce: reset kernel for no-match exception errors Jin Dongming
2009-08-27  9:08 ` Andi Kleen

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox