[PATCH v3 0/2] perf symbol/env: ELF machine clean up and lazy idle computation
From: Ian Rogers
Date: Thu Mar 26 2026 - 13:51:17 EST
Add a helper to perf_env to compute the e_machine if it is
EM_NONE. Derive the value from the arch string if available. Similarly
derive the arch string from the ELF machine if available, for
consistency. This means perf's arch (machine type) is no longer
determined by uname but set to match that of the perf ELF executable.
Switch the idle computation to the point of use and lazily compute it,
rather than computing it for every symbol. The current only user is
`perf top`. At the point of use the perf_env is available and this can
be used to make sure the idle function computation is machine and
kernel version dependent.
v3: Properly set up the e_machine coming from the perf_env as reported
by Honglei Wang.
v2: Some minor white space clean up:
https://lore.kernel.org/lkml/20260325161836.1029457-1-irogers@xxxxxxxxxx/
v1: https://lore.kernel.org/lkml/20260302234343.564937-1-irogers@xxxxxxxxxx/
Ian Rogers (2):
perf env: Add perf_env__e_machine helper and use in perf_env__arch
perf symbol: Lazily compute idle and use the perf_env
tools/perf/builtin-top.c | 6 +-
tools/perf/util/env.c | 179 +++++++++++++++++++++++++++--------
tools/perf/util/env.h | 1 +
tools/perf/util/session.c | 14 +--
tools/perf/util/symbol-elf.c | 2 +-
tools/perf/util/symbol.c | 105 ++++++++++++--------
tools/perf/util/symbol.h | 15 ++-
7 files changed, 235 insertions(+), 87 deletions(-)
--
2.53.0.1018.g2bb0e51243-goog