Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cbf8277e authored by Will Deacon's avatar Will Deacon
Browse files

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: default avatarWill Deacon <will.deacon@arm.com>
parent bc7f2ce0
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
@@ -1687,7 +1687,12 @@ static int arm_smmu_attach_dev(struct iommu_domain *domain, struct device *dev)
		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))
+7 −0
Original line number Diff line number Diff line
@@ -1094,6 +1094,13 @@ static int arm_smmu_domain_add_master(struct arm_smmu_domain *smmu_domain,
	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;