Re: [PATCH v3 0/9] dmaengine: Add new API to combine configuration and descriptor preparation

Frank Li <[email protected]>
Newsgroups dev.linux.lists.mhi,dev.linux.lists.imx,org.infradead.lists.linux-arm-kernel,org.infradead.lists.linux-nvme,org.kernel.vger.dmaengine,org.kernel.vger.linux-arm-msm,org.kernel.vger.linux-crypto,org.kernel.vger.linux-kernel,org.kernel.vger.linux-pci
Message-ID <aXD/EYqhhRJEN8oy@lizhi-Precision-Tower-5810>
On Mon, Jan 05, 2026 at 05:46:50PM -0500, Frank Li wrote:
> Previously, configuration and preparation required two separate calls. This
> works well when configuration is done only once during initialization.
>
> However, in cases where the burst length or source/destination address must
> be adjusted for each transfer, calling two functions is verbose.
>
> 	if (dmaengine_slave_config(chan, &sconf)) {
> 		dev_err(dev, "DMA slave config fail\n");
> 		return -EIO;
> 	}
>
> 	tx = dmaengine_prep_slave_single(chan, dma_local, len, dir, flags);
>
> After new API added
>
> 	tx = dmaengine_prep_config_single(chan, dma_local, len, dir, flags, &sconf);
>
> Additional, prevous two calls requires additional locking to ensure both
> steps complete atomically.
>
>     mutex_lock()
>     dmaengine_slave_config()
>     dmaengine_prep_slave_single()
>     mutex_unlock()
>
> after new API added, mutex lock can be moved. See patch
>      nvmet: pci-epf: Use dmaengine_prep_config_single_safe() API
>
> Signed-off-by: Frank Li <[email protected]>
> ---

Vinod:
	Can you take care these patches? At least first 2 patches! So
I can did more clean up at next kernel release.

Frank

> Changes in v3:
> - collect review tags
> - create safe version in framework
> - Link to v2: https://lore.kernel.org/r/[email protected]
>
> Changes in v2:
> - Use name dmaengine_prep_config_single() and dmaengine_prep_config_sg()
> - Add _safe version to avoid confuse, which needn't additional mutex.
> - Update document/
> - Update commit message. add () for function name. Use upcase for subject.
> - Add more explain for remove lock.
> - Link to v1: https://lore.kernel.org/r/[email protected]
>
> ---
> Frank Li (9):
>       dmaengine: Add API to combine configuration and preparation (sg and single)
>       dmaengine: Add safe API to combine configuration and preparation
>       PCI: endpoint: pci-epf-test: Use dmaenigne_prep_config_single() to simplify code
>       dmaengine: dw-edma: Use new .device_prep_config_sg() callback
>       dmaengine: dw-edma: Pass dma_slave_config to dw_edma_device_transfer()
>       nvmet: pci-epf: Remove unnecessary dmaengine_terminate_sync() on each DMA transfer
>       nvmet: pci-epf: Use dmaengine_prep_config_single_safe() API
>       PCI: epf-mhi: Use dmaengine_prep_config_single() to simplify code
>       crypto: atmel: Use dmaengine_prep_config_single() API
>
>  Documentation/driver-api/dmaengine/client.rst |   9 ++
>  drivers/crypto/atmel-aes.c                    |  10 +--
>  drivers/dma/dmaengine.c                       |   3 +
>  drivers/dma/dw-edma/dw-edma-core.c            |  41 ++++++---
>  drivers/nvme/target/pci-epf.c                 |  21 ++---
>  drivers/pci/endpoint/functions/pci-epf-mhi.c  |  52 ++++--------
>  drivers/pci/endpoint/functions/pci-epf-test.c |   8 +-
>  include/linux/dmaengine.h                     | 117 ++++++++++++++++++++++++--
>  8 files changed, 177 insertions(+), 84 deletions(-)
> ---
> base-commit: 8f0b4cce4481fb22653697cced8d0d04027cb1e8
> change-id: 20251204-dma_prep_config-654170d245a2
>
> Best regards,
> --
> Frank Li <[email protected]>
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.