x86: Do not panic if mce=2 is passed
RFC PATCH 1/1 x86: Do not panic if mce=2 is passed
From: Yinghai Lu <[email protected]>
For UE recovery support, current we need mce=2 in command line and also disable panic_on_oops with sysctl.
but other user may still need to have panic_on_oops to 1 always.
We can remove checking of panic_on_oops for mce-severity path.
We should be ok as on default path when mce=2 is not passed, tolerant is 0, so they will still get MCE_PANIC_SEVERITY returned.
--- arch/x86/kernel/cpu/mcheck/mce-severity.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
arch/x86/kernel/cpu/mcheck/mce-severity.c +1 -1
@@ -311,7 +311,7 @@ static int mce_severity_intel(struct mce *msg = s->msg; s->covered =1 ;if (s->sev >=MCE_UC_SEVERITY && ctx ==IN_KERNEL ) { -if (panic_on_oops || tolerant <1 ) +if (tolerant <1 )return MCE_PANIC_SEVERITY ; }return s->sev;
Quoted 2 lines
For UE recovery support, current we need mce=2 in command line and also disable
panic_on_oopswith sysctl.
Please explain. I've never given mce=2 on command line, and have had my kernel recover from thousands of (injected) UE memory errors.
-Tony
Borislav Petkov
maintainerQuoted 5 lines · Tony
Quoted 2 lines
For UE recovery support, current we need mce=2 in command line and also disable
panic_on_oopswith sysctl.Please explain. I've never given mce=2 on command line, and have had my kernel recover from thousands of (injected) UE memory errors.
So frankly, that panic_on_oops doesn't make a whole lotta sense to me.
It is promoting MCEs with severity MCE_UC_SEVERITY and higher to a panic.
So let's look at those:
MCE_UC_SEVERITY, - we don't do anything special in the kernel for
those so just as well.
MCE_AR_SEVERITY, - those end up in the memory failure code if
they're memory errors
MCE_PANIC_SEVERITY, - causes panic
so if anything, panic_on_oops shouldn't control the panicking behavior as tolerant does that already:
* Tolerant levels:
* 0: always panic on uncorrected errors, log corrected errors
* 1: panic or SIGBUS on uncorrected errors, log corrected errors
* 2: SIGBUS or log uncorrected errors (if possible), log corr. errors
* 3: never panic or SIGBUS, log all errors (for testing only)
IOW, I think that patch makes sense but please doublecheck my logic above first.
Thanks.
Signature · 5 lines
Regards/Gruss,
Boris.
ECO tip #101: Trim your mails when you reply.
--Quoted 24 lines · Yinghai Lu
From: Yinghai Lu <[email protected]>
For UE recovery support, current we need mce=2 in command line and also disable
panic_on_oopswith sysctl.but other user may still need to have
panic_on_oopsto 1 always.We can remove checking of
panic_on_oopsfor mce-severity path.We should be ok as on default path when mce=2 is not passed, tolerant is 0, so they will still get
MCE_PANIC_SEVERITYreturned.Signed-off-by Yinghai Lu <[email protected]>--- arch/x86/kernel/cpu/mcheck/mce-severity.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)Index:
linux-2.6/arch/x86/kernel/cpu/mcheck/mce-severity.c
===================================================================
arch/x86/kernel/cpu/mcheck/mce-severity.c static int mce_severity_intel(struct mce · line 317
Quoted 8 lines
arch/x86/kernel/cpu/mcheck/mce-severity.c +1
-1@@ -311,7 +311,7 @@ static int mce_severity_intel(struct mce *msg = s->msg; s->covered =1 ;if (s->sev >=MCE_UC_SEVERITY && ctx ==IN_KERNEL ) { -if (panic_on_oops || tolerant <1 ) +if (tolerant <1 )return MCE_PANIC_SEVERITY ; }return s->sev;
Applied,
thanks.
Signature · 4 lines
Regards/Gruss,
Boris.
ECO tip #101: Trim your mails when you reply.tip-bot for Yinghai Lu
merge bot[tip:ras/core] x86/MCE: Do not look at panic_on_oops in the severity grading
In reply to Yinghai Lux86/MCE: Do not look at panic_on_oops in the severity grading
Commit-ID: f5e886ef9b45a3dbfd42b054a13c755894ea8402 Gitweb: http://git.kernel.org/tip/f5e886ef9b45a3dbfd42b054a13c755894ea8402 Author: Yinghai Lu <[email protected]> AuthorDate: Fri, 16 Sep 2016 13:23:25 -0700 Committer: Thomas Gleixner <[email protected]> CommitDate: Tue, 8 Nov 2016 17:10:12 +0100
x86/MCE: Do not look at panic_on_oops in the severity grading
The MCE tolerance levels control whether we panic on a machine check or do something else like generating a signal and logging error information. This is controlled by the mce=<level> command line parameter.
However, if panic_on_oops is set, it will force a panic for such an MCE even though the user didn't want to.
So don't check panic_on_oops in the severity grading anymore.
One of the use cases for that is recovery from uncorrectable errors with mce=2.
[ Boris: rewrite commit message. ]
--- arch/x86/kernel/cpu/mcheck/mce-severity.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
arch/x86/kernel/cpu/mcheck/mce-severity.c +1 -1
@@ -311,7 +311,7 @@ static int mce_severity_intel(struct mce *m, int tolerant, char **msg, bool is_e *msg = s->msg; s->covered =1 ;if (s->sev >=MCE_UC_SEVERITY && ctx ==IN_KERNEL ) { -if (panic_on_oops || tolerant <1 ) +if (tolerant <1 )return MCE_PANIC_SEVERITY ; }return s->sev;