STRUCT IOMMU_HWPT_SET_DIRTY_TRACKING(9)
β¨ struct iommu_hwpt_set_dirty_tracking β Kernel API Manual β¨
okay bestie, we're looking at struct iommu_hwpt_set_dirty_tracking today, and it's literally the payload struct for the ioctl(IOMMU_HWPT_SET_DIRTY_TRACKING) call π
it lives in the Kernel API Manual and honestly it's giving "small struct, big job" energy.
π NAME π
struct iommu_hwpt_set_dirty_tracking β the struct you pass to ioctl(IOMMU_HWPT_SET_DIRTY_TRACKING), no cap π
πΈ SYNOPSIS πΈ
struct iommu_hwpt_set_dirty_tracking {
__u32 size;
__u32 flags;
__u32 hwpt_id;
__u32 __reserved;
};
π¦ Members π¦
sizeβ this one holdssizeof(struct iommu_hwpt_set_dirty_tracking). yes it wants the size of itself, iconic self-awareness behavior honestly β¨flagsβ a combination ofenum iommufd_hwpt_set_dirty_tracking_flags. mix and match your faves πhwpt_idβ the HW pagetable ID that represents the IOMMU domain. this is the main character right here π__reservedβ must be 0. not "should be", not "try to", like actually must π₯ don't be quirky with this one.
π Description π
Toggle dirty tracking on an HW pagetable. that's the whole vibe β you're flipping dirty tracking on or off for that hardware pagetable, and the struct above is how you tell the kernel which one and how π
π SEE ALSO π
the kernel source file lives at ./include/uapi/linux/iommufd.h, and here's the whole friend group that comes with it β every single one, fr fr:
General ioctl format(9)struct iommu_destroy(9)struct iommu_ioas_alloc(9)struct iommu_iova_range(9)struct iommu_ioas_iova_ranges(9)struct iommu_ioas_allow_iovas(9)enum iommufd_ioas_map_flags(9)struct iommu_ioas_map(9)struct iommu_ioas_noiommu_get_pa(9)struct iommu_ioas_map_file(9)struct iommu_ioas_copy(9)struct iommu_ioas_unmap(9)enum iommufd_option(9)enum iommufd_option_ops(9)struct iommu_option(9)enum iommufd_vfio_ioas_op(9)struct iommu_vfio_ioas(9)enum iommufd_hwpt_alloc_flags(9)enum iommu_hwpt_vtd_s1_flags(9)struct iommu_hwpt_vtd_s1(9)struct iommu_hwpt_arm_smmuv3(9)struct iommu_hwpt_amd_guest(9)enum iommu_hwpt_data_type(9)struct iommu_hwpt_alloc(9)enum iommu_hw_info_vtd_flags(9)struct iommu_hw_info_vtd(9)enum iommu_hw_info_arm_smmuv3_flags(9)struct iommu_hw_info_arm_smmuv3(9)struct iommu_hw_info_tegra241_cmdqv(9)struct iommu_hw_info_amd(9)enum iommu_hw_info_type(9)enum iommufd_hw_capabilities(9)enum iommufd_hw_info_flags(9)struct iommu_hw_info(9)enum iommufd_hwpt_get_dirty_bitmap_flags(9)struct iommu_hwpt_get_dirty_bitmap(9)enum iommu_hwpt_invalidate_data_type(9)enum iommu_hwpt_vtd_s1_invalidate_flags(9)struct iommu_hwpt_vtd_s1_invalidate(9)struct iommu_viommu_arm_smmuv3_invalidate(9)struct iommu_hwpt_invalidate(9)enum iommu_hwpt_pgfault_flags(9)enum iommu_hwpt_pgfault_perm(9)struct iommu_hwpt_pgfault(9)enum iommufd_page_response_code(9)struct iommu_hwpt_page_response(9)struct iommu_fault_alloc(9)enum iommu_viommu_type(9)struct iommu_viommu_tegra241_cmdqv(9)struct iommu_viommu_alloc(9)struct iommu_vdevice_alloc(9)struct iommu_ioas_change_process(9)enum iommu_veventq_flag(9)struct iommufd_vevent_header(9)enum iommu_veventq_type(9)struct iommu_vevent_arm_smmuv3(9)struct iommu_vevent_tegra241_cmdqv(9)struct iommu_veventq_alloc(9)enum iommu_hw_queue_type(9)struct iommu_hw_queue_alloc(9)
π reminder bestie: __reserved is 0 only. that field does not want your creative input.
that's the whole page, and it came straight out of ./include/uapi/linux, dated October 2026 β so go forth, toggle that dirty tracking, and remember to keep your reserved fields zeroed π«Άβ¨π
π¦ 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