ENUM IOMMUFD_OPTION(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

✨ enum iommufd_option πŸ’…

okay so bestie, welcome to the Kernel API Manual β€” yes that's the manual name, we're being fancy today πŸŽ€ β€” and today's main character is enum iommufd_option, which is the whole vibe behind ioctl(IOMMU_OPTION_RLIMIT_MODE) and ioctl(IOMMU_OPTION_HUGE_PAGES). Two whole options. Iconic. Let's go πŸ¦‹


✨ SYNOPSIS ✨

like, here's the shape of the thing, no cap:

enum iommufd_option {
    IOMMU_OPTION_RLIMIT_MODE ,
    IOMMU_OPTION_HUGE_PAGES

};

🌸 Constants 🌸

time for the actual deets, and yes there's only two, but they're both kinda important πŸ‘‘

  • IOMMU_OPTION_RLIMIT_MODE β€” this one changes how RLIMIT_MEMLOCK accounting works. lowkey powerful. the caller must have privilege to invoke this, so don't just show up without it πŸ™ˆ Value 0 (the default) means user based accounting, and value 1 uses process based accounting. also it's a global option, so object_id must be 0 β€” like, don't try to be cute with it πŸ’€
  • IOMMU_OPTION_HUGE_PAGES β€” value 1 (the default) allows contiguous pages to be combined when generating iommu mappings. value 0 disables the combining and everything gets mapped to PAGE_SIZE. honestly this can be useful for benchmarking 🧚 this one is a per-IOAS option, so object_id must be the IOAS ID β€” different rules, same queen energy ✨

πŸ¦‹ SEE ALSO πŸ¦‹

this list is long and I respect it, so here's every single one, no skipping, fr fr πŸ’–

Also peep the kernel file: ./include/uapi/linux/iommufd.h β€” that's where it lives, iykyk πŸ“

  • 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_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)
  • struct iommu_hwpt_set_dirty_tracking(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)

and that's the whole page, bestie 🫢 you ate that. before you go β€” this lil masterpiece lives in ./include/uapi/linux, dated October 2026 ⭐ so like, bookmark it in your brain. mwah πŸ’‹πŸŒˆ

πŸ“¦ where this page comes from