STRUCT IOMMU_IOAS_ALLOC(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… struct iommu_ioas_alloc(9) β€” from the Kernel API Manual, bestie ✨

okay so picture this: you're deep in the kernel, you open the manual, and the page header literally says struct iommu_ioas_alloc(9) β€” that's the whole title, no notes. welcome to the Kernel API Manual, we're getting into ioctl business today 🫢


🌸 NAME 🌸

struct iommu_ioas_alloc β€” the ioctl(IOMMU_IOAS_ALLOC) glow-up. that's it, that's the name, no cap πŸ’…


✨ SYNOPSIS ✨

here's the struct, bestie β€” copy it exactly, do not freestyle:

struct iommu_ioas_alloc {
    __u32 size;
    __u32 flags;
    __u32 out_ioas_id;
 };

πŸŽ€ Members πŸŽ€

okay let's meet the lineup, main character energy only:

  • size β€” this is just sizeof(struct iommu_ioas_alloc). yes literally, it's a self-report situation, the struct tells you how big it is 😌
  • flags β€” Must be 0. not "should", not "ideally" β€” must. keep it zero, fr fr πŸ™ˆ
  • out_ioas_id β€” the output IOAS ID for the allocated object. this is the little gift the kernel hands back to you at the end 🎁

πŸ¦‹ Description πŸ¦‹

so what does this thing do? it allocates an IO Address Space (IOAS for short β€” say it with me, iykyk) which holds an IO Virtual Address (IOVA) to memory mapping. that's the entire description, she's short and iconic and she ate. ✨


πŸ’œ SEE ALSO πŸ’œ

the friend group, the whole squad, everybody's here β€” Kernel file ./include/uapi/linux/iommufd.h, General ioctl format(9), struct iommu_destroy(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), 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).

like I said. the whole squad. πŸ’€


and that's the page, bestie!! this one lives in ./include/uapi/linux, dated October 2026 β€” mark your calendars, she's a Scorpio or whatever, periodt πŸŒˆπŸ’–

πŸ“¦ where this page comes from