From: Thomas Richter <tmricht@linux.ibm.com>
To: Ian Rogers <irogers@google.com>
Cc: acme@kernel.org, agordeev@linux.ibm.com, gor@linux.ibm.com,
hca@linux.ibm.com, japo@linux.ibm.com,
linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org,
linux-s390@vger.kernel.org, namhyung@kernel.org,
sumanthk@linux.ibm.com
Subject: Re: [PATCH v2 2/2] perf evsel: Don't configure framepointer callchains on s390
Date: Thu, 12 Mar 2026 13:45:30 +0100 [thread overview]
Message-ID: <05b884dc-d0bf-4767-8413-40ddb7c0f8fb@linux.ibm.com> (raw)
In-Reply-To: <20260312061628.1593105-3-irogers@google.com>
[-- Attachment #1: Type: text/plain, Size: 3149 bytes --]
On 3/12/26 07:16, Ian Rogers wrote:
> Frame pointer callchains are not supported on s390. Ignore the option
> and print a warning.
>
> Signed-off-by: Ian Rogers <irogers@google.com>
> ---
> v2: Only disable user callchains as AI is telling me native "kernel"
> callchains are supported on s390.
> ---
> tools/perf/util/evsel.c | 6 ++++++
> 1 file changed, 6 insertions(+)
>
> diff --git a/tools/perf/util/evsel.c b/tools/perf/util/evsel.c
> index bd14d9bbc91f..fa21b48cba86 100644
> --- a/tools/perf/util/evsel.c
> +++ b/tools/perf/util/evsel.c
> @@ -1076,6 +1076,12 @@ static void __evsel__config_callchain(struct evsel *evsel, struct record_opts *o
> attr->exclude_callchain_user = 1;
> }
>
> + if (EM_HOST == EM_S390 && (evsel->core.attr.sample_type & PERF_SAMPLE_CALLCHAIN) &&
> + !evsel->core.attr.exclude_callchain_user) {
> + pr_warning("Excluding user callchains that are not supported on s390. Try '--call-graph dwarf'\n");
> + evsel->core.attr.exclude_callchain_user = 1;
> + }
> +
> if (param->defer && !attr->exclude_callchain_user)
> attr->defer_callchain = 1;
> }
Ian, thanks very much.
Your patch set helps a lot. However there is a small nit (which is mandatory). Please add these lines
evsel->core.attr.sample_type &= ~PERF_SAMPLE_CALLCHAIN;
evsel->core.attr.sample_type &= ~PERF_SAMPLE_REGS_USER;
evsel->core.attr.sample_type &= ~PERF_SAMPLE_STACK_USER;
to the new if(EM_HOST == ...) above.
The s390 CPU Measurement sampling device driver does not check on the attr.core.exclude_callchain_user
member, but on the sample_type bit mask. It returns -EOPNOTSUPP when this bit PERF_SAMPLE_CALLCHAIN
is set. This solves the invocation with command line flag -g as in
# ./perf record -v -e cycles -g -- perf test -w noploop
...
perf record: Captured and wrote 0.183 MB perf.data ]
Also I discovered that the fallback when using --call-graph dwarf command line flag still fails:
# ./perf record -v -e cycles --call-graph dwarf -- perf test -w noploop
...
Warning:
Trying to fall back to excluding guest samples
Error:
Failure to open event 'cycles:H' on PMU 'cpum_cf' which will be removed.
cycles:H: PMU Hardware doesn't support sampling overflow-interrupts. Try 'perf stat'
Error:
Failure to open any events for recording.
The reason is in __evsel__config_callchain() which calls evsel__set_sample_bit(evsel, CALLCHAIN)
and sets the PERF_SAMPLE_CALLCHAIN bit in evsel->core.attr.sample_type. It also sets the
member attr->exclude_callchain_user = 1 and sets bits REGS_USER and _STACK_USER.
All three bits are not supported by s390.
I have modified your 2nd patch and appended it.
I find all these bits in sample_type and the attr.exclude_XXX stuff very confusing. If there
is a more consistant way of checking these feature, please let me know.
Thanks again for looking into this.
--
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
[-- Attachment #2: 0001-perf-evsel-Don-t-configure-framepointer-callchains-o.patch --]
[-- Type: text/x-patch, Size: 1269 bytes --]
From fa7720071277e7f892c9d81f2e277c4ae0359054 Mon Sep 17 00:00:00 2001
From: Ian Rogers <irogers@google.com>
Date: Wed, 11 Mar 2026 23:16:28 -0700
Subject: [PATCH] perf evsel: Don't configure framepointer callchains on s390
Frame pointer callchains are not supported on s390. Ignore the option
and print a warning.
Signed-off-by: Ian Rogers <irogers@google.com>
---
tools/perf/util/evsel.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/tools/perf/util/evsel.c b/tools/perf/util/evsel.c
index bd14d9bbc91f..ec4c6d8a736d 100644
--- a/tools/perf/util/evsel.c
+++ b/tools/perf/util/evsel.c
@@ -1076,6 +1076,14 @@ static void __evsel__config_callchain(struct evsel *evsel, struct record_opts *o
attr->exclude_callchain_user = 1;
}
+ if (EM_HOST == EM_S390 && (evsel->core.attr.sample_type & PERF_SAMPLE_CALLCHAIN)) {
+ pr_warning("Excluding user callchains that are not supported on s390. Try '--call-graph dwarf'\n");
+ evsel->core.attr.exclude_callchain_user = 1;
+ evsel->core.attr.sample_type &= ~PERF_SAMPLE_CALLCHAIN;
+ evsel->core.attr.sample_type &= ~PERF_SAMPLE_REGS_USER;
+ evsel->core.attr.sample_type &= ~PERF_SAMPLE_STACK_USER;
+ }
+
if (param->defer && !attr->exclude_callchain_user)
attr->defer_callchain = 1;
}
--
2.53.0
next prev parent reply other threads:[~2026-03-12 12:45 UTC|newest]
Thread overview: 63+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-06 7:10 [PATCH] perf test: Fix test case 120 and 121 for s390 Thomas Richter
2026-03-06 15:51 ` Jan Polensky
2026-03-06 16:53 ` Ian Rogers
2026-03-09 12:59 ` Thomas Richter
2026-03-09 18:18 ` Ian Rogers
2026-03-11 6:09 ` Namhyung Kim
2026-03-11 7:21 ` Thomas Richter
2026-03-12 3:19 ` [PATCH v1 0/2] perf evsel fallback changes Ian Rogers
2026-03-12 3:19 ` [PATCH v1 1/2] perf evsel: Improve falling back from cycles Ian Rogers
2026-03-12 3:19 ` [PATCH v1 2/2] perf evsel: Don't configure framepointer callchains on s390 Ian Rogers
2026-03-12 6:16 ` [PATCH v2 0/2] perf evsel fallback changes Ian Rogers
2026-03-12 6:16 ` [PATCH v2 1/2] perf evsel: Improve falling back from cycles Ian Rogers
2026-03-12 6:16 ` [PATCH v2 2/2] perf evsel: Don't configure framepointer callchains on s390 Ian Rogers
2026-03-12 12:45 ` Thomas Richter [this message]
2026-03-12 15:54 ` Ian Rogers
2026-03-12 16:46 ` Ian Rogers
2026-03-12 18:00 ` Namhyung Kim
2026-03-13 9:46 ` Thomas Richter
2026-03-13 21:01 ` Namhyung Kim
2026-03-13 20:28 ` [PATCH v3 0/3] perf evsel fallback changes Ian Rogers
2026-03-13 20:28 ` [PATCH v3 1/3] perf evsel: Improve falling back from cycles Ian Rogers
2026-03-13 20:28 ` [PATCH v3 2/3] perf target: Constify simple check functions Ian Rogers
2026-03-13 20:28 ` [PATCH v3 3/3] perf evlist: Improve default event for s390 Ian Rogers
2026-03-16 12:13 ` Thomas Richter
2026-03-16 18:41 ` Ian Rogers
2026-03-17 3:05 ` [PATCH v4 0/5] perf evsel fallback changes Ian Rogers
2026-03-17 3:05 ` [PATCH v4 1/5] perf evsel: Improve falling back from cycles Ian Rogers
2026-03-17 3:05 ` [PATCH v4 2/5] perf target: Constify simple check functions Ian Rogers
2026-03-17 3:05 ` [PATCH v4 3/5] perf evsel: Constify option arguments to config functions Ian Rogers
2026-03-17 3:06 ` [PATCH v4 4/5] perf callchain: Move callchain option parsing out of builtin Ian Rogers
2026-03-17 3:06 ` [PATCH v4 5/5] perf evlist: Improve default event for s390 Ian Rogers
2026-03-17 5:53 ` [PATCH v5 0/5] perf evsel fallback changes Ian Rogers
2026-03-17 5:53 ` [PATCH v5 1/5] perf evsel: Improve falling back from cycles Ian Rogers
2026-03-17 5:53 ` [PATCH v5 2/5] perf target: Constify simple check functions Ian Rogers
2026-03-17 5:53 ` [PATCH v5 3/5] perf evsel: Constify option arguments to config functions Ian Rogers
2026-03-17 5:53 ` [PATCH v5 4/5] perf callchain: Refactor callchain option parsing Ian Rogers
2026-03-17 5:53 ` [PATCH v5 5/5] perf evlist: Improve default event for s390 Ian Rogers
2026-03-17 7:52 ` Thomas Richter
2026-03-17 15:54 ` Ian Rogers
2026-03-17 17:56 ` [PATCH v6 0/5] perf evsel fallback changes, better s390 defaults Ian Rogers
2026-03-17 17:56 ` [PATCH v6 1/5] perf evsel: Improve falling back from cycles Ian Rogers
2026-03-17 17:56 ` [PATCH v6 2/5] perf target: Constify simple check functions Ian Rogers
2026-03-17 17:56 ` [PATCH v6 3/5] perf evsel: Constify option arguments to config functions Ian Rogers
2026-03-17 17:56 ` [PATCH v6 4/5] perf callchain: Refactor callchain option parsing Ian Rogers
2026-03-17 17:56 ` [PATCH v6 5/5] perf evlist: Improve default event for s390 Ian Rogers
2026-03-18 8:20 ` [PATCH v6 0/5] perf evsel fallback changes, better s390 defaults Thomas Richter
2026-03-18 16:29 ` Ian Rogers
2026-03-18 17:58 ` [PATCH v7 " Ian Rogers
2026-03-18 17:58 ` [PATCH v7 1/5] perf evsel: Improve falling back from cycles Ian Rogers
2026-03-18 17:58 ` [PATCH v7 2/5] perf target: Constify simple check functions Ian Rogers
2026-03-18 17:58 ` [PATCH v7 3/5] perf evsel: Constify option arguments to config functions Ian Rogers
2026-03-18 17:58 ` [PATCH v7 4/5] perf callchain: Refactor callchain option parsing Ian Rogers
2026-03-18 17:58 ` [PATCH v7 5/5] perf evlist: Improve default event for s390 Ian Rogers
2026-03-18 23:45 ` [PATCH v8 0/5] perf evsel fallback changes, better s390 defaults Ian Rogers
2026-03-18 23:45 ` [PATCH v8 1/5] perf evsel: Improve falling back from cycles Ian Rogers
2026-03-18 23:45 ` [PATCH v8 2/5] perf target: Constify simple check functions Ian Rogers
2026-03-18 23:45 ` [PATCH v8 3/5] perf evsel: Constify option arguments to config functions Ian Rogers
2026-03-18 23:45 ` [PATCH v8 4/5] perf callchain: Refactor callchain option parsing Ian Rogers
2026-03-18 23:46 ` [PATCH v8 5/5] perf evlist: Improve default event for s390 Ian Rogers
2026-03-19 7:53 ` Thomas Richter
2026-03-19 5:39 ` [PATCH v8 0/5] perf evsel fallback changes, better s390 defaults Ian Rogers
2026-03-19 8:02 ` Thomas Richter
2026-03-20 18:12 ` Namhyung Kim
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=05b884dc-d0bf-4767-8413-40ddb7c0f8fb@linux.ibm.com \
--to=tmricht@linux.ibm.com \
--cc=acme@kernel.org \
--cc=agordeev@linux.ibm.com \
--cc=gor@linux.ibm.com \
--cc=hca@linux.ibm.com \
--cc=irogers@google.com \
--cc=japo@linux.ibm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-perf-users@vger.kernel.org \
--cc=linux-s390@vger.kernel.org \
--cc=namhyung@kernel.org \
--cc=sumanthk@linux.ibm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.