[GIT PULL] perf tools changes for v5.9
From: Arnaldo Carvalho de Melo
Date: Mon Aug 10 2020 - 12:16:33 EST
Hi Linus,
Please consider pulling,
Best regards,
- Arnaldo
The following changes since commit 47ec5303d73ea344e84f46660fff693c57641386:
Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next (2020-08-05 20:13:21 -0700)
are available in the Git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-tools-2020-08-10
for you to fetch changes up to 1101c872c8c7869c78dc106ae820040f36807eda:
perf record: Skip side-band event setup if HAVE_LIBBPF_SUPPORT is not set (2020-08-07 09:27:03 -0300)
----------------------------------------------------------------
perf tools changes for v5.9
New features:
- Introduce controlling how 'perf stat' and 'perf record' works via a
control file descriptor, allowing starting with events configured but
disabled until commands are received via the control file descriptor.
This allows, for instance for tools such as Intel VTune to make further
use of perf as its Linux platform driver.
- Improve 'perf record' to to register in a perf.data file header the clockid
used to help later correlate things like syslog files and perf events
recorded.
- Add basic syscall and find_next_bit benchmarks to 'perf bench'.
- Allow using computed metrics in calculating other metrics. For instance:
{
.metric_expr = "l2_rqsts.demand_data_rd_hit + l2_rqsts.pf_hit + l2_rqsts.rfo_hit",
.metric_name = "DCache_L2_All_Hits",
},
{
.metric_expr = "max(l2_rqsts.all_demand_data_rd - l2_rqsts.demand_data_rd_hit, 0) + l2_rqsts.pf_miss + l2_rqsts.rfo_miss",
.metric_name = "DCache_L2_All_Miss",
},
{
.metric_expr = "dcache_l2_all_hits + dcache_l2_all_miss",
.metric_name = "DCache_L2_All",
}
- Add suport for 'd_ratio', '>' and '<' operators to the expression resolver used
in calculating metrics in 'perf stat'.
Support for new kernel features:
- Support TEXT_POKE and KSYMBOL_TYPE_OOL perf metadata events to cope with
things like ftrace, trampolines, i.e. changes in the kernel text that gets
in the way of properly decoding Intel PT hardware traces, for instance.
Intel PT:
- Add various knobs to reduce the volume of Intel PT traces by reducing the
level of details such as decoding just some types of packets (e.g., FUP/TIP,
PSB+), also filtering by time range.
- Add new itrace options (log flags to the 'd' option, error flags to the 'e'
one, etc), controlling how Intel PT is transformed into perf events, document
some missing options (e.g., how to synthesize callchains).
BPF:
- Properly report BPF errors when parsing events.
- Do not setup side-band events if LIBBPF is not linked, fixing a segfault.
Libraries:
- Improvements on the libtraceevent plugin mechanism.
- Improve libtracevent support for KVM trace events SVM exit reasons.
- Add a libtracevent plugins for decoding syscalls/sys_enter_futex and for tlb_flush.
- Ensure sample_period is set libpfm4 events in 'perf test'.
- Fixup libperf namespacing, to make sure what is in libperf has the perf_
namespace while what is now only in tools/perf/ doesn't use that prefix.
Arch specific:
- Improve the testing of vendor events and metrics in 'perf test'.
- Allow no ARM CoreSight hardware tracer sink to be specified on command line.
- Fix arm_spe_x recording when mixed with other perf events.
- Add s390 idle functions 'psw_idle' and 'psw_idle_exit' to list of idle symbols.
- List kernel supplied event aliases for arm64 in 'perf list'.
- Add support for extended register capability in PowerPC 9 and 10.
- Added nest IMC power9 metric events.
Miscellaneous:
- No need to setup sample_regs_intr/sample_regs_user for dummy events.
- Update various copies of kernel headers, some causing perf to handle new
syscalls, MSRs, etc.
- Improve usage of flex and yacc, enabling warnings and addressing the fallout.
- Add missing '--output' option to 'perf kmem' so that it can pass it along to 'perf record'.
- 'perf probe' fixes related to adding multiple probes on the same address for
the same event.
- Make 'perf probe' warn if the target function is a GNU indirect function.
- Remove //anon mmap events from 'perf inject jit' to fix supporting both using
ELF files for generated functions and the perf-PID.map approaches.
Adrian Hunter (17):
perf tools: Add support for PERF_RECORD_TEXT_POKE
perf tools: Add support for PERF_RECORD_KSYMBOL_TYPE_OOL
perf intel-pt: Add support for text poke events
perf script: Add option --show-text-poke-events
perf script: Show text poke address symbol
perf intel-pt: Fix FUP packet state
perf intel-pt: Fix duplicate branch after CBR
perf tools: Improve aux_output not supported error
perf auxtrace: Add missing itrace options to help text
perf auxtrace: Add optional error flags to the itrace 'e' option
perf intel-pt: Use itrace error flags to suppress some errors
perf auxtrace: Add optional log flags to the itrace 'd' option
perf intel-pt: Use itrace debug log flags to suppress some messages
perf intel-pt: Time filter logged perf events
perf auxtrace: Add itrace 'q' option for quicker, less detailed decoding
perf intel-pt: Add support for decoding FUP/TIP only
perf intel-pt: Add support for decoding PSB+ only
Alexey Budankov (16):
libperf: Avoid internal moving of fdarray fds
libperf: Add flags to fdarray fds objects
libperf: Avoid counting of nonfilterable fdarray fds
perf evlist: Introduce control file descriptors
perf evlist: Implement control command handling functions
perf stat: Factor out body of event handling loop for system wide
perf stat: Move target check to loop control statement
perf stat: Factor out body of event handling loop for fork case
perf stat: Factor out event handling loop into dispatch_events()
perf stat: extend -D,--delay option with -1 value
perf stat: Implement control commands handling
perf stat: Introduce --control fd:ctl-fd[,ack-fd] options
perf record: Extend -D,--delay option with -1 value
perf record: Implement control commands handling
perf record: Introduce --control fd:ctl-fd[,ack-fd] options
perf evsel: Extend message to mention CAP_SYS_PTRACE and perf security doc link
Anju T Sudhakar (1):
perf tools powerpc: Add support for extended register capability
Arnaldo Carvalho de Melo (17):
perf parse: Provide a way to pass a fake_pmu to parse_events()
perf pmu: Add a perf_pmu__fake object to use with __parse_events()
perf script: Fixup some evsel/evlist method names
perf evlist: Fix the class prefix for 'struct evlist' 'add' evsel methods
perf evlist: Fix the class prefix for 'struct evlist' strerror methods
perf evlist: Fix the class prefix for 'struct evlist' sample_type methods
perf evlist: Fix the class prefix for 'struct evlist' sample_id_all methods
perf evlist: Fix the class prefix for 'struct evlist' branch_type methods
perf expr: Add missing headers noticed when building with NO_LIBBPF=1
Merge remote-tracking branch 'torvalds/master' into perf/core
Merge remote-tracking branch 'torvalds/master' into perf/core
Mgerge remote-tracking branch 'torvalds/master' into perf/core
tools headers API: Update close_range affected files
tools headers UAPI: update linux/in.h copy
tools arch x86: Sync the msr-index.h copy with the kernel sources
tools arch x86: Sync asm/cpufeatures.h with the kernel sources
tools headers UAPI: Sync drm/i915_drm.h with the kernel sources
Athira Rajeev (1):
perf tools powerpc: Add support for extended regs in power10
Davidlohr Bueso (1):
perf bench: Add basic syscall benchmark
Ian Rogers (14):
perf expr: Add d_ratio operation
perf expr: Add < and > operators
perf parse-events: Use automatic variable for flex input
perf parse-events: Use automatic variable for yacc input
perf pmu: Add bison debug build flag
perf pmu: Add flex debug build flag
perf parse-events: Declare flex header file output
perf parse-events: Declare bison header file output
perf parse-events: Disable a subset of flex warnings
perf parse-events: Disable a subset of bison warnings
perf parse-events: Report BPF errors
perf kmem: Pass additional arguments to 'perf record'
perf test: Ensure sample_period is set libpfm4 events
perf bench: Add benchmark of find_next_bit
Jan Kiszka (2):
tools lib traceevent: Add more SVM exit reasons
tools lib traceevent: Fix reporting of unknown SVM exit reasons
Jason Yan (1):
perf annotate: Remove unneeded conversion to bool
Jin Yao (2):
perf evsel: Don't set sample_regs_intr/sample_regs_user for dummy event
perf record: Skip side-band event setup if HAVE_LIBBPF_SUPPORT is not set
Jiri Olsa (42):
perf tools: Add fake pmu support
perf tests: Factor check_parse_id function
perf tests: Add another metric parsing test
perf parse: Factor out parse_groups() function
perf tools: Add fake_pmu to parse_group() function
perf tools: Add map to parse_groups() function
perf tools: Add metricgroup__parse_groups_test function
perf tools: Factor out prepare_metric function
perf tools: Release metric_events rblist
perf tools: Add test_generic_metric function
perf tests: Add parse metric test for ipc metric
perf tests: Add parse metric test for frontend metric
perf metric: Rename expr__add_id() to expr__add_val()
perf metric: Add 'struct expr_id_data' to keep expr value
perf tools: Allow r0x<HEX> event syntax
perf tools: Fix term parsing for raw syntax
perf metric: Fix memory leak in expr__add_id function
perf metric: Add expr__add_id function
perf metric: Change expr__get_id to return struct expr_id_data
perf metric: Add expr__del_id function
perf metric: Add macros for iterating map events
perf metric: Add add_metric function
perf metric: Rename __metricgroup__add_metric to __add_metric
perf metric: Collect referenced metrics in struct metric_ref_node
perf metric: Collect referenced metrics in struct metric_expr
perf metric: Add referenced metrics to hash data
perf metric: Compute referenced metrics
perf metric: Add events for the current list
perf metric: Add cache_miss_cycles to metric parse test
perf metric: Add DCache_L2 to metric parse test
perf metric: Add recursion check when processing nested metrics
perf metric: Make compute_single function more precise
perf metric: Add metric group test
perf metric: Rename struct egroup to metric
perf metric: Rename group_list to metric_list
perf clockid: Move parse_clockid() to new clockid object
perf tools: Add clockid_name function
perf header: Store clock references for -k/--clockid option
perf tools: Move clockid_res_ns under clock struct
perf data: Add support to store time of day in CTF data conversion
perf script: Change the 'enum perf_output_field' enumerators to be 64 bits
perf script: Add 'tod' field to display time of day
John Garry (2):
perf pmu: List kernel supplied event aliases for arm64
perf pmu: Improve CPU core PMU HW event list ordering
Julia Cartwright (1):
tools lib traceevent: Add plugin for decoding syscalls/sys_enter_futex
Kajol Jain (1):
perf vendor events power9: Added nest imc metric events
Masami Hiramatsu (4):
perf probe: Avoid setting probes on the same address for the same event
perf probe: Fix wrong variable warning when the probe point is not found
perf probe: Fix memory leakage when the probe point is not found
perf probe: Warn if the target function is a GNU indirect function
Mike Leach (1):
perf cs-etm: Allow no CoreSight sink to be specified on command line
Numfor Mbiziwo-Tiapo (1):
perf annotate: Fix non-null terminated buffer returned by readlink()
Steve MacLean (1):
perf inject jit: Remove //anon mmap events
Steven Rostedt (Red Hat) (1):
tools lib traceevent: Add plugin for tlb_flush
Steven Rostedt (VMware) (3):
tools lib traceevent: Add offset option for function plugin
tools lib traceevent: Add builtin handler for trace_marker_raw
tools lib traceevent: Change to SPDX License format
Sven Schnelle (1):
perf symbols: Add s390 idle functions 'psw_idle' and 'psw_idle_exit' to list of idle symbols
Thomas Hebb (1):
tools build feature: Use CC and CXX from parent
Tzvetomir Stoyanov (VMware) (14):
tools lib traceevent: Add tep_load_plugins_hook() API
tools lib traceevent: Add interface for options to plugins
tools lib traceevent: Introduced new traceevent API, for adding new plugins directories.
tools lib traceevent: Add support for more printk format specifiers
tools lib traceevent: Optimize pretty_print() function
tools lib traceevent: Move kernel_stack event handler to "function" plugin.
libtraceevent: Document tep_load_plugins_hook()
libtraceevent: Handle strdup() error in parse_option_name()
libtraceevent: Fix typo in tep_plugin_add_option() description
libtraceevent: Improve error handling of tep_plugin_add_option() API
libtraceevent: Fixed broken indentation in parse_ip4_print_args()
libtraceevent: Fixed type in PRINT_FMT_STING
libtraceevent: Fixed description of tep_add_plugin_path() API
tools lib traceevent: Handle possible strdup() error in tep_add_plugin_path() API
Wei Li (2):
perf tools: Fix record failure when mixed with ARM SPE event
perf tools: No need to cache the PMUs in ARM SPE auxtrace init routine
tools/arch/powerpc/include/uapi/asm/perf_regs.h | 20 +-
tools/arch/x86/include/asm/cpufeatures.h | 4 +
tools/arch/x86/include/asm/msr-index.h | 26 +-
tools/build/Makefile.feature | 2 +-
tools/build/feature/Makefile | 2 -
tools/include/uapi/asm-generic/unistd.h | 2 +
tools/include/uapi/drm/i915_drm.h | 4 +-
tools/include/uapi/linux/in.h | 1 +
tools/include/uapi/linux/perf_event.h | 26 +-
tools/lib/api/fd/array.c | 23 +-
tools/lib/api/fd/array.h | 16 +-
tools/lib/perf/evlist.c | 6 +-
tools/lib/perf/include/internal/evlist.h | 2 +-
tools/lib/perf/include/perf/event.h | 9 +
.../Documentation/libtraceevent-plugins.txt | 25 +-
tools/lib/traceevent/event-parse-local.h | 22 +-
tools/lib/traceevent/event-parse.c | 1004 +++++++++++++++-----
tools/lib/traceevent/event-parse.h | 34 +-
tools/lib/traceevent/event-plugin.c | 285 +++++-
tools/lib/traceevent/kbuffer.h | 17 +-
tools/lib/traceevent/plugins/Build | 2 +
tools/lib/traceevent/plugins/Makefile | 2 +
tools/lib/traceevent/plugins/plugin_function.c | 123 ++-
tools/lib/traceevent/plugins/plugin_futex.c | 123 +++
tools/lib/traceevent/plugins/plugin_hrtimer.c | 17 +-
tools/lib/traceevent/plugins/plugin_jbd2.c | 17 +-
tools/lib/traceevent/plugins/plugin_kmem.c | 17 +-
tools/lib/traceevent/plugins/plugin_kvm.c | 42 +-
tools/lib/traceevent/plugins/plugin_mac80211.c | 17 +-
tools/lib/traceevent/plugins/plugin_sched_switch.c | 17 +-
tools/lib/traceevent/plugins/plugin_tlb.c | 66 ++
tools/perf/Documentation/itrace.txt | 14 +
tools/perf/Documentation/perf-bench.txt | 11 +
tools/perf/Documentation/perf-data.txt | 3 +
tools/perf/Documentation/perf-intel-pt.txt | 63 +-
tools/perf/Documentation/perf-list.txt | 1 +
tools/perf/Documentation/perf-record.txt | 44 +-
tools/perf/Documentation/perf-script.txt | 4 +
tools/perf/Documentation/perf-stat.txt | 44 +-
tools/perf/Documentation/perf.data-file-format.txt | 13 +
tools/perf/arch/arm/util/auxtrace.c | 9 +-
tools/perf/arch/arm/util/cs-etm.c | 6 +-
tools/perf/arch/powerpc/include/perf_regs.h | 8 +-
tools/perf/arch/powerpc/util/header.c | 9 +-
tools/perf/arch/powerpc/util/perf_regs.c | 55 ++
tools/perf/arch/powerpc/util/utils_header.h | 15 +
tools/perf/arch/x86/entry/syscalls/syscall_64.tbl | 1 +
tools/perf/arch/x86/util/intel-pt.c | 4 +
tools/perf/bench/Build | 2 +
tools/perf/bench/bench.h | 2 +
tools/perf/bench/find-bit-bench.c | 135 +++
tools/perf/bench/syscall.c | 81 ++
tools/perf/builtin-bench.c | 9 +
tools/perf/builtin-c2c.c | 2 +-
tools/perf/builtin-data.c | 1 +
tools/perf/builtin-inject.c | 4 +-
tools/perf/builtin-kmem.c | 3 +-
tools/perf/builtin-kvm.c | 2 +-
tools/perf/builtin-record.c | 265 +++---
tools/perf/builtin-report.c | 9 +-
tools/perf/builtin-script.c | 233 +++--
tools/perf/builtin-stat.c | 200 +++-
tools/perf/builtin-top.c | 2 +-
tools/perf/builtin-trace.c | 9 +-
.../arch/powerpc/power9/nest_metrics.json | 35 +
tools/perf/tests/Build | 1 +
tools/perf/tests/attr/README | 1 +
tools/perf/tests/attr/test-record-pfm-period | 9 +
tools/perf/tests/builtin-test.c | 4 +
tools/perf/tests/code-reading.c | 2 +-
tools/perf/tests/expr.c | 15 +-
tools/perf/tests/fdarray.c | 22 +-
tools/perf/tests/parse-events.c | 42 +-
tools/perf/tests/parse-metric.c | 352 +++++++
tools/perf/tests/perf-record.c | 4 +-
tools/perf/tests/pmu-events.c | 133 ++-
tools/perf/tests/tests.h | 1 +
tools/perf/ui/browsers/annotate.c | 2 +-
tools/perf/util/Build | 63 +-
tools/perf/util/annotate.c | 15 +-
tools/perf/util/auxtrace.c | 50 +
tools/perf/util/auxtrace.h | 31 +-
tools/perf/util/clockid.c | 119 +++
tools/perf/util/clockid.h | 11 +
tools/perf/util/data-convert-bt.c | 57 +-
tools/perf/util/data-convert.h | 1 +
tools/perf/util/dso.c | 3 +
tools/perf/util/dso.h | 1 +
tools/perf/util/env.h | 14 +-
tools/perf/util/event.c | 60 +-
tools/perf/util/event.h | 7 +-
tools/perf/util/evlist.c | 183 +++-
tools/perf/util/evlist.h | 59 +-
tools/perf/util/evsel.c | 23 +-
tools/perf/util/expr.c | 156 ++-
tools/perf/util/expr.h | 34 +-
tools/perf/util/expr.l | 3 +
tools/perf/util/expr.y | 33 +-
tools/perf/util/header.c | 121 ++-
tools/perf/util/header.h | 1 +
.../perf/util/intel-pt-decoder/intel-pt-decoder.c | 214 ++++-
.../perf/util/intel-pt-decoder/intel-pt-decoder.h | 1 +
tools/perf/util/intel-pt.c | 122 ++-
tools/perf/util/jitdump.c | 31 +-
tools/perf/util/machine.c | 49 +
tools/perf/util/machine.h | 3 +
tools/perf/util/map.c | 5 +
tools/perf/util/map.h | 3 +-
tools/perf/util/metricgroup.c | 549 +++++++++--
tools/perf/util/metricgroup.h | 16 +
tools/perf/util/parse-events.c | 87 +-
tools/perf/util/parse-events.h | 16 +-
tools/perf/util/parse-events.l | 28 +-
tools/perf/util/parse-events.y | 41 +-
tools/perf/util/perf_api_probe.c | 10 +
tools/perf/util/perf_api_probe.h | 1 +
tools/perf/util/perf_event_attr_fprintf.c | 1 +
tools/perf/util/pmu.c | 11 +-
tools/perf/util/pmu.h | 2 +
tools/perf/util/probe-event.c | 18 +-
tools/perf/util/probe-finder.c | 5 +-
tools/perf/util/record.h | 5 +-
tools/perf/util/session.c | 39 +-
tools/perf/util/stat-shadow.c | 81 +-
tools/perf/util/stat.h | 7 +-
tools/perf/util/symbol.c | 3 +
tools/perf/util/tool.h | 3 +-
127 files changed, 5164 insertions(+), 1091 deletions(-)
create mode 100644 tools/lib/traceevent/plugins/plugin_futex.c
create mode 100644 tools/lib/traceevent/plugins/plugin_tlb.c
create mode 100644 tools/perf/arch/powerpc/util/utils_header.h
create mode 100644 tools/perf/bench/find-bit-bench.c
create mode 100644 tools/perf/bench/syscall.c
create mode 100644 tools/perf/tests/attr/test-record-pfm-period
create mode 100644 tools/perf/tests/parse-metric.c
create mode 100644 tools/perf/util/clockid.c
create mode 100644 tools/perf/util/clockid.h