#!/bin/sh # perf all libpfm4 events test # SPDX-License-Identifier: GPL-2.0 if perf version --build-options | grep HAVE_LIBPFM | grep -q OFF then echo "Skipping, no libpfm4 support" exit 2 fi err=0 for p in $(perf list --raw-dump pfm) do if echo "$p" | grep -q unc_ then echo "Skipping uncore event '$p' that may require additional options." continue fi echo "Testing $p" result=$(perf stat --pfm-events "$p" true 2>&1) x=$? if echo "$result" | grep -q "failed to parse event $p : invalid or missing unit mask" then continue fi if test "$x" -ne "0" then echo "Unexpected exit code '$x'" err=1 fi if ! echo "$result" | grep -q "$p" && ! echo "$result" | grep -q "" then # We failed to see the event and it is supported. Possibly the workload was # too small so retry with something longer. result=$(perf stat --pfm-events "$p" perf bench internals synthesize 2>&1) x=$? if test "$x" -ne "0" then echo "Unexpected exit code '$x'" err=1 fi if ! echo "$result" | grep -q "$p" then echo "Event '$p' not printed in:" echo "$result" err=1 fi fi done exit "$err"