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