iommu/dma: Skip extra sync during unmap w/swiotlb
authorDavid Stevens <stevensd@chromium.org>
Wed, 29 Sep 2021 02:32:56 +0000 (11:32 +0900)
committerJoerg Roedel <jroedel@suse.de>
Wed, 29 Sep 2021 10:49:53 +0000 (12:49 +0200)
commitee9d4097cc145dcaebedf6b113d17c91c21333a0
tree952daa9c0b40bfd664ff18f98e8d7df4f5235266
parent06e620345d544e559b2961cb5a676ec9c80c8950
iommu/dma: Skip extra sync during unmap w/swiotlb

Calling the iommu_dma_sync_*_for_cpu functions during unmap can cause
two copies out of the swiotlb buffer. Do the arch sync directly in
__iommu_dma_unmap_swiotlb instead to avoid this. This makes the call to
iommu_dma_sync_sg_for_cpu for untrusted devices in iommu_dma_unmap_sg no
longer necessary, so move that invocation later in the function.

Signed-off-by: David Stevens <stevensd@chromium.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Robin Murphy <robin.murphy@arm.com>
Link: https://lore.kernel.org/r/20210929023300.335969-4-stevensd@google.com
Signed-off-by: Joerg Roedel <jroedel@suse.de>
drivers/iommu/dma-iommu.c