Re: Tracing framework regressions in 2.6.28-rc2

From: Frédéric Weisbecker
Date: Sun Nov 02 2008 - 11:52:20 EST


Hi Pekka!

2008/11/2 Pekka Paalanen <pq@xxxxxx>:
> Hi all,
>
> I finally had the time to check how mmiotrace works in 2.6.28-rc2.
> On the first try I didn't find any mmiotrace problems, I traced the
> Nouveau DRM driver just fine, but the file /debug/tracing/current_tracer
> has started to misbehave.
>
> I think it is due to this patch:
>
> commit c2931e05ec5965597cbfb79ad332d4a29aeceb23
> Author: Frederic Weisbecker <fweisbec@xxxxxxxxx>
> Date: Sat Oct 4 22:04:44 2008 +0200
>
> ftrace: return an error when setting a nonexistent tracer
>
> When one try to set a nonexistent tracer, no error is returned
> as if the name of the tracer was correct.
> We should return -EINVAL.
>
> Signed-off-by: Frederic Weisbecker <fweisbec@xxxxxxxxx>
> Acked-by: Steven Rostedt <srostedt@xxxxxxxxxx>
> Signed-off-by: Ingo Molnar <mingo@xxxxxxx>
>
> Now, whatever I echo to current_tracer, I get EINVAL.
> What's more confusing, if I do
> echo mmiotrace > /debug/tracing/current_tracer
> then I see the EINVAL error *and* mmiotrace is activated!
>
> The problem is with newlines, with 'echo -n' it works as it should.
>
> I'm starting to think the patch itself is fine, but it exposes an
> assumption in the write fop: a single write call contains all the
> data. I suspect there are actually two write calls in case of 'echo':
> one with 'mmiotrace' and one with '\n'. I don't see how else I could
> get the behaviour I get.


A patch has been applied for this in the mainline, the issue will be
fixed for rc3:
http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=60063a66236c15f5613f91390631e06718689782

> Another issue is the disappeared 'none' pseudo-tracer, which seems
> to be replaced with the 'nop' real tracer. Is using 'nop' now equivalent
> to the previous 'none' tracer?

Yes. A nop tracer has been released to have a kind of pattern to write
new tracers, and to have a tracer that does
nothing but is able to show user marks for example.
Since it does nothing, we replaced the none tracer by this one.

> I mean, when the 'nop' tracer is current, are all tracing calls no-ops and
> nothing will ever get into the ring buffer?
> I have to update the mmiotrace documentation about disabling tracing.

Hhm not really, you can receive pseudo entries like user marks. But
you can disable all the tracing by setting 0 to
tracing_enabled.
--
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/