iommu/io-pgtable-arm: Remove redundant call to io_pgtable_tlb_sync()
authorWill Deacon <will@kernel.org>
Tue, 2 Jul 2019 15:43:24 +0000 (16:43 +0100)
committerWill Deacon <will@kernel.org>
Wed, 24 Jul 2019 12:32:33 +0000 (13:32 +0100)
commitf71da46719460acd5afa411e52dc8cdf1cb9b0ce
tree3a4fed5a63fbc6fe7a3700f5e8adae1e0a475541
parent6d1bcb957be2850e0776f24c289e1f87c256baeb
iommu/io-pgtable-arm: Remove redundant call to io_pgtable_tlb_sync()

Commit b6b65ca20bc9 ("iommu/io-pgtable-arm: Add support for non-strict
mode") added an unconditional call to io_pgtable_tlb_sync() immediately
after the case where we replace a block entry with a table entry during
an unmap() call. This is redundant, since the IOMMU API will call
iommu_tlb_sync() on this path and the patch in question mentions this:

 | To save having to reason about it too much, make sure the invalidation
 | in arm_lpae_split_blk_unmap() just performs its own unconditional sync
 | to minimise the window in which we're technically violating the break-
 | before-make requirement on a live mapping. This might work out redundant
 | with an outer-level sync for strict unmaps, but we'll never be splitting
 | blocks on a DMA fastpath anyway.

However, this sync gets in the way of deferred TLB invalidation for leaf
entries and is at best a questionable, unproven hack. Remove it.

Signed-off-by: Will Deacon <will@kernel.org>
drivers/iommu/io-pgtable-arm-v7s.c
drivers/iommu/io-pgtable-arm.c