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