diff options
| author | Adrian Hunter <adrian.hunter@intel.com> | 2018-09-20 09:00:47 -0400 |
|---|---|---|
| committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2018-09-20 14:19:51 -0400 |
| commit | c6b5da093a8ba740b71dd0052f3846016986fd21 (patch) | |
| tree | 763d77aa8f3e04ced6b1418c19f6ff29432b95be /tools/perf | |
| parent | 2dcde4e152a3e319cc7e76c7c6b8548a3c72310d (diff) | |
perf intel-pt: Add decoder flags for trace begin / end
Previously, the decoder would indicate begin / end by a branch from / to
zero. That hides useful information, in particular when a trace ends
with a call. To prepare for remedying that, add Intel PT decoder flags
for trace begin / end and map them to the existing sample flags.
Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Link: http://lkml.kernel.org/r/20180920130048.31432-6-adrian.hunter@intel.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools/perf')
| -rw-r--r-- | tools/perf/util/intel-pt-decoder/intel-pt-decoder.h | 2 | ||||
| -rw-r--r-- | tools/perf/util/intel-pt.c | 5 |
2 files changed, 7 insertions, 0 deletions
diff --git a/tools/perf/util/intel-pt-decoder/intel-pt-decoder.h b/tools/perf/util/intel-pt-decoder/intel-pt-decoder.h index 51c18d67f4ca..ed088d4726ba 100644 --- a/tools/perf/util/intel-pt-decoder/intel-pt-decoder.h +++ b/tools/perf/util/intel-pt-decoder/intel-pt-decoder.h | |||
| @@ -37,6 +37,8 @@ enum intel_pt_sample_type { | |||
| 37 | INTEL_PT_EX_STOP = 1 << 6, | 37 | INTEL_PT_EX_STOP = 1 << 6, |
| 38 | INTEL_PT_PWR_EXIT = 1 << 7, | 38 | INTEL_PT_PWR_EXIT = 1 << 7, |
| 39 | INTEL_PT_CBR_CHG = 1 << 8, | 39 | INTEL_PT_CBR_CHG = 1 << 8, |
| 40 | INTEL_PT_TRACE_BEGIN = 1 << 9, | ||
| 41 | INTEL_PT_TRACE_END = 1 << 10, | ||
| 40 | }; | 42 | }; |
| 41 | 43 | ||
| 42 | enum intel_pt_period_type { | 44 | enum intel_pt_period_type { |
diff --git a/tools/perf/util/intel-pt.c b/tools/perf/util/intel-pt.c index aec68908d604..48c1d415c6b0 100644 --- a/tools/perf/util/intel-pt.c +++ b/tools/perf/util/intel-pt.c | |||
| @@ -908,6 +908,11 @@ static void intel_pt_sample_flags(struct intel_pt_queue *ptq) | |||
| 908 | ptq->insn_len = ptq->state->insn_len; | 908 | ptq->insn_len = ptq->state->insn_len; |
| 909 | memcpy(ptq->insn, ptq->state->insn, INTEL_PT_INSN_BUF_SZ); | 909 | memcpy(ptq->insn, ptq->state->insn, INTEL_PT_INSN_BUF_SZ); |
| 910 | } | 910 | } |
| 911 | |||
| 912 | if (ptq->state->type & INTEL_PT_TRACE_BEGIN) | ||
| 913 | ptq->flags |= PERF_IP_FLAG_TRACE_BEGIN; | ||
| 914 | if (ptq->state->type & INTEL_PT_TRACE_END) | ||
| 915 | ptq->flags |= PERF_IP_FLAG_TRACE_END; | ||
| 911 | } | 916 | } |
| 912 | 917 | ||
| 913 | static int intel_pt_setup_queue(struct intel_pt *pt, | 918 | static int intel_pt_setup_queue(struct intel_pt *pt, |
