File uefi-default-firmware.patch of Package cockpit-machines

From a7a02f9aaabf6cc4c92f672eb08752374f614a32 Mon Sep 17 00:00:00 2001
From: Miika Alikirri <miika.alikirri@suse.com>
Date: Wed, 9 Jul 2025 11:11:07 +0300
Subject: Explicitly set UEFI as default firmware

---
 src/libvirtApi/domain.ts | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/src/libvirtApi/domain.ts b/src/libvirtApi/domain.ts
index 88d39dab..61926d52 100644
--- a/src/libvirtApi/domain.ts
+++ b/src/libvirtApi/domain.ts
@@ -360,6 +360,7 @@ interface DomainSpec {
     userPassword: string,
     vmName: string,
     sshKeys: string[],
+    firmware: 'bios' | 'uefi'
 }
 
 export async function domainCreate({
@@ -415,6 +416,7 @@ export async function domainCreate({
         userPassword,
         vmName,
         sshKeys,
+        firmware: "uefi",
     };
 
     logDebug(`CREATE_VM(${vmName}): install_machine.py '${JSON.stringify(args)}'`);
-- 
2.50.0


From a5dcfb74c517aea09f17bd3efc0ef750c335e39b Mon Sep 17 00:00:00 2001
From: Miika Alikirri <miika.alikirri@suse.com>
Date: Thu, 10 Jul 2025 12:48:50 +0300
Subject: libvirt: allow changing from UEFI to BIOS

When UEFI is already selected and a user tries to switch to BIOS, not
all the relevant UEFI related elements are removed

This patch adds the functionality for removing loader and nvram if they
are set
---
 src/libvirtApi/domain.ts | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/src/libvirtApi/domain.ts b/src/libvirtApi/domain.ts
index 61926d52..5ba12a0b 100644
--- a/src/libvirtApi/domain.ts
+++ b/src/libvirtApi/domain.ts
@@ -1297,6 +1297,16 @@ export async function domainSetOSFirmware({
     if (loaderElem)
         loaderElem.remove();
 
+    // remove efi related things so it gets actually disabled
+    if (!loaderType || loaderType === "bios") {
+        const fwElem = getSingleOptionalElem(osElem, "firmware");
+        if (fwElem)
+            fwElem.remove();
+        const nvramElem = getSingleOptionalElem(osElem, "nvram");
+        if (nvramElem)
+            nvramElem.remove();
+    }
+
     if (!loaderType)
         osElem.removeAttribute("firmware");
     else
-- 
2.50.0

openSUSE Build Service is sponsored by