arm64/dma-mapping: Mildly optimise non-coherent IOMMU ops
authorRobin Murphy <robin.murphy@arm.com>
Wed, 12 Sep 2018 15:24:14 +0000 (16:24 +0100)
committerJoerg Roedel <jroedel@suse.de>
Tue, 25 Sep 2018 08:23:16 +0000 (10:23 +0200)
commit7adb562c3e90f87b0da196c372afe251ad4ec62e
tree5b2e10c8ec384fc92ef5f80dab41fbf86675690d
parent43c5bf11a610ceeae68b26c24e0c76852d0d5cfc
arm64/dma-mapping: Mildly optimise non-coherent IOMMU ops

Whilst the symmetry of deferring to the existing sync callback in
__iommu_map_page() is nice, taking a round-trip through
iommu_iova_to_phys() is a pretty heavyweight way to get an address we
can trivially compute from the page we already have. Tweaking it to just
perform the cache maintenance directly when appropriate doesn't really
make the code any more complicated, and the runtime efficiency gain can
only be a benefit.

Furthermore, the sync operations themselves know they can only be
invoked on a managed DMA ops domain, so can use the fast specific domain
lookup to avoid excessive manipulation of the group refcount
(particularly in the scatterlist cases).

Acked-by: Will Deacon <will.deacon@arm.com>
Signed-off-by: Robin Murphy <robin.murphy@arm.com>
Tested-by: Will Deacon <will.deacon@arm.com>
Signed-off-by: Joerg Roedel <jroedel@suse.de>
arch/arm64/mm/dma-mapping.c