perf auxtrace: Add itrace option "I"
authorAdrian Hunter <adrian.hunter@intel.com>
Mon, 24 Jan 2022 08:41:48 +0000 (10:41 +0200)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Tue, 15 Feb 2022 20:10:30 +0000 (17:10 -0300)
Add itrace option "I" to synthesize interrupt or similar (asynchronous)
events. This will be used for Intel PT Event Trace events.

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-13-adrian.hunter@intel.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/Documentation/itrace.txt
tools/perf/util/auxtrace.c
tools/perf/util/auxtrace.h

index c527554..6b18966 100644 (file)
@@ -7,6 +7,8 @@
                p       synthesize power events (incl. PSB events for Intel PT)
                o       synthesize other events recorded due to the use
                        of aux-output (refer to perf record)
+               I       synthesize interrupt or similar (asynchronous) events
+                       (e.g. Intel PT Event Trace)
                e       synthesize error events
                d       create a debug log
                f       synthesize first level cache events
index 8253363..9e48652 100644 (file)
@@ -1333,6 +1333,7 @@ void itrace_synth_opts__set_default(struct itrace_synth_opts *synth_opts,
        synth_opts->ptwrites = true;
        synth_opts->pwr_events = true;
        synth_opts->other_events = true;
+       synth_opts->intr_events = true;
        synth_opts->errors = true;
        synth_opts->flc = true;
        synth_opts->llc = true;
@@ -1479,6 +1480,9 @@ int itrace_do_parse_synth_opts(struct itrace_synth_opts *synth_opts,
                case 'o':
                        synth_opts->other_events = true;
                        break;
+               case 'I':
+                       synth_opts->intr_events = true;
+                       break;
                case 'e':
                        synth_opts->errors = true;
                        if (get_flags(&p, &synth_opts->error_plus_flags,
index 19910b9..dc38b6f 100644 (file)
@@ -76,6 +76,7 @@ enum itrace_period_type {
  * @pwr_events: whether to synthesize power events
  * @other_events: whether to synthesize other events recorded due to the use of
  *                aux_output
+ * @intr_events: whether to synthesize interrupt events
  * @errors: whether to synthesize decoder error events
  * @dont_decode: whether to skip decoding entirely
  * @log: write a decoding log
@@ -120,6 +121,7 @@ struct itrace_synth_opts {
        bool                    ptwrites;
        bool                    pwr_events;
        bool                    other_events;
+       bool                    intr_events;
        bool                    errors;
        bool                    dont_decode;
        bool                    log;
@@ -636,6 +638,8 @@ bool auxtrace__evsel_is_auxtrace(struct perf_session *session,
 "                              p:                      synthesize power events\n"                      \
 "                              o:                      synthesize other events recorded due to the use\n" \
 "                                                      of aux-output (refer to perf record)\n" \
+"                              I:                      synthesize interrupt or similar (asynchronous) events\n" \
+"                                                      (e.g. Intel PT Event Trace)\n" \
 "                              e[flags]:               synthesize error events\n" \
 "                                                      each flag must be preceded by + or -\n" \
 "                                                      error flags are: o (overflow)\n" \