xref: /kvm-unit-tests/powerpc/run (revision f5a873301b7372e5d88e5c921d8fce16a126d644)
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