STRUCT IOMMU_VIOMMU_ARM_SMMUV3_INVALIDATE(9)
π struct iommu_viommu_arm_smmuv3_invalidate(9) β¨
okay so this is a page from the Kernel API Manual, and honestly? it's giving "niche but iconic." it's all about one struct that carries a single ARM SMMUv3 cache invalidation command into the kernel. tiny struct, big responsibilities. let's get into it π
πΈ NAME πΈ
struct iommu_viommu_arm_smmuv3_invalidate β the ARM SMMUv3 cache invalidation situation (aka IOMMU_VIOMMU_INVALIDATE_DATA_ARM_SMMUV3). yes, that's the whole name, yes it's a mouthful, no we're not shortening it. periodt π
β SYNOPSIS β
here's the whole vibe, literally the entire struct:
struct iommu_viommu_arm_smmuv3_invalidate {
__aligned_le64 cmd[2];
};
that's it. two little 64-bit-aligned slots and a dream π¦
π§ Members π§
cmdβ a 128-bit cache invalidation command that runs in the SMMU CMDQ. must be little-endian. that's the whole member, bestie, it's carrying the entire payload on its back π₯
π Description π
okay so here's the tea: these are the commands you're allowed to pass, and that list only applies when you pass in a vIOMMU via hwpt_id. no hwpt_id, no party π
The supported command list is:
CMDQ_OP_TLBI_NSNH_ALLCMDQ_OP_TLBI_NH_VACMDQ_OP_TLBI_NH_VAACMDQ_OP_TLBI_NH_ALLCMDQ_OP_TLBI_NH_ASIDCMDQ_OP_ATC_INVCMDQ_OP_CFGI_CDCMDQ_OP_CFGI_CD_ALL
and if you try to sneak in a command that isn't on this list?
-EIO will be returned if the command is not supported. so likeβ¦ don't π
π«Ά SEE ALSO π«Ά
the friend group is huge, i'm obsessed. go read ./include/uapi/linux/iommufd.h in the kernel files first, then say hi to all of these:
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_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)
like i said. huge friend group. iykyk π
and that's the whole page, bestie π this lived in ./include/uapi/linux, dated October 2026, and it's filed under struct iommu_viommu_arm_smmuv3_invalidate(9). go forth and invalidate those caches responsibly, 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