arch/powerpc/kernel/head_fsl_booke.S has the following code:
>       /* Data Storage Interrupt */
>       START_EXCEPTION(DataStorage)
>       NORMAL_EXCEPTION_PROLOG
>       mfspr   r5,SPRN_ESR             /* Grab the ESR, save it, pass arg3 */
>       stw     r5,_ESR(r11)
>       mfspr   r4,SPRN_DEAR            /* Grab the DEAR, save it, pass arg2 */
>       andis.  r10,r5,(ESR_ILK|ESR_DLK)@h
>       bne     1f
>       EXC_XFER_EE_LITE(0x0300, handle_page_fault)
> 1:
>       addi    r3,r1,STACK_FRAME_OVERHEAD
>       EXC_XFER_EE_LITE(0x0300, CacheLockingException)


I need something similar for A2 (and all book3e) and was wondering, why this 
isn't just:

> diff --git a/arch/powerpc/mm/fault.c b/arch/powerpc/mm/fault.c
> index 88abe70..8451822 100644
> --- a/arch/powerpc/mm/fault.c
> +++ b/arch/powerpc/mm/fault.c
> @@ -159,6 +159,14 @@ int __kprobes do_page_fault(struct pt_regs *regs, 
> unsigned long address,
>       }
>  #endif
>  
> +#ifdef CONFIG_PPC_BOOK3E
> +     if (error_code & (ESR_DLK|ESR_ILK)) {
> +             /* detect that this is a privileged op and SIGILL */
> +             _exception(SIGILL, regs, ILL_PRVOPC, regs->nip);
> +             return 0;
> +     }
> +#endif
> +
>       if (notify_page_fault(regs))
>               return 0;

Its not like this need to be fast or anything.
I'd be happy to submit a patch that adds to fault.c and removed the I/DLK 
processing from head_fsl_booke.S

Thoughts?
-jx

_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev

Reply via email to