RE: [PATCH v7 07/10] iommu: Remove SVA related callbacks from iommu ops
> From: Lu Baolu > Sent: Thursday, May 19, 2022 3:21 PM > > These ops'es have been replaced with the dev_attach/detach_pasid domain > ops'es. There's no need for them anymore. Remove them to avoid dead > code. > > Signed-off-by: Lu Baolu > Reviewed-by: Jean-Philippe Brucker Reviewed-by: Kevin Tian > --- > include/linux/intel-iommu.h | 3 -- > include/linux/iommu.h | 7 --- > drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h | 16 -- > .../iommu/arm/arm-smmu-v3/arm-smmu-v3-sva.c | 40 --- > drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c | 3 -- > drivers/iommu/intel/iommu.c | 3 -- > drivers/iommu/intel/svm.c | 49 --- > 7 files changed, 121 deletions(-) > > diff --git a/include/linux/intel-iommu.h b/include/linux/intel-iommu.h > index 5e88eaa245aa..536f229fd274 100644 > --- a/include/linux/intel-iommu.h > +++ b/include/linux/intel-iommu.h > @@ -739,9 +739,6 @@ struct intel_iommu *device_to_iommu(struct device > *dev, u8 *bus, u8 *devfn); > extern void intel_svm_check(struct intel_iommu *iommu); > extern int intel_svm_enable_prq(struct intel_iommu *iommu); > extern int intel_svm_finish_prq(struct intel_iommu *iommu); > -struct iommu_sva *intel_svm_bind(struct device *dev, struct mm_struct > *mm); > -void intel_svm_unbind(struct iommu_sva *handle); > -u32 intel_svm_get_pasid(struct iommu_sva *handle); > int intel_svm_page_response(struct device *dev, struct iommu_fault_event > *evt, > struct iommu_page_response *msg); > int intel_svm_attach_dev_pasid(struct iommu_domain *domain, > diff --git a/include/linux/iommu.h b/include/linux/iommu.h > index d9ac5ebe5bbb..e4ce2fe0e144 100644 > --- a/include/linux/iommu.h > +++ b/include/linux/iommu.h > @@ -212,9 +212,6 @@ struct iommu_iotlb_gather { > * @dev_has/enable/disable_feat: per device entries to > check/enable/disable > * iommu specific features. > * @dev_feat_enabled: check enabled feature > - * @sva_bind: Bind process address space to device > - * @sva_unbind: Unbind process address space from device > - * @sva_get_pasid: Get PASID associated to a SVA handle > * @page_response: handle page request response > * @def_domain_type: device default domain type, return value: > * - IOMMU_DOMAIN_IDENTITY: must use an identity domain > @@ -248,10 +245,6 @@ struct iommu_ops { > int (*dev_enable_feat)(struct device *dev, enum > iommu_dev_features f); > int (*dev_disable_feat)(struct device *dev, enum > iommu_dev_features f); > > - struct iommu_sva *(*sva_bind)(struct device *dev, struct mm_struct > *mm); > - void (*sva_unbind)(struct iommu_sva *handle); > - u32 (*sva_get_pasid)(struct iommu_sva *handle); > - > int (*page_response)(struct device *dev, >struct iommu_fault_event *evt, >struct iommu_page_response *msg); > diff --git a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h > b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h > index ec77f6a51ff9..0f0f5ba26dd5 100644 > --- a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h > +++ b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h > @@ -754,9 +754,6 @@ bool arm_smmu_master_sva_enabled(struct > arm_smmu_master *master); > int arm_smmu_master_enable_sva(struct arm_smmu_master *master); > int arm_smmu_master_disable_sva(struct arm_smmu_master *master); > bool arm_smmu_master_iopf_supported(struct arm_smmu_master > *master); > -struct iommu_sva *arm_smmu_sva_bind(struct device *dev, struct > mm_struct *mm); > -void arm_smmu_sva_unbind(struct iommu_sva *handle); > -u32 arm_smmu_sva_get_pasid(struct iommu_sva *handle); > void arm_smmu_sva_notifier_synchronize(void); > int arm_smmu_sva_attach_dev_pasid(struct iommu_domain *domain, > struct device *dev, ioasid_t id); > @@ -793,19 +790,6 @@ static inline bool > arm_smmu_master_iopf_supported(struct arm_smmu_master *master > return false; > } > > -static inline struct iommu_sva * > -arm_smmu_sva_bind(struct device *dev, struct mm_struct *mm) > -{ > - return ERR_PTR(-ENODEV); > -} > - > -static inline void arm_smmu_sva_unbind(struct iommu_sva *handle) {} > - > -static inline u32 arm_smmu_sva_get_pasid(struct iommu_sva *handle) > -{ > - return IOMMU_PASID_INVALID; > -} > - > static inline void arm_smmu_sva_notifier_synchronize(void) {} > #endif /* CONFIG_ARM_SMMU_V3_SVA */ > #endif /* _ARM_SMMU_V3_H */ > diff --git a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-sva.c > b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-sva.c > index 6969974ca89e..8290d66569f3 100644 > --- a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-sva.c > +++ b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-sva.c > @@ -344,11 +344,6 @@ __arm_smmu_sva_bind(struct device *dev, struct > mm_struct *mm) > if (!bond) > return ERR_PTR(-ENOMEM); > > - /* Allocate a PASID for this mm if
[PATCH v7 07/10] iommu: Remove SVA related callbacks from iommu ops
These ops'es have been replaced with the dev_attach/detach_pasid domain ops'es. There's no need for them anymore. Remove them to avoid dead code. Signed-off-by: Lu Baolu Reviewed-by: Jean-Philippe Brucker --- include/linux/intel-iommu.h | 3 -- include/linux/iommu.h | 7 --- drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h | 16 -- .../iommu/arm/arm-smmu-v3/arm-smmu-v3-sva.c | 40 --- drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c | 3 -- drivers/iommu/intel/iommu.c | 3 -- drivers/iommu/intel/svm.c | 49 --- 7 files changed, 121 deletions(-) diff --git a/include/linux/intel-iommu.h b/include/linux/intel-iommu.h index 5e88eaa245aa..536f229fd274 100644 --- a/include/linux/intel-iommu.h +++ b/include/linux/intel-iommu.h @@ -739,9 +739,6 @@ struct intel_iommu *device_to_iommu(struct device *dev, u8 *bus, u8 *devfn); extern void intel_svm_check(struct intel_iommu *iommu); extern int intel_svm_enable_prq(struct intel_iommu *iommu); extern int intel_svm_finish_prq(struct intel_iommu *iommu); -struct iommu_sva *intel_svm_bind(struct device *dev, struct mm_struct *mm); -void intel_svm_unbind(struct iommu_sva *handle); -u32 intel_svm_get_pasid(struct iommu_sva *handle); int intel_svm_page_response(struct device *dev, struct iommu_fault_event *evt, struct iommu_page_response *msg); int intel_svm_attach_dev_pasid(struct iommu_domain *domain, diff --git a/include/linux/iommu.h b/include/linux/iommu.h index d9ac5ebe5bbb..e4ce2fe0e144 100644 --- a/include/linux/iommu.h +++ b/include/linux/iommu.h @@ -212,9 +212,6 @@ struct iommu_iotlb_gather { * @dev_has/enable/disable_feat: per device entries to check/enable/disable * iommu specific features. * @dev_feat_enabled: check enabled feature - * @sva_bind: Bind process address space to device - * @sva_unbind: Unbind process address space from device - * @sva_get_pasid: Get PASID associated to a SVA handle * @page_response: handle page request response * @def_domain_type: device default domain type, return value: * - IOMMU_DOMAIN_IDENTITY: must use an identity domain @@ -248,10 +245,6 @@ struct iommu_ops { int (*dev_enable_feat)(struct device *dev, enum iommu_dev_features f); int (*dev_disable_feat)(struct device *dev, enum iommu_dev_features f); - struct iommu_sva *(*sva_bind)(struct device *dev, struct mm_struct *mm); - void (*sva_unbind)(struct iommu_sva *handle); - u32 (*sva_get_pasid)(struct iommu_sva *handle); - int (*page_response)(struct device *dev, struct iommu_fault_event *evt, struct iommu_page_response *msg); diff --git a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h index ec77f6a51ff9..0f0f5ba26dd5 100644 --- a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h +++ b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h @@ -754,9 +754,6 @@ bool arm_smmu_master_sva_enabled(struct arm_smmu_master *master); int arm_smmu_master_enable_sva(struct arm_smmu_master *master); int arm_smmu_master_disable_sva(struct arm_smmu_master *master); bool arm_smmu_master_iopf_supported(struct arm_smmu_master *master); -struct iommu_sva *arm_smmu_sva_bind(struct device *dev, struct mm_struct *mm); -void arm_smmu_sva_unbind(struct iommu_sva *handle); -u32 arm_smmu_sva_get_pasid(struct iommu_sva *handle); void arm_smmu_sva_notifier_synchronize(void); int arm_smmu_sva_attach_dev_pasid(struct iommu_domain *domain, struct device *dev, ioasid_t id); @@ -793,19 +790,6 @@ static inline bool arm_smmu_master_iopf_supported(struct arm_smmu_master *master return false; } -static inline struct iommu_sva * -arm_smmu_sva_bind(struct device *dev, struct mm_struct *mm) -{ - return ERR_PTR(-ENODEV); -} - -static inline void arm_smmu_sva_unbind(struct iommu_sva *handle) {} - -static inline u32 arm_smmu_sva_get_pasid(struct iommu_sva *handle) -{ - return IOMMU_PASID_INVALID; -} - static inline void arm_smmu_sva_notifier_synchronize(void) {} #endif /* CONFIG_ARM_SMMU_V3_SVA */ #endif /* _ARM_SMMU_V3_H */ diff --git a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-sva.c b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-sva.c index 6969974ca89e..8290d66569f3 100644 --- a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-sva.c +++ b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-sva.c @@ -344,11 +344,6 @@ __arm_smmu_sva_bind(struct device *dev, struct mm_struct *mm) if (!bond) return ERR_PTR(-ENOMEM); - /* Allocate a PASID for this mm if necessary */ - ret = iommu_sva_alloc_pasid(mm, 1, (1U << master->ssid_bits) - 1); - if (ret) - goto err_free_bond; - bond->mm = mm; bond->sva.dev = dev; refcount_set(&bond->refs, 1); @@ -367,41 +362,6 @@ __arm_smmu_sva