* [PATCH v2 2/8] iommu/arm-smmu-v3: Disable detection of ATS and PRI [not found] <20190821151749.23743-1-will@kernel.org> @ 2019-08-21 15:17 ` Will Deacon 2019-08-21 15:36 ` Robin Murphy 0 siblings, 1 reply; 2+ messages in thread From: Will Deacon @ 2019-08-21 15:17 UTC (permalink / raw) To: iommu Cc: Will Deacon, Zhen Lei, Jean-Philippe Brucker, John Garry, Robin Murphy, stable Detecting the ATS capability of the SMMU at probe time introduces a spinlock into the ->unmap() fast path, even when ATS is not actually in use. Furthermore, the ATC invalidation that exists is broken, as it occurs before invalidation of the main SMMU TLB which leaves a window where the ATC can be repopulated with stale entries. Given that ATS is both a new feature and a specialist sport, disable it for now whilst we fix it properly in subsequent patches. Since PRI requires ATS, disable that too. Cc: <stable@vger.kernel.org> Fixes: 9ce27afc0830 ("iommu/arm-smmu-v3: Add support for PCI ATS") Signed-off-by: Will Deacon <will@kernel.org> --- drivers/iommu/arm-smmu-v3.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/iommu/arm-smmu-v3.c b/drivers/iommu/arm-smmu-v3.c index 3402b1bc8e94..7a368059cd7d 100644 --- a/drivers/iommu/arm-smmu-v3.c +++ b/drivers/iommu/arm-smmu-v3.c @@ -3295,11 +3295,13 @@ static int arm_smmu_device_hw_probe(struct arm_smmu_device *smmu) } /* Boolean feature flags */ +#if 0 /* ATS invalidation is slow and broken */ if (IS_ENABLED(CONFIG_PCI_PRI) && reg & IDR0_PRI) smmu->features |= ARM_SMMU_FEAT_PRI; if (IS_ENABLED(CONFIG_PCI_ATS) && reg & IDR0_ATS) smmu->features |= ARM_SMMU_FEAT_ATS; +#endif if (reg & IDR0_SEV) smmu->features |= ARM_SMMU_FEAT_SEV; -- 2.11.0 ^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH v2 2/8] iommu/arm-smmu-v3: Disable detection of ATS and PRI 2019-08-21 15:17 ` [PATCH v2 2/8] iommu/arm-smmu-v3: Disable detection of ATS and PRI Will Deacon @ 2019-08-21 15:36 ` Robin Murphy 0 siblings, 0 replies; 2+ messages in thread From: Robin Murphy @ 2019-08-21 15:36 UTC (permalink / raw) To: Will Deacon, iommu; +Cc: Zhen Lei, Jean-Philippe Brucker, John Garry, stable On 21/08/2019 16:17, Will Deacon wrote: > Detecting the ATS capability of the SMMU at probe time introduces a > spinlock into the ->unmap() fast path, even when ATS is not actually > in use. Furthermore, the ATC invalidation that exists is broken, as it > occurs before invalidation of the main SMMU TLB which leaves a window > where the ATC can be repopulated with stale entries. > > Given that ATS is both a new feature and a specialist sport, disable it > for now whilst we fix it properly in subsequent patches. Since PRI > requires ATS, disable that too. > > Cc: <stable@vger.kernel.org> > Fixes: 9ce27afc0830 ("iommu/arm-smmu-v3: Add support for PCI ATS") Acked-by: Robin Murphy <robin.murphy@arm.com> > Signed-off-by: Will Deacon <will@kernel.org> > --- > drivers/iommu/arm-smmu-v3.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/drivers/iommu/arm-smmu-v3.c b/drivers/iommu/arm-smmu-v3.c > index 3402b1bc8e94..7a368059cd7d 100644 > --- a/drivers/iommu/arm-smmu-v3.c > +++ b/drivers/iommu/arm-smmu-v3.c > @@ -3295,11 +3295,13 @@ static int arm_smmu_device_hw_probe(struct arm_smmu_device *smmu) > } > > /* Boolean feature flags */ > +#if 0 /* ATS invalidation is slow and broken */ > if (IS_ENABLED(CONFIG_PCI_PRI) && reg & IDR0_PRI) > smmu->features |= ARM_SMMU_FEAT_PRI; > > if (IS_ENABLED(CONFIG_PCI_ATS) && reg & IDR0_ATS) > smmu->features |= ARM_SMMU_FEAT_ATS; > +#endif > > if (reg & IDR0_SEV) > smmu->features |= ARM_SMMU_FEAT_SEV; > ^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2019-08-21 15:36 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <20190821151749.23743-1-will@kernel.org>
2019-08-21 15:17 ` [PATCH v2 2/8] iommu/arm-smmu-v3: Disable detection of ATS and PRI Will Deacon
2019-08-21 15:36 ` Robin Murphy
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox