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 11*5f77b72dSJean-Philippe Bruckerqemu_cpu="$TARGET_CPU" 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 40*5f77b72dSJean-Philippe Bruckerif [ -z "$qemu_cpu" ]; then 41*5f77b72dSJean-Philippe Brucker if ( [ "$ACCEL" = "kvm" ] || [ "$ACCEL" = "hvf" ] ) && 42*5f77b72dSJean-Philippe Brucker ( [ "$HOST" = "aarch64" ] || [ "$HOST" = "arm" ] ); then 43*5f77b72dSJean-Philippe Brucker qemu_cpu="host" 4467c2cc50SAlex Bennée if [ "$ARCH" = "arm" ] && [ "$HOST" = "aarch64" ]; then 45*5f77b72dSJean-Philippe Brucker qemu_cpu+=",aarch64=off" 46d9729025SAndrew Jones fi 47*5f77b72dSJean-Philippe Brucker else 48*5f77b72dSJean-Philippe Brucker qemu_cpu="$DEFAULT_QEMU_CPU" 49d9729025SAndrew Jones fi 50d9729025SAndrew Jonesfi 51d9729025SAndrew Jones 521f0a5c19SAndrew Jonesif [ "$ARCH" = "arm" ]; then 531f0a5c19SAndrew Jones M+=",highmem=off" 541f0a5c19SAndrew Jonesfi 551f0a5c19SAndrew Jones 56d5be1090SShaoqin Huangif ! $qemu $M -device '?' | grep -q virtconsole; then 574b968505SBalamuruhan S echo "$qemu doesn't support virtio-console for chr-testdev. Exiting." 585e61cba0SAndrew Jones exit 2 595e61cba0SAndrew Jonesfi 605e61cba0SAndrew Jones 6129e06611SShaoqin Huangif ! $qemu $M -chardev '?' | grep -q testdev; then 624b968505SBalamuruhan S echo "$qemu doesn't support chr-testdev. Exiting." 635e61cba0SAndrew Jones exit 2 645e61cba0SAndrew Jonesfi 655e61cba0SAndrew Jones 665ded2989SAndrew Jonesif [ "$UEFI_SHELL_RUN" != "y" ] && [ "$EFI_USE_ACPI" != "y" ]; then 675e61cba0SAndrew Jones chr_testdev='-device virtio-serial-device' 685e61cba0SAndrew Jones chr_testdev+=' -device virtconsole,chardev=ctd -chardev testdev,id=ctd' 692607d2d6SNikos Nikolerisfi 705e61cba0SAndrew Jones 71f7f81c6aSAlexander Gordeevpci_testdev= 72d5be1090SShaoqin Huangif $qemu $M -device '?' | grep -q pci-testdev; then 73f7f81c6aSAlexander Gordeev pci_testdev="-device pci-testdev" 74f7f81c6aSAlexander Gordeevfi 75f7f81c6aSAlexander Gordeev 7601e047d0SGavin ShanA="-accel $ACCEL$ACCEL_PROPS" 77*5f77b72dSJean-Philippe Bruckercommand="$qemu -nodefaults $M $A -cpu $qemu_cpu $chr_testdev $pci_testdev" 782607d2d6SNikos Nikoleriscommand+=" -display none -serial stdio" 7941c0f78cSEric Augercommand="$(migration_cmd) $(timeout_cmd) $command" 8092a1afcbSAndrew Jones 8163c60156SAndrew Jonesif [ "$UEFI_SHELL_RUN" = "y" ]; then 822607d2d6SNikos Nikoleris ENVIRON_DEFAULT=n run_qemu_status $command "$@" 835ded2989SAndrew Joneselif [ "$EFI_USE_ACPI" = "y" ]; then 845ded2989SAndrew Jones run_qemu_status $command -kernel "$@" 852607d2d6SNikos Nikoleriselse 862607d2d6SNikos Nikoleris run_qemu $command -kernel "$@" 872607d2d6SNikos Nikolerisfi 88