* [PATCH 0/3] perf intel-pt: 3 more small fixes @ 2021-12-15 8:06 Adrian Hunter 2021-12-15 8:06 ` [PATCH 1/3] perf intel-pt: Fix parsing of VM time correlation arguments Adrian Hunter ` (2 more replies) 0 siblings, 3 replies; 6+ messages in thread From: Adrian Hunter @ 2021-12-15 8:06 UTC (permalink / raw) To: Arnaldo Carvalho de Melo Cc: Jiri Olsa, linux-kernel, Riccardo Mancini, Namhyung Kim Hi Here are 3 more small fixes. Adrian Hunter (3): perf intel-pt: Fix parsing of VM time correlation arguments perf script: Fix CPU filtering of a script's switch events perf scripts python: intel-pt-events.py: Fix printing of switch events tools/perf/builtin-script.c | 2 +- tools/perf/scripts/python/intel-pt-events.py | 23 +++++++++++++---------- tools/perf/util/intel-pt.c | 1 + 3 files changed, 15 insertions(+), 11 deletions(-) Regards Adrian ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 1/3] perf intel-pt: Fix parsing of VM time correlation arguments 2021-12-15 8:06 [PATCH 0/3] perf intel-pt: 3 more small fixes Adrian Hunter @ 2021-12-15 8:06 ` Adrian Hunter 2021-12-15 18:04 ` Namhyung Kim 2021-12-15 8:06 ` [PATCH 2/3] perf script: Fix CPU filtering of a script's switch events Adrian Hunter 2021-12-15 8:06 ` [PATCH 3/3] perf scripts python: intel-pt-events.py: Fix printing of " Adrian Hunter 2 siblings, 1 reply; 6+ messages in thread From: Adrian Hunter @ 2021-12-15 8:06 UTC (permalink / raw) To: Arnaldo Carvalho de Melo Cc: Jiri Olsa, linux-kernel, Riccardo Mancini, Namhyung Kim Parser did not take ':' into account. Example: Before: $ perf record -e intel_pt//u uname Linux [ perf record: Woken up 1 times to write data ] [ perf record: Captured and wrote 0.026 MB perf.data ] $ perf inject -i perf.data --vm-time-correlation="dry-run 123" $ perf inject -i perf.data --vm-time-correlation="dry-run 123:456" Failed to parse VM Time Correlation options 0x620 [0x98]: failed to process type: 70 [Invalid argument] $ After: $ perf inject -i perf.data --vm-time-correlation="dry-run 123:456" $ Fixes: e3ff42bdebcfe ("perf intel-pt: Parse VM Time Correlation options and set up decoding") Cc: stable@vger.kernel.org Signed-off-by: Adrian Hunter <adrian.hunter@intel.com> --- tools/perf/util/intel-pt.c | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/perf/util/intel-pt.c b/tools/perf/util/intel-pt.c index 10c3187e4c5a..e8613cbda331 100644 --- a/tools/perf/util/intel-pt.c +++ b/tools/perf/util/intel-pt.c @@ -3625,6 +3625,7 @@ static int intel_pt_parse_vm_tm_corr_arg(struct intel_pt *pt, char **args) *args = p; return 0; } + p += 1; while (1) { vmcs = strtoull(p, &p, 0); if (errno) -- 2.25.1 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH 1/3] perf intel-pt: Fix parsing of VM time correlation arguments 2021-12-15 8:06 ` [PATCH 1/3] perf intel-pt: Fix parsing of VM time correlation arguments Adrian Hunter @ 2021-12-15 18:04 ` Namhyung Kim 0 siblings, 0 replies; 6+ messages in thread From: Namhyung Kim @ 2021-12-15 18:04 UTC (permalink / raw) To: Adrian Hunter Cc: Arnaldo Carvalho de Melo, Jiri Olsa, linux-kernel, Riccardo Mancini Hi Adrian, On Wed, Dec 15, 2021 at 12:07 AM Adrian Hunter <adrian.hunter@intel.com> wrote: > > Parser did not take ':' into account. > > Example: > > Before: > > $ perf record -e intel_pt//u uname > Linux > [ perf record: Woken up 1 times to write data ] > [ perf record: Captured and wrote 0.026 MB perf.data ] > $ perf inject -i perf.data --vm-time-correlation="dry-run 123" > $ perf inject -i perf.data --vm-time-correlation="dry-run 123:456" > Failed to parse VM Time Correlation options > 0x620 [0x98]: failed to process type: 70 [Invalid argument] > $ > > After: > > $ perf inject -i perf.data --vm-time-correlation="dry-run 123:456" > $ > > Fixes: e3ff42bdebcfe ("perf intel-pt: Parse VM Time Correlation options and set up decoding") > Cc: stable@vger.kernel.org > Signed-off-by: Adrian Hunter <adrian.hunter@intel.com> Acked-by: Namhyung Kim <namhyung@kernel.org> Thanks, Namhyung > --- > tools/perf/util/intel-pt.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/tools/perf/util/intel-pt.c b/tools/perf/util/intel-pt.c > index 10c3187e4c5a..e8613cbda331 100644 > --- a/tools/perf/util/intel-pt.c > +++ b/tools/perf/util/intel-pt.c > @@ -3625,6 +3625,7 @@ static int intel_pt_parse_vm_tm_corr_arg(struct intel_pt *pt, char **args) > *args = p; > return 0; > } > + p += 1; > while (1) { > vmcs = strtoull(p, &p, 0); > if (errno) > -- > 2.25.1 > ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 2/3] perf script: Fix CPU filtering of a script's switch events 2021-12-15 8:06 [PATCH 0/3] perf intel-pt: 3 more small fixes Adrian Hunter 2021-12-15 8:06 ` [PATCH 1/3] perf intel-pt: Fix parsing of VM time correlation arguments Adrian Hunter @ 2021-12-15 8:06 ` Adrian Hunter 2021-12-15 18:05 ` Namhyung Kim 2021-12-15 8:06 ` [PATCH 3/3] perf scripts python: intel-pt-events.py: Fix printing of " Adrian Hunter 2 siblings, 1 reply; 6+ messages in thread From: Adrian Hunter @ 2021-12-15 8:06 UTC (permalink / raw) To: Arnaldo Carvalho de Melo Cc: Jiri Olsa, linux-kernel, Riccardo Mancini, Namhyung Kim CPU filtering was not being applied to a script's switch events. Fixes: 5bf83c29a0ad2 ("perf script: Add scripting operation process_switch()") Cc: stable@vger.kernel.org Signed-off-by: Adrian Hunter <adrian.hunter@intel.com> --- tools/perf/builtin-script.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/perf/builtin-script.c b/tools/perf/builtin-script.c index 9434367af166..c82b033e8942 100644 --- a/tools/perf/builtin-script.c +++ b/tools/perf/builtin-script.c @@ -2473,7 +2473,7 @@ static int process_switch_event(struct perf_tool *tool, if (perf_event__process_switch(tool, event, sample, machine) < 0) return -1; - if (scripting_ops && scripting_ops->process_switch) + if (scripting_ops && scripting_ops->process_switch && !filter_cpu(sample)) scripting_ops->process_switch(event, sample, machine); if (!script->show_switch_events) -- 2.25.1 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH 2/3] perf script: Fix CPU filtering of a script's switch events 2021-12-15 8:06 ` [PATCH 2/3] perf script: Fix CPU filtering of a script's switch events Adrian Hunter @ 2021-12-15 18:05 ` Namhyung Kim 0 siblings, 0 replies; 6+ messages in thread From: Namhyung Kim @ 2021-12-15 18:05 UTC (permalink / raw) To: Adrian Hunter Cc: Arnaldo Carvalho de Melo, Jiri Olsa, linux-kernel, Riccardo Mancini On Wed, Dec 15, 2021 at 12:07 AM Adrian Hunter <adrian.hunter@intel.com> wrote: > > CPU filtering was not being applied to a script's switch events. > > Fixes: 5bf83c29a0ad2 ("perf script: Add scripting operation process_switch()") > Cc: stable@vger.kernel.org > Signed-off-by: Adrian Hunter <adrian.hunter@intel.com> Acked-by: Namhyung Kim <namhyung@kernel.org> Thanks, Namhyung > --- > tools/perf/builtin-script.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/tools/perf/builtin-script.c b/tools/perf/builtin-script.c > index 9434367af166..c82b033e8942 100644 > --- a/tools/perf/builtin-script.c > +++ b/tools/perf/builtin-script.c > @@ -2473,7 +2473,7 @@ static int process_switch_event(struct perf_tool *tool, > if (perf_event__process_switch(tool, event, sample, machine) < 0) > return -1; > > - if (scripting_ops && scripting_ops->process_switch) > + if (scripting_ops && scripting_ops->process_switch && !filter_cpu(sample)) > scripting_ops->process_switch(event, sample, machine); > > if (!script->show_switch_events) > -- > 2.25.1 > ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 3/3] perf scripts python: intel-pt-events.py: Fix printing of switch events 2021-12-15 8:06 [PATCH 0/3] perf intel-pt: 3 more small fixes Adrian Hunter 2021-12-15 8:06 ` [PATCH 1/3] perf intel-pt: Fix parsing of VM time correlation arguments Adrian Hunter 2021-12-15 8:06 ` [PATCH 2/3] perf script: Fix CPU filtering of a script's switch events Adrian Hunter @ 2021-12-15 8:06 ` Adrian Hunter 2 siblings, 0 replies; 6+ messages in thread From: Adrian Hunter @ 2021-12-15 8:06 UTC (permalink / raw) To: Arnaldo Carvalho de Melo Cc: Jiri Olsa, linux-kernel, Riccardo Mancini, Namhyung Kim The intel-pt-events.py script displays only the last of consecutive switch statements but that may not be the last switch event for the CPU. Fix by keeping a dictionary of last context switch keyed by CPU, and make it possible to see all switch events by adding option --all-switch-events. Fixes: a92bf335fd82e ("perf scripts python: intel-pt-events.py: Add branches to script") Cc: stable@vger.kernel.org Signed-off-by: Adrian Hunter <adrian.hunter@intel.com> --- tools/perf/scripts/python/intel-pt-events.py | 23 +++++++++++--------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/tools/perf/scripts/python/intel-pt-events.py b/tools/perf/scripts/python/intel-pt-events.py index 1d3a189a9a54..66452a8ec358 100644 --- a/tools/perf/scripts/python/intel-pt-events.py +++ b/tools/perf/scripts/python/intel-pt-events.py @@ -32,8 +32,7 @@ try: except: broken_pipe_exception = IOError -glb_switch_str = None -glb_switch_printed = True +glb_switch_str = {} glb_insn = False glb_disassembler = None glb_src = False @@ -70,6 +69,7 @@ def trace_begin(): ap = argparse.ArgumentParser(usage = "", add_help = False) ap.add_argument("--insn-trace", action='store_true') ap.add_argument("--src-trace", action='store_true') + ap.add_argument("--all-switch-events", action='store_true') global glb_args global glb_insn global glb_src @@ -256,10 +256,6 @@ def print_srccode(comm, param_dict, sample, symbol, dso, with_insn): print(start_str, src_str) def do_process_event(param_dict): - global glb_switch_printed - if not glb_switch_printed: - print(glb_switch_str) - glb_switch_printed = True event_attr = param_dict["attr"] sample = param_dict["sample"] raw_buf = param_dict["raw_buf"] @@ -274,6 +270,11 @@ def do_process_event(param_dict): dso = get_optional(param_dict, "dso") symbol = get_optional(param_dict, "symbol") + cpu = sample["cpu"] + if cpu in glb_switch_str: + print(glb_switch_str[cpu]) + del glb_switch_str[cpu] + if name[0:12] == "instructions": if glb_src: print_srccode(comm, param_dict, sample, symbol, dso, True) @@ -336,8 +337,6 @@ def auxtrace_error(typ, code, cpu, pid, tid, ip, ts, msg, cpumode, *x): sys.exit(1) def context_switch(ts, cpu, pid, tid, np_pid, np_tid, machine_pid, out, out_preempt, *x): - global glb_switch_printed - global glb_switch_str if out: out_str = "Switch out " else: @@ -350,6 +349,10 @@ def context_switch(ts, cpu, pid, tid, np_pid, np_tid, machine_pid, out, out_pree machine_str = "" else: machine_str = "machine PID %d" % machine_pid - glb_switch_str = "%16s %5d/%-5d [%03u] %9u.%09u %5d/%-5d %s %s" % \ + switch_str = "%16s %5d/%-5d [%03u] %9u.%09u %5d/%-5d %s %s" % \ (out_str, pid, tid, cpu, ts / 1000000000, ts %1000000000, np_pid, np_tid, machine_str, preempt_str) - glb_switch_printed = False + if glb_args.all_switch_events: + print(switch_str); + else: + global glb_switch_str + glb_switch_str[cpu] = switch_str -- 2.25.1 ^ permalink raw reply related [flat|nested] 6+ messages in thread
end of thread, other threads:[~2021-12-15 18:05 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2021-12-15 8:06 [PATCH 0/3] perf intel-pt: 3 more small fixes Adrian Hunter 2021-12-15 8:06 ` [PATCH 1/3] perf intel-pt: Fix parsing of VM time correlation arguments Adrian Hunter 2021-12-15 18:04 ` Namhyung Kim 2021-12-15 8:06 ` [PATCH 2/3] perf script: Fix CPU filtering of a script's switch events Adrian Hunter 2021-12-15 18:05 ` Namhyung Kim 2021-12-15 8:06 ` [PATCH 3/3] perf scripts python: intel-pt-events.py: Fix printing of " Adrian Hunter
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).