From f99576ca7ffd5c637eeaae7acae72a1d9f8fbc01 Mon Sep 17 00:00:00 2001 From: Daniel Henrique Barboza Date: Fri, 11 Dec 2020 09:58:28 -0300 Subject: [PATCH] domain_validate.c: put IOMMU validation into a new function All other validations from virDomainDefValidateInternal() are done in their own functions. Take IOMMU validation out of the function body and into its own function. Reviewed-by: Michal Privoznik Signed-off-by: Daniel Henrique Barboza --- src/conf/domain_validate.c | 41 ++++++++++++++++++++++++-------------- 1 file changed, 26 insertions(+), 15 deletions(-) diff --git a/src/conf/domain_validate.c b/src/conf/domain_validate.c index 0ea9d6805c..d920ad397e 100644 --- a/src/conf/domain_validate.c +++ b/src/conf/domain_validate.c @@ -1042,6 +1042,31 @@ virDomainDefCputuneValidate(const virDomainDef *def) #undef CPUTUNE_VALIDATE_QUOTA +static int +virDomainDefIOMMUValidate(const virDomainDef *def) +{ + if (!def->iommu) + return 0; + + if (def->iommu->intremap == VIR_TRISTATE_SWITCH_ON && + def->features[VIR_DOMAIN_FEATURE_IOAPIC] != VIR_DOMAIN_IOAPIC_QEMU) { + virReportError(VIR_ERR_XML_ERROR, "%s", + _("IOMMU interrupt remapping requires split I/O APIC " + "(ioapic driver='qemu')")); + return -1; + } + + if (def->iommu->eim == VIR_TRISTATE_SWITCH_ON && + def->iommu->intremap != VIR_TRISTATE_SWITCH_ON) { + virReportError(VIR_ERR_XML_ERROR, "%s", + _("IOMMU eim requires interrupt remapping to be enabled")); + return -1; + } + + return 0; +} + + static int virDomainDefValidateInternal(const virDomainDef *def, virDomainXMLOptionPtr xmlopt) @@ -1058,22 +1083,8 @@ virDomainDefValidateInternal(const virDomainDef *def, if (virDomainDefValidateAliases(def, NULL) < 0) return -1; - if (def->iommu && - def->iommu->intremap == VIR_TRISTATE_SWITCH_ON && - def->features[VIR_DOMAIN_FEATURE_IOAPIC] != VIR_DOMAIN_IOAPIC_QEMU) { - virReportError(VIR_ERR_XML_ERROR, "%s", - _("IOMMU interrupt remapping requires split I/O APIC " - "(ioapic driver='qemu')")); + if (virDomainDefIOMMUValidate(def) < 0) return -1; - } - - if (def->iommu && - def->iommu->eim == VIR_TRISTATE_SWITCH_ON && - def->iommu->intremap != VIR_TRISTATE_SWITCH_ON) { - virReportError(VIR_ERR_XML_ERROR, "%s", - _("IOMMU eim requires interrupt remapping to be enabled")); - return -1; - } if (virDomainDefLifecycleActionValidate(def) < 0) return -1;