STRUCT IOMMU_HW_QUEUE_ALLOC(9)
Okay bestie, welcome to struct iommu_hw_queue_alloc(9) in the Kernel API Manual β this is the ioctl(IOMMU_HW_QUEUE_ALLOC) struct and I'm literally obsessed. π
π NAME π
struct iommu_hw_queue_alloc β ioctl(IOMMU_HW_QUEUE_ALLOC) π«Ά
β¨ SYNOPSIS β¨
Here's the whole struct, no cap:
struct iommu_hw_queue_alloc {
__u32 size;
__u32 flags;
__u32 viommu_id;
__u32 type;
__u32 index;
__u32 out_hw_queue_id;
__aligned_u64 nesting_parent_iova;
__aligned_u64 length;
};
π§Έ Members π§Έ
sizeβ this one is literallysizeof(struct iommu_hw_queue_alloc), so it knows its own size. Main character energy. β¨flagsβ must be0. No cap, don't get creative here. πviommu_idβ the virtual IOMMU ID to associate the HW queue with.typeβ one ofenum iommu_hw_queue_type.indexβ the logical index to the HW queue per virtual IOMMU for a multi-queue model.out_hw_queue_idβ the ID of the new HW queue.nesting_parent_iovaβ base address of the queue memory in the guest physical address space.lengthβ length of the queue memory.
πΈ Description πΈ
So this allocates a HW queue object for a vIOMMU-specific HW-accelerated queue, and it allows HW to access a guest queue memory described using nesting_parent_iova and length. Slay. π₯
A vIOMMU can allocate multiple queues, but it must use a different index per type to separate each allocation, like:
Type1 HW queue0, Type1 HW queue1, Type2 HW queue0, ...
π¦ SEE ALSO π¦
Okay bestie, here's the whole friend group of related refs β no skipping, periodt:
- 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)struct iommu_veventq_alloc(9)enum iommu_hw_queue_type(9)
Thatβs the whole page, bestie! Source/version: ./include/uapi/linux. Date stamped: October 2026. Page: struct iommu_hw_queue_alloc(9). Mwah π
π¦ 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