2010-11-25 08:43:46

by Chen, Gong

[permalink] [raw]
Subject: [PATCH] x86/MCE: don't let EDAC bypass the handle from MCE

currently EDAC bypass userspace handler intentionally if it can
deal with it, but this kind of operation will confuse users.
Some errors such as memory errors will be decoded by EDAC but
userspace handler (such as mcelog) knows nothing about it. At
least the kernel should give userspace a chance to know what
happens.

Signed-off-by: Chen Gong <[email protected]>
---
arch/x86/kernel/cpu/mcheck/mce.c | 9 +--------
1 files changed, 1 insertions(+), 8 deletions(-)

diff --git a/arch/x86/kernel/cpu/mcheck/mce.c b/arch/x86/kernel/cpu/mcheck/mce.c
index 7a35b72..78eba57 100644
--- a/arch/x86/kernel/cpu/mcheck/mce.c
+++ b/arch/x86/kernel/cpu/mcheck/mce.c
@@ -169,14 +169,7 @@ void mce_log(struct mce *mce)
for (;;) {
entry = rcu_dereference_check_mce(mcelog.next);
for (;;) {
- /*
- * If edac_mce is enabled, it will check the error type
- * and will process it, if it is a known error.
- * Otherwise, the error will be sent through mcelog
- * interface
- */
- if (edac_mce_parse(mce))
- return;
+ edac_mce_parse(mce);

/*
* When the buffer fills up discard new entries.
--
1.7.3.1.120.g38a18


2010-11-25 09:41:47

by Andi Kleen

[permalink] [raw]
Subject: Re: [PATCH] x86/MCE: don't let EDAC bypass the handle from MCE


> entry = rcu_dereference_check_mce(mcelog.next);
> for (;;) {
> - /*
> - * If edac_mce is enabled, it will check the error type
> - * and will process it, if it is a known error.
> - * Otherwise, the error will be sent through mcelog
> - * interface
> - */
> - if (edac_mce_parse(mce))
> - return;
> + edac_mce_parse(mce);

The other problem with the current code is that it prints the misleading
KERN_EMERG fallback message
for every corrected error.

-Andi