This makes guests actually functional.

https://issues.redhat.com/browse/RHEL-82645

Signed-off-by: Andrea Bolognani <[email protected]>
---
 src/qemu/qemu_command.c                       | 36 +++++++++++++++++++
 ...-enrolled-keys-aarch64.aarch64-latest.args |  1 +
 ...o-efi-format-nvram-json.x86_64-latest.args |  1 +
 ...l-efi-qemuvars-aarch64.aarch64-latest.args |  1 +
 ...manual-efi-qemuvars-q35.x86_64-latest.args |  1 +
 5 files changed, 40 insertions(+)

diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
index 98229d7cf9..2e98710548 100644
--- a/src/qemu/qemu_command.c
+++ b/src/qemu/qemu_command.c
@@ -9731,6 +9731,39 @@ qemuBuildDomainLoaderCommandLine(virCommand *cmd,
 }
 
 
+static int
+qemuBuildUefiVarsCommandLine(virCommand *cmd,
+                             const virDomainDef *def,
+                             virQEMUCaps *qemuCaps)
+{
+    virDomainLoaderDef *loader = def->os.loader;
+    g_autoptr(virJSONValue) props = NULL;
+    const char *model = NULL;
+
+    if (!loader || !loader->nvram)
+        return 0;
+
+    if (loader->nvram->format != VIR_STORAGE_FILE_JSON)
+        return 0;
+
+    if (ARCH_IS_X86(def->os.arch))
+        model = "uefi-vars-x64";
+    else
+        model = "uefi-vars-sysbus";
+
+    if (virJSONValueObjectAdd(&props,
+                              "s:driver", model,
+                              "s:jsonfile", loader->nvram->path,
+                              NULL) < 0)
+        return -1;
+
+    if (qemuBuildDeviceCommandlineFromJSON(cmd, props, def, qemuCaps) < 0)
+        return -1;
+
+    return 0;
+}
+
+
 static int
 qemuBuildTPMDevCmd(virCommand *cmd,
                    const virDomainDef *def,
@@ -10805,6 +10838,9 @@ qemuBuildCommandLine(virDomainObj *vm,
 
     qemuBuildDomainLoaderCommandLine(cmd, def);
 
+    if (qemuBuildUefiVarsCommandLine(cmd, def, qemuCaps) < 0)
+        return NULL;
+
     if (qemuBuildMemCommandLine(cmd, def, qemuCaps, priv) < 0)
         return NULL;
 
diff --git 
a/tests/qemuxmlconfdata/firmware-auto-efi-enrolled-keys-aarch64.aarch64-latest.args
 
b/tests/qemuxmlconfdata/firmware-auto-efi-enrolled-keys-aarch64.aarch64-latest.args
index d12949dbf2..de5745ddd4 100644
--- 
a/tests/qemuxmlconfdata/firmware-auto-efi-enrolled-keys-aarch64.aarch64-latest.args
+++ 
b/tests/qemuxmlconfdata/firmware-auto-efi-enrolled-keys-aarch64.aarch64-latest.args
@@ -13,6 +13,7 @@ XDG_CONFIG_HOME=/var/lib/libvirt/qemu/domain--1-guest/.config 
\
 -machine 
virt-4.0,usb=off,gic-version=3,dump-guest-core=off,memory-backend=mach-virt.ram,acpi=on
 \
 -accel kvm \
 -bios /usr/share/edk2/aarch64/QEMU_EFI.qemuvars.fd \
+-device 
'{"driver":"uefi-vars-sysbus","jsonfile":"/var/lib/libvirt/qemu/nvram/guest.json"}'
 \
 -m size=1048576k \
 -object 
'{"qom-type":"memory-backend-ram","id":"mach-virt.ram","size":1073741824}' \
 -overcommit mem-lock=off \
diff --git 
a/tests/qemuxmlconfdata/firmware-auto-efi-format-nvram-json.x86_64-latest.args 
b/tests/qemuxmlconfdata/firmware-auto-efi-format-nvram-json.x86_64-latest.args
index 9a899c2a65..1ff6a45599 100644
--- 
a/tests/qemuxmlconfdata/firmware-auto-efi-format-nvram-json.x86_64-latest.args
+++ 
b/tests/qemuxmlconfdata/firmware-auto-efi-format-nvram-json.x86_64-latest.args
@@ -14,6 +14,7 @@ XDG_CONFIG_HOME=/var/lib/libvirt/qemu/domain--1-guest/.config 
\
 -accel kvm \
 -cpu qemu64 \
 -bios /usr/share/edk2/ovmf/OVMF.qemuvars.fd \
+-device 
'{"driver":"uefi-vars-x64","jsonfile":"/var/lib/libvirt/qemu/nvram/guest.json"}'
 \
 -m size=1048576k \
 -object '{"qom-type":"memory-backend-ram","id":"pc.ram","size":1073741824}' \
 -overcommit mem-lock=off \
diff --git 
a/tests/qemuxmlconfdata/firmware-manual-efi-qemuvars-aarch64.aarch64-latest.args
 
b/tests/qemuxmlconfdata/firmware-manual-efi-qemuvars-aarch64.aarch64-latest.args
index 575ffdb42b..8c780f7f78 100644
--- 
a/tests/qemuxmlconfdata/firmware-manual-efi-qemuvars-aarch64.aarch64-latest.args
+++ 
b/tests/qemuxmlconfdata/firmware-manual-efi-qemuvars-aarch64.aarch64-latest.args
@@ -14,6 +14,7 @@ XDG_CONFIG_HOME=/var/lib/libvirt/qemu/domain--1-guest/.config 
\
 -accel tcg \
 -cpu cortex-a15 \
 -bios /usr/share/edk2/aarch64/QEMU_EFI.qemuvars.fd \
+-device '{"driver":"uefi-vars-sysbus","jsonfile":"/path/to/guest.json"}' \
 -m size=1048576k \
 -object 
'{"qom-type":"memory-backend-ram","id":"mach-virt.ram","size":1073741824}' \
 -overcommit mem-lock=off \
diff --git 
a/tests/qemuxmlconfdata/firmware-manual-efi-qemuvars-q35.x86_64-latest.args 
b/tests/qemuxmlconfdata/firmware-manual-efi-qemuvars-q35.x86_64-latest.args
index ffc3d3c86d..10eab01ef8 100644
--- a/tests/qemuxmlconfdata/firmware-manual-efi-qemuvars-q35.x86_64-latest.args
+++ b/tests/qemuxmlconfdata/firmware-manual-efi-qemuvars-q35.x86_64-latest.args
@@ -14,6 +14,7 @@ XDG_CONFIG_HOME=/var/lib/libvirt/qemu/domain--1-guest/.config 
\
 -accel tcg \
 -cpu qemu64 \
 -bios /usr/share/edk2/ovmf/OVMF.qemuvars.fd \
+-device '{"driver":"uefi-vars-x64","jsonfile":"/path/to/guest.json"}' \
 -m size=1048576k \
 -object '{"qom-type":"memory-backend-ram","id":"pc.ram","size":1073741824}' \
 -overcommit mem-lock=off \
-- 
2.52.0

Reply via email to