Re: [PATCH 1/2] perf test: Fix perf test 114 perf record test subtest precise_max

From: James Clark
Date: Thu Jan 30 2025 - 10:06:02 EST




On 30/01/2025 11:57 am, Thomas Richter wrote:
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@xxxxxxxxxxxxx>
Suggested-by: James Clark <james.clark@xxxxxxxxxx>
---
tools/perf/tests/shell/record.sh | 43 +++++++++++++++++++++-----------
1 file changed, 29 insertions(+), 14 deletions(-)

diff --git a/tools/perf/tests/shell/record.sh b/tools/perf/tests/shell/record.sh
index 0fc7a909ae9b..b905acde8358 100755
--- a/tools/perf/tests/shell/record.sh
+++ b/tools/perf/tests/shell/record.sh
@@ -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:P" true 2> /dev/null

This needs to check -e cycles, not cycles:P. Otherwise the test doesn't do anything anymore, because it only tests that cycles:P opens anyway.

So now in failure conditions where it can't be opened the test skips instead of fails.

With that change:

Reviewed-by: James Clark <james.clark@xxxxxxxxxx>

then
- echo "precise_max attribute [Skipped no hardware events]"
- return
+ 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))