Re: [PATCH v3] kernel: sched: fix preempt_disable_ip recodring for preempt_disable()

From: Sebastian Andrzej Siewior
Date: Thu Mar 03 2016 - 07:51:48 EST


On 02/26/2016 08:11 PM, Daniel Bristot de Oliveira wrote:
>
>
> On 02/26/2016 10:54 AM, Sebastian Andrzej Siewior wrote:
>> - trace_preempt_off(CALLER_ADDR0, get_parent_ip(CALLER_ADDR1));
>> + trace_preempt_off(CALLER_ADDR0, get_lock_parent_ip());
>
> If !lock_functions(CALLER_ADDR0), the start/stop_critical_timing() will
> be called with parent_ip == ip.
>
> Hence, the following trace on start_critical_timing():
>
> __trace_function(tr, ip, parent_ip, flags, preempt_count());
>
> Will show the function calling itself.
>
> Is it a problem? am I missing something?

It might be that for !lock_functions() we get the same caller. But then
get_parent_ip() was not inlined (in my .o file) so ADDR1 in
get_parent_ip() should correspond to ADDR0 in the inline case.

> -- Daniel

Sebastian