iommu/vt-d: Remove unused vcmd interfaces
authorLu Baolu <baolu.lu@linux.intel.com>
Mon, 18 Dec 2023 07:34:44 +0000 (15:34 +0800)
committerJoerg Roedel <jroedel@suse.de>
Tue, 19 Dec 2023 13:32:28 +0000 (14:32 +0100)
Commit 99b5726b4423 ("iommu: Remove ioasid infrastructure") has removed
ioasid allocation interfaces from the iommu subsystem. As a result, these
vcmd interfaces have become obsolete. Remove them to avoid dead code.

Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com>
Link: https://lore.kernel.org/r/20231116015048.29675-4-baolu.lu@linux.intel.com
Signed-off-by: Joerg Roedel <jroedel@suse.de>
drivers/iommu/intel/debugfs.c
drivers/iommu/intel/iommu.h
drivers/iommu/intel/pasid.c
drivers/iommu/intel/pasid.h

index dee61e5..86b506a 100644 (file)
@@ -106,9 +106,6 @@ static const struct iommu_regset iommu_regs_64[] = {
        IOMMU_REGSET_ENTRY(MTRR_PHYSMASK8),
        IOMMU_REGSET_ENTRY(MTRR_PHYSBASE9),
        IOMMU_REGSET_ENTRY(MTRR_PHYSMASK9),
-       IOMMU_REGSET_ENTRY(VCCAP),
-       IOMMU_REGSET_ENTRY(VCMD),
-       IOMMU_REGSET_ENTRY(VCRSP),
 };
 
 static struct dentry *intel_iommu_debug;
index f8f956c..37ddbf0 100644 (file)
 #define DMAR_ECEO_REG          0x408
 #define DMAR_ECRSP_REG         0x410
 #define DMAR_ECCAP_REG         0x430
-#define DMAR_VCCAP_REG         0xe30 /* Virtual command capability register */
-#define DMAR_VCMD_REG          0xe00 /* Virtual command register */
-#define DMAR_VCRSP_REG         0xe10 /* Virtual command response register */
 
 #define DMAR_IQER_REG_IQEI(reg)                FIELD_GET(GENMASK_ULL(3, 0), reg)
 #define DMAR_IQER_REG_ITESID(reg)      FIELD_GET(GENMASK_ULL(47, 32), reg)
index 8a1bcab..57ae716 100644 (file)
  */
 u32 intel_pasid_max_id = PASID_MAX;
 
-int vcmd_alloc_pasid(struct intel_iommu *iommu, u32 *pasid)
-{
-       unsigned long flags;
-       u8 status_code;
-       int ret = 0;
-       u64 res;
-
-       raw_spin_lock_irqsave(&iommu->register_lock, flags);
-       dmar_writeq(iommu->reg + DMAR_VCMD_REG, VCMD_CMD_ALLOC);
-       IOMMU_WAIT_OP(iommu, DMAR_VCRSP_REG, dmar_readq,
-                     !(res & VCMD_VRSP_IP), res);
-       raw_spin_unlock_irqrestore(&iommu->register_lock, flags);
-
-       status_code = VCMD_VRSP_SC(res);
-       switch (status_code) {
-       case VCMD_VRSP_SC_SUCCESS:
-               *pasid = VCMD_VRSP_RESULT_PASID(res);
-               break;
-       case VCMD_VRSP_SC_NO_PASID_AVAIL:
-               pr_info("IOMMU: %s: No PASID available\n", iommu->name);
-               ret = -ENOSPC;
-               break;
-       default:
-               ret = -ENODEV;
-               pr_warn("IOMMU: %s: Unexpected error code %d\n",
-                       iommu->name, status_code);
-       }
-
-       return ret;
-}
-
-void vcmd_free_pasid(struct intel_iommu *iommu, u32 pasid)
-{
-       unsigned long flags;
-       u8 status_code;
-       u64 res;
-
-       raw_spin_lock_irqsave(&iommu->register_lock, flags);
-       dmar_writeq(iommu->reg + DMAR_VCMD_REG,
-                   VCMD_CMD_OPERAND(pasid) | VCMD_CMD_FREE);
-       IOMMU_WAIT_OP(iommu, DMAR_VCRSP_REG, dmar_readq,
-                     !(res & VCMD_VRSP_IP), res);
-       raw_spin_unlock_irqrestore(&iommu->register_lock, flags);
-
-       status_code = VCMD_VRSP_SC(res);
-       switch (status_code) {
-       case VCMD_VRSP_SC_SUCCESS:
-               break;
-       case VCMD_VRSP_SC_INVALID_PASID:
-               pr_info("IOMMU: %s: Invalid PASID\n", iommu->name);
-               break;
-       default:
-               pr_warn("IOMMU: %s: Unexpected error code %d\n",
-                       iommu->name, status_code);
-       }
-}
-
 /*
  * Per device pasid table management:
  */
index 16265bc..00401cf 100644 (file)
 #define is_pasid_enabled(entry)                (((entry)->lo >> 3) & 0x1)
 #define get_pasid_dir_size(entry)      (1 << ((((entry)->lo >> 9) & 0x7) + 7))
 
-/* Virtual command interface for enlightened pasid management. */
-#define VCMD_CMD_ALLOC                 0x1
-#define VCMD_CMD_FREE                  0x2
-#define VCMD_VRSP_IP                   0x1
-#define VCMD_VRSP_SC(e)                        (((e) & 0xff) >> 1)
-#define VCMD_VRSP_SC_SUCCESS           0
-#define VCMD_VRSP_SC_NO_PASID_AVAIL    16
-#define VCMD_VRSP_SC_INVALID_PASID     16
-#define VCMD_VRSP_RESULT_PASID(e)      (((e) >> 16) & 0xfffff)
-#define VCMD_CMD_OPERAND(e)            ((e) << 16)
 /*
  * Domain ID reserved for pasid entries programmed for first-level
  * only and pass-through transfer modes.
@@ -117,8 +107,6 @@ int intel_pasid_setup_nested(struct intel_iommu *iommu, struct device *dev,
 void intel_pasid_tear_down_entry(struct intel_iommu *iommu,
                                 struct device *dev, u32 pasid,
                                 bool fault_ignore);
-int vcmd_alloc_pasid(struct intel_iommu *iommu, u32 *pasid);
-void vcmd_free_pasid(struct intel_iommu *iommu, u32 pasid);
 void intel_pasid_setup_page_snoop_control(struct intel_iommu *iommu,
                                          struct device *dev, u32 pasid);
 #endif /* __INTEL_PASID_H */