STRUCT IOMMU_HWPT_SET_DIRTY_TRACKING(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

✨ 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 holds sizeof(struct iommu_hwpt_set_dirty_tracking). yes it wants the size of itself, iconic self-awareness behavior honestly ✨
  • flags β€” a combination of enum 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