tools/perf/builtin-record.c | 81 ++++++++++---------------------- tools/perf/builtin-top.c | 46 +++++++++++------- tools/perf/builtin-trace.c | 9 +++- tools/perf/tests/event_update.c | 4 +- tools/perf/tests/expand-cgroup.c | 4 +- tools/perf/tests/perf-record.c | 7 ++- tools/perf/tests/topology.c | 4 +- tools/perf/util/callchain.c | 73 +++++++++++++++++++++++----- tools/perf/util/callchain.h | 12 ++--- tools/perf/util/evlist.c | 32 ++++++++----- tools/perf/util/evlist.h | 2 +- tools/perf/util/evsel.c | 70 +++++++++++++++++---------- tools/perf/util/evsel.h | 10 ++-- tools/perf/util/target.h | 12 ++--- 14 files changed, 219 insertions(+), 147 deletions(-)
Discussion with Thomas Richter in:
https://lore.kernel.org/lkml/20260306071002.2526085-1-tmricht@linux.ibm.com/
showed that the evsel__fallback wasn't working for s390. These patches
avoid the problematic frame pointer callchain on s390 and fix
evsel__fallback from a range of problems when falling back to a
software event. I simulated failures when developing the patches but
they are untested other than that.
v8: Address sashiko review that target wasn't fully initialized for
`perf record` with '-u'. Ensure the callchain is enabled with '-g'
and a .perfconfig setting. This don't impact testing so keeping
Thomas' tested-by tags.
https://sashiko.dev/#/patchset/20260318175808.582009-1-irogers%40google.com
v7: In perf top, move the target uid handling back to after the evlist
is setup. A regression caught by Sashiko in:
https://sashiko.dev/#/patchset/20260317175642.161647-1-irogers%40google.com
https://lore.kernel.org/lkml/20260318175808.582009-1-irogers@google.com/
v6: Sashiko noted that target wasn't fully set up when creating the
default evlist in `perf top`, so move it earlier. Fix const char*
casting issues in __parse_callchain_report_opt. Make '-g' not
override the .perfconfig setting again.
https://sashiko.dev/#/patchset/20260317055334.760347-1-irogers%40google.com
https://lore.kernel.org/lkml/20260317175642.161647-1-irogers@google.com/
v5: Fix the value for the top option to match that of record. Tidy the
callchain parsing option callbacks. Based on AI review feedback:
https://sashiko.dev/#/patchset/20260317030601.567422-1-irogers%40google.com
https://lore.kernel.org/lkml/20260317055334.760347-1-irogers@google.com/
v4: Changing the callchain parameter at configuration time means other
options aren't set the same as they would for `--call-graph
dwarf`, for example the stack size. Switch to setting the
callchain option on s390 to parameter parse time. For '-g' use
'--call-graph dwarf' for s390. Other --call-graph options are
parsed as normal, but a warning is generated when setting
`--call-graph fp` for s390. Also fix that sample IDs aren't wanted
when there is only 1 event in the evlist.
https://lore.kernel.org/lkml/20260317030601.567422-1-irogers@google.com/
v3: Incorporate feedback about event and callchain behavior for s390:
https://lore.kernel.org/lkml/20260312061628.1593105-1-irogers@google.com/
https://lore.kernel.org/lkml/20260313202811.2599195-1-irogers@google.com/
v2: try exclude_callchain_user for s390 rather than fully disabling
the callchain. Fix a missed clearing of is_pmu_core if the
software event fallback.
https://lore.kernel.org/lkml/20260312061628.1593105-1-irogers@google.com/
v1: https://lore.kernel.org/lkml/20260312031928.1494864-1-irogers@google.com/
Ian Rogers (5):
perf evsel: Improve falling back from cycles
perf target: Constify simple check functions
perf evsel: Constify option arguments to config functions
perf callchain: Refactor callchain option parsing
perf evlist: Improve default event for s390
tools/perf/builtin-record.c | 81 ++++++++++----------------------
tools/perf/builtin-top.c | 46 +++++++++++-------
tools/perf/builtin-trace.c | 9 +++-
tools/perf/tests/event_update.c | 4 +-
tools/perf/tests/expand-cgroup.c | 4 +-
tools/perf/tests/perf-record.c | 7 ++-
tools/perf/tests/topology.c | 4 +-
tools/perf/util/callchain.c | 73 +++++++++++++++++++++++-----
tools/perf/util/callchain.h | 12 ++---
tools/perf/util/evlist.c | 32 ++++++++-----
tools/perf/util/evlist.h | 2 +-
tools/perf/util/evsel.c | 70 +++++++++++++++++----------
tools/perf/util/evsel.h | 10 ++--
tools/perf/util/target.h | 12 ++---
14 files changed, 219 insertions(+), 147 deletions(-)
--
2.53.0.851.ga537e3e6e9-goog
On Wed, Mar 18, 2026 at 4:46 PM Ian Rogers <irogers@google.com> wrote: > > Discussion with Thomas Richter in: > https://lore.kernel.org/lkml/20260306071002.2526085-1-tmricht@linux.ibm.com/ > showed that the evsel__fallback wasn't working for s390. These patches > avoid the problematic frame pointer callchain on s390 and fix > evsel__fallback from a range of problems when falling back to a > software event. I simulated failures when developing the patches but > they are untested other than that. I think at this point I call it a day. Sashiko still has feedback that could justify a v9: https://sashiko.dev/#/patchset/20260318234600.730340-1-irogers%40google.com Specifically: 1) software PMUs may fail if sysfs isn't mounted. This isn't a real problem as "software" is a "well known" PMU that we create even if sysfs isn't mounted. 2) the handling of callchain in .perfconfig files isn't right, but the patches aren't making it any worse. I worry there could be several more patches if I start fixing things wrong with .perfconfig. 3) the possibility to add another NULL check for safety exists, but the code would already crash at the same point. Apparently, the tendency of prompts to generate further refinements instead of providing all the problems at once is a known limitation of LLMs and the current prompting methods. Thanks, Ian > v8: Address sashiko review that target wasn't fully initialized for > `perf record` with '-u'. Ensure the callchain is enabled with '-g' > and a .perfconfig setting. This don't impact testing so keeping > Thomas' tested-by tags. > https://sashiko.dev/#/patchset/20260318175808.582009-1-irogers%40google.com > > v7: In perf top, move the target uid handling back to after the evlist > is setup. A regression caught by Sashiko in: > https://sashiko.dev/#/patchset/20260317175642.161647-1-irogers%40google.com > https://lore.kernel.org/lkml/20260318175808.582009-1-irogers@google.com/ > > v6: Sashiko noted that target wasn't fully set up when creating the > default evlist in `perf top`, so move it earlier. Fix const char* > casting issues in __parse_callchain_report_opt. Make '-g' not > override the .perfconfig setting again. > https://sashiko.dev/#/patchset/20260317055334.760347-1-irogers%40google.com > https://lore.kernel.org/lkml/20260317175642.161647-1-irogers@google.com/ > > v5: Fix the value for the top option to match that of record. Tidy the > callchain parsing option callbacks. Based on AI review feedback: > https://sashiko.dev/#/patchset/20260317030601.567422-1-irogers%40google.com > https://lore.kernel.org/lkml/20260317055334.760347-1-irogers@google.com/ > > v4: Changing the callchain parameter at configuration time means other > options aren't set the same as they would for `--call-graph > dwarf`, for example the stack size. Switch to setting the > callchain option on s390 to parameter parse time. For '-g' use > '--call-graph dwarf' for s390. Other --call-graph options are > parsed as normal, but a warning is generated when setting > `--call-graph fp` for s390. Also fix that sample IDs aren't wanted > when there is only 1 event in the evlist. > https://lore.kernel.org/lkml/20260317030601.567422-1-irogers@google.com/ > > v3: Incorporate feedback about event and callchain behavior for s390: > https://lore.kernel.org/lkml/20260312061628.1593105-1-irogers@google.com/ > https://lore.kernel.org/lkml/20260313202811.2599195-1-irogers@google.com/ > > v2: try exclude_callchain_user for s390 rather than fully disabling > the callchain. Fix a missed clearing of is_pmu_core if the > software event fallback. > https://lore.kernel.org/lkml/20260312061628.1593105-1-irogers@google.com/ > > v1: https://lore.kernel.org/lkml/20260312031928.1494864-1-irogers@google.com/ > > Ian Rogers (5): > perf evsel: Improve falling back from cycles > perf target: Constify simple check functions > perf evsel: Constify option arguments to config functions > perf callchain: Refactor callchain option parsing > perf evlist: Improve default event for s390 > > tools/perf/builtin-record.c | 81 ++++++++++---------------------- > tools/perf/builtin-top.c | 46 +++++++++++------- > tools/perf/builtin-trace.c | 9 +++- > tools/perf/tests/event_update.c | 4 +- > tools/perf/tests/expand-cgroup.c | 4 +- > tools/perf/tests/perf-record.c | 7 ++- > tools/perf/tests/topology.c | 4 +- > tools/perf/util/callchain.c | 73 +++++++++++++++++++++++----- > tools/perf/util/callchain.h | 12 ++--- > tools/perf/util/evlist.c | 32 ++++++++----- > tools/perf/util/evlist.h | 2 +- > tools/perf/util/evsel.c | 70 +++++++++++++++++---------- > tools/perf/util/evsel.h | 10 ++-- > tools/perf/util/target.h | 12 ++--- > 14 files changed, 219 insertions(+), 147 deletions(-) > > -- > 2.53.0.851.ga537e3e6e9-goog >
On 3/19/26 06:39, Ian Rogers wrote: > On Wed, Mar 18, 2026 at 4:46 PM Ian Rogers <irogers@google.com> wrote: >> >> Discussion with Thomas Richter in: >> https://lore.kernel.org/lkml/20260306071002.2526085-1-tmricht@linux.ibm.com/ >> showed that the evsel__fallback wasn't working for s390. These patches >> avoid the problematic frame pointer callchain on s390 and fix >> evsel__fallback from a range of problems when falling back to a >> software event. I simulated failures when developing the patches but >> they are untested other than that. > > I think at this point I call it a day. Sashiko still has feedback that > could justify a v9: > https://sashiko.dev/#/patchset/20260318234600.730340-1-irogers%40google.com > Specifically: > 1) software PMUs may fail if sysfs isn't mounted. This isn't a real > problem as "software" is a "well known" PMU that we create even if > sysfs isn't mounted. I totally agree with you. Patch set 8 should be it. Honestly, if /sys (of sysfs) is not mounted, I guess perf tool is the least of the issues that arise. I believe this is now getting 'over-engineered'. > 2) the handling of callchain in .perfconfig files isn't right, but the > patches aren't making it any worse. I worry there could be several > more patches if I start fixing things wrong with .perfconfig. Correct, you can not fix everything in one patch set :-) > 3) the possibility to add another NULL check for safety exists, but > the code would already crash at the same point. > Apparently, the tendency of prompts to generate further refinements > instead of providing all the problems at once is a known limitation of > LLMs and the current prompting methods. > > Thanks, > Ian > my 2 cents.... -- Thomas Richter, Dept 3303, IBM s390 Linux Development, Boeblingen, Germany -- IBM Deutschland Research & Development GmbH Vorsitzender des Aufsichtsrats: Wolfgang Wendt Geschäftsführung: David Faller Sitz der Gesellschaft: Böblingen / Registergericht: Amtsgericht Stuttgart, HRB 243294
On Wed, 18 Mar 2026 16:45:55 -0700, Ian Rogers wrote: > Discussion with Thomas Richter in: > https://lore.kernel.org/lkml/20260306071002.2526085-1-tmricht@linux.ibm.com/ > showed that the evsel__fallback wasn't working for s390. These patches > avoid the problematic frame pointer callchain on s390 and fix > evsel__fallback from a range of problems when falling back to a > software event. I simulated failures when developing the patches but > they are untested other than that. > > [...] Applied to perf-tools-next, thanks! Best regards, Namhyung
© 2016 - 2026 Red Hat, Inc.