Check if the event info is valid before printing the event information. When a fwnmi enabled nested kvm guest hits a machine check exception L0 and L2 would generate machine check event info, But L1 would not generate any machine check event info as it won't go through 0x200 vector and prints some unwanted message.
To fix this, 'in_use' variable in machine check event info is no more in use, rename it to 'valid' and check if the event information is valid before logging the event information. without this patch L1 would print following message for exceptions encountered in L2, as event structure will be empty in L1. "Machine Check Exception, Unknown event version 0". Signed-off-by: Ganesh Goudar <ganes...@linux.ibm.com> --- arch/powerpc/include/asm/mce.h | 2 +- arch/powerpc/kernel/mce.c | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/arch/powerpc/include/asm/mce.h b/arch/powerpc/include/asm/mce.h index 331d944280b8..3646f53f228f 100644 --- a/arch/powerpc/include/asm/mce.h +++ b/arch/powerpc/include/asm/mce.h @@ -113,7 +113,7 @@ enum MCE_LinkErrorType { struct machine_check_event { enum MCE_Version version:8; - u8 in_use; + u8 valid; enum MCE_Severity severity:8; enum MCE_Initiator initiator:8; enum MCE_ErrorType error_type:8; diff --git a/arch/powerpc/kernel/mce.c b/arch/powerpc/kernel/mce.c index 47a683cd00d2..b778394a06b5 100644 --- a/arch/powerpc/kernel/mce.c +++ b/arch/powerpc/kernel/mce.c @@ -114,7 +114,7 @@ void save_mce_event(struct pt_regs *regs, long handled, mce->srr0 = nip; mce->srr1 = regs->msr; mce->gpr3 = regs->gpr[3]; - mce->in_use = 1; + mce->valid = 1; mce->cpu = get_paca()->paca_index; /* Mark it recovered if we have handled it and MSR(RI=1). */ @@ -202,7 +202,7 @@ int get_mce_event(struct machine_check_event *mce, bool release) if (mce) *mce = *mc_evt; if (release) - mc_evt->in_use = 0; + mc_evt->valid = 0; ret = 1; } /* Decrement the count to free the slot. */ @@ -413,6 +413,9 @@ void machine_check_print_event_info(struct machine_check_event *evt, "Probable Software error (some chance of hardware cause)", }; + if (!evt->valid) + return; + /* Print things out */ if (evt->version != MCE_V1) { pr_err("Machine Check Exception, Unknown event version %d !\n", -- 2.31.1