[PATCH v2 9/9] iommu: Remove pgsize from iommu_iotlb_gather
Jason Gunthorpe <[email protected]>
| Newsgroups | dev.linux.lists.iommu,dev.linux.lists.patches,org.infradead.lists.linux-arm-kernel |
|---|---|
| Message-ID | <[email protected]> |
SMMUv3 was the only user, remove it and iommu_iotlb_gather_add_range_pgsize() which is also unused now. Signed-off-by: Jason Gunthorpe <[email protected]> --- 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