diff --git a/src/conf/domain_validate.c b/src/conf/domain_validate.c index 88205c64e0..1c78a3d31c 100644 --- a/src/conf/domain_validate.c +++ b/src/conf/domain_validate.c @@ -2633,27 +2633,6 @@ virDomainIOMMUDefValidate(const virDomainIOMMUDef *iommu) { switch (iommu->model) { case VIR_DOMAIN_IOMMU_MODEL_SMMUV3: - if (iommu->intremap != VIR_TRISTATE_SWITCH_ABSENT || - iommu->caching_mode != VIR_TRISTATE_SWITCH_ABSENT || - iommu->eim != VIR_TRISTATE_SWITCH_ABSENT || - iommu->iotlb != VIR_TRISTATE_SWITCH_ABSENT || - iommu->aw_bits != 0) { - virReportError(VIR_ERR_XML_ERROR, - _("iommu model '%s' doesn't support additional attributes"), - virDomainIOMMUModelTypeToString(iommu->model)); - return -1; - } - G_GNUC_FALLTHROUGH; - - case VIR_DOMAIN_IOMMU_MODEL_INTEL: - if (iommu->info.type != VIR_DOMAIN_DEVICE_ADDRESS_TYPE_NONE) { - virReportError(VIR_ERR_XML_ERROR, - _("iommu model '%s' can't have address"), - virDomainIOMMUModelTypeToString(iommu->model)); - return -1; - } - break; - case VIR_DOMAIN_IOMMU_MODEL_VIRTIO: if (iommu->intremap != VIR_TRISTATE_SWITCH_ABSENT || iommu->caching_mode != VIR_TRISTATE_SWITCH_ABSENT || @@ -2667,6 +2646,23 @@ virDomainIOMMUDefValidate(const virDomainIOMMUDef *iommu) } break; + case VIR_DOMAIN_IOMMU_MODEL_INTEL: + case VIR_DOMAIN_IOMMU_MODEL_LAST: + break; + } + + switch (iommu->model) { + case VIR_DOMAIN_IOMMU_MODEL_SMMUV3: + case VIR_DOMAIN_IOMMU_MODEL_INTEL: + if (iommu->info.type != VIR_DOMAIN_DEVICE_ADDRESS_TYPE_NONE) { + virReportError(VIR_ERR_XML_ERROR, + _("iommu model '%s' can't have address"), + virDomainIOMMUModelTypeToString(iommu->model)); + return -1; + } + break; + + case VIR_DOMAIN_IOMMU_MODEL_VIRTIO: case VIR_DOMAIN_IOMMU_MODEL_LAST: break; }