mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-05-17 22:13:02 +00:00
iommu: Do not use IOMMU_DOMAIN_DMA if CONFIG_IOMMU_DMA is not enabled
msm_iommu platforms do not select either CONFIG_IOMMU_DMA or
CONFIG_ARM_DMA_USE_IOMMU so they create a IOMMU_DOMAIN_DMA domain by
default and never populate it. This acts like a BLOCKED domain and breaks
the GPU driver on the platform.
Detect this and force use of IDENTITY instead.
Fixes: 98ac73f99b
("iommu: Require a default_domain for all iommu drivers")
Reported-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Link: https://lore.kernel.org/linux-iommu/CAA8EJprz7VVmBG68U9zLuqPd0UdSRHYoLDJSP6tCj6H6qanuTQ@mail.gmail.com/
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
Reviewed-by: Jerry Snitselaar <jsnitsel@redhat.com>
Tested-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Link: https://lore.kernel.org/r/0-v1-20700abdf239+19c-iommu_no_dma_iommu_jgg@nvidia.com
Signed-off-by: Joerg Roedel <jroedel@suse.de>
This commit is contained in:
parent
ccb76c5751
commit
0f6a90436a
1 changed files with 12 additions and 0 deletions
|
@ -1920,6 +1920,18 @@ static int iommu_get_default_domain_type(struct iommu_group *group,
|
|||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* If the common dma ops are not selected in kconfig then we cannot use
|
||||
* IOMMU_DOMAIN_DMA at all. Force IDENTITY if nothing else has been
|
||||
* selected.
|
||||
*/
|
||||
if (!IS_ENABLED(CONFIG_IOMMU_DMA)) {
|
||||
if (WARN_ON(driver_type == IOMMU_DOMAIN_DMA))
|
||||
return -1;
|
||||
if (!driver_type)
|
||||
driver_type = IOMMU_DOMAIN_IDENTITY;
|
||||
}
|
||||
|
||||
if (untrusted) {
|
||||
if (driver_type && driver_type != IOMMU_DOMAIN_DMA) {
|
||||
dev_err_ratelimited(
|
||||
|
|
Loading…
Add table
Reference in a new issue