[PATCH 1/2] powerpc64/ftrace: Add a field in paca to disable ftrace in unsafe code paths

Naveen N. Rao naveen.n.rao at linux.vnet.ibm.com
Tue Mar 20 05:54:27 AEDT 2018


Steven Rostedt wrote:
> On Mon, 19 Mar 2018 14:43:00 +0530
> "Naveen N. Rao" <naveen.n.rao at linux.vnet.ibm.com> wrote:
> 
>> diff --git a/arch/powerpc/kernel/trace/ftrace_64_mprofile.S b/arch/powerpc/kernel/trace/ftrace_64_mprofile.S
>> index 3f3e81852422..fdf702b4df25 100644
>> --- a/arch/powerpc/kernel/trace/ftrace_64_mprofile.S
>> +++ b/arch/powerpc/kernel/trace/ftrace_64_mprofile.S
>> @@ -60,6 +60,19 @@ _GLOBAL(ftrace_caller)
>>  	mfxer   r10
>>  	mfcr	r11
>>  
>> +#ifdef CONFIG_KVM
>> +	lbz	r3, PACA_FTRACE_DISABLED(r13)
>> +	cmpdi	r3, 0
>> +	beq	1f
>> +	mflr	r3
>> +	mtctr	r3
>> +	REST_GPR(3, r1)
>> +	addi	r1, r1, SWITCH_FRAME_SIZE
>> +	mtlr	r0
>> +	bctr
>> +1:
>> +#endif
> 
> I wonder if we should try to move the return out of the fast path (for
> cache reasons), as most of the time the above compare will be true. That
> is:
> 
> #ifdef CONFIG_KVM
> 	lbz	r3, PACA_FTRACE_DISABLED(r13)
> 	cmpdi	r3, 0
> 	bne	no_trace
> #endif
> 
> /* rest of ftrace_caller code */
> 
> /* after ftrace_caller... */
>         bctr                    /* jump after _mcount site */
> 
> #ifdef	CONFIG_KVM
> no_trace:
> 	mflr	r3
> 	mtctr	r3
> 	REST_GPR(3, r1)
> 	addi	r1, r1, SWITCH_FRAME_SIZE
> 	mtlr	r0
> 	bctr
> #endif

Thanks, I'll incorporate those changes in my next version.

- Naveen




More information about the Linuxppc-dev mailing list