Message ID | 20200313140612.8112-1-ganeshgr@linux.ibm.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | powerpc/pseries: Handle UE event for memcpy_mcsafe | expand |
Context | Check | Description |
---|---|---|
snowpatch_ozlabs/apply_patch | success | Successfully applied on branch powerpc/merge (ab326587bb5fb91cc97df9b9f48e9e1469f04621) |
snowpatch_ozlabs/build-ppc64le | success | Build succeeded |
snowpatch_ozlabs/build-ppc64be | success | Build succeeded |
snowpatch_ozlabs/build-ppc64e | success | Build succeeded |
snowpatch_ozlabs/build-pmac32 | success | Build succeeded |
snowpatch_ozlabs/checkpatch | warning | total: 1 errors, 0 warnings, 0 checks, 26 lines checked |
snowpatch_ozlabs/needsstable | success | Patch has no Fixes tags |
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 <ganeshgr@linux.ibm.com> Thanks for working on this. Looks good. Reviewed-by: Mahesh Salgaonkar <mahesh@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 >
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;
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 <ganeshgr@linux.ibm.com> --- arch/powerpc/platforms/pseries/ras.c | 8 ++++++++ 1 file changed, 8 insertions(+)