2 # Check Arm SPE doesn't hang when there are forks
4 # SPDX-License-Identifier: GPL-2.0
5 # German Gomez <german.gomez@arm.com>, 2022
7 skip_if_no_arm_spe_event
() {
8 perf list pmu |
grep -E -q 'arm_spe_[0-9]+//' && return 0
12 skip_if_no_arm_spe_event ||
exit 2
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
)
20 echo "Cleaning up files..."
21 rm -f ${PERF_RECORD_LOG}
25 trap cleanup_files EXIT TERM INT
27 echo "Recording workload..."
28 perf record
-o ${PERF_DATA} -e arm_spe
/period
=65536/ -vvv -- $TEST_PROGRAM > ${PERF_RECORD_LOG} 2>&1 &
31 # Check if perf hangs by checking the perf-record logs.
33 log0
=$
(wc -l $PERF_RECORD_LOG)
34 echo Log lines
= $log0
36 log1
=$
(wc -l $PERF_RECORD_LOG)
37 echo Log lines after
1 second
= $log1
42 if [ "$log0" = "$log1" ];
44 echo "SPE hang test: FAIL"
47 echo "SPE hang test: PASS"