]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
iommu: Remove the remove_dev_pasid op
authorYi Liu <yi.l.liu@intel.com>
Wed, 4 Dec 2024 12:29:28 +0000 (04:29 -0800)
committerJoerg Roedel <jroedel@suse.de>
Wed, 18 Dec 2024 08:39:37 +0000 (09:39 +0100)
The iommu drivers that supports PASID have supported attaching pasid to the
blocked_domain, hence remove the remove_dev_pasid op from the iommu_ops.

Reviewed-by: Jason Gunthorpe <jgg@nvidia.com>
Reviewed-by: Kevin Tian <kevin.tian@intel.com>
Reviewed-by: Vasant Hegde <vasant.hegde@amd.com>
Reviewed-by: Lu Baolu <baolu.lu@linux.intel.com>
Signed-off-by: Yi Liu <yi.l.liu@intel.com>
Link: https://lore.kernel.org/r/20241204122928.11987-8-yi.l.liu@intel.com
Signed-off-by: Joerg Roedel <jroedel@suse.de>
drivers/iommu/iommu.c
include/linux/iommu.h

index 2064dc8bb8b532d24962c561e5b881cf8cc6d537..28ffd836592b9176173da2e11283052e09c1140d 100644 (file)
@@ -3317,17 +3317,9 @@ static void iommu_remove_dev_pasid(struct device *dev, ioasid_t pasid,
 {
        const struct iommu_ops *ops = dev_iommu_ops(dev);
        struct iommu_domain *blocked_domain = ops->blocked_domain;
-       int ret = 1;
 
-       if (blocked_domain && blocked_domain->ops->set_dev_pasid) {
-               ret = blocked_domain->ops->set_dev_pasid(blocked_domain,
-                                                        dev, pasid, domain);
-       } else {
-               ops->remove_dev_pasid(dev, pasid, domain);
-               ret = 0;
-       }
-
-       WARN_ON(ret);
+       WARN_ON(blocked_domain->ops->set_dev_pasid(blocked_domain,
+                                                  dev, pasid, domain));
 }
 
 static int __iommu_set_group_pasid(struct iommu_domain *domain,
@@ -3390,9 +3382,8 @@ int iommu_attach_device_pasid(struct iommu_domain *domain,
        ops = dev_iommu_ops(dev);
 
        if (!domain->ops->set_dev_pasid ||
-           (!ops->remove_dev_pasid &&
-            (!ops->blocked_domain ||
-             !ops->blocked_domain->ops->set_dev_pasid)))
+           !ops->blocked_domain ||
+           !ops->blocked_domain->ops->set_dev_pasid)
                return -EOPNOTSUPP;
 
        if (ops != domain->owner || pasid == IOMMU_NO_PASID)
index 318d27841130cd03fb4763b403c015ecf35ee591..38c65e92ecd091975c42e630e7db50a4133166c4 100644 (file)
@@ -587,9 +587,6 @@ iommu_copy_struct_from_full_user_array(void *kdst, size_t kdst_entry_size,
  *             - IOMMU_DOMAIN_DMA: must use a dma domain
  *             - 0: use the default setting
  * @default_domain_ops: the default ops for domains
- * @remove_dev_pasid: Remove any translation configurations of a specific
- *                    pasid, so that any DMA transactions with this pasid
- *                    will be blocked by the hardware.
  * @viommu_alloc: Allocate an iommufd_viommu on a physical IOMMU instance behind
  *                the @dev, as the set of virtualization resources shared/passed
  *                to user space IOMMU instance. And associate it with a nesting
@@ -647,8 +644,6 @@ struct iommu_ops {
                              struct iommu_page_response *msg);
 
        int (*def_domain_type)(struct device *dev);
-       void (*remove_dev_pasid)(struct device *dev, ioasid_t pasid,
-                                struct iommu_domain *domain);
 
        struct iommufd_viommu *(*viommu_alloc)(
                struct device *dev, struct iommu_domain *parent_domain,