diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2022-01-02 14:09:03 -0800 | 
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2022-01-02 14:09:03 -0800 | 
| commit | 24a0b2206134e17ec99d212c776f08f75a4bec23 (patch) | |
| tree | 4c4d4b6760d92c688e3db2baf671b5c9a0c74c6c /tools/perf/scripts/python/intel-pt-events.py | |
| parent | 859431ac11aef9b4cd7ffa75e94a92a6a41c8623 (diff) | |
| parent | 64f18d2d043015b3f835ce4c9f3beb97cfd19b6e (diff) | |
Merge tag 'perf-tools-fixes-for-v5.16-2022-01-02' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux
Pull perf tools fixes from Arnaldo Carvalho de Melo:
 - Fix TUI exit screen refresh race condition in 'perf top'.
 - Fix parsing of Intel PT VM time correlation arguments.
 - Honour CPU filtering command line request of a script's switch events
   in 'perf script'.
 - Fix printing of switch events in Intel PT python script.
 - Fix duplicate alias events list printing in 'perf list', noticed on
   heterogeneous arm64 systems.
 - Fix return value of ids__new(), users expect NULL for failure, not
   ERR_PTR(-ENOMEM).
* tag 'perf-tools-fixes-for-v5.16-2022-01-02' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux:
  perf top: Fix TUI exit screen refresh race condition
  perf pmu: Fix alias events list
  perf scripts python: intel-pt-events.py: Fix printing of switch events
  perf script: Fix CPU filtering of a script's switch events
  perf intel-pt: Fix parsing of VM time correlation arguments
  perf expr: Fix return value of ids__new()
Diffstat (limited to 'tools/perf/scripts/python/intel-pt-events.py')
| -rw-r--r-- | tools/perf/scripts/python/intel-pt-events.py | 23 | 
1 files 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 | 
