11b7dd7d3SSergey Bronnikov#!/usr/bin/env bash 25e61cba0SAndrew Jones 357ab5a6dSThomas Huthif [ -z "$KUT_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 1301e047d0SGavin Shanif [ "$QEMU" ] && [ -z "$ACCEL" ] && 1401e047d0SGavin Shan [ "$HOST" = "aarch64" ] && [ "$ARCH" = "arm" ] && 1501e047d0SGavin Shan [ "$(basename $QEMU)" = "qemu-system-arm" ]; then 1601e047d0SGavin Shan ACCEL="tcg" 1701e047d0SGavin Shanfi 180601b85cSAndrew Jones 1901e047d0SGavin Shanset_qemu_accelerator || exit $? 2001e047d0SGavin Shanif [ "$ACCEL" = "kvm" ]; then 21ee5a8a1aSAndrew Jones QEMU_ARCH=$HOST 22ee5a8a1aSAndrew Jonesfi 23ee5a8a1aSAndrew Jones 24fcf4e0d9SRadim Krčmářqemu=$(search_qemu_binary) || 25fcf4e0d9SRadim Krčmář exit $? 265e61cba0SAndrew Jones 27d5be1090SShaoqin Huangif ! $qemu -machine '?' | grep -q 'ARM Virtual Machine'; then 284b968505SBalamuruhan S echo "$qemu doesn't support mach-virt ('-machine virt'). Exiting." 295e61cba0SAndrew Jones exit 2 305e61cba0SAndrew Jonesfi 315e61cba0SAndrew Jones 325e61cba0SAndrew JonesM='-machine virt' 335e61cba0SAndrew Jones 34d9729025SAndrew Jonesif [ "$ACCEL" = "kvm" ]; then 35d5be1090SShaoqin Huang if $qemu $M,\? | grep -q gic-version; then 36d9729025SAndrew Jones M+=',gic-version=host' 37d9729025SAndrew Jones fi 38c157b6e2SNikos Nikolerisfi 39c157b6e2SNikos Nikoleris 40c157b6e2SNikos Nikolerisif [ "$ACCEL" = "kvm" ] || [ "$ACCEL" = "hvf" ]; then 4167c2cc50SAlex Bennée if [ "$HOST" = "aarch64" ] || [ "$HOST" = "arm" ]; then 42d9729025SAndrew Jones processor="host" 4367c2cc50SAlex Bennée if [ "$ARCH" = "arm" ] && [ "$HOST" = "aarch64" ]; then 44d9729025SAndrew Jones processor+=",aarch64=off" 45d9729025SAndrew Jones fi 46d9729025SAndrew Jones fi 47d9729025SAndrew Jonesfi 48d9729025SAndrew Jones 491f0a5c19SAndrew Jonesif [ "$ARCH" = "arm" ]; then 501f0a5c19SAndrew Jones M+=",highmem=off" 511f0a5c19SAndrew Jonesfi 521f0a5c19SAndrew Jones 53d5be1090SShaoqin Huangif ! $qemu $M -device '?' | grep -q virtconsole; then 544b968505SBalamuruhan S echo "$qemu doesn't support virtio-console for chr-testdev. Exiting." 555e61cba0SAndrew Jones exit 2 565e61cba0SAndrew Jonesfi 575e61cba0SAndrew Jones 5829e06611SShaoqin Huangif ! $qemu $M -chardev '?' | grep -q testdev; then 594b968505SBalamuruhan S echo "$qemu doesn't support chr-testdev. Exiting." 605e61cba0SAndrew Jones exit 2 615e61cba0SAndrew Jonesfi 625e61cba0SAndrew Jones 63*5ded2989SAndrew Jonesif [ "$UEFI_SHELL_RUN" != "y" ] && [ "$EFI_USE_ACPI" != "y" ]; then 645e61cba0SAndrew Jones chr_testdev='-device virtio-serial-device' 655e61cba0SAndrew Jones chr_testdev+=' -device virtconsole,chardev=ctd -chardev testdev,id=ctd' 662607d2d6SNikos Nikolerisfi 675e61cba0SAndrew Jones 68f7f81c6aSAlexander Gordeevpci_testdev= 69d5be1090SShaoqin Huangif $qemu $M -device '?' | grep -q pci-testdev; then 70f7f81c6aSAlexander Gordeev pci_testdev="-device pci-testdev" 71f7f81c6aSAlexander Gordeevfi 72f7f81c6aSAlexander Gordeev 7301e047d0SGavin ShanA="-accel $ACCEL$ACCEL_PROPS" 74856587f0SAlex Bennéecommand="$qemu -nodefaults $M $A -cpu $processor $chr_testdev $pci_testdev" 752607d2d6SNikos Nikoleriscommand+=" -display none -serial stdio" 7641c0f78cSEric Augercommand="$(migration_cmd) $(timeout_cmd) $command" 7792a1afcbSAndrew Jones 7863c60156SAndrew Jonesif [ "$UEFI_SHELL_RUN" = "y" ]; then 792607d2d6SNikos Nikoleris ENVIRON_DEFAULT=n run_qemu_status $command "$@" 80*5ded2989SAndrew Joneselif [ "$EFI_USE_ACPI" = "y" ]; then 81*5ded2989SAndrew Jones run_qemu_status $command -kernel "$@" 822607d2d6SNikos Nikoleriselse 832607d2d6SNikos Nikoleris run_qemu $command -kernel "$@" 842607d2d6SNikos Nikolerisfi 85