From: Ján Tomko Date: Wed, 23 Aug 2017 17:15:06 +0000 (+0200) Subject: conf: validate IOMMU interrupt remapping setting X-Git-Tag: v3.8.0-rc1~153 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=90cd99a42e1afabc57f70a0e1e17e27f986ae04f;p=thirdparty%2Flibvirt.git conf: validate IOMMU interrupt remapping setting This option requires: Report an error in case someone tries to combine it with different ioapic setting. Setting 'eim' on without enabling 'intremap' does not make sense. https://bugzilla.redhat.com/show_bug.cgi?id=1457610 --- diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index ae2e96e964..676fc0f34b 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -5575,6 +5575,24 @@ virDomainDefValidateInternal(const virDomainDef *def) if (virDomainDefGetVcpusTopology(def, NULL) < 0) return -1; + if (def->iommu && + def->iommu->intremap == VIR_TRISTATE_SWITCH_ON && + (def->features[VIR_DOMAIN_FEATURE_IOAPIC] != VIR_TRISTATE_SWITCH_ON || + def->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 && + 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; }