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 9perf_record() 10{ 11 perf record -o /dev/null "$@" -- true 1>/dev/null 2>&1 12} 13 14test_decrease_precise_ip() 15{ 16 echo "Decrease precise ip test" 17 18 perf list pmu | grep -q 'cycles' || return 2 19 20 if ! perf_record -e cycles; then 21 return 2 22 fi 23 24 # It should reduce precision level down to 0 if needed. 25 if ! perf_record -e cycles:P; then 26 return 1 27 fi 28 return 0 29} 30 31test_decrease_precise_ip_complicated() 32{ 33 echo "Decrease precise ip test (complicated case)" 34 35 perf list pmu | grep -q 'mem-loads-aux' || return 2 36 37 if ! perf_record -e '{mem-loads-aux:S,mem-loads:PS}'; then 38 return 1 39 fi 40 return 0 41} 42 43count_result() 44{ 45 if [ "$1" -eq 2 ] ; then 46 skip_cnt=$((skip_cnt + 1)) 47 return 48 fi 49 if [ "$1" -eq 0 ] ; then 50 ok_cnt=$((ok_cnt + 1)) 51 return 52 fi 53 err_cnt=$((err_cnt + 1)) 54} 55 56ret=0 57test_decrease_precise_ip || ret=$? ; count_result $ret ; ret=0 58test_decrease_precise_ip_complicated || ret=$? ; count_result $ret ; ret=0 59 60cleanup 61 62if [ ${err_cnt} -gt 0 ] ; then 63 exit 1 64fi 65 66if [ ${ok_cnt} -gt 0 ] ; then 67 exit 0 68fi 69 70# Skip 71exit 2 72