On Thu, Aug 15, 2019 at 02:15:32PM +0800, Lu Baolu wrote:
iommu_map/unmap() APIs haven't parameters for dma direction and
attributions. These parameters are elementary for DMA APIs. Say,
after map, if the dma direction is TO_DEVICE and a bounce buffer is
used, we must sync the data from the original dma buffer to the bounce
buffer; In the opposite direction, if dma is FROM_DEVICE, before unmap,
we need to sync the data from the bounce buffer onto the original
buffer.
The DMA direction from DMA-API maps to the protections in iommu_map():
DMA_FROM_DEVICE: IOMMU_WRITE
DMA_TO_DEVICE: IOMMU_READ
DMA_BIDIRECTIONAL IOMMU_READ | IOMMU_WRITE
And for the sync DMA-API also has separate functions for either
direction. So I don't see why these extra functions are needed in the
IOMMU-API.