1 #!/bin/sh 2 # Check Arm SPE doesn't hang when there are forks 3 4 # SPDX-License-Identifier: GPL-2.0 5 # German Gomez <german.gomez@arm.com>, 2022 6 7 skip_if_no_arm_spe_event() { 8 perf list | grep -E -q 'arm_spe_[0-9]+//' && return 0 9 return 2 10 } 11 12 skip_if_no_arm_spe_event || exit 2 13 14 TEST_PROGRAM="perf test -w sqrtloop 10" 15 PERF_DATA=$(mktemp /tmp/__perf_test.perf.data.XXXXX) 16 PERF_RECORD_LOG=$(mktemp /tmp/__perf_test.log.XXXXX) 17 18 cleanup_files() 19 { 20 echo "Cleaning up files..." 21 rm -f ${PERF_RECORD_LOG} 22 rm -f ${PERF_DATA} 23 } 24 25 trap cleanup_files EXIT TERM INT 26 27 echo "Recording workload..." 28 perf record -o ${PERF_DATA} -e arm_spe/period=65536/ -vvv -- $TEST_PROGRAM > ${PERF_RECORD_LOG} 2>&1 & 29 PERFPID=$! 30 31 # Check if perf hangs by checking the perf-record logs. 32 sleep 1 33 log0=$(wc -l $PERF_RECORD_LOG) 34 echo Log lines = $log0 35 sleep 1 36 log1=$(wc -l $PERF_RECORD_LOG) 37 echo Log lines after 1 second = $log1 38 39 kill $PERFPID 40 wait $PERFPID 41 42 if [ "$log0" = "$log1" ]; 43 then 44 echo "SPE hang test: FAIL" 45 exit 1 46 else 47 echo "SPE hang test: PASS" 48 fi 49 50 exit 0
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.