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