From: Peter Krempa <pkrempa@redhat.com> The user configuration of added/removed qemu capabilities via the qemu namespace element was applied only right before generating a commandline, but the validation code didn't see these. Modify the validation entry points so that they apply this optionally. Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- src/qemu/qemu_validate.c | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/src/qemu/qemu_validate.c b/src/qemu/qemu_validate.c index 82ef761fb8..7c0ea402c3 100644 --- a/src/qemu/qemu_validate.c +++ b/src/qemu/qemu_validate.c @@ -1295,18 +1295,21 @@ qemuValidateDomainDef(const virDomainDef *def, void *parseOpaque) { virQEMUDriver *driver = opaque; + virQEMUCaps *qemuCapsIn = parseOpaque; g_autoptr(virQEMUCaps) qemuCapsLocal = NULL; - virQEMUCaps *qemuCaps = parseOpaque; + g_autoptr(virQEMUCaps) qemuCaps = NULL; size_t i; - if (!qemuCaps) { + if (!qemuCapsIn) { if (!(qemuCapsLocal = virQEMUCapsCacheLookup(driver->qemuCapsCache, def->emulator))) return -1; - - qemuCaps = qemuCapsLocal; + qemuCapsIn = qemuCapsLocal; } + if (qemuDomainUpdateCustomCapabilities(def, qemuCapsIn, &qemuCaps) < 0) + return -1; + if (def->os.type != VIR_DOMAIN_OSTYPE_HVM) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("Emulator '%1$s' does not support os type '%2$s'"), @@ -6047,17 +6050,20 @@ qemuValidateDomainDeviceDef(const virDomainDeviceDef *dev, void *parseOpaque) { virQEMUDriver *driver = opaque; + virQEMUCaps *qemuCapsIn = parseOpaque; g_autoptr(virQEMUCaps) qemuCapsLocal = NULL; - virQEMUCaps *qemuCaps = parseOpaque; + g_autoptr(virQEMUCaps) qemuCaps = NULL; - if (!qemuCaps) { + if (!qemuCapsIn) { if (!(qemuCapsLocal = virQEMUCapsCacheLookup(driver->qemuCapsCache, def->emulator))) return -1; - - qemuCaps = qemuCapsLocal; + qemuCapsIn = qemuCapsLocal; } + if (qemuDomainUpdateCustomCapabilities(def, qemuCapsIn, &qemuCaps) < 0) + return -1; + if (qemuValidateDomainDeviceInfo(dev, def, qemuCaps) < 0) return -1; -- 2.54.0