diff options
author | 2024-11-08 10:13:59 +0800 | |
---|---|---|
committer | 2024-11-08 14:04:55 +0100 | |
commit | c33e20869c59c1f78aab11188849dfb15ab412b2 (patch) | |
tree | faa65a03f86fed82bfe53ee74b0fbba108464dc7 | |
parent | iommu/vt-d: Make intel_iommu_set_dev_pasid() to handle domain replacement (diff) | |
download | wireguard-linux-c33e20869c59c1f78aab11188849dfb15ab412b2.tar.xz wireguard-linux-c33e20869c59c1f78aab11188849dfb15ab412b2.zip |
iommu/vt-d: Limit intel_iommu_set_dev_pasid() for paging domain
intel_iommu_set_dev_pasid() is only supposed to be used by paging domain,
so limit it.
Reviewed-by: Lu Baolu <baolu.lu@linux.intel.com>
Reviewed-by: Kevin Tian <kevin.tian@intel.com>
Signed-off-by: Yi Liu <yi.l.liu@intel.com>
Link: https://lore.kernel.org/r/20241107122234.7424-9-yi.l.liu@intel.com
Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com>
Signed-off-by: Joerg Roedel <jroedel@suse.de>
-rw-r--r-- | drivers/iommu/intel/iommu.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/iommu/intel/iommu.c b/drivers/iommu/intel/iommu.c index d19bd0ff5220..f3ccbe516dcb 100644 --- a/drivers/iommu/intel/iommu.c +++ b/drivers/iommu/intel/iommu.c @@ -4154,6 +4154,9 @@ static int intel_iommu_set_dev_pasid(struct iommu_domain *domain, struct dev_pasid_info *dev_pasid; int ret; + if (WARN_ON_ONCE(!(domain->type & __IOMMU_DOMAIN_PAGING))) + return -EINVAL; + if (!pasid_supported(iommu) || dev_is_real_dma_subdevice(dev)) return -EOPNOTSUPP; @@ -4182,8 +4185,7 @@ static int intel_iommu_set_dev_pasid(struct iommu_domain *domain, domain_remove_dev_pasid(old, dev, pasid); - if (domain->type & __IOMMU_DOMAIN_PAGING) - intel_iommu_debugfs_create_dev_pasid(dev_pasid); + intel_iommu_debugfs_create_dev_pasid(dev_pasid); return 0; |