Hi all, Many UIO users performing DMA from their UIO device need to access the DMA addresses of the allocated buffers. There are out-of-tree drivers that allow to do it but nothing in the mainline.
I know DMA shouldn't be handled by userspace but, IMHO, since UIO drivers exist, it would be better if they offered a way of doing this. This patch series use the dma-heap framework which already allows userspace to allocate DMA buffers. I tried to avoid 'polluting' the existing heaps to prevent inappropriate uses of this new feature by introducing a new UIO heap, which is the only one implementing this behavior. PATCH 1 allows the creation of heaps that don't implement map/unmap_buf operations as UIO heap doesn't use them. PATCH 2 adds the DMA_BUF_IOCTL_GET_DMA_ADDR which transmits the DMA addresses to userspace. PATCH 3 implements the UIO heap. It has been tested with the uio_pci_generic driver on a PowerPC. Signed-off-by: Bastien Curutchet <bastien.curutc...@bootlin.com> --- Bastien Curutchet (3): dma-buf: Allow heap that doesn't provide map_buf/unmap_buf dma-buf: Add DMA_BUF_IOCTL_GET_DMA_ADDR uio: Add UIO_DMABUF_HEAP drivers/dma-buf/dma-buf.c | 29 +++++++++-- drivers/uio/Kconfig | 9 ++++ drivers/uio/Makefile | 1 + drivers/uio/uio.c | 4 ++ drivers/uio/uio_heap.c | 120 +++++++++++++++++++++++++++++++++++++++++++ include/linux/dma-buf.h | 1 + include/linux/uio_driver.h | 2 + include/uapi/linux/dma-buf.h | 1 + 8 files changed, 164 insertions(+), 3 deletions(-) --- base-commit: 5f13fa25acaa4f586aaed12efcf7436e004eeaf2 change-id: 20250408-uio-dma-9b011e9e7f0b Best regards, -- Bastien Curutchet <bastien.curutc...@bootlin.com>