-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
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>
- Loading branch information
Ian Rogers
authored and
Namhyung Kim
committed
Sep 26, 2024
1 parent
77b004f
commit 7e73ea4
Showing
1 changed file
with
40 additions
and
12 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 |