On 2020-03-13 19:36:12 Fri, Ganesh Goudar wrote: > If we hit UE at an instruction with a fixup entry, flag to > ignore the event and set nip to continue execution at the > fixup entry. > For powernv this changes are already made by commit > 895e3dceeb97 ("powerpc/mce: Handle UE event for memcpy_mcsafe") > > Signed-off-by: Ganesh Goudar <ganes...@linux.ibm.com>
Thanks for working on this. Looks good. Reviewed-by: Mahesh Salgaonkar <mah...@linux.ibm.com> Thanks, -Mahesh. > --- > arch/powerpc/platforms/pseries/ras.c | 8 ++++++++ > 1 file changed, 8 insertions(+) > > diff --git a/arch/powerpc/platforms/pseries/ras.c > b/arch/powerpc/platforms/pseries/ras.c > index 5d49d9d711da..6dc3074a34c5 100644 > --- a/arch/powerpc/platforms/pseries/ras.c > +++ b/arch/powerpc/platforms/pseries/ras.c > @@ -10,6 +10,7 @@ > #include <linux/fs.h> > #include <linux/reboot.h> > #include <linux/irq_work.h> > +#include <linux/extable.h> > > #include <asm/machdep.h> > #include <asm/rtas.h> > @@ -505,6 +506,7 @@ static int mce_handle_error(struct pt_regs *regs, struct > rtas_error_log *errp) > int initiator = rtas_error_initiator(errp); > int severity = rtas_error_severity(errp); > u8 error_type, err_sub_type; > + const struct exception_table_entry *entry; > > if (initiator == RTAS_INITIATOR_UNKNOWN) > mce_err.initiator = MCE_INITIATOR_UNKNOWN; > @@ -558,6 +560,12 @@ static int mce_handle_error(struct pt_regs *regs, struct > rtas_error_log *errp) > switch (mce_log->error_type) { > case MC_ERROR_TYPE_UE: > mce_err.error_type = MCE_ERROR_TYPE_UE; > + entry = search_kernel_exception_table(regs->nip); > + if (entry) { > + mce_err.ignore_event = true; > + regs->nip = extable_fixup(entry); > + disposition = RTAS_DISP_FULLY_RECOVERED; > + } > switch (err_sub_type) { > case MC_ERROR_UE_IFETCH: > mce_err.u.ue_error_type = MCE_UE_ERROR_IFETCH; > -- > 2.17.2 > -- Mahesh J Salgaonkar