xref: /kvm-unit-tests/arm/run (revision abdc5d02a7796a55802509ac9bb704c721f2a5f6)
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