NVRAM files in JSON format can only be used together with the
uefi-vars QEMU device, and the firmware descriptor is required to
advertise the host-uefi-vars feature in that case.
Signed-off-by: Andrea Bolognani <abologna@redhat.com>
---
src/qemu/qemu_firmware.c | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/src/qemu/qemu_firmware.c b/src/qemu/qemu_firmware.c
index f56a4977cf..ce90f95d0a 100644
--- a/src/qemu/qemu_firmware.c
+++ b/src/qemu/qemu_firmware.c
@@ -1217,6 +1217,7 @@ qemuFirmwareMatchDomain(const virDomainDef *def,
bool supportsTDX = false;
bool supportsSecureBoot = false;
bool hasEnrolledKeys = false;
+ bool usesUefiVarsDevice = false;
int reqSecureBoot;
int reqEnrolledKeys;
@@ -1305,6 +1306,9 @@ qemuFirmwareMatchDomain(const virDomainDef *def,
break;
case QEMU_FIRMWARE_FEATURE_HOST_UEFI_VARS:
+ usesUefiVarsDevice = true;
+ break;
+
case QEMU_FIRMWARE_FEATURE_VERBOSE_DYNAMIC:
case QEMU_FIRMWARE_FEATURE_VERBOSE_STATIC:
case QEMU_FIRMWARE_FEATURE_NONE:
@@ -1533,6 +1537,11 @@ qemuFirmwareMatchDomain(const virDomainDef *def,
virStorageFileFormatTypeToString(loader->nvram->format));
return false;
}
+
+ if (!usesUefiVarsDevice) {
+ VIR_DEBUG("Discarding loader with nvram template format 'json' and no 'host-uefi-vars' feature");
+ return false;
+ }
} else {
if (loader && loader->nvram &&
(loader->nvram->path || loader->nvram->format)) {
--
2.52.0