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 <[email protected]> --- 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
