STRUCT IOMMU_VEVENTQ_ALLOC(9)
π
struct iommu_veventq_alloc(9) β Kernel API Manual β¨
okay so bestie, we're in the Kernel API Manual, this page lives at struct iommu_veventq_alloc(9), and it's literally all about the ioctl(IOMMU_VEVENTQ_ALLOC) call. strap in π
β¨ NAME β¨
struct iommu_veventq_alloc β the ioctl(IOMMU_VEVENTQ_ALLOC) vibe π«
π¦ SYNOPSIS π¦
struct iommu_veventq_alloc {
__u32 size;
__u32 flags;
__u32 viommu_id;
__u32 type;
__u32 veventq_depth;
__u32 out_veventq_id;
__u32 out_veventq_fd;
__u32 __reserved;
};
πΈ Members πΈ
sizeβ it's justsizeof(struct iommu_veventq_alloc), the classic self-aware struct move πflagsβ must be0. no cap, that's the whole rule πviommu_idβ the virtual IOMMU ID you're associating the vEVENTQ with π«Άtypeβ what type of vEVENTQ this is. must be defined inenum iommu_veventq_typeβveventq_depthβ the maximum number of events in the vEVENTQ. it's giving capacity limits πout_veventq_idβ the ID of the brand new vEVENTQ πout_veventq_fdβ the fd of the new vEVENTQ. user space must close the successfully returned fd after using it β that's a real one, please don't ghost your file descriptors π__reservedβ must be0. again. it's reserved, bestie π
π Description π
so this ioctl explicitly allocates a virtual event queue interface for a vIOMMU. highkey iconic. a vIOMMU can have multiple FDs for different types, but it's confined to one per type β that's the rule, periodt π
user space should open the out_veventq_fd to read vEVENTs out of a vEVENTQ, if there are vEVENTs available. and listen β a vEVENTQ will lose events due to overflow if the number of the vEVENTs hits veventq_depth. so size it right, bestie, no cap π₯
each vEVENT in a vEVENTQ encloses a struct iommufd_vevent_header followed by a type-specific data structure, in a normal case:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β header0 data0 header1 data1 ... headerN dataN β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
unless a tailing IOMMU_VEVENTQ_FLAG_LOST_EVENTS header is logged (refer to struct iommufd_vevent_header). like, that's the plot twist π
π§ SEE ALSO π§
the reading list is long and honestly she ate, so here's every single one, no skips π
- 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)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)enum iommu_hw_queue_type(9)struct iommu_hw_queue_alloc(9)
okay that's the whole page, mwah π
oh and the cute lil sign-off at the bottom: this one's from ./include/uapi/linux (that's the source/version bit, iykyk), dated October 2026, and it belongs to struct iommu_veventq_alloc(9). slay, go read your vEVENTs responsibly π«Άβ¨
π¦ 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