]> www.infradead.org Git - users/jedix/linux-maple.git/commit
iommu/arm-smmuv3: Update comments about ATS and bypass
authorJason Gunthorpe <jgg@nvidia.com>
Thu, 5 Dec 2024 15:40:15 +0000 (11:40 -0400)
committerWill Deacon <will@kernel.org>
Mon, 9 Dec 2024 22:41:42 +0000 (22:41 +0000)
commit9b640ae7fbba13d45a8b9712dff2911a0c2b5ff4
treed66e69b5e3cb83df55fd0f1f87b76a6356bea8eb
parentd814b70b9b901c823ddedd12757ca4a19b18c8f7
iommu/arm-smmuv3: Update comments about ATS and bypass

The SMMUv3 spec has a note that BYPASS and ATS don't work together under
the STE EATS field definition. However there is another section "13.6.4
Full ATS skipping stage 1" that explains under certain conditions BYPASS
and ATS do work together if the STE is using S1DSS to select BYPASS and
the CD table has the possibility for a substream.

When these comments were written the understanding was that all forms of
BYPASS just didn't work and this was to be a future problem to solve.

It turns out that ATS and IDENTITY will always work just fine:

 - If STE.Config = BYPASS then the PCI ATS is disabled

 - If a PASID domain is attached then S1DSS = BYPASS and ATS will be
   enabled. This meets the requirements of 13.6.4 to automatically
   generate 1:1 ATS replies on the RID.

Update the comments to reflect this.

Fixes: 7497f4211f4f ("iommu/arm-smmu-v3: Make changing domains be hitless for ATS")
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
Link: https://lore.kernel.org/r/0-v1-f27174f44f39+27a33-smmuv3_ats_note_jgg@nvidia.com
Signed-off-by: Will Deacon <will@kernel.org>
drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c