hw/riscv: virt: Exit if the user provided -bios in combination with KVM

The -bios option is silently ignored if used in combination with -enable-kvm.
The reason is that the machine starts in S-Mode, and the bios typically runs in
M-Mode.

Better exit in that case to not confuse the user.

Signed-off-by: Ralf Ramsauer <ralf.ramsauer@oth-regensburg.de>
Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
Reviewed-by: Anup Patel <anup@brainfault.org>
Message-Id: <20220401121842.2791796-1-ralf.ramsauer@oth-regensburg.de>
Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
This commit is contained in:
Ralf Ramsauer 2022-04-01 14:18:42 +02:00 committed by Alistair Francis
parent ac684717c3
commit 8f013700eb

View File

@ -1308,12 +1308,18 @@ static void virt_machine_init(MachineState *machine)
/* /*
* Only direct boot kernel is currently supported for KVM VM, * Only direct boot kernel is currently supported for KVM VM,
* so the "-bios" parameter is ignored and treated like "-bios none" * so the "-bios" parameter is not supported when KVM is enabled.
* when KVM is enabled.
*/ */
if (kvm_enabled()) { if (kvm_enabled()) {
g_free(machine->firmware); if (machine->firmware) {
machine->firmware = g_strdup("none"); if (strcmp(machine->firmware, "none")) {
error_report("Machine mode firmware is not supported in "
"combination with KVM.");
exit(1);
}
} else {
machine->firmware = g_strdup("none");
}
} }
if (riscv_is_32bit(&s->soc[0])) { if (riscv_is_32bit(&s->soc[0])) {