1#!/bin/sh 2# perf all libpfm4 events test 3# SPDX-License-Identifier: GPL-2.0 4 5if perf version --build-options | grep HAVE_LIBPFM | grep -q OFF 6then 7 echo "Skipping, no libpfm4 support" 8 exit 2 9fi 10 11err=0 12for p in $(perf list --raw-dump pfm) 13do 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 49done 50 51exit "$err" 52