linux/kernel/dma
Logan Gunthorpe fffe3cc8c2 dma-mapping: allow map_sg() ops to return negative error codes
Allow dma_map_sgtable() to pass errors from the map_sg() ops. This
will be required for returning appropriate error codes when mapping
P2PDMA memory.

Introduce __dma_map_sg_attrs() which will return the raw error code
from the map_sg operation (whether it be negative or zero). Then add a
dma_map_sg_attrs() wrapper to convert any negative errors to zero to
satisfy the existing calling convention.

dma_map_sgtable() defines three error codes that .map_sg implementations
are allowed to return: -EINVAL, -ENOMEM and -EIO. The latter of which
is a generic return for cases that are passing DMA_MAPPING_ERROR
through.

dma_map_sgtable() will convert a zero error return for old map_sg() ops
into a -EIO return and return any negative errors as reported.

This allows map_sg implementations to start returning multiple
negative error codes. Legacy map_sg implementations can continue
to return zero until they are all converted.

Signed-off-by: Logan Gunthorpe <logang@deltatee.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
2021-08-09 17:13:02 +02:00
..
coherent.c dma-mapping: remove a trailing space 2021-06-22 08:15:46 +02:00
contiguous.c dma-contiguous: fix a typo error in a comment 2020-11-27 10:33:42 +01:00
debug.c dma-debug: fix debugfs initialization order 2021-08-09 17:06:11 +02:00
debug.h dma-mapping: move dma-debug.h to kernel/dma/ 2020-10-06 07:07:05 +02:00
direct.c swiotlb: split swiotlb_tbl_sync_single 2021-03-17 00:32:01 +00:00
direct.h swiotlb: split swiotlb_tbl_sync_single 2021-03-17 00:32:01 +00:00
dummy.c dma-mapping: split <linux/dma-mapping.h> 2020-10-06 07:07:03 +02:00
Kconfig driver core: lift dma_default_coherent into common code 2021-02-13 09:51:45 +01:00
Makefile dma-mapping updates for 5.11: 2020-12-22 13:19:43 -08:00
map_benchmark.c dma-mapping: benchmark: Add support for multi-pages map/unmap 2021-04-02 16:41:08 +02:00
mapping.c dma-mapping: allow map_sg() ops to return negative error codes 2021-08-09 17:13:02 +02:00
ops_helpers.c dma-mapping: handle vmalloc addresses in dma_common_{mmap,get_sgtable} 2021-07-16 11:30:26 +02:00
pool.c dma-pool: no need to check return value of debugfs_create functions 2020-11-27 10:33:42 +01:00
remap.c kernel/dma: remove unnecessary unmap_kernel_range 2021-04-30 11:20:40 -07:00
swiotlb.c swiotlb: manipulate orig_addr when tlb_addr has offset 2021-06-21 08:59:02 -04:00