[PATCH v3] powerpc: Handle MCE on POWER9 with only DSISR bit 33 set
Balbir Singh
bsingharora at gmail.com
Fri Sep 22 21:05:33 AEST 2017
On Fri, Sep 22, 2017 at 1:32 PM, Michael Neuling <mikey at neuling.org> wrote:
> On POWER9 DD2.1 and below, it's possible for a paste instruction to
> cause a Machine Check Exception (MCE) where only DSISR bit 33 is
> set. This will result in the MCE handler seeing an unknown event,
> which triggers linux to crash.
>
> We change this by detecting unknown events caused by load/stores in
> the MCE handler and marking them as handled so that we no longer
> crash.
>
> An MCE that occurs like this is spurious, so we don't need to do
> anything in terms of servicing it. If there is something that needs to
> be serviced, the CPU will raise the MCE again with the correct DSISR
> so that it can be serviced properly.
>
> Signed-off-by: Michael Neuling <mikey at neuling.org>
> Reviewed-by: Nicholas Piggin <npiggin at gmail.com
> --
> v3: Simplification and SRR1 check suggestions from Nick
> v2: update commit message based on Balbir's comments
> ---
> arch/powerpc/kernel/mce_power.c | 10 ++++++++++
> 1 file changed, 10 insertions(+)
>
> diff --git a/arch/powerpc/kernel/mce_power.c b/arch/powerpc/kernel/mce_power.c
> index b76ca198e0..e423cf0e43 100644
> --- a/arch/powerpc/kernel/mce_power.c
> +++ b/arch/powerpc/kernel/mce_power.c
> @@ -624,5 +624,15 @@ long __machine_check_early_realmode_p8(struct pt_regs *regs)
>
> long __machine_check_early_realmode_p9(struct pt_regs *regs)
> {
> + /*
> + * On POWER9 DD2.1 and below, it's possible to get machine
> + * check caused by a paste instruction where only DSISR bit 33
> + * is set. This will result in the MCE handler seeing an
> + * unknown event and us crashing. Change this to mark as
> + * handled.
> + */
> + if (SRR1_MC_LOADSTORE(regs->msr) && regs->dsisr == 0x40000000)
> + return 1;
> +
Acked-by: Balbir SIngh <bsingharora at gmail.com>
More information about the Linuxppc-dev
mailing list