aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/iommu/arm-smmu.c
diff options
context:
space:
mode:
authorWill Deacon <will.deacon@arm.com>2016-02-18 07:05:57 -0500
committerWill Deacon <will.deacon@arm.com>2016-02-18 10:02:44 -0500
commitcbf8277ef4562075eb4e3932ccd60cc11ee9454c (patch)
tree87ad12c98e3264e58b7ad62c972ed8a5e8e1c068 /drivers/iommu/arm-smmu.c
parentbc7f2ce0a7b54ba7703f81995fe434f0926424d2 (diff)
iommu/arm-smmu: Treat IOMMU_DOMAIN_DMA as bypass for now
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>
Diffstat (limited to 'drivers/iommu/arm-smmu.c')
-rw-r--r--drivers/iommu/arm-smmu.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/iommu/arm-smmu.c b/drivers/iommu/arm-smmu.c
index f21332a15040..2409e3bd3df2 100644
--- a/drivers/iommu/arm-smmu.c
+++ b/drivers/iommu/arm-smmu.c
@@ -1094,6 +1094,13 @@ static int arm_smmu_domain_add_master(struct arm_smmu_domain *smmu_domain,
1094 if (ret) 1094 if (ret)
1095 return ret == -EEXIST ? 0 : ret; 1095 return ret == -EEXIST ? 0 : ret;
1096 1096
1097 /*
1098 * FIXME: This won't be needed once we have IOMMU-backed DMA ops
1099 * for all devices behind the SMMU.
1100 */
1101 if (smmu_domain->domain.type == IOMMU_DOMAIN_DMA)
1102 return 0;
1103
1097 for (i = 0; i < cfg->num_streamids; ++i) { 1104 for (i = 0; i < cfg->num_streamids; ++i) {
1098 u32 idx, s2cr; 1105 u32 idx, s2cr;
1099 1106