[RESEND PATCH v2] powerpc/mce: Fix SLB rebolting during MCE recovery path.
Michael Ellerman
mpe at ellerman.id.au
Thu Aug 23 16:44:42 AEST 2018
Mahesh J Salgaonkar <mahesh at linux.vnet.ibm.com> writes:
> From: Mahesh Salgaonkar <mahesh at linux.vnet.ibm.com>
>
> With the powerpc next commit e7e81847478 (powerpc/mce: Fix SLB rebolting
> during MCE recovery path.),
That commit description is wrong, I'll fix it up.
cheers
> the SLB error recovery is broken. The new
> change now does not add index value to RB[52-63] that selects the SLB
> entry while rebolting, instead it assumes that the shadow save area
> already have index embeded correctly in esid field. While all valid bolted
> save areas do contain index value set correctly, there is a case where
> 3rd (KSTACK_INDEX) entry for kernel stack does not embed index for NULL
> esid entry. This patch fixes that.
>
> Without this patch the SLB rebolt code overwrites the 1st entry of kernel
> linear mapping and causes SLB recovery to fail.
>
> Signed-off-by: Mahesh Salgaonkar <mahesh at linux.vnet.ibm.com>
> Signed-off-by: Nicholas Piggin <npiggin at gmail.com>
> Reviewed-by: Nicholas Piggin <npiggin at gmail.com>
> ---
> arch/powerpc/mm/slb.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/arch/powerpc/mm/slb.c b/arch/powerpc/mm/slb.c
> index 0b095fa54049..9f574e59d178 100644
> --- a/arch/powerpc/mm/slb.c
> +++ b/arch/powerpc/mm/slb.c
> @@ -70,7 +70,7 @@ static inline void slb_shadow_update(unsigned long ea, int ssize,
>
> static inline void slb_shadow_clear(enum slb_index index)
> {
> - WRITE_ONCE(get_slb_shadow()->save_area[index].esid, 0);
> + WRITE_ONCE(get_slb_shadow()->save_area[index].esid, cpu_to_be64(index));
> }
>
> static inline void create_shadowed_slbe(unsigned long ea, int ssize,
More information about the Linuxppc-dev
mailing list