1103832e8SRadim Krčmář: "${RUNTIME_arch_run?}" 2103832e8SRadim Krčmář 36a53fc26SRadim Krčmářqemu=${QEMU:-qemu-system-$ARCH} 46a53fc26SRadim Krčmář 56a53fc26SRadim Krčmářfunction run() 66a53fc26SRadim Krčmář{ 76a53fc26SRadim Krčmář local testname="$1" 86a53fc26SRadim Krčmář local groups="$2" 96a53fc26SRadim Krčmář local smp="$3" 106a53fc26SRadim Krčmář local kernel="$4" 116a53fc26SRadim Krčmář local opts="$5" 126a53fc26SRadim Krčmář local arch="$6" 136a53fc26SRadim Krčmář local check="$7" 146a53fc26SRadim Krčmář local accel="$8" 156a53fc26SRadim Krčmář 166a53fc26SRadim Krčmář if [ -z "$testname" ]; then 176a53fc26SRadim Krčmář return 186a53fc26SRadim Krčmář fi 196a53fc26SRadim Krčmář 206a53fc26SRadim Krčmář if [ -n "$only_group" ] && ! grep -q "$only_group" <<<$groups; then 216a53fc26SRadim Krčmář return 226a53fc26SRadim Krčmář fi 236a53fc26SRadim Krčmář 246a53fc26SRadim Krčmář if [ -n "$arch" ] && [ "$arch" != "$ARCH" ]; then 256a53fc26SRadim Krčmář echo "skip $1 ($arch only)" 266a53fc26SRadim Krčmář return 276a53fc26SRadim Krčmář fi 286a53fc26SRadim Krčmář 296a53fc26SRadim Krčmář # check a file for a particular value before running a test 306a53fc26SRadim Krčmář # the check line can contain multiple files to check separated by a space 316a53fc26SRadim Krčmář # but each check parameter needs to be of the form <path>=<value> 326a53fc26SRadim Krčmář for check_param in ${check[@]}; do 336a53fc26SRadim Krčmář path=${check_param%%=*} 346a53fc26SRadim Krčmář value=${check_param#*=} 356a53fc26SRadim Krčmář if [ "$path" ] && [ "$(cat $path)" != "$value" ]; then 366a53fc26SRadim Krčmář echo "skip $1 ($path not equal to $value)" 376a53fc26SRadim Krčmář return 386a53fc26SRadim Krčmář fi 396a53fc26SRadim Krčmář done 406a53fc26SRadim Krčmář 41103832e8SRadim Krčmář cmdline="TESTNAME=$testname ACCEL=$accel $RUNTIME_arch_run $kernel -smp $smp $opts" 42*5b842da9SAndrew Jones if [ "$verbose" = "yes" ]; then 436a53fc26SRadim Krčmář echo $cmdline 446a53fc26SRadim Krčmář fi 456a53fc26SRadim Krčmář 466a53fc26SRadim Krčmář # extra_params in the config file may contain backticks that need to be 476a53fc26SRadim Krčmář # expanded, so use eval to start qemu 48103832e8SRadim Krčmář eval $cmdline 495af378ddSRadim Krčmář ret=$? 506a53fc26SRadim Krčmář 515af378ddSRadim Krčmář if [ $ret -le 1 ]; then 526a53fc26SRadim Krčmář echo -e "\e[32mPASS\e[0m $1" 536a53fc26SRadim Krčmář else 546a53fc26SRadim Krčmář echo -e "\e[31mFAIL\e[0m $1" 556a53fc26SRadim Krčmář fi 565af378ddSRadim Krčmář 575af378ddSRadim Krčmář return $ret 586a53fc26SRadim Krčmář} 596a53fc26SRadim Krčmář 606a53fc26SRadim KrčmářMAX_SMP=$(getconf _NPROCESSORS_CONF) 61bc52c0c8SAndrew Jones# 62bc52c0c8SAndrew Jones# Probe for MAX_SMP, in case it's less than the number of host cpus. 63bc52c0c8SAndrew Jones# 64bc52c0c8SAndrew Jones# This probing currently only works for ARM, as x86 bails on another 65bc52c0c8SAndrew Jones# error first. Also, this probing isn't necessary for any ARM hosts 66bc52c0c8SAndrew Jones# running kernels later than v4.3, i.e. those including ef748917b52 67bc52c0c8SAndrew Jones# "arm/arm64: KVM: Remove 'config KVM_ARM_MAX_VCPUS'". So, at some 68bc52c0c8SAndrew Jones# point when maintaining the while loop gets too tiresome, we can 69bc52c0c8SAndrew Jones# just remove it... 70bc52c0c8SAndrew Joneswhile $RUNTIME_arch_run _NO_FILE_4Uhere_ -smp $MAX_SMP \ 71bc52c0c8SAndrew Jones |& grep -qi 'exceeds max CPUs'; do 726a53fc26SRadim Krčmář ((--MAX_SMP)) 736a53fc26SRadim Krčmářdone 74