xref: /kvm-unit-tests/arm/run (revision 3a5ed97efb32b42ca1386096662bc46201e222cb)
15e61cba0SAndrew Jones#!/bin/bash
25e61cba0SAndrew Jones
3b6ff178dSAndrew Jonesif [ -z "$STANDALONE" ]; then
45e61cba0SAndrew Jones	if [ ! -f config.mak ]; then
5b6ff178dSAndrew Jones		echo "run ./configure && make first. See ./configure -h"
65e61cba0SAndrew Jones		exit 2
75e61cba0SAndrew Jones	fi
85e61cba0SAndrew Jones	source config.mak
9b6ff178dSAndrew Jonesfi
1039ac3f84SAndrew Jonesprocessor="$PROCESSOR"
115e61cba0SAndrew Jones
120601b85cSAndrew Jonesif [ -c /dev/kvm ]; then
130601b85cSAndrew Jones	if [ "$HOST" = "arm" ] && [ "$ARCH" = "arm" ]; then
140601b85cSAndrew Jones		kvm_available=yes
150601b85cSAndrew Jones	elif [ "$HOST" = "aarch64" ]; then
160601b85cSAndrew Jones		kvm_available=yes
170601b85cSAndrew Jones	fi
180601b85cSAndrew Jonesfi
190601b85cSAndrew Jones
20*3a5ed97eSAndrew Jonesif [ "$ACCEL" = "kvm" ] && [ "$kvm_available" != "yes" ]; then
21*3a5ed97eSAndrew Jones	echo "skip $TESTNAME (kvm only)"
220601b85cSAndrew Jones	exit 2
230601b85cSAndrew Jonesfi
240601b85cSAndrew Jones
250601b85cSAndrew Jonesif [ -z "$ACCEL" ]; then
26*3a5ed97eSAndrew Jones	if [ "$kvm_available" = "yes" ]; then
270601b85cSAndrew Jones		ACCEL="kvm"
280601b85cSAndrew Jones	else
290601b85cSAndrew Jones		ACCEL="tcg"
300601b85cSAndrew Jones	fi
310601b85cSAndrew Jonesfi
320601b85cSAndrew Jones
33*3a5ed97eSAndrew Jonesif [ "$ARCH" = "arm64" ] && [ "$ACCEL" = "kvm" ]; then
340601b85cSAndrew Jones	processor="host"
350601b85cSAndrew Jonesfi
360601b85cSAndrew Jones
3739ac3f84SAndrew Jonesqemu="${QEMU:-qemu-system-$ARCH_NAME}"
385e61cba0SAndrew Jonesqpath=$(which $qemu 2>/dev/null)
395e61cba0SAndrew Jones
405e61cba0SAndrew Jonesif [ -z "$qpath" ]; then
415e61cba0SAndrew Jones	echo $qemu not found.
425e61cba0SAndrew Jones	exit 2
435e61cba0SAndrew Jonesfi
445e61cba0SAndrew Jones
455e61cba0SAndrew Jonesif ! $qemu -machine '?' 2>&1 | grep 'ARM Virtual Machine' > /dev/null; then
465e61cba0SAndrew Jones	echo "$qpath doesn't support mach-virt ('-machine virt'). Exiting."
475e61cba0SAndrew Jones	exit 2
485e61cba0SAndrew Jonesfi
495e61cba0SAndrew Jones
505e61cba0SAndrew JonesM='-machine virt'
515e61cba0SAndrew Jones
525e61cba0SAndrew Jonesif ! $qemu $M -device '?' 2>&1 | grep virtconsole > /dev/null; then
535e61cba0SAndrew Jones	echo "$qpath doesn't support virtio-console for chr-testdev. Exiting."
545e61cba0SAndrew Jones	exit 2
555e61cba0SAndrew Jonesfi
565e61cba0SAndrew Jones
57b6f901ceSAndrew Jonesif $qemu $M -chardev testdev,id=id -initrd . 2>&1 \
585e61cba0SAndrew Jones		| grep backend > /dev/null; then
595e61cba0SAndrew Jones	echo "$qpath doesn't support chr-testdev. Exiting."
605e61cba0SAndrew Jones	exit 2
615e61cba0SAndrew Jonesfi
625e61cba0SAndrew Jones
635e61cba0SAndrew Joneschr_testdev='-device virtio-serial-device'
645e61cba0SAndrew Joneschr_testdev+=' -device virtconsole,chardev=ctd -chardev testdev,id=ctd'
655e61cba0SAndrew Jones
660601b85cSAndrew JonesM+=",accel=$ACCEL"
6739ac3f84SAndrew Jonescommand="$qemu $M -cpu $processor $chr_testdev"
685e61cba0SAndrew Jonescommand+=" -display none -serial stdio -kernel"
695e61cba0SAndrew Jonesecho $command "$@"
7092a1afcbSAndrew Jones
715e61cba0SAndrew Jones$command "$@"
725e61cba0SAndrew Jonesret=$?
735e61cba0SAndrew Jonesecho Return value from qemu: $ret
745e61cba0SAndrew Jonesexit $ret
75