Until all upstream devices have their DMA ops swizzled to point at the
SMMU, we need to treat the IOMMU_DOMAIN_DMA domain as bypass to avoid
putting devices into an empty address space when detaching from VFIO.
Signed-off-by: Will Deacon <will.deacon@arm.com>
                goto out_unlock;
 
        smmu_group->domain      = smmu_domain;
-       smmu_group->ste.bypass  = false;
+
+       /*
+        * FIXME: This should always be "false" once we have IOMMU-backed
+        * DMA ops for all devices behind the SMMU.
+        */
+       smmu_group->ste.bypass  = domain->type == IOMMU_DOMAIN_DMA;
 
        ret = arm_smmu_install_ste_for_group(smmu_group);
        if (IS_ERR_VALUE(ret))
 
        if (ret)
                return ret == -EEXIST ? 0 : ret;
 
+       /*
+        * FIXME: This won't be needed once we have IOMMU-backed DMA ops
+        * for all devices behind the SMMU.
+        */
+       if (smmu_domain->domain.type == IOMMU_DOMAIN_DMA)
+               return 0;
+
        for (i = 0; i < cfg->num_streamids; ++i) {
                u32 idx, s2cr;