On Mon, Jul 24, 2023 at 06:51:28PM +0000, Easwar Hariharan wrote: > From: Robin Murphy <robin.murphy@xxxxxxx> > > commit 309a15cb16bb075da1c99d46fb457db6a1a2669e upstream > > To work around MMU-700 erratum 2812531 we need to ensure that certain > sequences of commands cannot be issued without an intervening sync. In > practice this falls out of our current command-batching machinery > anyway - each batch only contains a single type of invalidation command, > and ends with a sync. The only exception is when a batch is sufficiently > large to need issuing across multiple command queue slots, wherein the > earlier slots will not contain a sync and thus may in theory interleave > with another batch being issued in parallel to create an affected > sequence across the slot boundary. > > Since MMU-700 supports range invalidate commands and thus we will prefer > to use them (which also happens to avoid conditions for other errata), > I'm not entirely sure it's even possible for a single high-level > invalidate call to generate a batch of more than 63 commands, but for > the sake of robustness and documentation, wire up an option to enforce > that a sync is always inserted for every slot issued. > > The other aspect is that the relative order of DVM commands cannot be > controlled, so DVM cannot be used. Again that is already the status quo, > but since we have at least defined ARM_SMMU_FEAT_BTM, we can explicitly > disable it for documentation purposes even if it's not wired up anywhere > yet. > > Signed-off-by: Robin Murphy <robin.murphy@xxxxxxx> > Reviewed-by: Nicolin Chen <nicolinc@xxxxxxxxxx> > Link: https://lore.kernel.org/r/330221cdfd0003cd51b6c04e7ff3566741ad8374.1683731256.git.robin.murphy@xxxxxxx > Signed-off-by: Will Deacon <will@xxxxxxxxxx> > Signed-off-by: Easwar Hariharan <eahariha@xxxxxxxxxxxxxxxxxxx> > --- > Documentation/arm64/silicon-errata.rst | 4 +++ > drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c | 39 +++++++++++++++++++++ > drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h | 1 + > 3 files changed, 44 insertions(+) > > diff --git a/Documentation/arm64/silicon-errata.rst b/Documentation/arm64/silicon-errata.rst > index cd46e2b20a81..b0346968765d 100644 > --- a/Documentation/arm64/silicon-errata.rst > +++ b/Documentation/arm64/silicon-errata.rst > @@ -143,6 +143,10 @@ stable kernels. > +----------------+-----------------+-----------------+-----------------------------+ > | ARM | MMU-500 | #841119,826419 | N/A | > +----------------+-----------------+-----------------+-----------------------------+ > +| ARM | MMU-600 | #1076982 | N/A | > ++----------------+-----------------+-----------------+-----------------------------+ > +| ARM | MMU-700 | #2812531 | N/A | > ++----------------+-----------------+-----------------+-----------------------------+ But you didn't backport the MMU-600 change here, so why does the diff here show you did? And what about commit 0bfbfc526c70 ("iommu/arm-smmu-v3: Document nesting-related errata") after this? Can you send a properly backported series for this and the needed fixes after this, for all relevant kernels you wish to have the errata applied to? This single backport isn't enough, sorry. I've dropped all the patches you submitted for stable backports now. thanks, greg k-h