mirror of
https://github.com/torvalds/linux.git
synced 2026-09-25 17:42:03 +02:00
iommu/arm-smmu-v3: Enable CFGI/TLBI-repeat workaround on Tegra264
Nvidia Tegra264 SMMU is affected by an erratum where a TLB entry can survive an invalidation that races with concurrent traffic targeting the same entry. The hardware-recommended software workaround is to issue every CFGI/TLBI command (each followed by CMD_SYNC) twice, and that infrastructure is already in place behind arm_smmu_erratum_repeat_tlbi_cfgi_key. Neither IDR nor IIDR flags this Tegra264-specific bug, so hardware detection is not possible. Tegra264 is device-tree-only (no ACPI/IORT support) and already has a dedicated "nvidia,tegra264-smmu" compatible, so DT-probe is the only viable detection path. Enable the workaround on instances matching the existing "nvidia,tegra264-smmu" compatible by calling static_branch_enable() on arm_smmu_erratum_repeat_tlbi_cfgi_key. Document the erratum in Documentation/arch/arm64/silicon-errata.rst. 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>
This commit is contained in:
parent
d501d66815
commit
06b15ddcfb
|
|
@ -312,6 +312,8 @@ stable kernels.
|
|||
| | | T241-MPAM-4, | |
|
||||
| | | T241-MPAM-6 | |
|
||||
+----------------+-----------------+-----------------+-----------------------------+
|
||||
| NVIDIA | T264 SMMU | T264-SMMU-3 | N/A |
|
||||
+----------------+-----------------+-----------------+-----------------------------+
|
||||
+----------------+-----------------+-----------------+-----------------------------+
|
||||
| Freescale/NXP | LS2080A/LS1043A | A-008585 | FSL_ERRATUM_A008585 |
|
||||
+----------------+-----------------+-----------------+-----------------------------+
|
||||
|
|
|
|||
|
|
@ -5386,8 +5386,10 @@ static int arm_smmu_device_dt_probe(struct platform_device *pdev,
|
|||
if (of_dma_is_coherent(dev->of_node))
|
||||
smmu->features |= ARM_SMMU_FEAT_COHERENCY;
|
||||
|
||||
if (of_device_is_compatible(dev->of_node, "nvidia,tegra264-smmu"))
|
||||
if (of_device_is_compatible(dev->of_node, "nvidia,tegra264-smmu")) {
|
||||
tegra_cmdqv_dt_probe(dev->of_node, smmu);
|
||||
static_branch_enable(&arm_smmu_erratum_repeat_tlbi_cfgi_key);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user