perf test: Fix perf record test for precise_max

On s390 the event instructions can not be used for recording.
This event is only supported by perf stat.

Test that each event cycles and instructions supports sampling.
If the event can not be sampled, skip it.

Signed-off-by: Thomas Richter <tmricht@linux.ibm.com>
Suggested-by: James Clark <james.clark@linaro.org>
Reviewed-by: James Clark <james.clark@linaro.org>
Link: https://lore.kernel.org/r/20250131102756.4185235-2-tmricht@linux.ibm.com
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
This commit is contained in:
Thomas Richter 2025-01-31 11:27:55 +01:00 committed by Namhyung Kim
parent 23e0a63c6d
commit 859199431d

View File

@ -273,27 +273,42 @@ test_topdown_leader_sampling() {
}
test_precise_max() {
local -i skipped=0
echo "precise_max attribute test"
if ! perf stat -e "cycles,instructions" true 2> /dev/null
# Just to make sure event cycles is supported for sampling
if perf record -o "${perfdata}" -e "cycles" true 2> /dev/null
then
if ! perf record -o "${perfdata}" -e "cycles:P" true 2> /dev/null
then
echo "precise_max attribute [Failed cycles:P event]"
err=1
return
fi
else
echo "precise_max attribute [Skipped no cycles:P event]"
((skipped+=1))
fi
# On s390 event instructions is not supported for perf record
if perf record -o "${perfdata}" -e "instructions" true 2> /dev/null
then
# On AMD, cycles and instructions events are treated differently
if ! perf record -o "${perfdata}" -e "instructions:P" true 2> /dev/null
then
echo "precise_max attribute [Failed instructions:P event]"
err=1
return
fi
else
echo "precise_max attribute [Skipped no instructions:P event]"
((skipped+=1))
fi
if [ $skipped -eq 2 ]
then
echo "precise_max attribute [Skipped no hardware events]"
return
else
echo "precise_max attribute test [Success]"
fi
# Just to make sure it doesn't fail
if ! perf record -o "${perfdata}" -e "cycles:P" true 2> /dev/null
then
echo "precise_max attribute [Failed cycles:P event]"
err=1
return
fi
# On AMD, cycles and instructions events are treated differently
if ! perf record -o "${perfdata}" -e "instructions:P" true 2> /dev/null
then
echo "precise_max attribute [Failed instructions:P event]"
err=1
return
fi
echo "precise_max attribute test [Success]"
}
# raise the limit of file descriptors to minimum