x86: mce: Ignore machine checks on offlined CPUs Don't process machine checks on offlined CPUs. This avoids problems with MCE rendevouzous getting out of sync when a machine check happens on a offlined CPUs. Signed-off-by: Andi Kleen <ak@linux.intel.com>
diff --git a/arch/x86/kernel/cpu/mcheck/mce.c b/arch/x86/kernel/cpu/mcheck/mce.c index a63e956..480d0f0 100644 --- a/arch/x86/kernel/cpu/mcheck/mce.c +++ b/arch/x86/kernel/cpu/mcheck/mce.c
@@ -953,10 +953,19 @@ DECLARE_BITMAP(toclear, MAX_NR_BANKS); char *msg = "Unknown"; - atomic_inc(&mce_entry); - percpu_inc(mce_exception_count); + /* + * Ignore machine checks on offlined CPUs. + */ + if (!cpu_online(raw_smp_processor_id())) { + mce_wrmsrl(MSR_IA32_MCG_STATUS, 0); + sync_core(); + return; + } + + atomic_inc(&mce_entry); + if (notify_die(DIE_NMI, "machine check", regs, error_code, 18, SIGKILL) == NOTIFY_STOP) goto out;