iommu_iotlb_...er_add_range(9)
πΈ NAME πΈ
iommu_iotlb_gather_add_range β bestie, this is the gather helper for address-based TLB invalidation. That's the whole vibe. (It's section 9, kernel API territory, so bring your compiler voice.)
β¨ SYNOPSIS β¨
void iommu_iotlb_gather_add_range (struct iommu_iotlb_gather *gather ,
unsigned long iova , size_t size );
Yes it's one function, yes it's void, yes you're gonna pass three things. Slay. π
π ARGUMENTS π
gatherβ the TLB gather data. This is the little bag everything gets collected into, okay? It's literally the whole point of the function. π«Άiovaβ the start of the page to invalidate. That's your where.sizeβ the size of the page to invalidate. That's your how much, and ngl, "arbitrarily-sized" is the entire personality of this helper (more on that below π).
π¦ DESCRIPTION π¦
So here's the tea, bestie: this is a helper for IOMMU drivers to build arbitrarily-sized invalidation commands β like, any size you want, the range is literally the only thing that matters here.
And the other half of the vibe? Simply minimising intermediate syncs is preferred. That's it, that's the design goal. Don't over-sync, don't be extra, just gather the range and let the syncs be minimal. Periodt. β¨
Note: it's a helper β it builds the invalidation commands for you, it doesn't do the invalidating itself, so don't come for me if you expected magic. It's giving "trust the process." πΈ
π₯ SEE ALSO π₯
The kernel file in question is ./include/linux/iommu.h β that's the mothership, go say hi. π
And here's the whole friend group, no cap, all of them, in order:
struct iommu_fault_page_request(9)struct iommu_fault(9)enum iommu_page_response_code(9)struct iommu_page_response(9)struct iopf_queue(9)struct iommu_resv_region(9)struct iommu_iotlb_gather(9)struct iommu_dirty_bitmap(9)struct iommu_dirty_ops(9)struct iommu_user_data(9)struct iommu_user_data_array(9)__iommu_copy_struct_from_user(9)iommu_copy_struct_from_user(9)__iommu_copy_struct_from_user_array(9)iommu_copy_struct_from_user_array(9)iommu_copy_struct_from_full_user_array(9)__iommu_copy_struct_to_user(9)iommu_copy_struct_to_user(9)struct iommu_ops(9)struct iommu_domain_ops(9)struct iommu_device(9)struct iommu_fault_param(9)struct dev_iommu(9)iommu_iotlb_gather_is_disjoint(9)β the sibling that checks if your ranges are disjoint, iykyk πiommu_iotlb_gather_add_page(9)β the other sibling, single-page edition πstruct iommu_fwspec(9)struct iommu_sva(9)iommu_map_sgtable(9)
That's the whole page, bestie β you ate that. π Go gather those ranges responsibly. π
Source path: ./include/linux Β· Version date: October 2026 Β· Manual: iommu_iotlb_...er_add_range(9) β mwah, see you in the next man page. πππ
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms