1*3d5ac9efSIan Rogers#!/bin/sh
2*3d5ac9efSIan Rogers# perf all PMU test
3*3d5ac9efSIan Rogers# SPDX-License-Identifier: GPL-2.0
4*3d5ac9efSIan Rogers
5*3d5ac9efSIan Rogersset -e
6*3d5ac9efSIan Rogers
7*3d5ac9efSIan Rogersfor p in $(perf list --raw-dump pmu); do
8*3d5ac9efSIan Rogers  echo "Testing $p"
9*3d5ac9efSIan Rogers  result=$(perf stat -e "$p" true 2>&1)
10*3d5ac9efSIan Rogers  if [[ ! "$result" =~ "$p" ]] && [[ ! "$result" =~ "<not supported>" ]]; then
11*3d5ac9efSIan Rogers    # We failed to see the event and it is supported. Possibly the workload was
12*3d5ac9efSIan Rogers    # too small so retry with something longer.
13*3d5ac9efSIan Rogers    result=$(perf stat -e "$p" perf bench internals synthesize 2>&1)
14*3d5ac9efSIan Rogers    if [[ ! "$result" =~ "$p" ]]; then
15*3d5ac9efSIan Rogers      echo "Event '$p' not printed in:"
16*3d5ac9efSIan Rogers      echo "$result"
17*3d5ac9efSIan Rogers      exit 1
18*3d5ac9efSIan Rogers    fi
19*3d5ac9efSIan Rogers  fi
20*3d5ac9efSIan Rogersdone
21*3d5ac9efSIan Rogers
22*3d5ac9efSIan Rogersexit 0
23