In do_machine_check function, we can find the following code segment: * ... * /* mce_clear_state will clear *final, save locally for use later */ * m = *final; * * if (!no_way_out) * mce_clear_state(toclear); * ...
But the reality is that mce_clear_state function will not clear *final. It is just used to clear bank MSRs or the relative field of injectm used by MCE-Injection. Meanwhile, mce_reign executed by monarch CPU will clear *final, therefore we need to save it locally for use later. Signed-off-by: Chen Yucong <sla...@gmail.com> --- arch/x86/kernel/cpu/mcheck/mce.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/arch/x86/kernel/cpu/mcheck/mce.c b/arch/x86/kernel/cpu/mcheck/mce.c index 68317c8..83159c1 100644 --- a/arch/x86/kernel/cpu/mcheck/mce.c +++ b/arch/x86/kernel/cpu/mcheck/mce.c @@ -1137,7 +1137,9 @@ void do_machine_check(struct pt_regs *regs, long error_code) } } - /* mce_clear_state will clear *final, save locally for use later */ + /* mce_reign executed by monarch CPU will clear *final(mces_seen), + * save locally for use later + */ m = *final; if (!no_way_out) -- 1.7.10.4 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/