]> git.kernelconcepts.de Git - karo-tx-linux.git/commit
iommu/io-pgtable-arm: Centralise sync points
authorRobin Murphy <Robin.Murphy@arm.com>
Wed, 29 Jul 2015 18:46:09 +0000 (19:46 +0100)
committerWill Deacon <will.deacon@arm.com>
Thu, 6 Aug 2015 13:35:39 +0000 (14:35 +0100)
commit87a91b15d691d6f4aa0a5baffb5767bbc6e4a8c4
tree610d7a3914ac948545c4cc890a84a952849824a1
parentff2ed96dde3b30d8f1b2ab0d9b164140f2278e6e
iommu/io-pgtable-arm: Centralise sync points

With all current users now opted in to DMA API operations, make the
iommu_dev pointer mandatory, rendering the flush_pgtable callback
redundant for cache maintenance. However, since the DMA calls could be
nops in the case of a coherent IOMMU, we still need to ensure the page
table updates are fully synchronised against a subsequent page table
walk. In the unmap path, the TLB sync will usually need to do this
anyway, so just cement that requirement; in the map path which may
consist solely of cacheable memory writes (in the coherent case),
insert an appropriate barrier at the end of the operation, and obviate
the need to call flush_pgtable on every individual update for
synchronisation.

Signed-off-by: Robin Murphy <robin.murphy@arm.com>
[will: slight clarification to tlb_sync comment]
Signed-off-by: Will Deacon <will.deacon@arm.com>
drivers/iommu/io-pgtable-arm.c
drivers/iommu/io-pgtable.h