Skip to content

Commit

Permalink
perf intel-pt: Record Event Trace capability flag
Browse files Browse the repository at this point in the history
The change to the MODE.Exec packet means processing must distinguish
between the old and new cases. Record the Event Trace capability flag to
make that possible.

Signed-off-by: Adrian Hunter <[email protected]>
Cc: Alexander Shishkin <[email protected]>
Cc: Andi Kleen <[email protected]>
Cc: Jiri Olsa <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
  • Loading branch information
ahunter6 authored and acmel committed Feb 15, 2022
1 parent 8ee9a9a commit f2be829
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 1 deletion.
7 changes: 7 additions & 0 deletions tools/perf/arch/x86/util/intel-pt.c
Original file line number Diff line number Diff line change
Expand Up @@ -306,6 +306,7 @@ intel_pt_info_priv_size(struct auxtrace_record *itr, struct evlist *evlist)

ptr->priv_size = (INTEL_PT_AUXTRACE_PRIV_MAX * sizeof(u64)) +
intel_pt_filter_bytes(filter);
ptr->priv_size += sizeof(u64); /* Cap Event Trace */

return ptr->priv_size;
}
Expand Down Expand Up @@ -335,6 +336,7 @@ static int intel_pt_info_fill(struct auxtrace_record *itr,
unsigned long max_non_turbo_ratio;
size_t filter_str_len;
const char *filter;
int event_trace;
__u64 *info;
int err;

Expand All @@ -357,6 +359,9 @@ static int intel_pt_info_fill(struct auxtrace_record *itr,
if (perf_pmu__scan_file(intel_pt_pmu, "max_nonturbo_ratio",
"%lu", &max_non_turbo_ratio) != 1)
max_non_turbo_ratio = 0;
if (perf_pmu__scan_file(intel_pt_pmu, "caps/event_trace",
"%d", &event_trace) != 1)
event_trace = 0;

filter = intel_pt_find_filter(session->evlist, ptr->intel_pt_pmu);
filter_str_len = filter ? strlen(filter) : 0;
Expand Down Expand Up @@ -407,6 +412,8 @@ static int intel_pt_info_fill(struct auxtrace_record *itr,
info += len >> 3;
}

*info++ = event_trace;

return 0;
}

Expand Down
10 changes: 9 additions & 1 deletion tools/perf/util/intel-pt.c
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,7 @@ struct intel_pt {
bool mispred_all;
bool use_thread_stack;
bool callstack;
bool cap_event_trace;
unsigned int br_stack_sz;
unsigned int br_stack_sz_plus;
int have_sched_switch;
Expand Down Expand Up @@ -3795,7 +3796,7 @@ int intel_pt_process_auxtrace_info(union perf_event *event,
}

info = &auxtrace_info->priv[INTEL_PT_FILTER_STR_LEN] + 1;
info_end = (void *)info + auxtrace_info->header.size;
info_end = (void *)auxtrace_info + auxtrace_info->header.size;

if (intel_pt_has(auxtrace_info, INTEL_PT_FILTER_STR_LEN)) {
size_t len;
Expand Down Expand Up @@ -3834,6 +3835,13 @@ int intel_pt_process_auxtrace_info(union perf_event *event,
intel_pt_print_info_str("Filter string", pt->filter);
}

if ((void *)info < info_end) {
pt->cap_event_trace = *info++;
if (dump_trace)
fprintf(stdout, " Cap Event Trace %d\n",
pt->cap_event_trace);
}

pt->timeless_decoding = intel_pt_timeless_decoding(pt);
if (pt->timeless_decoding && !pt->tc.time_mult)
pt->tc.time_mult = 1;
Expand Down

0 comments on commit f2be829

Please sign in to comment.