Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

perf test: Add test of libpfm4 events

$ ./perf test -v 102
102: perf all libpfm4 events test :
--- start ---
test child forked, pid 3030994
Testing ix86arch::UNHALTED_CORE_CYCLES
Testing ix86arch::INSTRUCTION_RETIRED
Testing ix86arch::UNHALTED_REFERENCE_CYCLES
Testing ix86arch::LLC_REFERENCES
Testing ix86arch::LLC_MISSES
Testing ix86arch::BRANCH_INSTRUCTIONS_RETIRED
Testing ix86arch::MISPREDICTED_BRANCH_RETIRED
Testing perf_raw::r0000
Testing icl::UNHALTED_CORE_CYCLES
Testing icl::UNHALTED_REFERENCE_CYCLES
...
test child finished with 0
---- end ----
perf all libpfm4 events test: Ok

Signed-off-by: Ian Rogers <irogers@google.com>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Link: https://lore.kernel.org/r/20230608232400.3056312-4-namhyung@kernel.org
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

authored by

Ian Rogers and committed by
Arnaldo Carvalho de Melo
dcf7a177 cc3d139b

+51
+51
tools/perf/tests/shell/stat_all_pfm.sh
··· 1 + #!/bin/sh 2 + # perf all libpfm4 events test 3 + # SPDX-License-Identifier: GPL-2.0 4 + 5 + if perf version --build-options | grep HAVE_LIBPFM | grep -q OFF 6 + then 7 + echo "Skipping, no libpfm4 support" 8 + exit 2 9 + fi 10 + 11 + err=0 12 + for p in $(perf list --raw-dump pfm) 13 + do 14 + if echo "$p" | grep -q unc_ 15 + then 16 + echo "Skipping uncore event '$p' that may require additional options." 17 + continue 18 + fi 19 + echo "Testing $p" 20 + result=$(perf stat --pfm-events "$p" true 2>&1) 21 + x=$? 22 + if echo "$result" | grep -q "failed to parse event $p : invalid or missing unit mask" 23 + then 24 + continue 25 + fi 26 + if test "$x" -ne "0" 27 + then 28 + echo "Unexpected exit code '$x'" 29 + err=1 30 + fi 31 + if ! echo "$result" | grep -q "$p" && ! echo "$result" | grep -q "<not supported>" 32 + then 33 + # We failed to see the event and it is supported. Possibly the workload was 34 + # too small so retry with something longer. 35 + result=$(perf stat --pfm-events "$p" perf bench internals synthesize 2>&1) 36 + x=$? 37 + if test "$x" -ne "0" 38 + then 39 + echo "Unexpected exit code '$x'" 40 + err=1 41 + fi 42 + if ! echo "$result" | grep -q "$p" 43 + then 44 + echo "Event '$p' not printed in:" 45 + echo "$result" 46 + err=1 47 + fi 48 + fi 49 + done 50 + 51 + exit "$err"