[BUG] perf: sampling with precise=2 broken in 3.18

From: Stephane Eranian
Date: Mon Dec 15 2014 - 23:51:14 EST


Hi,

I was running some perf mem test for an upcoming patch when
I realize that precise=2 was broken on 3.18. It seems it never
(or extremely rarely) correct the off-by-one error, when until 3.18-rc4
it was 100% on the same program. So something was introduced
that broke the asm walker in perf_event_intel_ds.c.

Looking at the log of that file, I can see one change that could have
some impact:

Author: Dave Hansen <dave.hansen@xxxxxxxxxxxxxxx>
6ba48ff x86: Remove arbitrary instruction size limit in instruction decoder

if I use a kernel without this fix (prior to that commit), then correction
works. Any kernel after fails. I have not investigated why but may you
have an idea.

To reproduce try using perf mem -t load rec my_load_test, then use
perf report to navigate to the assembly view, the samples should be
on load instructions, not on the instructions following them. If you use
perf mem -t load rec -vv you can verify that precise=2. So something
is not working anymore in the instruction decoder that the fixup routine
bails out.

Any clue?
--
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/