| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- #!/bin/bash
- # perf all PMU test (exclusive)
- # SPDX-License-Identifier: GPL-2.0
- 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
- echo -n "Testing $p -- "
- output=$(perf stat -e "$p" true 2>&1)
- stat_result=$?
- if echo "$output" | grep -q "$p"
- then
- # Event seen in output.
- if [ $stat_result -eq 0 ] && ! echo "$output" | grep -q "<not supported>"
- then
- # Event supported.
- echo "supported"
- continue
- elif echo "$output" | grep -q "<not supported>"
- then
- # Event not supported, so ignore.
- echo "not supported"
- continue
- elif echo "$output" | grep -q "No permission to enable"
- then
- # No permissions, so ignore.
- echo "no permission to enable"
- continue
- elif echo "$output" | grep -q "Bad event name"
- then
- # Non-existent event.
- echo "Error: Bad event name"
- echo "$output"
- err=1
- continue
- fi
- fi
- if echo "$output" | grep -q "Access to performance monitoring and observability operations is limited."
- then
- # Access is limited, so ignore.
- echo "access limited"
- continue
- fi
- # We failed to see the event and it is supported. Possibly the workload was
- # too small so retry with something longer.
- output=$(perf stat -e "$p" perf bench internals synthesize 2>&1)
- if echo "$output" | grep -q "$p"
- then
- # Event seen in output.
- echo "supported"
- continue
- fi
- echo "Error: event '$p' not printed in:"
- echo "$output"
- err=1
- done
- trap - EXIT TERM INT
- exit $err
|