ENUM IOMMU_VIOMMU_TYPE(9)
π 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 vibeIOMMU_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
- 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