18c85a478SAndrew Jones#!/bin/bash 28c85a478SAndrew Jones 38c85a478SAndrew Jonesif [ -z "$STANDALONE" ]; then 48c85a478SAndrew Jones if [ ! -f config.mak ]; then 58c85a478SAndrew Jones echo "run ./configure && make first. See ./configure -h" 68c85a478SAndrew Jones exit 2 78c85a478SAndrew Jones fi 88c85a478SAndrew Jones source config.mak 9b2a2aa5dSAndrew Jones source scripts/arch-run.bash 108c85a478SAndrew Jonesfi 118c85a478SAndrew Jones 128c85a478SAndrew Jonesif [ -c /dev/kvm ]; then 138c85a478SAndrew Jones if [ "$HOST" = "ppc64" ] && [ "$ARCH" = "ppc64" ]; then 148c85a478SAndrew Jones kvm_available=yes 158c85a478SAndrew Jones fi 168c85a478SAndrew Jonesfi 178c85a478SAndrew Jones 188c85a478SAndrew Jonesif [ "$ACCEL" = "kvm" ] && [ "$kvm_available" != "yes" ]; then 19d5f55dccSRadim Krčmář echo "KVM is needed, but not available on this host" 208c85a478SAndrew Jones exit 2 218c85a478SAndrew Jonesfi 228c85a478SAndrew Jones 238c85a478SAndrew Jonesif [ -z "$ACCEL" ]; then 248c85a478SAndrew Jones if [ "$kvm_available" = "yes" ]; then 258c85a478SAndrew Jones ACCEL="kvm" 268c85a478SAndrew Jones else 278c85a478SAndrew Jones ACCEL="tcg" 288c85a478SAndrew Jones fi 298c85a478SAndrew Jonesfi 308c85a478SAndrew Jones 318c85a478SAndrew Jonesqemu="${QEMU:-qemu-system-$ARCH_NAME}" 328c85a478SAndrew Jonesqpath=$(which $qemu 2>/dev/null) 338c85a478SAndrew Jones 348c85a478SAndrew Jonesif [ -z "$qpath" ]; then 358c85a478SAndrew Jones echo $qemu not found. 368c85a478SAndrew Jones exit 2 378c85a478SAndrew Jonesfi 388c85a478SAndrew Jones 398c85a478SAndrew Jonesif ! $qemu -machine '?' 2>&1 | grep 'pseries' > /dev/null; then 408c85a478SAndrew Jones echo "$qpath doesn't support pSeries ('-machine pseries'). Exiting." 418c85a478SAndrew Jones exit 2 428c85a478SAndrew Jonesfi 438c85a478SAndrew Jones 448c85a478SAndrew JonesM='-machine pseries' 458c85a478SAndrew JonesM+=",accel=$ACCEL" 463695c93aSAndrew Jonescommand="$qemu -nodefaults $M -bios $FIRMWARE" 47f266c3e8SAndrew Jones[ -f "$ENV" ] && command+=" -initrd $ENV" 488c85a478SAndrew Jonescommand+=" -display none -serial stdio -kernel" 49*37abdda9SThomas Huthcommand="$(migration_cmd) $(timeout_cmd) $command" 508c85a478SAndrew Jonesecho $command "$@" 518c85a478SAndrew Jones 52b2a2aa5dSAndrew Jones# powerpc tests currently exit with rtas-poweroff, which exits with 0. 53b2a2aa5dSAndrew Jones# run_qemu treats that as a failure exit and returns 1, so we need 54b2a2aa5dSAndrew Jones# to fixup the fixup below by parsing the true exit code from the output. 55b2a2aa5dSAndrew Jones# The second fixup is also a FIXME, because once we add chr-testdev 56b2a2aa5dSAndrew Jones# support for powerpc, we won't need the second fixup. 57b2a2aa5dSAndrew Joneslines=$(run_qemu $command "$@") 58b2a2aa5dSAndrew Jonesret=$? 59f5a87330SAndrew Jonesecho "$lines" 60b2a2aa5dSAndrew Jonesif [ $ret -eq 1 ]; then 61b2a2aa5dSAndrew Jones testret=$(grep '^EXIT: ' <<<"$lines" | sed 's/.*STATUS=\([0-9][0-9]*\).*/\1/') 62b2a2aa5dSAndrew Jones if [ "$testret" ]; then 63b2a2aa5dSAndrew Jones if [ $testret -eq 1 ]; then 64b2a2aa5dSAndrew Jones ret=0 65b2a2aa5dSAndrew Jones else 66b2a2aa5dSAndrew Jones ret=$testret 67b2a2aa5dSAndrew Jones fi 68b2a2aa5dSAndrew Jones fi 69b2a2aa5dSAndrew Jonesfi 708c85a478SAndrew Jonesexit $ret 71