STRUCT IOMMU_VFIO_IOAS(9)
π struct iommu_vfio_ioas(9) β Kernel API Manual π
okay so bestie, this page lives in the Kernel API Manual and it's all about struct iommu_vfio_ioas, which is the struct for the ioctl(IOMMU_VFIO_IOAS) call. it's short, it's sweet, and it's giving "small struct, big responsibilities" energy. let's get into it β¨
β¨ NAME β¨
struct iommu_vfio_ioas β the struct you hand to ioctl(IOMMU_VFIO_IOAS). yes, that's the whole name. iconic minimalism π
π¦ SYNOPSIS π¦
struct iommu_vfio_ioas {
__u32 size;
__u32 ioas_id;
__u16 op;
__u16 __reserved;
};
that's the whole thing. four fields, no notes, slay π
πΈ Members πΈ
sizeβsizeof(struct iommu_vfio_ioas). yeah, it's literally just the size of itself. it's self-aware, we love that for it πioas_idβ the payload field, and its job depends onop, bestie:- for
IOMMU_VFIO_IOAS_SETit's the input IOAS ID you're setting - for
IOMMU_VFIO_IOAS_GETit will output the IOAS ID
- for
opβ one ofenum iommufd_vfio_ioas_op. that's the toggle that tells this struct what mood it's in π«__reservedβ must be0. no cap, literally zero. don't be cute with it π
π₯ Description π₯
so here's the lore π«Ά the VFIO compatibility support uses a single ioas because the VFIO APIs do not support the ID field. that's just how it is, fr fr.
this ioctl lets you Set or Get the IOAS that VFIO compatibility will use. IOMMU_VFIO_IOAS_SET for setting, IOMMU_VFIO_IOAS_GET for getting β you got it π
now the part that matters π when VFIO_GROUP_SET_CONTAINER is used on an iommufd, it will get the compatibility ioas β either by taking what is already set, or by auto creating one. from then on VFIO will continue to use that ioas, and it is not affected by this ioctl. so like, once it's locked in, it's locked in π
and one clear warning, bestie:SETorCLEARdoes not destroy any auto-created IOAS. no cleanup, no goodbye message, it just stays. noted π
π§ SEE ALSO π§
the friend group π the kernel source file is ./include/uapi/linux/iommufd.h, and the whole crew is:
- general
ioctlformat(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)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)
that's a whole friend group and every single one of them is invited π«Ά
and that's the page bestie π it comes to you from ./include/uapi/linux, dated October 2026, and it's filed under struct iommu_vfio_ioas(9). go set yourself an IOAS, you've earned it πβ
π¦ 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