From: Daan De Meyer Date: Sun, 17 Dec 2023 16:53:54 +0000 (+0100) Subject: qemu: Always use smbios on x86 X-Git-Tag: v20~55^2~13 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=92cb240047fcd8aca4c6a801504ad8a3e95b4a59;p=thirdparty%2Fmkosi.git qemu: Always use smbios on x86 On x86, smbios is always there even if we're not booting from UEFI so let's make sure we make use of it. --- diff --git a/mkosi/config.py b/mkosi/config.py index 7a01198a8..93c92c804 100644 --- a/mkosi/config.py +++ b/mkosi/config.py @@ -341,8 +341,11 @@ class Architecture(StrEnum): Architecture.s390x : "ttysclp0", }.get(self, "ttyS0") - def supports_smbios(self) -> bool: - return self in (Architecture.x86, Architecture.x86_64, Architecture.arm, Architecture.arm64) + def supports_smbios(self, firmware: QemuFirmware) -> bool: + if self in (Architecture.x86, Architecture.x86_64): + return True + + return self in (Architecture.arm, Architecture.arm64) and firmware == QemuFirmware.uefi def supports_fw_cfg(self) -> bool: return self in (Architecture.x86, Architecture.x86_64, Architecture.arm, Architecture.arm64) diff --git a/mkosi/qemu.py b/mkosi/qemu.py index 088e7ad95..d59cfa88b 100644 --- a/mkosi/qemu.py +++ b/mkosi/qemu.py @@ -611,7 +611,7 @@ def run_qemu(args: MkosiArgs, config: MkosiConfig, qemu_device_fds: Mapping[Qemu for k, v in config.credentials.items(): payload = base64.b64encode(v.encode()).decode() - if config.architecture.supports_smbios() and firmware == QemuFirmware.uefi: + if config.architecture.supports_smbios(firmware): cmdline += ["-smbios", f"type=11,value=io.systemd.credential.binary:{k}={payload}"] elif config.architecture.supports_fw_cfg(): f = stack.enter_context(tempfile.NamedTemporaryFile(prefix="mkosi-fw-cfg", mode="w")) @@ -668,7 +668,10 @@ def run_qemu(args: MkosiArgs, config: MkosiConfig, qemu_device_fds: Mapping[Qemu "--offline=yes", fname]) - if kernel and (KernelType.identify(kernel) != KernelType.uki or not config.architecture.supports_smbios()): + if ( + kernel and + (KernelType.identify(kernel) != KernelType.uki or not config.architecture.supports_smbios(firmware)) + ): kcl = config.kernel_command_line + config.kernel_command_line_extra else: kcl = config.kernel_command_line_extra @@ -703,9 +706,12 @@ def run_qemu(args: MkosiArgs, config: MkosiConfig, qemu_device_fds: Mapping[Qemu target = Path("/root/src") / (tree.target or tree.source.name) kcl += [f"systemd.mount-extra={sock.name}:{target}:virtiofs"] - if kernel and (KernelType.identify(kernel) != KernelType.uki or not config.architecture.supports_smbios()): + if ( + kernel and + (KernelType.identify(kernel) != KernelType.uki or not config.architecture.supports_smbios(firmware)) + ): cmdline += ["-append", " ".join(kcl)] - elif config.architecture.supports_smbios(): + elif config.architecture.supports_smbios(firmware): cmdline += [ "-smbios", f"type=11,value=io.systemd.stub.kernel-cmdline-extra={' '.join(kcl)}" @@ -739,7 +745,7 @@ def run_qemu(args: MkosiArgs, config: MkosiConfig, qemu_device_fds: Mapping[Qemu elif config.architecture == Architecture.arm64: cmdline += ["-device", "tpm-tis-device,tpmdev=tpm0"] - if QemuDeviceNode.vhost_vsock in qemu_device_fds and config.architecture.supports_smbios(): + if QemuDeviceNode.vhost_vsock in qemu_device_fds and config.architecture.supports_smbios(firmware): addr, notifications = stack.enter_context(vsock_notify_handler()) cmdline += ["-smbios", f"type=11,value=io.systemd.credential:vmm.notify_socket={addr}"]