mirror of
				https://github.com/torvalds/linux.git
				synced 2025-10-31 16:48:26 +02:00 
			
		
		
		
	drm/tegra: 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_client_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.
Fixes: c8cc2655cc ("iommu/tegra-smmu: Implement an IDENTITY domain")
Reported-by: diogo.ivo@tecnico.ulisboa.pt
Closes: https://lore.kernel.org/all/bbmhcoghrprmbdibnjum6lefix2eoquxrde7wyqeulm4xabmlm@b6jy32saugqh/
Tested-by: diogo.ivo@tecnico.ulisboa.pt
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
Link: https://lore.kernel.org/r/0-v1-3049f92c4812+16691-host1x_def_dom_fix_jgg@nvidia.com
Signed-off-by: Joerg Roedel <jroedel@suse.de>
			
			
This commit is contained in:
		
							parent
							
								
									83b3836bf8
								
							
						
					
					
						commit
						fae6e669cd
					
				
					 1 changed files with 2 additions and 1 deletions
				
			
		|  | @ -960,7 +960,8 @@ int host1x_client_iommu_attach(struct host1x_client *client) | |||
| 	 * not the shared IOMMU domain, don't try to attach it to a different | ||||
| 	 * domain. This allows using the IOMMU-backed DMA API. | ||||
| 	 */ | ||||
| 	if (domain && domain != tegra->domain) | ||||
| 	if (domain && domain->type != IOMMU_DOMAIN_IDENTITY && | ||||
| 	    domain != tegra->domain) | ||||
| 		return 0; | ||||
| 
 | ||||
| 	if (tegra->domain) { | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue
	
	 Jason Gunthorpe
						Jason Gunthorpe