]> git.ipfire.org Git - thirdparty/mkosi.git/commitdiff
qemu: Always use smbios on x86
authorDaan De Meyer <daan.j.demeyer@gmail.com>
Sun, 17 Dec 2023 16:53:54 +0000 (17:53 +0100)
committerDaan De Meyer <daan.j.demeyer@gmail.com>
Mon, 18 Dec 2023 11:19:13 +0000 (12:19 +0100)
On x86, smbios is always there even if we're not booting from UEFI
so let's make sure we make use of it.

mkosi/config.py
mkosi/qemu.py

index 7a01198a864929095066a2105924297d441bbb13..93c92c804092d4c17402a03f1d3db9115d458e14 100644 (file)
@@ -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)
index 088e7ad956d79141456d383485359a568e485345..d59cfa88b84a35f31a233df6c23cc4840ffe403a 100644 (file)
@@ -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}"]