Re: [PATCH 1/2] tracing/mm: don't trace kfree on offline CPUs

From: Denis Kirjanov
Date: Sun Feb 14 2016 - 15:19:48 EST


On 2/14/16, Steven Rostedt <rostedt@xxxxxxxxxxx> wrote:
> On Sat, 13 Feb 2016 21:22:52 +0300
> Denis Kirjanov <kda@xxxxxxxxxxxxxxxxx> wrote:
>
>> -DEFINE_EVENT(kmem_free, kfree,
>> +DEFINE_EVENT_CONDITION(kmem_free, kfree,
>>
>> TP_PROTO(unsigned long call_site, const void *ptr),
>>
>> - TP_ARGS(call_site, ptr)
>> + TP_ARGS(call_site, ptr),
>> +
>> + /*
>> + * This trace can be potentially called from an offlined cpu.
>> + * Since trace points use RCU and RCU should not be used from
>> + * offline cpus, filter such calls out.
>> + * While this trace can be called from a preemptable section,
>> + * it has no impact on the condition since tasks can migrate
>> + * only from online cpus to other online cpus. Thus its safe
>> + * to use raw_smp_processor_id.
>> + */
>> + TP_CONDITION(cpu_online(raw_smp_processor_id()))
>
> This is starting to become a common occurrence. Perhaps it is best to
> just hardcode this into the tracepoint code itself?

Can you take it as a fix for now. I'll post the follow-up patch then
for rcu and offline cpus
issue.

Thanks!

>
> -- Steve
>
>> );
>>
>> DEFINE_EVENT_CONDITION(kmem_free, kmem_cache_free,
>
>