Commit 7e73ea40 authored by Ian Rogers's avatar Ian Rogers Committed by Namhyung Kim
Browse files

perf test: Ignore security failures in all PMU test



Refactor code to have some more error diagnosis on traps, etc. and to
do less work on each line. Add an ignore situation for security failures.

Signed-off-by: default avatarIan Rogers <irogers@google.com>
Cc: Colin Ian King <colin.i.king@gmail.com>
Cc: Athira Jajeev <atrajeev@linux.vnet.ibm.com>
Link: https://lore.kernel.org/r/20240925173013.12789-1-irogers@google.com


Signed-off-by: default avatarNamhyung Kim <namhyung@kernel.org>
parent 77b004f4
Loading
Loading
Loading
Loading
+40 −12
Original line number Diff line number Diff line
#!/bin/sh
#!/bin/bash
# perf all PMU test
# SPDX-License-Identifier: GPL-2.0

set -e
err=0
result=""

trap_cleanup() {
  echo "Unexpected signal in ${FUNCNAME[1]}"
  echo "$result"
  exit 1
}
trap trap_cleanup EXIT TERM INT

# Test all PMU events; however exclude parameterized ones (name contains '?')
for p in $(perf list --raw-dump pmu | sed 's/[[:graph:]]\+?[[:graph:]]\+[[:space:]]//g'); do
for p in $(perf list --raw-dump pmu | sed 's/[[:graph:]]\+?[[:graph:]]\+[[:space:]]//g')
do
  echo "Testing $p"
  result=$(perf stat -e "$p" true 2>&1)
  if ! echo "$result" | grep -q "$p" && ! echo "$result" | grep -q "<not supported>" ; then
  if echo "$result" | grep -q "$p"
  then
    # Event seen in output.
    continue
  fi
  if echo "$result" | grep -q "<not supported>"
  then
    # Event not supported, so ignore.
    continue
  fi
  if echo "$result" | grep -q "Access to performance monitoring and observability operations is limited."
  then
    # Access is limited, so ignore.
    continue
  fi

  # We failed to see the event and it is supported. Possibly the workload was
  # too small so retry with something longer.
  result=$(perf stat -e "$p" perf bench internals synthesize 2>&1)
    if ! echo "$result" | grep -q "$p" ; then
      echo "Event '$p' not printed in:"
      echo "$result"
      exit 1
    fi
  if echo "$result" | grep -q "$p"
  then
    # Event seen in output.
    continue
  fi
  echo "Error: event '$p' not printed in:"
  echo "$result"
  err=1
done

exit 0
trap - EXIT TERM INT
exit $err