From: Andrea Bolognani Date: Mon, 8 Aug 2022 15:38:42 +0000 (+0200) Subject: conf: Simplify IOMMU device validation X-Git-Tag: v8.7.0-rc1~187 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d9afab48af981a669bee7567458e26f3148aa216;p=thirdparty%2Flibvirt.git conf: Simplify IOMMU device validation Instead of duplicating the list of attributes that are not allowed for some of the IOMMU models, use two separate switch statements: one for the attributes and one for the address. Signed-off-by: Andrea Bolognani Reviewed-by: Pavel Hrdina Reviewed-by: Ján Tomko --- 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,6 +2633,7 @@ virDomainIOMMUDefValidate(const virDomainIOMMUDef *iommu) { switch (iommu->model) { case VIR_DOMAIN_IOMMU_MODEL_SMMUV3: + case VIR_DOMAIN_IOMMU_MODEL_VIRTIO: if (iommu->intremap != VIR_TRISTATE_SWITCH_ABSENT || iommu->caching_mode != VIR_TRISTATE_SWITCH_ABSENT || iommu->eim != VIR_TRISTATE_SWITCH_ABSENT || @@ -2643,8 +2644,15 @@ virDomainIOMMUDefValidate(const virDomainIOMMUDef *iommu) virDomainIOMMUModelTypeToString(iommu->model)); return -1; } - G_GNUC_FALLTHROUGH; + 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, @@ -2655,18 +2663,6 @@ virDomainIOMMUDefValidate(const virDomainIOMMUDef *iommu) break; case VIR_DOMAIN_IOMMU_MODEL_VIRTIO: - 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; - } - break; - case VIR_DOMAIN_IOMMU_MODEL_LAST: break; }