linux/drivers/iommu/arm
Jason Gunthorpe 2122e8553c iommu/arm-smmuv3: Update comments about ATS and bypass
[ Upstream commit 9b640ae7fb ]

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: 7497f4211f ("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>
Signed-off-by: Sasha Levin <sashal@kernel.org>
History 2025-02-08 09:57:27 +01:00
..
arm-smmu iommu/arm-smmu: Defer probe of clients after smmu device bound 2024-12-09 10:41:02 +01:00
arm-smmu-v3 iommu/arm-smmuv3: Update comments about ATS and bypass 2025-02-08 09:57:27 +01:00
Makefile iommu/arm-smmu: Move Arm SMMU drivers into their own subdirectory 2020-07-27 12:53:10 +01:00