machine_check_log_err() is not getting called for all
unrecoverable errors, And we are missing to log the error.

Raise irq work in save_mce_event() for unrecoverable errors,
So that we log the error from MCE event handling block in
timer handler.

Signed-off-by: Ganesh Goudar <ganes...@linux.ibm.com>
---
 arch/powerpc/kernel/mce.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/arch/powerpc/kernel/mce.c b/arch/powerpc/kernel/mce.c
index 6c5d30fba766..a1cb2172eb7b 100644
--- a/arch/powerpc/kernel/mce.c
+++ b/arch/powerpc/kernel/mce.c
@@ -131,6 +131,13 @@ void save_mce_event(struct pt_regs *regs, long handled,
        if (mce->error_type == MCE_ERROR_TYPE_UE)
                mce->u.ue_error.ignore_event = mce_err->ignore_event;
 
+       /*
+        * Raise irq work, So that we don't miss to log the error for
+        * unrecoverable errors.
+        */
+       if (mce->disposition == MCE_DISPOSITION_NOT_RECOVERED)
+               mce_irq_work_queue();
+
        if (!addr)
                return;
 
@@ -235,7 +242,6 @@ static void machine_check_ue_event(struct 
machine_check_event *evt)
               evt, sizeof(*evt));
 
        /* Queue work to process this event later. */
-       mce_irq_work_queue();
 }
 
 /*
-- 
2.37.1

Reply via email to