]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
iommu: Remove IOMMU_DEV_FEAT_SVA
authorJason Gunthorpe <jgg@nvidia.com>
Fri, 18 Apr 2025 08:01:24 +0000 (16:01 +0800)
committerJoerg Roedel <jroedel@suse.de>
Mon, 28 Apr 2025 11:04:29 +0000 (13:04 +0200)
None of the drivers implement anything here anymore, remove the dead code.

Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com>
Reviewed-by: Kevin Tian <kevin.tian@intel.com>
Reviewed-by: Yi Liu <yi.l.liu@intel.com>
Tested-by: Zhangfei Gao <zhangfei.gao@linaro.org>
Link: https://lore.kernel.org/r/20250418080130.1844424-3-baolu.lu@linux.intel.com
Signed-off-by: Joerg Roedel <jroedel@suse.de>
drivers/accel/amdxdna/aie2_pci.c
drivers/dma/idxd/init.c
drivers/iommu/amd/iommu.c
drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c
drivers/iommu/intel/iommu.c
drivers/iommu/iommu-sva.c
drivers/misc/uacce/uacce.c
include/linux/iommu.h

index 5a058e565b0161627c299115a1342524d08f93bb..c6cf7068d23c030fbc2043c875ee2dca32d3b89b 100644 (file)
@@ -512,12 +512,6 @@ static int aie2_init(struct amdxdna_dev *xdna)
                goto release_fw;
        }
 
-       ret = iommu_dev_enable_feature(&pdev->dev, IOMMU_DEV_FEAT_SVA);
-       if (ret) {
-               XDNA_ERR(xdna, "Enable PASID failed, ret %d", ret);
-               goto free_irq;
-       }
-
        psp_conf.fw_size = fw->size;
        psp_conf.fw_buf = fw->data;
        for (i = 0; i < PSP_MAX_REGS; i++)
@@ -526,14 +520,14 @@ static int aie2_init(struct amdxdna_dev *xdna)
        if (!ndev->psp_hdl) {
                XDNA_ERR(xdna, "failed to create psp");
                ret = -ENOMEM;
-               goto disable_sva;
+               goto free_irq;
        }
        xdna->dev_handle = ndev;
 
        ret = aie2_hw_start(xdna);
        if (ret) {
                XDNA_ERR(xdna, "start npu failed, ret %d", ret);
-               goto disable_sva;
+               goto free_irq;
        }
 
        ret = aie2_mgmt_fw_query(ndev);
@@ -584,8 +578,6 @@ async_event_free:
        aie2_error_async_events_free(ndev);
 stop_hw:
        aie2_hw_stop(xdna);
-disable_sva:
-       iommu_dev_disable_feature(&pdev->dev, IOMMU_DEV_FEAT_SVA);
 free_irq:
        pci_free_irq_vectors(pdev);
 release_fw:
@@ -601,7 +593,6 @@ static void aie2_fini(struct amdxdna_dev *xdna)
 
        aie2_hw_stop(xdna);
        aie2_error_async_events_free(ndev);
-       iommu_dev_disable_feature(&pdev->dev, IOMMU_DEV_FEAT_SVA);
        pci_free_irq_vectors(pdev);
 }
 
index fca1d29249998d9238550681feb86162454fd6d7..2d3d580b9987ef5fac7ac5cd97492c27f8bef7a1 100644 (file)
@@ -633,17 +633,11 @@ static int idxd_enable_sva(struct pci_dev *pdev)
        ret = iommu_dev_enable_feature(&pdev->dev, IOMMU_DEV_FEAT_IOPF);
        if (ret)
                return ret;
-
-       ret = iommu_dev_enable_feature(&pdev->dev, IOMMU_DEV_FEAT_SVA);
-       if (ret)
-               iommu_dev_disable_feature(&pdev->dev, IOMMU_DEV_FEAT_IOPF);
-
-       return ret;
+       return 0;
 }
 
 static void idxd_disable_sva(struct pci_dev *pdev)
 {
-       iommu_dev_disable_feature(&pdev->dev, IOMMU_DEV_FEAT_SVA);
        iommu_dev_disable_feature(&pdev->dev, IOMMU_DEV_FEAT_IOPF);
 }
 
index dea0fed7abb04429f2d841bd1d63d9f0c2cba094..17aab6d04a138c8e4569c4dc6b860dab5b2c7673 100644 (file)
@@ -2991,7 +2991,6 @@ static int amd_iommu_dev_enable_feature(struct device *dev,
 
        switch (feat) {
        case IOMMU_DEV_FEAT_IOPF:
-       case IOMMU_DEV_FEAT_SVA:
                break;
        default:
                ret = -EINVAL;
@@ -3007,7 +3006,6 @@ static int amd_iommu_dev_disable_feature(struct device *dev,
 
        switch (feat) {
        case IOMMU_DEV_FEAT_IOPF:
-       case IOMMU_DEV_FEAT_SVA:
                break;
        default:
                ret = -EINVAL;
index 4c08560409cc20c020de36bb7b0ef0bbfeb5e692..cddd7442661fdc1e6707aac2b0868fde9b4addd7 100644 (file)
@@ -3653,7 +3653,6 @@ static int arm_smmu_dev_enable_feature(struct device *dev,
 
        switch (feat) {
        case IOMMU_DEV_FEAT_IOPF:
-       case IOMMU_DEV_FEAT_SVA:
                return 0;
        default:
                return -EINVAL;
@@ -3670,7 +3669,6 @@ static int arm_smmu_dev_disable_feature(struct device *dev,
 
        switch (feat) {
        case IOMMU_DEV_FEAT_IOPF:
-       case IOMMU_DEV_FEAT_SVA:
                return 0;
        default:
                return -EINVAL;
index 5d5291887516d137706f9c753af0d33c6367261a..37f2403ed6775cbde49b261fe1f62686894966db 100644 (file)
@@ -3950,9 +3950,6 @@ intel_iommu_dev_enable_feat(struct device *dev, enum iommu_dev_features feat)
        case IOMMU_DEV_FEAT_IOPF:
                return intel_iommu_enable_iopf(dev);
 
-       case IOMMU_DEV_FEAT_SVA:
-               return 0;
-
        default:
                return -ENODEV;
        }
@@ -3966,9 +3963,6 @@ intel_iommu_dev_disable_feat(struct device *dev, enum iommu_dev_features feat)
                intel_iommu_disable_iopf(dev);
                return 0;
 
-       case IOMMU_DEV_FEAT_SVA:
-               return 0;
-
        default:
                return -ENODEV;
        }
index ab18bc494eefdd0ee2575a2ed5fb13c72a18e282..944daa0dabd64b0e1b9c1fb2dda49161bd5f655f 100644 (file)
@@ -63,9 +63,6 @@ static struct iommu_mm_data *iommu_alloc_mm_data(struct mm_struct *mm, struct de
  * reference is taken. Caller must call iommu_sva_unbind_device()
  * to release each reference.
  *
- * iommu_dev_enable_feature(dev, IOMMU_DEV_FEAT_SVA) must be called first, to
- * initialize the required SVA features.
- *
  * On error, returns an ERR_PTR value.
  */
 struct iommu_sva *iommu_sva_bind_device(struct device *dev, struct mm_struct *mm)
index bdc2e6fda782146c8dedef1cc7db6dabc41b6146..2a1db2abeeca0a0fcf94292c7a0a8e0d16e198a8 100644 (file)
@@ -479,14 +479,6 @@ static unsigned int uacce_enable_sva(struct device *parent, unsigned int flags)
                dev_err(parent, "failed to enable IOPF feature! ret = %pe\n", ERR_PTR(ret));
                return flags;
        }
-
-       ret = iommu_dev_enable_feature(parent, IOMMU_DEV_FEAT_SVA);
-       if (ret) {
-               dev_err(parent, "failed to enable SVA feature! ret = %pe\n", ERR_PTR(ret));
-               iommu_dev_disable_feature(parent, IOMMU_DEV_FEAT_IOPF);
-               return flags;
-       }
-
        return flags | UACCE_DEV_SVA;
 }
 
@@ -495,7 +487,6 @@ static void uacce_disable_sva(struct uacce_device *uacce)
        if (!(uacce->flags & UACCE_DEV_SVA))
                return;
 
-       iommu_dev_disable_feature(uacce->parent, IOMMU_DEV_FEAT_SVA);
        iommu_dev_disable_feature(uacce->parent, IOMMU_DEV_FEAT_IOPF);
 }
 
index 062818b518221f45f086a7e15a3f6a23a36f48bc..f39af28acaebaeb914ea8491a9eff0c1f345abe4 100644 (file)
@@ -318,18 +318,11 @@ struct iommu_iort_rmr_data {
 
 /**
  * enum iommu_dev_features - Per device IOMMU features
- * @IOMMU_DEV_FEAT_SVA: Shared Virtual Addresses
- * @IOMMU_DEV_FEAT_IOPF: I/O Page Faults such as PRI or Stall. Generally
- *                      enabling %IOMMU_DEV_FEAT_SVA requires
- *                      %IOMMU_DEV_FEAT_IOPF, but some devices manage I/O Page
- *                      Faults themselves instead of relying on the IOMMU. When
- *                      supported, this feature must be enabled before and
- *                      disabled after %IOMMU_DEV_FEAT_SVA.
+ * @IOMMU_DEV_FEAT_IOPF: I/O Page Faults such as PRI or Stall.
  *
  * Device drivers enable a feature using iommu_dev_enable_feature().
  */
 enum iommu_dev_features {
-       IOMMU_DEV_FEAT_SVA,
        IOMMU_DEV_FEAT_IOPF,
 };