mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-12-29 17:25:38 +00:00
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: Ian 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: Namhyung Kim <namhyung@kernel.org>
This commit is contained in:
parent
77b004f4c5
commit
7e73ea4029
@ -1,23 +1,51 @@
|
||||
#!/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
|
||||
# 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
|
||||
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
|
||||
# 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
|
||||
|
Loading…
Reference in New Issue
Block a user