dma-mapping: add dma_opt_mapping_size()
authorJohn Garry <john.garry@huawei.com>
Thu, 14 Jul 2022 11:15:24 +0000 (19:15 +0800)
committerChristoph Hellwig <hch@lst.de>
Tue, 19 Jul 2022 04:05:41 +0000 (06:05 +0200)
commita229cc14f3395311b899e5e582b71efa8dd01df0
treec582777858d9da5c8d70cad910a04859b213fd8f
parent942a8186eb4451700dadd1d60a2e43ce67605991
dma-mapping: add dma_opt_mapping_size()

Streaming DMA mapping involving an IOMMU may be much slower for larger
total mapping size. This is because every IOMMU DMA mapping requires an
IOVA to be allocated and freed. IOVA sizes above a certain limit are not
cached, which can have a big impact on DMA mapping performance.

Provide an API for device drivers to know this "optimal" limit, such that
they may try to produce mapping which don't exceed it.

Signed-off-by: John Garry <john.garry@huawei.com>
Reviewed-by: Damien Le Moal <damien.lemoal@opensource.wdc.com>
Acked-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Documentation/core-api/dma-api.rst
include/linux/dma-map-ops.h
include/linux/dma-mapping.h
kernel/dma/mapping.c