Nicholas Piggin <npig...@gmail.com> writes:

> diff --git a/arch/powerpc/kernel/exceptions-64s.S 
> b/arch/powerpc/kernel/exceptions-64s.S
> index 486e205cc762..6ba4c4c6ae69 100644
> --- a/arch/powerpc/kernel/exceptions-64s.S
> +++ b/arch/powerpc/kernel/exceptions-64s.S
> @@ -625,6 +625,9 @@ EXC_COMMON_BEGIN(slb_miss_realmode)
>       stw     r9,PACA_EXSLB+EX_CCR(r13)       /* save CR in exc. frame */
>       std     r10,PACA_EXSLB+EX_LR(r13)       /* save LR */
>  
> +     andi.   r11,r11,MSR_RI  /* check for unrecoverable exception */
> +     beq-    2f
> +
>       crset   4*cr0+eq
>  #ifdef CONFIG_PPC_STD_MMU_64
>  BEGIN_MMU_FTR_SECTION
> @@ -638,9 +641,6 @@ END_MMU_FTR_SECTION_IFCLR(MMU_FTR_TYPE_RADIX)
>  
>       beq-    8f              /* if bad address, make full stack frame */
>  
> -     andi.   r10,r12,MSR_RI  /* check for unrecoverable exception */
> -     beq-    2f
> -

Moving that check before slb_allocate_realmode() makes me a bit nervous.

It's already a bug if we're taking an SLB miss with RI off, but I'm
worried that by not doing the SLB allocate we might turn what would be a
regular oops into an infinite loop of SLB misses. But my brain is too
sleep deprived today to decide either way.

cheers

Reply via email to