mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-05 18:41:58 +09:00
UPSTREAM: iommu/amd: Add missing domain type checks
Drivers are supposed to list the domain types they support in their domain_alloc() ops so when we add new domain types, like BLOCKING or SVA, they don't start breaking. This ended up providing an empty UNMANAGED domain when the core code asked for a BLOCKING domain, which happens to be the fallback for drivers that don't support it, but this is completely wrong for SVA. Check for the DMA types AMD supports and reject every other kind. Bug: 254441685 Fixes:136467962e("iommu: Add IOMMU SVA domain support") Signed-off-by: Jason Gunthorpe <jgg@nvidia.com> Reviewed-by: Vasant Hegde <vasant.hegde@amd.com> Reviewed-by: Kevin Tian <kevin.tian@intel.com> Link: https://lore.kernel.org/r/0-v1-2ac37b893728+da-amd_check_types_jgg@nvidia.com Signed-off-by: Joerg Roedel <jroedel@suse.de> (cherry picked from commit29f54745f2) Signed-off-by: Lee Jones <joneslee@google.com> Change-Id: Id103dd8992f7a094e47ab5878c969dafe5c26f25
This commit is contained in:
committed by
Lee Jones
parent
820f96cba5
commit
3c60e58d7a
@@ -2051,7 +2051,7 @@ static struct protection_domain *protection_domain_alloc(unsigned int type)
|
||||
{
|
||||
struct io_pgtable_ops *pgtbl_ops;
|
||||
struct protection_domain *domain;
|
||||
int pgtable = amd_iommu_pgtable;
|
||||
int pgtable;
|
||||
int mode = DEFAULT_PGTABLE_LEVEL;
|
||||
int ret;
|
||||
|
||||
@@ -2068,6 +2068,10 @@ static struct protection_domain *protection_domain_alloc(unsigned int type)
|
||||
mode = PAGE_MODE_NONE;
|
||||
} else if (type == IOMMU_DOMAIN_UNMANAGED) {
|
||||
pgtable = AMD_IOMMU_V1;
|
||||
} else if (type == IOMMU_DOMAIN_DMA || type == IOMMU_DOMAIN_DMA_FQ) {
|
||||
pgtable = amd_iommu_pgtable;
|
||||
} else {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
switch (pgtable) {
|
||||
|
||||
Reference in New Issue
Block a user