72 lines
1.1 KiB
Bash
Executable File
72 lines
1.1 KiB
Bash
Executable File
#!/bin/bash
|
|
# Perf event open fallback test
|
|
# SPDX-License-Identifier: GPL-2.0
|
|
|
|
skip_cnt=0
|
|
ok_cnt=0
|
|
err_cnt=0
|
|
|
|
perf_record()
|
|
{
|
|
perf record -o /dev/null "$@" -- true 1>/dev/null 2>&1
|
|
}
|
|
|
|
test_decrease_precise_ip()
|
|
{
|
|
echo "Decrease precise ip test"
|
|
|
|
perf list pmu | grep -q 'cycles' || return 2
|
|
|
|
if ! perf_record -e cycles; then
|
|
return 2
|
|
fi
|
|
|
|
# It should reduce precision level down to 0 if needed.
|
|
if ! perf_record -e cycles:P; then
|
|
return 1
|
|
fi
|
|
return 0
|
|
}
|
|
|
|
test_decrease_precise_ip_complicated()
|
|
{
|
|
echo "Decrease precise ip test (complicated case)"
|
|
|
|
perf list pmu | grep -q 'mem-loads-aux' || return 2
|
|
|
|
if ! perf_record -e '{mem-loads-aux:S,mem-loads:PS}'; then
|
|
return 1
|
|
fi
|
|
return 0
|
|
}
|
|
|
|
count_result()
|
|
{
|
|
if [ "$1" -eq 2 ] ; then
|
|
skip_cnt=$((skip_cnt + 1))
|
|
return
|
|
fi
|
|
if [ "$1" -eq 0 ] ; then
|
|
ok_cnt=$((ok_cnt + 1))
|
|
return
|
|
fi
|
|
err_cnt=$((err_cnt + 1))
|
|
}
|
|
|
|
ret=0
|
|
test_decrease_precise_ip || ret=$? ; count_result $ret ; ret=0
|
|
test_decrease_precise_ip_complicated || ret=$? ; count_result $ret ; ret=0
|
|
|
|
cleanup
|
|
|
|
if [ ${err_cnt} -gt 0 ] ; then
|
|
exit 1
|
|
fi
|
|
|
|
if [ ${ok_cnt} -gt 0 ] ; then
|
|
exit 0
|
|
fi
|
|
|
|
# Skip
|
|
exit 2
|