STRUCT IOMMU_IOTLB_GATHER(9)
π NAME π
okay bestie, welcome to struct iommu_iotlb_gather(9) β literally the range information for a pending IOTLB flush. That's the whole vibe: one iconic little struct holding the deets for a flush that hasn't happened yet. π¦
β¨ SYNOPSIS β¨
no cap, here's the shape:
struct iommu_iotlb_gather {
unsigned long start;
unsigned long end;
union {
size_t pgsize;
struct {
u8 leaf_levels_bitmap;
u8 table_levels_bitmap;
} pt;
};
struct iommu_pages_list freelist;
bool queued;
};
π Members π
startβ IOVA representing the start of the range to be flushed.endβ IOVA representing the end of the range to be flushed (inclusive). inclusive, bestie β don't forget that part.{unnamed_union}β anonymous. it's giving mysterious unnamed-union energy, honestly.pgsizeβ The interval at which to perform the flush, only used byarm-smmu-v3.pt.leaf_levels_bitmapβ Bitmap ofgeneric_ptlevels where leaf entries were unmapped. Bit 0 means the leaf only level. If 0 no leafs were unmapped.pt.table_levels_bitmapβ Bitmap ofgeneric_ptlevels of table entries that were removed. Bit 0 is never set, bit 1 means a table of all leafs was removed. Whenfreelistis empty this must be 0.freelistβ Removed pages to free after sync, only used byiommupt.queuedβ True if the gather will be completed with a flush all.
πΈ Description πΈ
This structure is intended to be updated by multiple calls to the ->unmap function in struct iommu_ops before eventually being passed into ->iotlb_sync. Drivers can add pages to freelist to be freed after ->iotlb_sync or ->iotlb_flush_all have cleared all cached references to them. queued is set to indicate when ->iotlb_flush_all will be called later instead of ->iotlb_sync, so drivers may optimise accordingly.
π₯ SEE ALSO π₯
Kernel file ./include/linux/iommu.h β also go say hi to these icons:
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_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)iommu_iotlb_gather_add_range(9)iommu_iotlb_gather_add_page(9)struct iommu_fwspec(9)struct iommu_sva(9)iommu_map_sgtable(9)
mwah π β source ./include/linux, version struct iommu_iotlb_gather(9), date October 2026. periodt. π
π¦ 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