11b7dd7d3SSergey Bronnikov#!/usr/bin/env 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 9b2a2aa5dSAndrew Jones source scripts/arch-run.bash 10b6ff178dSAndrew Jonesfi 1139ac3f84SAndrew Jonesprocessor="$PROCESSOR" 125e61cba0SAndrew Jones 130601b85cSAndrew Jonesif [ -c /dev/kvm ]; then 140601b85cSAndrew Jones if [ "$HOST" = "arm" ] && [ "$ARCH" = "arm" ]; then 150601b85cSAndrew Jones kvm_available=yes 160601b85cSAndrew Jones elif [ "$HOST" = "aarch64" ]; then 170601b85cSAndrew Jones kvm_available=yes 180601b85cSAndrew Jones fi 190601b85cSAndrew Jonesfi 200601b85cSAndrew Jones 213a5ed97eSAndrew Jonesif [ "$ACCEL" = "kvm" ] && [ "$kvm_available" != "yes" ]; then 22d5f55dccSRadim Krčmář echo "KVM is needed, but not available on this host" 230601b85cSAndrew Jones exit 2 240601b85cSAndrew Jonesfi 250601b85cSAndrew Jones 260601b85cSAndrew Jonesif [ -z "$ACCEL" ]; then 273a5ed97eSAndrew Jones if [ "$kvm_available" = "yes" ]; then 280601b85cSAndrew Jones ACCEL="kvm" 290601b85cSAndrew Jones else 300601b85cSAndrew Jones ACCEL="tcg" 310601b85cSAndrew Jones fi 320601b85cSAndrew Jonesfi 330601b85cSAndrew Jones 344b968505SBalamuruhan Sqemu=$(search_qemu_binary) 355e61cba0SAndrew Jones 365e61cba0SAndrew Jonesif ! $qemu -machine '?' 2>&1 | grep 'ARM Virtual Machine' > /dev/null; then 374b968505SBalamuruhan S echo "$qemu doesn't support mach-virt ('-machine virt'). Exiting." 385e61cba0SAndrew Jones exit 2 395e61cba0SAndrew Jonesfi 405e61cba0SAndrew Jones 415e61cba0SAndrew JonesM='-machine virt' 425e61cba0SAndrew Jones 43d9729025SAndrew Jonesif [ "$ACCEL" = "kvm" ]; then 44d9729025SAndrew Jones if $qemu $M,\? 2>&1 | grep gic-version > /dev/null; then 45d9729025SAndrew Jones M+=',gic-version=host' 46d9729025SAndrew Jones fi 4767c2cc50SAlex Bennée if [ "$HOST" = "aarch64" ] || [ "$HOST" = "arm" ]; then 48d9729025SAndrew Jones processor="host" 4967c2cc50SAlex Bennée if [ "$ARCH" = "arm" ] && [ "$HOST" = "aarch64" ]; then 50d9729025SAndrew Jones processor+=",aarch64=off" 51d9729025SAndrew Jones fi 52d9729025SAndrew Jones fi 53d9729025SAndrew Jonesfi 54d9729025SAndrew Jones 555e61cba0SAndrew Jonesif ! $qemu $M -device '?' 2>&1 | grep virtconsole > /dev/null; then 564b968505SBalamuruhan S echo "$qemu doesn't support virtio-console for chr-testdev. Exiting." 575e61cba0SAndrew Jones exit 2 585e61cba0SAndrew Jonesfi 595e61cba0SAndrew Jones 60b6f901ceSAndrew Jonesif $qemu $M -chardev testdev,id=id -initrd . 2>&1 \ 615e61cba0SAndrew Jones | grep backend > /dev/null; then 624b968505SBalamuruhan S echo "$qemu doesn't support chr-testdev. Exiting." 635e61cba0SAndrew Jones exit 2 645e61cba0SAndrew Jonesfi 655e61cba0SAndrew Jones 665e61cba0SAndrew Joneschr_testdev='-device virtio-serial-device' 675e61cba0SAndrew Joneschr_testdev+=' -device virtconsole,chardev=ctd -chardev testdev,id=ctd' 685e61cba0SAndrew Jones 69f7f81c6aSAlexander Gordeevpci_testdev= 70f7f81c6aSAlexander Gordeevif $qemu $M -device '?' 2>&1 | grep pci-testdev > /dev/null; then 71f7f81c6aSAlexander Gordeev pci_testdev="-device pci-testdev" 72f7f81c6aSAlexander Gordeevfi 73f7f81c6aSAlexander Gordeev 740601b85cSAndrew JonesM+=",accel=$ACCEL" 753695c93aSAndrew Jonescommand="$qemu -nodefaults $M -cpu $processor $chr_testdev $pci_testdev" 76*8b13a5b5SRadim Krčmářcommand+=" -display none -serial stdio -kernel" 77fd149358SAndrew Jonescommand="$(timeout_cmd) $command" 7892a1afcbSAndrew Jones 79b2a2aa5dSAndrew Jonesrun_qemu $command "$@" 80