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 98c85a478SAndrew Jonesfi 108c85a478SAndrew Jones 118c85a478SAndrew Jonesif [ -c /dev/kvm ]; then 128c85a478SAndrew Jones if [ "$HOST" = "ppc64" ] && [ "$ARCH" = "ppc64" ]; then 138c85a478SAndrew Jones kvm_available=yes 148c85a478SAndrew Jones fi 158c85a478SAndrew Jonesfi 168c85a478SAndrew Jones 178c85a478SAndrew Jonesif [ "$ACCEL" = "kvm" ] && [ "$kvm_available" != "yes" ]; then 188c85a478SAndrew Jones echo "skip $TESTNAME (kvm only)" 198c85a478SAndrew Jones exit 2 208c85a478SAndrew Jonesfi 218c85a478SAndrew Jones 228c85a478SAndrew Jonesif [ -z "$ACCEL" ]; then 238c85a478SAndrew Jones if [ "$kvm_available" = "yes" ]; then 248c85a478SAndrew Jones ACCEL="kvm" 258c85a478SAndrew Jones else 268c85a478SAndrew Jones ACCEL="tcg" 278c85a478SAndrew Jones fi 288c85a478SAndrew Jonesfi 298c85a478SAndrew Jones 308c85a478SAndrew Jonesqemu="${QEMU:-qemu-system-$ARCH_NAME}" 318c85a478SAndrew Jonesqpath=$(which $qemu 2>/dev/null) 328c85a478SAndrew Jones 338c85a478SAndrew Jonesif [ -z "$qpath" ]; then 348c85a478SAndrew Jones echo $qemu not found. 358c85a478SAndrew Jones exit 2 368c85a478SAndrew Jonesfi 378c85a478SAndrew Jones 388c85a478SAndrew Jonesif ! $qemu -machine '?' 2>&1 | grep 'pseries' > /dev/null; then 398c85a478SAndrew Jones echo "$qpath doesn't support pSeries ('-machine pseries'). Exiting." 408c85a478SAndrew Jones exit 2 418c85a478SAndrew Jonesfi 428c85a478SAndrew Jones 438c85a478SAndrew JonesM='-machine pseries' 448c85a478SAndrew JonesM+=",accel=$ACCEL" 453f8d4194SAndrew Jonescommand="$qemu $M -bios $FIRMWARE" 468c85a478SAndrew Jonescommand+=" -display none -serial stdio -kernel" 478c85a478SAndrew Jonesecho $command "$@" 488c85a478SAndrew Jones 49*f5a87330SAndrew Jones#FIXME: rtas-poweroff always exits with zero, so we have to parse 50*f5a87330SAndrew Jones# the true exit code from the output. 51*f5a87330SAndrew Joneslines=$($command "$@") 52*f5a87330SAndrew Jonesecho "$lines" 53*f5a87330SAndrew Jonesret=$(grep '^EXIT: ' <<<"$lines" | sed 's/.*STATUS=\([0-9][0-9]*\).*/\1/') 548c85a478SAndrew Jonesecho Return value from qemu: $ret 558c85a478SAndrew Jonesexit $ret 56