[PATCH 7/7] iommu: Remove pgsize from iommu_iotlb_gather
Jason Gunthorpe
jgg at nvidia.com
Mon Jul 6 09:29:13 PDT 2026
SMMUv3 was the only user, remove it and
iommu_iotlb_gather_add_range_pgsize() which is also unused now.
Signed-off-by: Jason Gunthorpe <jgg at nvidia.com>
---
include/linux/iommu.h | 62 +++++++++----------------------------------
1 file changed, 13 insertions(+), 49 deletions(-)
diff --git a/include/linux/iommu.h b/include/linux/iommu.h
index d20aa6f6863ab3..adc45038e7ec79 100644
--- a/include/linux/iommu.h
+++ b/include/linux/iommu.h
@@ -361,29 +361,21 @@ struct iommu_iotlb_gather {
*/
unsigned long end;
- union {
+ struct {
/**
- * @pgsize: The interval at which to perform the flush, only
- * used by arm-smmu-v3
+ * @pt.leaf_levels_bitmap: Bitmap of generic_pt levels where
+ * leaf entries were unmapped. Bit 0 means the leaf only level.
+ * If 0 no leafs were unmapped.
*/
- size_t pgsize;
- struct {
- /**
- * @pt.leaf_levels_bitmap: Bitmap of generic_pt
- * levels where leaf entries were unmapped. Bit 0
- * means the leaf only level. If 0 no leafs
- * were unmapped.
- */
- u8 leaf_levels_bitmap;
- /**
- * @pt.table_levels_bitmap: Bitmap of generic_pt levels
- * of table entries that were removed. Bit 0 is never
- * set, bit 1 means a table of all leafs was removed.
- * When freelist is empty this must be 0.
- */
- u8 table_levels_bitmap;
- } pt;
- };
+ u8 leaf_levels_bitmap;
+ /**
+ * @pt.table_levels_bitmap: Bitmap of generic_pt levels of table
+ * entries that were removed. Bit 0 is never set, bit 1 means a
+ * table of all leafs was removed. When freelist is empty this
+ * must be 0.
+ */
+ u8 table_levels_bitmap;
+ } pt;
/**
* @freelist: Removed pages to free after sync, only used by
@@ -1062,34 +1054,6 @@ static inline void iommu_iotlb_gather_add_range(struct iommu_iotlb_gather *gathe
gather->end = end;
}
-/**
- * iommu_iotlb_gather_add_page - Gather for page-based TLB invalidation
- * @domain: IOMMU domain to be invalidated
- * @gather: TLB gather data
- * @iova: start of page to invalidate
- * @size: size of page to invalidate
- *
- * Helper for IOMMU drivers to build invalidation commands based on individual
- * pages, or with page size/table level hints which cannot be gathered if they
- * differ.
- */
-static inline void iommu_iotlb_gather_add_page(struct iommu_domain *domain,
- struct iommu_iotlb_gather *gather,
- unsigned long iova, size_t size)
-{
- /*
- * If the new page is disjoint from the current range or is mapped at
- * a different granularity, then sync the TLB so that the gather
- * structure can be rewritten.
- */
- if ((gather->pgsize && gather->pgsize != size) ||
- iommu_iotlb_gather_is_disjoint(gather, iova, size))
- iommu_iotlb_sync(domain, gather);
-
- gather->pgsize = size;
- iommu_iotlb_gather_add_range(gather, iova, size);
-}
-
static inline bool iommu_iotlb_gather_queued(struct iommu_iotlb_gather *gather)
{
return gather && gather->queued;
--
2.43.0
More information about the linux-arm-kernel
mailing list