On Oct 28, 2011, at 3:43 PM, Jimi Xenidis wrote:

> 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

Probably because at one point in time DSI had a fast path handling for us.  
I've got no issues w/the proposed patch, just remember to mixup the 
CONFIG_PPC_BOOK3E as we don't define that in 32-bit fsl-booke 

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

Reply via email to