linux/kernel/dma
Fugang Duan 449fa54d68 dma-direct: correct the physical addr in dma_direct_sync_sg_for_cpu/device
dma_map_sg() may use swiotlb buffer when the kernel command line includes
"swiotlb=force" or the dma_addr is out of dev->dma_mask range.  After
DMA complete the memory moving from device to memory, then user call
dma_sync_sg_for_cpu() to sync with DMA buffer, and copy the original
virtual buffer to other space.

So dma_direct_sync_sg_for_cpu() should use swiotlb physical addr, not
the original physical addr from sg_phys(sg).

dma_direct_sync_sg_for_device() also has the same issue, correct it as
well.

Fixes: 55897af63091("dma-direct: merge swiotlb_dma_ops into the dma_direct code")
Signed-off-by: Fugang Duan <fugang.duan@nxp.com>
Reviewed-by: Robin Murphy <robin.murphy@arm.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
2019-07-19 14:09:40 +02:00
..
coherent.c dma-mapping: remove the DMA_MEMORY_EXCLUSIVE flag 2019-02-20 07:27:00 -07:00
contiguous.c dma-contiguous: use fallback alloc_pages for single pages 2019-06-03 16:00:07 +02:00
debug.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 333 2019-06-05 17:37:06 +02:00
direct.c dma-direct: correct the physical addr in dma_direct_sync_sg_for_cpu/device 2019-07-19 14:09:40 +02:00
dummy.c dma-mapping: factor out dummy DMA ops 2018-12-13 21:06:12 +01:00
Kconfig dma-direct: Force unencrypted DMA under SME for certain DMA masks 2019-07-16 22:15:46 +02:00
Makefile dma-mapping: improve selection of dma_declare_coherent availability 2019-02-20 07:26:35 -07:00
mapping.c dma-mapping: truncate dma masks to what dma_addr_t can hold 2019-06-25 07:54:06 +02:00
remap.c dma-direct: handle DMA_ATTR_NO_KERNEL_MAPPING in common code 2019-06-25 14:28:05 +02:00
swiotlb.c swiotlb: no need to check return value of debugfs_create functions 2019-07-03 16:57:18 +02:00
virt.c dma-mapping: zero memory returned from dma_alloc_* 2018-12-20 08:13:52 +01:00