Re: [PATCH v2] tracing: Don't account for cpu idle time with irqsoff tracers

From: Steven Rostedt
Date: Tue May 27 2014 - 17:48:54 EST


On Tue, 27 May 2014 22:11:25 +0200
Arnd Bergmann <arnd@xxxxxxxx> wrote:

> On Tuesday 27 May 2014 13:08:04 Stephen Boyd wrote:
> > @@ -380,7 +382,7 @@ start_critical_timing(unsigned long ip, unsigned long parent_ip)
> >
> > cpu = raw_smp_processor_id();
> >
> > - if (per_cpu(tracing_cpu, cpu))
> > + if (per_cpu(timings_stopped, cpu) || per_cpu(tracing_cpu, cpu))
> > return;
> >
> > data = per_cpu_ptr(tr->trace_buffer.data, cpu);
> >
>
> Where exactly do you see other code calling here while
> per_cpu(timings_stopped) is set? Would it be possible to just
> change that call site?

Arnd brings up a good point. If we disable irqs off tracing completely,
we may be missing places in the idle path that disable interrupts for
long periods of time. We may want to move the stop down further.

The way it works (IIRC), and why tracing can start again is that it can
nest. Perhaps we need to stop it further down if we can't move it
completely.

-- Steve
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/