From d17429be26ff1afa4be40187c7b9ec0b50c2a4d1 Mon Sep 17 00:00:00 2001 From: Daan De Meyer Date: Wed, 18 May 2022 18:06:28 +0200 Subject: [PATCH] qemu: Only enable uefi related options when we want to boot using uefi --- mkosi/__init__.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/mkosi/__init__.py b/mkosi/__init__.py index 5ab575ecf..755c1e142 100644 --- a/mkosi/__init__.py +++ b/mkosi/__init__.py @@ -7715,12 +7715,20 @@ def qemu_check_kvm_support() -> bool: def run_qemu_cmdline(args: MkosiArgs) -> Iterator[List[str]]: accel = "kvm" if args.qemu_kvm else "tcg" + if "uefi" in args.boot_protocols: + mode = "uefi" + elif "bios" in args.boot_protocols: + mode = "bios" + else: + mode = "uefi" + firmware, fw_supports_sb = find_qemu_firmware() + smm = "on" if fw_supports_sb and mode == "uefi" else "off" cmdline = [ find_qemu_binary(), "-machine", - f"type=q35,accel={accel},smm={'on' if fw_supports_sb else 'off'}", + f"type=q35,accel={accel},smm={smm}", "-smp", args.qemu_smp, "-m", @@ -7741,7 +7749,7 @@ def run_qemu_cmdline(args: MkosiArgs) -> Iterator[List[str]]: # Fix for https://github.com/systemd/mkosi/issues/559. QEMU gets stuck in a boot loop when using BIOS # if there's no vga device. - if not args.qemu_headless or (args.qemu_headless and "bios" in args.boot_protocols): + if not args.qemu_headless or (args.qemu_headless and mode == "bios"): cmdline += ["-vga", "virtio"] if args.netdev: @@ -7759,11 +7767,11 @@ def run_qemu_cmdline(args: MkosiArgs) -> Iterator[List[str]]: # after it is created. cmdline += ["-nic", f"tap,script=no,downscript=no,ifname={ifname},model=virtio-net-pci"] - if "uefi" in args.boot_protocols: + if mode == "uefi": cmdline += ["-drive", f"if=pflash,format=raw,readonly=on,file={firmware}"] with contextlib.ExitStack() as stack: - if fw_supports_sb: + if mode == "uefi" and fw_supports_sb: ovmf_vars = stack.enter_context(copy_file_temporary(src=find_ovmf_vars(), dir=tmp_dir())) cmdline += [ "-global", -- 2.47.2