mirror of
				https://github.com/torvalds/linux.git
				synced 2025-10-31 00:28:52 +02:00 
			
		
		
		
	gpu: host1x: Do not assume that a NULL domain means no DMA IOMMU
Previously with tegra-smmu, even with CONFIG_IOMMU_DMA, the default domain could have been left as NULL. The NULL domain is specially recognized by host1x_iommu_attach() as meaning it is not the DMA domain and should be replaced with the special shared domain. This happened prior to the below commit because tegra-smmu was using the NULL domain to mean IDENTITY. Now that the domain is properly labled the test in DRM doesn't see NULL. Check for IDENTITY as well to enable the special domains. This is the same issue and basic fix as seen in commitfae6e669cd("drm/tegra: Do not assume that a NULL domain means no DMA IOMMU"). Fixes:c8cc2655cc("iommu/tegra-smmu: Implement an IDENTITY domain") Reported-by: Diogo Ivo <diogo.ivo@tecnico.ulisboa.pt> Closes: https://lore.kernel.org/all/c6a6f114-3acd-4d56-a13b-b88978e927dc@tecnico.ulisboa.pt/ Tested-by: Diogo Ivo <diogo.ivo@tecnico.ulisboa.pt> Signed-off-by: Jason Gunthorpe <jgg@nvidia.com> Signed-off-by: Thierry Reding <treding@nvidia.com> Link: https://patchwork.freedesktop.org/patch/msgid/0-v1-10dcc8ce3869+3a7-host1x_identity_jgg@nvidia.com
This commit is contained in:
		
							parent
							
								
									67d15c7aa0
								
							
						
					
					
						commit
						cb83f4b965
					
				
					 1 changed files with 6 additions and 0 deletions
				
			
		|  | @ -361,6 +361,10 @@ static bool host1x_wants_iommu(struct host1x *host1x) | |||
| 	return true; | ||||
| } | ||||
| 
 | ||||
| /*
 | ||||
|  * Returns ERR_PTR on failure, NULL if the translation is IDENTITY, otherwise a | ||||
|  * valid paging domain. | ||||
|  */ | ||||
| static struct iommu_domain *host1x_iommu_attach(struct host1x *host) | ||||
| { | ||||
| 	struct iommu_domain *domain = iommu_get_domain_for_dev(host->dev); | ||||
|  | @ -385,6 +389,8 @@ static struct iommu_domain *host1x_iommu_attach(struct host1x *host) | |||
| 	 * Similarly, if host1x is already attached to an IOMMU (via the DMA | ||||
| 	 * API), don't try to attach again. | ||||
| 	 */ | ||||
| 	if (domain && domain->type == IOMMU_DOMAIN_IDENTITY) | ||||
| 		domain = NULL; | ||||
| 	if (!host1x_wants_iommu(host) || domain) | ||||
| 		return domain; | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue
	
	 Jason Gunthorpe
						Jason Gunthorpe