summaryrefslogtreecommitdiff
path: root/include/uapi
diff options
context:
space:
mode:
authorAshish Mhetre <amhetre@nvidia.com>2026-07-26 08:19:03 +0000
committerWill Deacon <will@kernel.org>2026-07-28 09:49:47 +0000
commitd501d66815eeb0e6641ce61e7eeb2beea19eadf5 (patch)
treec80f532f9050c91b40fe9124de9064752ad28523 /include/uapi
parent95ed2da20283844dfc0bb9d78c898b8529284af6 (diff)
downloadlinux-d501d66815eeb0e6641ce61e7eeb2beea19eadf5.tar.gz
linux-d501d66815eeb0e6641ce61e7eeb2beea19eadf5.zip
iommu/arm-smmu-v3-iommufd: Report CFGI/TLBI-repeat erratum
A guest with access to VCMDQ generates its own invalidation commands and must apply any invalidation errata before submitting them. If the host also repeats those commands, each affected invalidation is issued four times instead of twice. Add IOMMU_HW_INFO_ARM_SMMUV3_ERRATA_REPEAT_TLBI_CFGI to report the CFGI/TLBI-repeat erratum to user space. This allows the VMM to expose the erratum to the guest or apply the workaround itself. Use the raw __arm_smmu_cmdq_issue_cmdlist() helper for user-provided invalidations so the host does not apply the workaround a second time. Add arm_smmu_erratum_repeat_tlbi_cfgi() to query the static key when populating the SMMUv3 hardware information. Signed-off-by: Ashish Mhetre <amhetre@nvidia.com> Reviewed-by: Nicolin Chen <nicolinc@nvidia.com> Reviewed-by: Jason Gunthorpe <jgg@nvidia.com> Signed-off-by: Will Deacon <will@kernel.org>
Diffstat (limited to 'include/uapi')
-rw-r--r--include/uapi/linux/iommufd.h13
1 files changed, 12 insertions, 1 deletions
diff --git a/include/uapi/linux/iommufd.h b/include/uapi/linux/iommufd.h
index 0425d452d41e..f73a392b3d3f 100644
--- a/include/uapi/linux/iommufd.h
+++ b/include/uapi/linux/iommufd.h
@@ -575,10 +575,21 @@ struct iommu_hw_info_vtd {
};
/**
+ * enum iommu_hw_info_arm_smmuv3_flags - Flags for ARM SMMUv3 hw_info
+ * @IOMMU_HW_INFO_ARM_SMMUV3_ERRATA_REPEAT_TLBI_CFGI:
+ * If set, user space must issue TLBI/CFGI+SYNC commands twice due to
+ * hardware erratum T264-SMMU-3. See the description at
+ * arm_smmu_erratum_repeat_tlbi_cfgi_key.
+ */
+enum iommu_hw_info_arm_smmuv3_flags {
+ IOMMU_HW_INFO_ARM_SMMUV3_ERRATA_REPEAT_TLBI_CFGI = 1 << 0,
+};
+
+/**
* struct iommu_hw_info_arm_smmuv3 - ARM SMMUv3 hardware information
* (IOMMU_HW_INFO_TYPE_ARM_SMMUV3)
*
- * @flags: Must be set to 0
+ * @flags: Combination of enum iommu_hw_info_arm_smmuv3_flags
* @__reserved: Must be 0
* @idr: Implemented features for ARM SMMU Non-secure programming interface
* @iidr: Information about the implementation and implementer of ARM SMMU,