STRUCT IOMMU_FAULT_ALLOC(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… struct iommu_fault_alloc β€” the ioctl(IOMMU_FAULT_QUEUE_ALLOC) glow-up

okay so bestie, welcome to the struct iommu_fault_alloc(9) page from the Kernel API Manual ✨ this is the little struct you hand to ioctl(IOMMU_FAULT_QUEUE_ALLOC) and it's honestly giving "small but mighty" πŸŽ€


✨ SYNOPSIS ✨

here's the whole vibe, literally just this:

struct iommu_fault_alloc {
    __u32 size;
    __u32 flags;
    __u32 out_fault_id;
    __u32 out_fault_fd;
 };

four __u32s, no cap. she's compact πŸ’–


🫢 Members 🫢

  • size β€” this is sizeof(struct iommu_fault_alloc). yes bestie, you tell the kernel how big you are. it's a whole thing.
  • flags β€” must be 0. that's it. that's the rule. no secret flag combos here πŸ™ˆ
  • out_fault_id β€” the ID of the new FAULT πŸ‘‘ this is the output, the kernel writes the new FAULT's ID here.
  • out_fault_fd β€” the fd of the new FAULT πŸŽ€ also an output, kernel drops the new FAULT's file descriptor here.

🌸 Description 🌸

so what does it actually do? it explicitly allocates a fault handling object. that's the whole assignment, and it ate πŸ’…

like β€” you're not waiting around for one to appear, you're asking for it. main character energy fr fr ✨


πŸ¦‹ SEE ALSO πŸ¦‹

the friend group, the whole extended family, everyone's invited 🫢

Kernel file ./include/uapi/linux/iommufd.h

  • 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)
  • 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)
  • 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 page, bestie 🧚 ok bye β€” this one lives in ./include/uapi/linux, dated October 2026, and it's filed under struct iommu_fault_alloc(9). mwah πŸ’œπŸ’…

πŸ“¦ where this page comes from