All of lore.kernel.org
 help / color / mirror / Atom feed
* remve dead iommu code
@ 2022-04-07  6:26 Christoph Hellwig
  2022-04-07  6:26 ` [PATCH 1/4] iommu: remove the unused dev_has_feat method Christoph Hellwig
                   ` (4 more replies)
  0 siblings, 5 replies; 10+ messages in thread
From: Christoph Hellwig @ 2022-04-07  6:26 UTC (permalink / raw)
  To: Joerg Roedel, Sven Peter, David Woodhouse, Lu Baolu, Yong Wu,
	Jean-Philippe Brucker, iommu

Hi all,

this removes a bit of dead code and methods from the iommu code and the
cleans up the arm-smmu-v3 driver a little bit based on that.

Diffstat:
 drivers/iommu/amd/iommu.c                   |    1 
 drivers/iommu/apple-dart.c                  |    1 
 drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c |   60 +++++++---------------------
 drivers/iommu/arm/arm-smmu/arm-smmu.c       |    1 
 drivers/iommu/intel/iommu.c                 |    1 
 drivers/iommu/iommu.c                       |   33 ---------------
 drivers/iommu/mtk_iommu.c                   |    1 
 drivers/iommu/virtio-iommu.c                |    5 --
 include/linux/iommu.h                       |   17 -------
 9 files changed, 19 insertions(+), 101 deletions(-)
_______________________________________________
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [PATCH 1/4] iommu: remove the unused dev_has_feat method
  2022-04-07  6:26 remve dead iommu code Christoph Hellwig
@ 2022-04-07  6:26 ` Christoph Hellwig
  2022-04-07  6:26 ` [PATCH 2/4] iommu: remove iommu_dev_feature_enabled Christoph Hellwig
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 10+ messages in thread
From: Christoph Hellwig @ 2022-04-07  6:26 UTC (permalink / raw)
  To: Joerg Roedel, Sven Peter, David Woodhouse, Lu Baolu, Yong Wu,
	Jean-Philippe Brucker, iommu

This method is never actually called.

Signed-off-by: Christoph Hellwig <hch@lst.de>
---
 drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c | 1 -
 include/linux/iommu.h                       | 4 +---
 2 files changed, 1 insertion(+), 4 deletions(-)

diff --git a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c
index 627a3ed5ee8fd1..d6110271761d4a 100644
--- a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c
+++ b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c
@@ -2848,7 +2848,6 @@ static struct iommu_ops arm_smmu_ops = {
 	.of_xlate		= arm_smmu_of_xlate,
 	.get_resv_regions	= arm_smmu_get_resv_regions,
 	.put_resv_regions	= generic_iommu_put_resv_regions,
-	.dev_has_feat		= arm_smmu_dev_has_feature,
 	.dev_feat_enabled	= arm_smmu_dev_feature_enabled,
 	.dev_enable_feat	= arm_smmu_dev_enable_feature,
 	.dev_disable_feat	= arm_smmu_dev_disable_feature,
diff --git a/include/linux/iommu.h b/include/linux/iommu.h
index 9208eca4b0d1ac..79b74fcdd57e63 100644
--- a/include/linux/iommu.h
+++ b/include/linux/iommu.h
@@ -153,8 +153,7 @@ struct iommu_resv_region {
  *			 supported, this feature must be enabled before and
  *			 disabled after %IOMMU_DEV_FEAT_SVA.
  *
- * Device drivers query whether a feature is supported using
- * iommu_dev_has_feature(), and enable it using iommu_dev_enable_feature().
+ * Device drivers enable a feature using iommu_dev_enable_feature().
  */
 enum iommu_dev_features {
 	IOMMU_DEV_FEAT_SVA,
@@ -237,7 +236,6 @@ struct iommu_ops {
 	bool (*is_attach_deferred)(struct device *dev);
 
 	/* Per device IOMMU features */
-	bool (*dev_has_feat)(struct device *dev, enum iommu_dev_features f);
 	bool (*dev_feat_enabled)(struct device *dev, enum iommu_dev_features f);
 	int (*dev_enable_feat)(struct device *dev, enum iommu_dev_features f);
 	int (*dev_disable_feat)(struct device *dev, enum iommu_dev_features f);
-- 
2.30.2

_______________________________________________
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH 2/4] iommu: remove iommu_dev_feature_enabled
  2022-04-07  6:26 remve dead iommu code Christoph Hellwig
  2022-04-07  6:26 ` [PATCH 1/4] iommu: remove the unused dev_has_feat method Christoph Hellwig
@ 2022-04-07  6:26 ` Christoph Hellwig
  2022-04-07  6:26 ` [PATCH 3/4] iommu: remove the put_resv_regions method Christoph Hellwig
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 10+ messages in thread
From: Christoph Hellwig @ 2022-04-07  6:26 UTC (permalink / raw)
  To: Joerg Roedel, Sven Peter, David Woodhouse, Lu Baolu, Yong Wu,
	Jean-Philippe Brucker, iommu

Remove the unused iommu_dev_feature_enabled function.

Signed-off-by: Christoph Hellwig <hch@lst.de>
---
 drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c |  1 -
 drivers/iommu/iommu.c                       | 13 -------------
 include/linux/iommu.h                       |  9 ---------
 3 files changed, 23 deletions(-)

diff --git a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c
index d6110271761d4a..36461fb46d436c 100644
--- a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c
+++ b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c
@@ -2848,7 +2848,6 @@ static struct iommu_ops arm_smmu_ops = {
 	.of_xlate		= arm_smmu_of_xlate,
 	.get_resv_regions	= arm_smmu_get_resv_regions,
 	.put_resv_regions	= generic_iommu_put_resv_regions,
-	.dev_feat_enabled	= arm_smmu_dev_feature_enabled,
 	.dev_enable_feat	= arm_smmu_dev_enable_feature,
 	.dev_disable_feat	= arm_smmu_dev_disable_feature,
 	.sva_bind		= arm_smmu_sva_bind,
diff --git a/drivers/iommu/iommu.c b/drivers/iommu/iommu.c
index f2c45b85b9fc25..6ce73f35c43aac 100644
--- a/drivers/iommu/iommu.c
+++ b/drivers/iommu/iommu.c
@@ -2758,19 +2758,6 @@ int iommu_dev_disable_feature(struct device *dev, enum iommu_dev_features feat)
 }
 EXPORT_SYMBOL_GPL(iommu_dev_disable_feature);
 
-bool iommu_dev_feature_enabled(struct device *dev, enum iommu_dev_features feat)
-{
-	if (dev->iommu && dev->iommu->iommu_dev) {
-		const struct iommu_ops *ops = dev->iommu->iommu_dev->ops;
-
-		if (ops->dev_feat_enabled)
-			return ops->dev_feat_enabled(dev, feat);
-	}
-
-	return false;
-}
-EXPORT_SYMBOL_GPL(iommu_dev_feature_enabled);
-
 /**
  * iommu_sva_bind_device() - Bind a process address space to a device
  * @dev: the device
diff --git a/include/linux/iommu.h b/include/linux/iommu.h
index 79b74fcdd57e63..a2d3562a501d3e 100644
--- a/include/linux/iommu.h
+++ b/include/linux/iommu.h
@@ -204,7 +204,6 @@ struct iommu_iotlb_gather {
  *                      driver init to device driver init (default no)
  * @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
@@ -236,7 +235,6 @@ struct iommu_ops {
 	bool (*is_attach_deferred)(struct device *dev);
 
 	/* Per device IOMMU features */
-	bool (*dev_feat_enabled)(struct device *dev, enum iommu_dev_features f);
 	int (*dev_enable_feat)(struct device *dev, enum iommu_dev_features f);
 	int (*dev_disable_feat)(struct device *dev, enum iommu_dev_features f);
 
@@ -665,7 +663,6 @@ void iommu_release_device(struct device *dev);
 
 int iommu_dev_enable_feature(struct device *dev, enum iommu_dev_features f);
 int iommu_dev_disable_feature(struct device *dev, enum iommu_dev_features f);
-bool iommu_dev_feature_enabled(struct device *dev, enum iommu_dev_features f);
 
 struct iommu_sva *iommu_sva_bind_device(struct device *dev,
 					struct mm_struct *mm,
@@ -992,12 +989,6 @@ const struct iommu_ops *iommu_ops_from_fwnode(struct fwnode_handle *fwnode)
 	return NULL;
 }
 
-static inline bool
-iommu_dev_feature_enabled(struct device *dev, enum iommu_dev_features feat)
-{
-	return false;
-}
-
 static inline int
 iommu_dev_enable_feature(struct device *dev, enum iommu_dev_features feat)
 {
-- 
2.30.2

_______________________________________________
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH 3/4] iommu: remove the put_resv_regions method
  2022-04-07  6:26 remve dead iommu code Christoph Hellwig
  2022-04-07  6:26 ` [PATCH 1/4] iommu: remove the unused dev_has_feat method Christoph Hellwig
  2022-04-07  6:26 ` [PATCH 2/4] iommu: remove iommu_dev_feature_enabled Christoph Hellwig
@ 2022-04-07  6:26 ` Christoph Hellwig
  2022-04-07  8:04   ` Tian, Kevin
  2022-04-07 10:18   ` Robin Murphy
  2022-04-07  6:26 ` [PATCH 4/4] iommu/arm-smmu-v3: cleanup arm_smmu_dev_{enable, disable}_feature Christoph Hellwig
  2022-04-28  8:33 ` remve dead iommu code Joerg Roedel
  4 siblings, 2 replies; 10+ messages in thread
From: Christoph Hellwig @ 2022-04-07  6:26 UTC (permalink / raw)
  To: Joerg Roedel, Sven Peter, David Woodhouse, Lu Baolu, Yong Wu,
	Jean-Philippe Brucker, iommu

All drivers that implement get_resv_regions just use
generic_put_resv_regions to implement the put side.  Remove the
indirections and document the allocations constraints.

Signed-off-by: Christoph Hellwig <hch@lst.de>
---
 drivers/iommu/amd/iommu.c                   |  1 -
 drivers/iommu/apple-dart.c                  |  1 -
 drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c |  1 -
 drivers/iommu/arm/arm-smmu/arm-smmu.c       |  1 -
 drivers/iommu/intel/iommu.c                 |  1 -
 drivers/iommu/iommu.c                       | 20 +-------------------
 drivers/iommu/mtk_iommu.c                   |  1 -
 drivers/iommu/virtio-iommu.c                |  5 ++---
 include/linux/iommu.h                       |  4 ----
 9 files changed, 3 insertions(+), 32 deletions(-)

diff --git a/drivers/iommu/amd/iommu.c b/drivers/iommu/amd/iommu.c
index a1ada7bff44e61..7011b46022dcbb 100644
--- a/drivers/iommu/amd/iommu.c
+++ b/drivers/iommu/amd/iommu.c
@@ -2279,7 +2279,6 @@ const struct iommu_ops amd_iommu_ops = {
 	.probe_finalize = amd_iommu_probe_finalize,
 	.device_group = amd_iommu_device_group,
 	.get_resv_regions = amd_iommu_get_resv_regions,
-	.put_resv_regions = generic_iommu_put_resv_regions,
 	.is_attach_deferred = amd_iommu_is_attach_deferred,
 	.pgsize_bitmap	= AMD_IOMMU_PGSIZES,
 	.def_domain_type = amd_iommu_def_domain_type,
diff --git a/drivers/iommu/apple-dart.c b/drivers/iommu/apple-dart.c
index decafb07ad0831..a45ad9ade0dba6 100644
--- a/drivers/iommu/apple-dart.c
+++ b/drivers/iommu/apple-dart.c
@@ -771,7 +771,6 @@ static const struct iommu_ops apple_dart_iommu_ops = {
 	.of_xlate = apple_dart_of_xlate,
 	.def_domain_type = apple_dart_def_domain_type,
 	.get_resv_regions = apple_dart_get_resv_regions,
-	.put_resv_regions = generic_iommu_put_resv_regions,
 	.pgsize_bitmap = -1UL, /* Restricted during dart probe */
 	.default_domain_ops = &(const struct iommu_domain_ops) {
 		.attach_dev	= apple_dart_attach_dev,
diff --git a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c
index 36461fb46d436c..1ea184bbf750a6 100644
--- a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c
+++ b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c
@@ -2847,7 +2847,6 @@ static struct iommu_ops arm_smmu_ops = {
 	.device_group		= arm_smmu_device_group,
 	.of_xlate		= arm_smmu_of_xlate,
 	.get_resv_regions	= arm_smmu_get_resv_regions,
-	.put_resv_regions	= generic_iommu_put_resv_regions,
 	.dev_enable_feat	= arm_smmu_dev_enable_feature,
 	.dev_disable_feat	= arm_smmu_dev_disable_feature,
 	.sva_bind		= arm_smmu_sva_bind,
diff --git a/drivers/iommu/arm/arm-smmu/arm-smmu.c b/drivers/iommu/arm/arm-smmu/arm-smmu.c
index 568cce590ccc13..41da1275689ebd 100644
--- a/drivers/iommu/arm/arm-smmu/arm-smmu.c
+++ b/drivers/iommu/arm/arm-smmu/arm-smmu.c
@@ -1589,7 +1589,6 @@ static struct iommu_ops arm_smmu_ops = {
 	.device_group		= arm_smmu_device_group,
 	.of_xlate		= arm_smmu_of_xlate,
 	.get_resv_regions	= arm_smmu_get_resv_regions,
-	.put_resv_regions	= generic_iommu_put_resv_regions,
 	.def_domain_type	= arm_smmu_def_domain_type,
 	.pgsize_bitmap		= -1UL, /* Restricted during device attach */
 	.owner			= THIS_MODULE,
diff --git a/drivers/iommu/intel/iommu.c b/drivers/iommu/intel/iommu.c
index df5c62ecf942b8..cafe50cb484cd5 100644
--- a/drivers/iommu/intel/iommu.c
+++ b/drivers/iommu/intel/iommu.c
@@ -4875,7 +4875,6 @@ const struct iommu_ops intel_iommu_ops = {
 	.probe_finalize		= intel_iommu_probe_finalize,
 	.release_device		= intel_iommu_release_device,
 	.get_resv_regions	= intel_iommu_get_resv_regions,
-	.put_resv_regions	= generic_iommu_put_resv_regions,
 	.device_group		= intel_iommu_device_group,
 	.dev_enable_feat	= intel_iommu_dev_enable_feat,
 	.dev_disable_feat	= intel_iommu_dev_disable_feat,
diff --git a/drivers/iommu/iommu.c b/drivers/iommu/iommu.c
index 6ce73f35c43aac..2e1f7d1cf74793 100644
--- a/drivers/iommu/iommu.c
+++ b/drivers/iommu/iommu.c
@@ -2584,31 +2584,13 @@ void iommu_get_resv_regions(struct device *dev, struct list_head *list)
 }
 
 void iommu_put_resv_regions(struct device *dev, struct list_head *list)
-{
-	const struct iommu_ops *ops = dev_iommu_ops(dev);
-
-	if (ops->put_resv_regions)
-		ops->put_resv_regions(dev, list);
-}
-
-/**
- * generic_iommu_put_resv_regions - Reserved region driver helper
- * @dev: device for which to free reserved regions
- * @list: reserved region list for device
- *
- * IOMMU drivers can use this to implement their .put_resv_regions() callback
- * for simple reservations. Memory allocated for each reserved region will be
- * freed. If an IOMMU driver allocates additional resources per region, it is
- * going to have to implement a custom callback.
- */
-void generic_iommu_put_resv_regions(struct device *dev, struct list_head *list)
 {
 	struct iommu_resv_region *entry, *next;
 
 	list_for_each_entry_safe(entry, next, list, list)
 		kfree(entry);
 }
-EXPORT_SYMBOL(generic_iommu_put_resv_regions);
+EXPORT_SYMBOL(iommu_put_resv_regions);
 
 struct iommu_resv_region *iommu_alloc_resv_region(phys_addr_t start,
 						  size_t length, int prot,
diff --git a/drivers/iommu/mtk_iommu.c b/drivers/iommu/mtk_iommu.c
index 6fd75a60abd678..d970fd301e8f31 100644
--- a/drivers/iommu/mtk_iommu.c
+++ b/drivers/iommu/mtk_iommu.c
@@ -688,7 +688,6 @@ static const struct iommu_ops mtk_iommu_ops = {
 	.device_group	= mtk_iommu_device_group,
 	.of_xlate	= mtk_iommu_of_xlate,
 	.get_resv_regions = mtk_iommu_get_resv_regions,
-	.put_resv_regions = generic_iommu_put_resv_regions,
 	.pgsize_bitmap	= SZ_4K | SZ_64K | SZ_1M | SZ_16M,
 	.owner		= THIS_MODULE,
 	.default_domain_ops = &(const struct iommu_domain_ops) {
diff --git a/drivers/iommu/virtio-iommu.c b/drivers/iommu/virtio-iommu.c
index 25be4b822aa07f..36385b3deb8981 100644
--- a/drivers/iommu/virtio-iommu.c
+++ b/drivers/iommu/virtio-iommu.c
@@ -964,7 +964,7 @@ static struct iommu_device *viommu_probe_device(struct device *dev)
 	return &viommu->iommu;
 
 err_free_dev:
-	generic_iommu_put_resv_regions(dev, &vdev->resv_regions);
+	iommu_put_resv_regions(dev, &vdev->resv_regions);
 	kfree(vdev);
 
 	return ERR_PTR(ret);
@@ -989,7 +989,7 @@ static void viommu_release_device(struct device *dev)
 
 	vdev = dev_iommu_priv_get(dev);
 
-	generic_iommu_put_resv_regions(dev, &vdev->resv_regions);
+	iommu_put_resv_regions(dev, &vdev->resv_regions);
 	kfree(vdev);
 }
 
@@ -1013,7 +1013,6 @@ static struct iommu_ops viommu_ops = {
 	.release_device		= viommu_release_device,
 	.device_group		= viommu_device_group,
 	.get_resv_regions	= viommu_get_resv_regions,
-	.put_resv_regions	= generic_iommu_put_resv_regions,
 	.of_xlate		= viommu_of_xlate,
 	.owner			= THIS_MODULE,
 	.default_domain_ops = &(const struct iommu_domain_ops) {
diff --git a/include/linux/iommu.h b/include/linux/iommu.h
index a2d3562a501d3e..fed4c09e8e7cfe 100644
--- a/include/linux/iommu.h
+++ b/include/linux/iommu.h
@@ -198,7 +198,6 @@ struct iommu_iotlb_gather {
  *                  group and attached to the groups domain
  * @device_group: find iommu group for a particular device
  * @get_resv_regions: Request list of reserved regions for a device
- * @put_resv_regions: Free list of reserved regions for a device
  * @of_xlate: add OF master IDs to iommu grouping
  * @is_attach_deferred: Check if domain attach should be deferred from iommu
  *                      driver init to device driver init (default no)
@@ -229,7 +228,6 @@ struct iommu_ops {
 
 	/* Request/Free a list of reserved regions for a device */
 	void (*get_resv_regions)(struct device *dev, struct list_head *list);
-	void (*put_resv_regions)(struct device *dev, struct list_head *list);
 
 	int (*of_xlate)(struct device *dev, struct of_phandle_args *args);
 	bool (*is_attach_deferred)(struct device *dev);
@@ -445,8 +443,6 @@ extern void iommu_set_fault_handler(struct iommu_domain *domain,
 
 extern void iommu_get_resv_regions(struct device *dev, struct list_head *list);
 extern void iommu_put_resv_regions(struct device *dev, struct list_head *list);
-extern void generic_iommu_put_resv_regions(struct device *dev,
-					   struct list_head *list);
 extern void iommu_set_default_passthrough(bool cmd_line);
 extern void iommu_set_default_translated(bool cmd_line);
 extern bool iommu_default_passthrough(void);
-- 
2.30.2

_______________________________________________
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH 4/4] iommu/arm-smmu-v3: cleanup arm_smmu_dev_{enable, disable}_feature
  2022-04-07  6:26 remve dead iommu code Christoph Hellwig
                   ` (2 preceding siblings ...)
  2022-04-07  6:26 ` [PATCH 3/4] iommu: remove the put_resv_regions method Christoph Hellwig
@ 2022-04-07  6:26 ` Christoph Hellwig
  2022-04-07  8:10   ` Tian, Kevin
  2022-04-28  8:33 ` remve dead iommu code Joerg Roedel
  4 siblings, 1 reply; 10+ messages in thread
From: Christoph Hellwig @ 2022-04-07  6:26 UTC (permalink / raw)
  To: Joerg Roedel, Sven Peter, David Woodhouse, Lu Baolu, Yong Wu,
	Jean-Philippe Brucker, iommu

Fold the arm_smmu_dev_has_feature arm_smmu_dev_feature_enabled into
the main methods.

Signed-off-by: Christoph Hellwig <hch@lst.de>
---
 drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c | 57 ++++++---------------
 1 file changed, 15 insertions(+), 42 deletions(-)

diff --git a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c
index 1ea184bbf750a6..8e201c660139ae 100644
--- a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c
+++ b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c
@@ -2760,58 +2760,27 @@ static void arm_smmu_get_resv_regions(struct device *dev,
 	iommu_dma_get_resv_regions(dev, head);
 }
 
-static bool arm_smmu_dev_has_feature(struct device *dev,
-				     enum iommu_dev_features feat)
-{
-	struct arm_smmu_master *master = dev_iommu_priv_get(dev);
-
-	if (!master)
-		return false;
-
-	switch (feat) {
-	case IOMMU_DEV_FEAT_IOPF:
-		return arm_smmu_master_iopf_supported(master);
-	case IOMMU_DEV_FEAT_SVA:
-		return arm_smmu_master_sva_supported(master);
-	default:
-		return false;
-	}
-}
-
-static bool arm_smmu_dev_feature_enabled(struct device *dev,
-					 enum iommu_dev_features feat)
-{
-	struct arm_smmu_master *master = dev_iommu_priv_get(dev);
-
-	if (!master)
-		return false;
-
-	switch (feat) {
-	case IOMMU_DEV_FEAT_IOPF:
-		return master->iopf_enabled;
-	case IOMMU_DEV_FEAT_SVA:
-		return arm_smmu_master_sva_enabled(master);
-	default:
-		return false;
-	}
-}
-
 static int arm_smmu_dev_enable_feature(struct device *dev,
 				       enum iommu_dev_features feat)
 {
 	struct arm_smmu_master *master = dev_iommu_priv_get(dev);
 
-	if (!arm_smmu_dev_has_feature(dev, feat))
-		return -ENODEV;
-
-	if (arm_smmu_dev_feature_enabled(dev, feat))
-		return -EBUSY;
+	if (!master)
+		return -EINVAL;
 
 	switch (feat) {
 	case IOMMU_DEV_FEAT_IOPF:
+		if (!arm_smmu_master_iopf_supported(master))
+			return -EINVAL;
+		if (master->iopf_enabled)
+			return -EBUSY;
 		master->iopf_enabled = true;
 		return 0;
 	case IOMMU_DEV_FEAT_SVA:
+		if (!arm_smmu_master_sva_supported(master))
+			return -EINVAL;
+		if (arm_smmu_master_sva_enabled(master))
+			return -EBUSY;
 		return arm_smmu_master_enable_sva(master);
 	default:
 		return -EINVAL;
@@ -2823,16 +2792,20 @@ static int arm_smmu_dev_disable_feature(struct device *dev,
 {
 	struct arm_smmu_master *master = dev_iommu_priv_get(dev);
 
-	if (!arm_smmu_dev_feature_enabled(dev, feat))
+	if (!master)
 		return -EINVAL;
 
 	switch (feat) {
 	case IOMMU_DEV_FEAT_IOPF:
+		if (!master->iopf_enabled)
+			return -EINVAL;
 		if (master->sva_enabled)
 			return -EBUSY;
 		master->iopf_enabled = false;
 		return 0;
 	case IOMMU_DEV_FEAT_SVA:
+		if (!arm_smmu_master_sva_enabled(master))
+			return -EINVAL;
 		return arm_smmu_master_disable_sva(master);
 	default:
 		return -EINVAL;
-- 
2.30.2

_______________________________________________
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* RE: [PATCH 3/4] iommu: remove the put_resv_regions method
  2022-04-07  6:26 ` [PATCH 3/4] iommu: remove the put_resv_regions method Christoph Hellwig
@ 2022-04-07  8:04   ` Tian, Kevin
  2022-04-07 10:18   ` Robin Murphy
  1 sibling, 0 replies; 10+ messages in thread
From: Tian, Kevin @ 2022-04-07  8:04 UTC (permalink / raw)
  To: Christoph Hellwig, Joerg Roedel, Sven Peter, David Woodhouse,
	Lu Baolu, Yong Wu, Jean-Philippe Brucker, iommu

> From: Christoph Hellwig
> Sent: Thursday, April 7, 2022 2:26 PM
> 
> All drivers that implement get_resv_regions just use
> generic_put_resv_regions to implement the put side.  Remove the
> indirections and document the allocations constraints.
> 

Looks no document after removal:

>  void iommu_put_resv_regions(struct device *dev, struct list_head *list)
> -{
> -	const struct iommu_ops *ops = dev_iommu_ops(dev);
> -
> -	if (ops->put_resv_regions)
> -		ops->put_resv_regions(dev, list);
> -}
> -
> -/**
> - * generic_iommu_put_resv_regions - Reserved region driver helper
> - * @dev: device for which to free reserved regions
> - * @list: reserved region list for device
> - *
> - * IOMMU drivers can use this to implement their .put_resv_regions()
> callback
> - * for simple reservations. Memory allocated for each reserved region will
> be
> - * freed. If an IOMMU driver allocates additional resources per region, it is
> - * going to have to implement a custom callback.
> - */
> -void generic_iommu_put_resv_regions(struct device *dev, struct list_head
> *list)
_______________________________________________
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu

^ permalink raw reply	[flat|nested] 10+ messages in thread

* RE: [PATCH 4/4] iommu/arm-smmu-v3: cleanup arm_smmu_dev_{enable, disable}_feature
  2022-04-07  6:26 ` [PATCH 4/4] iommu/arm-smmu-v3: cleanup arm_smmu_dev_{enable, disable}_feature Christoph Hellwig
@ 2022-04-07  8:10   ` Tian, Kevin
  0 siblings, 0 replies; 10+ messages in thread
From: Tian, Kevin @ 2022-04-07  8:10 UTC (permalink / raw)
  To: Christoph Hellwig, Joerg Roedel, Sven Peter, David Woodhouse,
	Lu Baolu, Yong Wu, Jean-Philippe Brucker, iommu

> From: Christoph Hellwig
> Sent: Thursday, April 7, 2022 2:26 PM
> 
> Fold the arm_smmu_dev_has_feature arm_smmu_dev_feature_enabled
> into
> the main methods.
> 
> Signed-off-by: Christoph Hellwig <hch@lst.de>
> ---
>  drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c | 57 ++++++---------------
>  1 file changed, 15 insertions(+), 42 deletions(-)
> 
> diff --git a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c
> b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c
> index 1ea184bbf750a6..8e201c660139ae 100644
> --- a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c
> +++ b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c
> @@ -2760,58 +2760,27 @@ static void arm_smmu_get_resv_regions(struct
> device *dev,
>  	iommu_dma_get_resv_regions(dev, head);
>  }
> 
> -static bool arm_smmu_dev_has_feature(struct device *dev,
> -				     enum iommu_dev_features feat)
> -{
> -	struct arm_smmu_master *master = dev_iommu_priv_get(dev);
> -
> -	if (!master)
> -		return false;
> -
> -	switch (feat) {
> -	case IOMMU_DEV_FEAT_IOPF:
> -		return arm_smmu_master_iopf_supported(master);
> -	case IOMMU_DEV_FEAT_SVA:
> -		return arm_smmu_master_sva_supported(master);
> -	default:
> -		return false;
> -	}
> -}
> -
> -static bool arm_smmu_dev_feature_enabled(struct device *dev,
> -					 enum iommu_dev_features feat)
> -{
> -	struct arm_smmu_master *master = dev_iommu_priv_get(dev);
> -
> -	if (!master)
> -		return false;
> -
> -	switch (feat) {
> -	case IOMMU_DEV_FEAT_IOPF:
> -		return master->iopf_enabled;
> -	case IOMMU_DEV_FEAT_SVA:
> -		return arm_smmu_master_sva_enabled(master);
> -	default:
> -		return false;
> -	}
> -}
> -
>  static int arm_smmu_dev_enable_feature(struct device *dev,
>  				       enum iommu_dev_features feat)
>  {
>  	struct arm_smmu_master *master = dev_iommu_priv_get(dev);
> 
> -	if (!arm_smmu_dev_has_feature(dev, feat))
> -		return -ENODEV;
> -
> -	if (arm_smmu_dev_feature_enabled(dev, feat))
> -		return -EBUSY;
> +	if (!master)
> +		return -EINVAL;

Old logic returns -ENODEV but it's changed to -EINVAL here. Is it
intended? If yes, probably mention it in the patch description though
just a small semantics change.

> 
>  	switch (feat) {
>  	case IOMMU_DEV_FEAT_IOPF:
> +		if (!arm_smmu_master_iopf_supported(master))
> +			return -EINVAL;
> +		if (master->iopf_enabled)
> +			return -EBUSY;
>  		master->iopf_enabled = true;
>  		return 0;
>  	case IOMMU_DEV_FEAT_SVA:
> +		if (!arm_smmu_master_sva_supported(master))
> +			return -EINVAL;
> +		if (arm_smmu_master_sva_enabled(master))
> +			return -EBUSY;
>  		return arm_smmu_master_enable_sva(master);
>  	default:
>  		return -EINVAL;
> @@ -2823,16 +2792,20 @@ static int
> arm_smmu_dev_disable_feature(struct device *dev,
>  {
>  	struct arm_smmu_master *master = dev_iommu_priv_get(dev);
> 
> -	if (!arm_smmu_dev_feature_enabled(dev, feat))
> +	if (!master)
>  		return -EINVAL;
> 
>  	switch (feat) {
>  	case IOMMU_DEV_FEAT_IOPF:
> +		if (!master->iopf_enabled)
> +			return -EINVAL;
>  		if (master->sva_enabled)
>  			return -EBUSY;
>  		master->iopf_enabled = false;
>  		return 0;
>  	case IOMMU_DEV_FEAT_SVA:
> +		if (!arm_smmu_master_sva_enabled(master))
> +			return -EINVAL;
>  		return arm_smmu_master_disable_sva(master);
>  	default:
>  		return -EINVAL;
> --
> 2.30.2
> 
> _______________________________________________
> iommu mailing list
> iommu@lists.linux-foundation.org
> https://lists.linuxfoundation.org/mailman/listinfo/iommu
_______________________________________________
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 3/4] iommu: remove the put_resv_regions method
  2022-04-07  6:26 ` [PATCH 3/4] iommu: remove the put_resv_regions method Christoph Hellwig
  2022-04-07  8:04   ` Tian, Kevin
@ 2022-04-07 10:18   ` Robin Murphy
  2022-04-07 13:24     ` Christoph Hellwig
  1 sibling, 1 reply; 10+ messages in thread
From: Robin Murphy @ 2022-04-07 10:18 UTC (permalink / raw)
  To: Christoph Hellwig, Joerg Roedel, Sven Peter, David Woodhouse,
	Lu Baolu, Yong Wu, Jean-Philippe Brucker, iommu

On 2022-04-07 07:26, Christoph Hellwig wrote:
> All drivers that implement get_resv_regions just use
> generic_put_resv_regions to implement the put side.  Remove the
> indirections and document the allocations constraints.

Unfortunately we need to keep this one for now, as the belated IORT RMR 
support will finally be the first real user[1][2].

Robin.

[1] 
https://lore.kernel.org/linux-iommu/20220404124209.1086-6-shameerali.kolothum.thodi@huawei.com/
[2] 
https://lore.kernel.org/linux-iommu/20220404124209.1086-7-shameerali.kolothum.thodi@huawei.com/

> Signed-off-by: Christoph Hellwig <hch@lst.de>
> ---
>   drivers/iommu/amd/iommu.c                   |  1 -
>   drivers/iommu/apple-dart.c                  |  1 -
>   drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c |  1 -
>   drivers/iommu/arm/arm-smmu/arm-smmu.c       |  1 -
>   drivers/iommu/intel/iommu.c                 |  1 -
>   drivers/iommu/iommu.c                       | 20 +-------------------
>   drivers/iommu/mtk_iommu.c                   |  1 -
>   drivers/iommu/virtio-iommu.c                |  5 ++---
>   include/linux/iommu.h                       |  4 ----
>   9 files changed, 3 insertions(+), 32 deletions(-)
> 
> diff --git a/drivers/iommu/amd/iommu.c b/drivers/iommu/amd/iommu.c
> index a1ada7bff44e61..7011b46022dcbb 100644
> --- a/drivers/iommu/amd/iommu.c
> +++ b/drivers/iommu/amd/iommu.c
> @@ -2279,7 +2279,6 @@ const struct iommu_ops amd_iommu_ops = {
>   	.probe_finalize = amd_iommu_probe_finalize,
>   	.device_group = amd_iommu_device_group,
>   	.get_resv_regions = amd_iommu_get_resv_regions,
> -	.put_resv_regions = generic_iommu_put_resv_regions,
>   	.is_attach_deferred = amd_iommu_is_attach_deferred,
>   	.pgsize_bitmap	= AMD_IOMMU_PGSIZES,
>   	.def_domain_type = amd_iommu_def_domain_type,
> diff --git a/drivers/iommu/apple-dart.c b/drivers/iommu/apple-dart.c
> index decafb07ad0831..a45ad9ade0dba6 100644
> --- a/drivers/iommu/apple-dart.c
> +++ b/drivers/iommu/apple-dart.c
> @@ -771,7 +771,6 @@ static const struct iommu_ops apple_dart_iommu_ops = {
>   	.of_xlate = apple_dart_of_xlate,
>   	.def_domain_type = apple_dart_def_domain_type,
>   	.get_resv_regions = apple_dart_get_resv_regions,
> -	.put_resv_regions = generic_iommu_put_resv_regions,
>   	.pgsize_bitmap = -1UL, /* Restricted during dart probe */
>   	.default_domain_ops = &(const struct iommu_domain_ops) {
>   		.attach_dev	= apple_dart_attach_dev,
> diff --git a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c
> index 36461fb46d436c..1ea184bbf750a6 100644
> --- a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c
> +++ b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c
> @@ -2847,7 +2847,6 @@ static struct iommu_ops arm_smmu_ops = {
>   	.device_group		= arm_smmu_device_group,
>   	.of_xlate		= arm_smmu_of_xlate,
>   	.get_resv_regions	= arm_smmu_get_resv_regions,
> -	.put_resv_regions	= generic_iommu_put_resv_regions,
>   	.dev_enable_feat	= arm_smmu_dev_enable_feature,
>   	.dev_disable_feat	= arm_smmu_dev_disable_feature,
>   	.sva_bind		= arm_smmu_sva_bind,
> diff --git a/drivers/iommu/arm/arm-smmu/arm-smmu.c b/drivers/iommu/arm/arm-smmu/arm-smmu.c
> index 568cce590ccc13..41da1275689ebd 100644
> --- a/drivers/iommu/arm/arm-smmu/arm-smmu.c
> +++ b/drivers/iommu/arm/arm-smmu/arm-smmu.c
> @@ -1589,7 +1589,6 @@ static struct iommu_ops arm_smmu_ops = {
>   	.device_group		= arm_smmu_device_group,
>   	.of_xlate		= arm_smmu_of_xlate,
>   	.get_resv_regions	= arm_smmu_get_resv_regions,
> -	.put_resv_regions	= generic_iommu_put_resv_regions,
>   	.def_domain_type	= arm_smmu_def_domain_type,
>   	.pgsize_bitmap		= -1UL, /* Restricted during device attach */
>   	.owner			= THIS_MODULE,
> diff --git a/drivers/iommu/intel/iommu.c b/drivers/iommu/intel/iommu.c
> index df5c62ecf942b8..cafe50cb484cd5 100644
> --- a/drivers/iommu/intel/iommu.c
> +++ b/drivers/iommu/intel/iommu.c
> @@ -4875,7 +4875,6 @@ const struct iommu_ops intel_iommu_ops = {
>   	.probe_finalize		= intel_iommu_probe_finalize,
>   	.release_device		= intel_iommu_release_device,
>   	.get_resv_regions	= intel_iommu_get_resv_regions,
> -	.put_resv_regions	= generic_iommu_put_resv_regions,
>   	.device_group		= intel_iommu_device_group,
>   	.dev_enable_feat	= intel_iommu_dev_enable_feat,
>   	.dev_disable_feat	= intel_iommu_dev_disable_feat,
> diff --git a/drivers/iommu/iommu.c b/drivers/iommu/iommu.c
> index 6ce73f35c43aac..2e1f7d1cf74793 100644
> --- a/drivers/iommu/iommu.c
> +++ b/drivers/iommu/iommu.c
> @@ -2584,31 +2584,13 @@ void iommu_get_resv_regions(struct device *dev, struct list_head *list)
>   }
>   
>   void iommu_put_resv_regions(struct device *dev, struct list_head *list)
> -{
> -	const struct iommu_ops *ops = dev_iommu_ops(dev);
> -
> -	if (ops->put_resv_regions)
> -		ops->put_resv_regions(dev, list);
> -}
> -
> -/**
> - * generic_iommu_put_resv_regions - Reserved region driver helper
> - * @dev: device for which to free reserved regions
> - * @list: reserved region list for device
> - *
> - * IOMMU drivers can use this to implement their .put_resv_regions() callback
> - * for simple reservations. Memory allocated for each reserved region will be
> - * freed. If an IOMMU driver allocates additional resources per region, it is
> - * going to have to implement a custom callback.
> - */
> -void generic_iommu_put_resv_regions(struct device *dev, struct list_head *list)
>   {
>   	struct iommu_resv_region *entry, *next;
>   
>   	list_for_each_entry_safe(entry, next, list, list)
>   		kfree(entry);
>   }
> -EXPORT_SYMBOL(generic_iommu_put_resv_regions);
> +EXPORT_SYMBOL(iommu_put_resv_regions);
>   
>   struct iommu_resv_region *iommu_alloc_resv_region(phys_addr_t start,
>   						  size_t length, int prot,
> diff --git a/drivers/iommu/mtk_iommu.c b/drivers/iommu/mtk_iommu.c
> index 6fd75a60abd678..d970fd301e8f31 100644
> --- a/drivers/iommu/mtk_iommu.c
> +++ b/drivers/iommu/mtk_iommu.c
> @@ -688,7 +688,6 @@ static const struct iommu_ops mtk_iommu_ops = {
>   	.device_group	= mtk_iommu_device_group,
>   	.of_xlate	= mtk_iommu_of_xlate,
>   	.get_resv_regions = mtk_iommu_get_resv_regions,
> -	.put_resv_regions = generic_iommu_put_resv_regions,
>   	.pgsize_bitmap	= SZ_4K | SZ_64K | SZ_1M | SZ_16M,
>   	.owner		= THIS_MODULE,
>   	.default_domain_ops = &(const struct iommu_domain_ops) {
> diff --git a/drivers/iommu/virtio-iommu.c b/drivers/iommu/virtio-iommu.c
> index 25be4b822aa07f..36385b3deb8981 100644
> --- a/drivers/iommu/virtio-iommu.c
> +++ b/drivers/iommu/virtio-iommu.c
> @@ -964,7 +964,7 @@ static struct iommu_device *viommu_probe_device(struct device *dev)
>   	return &viommu->iommu;
>   
>   err_free_dev:
> -	generic_iommu_put_resv_regions(dev, &vdev->resv_regions);
> +	iommu_put_resv_regions(dev, &vdev->resv_regions);
>   	kfree(vdev);
>   
>   	return ERR_PTR(ret);
> @@ -989,7 +989,7 @@ static void viommu_release_device(struct device *dev)
>   
>   	vdev = dev_iommu_priv_get(dev);
>   
> -	generic_iommu_put_resv_regions(dev, &vdev->resv_regions);
> +	iommu_put_resv_regions(dev, &vdev->resv_regions);
>   	kfree(vdev);
>   }
>   
> @@ -1013,7 +1013,6 @@ static struct iommu_ops viommu_ops = {
>   	.release_device		= viommu_release_device,
>   	.device_group		= viommu_device_group,
>   	.get_resv_regions	= viommu_get_resv_regions,
> -	.put_resv_regions	= generic_iommu_put_resv_regions,
>   	.of_xlate		= viommu_of_xlate,
>   	.owner			= THIS_MODULE,
>   	.default_domain_ops = &(const struct iommu_domain_ops) {
> diff --git a/include/linux/iommu.h b/include/linux/iommu.h
> index a2d3562a501d3e..fed4c09e8e7cfe 100644
> --- a/include/linux/iommu.h
> +++ b/include/linux/iommu.h
> @@ -198,7 +198,6 @@ struct iommu_iotlb_gather {
>    *                  group and attached to the groups domain
>    * @device_group: find iommu group for a particular device
>    * @get_resv_regions: Request list of reserved regions for a device
> - * @put_resv_regions: Free list of reserved regions for a device
>    * @of_xlate: add OF master IDs to iommu grouping
>    * @is_attach_deferred: Check if domain attach should be deferred from iommu
>    *                      driver init to device driver init (default no)
> @@ -229,7 +228,6 @@ struct iommu_ops {
>   
>   	/* Request/Free a list of reserved regions for a device */
>   	void (*get_resv_regions)(struct device *dev, struct list_head *list);
> -	void (*put_resv_regions)(struct device *dev, struct list_head *list);
>   
>   	int (*of_xlate)(struct device *dev, struct of_phandle_args *args);
>   	bool (*is_attach_deferred)(struct device *dev);
> @@ -445,8 +443,6 @@ extern void iommu_set_fault_handler(struct iommu_domain *domain,
>   
>   extern void iommu_get_resv_regions(struct device *dev, struct list_head *list);
>   extern void iommu_put_resv_regions(struct device *dev, struct list_head *list);
> -extern void generic_iommu_put_resv_regions(struct device *dev,
> -					   struct list_head *list);
>   extern void iommu_set_default_passthrough(bool cmd_line);
>   extern void iommu_set_default_translated(bool cmd_line);
>   extern bool iommu_default_passthrough(void);
_______________________________________________
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 3/4] iommu: remove the put_resv_regions method
  2022-04-07 10:18   ` Robin Murphy
@ 2022-04-07 13:24     ` Christoph Hellwig
  0 siblings, 0 replies; 10+ messages in thread
From: Christoph Hellwig @ 2022-04-07 13:24 UTC (permalink / raw)
  To: Robin Murphy
  Cc: Jean-Philippe Brucker, iommu, David Woodhouse, Christoph Hellwig

On Thu, Apr 07, 2022 at 11:18:20AM +0100, Robin Murphy wrote:
> On 2022-04-07 07:26, Christoph Hellwig wrote:
>> All drivers that implement get_resv_regions just use
>> generic_put_resv_regions to implement the put side.  Remove the
>> indirections and document the allocations constraints.
>
> Unfortunately we need to keep this one for now, as the belated IORT RMR 
> support will finally be the first real user[1][2].
>
> Robin.
>
> [1] 
> https://lore.kernel.org/linux-iommu/20220404124209.1086-6-shameerali.kolothum.thodi@huawei.com/
> [2] 
> https://lore.kernel.org/linux-iommu/20220404124209.1086-7-shameerali.kolothum.thodi@huawei.com/

What these patches to looks wrong to me.  I'll comment there.
_______________________________________________
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: remve dead iommu code
  2022-04-07  6:26 remve dead iommu code Christoph Hellwig
                   ` (3 preceding siblings ...)
  2022-04-07  6:26 ` [PATCH 4/4] iommu/arm-smmu-v3: cleanup arm_smmu_dev_{enable, disable}_feature Christoph Hellwig
@ 2022-04-28  8:33 ` Joerg Roedel
  4 siblings, 0 replies; 10+ messages in thread
From: Joerg Roedel @ 2022-04-28  8:33 UTC (permalink / raw)
  To: Christoph Hellwig; +Cc: Jean-Philippe Brucker, iommu, David Woodhouse

On Thu, Apr 07, 2022 at 08:26:04AM +0200, Christoph Hellwig wrote:
> Hi all,
> 
> this removes a bit of dead code and methods from the iommu code and the
> cleans up the arm-smmu-v3 driver a little bit based on that.
> 
> Diffstat:
>  drivers/iommu/amd/iommu.c                   |    1 
>  drivers/iommu/apple-dart.c                  |    1 
>  drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c |   60 +++++++---------------------
>  drivers/iommu/arm/arm-smmu/arm-smmu.c       |    1 
>  drivers/iommu/intel/iommu.c                 |    1 
>  drivers/iommu/iommu.c                       |   33 ---------------
>  drivers/iommu/mtk_iommu.c                   |    1 
>  drivers/iommu/virtio-iommu.c                |    5 --
>  include/linux/iommu.h                       |   17 -------
>  9 files changed, 19 insertions(+), 101 deletions(-)

This concerns mostly arm-smmu, please also Cc Will Deacon on this one.
_______________________________________________
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2022-04-28  8:33 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-04-07  6:26 remve dead iommu code Christoph Hellwig
2022-04-07  6:26 ` [PATCH 1/4] iommu: remove the unused dev_has_feat method Christoph Hellwig
2022-04-07  6:26 ` [PATCH 2/4] iommu: remove iommu_dev_feature_enabled Christoph Hellwig
2022-04-07  6:26 ` [PATCH 3/4] iommu: remove the put_resv_regions method Christoph Hellwig
2022-04-07  8:04   ` Tian, Kevin
2022-04-07 10:18   ` Robin Murphy
2022-04-07 13:24     ` Christoph Hellwig
2022-04-07  6:26 ` [PATCH 4/4] iommu/arm-smmu-v3: cleanup arm_smmu_dev_{enable, disable}_feature Christoph Hellwig
2022-04-07  8:10   ` Tian, Kevin
2022-04-28  8:33 ` remve dead iommu code Joerg Roedel

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.