STRUCT IOMMU_IOAS_MAP_FILE(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

✨ struct iommu_ioas_map_file(9) ✨

okay so bestie, welcome to the Kernel API Manual πŸ’– this one's all about struct iommu_ioas_map_file β€” yes that's the ioctl(IOMMU_IOAS_MAP_FILE), we love a struct that moonlights as an ioctl πŸŽ€


🌸 NAME 🌸

struct iommu_ioas_map_file β€” literally just ioctl(IOMMU_IOAS_MAP_FILE), that's the whole vibe πŸ’…


πŸ¦‹ SYNOPSIS πŸ¦‹

struct iommu_ioas_map_file {
    __u32 size;
    __u32 flags;
    __u32 ioas_id;
    __s32 fd;
    __aligned_u64 start;
    __aligned_u64 length;
    __aligned_u64 iova;
 };

look at her. iconic. seven fields, zero notes πŸ’œ


πŸŽ€ Members πŸŽ€

  • size β€” it's sizeof(struct iommu_ioas_map_file), the classic "how big am I" flex ✨
  • flags β€” same deal as for iommu_ioas_map, no cap 🫢
  • ioas_id β€” also same as for iommu_ioas_map, matching energy πŸ’«
  • fd β€” the memfd (or a supported dma-buf file, ooh πŸ‘€) that you're mapping
  • start β€” byte offset from the start of the file, like where in the file we're starting from bestie πŸ“
  • length β€” same as for iommu_ioas_map, keeping the consistency streak alive 🌈
  • iova β€” same as for iommu_ioas_map too, she said "match my sister's outfit" πŸ’…

🌟 Description 🌟

So what she actually does: she sets an IOVA mapping from a memfd file 🧚

On kernels with dma-buf support, supported dma-buf files may also be accepted β€” cute, we love options 😌

⚠️ but real talk: this is not a generic dma-buf import path. Do not come in here expecting that, bestie, it's giving "read the fine print" πŸ’€

Currently supported dma-bufs include single-range VFIO PCI dma-bufs exported through VFIO_DEVICE_FEATURE_DMA_BUF β€” those are the ones getting the VIP treatment πŸ‘‘ and other dma-bufs may be rejected πŸ™ˆ (sorry babes)

All other arguments and semantics match those of IOMMU_IOAS_MAP β€” like, exactly. Every one. Match made in heaven fr fr 🫢


πŸ’« SEE ALSO πŸ’«

grab a snack, this list is long and she ATE πŸ“

  • 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_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)

and that's the whole page, bestie, you're so welcome πŸ’–βœ¨πŸŽ€πŸ¦‹πŸŒΈπŸ’…πŸ«Ά

okay final sign-off cuteness: this little gem lives at ./include/uapi/linux, dated October 2026 🌈 she's from the future, main character energy fr, and the page is literally titled struct iommu_ioas_map_file(9) β€” go map something, iykyk πŸ’œ

πŸ“¦ where this page comes from