| 1 | |
| 2 | |
| 3 |
|
| 4 | |
| 5 | |
| 6 |
|
| 7 | skip_if_no_arm_spe_event() {
|
| 8 | perf list pmu | 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 | |
| 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
|