On 08/23/2018 12:14 PM, Michael Ellerman wrote: > Mahesh J Salgaonkar <[email protected]> writes: > >> From: Mahesh Salgaonkar <[email protected]> >> >> 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.
Ouch.. My bad.. :-( > > 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 <[email protected]> >> Signed-off-by: Nicholas Piggin <[email protected]> >> Reviewed-by: Nicholas Piggin <[email protected]> >> --- >> 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, >
