xref: /kvm-unit-tests/riscv/run (revision abdc5d02a7796a55802509ac9bb704c721f2a5f6)
177955fb5SAndrew Jones#!/usr/bin/env bash
277955fb5SAndrew Jones
377955fb5SAndrew Jonesif [ -z "$KUT_STANDALONE" ]; then
477955fb5SAndrew Jones	if [ ! -f config.mak ]; then
577955fb5SAndrew Jones		echo "run ./configure && make first. See ./configure -h"
677955fb5SAndrew Jones		exit 2
777955fb5SAndrew Jones	fi
877955fb5SAndrew Jones	source config.mak
977955fb5SAndrew Jones	source scripts/arch-run.bash
1077955fb5SAndrew Jonesfi
1177955fb5SAndrew Jones
1277955fb5SAndrew Jones# Allow user overrides of some config.mak variables
13bc315beaSAndrew Jonesmach=$MACHINE_OVERRIDE
14*5f77b72dSJean-Philippe Bruckerqemu_cpu=$TARGET_CPU_OVERRIDE
1577955fb5SAndrew Jonesfirmware=$FIRMWARE_OVERRIDE
1677955fb5SAndrew Jones
17bc315beaSAndrew Jones: "${mach:=virt}"
18*5f77b72dSJean-Philippe Brucker: "${qemu_cpu:=$TARGET_CPU}"
19*5f77b72dSJean-Philippe Brucker: "${qemu_cpu:=$DEFAULT_QEMU_CPU}"
2077955fb5SAndrew Jones: "${firmware:=$FIRMWARE}"
2177955fb5SAndrew Jones[ "$firmware" ] && firmware="-bios $firmware"
2277955fb5SAndrew Jones
2377955fb5SAndrew Jonesset_qemu_accelerator || exit $?
2477955fb5SAndrew Jones[ "$ACCEL" = "kvm" ] && QEMU_ARCH=$HOST
2577955fb5SAndrew Jonesacc="-accel $ACCEL$ACCEL_PROPS"
2677955fb5SAndrew Jones
2777955fb5SAndrew Jonesqemu=$(search_qemu_binary) || exit $?
28bc315beaSAndrew Jonesif [ "$mach" = 'virt' ] && ! $qemu -machine '?' | grep -q 'RISC-V VirtIO board'; then
2977955fb5SAndrew Jones	echo "$qemu doesn't support mach-virt ('-machine virt'). Exiting."
3077955fb5SAndrew Jones	exit 2
3177955fb5SAndrew Jonesfi
32bc315beaSAndrew Jonesmach="-machine $mach"
3377955fb5SAndrew Jones
3477955fb5SAndrew Jonescommand="$qemu -nodefaults -nographic -serial mon:stdio"
35*5f77b72dSJean-Philippe Bruckercommand+=" $mach $acc $firmware -cpu $qemu_cpu "
3677955fb5SAndrew Jonescommand="$(migration_cmd) $(timeout_cmd) $command"
3777955fb5SAndrew Jones
38a755990cSAndrew Jonesif [ "$UEFI_SHELL_RUN" = "y" ]; then
3977955fb5SAndrew Jones	ENVIRON_DEFAULT=n run_qemu_status $command "$@"
4077955fb5SAndrew Joneselse
4177955fb5SAndrew Jones	# We return the exit code via stdout, not via the QEMU return code
4277955fb5SAndrew Jones	run_qemu_status $command -kernel "$@"
4377955fb5SAndrew Jonesfi
44