Re: [PATCH v8 0/5] perf evsel fallback changes, better s390 defaults

Ian Rogers
2026-03-19T05:39:39Z

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
>