[PATCH v2] perf test: Skip perf data type profiling tests for s390
From: Thomas Richter
Date: Tue Mar 31 2026 - 07:29:09 EST
Test case 'perf data type profiling tests' fails on s390 with this
error:
# ./perf mem record -- ./perf test -w code_with_type
failed: no PMU supports the memory events
# echo $?
255
#
because s390 does not support memory events at all. According to the
man page, perf annotate --code-with-type only works with memory
instructions only. As command 'perf mem record ...' is not supported
on s390, skip this test for s390.
Output before:
# ./perf test 'perf data type profiling tests'
77: perf data type profiling tests : FAILED!
Output after:
# ./perf test 'perf data type profiling tests'
77: perf data type profiling tests : Skip
Signed-off-by: Thomas Richter <tmricht@xxxxxxxxxxxxx>
Suggested-by: Namhyung Kim <namhyung@xxxxxxxxxx>
Cc: Namhyung Kim <namhyung@xxxxxxxxxx>
Cc: Dmitrii Dolgov <9erthalion6@xxxxxxxxx>
---
tools/perf/tests/shell/data_type_profiling.sh | 24 +++++++++++++++----
1 file changed, 19 insertions(+), 5 deletions(-)
diff --git a/tools/perf/tests/shell/data_type_profiling.sh b/tools/perf/tests/shell/data_type_profiling.sh
index fb47b7213b33..6eb7d96fb2b2 100755
--- a/tools/perf/tests/shell/data_type_profiling.sh
+++ b/tools/perf/tests/shell/data_type_profiling.sh
@@ -14,18 +14,26 @@ testprogs=("perf test -w code_with_type" "perf test -w datasym")
err=0
perfdata=$(mktemp /tmp/__perf_test.perf.data.XXXXX)
perfout=$(mktemp /tmp/__perf_test.perf.out.XXXXX)
+perferr=$(mktemp /tmp/__perf_test.perf.err.XXXXX)
cleanup() {
- rm -rf "${perfdata}" "${perfout}"
+ rm -rf "${perfdata}" "${perfout}" "${perferr}"
rm -rf "${perfdata}".old
trap - EXIT TERM INT
}
trap_cleanup() {
- echo "Unexpected signal in ${FUNCNAME[1]}"
+ if cat "${perferr}" | grep -q 'failed: no PMU supports the memory events'
+ then
+ echo "${mode} annotate [Skip: perf mem record] not supported"
+ rc=2
+ else
+ echo "Unexpected signal in ${FUNCNAME[1]}"
+ rc=1
+ fi
cleanup
- exit 1
+ exit $rc
}
trap trap_cleanup EXIT TERM INT
@@ -50,12 +58,18 @@ test_basic_annotate() {
if [ "x${mode}" == "xBasic" ]
then
- perf mem record -o "${perfdata}" ${testprogs[$index]} 2> /dev/null
+ perf mem record -o "${perfdata}" ${testprogs[$index]} 2> "${perferr}"
else
- perf mem record -o - ${testprogs[$index]} 2> /dev/null > "${perfdata}"
+ perf mem record -o - ${testprogs[$index]} 2> "${perferr}" > "${perfdata}"
fi
if [ "x$?" != "x0" ]
then
+ if cat "${perferr}" | grep -q 'failed: no PMU supports the memory events'
+ then
+ echo "${mode} annotate [Skip: perf mem record] not supported"
+ err=2
+ return
+ fi
echo "${mode} annotate [Failed: perf record]"
err=1
return
--
2.53.0