Files
kernel_arpi/include/linux
Peter Zijlstra ef21f683a0 perf, x86: use LBR for PEBS IP+1 fixup
Use the LBR to fix up the PEBS IP+1 issue.

As said, PEBS reports the next instruction, here we use the LBR to find
the last branch and from that construct the actual IP. If the IP matches
the LBR-TO, we use LBR-FROM, otherwise we use the LBR-TO address as the
beginning of the last basic block and decode forward.

Once we find a match to the current IP, we use the previous location.

This patch introduces a new ABI element: PERF_RECORD_MISC_EXACT, which
conveys that the reported IP (PERF_SAMPLE_IP) is the exact instruction
that caused the event (barring CPU errata).

The fixup can fail due to various reasons:

 1) LBR contains invalid data (quite possible)
 2) part of the basic block got paged out
 3) the reported IP isn't part of the basic block (see 1)

Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Arnaldo Carvalho de Melo <acme@infradead.org>
Cc: Masami Hiramatsu <mhiramat@redhat.com>
Cc: "Zhang, Yanmin" <yanmin_zhang@linux.intel.com>
Cc: paulus@samba.org
Cc: eranian@google.com
Cc: robert.richter@amd.com
Cc: fweisbec@gmail.com
LKML-Reference: <20100304140100.619375431@chello.nl>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
2010-03-10 13:23:32 +01:00
..
2009-12-16 07:20:13 -08:00
2010-03-01 15:11:32 -05:00
2010-02-05 07:35:05 -08:00
2009-12-15 08:53:33 -08:00
2009-12-23 13:33:54 +01:00
2009-12-14 23:55:34 +01:00
2010-03-07 22:17:09 +01:00
2010-03-02 12:23:42 +01:00
2010-03-02 12:23:49 +01:00
2010-01-19 01:52:36 -08:00
2010-02-18 14:08:38 -08:00
2010-02-17 16:35:17 -08:00
2010-02-02 07:32:29 -08:00
2010-01-11 16:28:01 -08:00
2010-02-22 16:17:00 -08:00
2009-12-16 06:56:12 -08:00
2009-12-15 08:53:36 -08:00
2009-12-26 20:40:34 -08:00
2010-02-03 17:39:50 +11:00
2010-02-19 03:35:12 -05:00
2009-12-15 08:53:20 -08:00
2010-03-06 11:26:26 -08:00
2010-02-03 20:32:28 -08:00
2010-02-19 15:52:40 -05:00
2010-02-14 07:13:47 -07:00
2010-02-23 23:14:47 -08:00
2010-01-05 09:17:33 +09:00
2010-02-04 10:23:02 -08:00
2010-03-05 00:20:31 +01:00
2010-02-10 17:47:17 -08:00
2010-03-06 11:26:24 -08:00
2010-03-02 11:39:15 +09:00
2010-01-21 23:55:25 -08:00
2010-02-16 13:38:56 +09:00
2010-03-02 03:05:05 -08:00
2009-12-16 22:32:29 -05:00
2010-01-14 22:38:09 -05:00
2009-12-15 08:53:16 -08:00
2010-02-18 15:43:09 -08:00
2010-03-05 15:04:41 -06:00
2010-01-05 09:17:33 +09:00
2009-12-16 12:16:49 -05:00