1#!/bin/bash 2# Perf event open fallback test 3# SPDX-License-Identifier: GPL-2.0 4 5skip_cnt=0 6ok_cnt=0 7err_cnt=0 8 9cleanup() 10{ 11 rm -f perf.data 12 rm -f perf.data.old 13 trap - EXIT TERM INT 14} 15 16trap_cleanup() 17{ 18 cleanup 19 exit 1 20} 21 22trap trap_cleanup EXIT TERM INT 23 24perf_record() 25{ 26 perf record "$@" -- true 1>/dev/null 2>&1 27} 28 29test_decrease_precise_ip() 30{ 31 echo "Decrease precise ip test" 32 33 perf list pmu | grep -q 'cycles' || return 2 34 35 if ! perf_record -e cycles; then 36 return 2 37 fi 38 39 # It should reduce precision level down to 0 if needed. 40 if ! perf_record -e cycles:P; then 41 return 1 42 fi 43 return 0 44} 45 46test_decrease_precise_ip_complicated() 47{ 48 echo "Decrease precise ip test (complicated case)" 49 50 perf list pmu | grep -q 'mem-loads-aux' || return 2 51 52 if ! perf_record -e '{cpu/mem-loads-aux/S,cpu/mem-loads/PS}'; then 53 return 1 54 fi 55 return 0 56} 57 58count_result() 59{ 60 if [ "$1" -eq 2 ] ; then 61 skip_cnt=$((skip_cnt + 1)) 62 return 63 fi 64 if [ "$1" -eq 0 ] ; then 65 ok_cnt=$((ok_cnt + 1)) 66 return 67 fi 68 err_cnt=$((err_cnt + 1)) 69} 70 71ret=0 72test_decrease_precise_ip || ret=$? ; count_result $ret ; ret=0 73test_decrease_precise_ip_complicated || ret=$? ; count_result $ret ; ret=0 74 75cleanup 76 77if [ ${err_cnt} -gt 0 ] ; then 78 exit 1 79fi 80 81if [ ${ok_cnt} -gt 0 ] ; then 82 exit 0 83fi 84 85# Skip 86exit 2 87