perf script: Display Intel PT CFE (Control Flow Event) / EVD (Event Data) synthesized event
Similar to other Intel PT synth events, display Event Trace events recorded by CFE / EVD packets. Signed-off-by: Adrian Hunter <adrian.hunter@intel.com> Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> Cc: Andi Kleen <ak@linux.intel.com> Cc: Jiri Olsa <jolsa@redhat.com> Link: https://lore.kernel.org/r/20220124084201.2699795-19-adrian.hunter@intel.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
e92403553b
commit
5b11749b36
|
@ -1811,6 +1811,43 @@ static int perf_sample__fprintf_synth_psb(struct perf_sample *sample, FILE *fp)
|
|||
return len + perf_sample__fprintf_pt_spacing(len, fp);
|
||||
}
|
||||
|
||||
/* Intel PT Event Trace */
|
||||
static int perf_sample__fprintf_synth_evt(struct perf_sample *sample, FILE *fp)
|
||||
{
|
||||
struct perf_synth_intel_evt *data = perf_sample__synth_ptr(sample);
|
||||
const char *cfe[32] = {NULL, "INTR", "IRET", "SMI", "RSM", "SIPI",
|
||||
"INIT", "VMENTRY", "VMEXIT", "VMEXIT_INTR",
|
||||
"SHUTDOWN"};
|
||||
const char *evd[64] = {"PFA", "VMXQ", "VMXR"};
|
||||
const char *s;
|
||||
int len, i;
|
||||
|
||||
if (perf_sample__bad_synth_size(sample, *data))
|
||||
return 0;
|
||||
|
||||
s = cfe[data->type];
|
||||
if (s) {
|
||||
len = fprintf(fp, " cfe: %s IP: %d vector: %u",
|
||||
s, data->ip, data->vector);
|
||||
} else {
|
||||
len = fprintf(fp, " cfe: %u IP: %d vector: %u",
|
||||
data->type, data->ip, data->vector);
|
||||
}
|
||||
for (i = 0; i < data->evd_cnt; i++) {
|
||||
unsigned int et = data->evd[i].evd_type & 0x3f;
|
||||
|
||||
s = evd[et];
|
||||
if (s) {
|
||||
len += fprintf(fp, " %s: %#" PRIx64,
|
||||
s, data->evd[i].payload);
|
||||
} else {
|
||||
len += fprintf(fp, " EVD_%u: %#" PRIx64,
|
||||
et, data->evd[i].payload);
|
||||
}
|
||||
}
|
||||
return len + perf_sample__fprintf_pt_spacing(len, fp);
|
||||
}
|
||||
|
||||
static int perf_sample__fprintf_synth(struct perf_sample *sample,
|
||||
struct evsel *evsel, FILE *fp)
|
||||
{
|
||||
|
@ -1829,6 +1866,8 @@ static int perf_sample__fprintf_synth(struct perf_sample *sample,
|
|||
return perf_sample__fprintf_synth_cbr(sample, fp);
|
||||
case PERF_SYNTH_INTEL_PSB:
|
||||
return perf_sample__fprintf_synth_psb(sample, fp);
|
||||
case PERF_SYNTH_INTEL_EVT:
|
||||
return perf_sample__fprintf_synth_evt(sample, fp);
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue