STRUCT IOMMU_IOAS_ALLOW_IOVAS(9)
β¨ NAME β¨
okay so weβre in the Kernel API Manual for struct iommu_ioas_allow_iovas(9) β the page for ioctl(IOMMU_IOAS_ALLOW_IOVAS). Thatβs the whole name-vibe, bestie: struct iommu_ioas_allow_iovas = ioctl(IOMMU_IOAS_ALLOW_IOVAS). π
πΈ SYNOPSIS πΈ
hereβs the struct, copied exactly:
struct iommu_ioas_allow_iovas {
__u32 size;
__u32 ioas_id;
__u32 num_iovas;
__u32 __reserved;
__aligned_u64 allowed_iovas;
};
π Members π
sizeβsizeof(struct iommu_ioas_allow_iovas)β yes, that exact sizeof. π«Άioas_idβ the IOAS ID to allow IOVAs from. πnum_iovasβ Input/Output total number of ranges in the IOAS. π₯__reservedβ Must be 0. no cap, keep it zero. πallowed_iovasβ Pointer to array ofstruct iommu_iova_range. πΈ
π Description π
okay so what does this do? It ensures a range of IOVAs are always available for allocation. If this call succeeds then IOMMU_IOAS_IOVA_RANGES will never return a list of IOVA ranges that are narrower than the ranges provided here. periodt. β¨
and yes: this call will fail if IOMMU_IOAS_IOVA_RANGES is currently narrower than the given ranges. so like, check the vibe first. π
When an IOAS is first created the IOVA_RANGES will be maximally sized, and as devices are attached the IOVA will narrow based on the device restrictions. When an allowed range is specified any narrowing will be refused, ie device attachment can fail if the device requires limiting within the allowed range. π
Automatic IOVA allocation is also impacted by this call. MAP will only allocate within the allowed IOVAs if they are present. π¦
This call replaces the entire allowed list with the given list. the whole list, bestie. iykyk. π
π¦ SEE ALSO π¦
the whole squad is here, bestie β every single reference:
- 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)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)
okay thatβs the page, bestie π«Ά. source/version: ./include/uapi/linux; date: October 2026; footer title vibe: struct iomm..._allow_iovas(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