ENUM IOMMU_VIOMMU_TYPE(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– enum iommu_viommu_type(9) πŸ’–

okay bestie so this is a page straight out of the Kernel API Manual, and it's literally just a little enum with three members β€” but it's the enum that tells iommufd which flavor of virtual IOMMU you're talking about, so it kind of eats πŸ’…


✨ NAME ✨

enum iommu_viommu_type β€” Virtual IOMMU Type πŸ¦‹


✨ SYNOPSIS ✨

enum iommu_viommu_type {
    IOMMU_VIOMMU_TYPE_DEFAULT ,
    IOMMU_VIOMMU_TYPE_ARM_SMMUV3 ,
    IOMMU_VIOMMU_TYPE_TEGRA241_CMDQV

};

✨ Constants ✨

  • IOMMU_VIOMMU_TYPE_DEFAULT β€” girl there's literally nothing here yet, it's reserved for future use πŸ™ˆ don't touch, don't count on it, it's giving "placeholder energy"
  • IOMMU_VIOMMU_TYPE_ARM_SMMUV3 β€” the type that's specific to the ARM SMMUv3 driver πŸ‘‘ that's it, that's the whole vibe
  • IOMMU_VIOMMU_TYPE_TEGRA241_CMDQV β€” the NVIDIA Tegra241 CMDQV type, which is like the ARM SMMUv3 type but with the CMDQV extension turned on (it's an extension for ARM SMMUv3, iykyk) πŸ”₯

✨ SEE ALSO ✨

So the kernel file this lives in is ./include/uapi/linux/iommufd.h, and the whole iommufd friend group is tagged in the group chat 🫢 β€” every single one of them, no cap:

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

ok that's the whole page, mwah πŸ’‹ seriously though, read the neighbors too, this enum does not exist in a vacuum and the ioctl story only makes sense with the rest of the fam.

k bye bestie, stay slaying those ioctls πŸ’…βœ¨

β€” sign-off from the ./include/uapi/linux corner of the world, dated October 2026, on the page enum iommu_viommu_type(9) πŸŽ€πŸŒ·

πŸ“¦ where this page comes from