mirror of
				git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
				synced 2025-09-04 20:19:47 +08:00 
			
		
		
		
	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>
This commit is contained in:
		
							parent
							
								
									bc7f2ce0a7
								
							
						
					
					
						commit
						cbf8277ef4
					
				| @ -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)) | ||||
|  | ||||
| @ -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; | ||||
| 
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Will Deacon
						Will Deacon