Re: [PATCH] tracing: Cleanup the convoluted softirq tracepoints

From: Thomas Gleixner
Date: Tue Oct 19 2010 - 17:08:44 EST


On Tue, 19 Oct 2010, Steven Rostedt wrote:
> On Tue, 2010-10-19 at 21:49 +0200, Thomas Gleixner wrote:
> > So that saves _TWO_ bytes of text and replaces:
> >
> > - 1e: 83 3d 00 00 00 00 00 cmpl $0x0,0x0(%rip) # 25 <test+0x25>
> > - 25: 74 4d je 74 <test+0x74>
> > + 1e: e9 00 00 00 00 jmpq 23 <test+0x23>
> > + 23: eb 4d jmp 72 <test+0x72>
> >
> > So it trades a conditional vs. two jumps ? WTF ??
>
> Well, the one jmpq is noped out, and the jmp is non conditional. I've

What are you smoking ?

In case the trace point is enabled the jmpq is there, so it jumps to
23 and jumps from there to 72.

In case the trace point is disabled the jmpq is noped out, so it jumps
to 72 directly.

> always thought a non conditional jmp was faster than a conditional one,

I always thought, that at least some of the stuff which comes from
tracing folks makes some sense.

> since there's no need to go into the branch prediction logic. The CPU
> can simply skip to the code to jump next. Of counse, this pollutes the
> I$.

We might consult Mathieu for further useless blurb on how CPUs work
around broken code.

Thanks,

tglx
--
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/