mirror of
https://github.com/torvalds/linux.git
synced 2026-06-03 03:53:37 +02:00
perf tests: Add a DRM PMU test
The test opens any DRM devices so that the shell has fdinfo files containing the DRM data. The test then uses perf stat to make sure the events can be read. Signed-off-by: Ian Rogers <irogers@google.com> Link: https://lore.kernel.org/r/20250624231837.179536-4-irogers@google.com Signed-off-by: Namhyung Kim <namhyung@kernel.org>
This commit is contained in:
parent
28917cb17f
commit
45cd84bd7a
78
tools/perf/tests/shell/drm_pmu.sh
Executable file
78
tools/perf/tests/shell/drm_pmu.sh
Executable file
|
|
@ -0,0 +1,78 @@
|
|||
#!/bin/bash
|
||||
# DRM PMU
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
|
||||
set -e
|
||||
|
||||
output=$(mktemp /tmp/perf.drm_pmu.XXXXXX.txt)
|
||||
|
||||
cleanup() {
|
||||
rm -f "${output}"
|
||||
|
||||
trap - EXIT TERM INT
|
||||
}
|
||||
|
||||
trap_cleanup() {
|
||||
echo "Unexpected signal in ${FUNCNAME[1]}"
|
||||
cleanup
|
||||
exit 1
|
||||
}
|
||||
trap trap_cleanup EXIT TERM INT
|
||||
|
||||
# Array to store file descriptors and device names
|
||||
declare -A device_fds
|
||||
|
||||
# Open all devices and store file descriptors. Opening the device will create a
|
||||
# /proc/$$/fdinfo file containing the DRM statistics.
|
||||
fd_count=3 # Start with file descriptor 3
|
||||
for device in /dev/dri/*
|
||||
do
|
||||
if [[ ! -c "$device" ]]
|
||||
then
|
||||
continue
|
||||
fi
|
||||
major=$(stat -c "%Hr" "$device")
|
||||
if [[ "$major" != 226 ]]
|
||||
then
|
||||
continue
|
||||
fi
|
||||
echo "Opening $device"
|
||||
eval "exec $fd_count<\"$device\""
|
||||
echo "fdinfo for: $device (FD: $fd_count)"
|
||||
cat "/proc/$$/fdinfo/$fd_count"
|
||||
echo
|
||||
device_fds["$device"]="$fd_count"
|
||||
fd_count=$((fd_count + 1))
|
||||
done
|
||||
|
||||
if [[ ${#device_fds[@]} -eq 0 ]]
|
||||
then
|
||||
echo "No DRM devices found [Skip]"
|
||||
cleanup
|
||||
exit 2
|
||||
fi
|
||||
|
||||
# For each DRM event
|
||||
err=0
|
||||
for p in $(perf list --raw-dump drm-)
|
||||
do
|
||||
echo -n "Testing perf stat of $p. "
|
||||
perf stat -e "$p" --pid=$$ true > "$output" 2>&1
|
||||
if ! grep -q "$p" "$output"
|
||||
then
|
||||
echo "Missing DRM event in: [Failed]"
|
||||
cat "$output"
|
||||
err=1
|
||||
else
|
||||
echo "[OK]"
|
||||
fi
|
||||
done
|
||||
|
||||
# Close all file descriptors
|
||||
for fd in "${device_fds[@]}"; do
|
||||
eval "exec $fd<&-"
|
||||
done
|
||||
|
||||
# Finished
|
||||
cleanup
|
||||
exit $err
|
||||
Loading…
Reference in New Issue
Block a user