These drivers don't support IOMMU_DOMAIN_DMA, so this commit effectively
allows them to support that mode.
The prior work to require default_domains makes this safe because every
one of these drivers is either compilation incompatible with dma-iommu.c,
or already establishing a default_domain. In both cases alloc_domain()
will never be called with IOMMU_DOMAIN_DMA for these drivers so it is safe
to drop the test.
Removing these tests clarifies that the domain allocation path is only
about the functionality of a paging domain and has nothing to do with
policy of how the paging domain is used for UNMANAGED/DMA/DMA_FQ.
Tested-by: Niklas Schnelle <schnelle@linux.ibm.com>
Tested-by: Steven Price <steven.price@arm.com>
Tested-by: Marek Szyprowski <m.szyprowski@samsung.com>
Tested-by: Nicolin Chen <nicolinc@nvidia.com>
Reviewed-by: Lu Baolu <baolu.lu@linux.intel.com>
Reviewed-by: Jerry Snitselaar <jsnitsel@redhat.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
Link: https://lore.kernel.org/r/24-v8-81230027b2fa+9d-iommu_all_defdom_jgg@nvidia.com
Signed-off-by: Joerg Roedel <jroedel@suse.de>
        SET_M(base, ctx, 1);
 }
 
-static struct iommu_domain *msm_iommu_domain_alloc(unsigned type)
+static struct iommu_domain *msm_iommu_domain_alloc_paging(struct device *dev)
 {
        struct msm_priv *priv;
 
-       if (type != IOMMU_DOMAIN_UNMANAGED)
-               return NULL;
-
        priv = kzalloc(sizeof(*priv), GFP_KERNEL);
        if (!priv)
                goto fail_nomem;
 
 static struct iommu_ops msm_iommu_ops = {
        .identity_domain = &msm_iommu_identity_domain,
-       .domain_alloc = msm_iommu_domain_alloc,
+       .domain_alloc_paging = msm_iommu_domain_alloc_paging,
        .probe_device = msm_iommu_probe_device,
        .device_group = generic_device_group,
        .pgsize_bitmap = MSM_IOMMU_PGSIZES,
 
        return 0;
 }
 
-static struct iommu_domain *mtk_iommu_v1_domain_alloc(unsigned type)
+static struct iommu_domain *mtk_iommu_v1_domain_alloc_paging(struct device *dev)
 {
        struct mtk_iommu_v1_domain *dom;
 
-       if (type != IOMMU_DOMAIN_UNMANAGED)
-               return NULL;
-
        dom = kzalloc(sizeof(*dom), GFP_KERNEL);
        if (!dom)
                return NULL;
 
 static const struct iommu_ops mtk_iommu_v1_ops = {
        .identity_domain = &mtk_iommu_v1_identity_domain,
-       .domain_alloc   = mtk_iommu_v1_domain_alloc,
+       .domain_alloc_paging = mtk_iommu_v1_domain_alloc_paging,
        .probe_device   = mtk_iommu_v1_probe_device,
        .probe_finalize = mtk_iommu_v1_probe_finalize,
        .release_device = mtk_iommu_v1_release_device,
 
        .ops = &omap_iommu_identity_ops,
 };
 
-static struct iommu_domain *omap_iommu_domain_alloc(unsigned type)
+static struct iommu_domain *omap_iommu_domain_alloc_paging(struct device *dev)
 {
        struct omap_iommu_domain *omap_domain;
 
-       if (type != IOMMU_DOMAIN_UNMANAGED)
-               return NULL;
-
        omap_domain = kzalloc(sizeof(*omap_domain), GFP_KERNEL);
        if (!omap_domain)
                return NULL;
 
 static const struct iommu_ops omap_iommu_ops = {
        .identity_domain = &omap_iommu_identity_domain,
-       .domain_alloc   = omap_iommu_domain_alloc,
+       .domain_alloc_paging = omap_iommu_domain_alloc_paging,
        .probe_device   = omap_iommu_probe_device,
        .release_device = omap_iommu_release_device,
        .device_group   = omap_iommu_device_group,
 
        }
 }
 
-static struct iommu_domain *s390_domain_alloc(unsigned domain_type)
+static struct iommu_domain *s390_domain_alloc_paging(struct device *dev)
 {
        struct s390_domain *s390_domain;
 
-       if (domain_type != IOMMU_DOMAIN_UNMANAGED)
-               return NULL;
-
        s390_domain = kzalloc(sizeof(*s390_domain), GFP_KERNEL);
        if (!s390_domain)
                return NULL;
 static const struct iommu_ops s390_iommu_ops = {
        .default_domain = &s390_iommu_platform_domain,
        .capable = s390_iommu_capable,
-       .domain_alloc = s390_domain_alloc,
+       .domain_alloc_paging = s390_domain_alloc_paging,
        .probe_device = s390_iommu_probe_device,
        .release_device = s390_iommu_release_device,
        .device_group = generic_device_group,