Linux cryptographic layer development
 help / color / mirror / Atom feed
* [PATCH 1/1] dmaengine: change dmaengine_get_unmap_data() first arg to dma_chan
@ 2026-09-22 18:45 Frank.Li
  2026-09-22 23:09 ` Dave Jiang
  0 siblings, 1 reply; 5+ messages in thread
From: Frank.Li @ 2026-09-22 18:45 UTC (permalink / raw)
  To: Dan Williams, Herbert Xu, David S. Miller, Vinod Koul, Frank Li,
	Jon Mason, Dave Jiang, Allen Hubbe, Ard Biesheuvel, Andrew Morton,
	Eric Biggers, open list:CRYPTO API, open list,
	open list:DMA GENERIC OFFLOAD ENGINE SUBSYSTEM,
	open list:NTB DRIVER CORE
  Cc: imx, Frank Li

From: Frank Li <Frank.Li@nxp.com>

Replace the struct device *dev argument with struct dma_chan *chan so
callers do not need to reach into the dma_device internals to obtain
the device pointer.  The implementation now derives the device via
dmaengine_get_dma_device(chan), which correctly handles the per-channel
IOMMU mapping case.

Prepare to make dma_device private and make dmaengine API consistent.

Signed-off-by: Frank Li <Frank.Li@nxp.com>
---
 crypto/async_tx/async_memcpy.c      | 4 ++--
 crypto/async_tx/async_pq.c          | 4 ++--
 crypto/async_tx/async_raid6_recov.c | 4 ++--
 crypto/async_tx/async_xor.c         | 8 ++++----
 drivers/dma/dmaengine.c             | 4 ++--
 drivers/dma/dmatest.c               | 2 +-
 drivers/dma/mv_xor.c                | 4 ++--
 drivers/ntb/ntb_transport.c         | 4 ++--
 drivers/ntb/test/ntb_perf.c         | 2 +-
 include/linux/dmaengine.h           | 4 ++--
 10 files changed, 20 insertions(+), 20 deletions(-)

diff --git a/crypto/async_tx/async_memcpy.c b/crypto/async_tx/async_memcpy.c
index 323152c89b3a1..d03e9a9bc1e2d 100644
--- a/crypto/async_tx/async_memcpy.c
+++ b/crypto/async_tx/async_memcpy.c
@@ -39,8 +39,8 @@ async_memcpy(struct page *dest, struct page *src, unsigned int dest_offset,
 	struct dma_async_tx_descriptor *tx = NULL;
 	struct dmaengine_unmap_data *unmap = NULL;
 
-	if (device)
-		unmap = dmaengine_get_unmap_data(device->dev, 2, GFP_NOWAIT);
+	if (chan)
+		unmap = dmaengine_get_unmap_data(chan, 2, GFP_NOWAIT);
 
 	if (unmap && dmaengine_is_copy_aligned(chan, src_offset, dest_offset, len)) {
 		unsigned long dma_prep_flags = 0;
diff --git a/crypto/async_tx/async_pq.c b/crypto/async_tx/async_pq.c
index fcc8d9ebc0fec..6a31271852cd4 100644
--- a/crypto/async_tx/async_pq.c
+++ b/crypto/async_tx/async_pq.c
@@ -188,7 +188,7 @@ async_gen_syndrome(struct page **blocks, unsigned int *offsets, int disks,
 	BUG_ON(disks > MAX_DISKS || !(P(blocks, disks) || Q(blocks, disks)));
 
 	if (device)
-		unmap = dmaengine_get_unmap_data(device->dev, disks, GFP_NOWAIT);
+		unmap = dmaengine_get_unmap_data(chan, disks, GFP_NOWAIT);
 
 	/* XORing P/Q is only implemented in software */
 	if (unmap && !(submit->flags & ASYNC_TX_PQ_XOR_DST) &&
@@ -310,7 +310,7 @@ async_syndrome_val(struct page **blocks, unsigned int *offsets, int disks,
 	BUG_ON(disks < 4 || disks > MAX_DISKS);
 
 	if (device)
-		unmap = dmaengine_get_unmap_data(device->dev, disks, GFP_NOWAIT);
+		unmap = dmaengine_get_unmap_data(chan, disks, GFP_NOWAIT);
 
 	if (unmap && disks <= dma_maxpq(device, 0) &&
 	    is_dma_pq_aligned_offs(chan, offsets, disks, len)) {
diff --git a/crypto/async_tx/async_raid6_recov.c b/crypto/async_tx/async_raid6_recov.c
index 27909afda694a..5055531145bd2 100644
--- a/crypto/async_tx/async_raid6_recov.c
+++ b/crypto/async_tx/async_raid6_recov.c
@@ -29,7 +29,7 @@ async_sum_product(struct page *dest, unsigned int d_off,
 	u8 *a, *b, *c;
 
 	if (dma)
-		unmap = dmaengine_get_unmap_data(dma->dev, 3, GFP_NOWAIT);
+		unmap = dmaengine_get_unmap_data(chan, 3, GFP_NOWAIT);
 
 	if (unmap) {
 		struct device *dev = dma->dev;
@@ -97,7 +97,7 @@ async_mult(struct page *dest, unsigned int d_off, struct page *src,
 	u8 *d, *s;
 
 	if (dma)
-		unmap = dmaengine_get_unmap_data(dma->dev, 3, GFP_NOWAIT);
+		unmap = dmaengine_get_unmap_data(chan, 3, GFP_NOWAIT);
 
 	if (unmap) {
 		dma_addr_t dma_dest[2];
diff --git a/crypto/async_tx/async_xor.c b/crypto/async_tx/async_xor.c
index 4ed9d3196fc46..9ed331d9b8e64 100644
--- a/crypto/async_tx/async_xor.c
+++ b/crypto/async_tx/async_xor.c
@@ -178,8 +178,8 @@ async_xor_offs(struct page *dest, unsigned int offset,
 
 	BUG_ON(src_cnt <= 1);
 
-	if (device)
-		unmap = dmaengine_get_unmap_data(device->dev, src_cnt+1, GFP_NOWAIT);
+	if (chan)
+		unmap = dmaengine_get_unmap_data(chan, src_cnt + 1, GFP_NOWAIT);
 
 	if (unmap && dma_xor_aligned_offsets(chan, offset, src_offs,
 					     src_cnt, len)) {
@@ -310,8 +310,8 @@ async_xor_val_offs(struct page *dest, unsigned int offset,
 
 	BUG_ON(src_cnt <= 1);
 
-	if (device)
-		unmap = dmaengine_get_unmap_data(device->dev, src_cnt, GFP_NOWAIT);
+	if (chan)
+		unmap = dmaengine_get_unmap_data(chan, src_cnt, GFP_NOWAIT);
 
 	if (unmap && src_cnt <= device->max_xor &&
 	    dma_xor_aligned_offsets(chan, offset, src_offs, src_cnt, len)) {
diff --git a/drivers/dma/dmaengine.c b/drivers/dma/dmaengine.c
index cc1c0a7c9f33d..4585ebcd2e8cd 100644
--- a/drivers/dma/dmaengine.c
+++ b/drivers/dma/dmaengine.c
@@ -1474,7 +1474,7 @@ static int __init dmaengine_init_unmap_pool(void)
 }
 
 struct dmaengine_unmap_data *
-dmaengine_get_unmap_data(struct device *dev, int nr, gfp_t flags)
+dmaengine_get_unmap_data(struct dma_chan *chan, int nr, gfp_t flags)
 {
 	struct dmaengine_unmap_data *unmap;
 
@@ -1484,7 +1484,7 @@ dmaengine_get_unmap_data(struct device *dev, int nr, gfp_t flags)
 
 	memset(unmap, 0, sizeof(*unmap));
 	kref_init(&unmap->kref);
-	unmap->dev = dev;
+	unmap->dev = dmaengine_get_dma_device(chan);
 	unmap->map_cnt = nr;
 
 	return unmap;
diff --git a/drivers/dma/dmatest.c b/drivers/dma/dmatest.c
index 2ae3469397f37..043bb065dd68a 100644
--- a/drivers/dma/dmatest.c
+++ b/drivers/dma/dmatest.c
@@ -748,7 +748,7 @@ static int dmatest_func(void *data)
 			filltime = ktime_add(filltime, diff);
 		}
 
-		um = dmaengine_get_unmap_data(dma_dev, src->cnt + dst->cnt,
+		um = dmaengine_get_unmap_data(chan, src->cnt + dst->cnt,
 					      GFP_KERNEL);
 		if (!um) {
 			failed_tests++;
diff --git a/drivers/dma/mv_xor.c b/drivers/dma/mv_xor.c
index c4e0dce3ca64e..dec01b6264d7a 100644
--- a/drivers/dma/mv_xor.c
+++ b/drivers/dma/mv_xor.c
@@ -794,7 +794,7 @@ static int mv_chan_memcpy_self_test(struct mv_xor_chan *mv_chan)
 		goto out;
 	}
 
-	unmap = dmaengine_get_unmap_data(dma_chan->device->dev, 2, GFP_KERNEL);
+	unmap = dmaengine_get_unmap_data(dma_chan, 2, GFP_KERNEL);
 	if (!unmap) {
 		err = -ENOMEM;
 		goto free_resources;
@@ -927,7 +927,7 @@ mv_chan_xor_self_test(struct mv_xor_chan *mv_chan)
 		goto out;
 	}
 
-	unmap = dmaengine_get_unmap_data(dma_chan->device->dev, src_count + 1,
+	unmap = dmaengine_get_unmap_data(dma_chan, src_count + 1,
 					 GFP_KERNEL);
 	if (!unmap) {
 		err = -ENOMEM;
diff --git a/drivers/ntb/ntb_transport.c b/drivers/ntb/ntb_transport.c
index b8f8b333b89eb..e9e1506df71d6 100644
--- a/drivers/ntb/ntb_transport.c
+++ b/drivers/ntb/ntb_transport.c
@@ -1532,7 +1532,7 @@ static int ntb_async_rx_submit(struct ntb_queue_entry *entry, void *offset)
 	if (!dmaengine_is_copy_aligned(chan, pay_off, buff_off, len))
 		goto err;
 
-	unmap = dmaengine_get_unmap_data(dma_dev, 2, GFP_NOWAIT);
+	unmap = dmaengine_get_unmap_data(chan, 2, GFP_NOWAIT);
 	if (!unmap)
 		goto err;
 
@@ -1871,7 +1871,7 @@ static int ntb_async_tx_submit(struct ntb_transport_qp *qp,
 	if (!dmaengine_is_copy_aligned(chan, buff_off, dest_off, len))
 		goto err;
 
-	unmap = dmaengine_get_unmap_data(dma_dev, 1, GFP_NOWAIT);
+	unmap = dmaengine_get_unmap_data(chan, 1, GFP_NOWAIT);
 	if (!unmap)
 		goto err;
 
diff --git a/drivers/ntb/test/ntb_perf.c b/drivers/ntb/test/ntb_perf.c
index 774e643c9f4c6..1cb991e2f0cf7 100644
--- a/drivers/ntb/test/ntb_perf.c
+++ b/drivers/ntb/test/ntb_perf.c
@@ -809,7 +809,7 @@ static int perf_copy_chunk(struct perf_thread *pthr,
 	dst_vaddr = dst;
 	dst_dma_addr = peer->dma_dst_addr + (dst_vaddr - vbase);
 
-	unmap = dmaengine_get_unmap_data(dma_dev, 1, GFP_NOWAIT);
+	unmap = dmaengine_get_unmap_data(pthr->dma_chan, 1, GFP_NOWAIT);
 	if (!unmap)
 		return -ENOMEM;
 
diff --git a/include/linux/dmaengine.h b/include/linux/dmaengine.h
index fc661e76de84d..c8ecf80288f13 100644
--- a/include/linux/dmaengine.h
+++ b/include/linux/dmaengine.h
@@ -656,7 +656,7 @@ static inline void dma_set_unmap(struct dma_async_tx_descriptor *tx,
 }
 
 struct dmaengine_unmap_data *
-dmaengine_get_unmap_data(struct device *dev, int nr, gfp_t flags);
+dmaengine_get_unmap_data(struct dma_chan *chan, int nr, gfp_t flags);
 void dmaengine_unmap_put(struct dmaengine_unmap_data *unmap);
 #else
 static inline void dma_set_unmap(struct dma_async_tx_descriptor *tx,
@@ -664,7 +664,7 @@ static inline void dma_set_unmap(struct dma_async_tx_descriptor *tx,
 {
 }
 static inline struct dmaengine_unmap_data *
-dmaengine_get_unmap_data(struct device *dev, int nr, gfp_t flags)
+dmaengine_get_unmap_data(struct dma_chan *chan, int nr, gfp_t flags)
 {
 	return NULL;
 }
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH 1/1] dmaengine: change dmaengine_get_unmap_data() first arg to dma_chan
  2026-09-22 18:45 [PATCH 1/1] dmaengine: change dmaengine_get_unmap_data() first arg to dma_chan Frank.Li
@ 2026-09-22 23:09 ` Dave Jiang
  2026-10-09  9:43   ` Vinod Koul
  0 siblings, 1 reply; 5+ messages in thread
From: Dave Jiang @ 2026-09-22 23:09 UTC (permalink / raw)
  To: Frank.Li, Dan Williams, Herbert Xu, David S. Miller, Vinod Koul,
	Frank Li, Jon Mason, Allen Hubbe, Ard Biesheuvel, Andrew Morton,
	Eric Biggers, open list:CRYPTO API, open list,
	open list:DMA GENERIC OFFLOAD ENGINE SUBSYSTEM,
	open list:NTB DRIVER CORE
  Cc: imx, Frank Li



On 9/22/26 11:45 AM, Frank.Li@oss.nxp.com wrote:
> From: Frank Li <Frank.Li@nxp.com>
> 
> Replace the struct device *dev argument with struct dma_chan *chan so
> callers do not need to reach into the dma_device internals to obtain
> the device pointer.  The implementation now derives the device via
> dmaengine_get_dma_device(chan), which correctly handles the per-channel
> IOMMU mapping case.
> 
> Prepare to make dma_device private and make dmaengine API consistent.
> 
> Signed-off-by: Frank Li <Frank.Li@nxp.com>

For the NTB bits:
Acked-by: Dave Jiang <dave.jiang@intel.com>


> ---
>  crypto/async_tx/async_memcpy.c      | 4 ++--
>  crypto/async_tx/async_pq.c          | 4 ++--
>  crypto/async_tx/async_raid6_recov.c | 4 ++--
>  crypto/async_tx/async_xor.c         | 8 ++++----

Maybe one day Dan's wishes will become true and someone will finally deprecate async_tx....

DJ>  drivers/dma/dmaengine.c             | 4 ++--
>  drivers/dma/dmatest.c               | 2 +-
>  drivers/dma/mv_xor.c                | 4 ++--
>  drivers/ntb/ntb_transport.c         | 4 ++--
>  drivers/ntb/test/ntb_perf.c         | 2 +-
>  include/linux/dmaengine.h           | 4 ++--
>  10 files changed, 20 insertions(+), 20 deletions(-)
> 
> diff --git a/crypto/async_tx/async_memcpy.c b/crypto/async_tx/async_memcpy.c
> index 323152c89b3a1..d03e9a9bc1e2d 100644
> --- a/crypto/async_tx/async_memcpy.c
> +++ b/crypto/async_tx/async_memcpy.c
> @@ -39,8 +39,8 @@ async_memcpy(struct page *dest, struct page *src, unsigned int dest_offset,
>  	struct dma_async_tx_descriptor *tx = NULL;
>  	struct dmaengine_unmap_data *unmap = NULL;
>  
> -	if (device)
> -		unmap = dmaengine_get_unmap_data(device->dev, 2, GFP_NOWAIT);
> +	if (chan)
> +		unmap = dmaengine_get_unmap_data(chan, 2, GFP_NOWAIT);
>  
>  	if (unmap && dmaengine_is_copy_aligned(chan, src_offset, dest_offset, len)) {
>  		unsigned long dma_prep_flags = 0;
> diff --git a/crypto/async_tx/async_pq.c b/crypto/async_tx/async_pq.c
> index fcc8d9ebc0fec..6a31271852cd4 100644
> --- a/crypto/async_tx/async_pq.c
> +++ b/crypto/async_tx/async_pq.c
> @@ -188,7 +188,7 @@ async_gen_syndrome(struct page **blocks, unsigned int *offsets, int disks,
>  	BUG_ON(disks > MAX_DISKS || !(P(blocks, disks) || Q(blocks, disks)));
>  
>  	if (device)
> -		unmap = dmaengine_get_unmap_data(device->dev, disks, GFP_NOWAIT);
> +		unmap = dmaengine_get_unmap_data(chan, disks, GFP_NOWAIT);
>  
>  	/* XORing P/Q is only implemented in software */
>  	if (unmap && !(submit->flags & ASYNC_TX_PQ_XOR_DST) &&
> @@ -310,7 +310,7 @@ async_syndrome_val(struct page **blocks, unsigned int *offsets, int disks,
>  	BUG_ON(disks < 4 || disks > MAX_DISKS);
>  
>  	if (device)
> -		unmap = dmaengine_get_unmap_data(device->dev, disks, GFP_NOWAIT);
> +		unmap = dmaengine_get_unmap_data(chan, disks, GFP_NOWAIT);
>  
>  	if (unmap && disks <= dma_maxpq(device, 0) &&
>  	    is_dma_pq_aligned_offs(chan, offsets, disks, len)) {
> diff --git a/crypto/async_tx/async_raid6_recov.c b/crypto/async_tx/async_raid6_recov.c
> index 27909afda694a..5055531145bd2 100644
> --- a/crypto/async_tx/async_raid6_recov.c
> +++ b/crypto/async_tx/async_raid6_recov.c
> @@ -29,7 +29,7 @@ async_sum_product(struct page *dest, unsigned int d_off,
>  	u8 *a, *b, *c;
>  
>  	if (dma)
> -		unmap = dmaengine_get_unmap_data(dma->dev, 3, GFP_NOWAIT);
> +		unmap = dmaengine_get_unmap_data(chan, 3, GFP_NOWAIT);
>  
>  	if (unmap) {
>  		struct device *dev = dma->dev;
> @@ -97,7 +97,7 @@ async_mult(struct page *dest, unsigned int d_off, struct page *src,
>  	u8 *d, *s;
>  
>  	if (dma)
> -		unmap = dmaengine_get_unmap_data(dma->dev, 3, GFP_NOWAIT);
> +		unmap = dmaengine_get_unmap_data(chan, 3, GFP_NOWAIT);
>  
>  	if (unmap) {
>  		dma_addr_t dma_dest[2];
> diff --git a/crypto/async_tx/async_xor.c b/crypto/async_tx/async_xor.c
> index 4ed9d3196fc46..9ed331d9b8e64 100644
> --- a/crypto/async_tx/async_xor.c
> +++ b/crypto/async_tx/async_xor.c
> @@ -178,8 +178,8 @@ async_xor_offs(struct page *dest, unsigned int offset,
>  
>  	BUG_ON(src_cnt <= 1);
>  
> -	if (device)
> -		unmap = dmaengine_get_unmap_data(device->dev, src_cnt+1, GFP_NOWAIT);
> +	if (chan)
> +		unmap = dmaengine_get_unmap_data(chan, src_cnt + 1, GFP_NOWAIT);
>  
>  	if (unmap && dma_xor_aligned_offsets(chan, offset, src_offs,
>  					     src_cnt, len)) {
> @@ -310,8 +310,8 @@ async_xor_val_offs(struct page *dest, unsigned int offset,
>  
>  	BUG_ON(src_cnt <= 1);
>  
> -	if (device)
> -		unmap = dmaengine_get_unmap_data(device->dev, src_cnt, GFP_NOWAIT);
> +	if (chan)
> +		unmap = dmaengine_get_unmap_data(chan, src_cnt, GFP_NOWAIT);
>  
>  	if (unmap && src_cnt <= device->max_xor &&
>  	    dma_xor_aligned_offsets(chan, offset, src_offs, src_cnt, len)) {
> diff --git a/drivers/dma/dmaengine.c b/drivers/dma/dmaengine.c
> index cc1c0a7c9f33d..4585ebcd2e8cd 100644
> --- a/drivers/dma/dmaengine.c
> +++ b/drivers/dma/dmaengine.c
> @@ -1474,7 +1474,7 @@ static int __init dmaengine_init_unmap_pool(void)
>  }
>  
>  struct dmaengine_unmap_data *
> -dmaengine_get_unmap_data(struct device *dev, int nr, gfp_t flags)
> +dmaengine_get_unmap_data(struct dma_chan *chan, int nr, gfp_t flags)
>  {
>  	struct dmaengine_unmap_data *unmap;
>  
> @@ -1484,7 +1484,7 @@ dmaengine_get_unmap_data(struct device *dev, int nr, gfp_t flags)
>  
>  	memset(unmap, 0, sizeof(*unmap));
>  	kref_init(&unmap->kref);
> -	unmap->dev = dev;
> +	unmap->dev = dmaengine_get_dma_device(chan);
>  	unmap->map_cnt = nr;
>  
>  	return unmap;
> diff --git a/drivers/dma/dmatest.c b/drivers/dma/dmatest.c
> index 2ae3469397f37..043bb065dd68a 100644
> --- a/drivers/dma/dmatest.c
> +++ b/drivers/dma/dmatest.c
> @@ -748,7 +748,7 @@ static int dmatest_func(void *data)
>  			filltime = ktime_add(filltime, diff);
>  		}
>  
> -		um = dmaengine_get_unmap_data(dma_dev, src->cnt + dst->cnt,
> +		um = dmaengine_get_unmap_data(chan, src->cnt + dst->cnt,
>  					      GFP_KERNEL);
>  		if (!um) {
>  			failed_tests++;
> diff --git a/drivers/dma/mv_xor.c b/drivers/dma/mv_xor.c
> index c4e0dce3ca64e..dec01b6264d7a 100644
> --- a/drivers/dma/mv_xor.c
> +++ b/drivers/dma/mv_xor.c
> @@ -794,7 +794,7 @@ static int mv_chan_memcpy_self_test(struct mv_xor_chan *mv_chan)
>  		goto out;
>  	}
>  
> -	unmap = dmaengine_get_unmap_data(dma_chan->device->dev, 2, GFP_KERNEL);
> +	unmap = dmaengine_get_unmap_data(dma_chan, 2, GFP_KERNEL);
>  	if (!unmap) {
>  		err = -ENOMEM;
>  		goto free_resources;
> @@ -927,7 +927,7 @@ mv_chan_xor_self_test(struct mv_xor_chan *mv_chan)
>  		goto out;
>  	}
>  
> -	unmap = dmaengine_get_unmap_data(dma_chan->device->dev, src_count + 1,
> +	unmap = dmaengine_get_unmap_data(dma_chan, src_count + 1,
>  					 GFP_KERNEL);
>  	if (!unmap) {
>  		err = -ENOMEM;
> diff --git a/drivers/ntb/ntb_transport.c b/drivers/ntb/ntb_transport.c
> index b8f8b333b89eb..e9e1506df71d6 100644
> --- a/drivers/ntb/ntb_transport.c
> +++ b/drivers/ntb/ntb_transport.c
> @@ -1532,7 +1532,7 @@ static int ntb_async_rx_submit(struct ntb_queue_entry *entry, void *offset)
>  	if (!dmaengine_is_copy_aligned(chan, pay_off, buff_off, len))
>  		goto err;
>  
> -	unmap = dmaengine_get_unmap_data(dma_dev, 2, GFP_NOWAIT);
> +	unmap = dmaengine_get_unmap_data(chan, 2, GFP_NOWAIT);
>  	if (!unmap)
>  		goto err;
>  
> @@ -1871,7 +1871,7 @@ static int ntb_async_tx_submit(struct ntb_transport_qp *qp,
>  	if (!dmaengine_is_copy_aligned(chan, buff_off, dest_off, len))
>  		goto err;
>  
> -	unmap = dmaengine_get_unmap_data(dma_dev, 1, GFP_NOWAIT);
> +	unmap = dmaengine_get_unmap_data(chan, 1, GFP_NOWAIT);
>  	if (!unmap)
>  		goto err;
>  
> diff --git a/drivers/ntb/test/ntb_perf.c b/drivers/ntb/test/ntb_perf.c
> index 774e643c9f4c6..1cb991e2f0cf7 100644
> --- a/drivers/ntb/test/ntb_perf.c
> +++ b/drivers/ntb/test/ntb_perf.c
> @@ -809,7 +809,7 @@ static int perf_copy_chunk(struct perf_thread *pthr,
>  	dst_vaddr = dst;
>  	dst_dma_addr = peer->dma_dst_addr + (dst_vaddr - vbase);
>  
> -	unmap = dmaengine_get_unmap_data(dma_dev, 1, GFP_NOWAIT);
> +	unmap = dmaengine_get_unmap_data(pthr->dma_chan, 1, GFP_NOWAIT);
>  	if (!unmap)
>  		return -ENOMEM;
>  
> diff --git a/include/linux/dmaengine.h b/include/linux/dmaengine.h
> index fc661e76de84d..c8ecf80288f13 100644
> --- a/include/linux/dmaengine.h
> +++ b/include/linux/dmaengine.h
> @@ -656,7 +656,7 @@ static inline void dma_set_unmap(struct dma_async_tx_descriptor *tx,
>  }
>  
>  struct dmaengine_unmap_data *
> -dmaengine_get_unmap_data(struct device *dev, int nr, gfp_t flags);
> +dmaengine_get_unmap_data(struct dma_chan *chan, int nr, gfp_t flags);
>  void dmaengine_unmap_put(struct dmaengine_unmap_data *unmap);
>  #else
>  static inline void dma_set_unmap(struct dma_async_tx_descriptor *tx,
> @@ -664,7 +664,7 @@ static inline void dma_set_unmap(struct dma_async_tx_descriptor *tx,
>  {
>  }
>  static inline struct dmaengine_unmap_data *
> -dmaengine_get_unmap_data(struct device *dev, int nr, gfp_t flags)
> +dmaengine_get_unmap_data(struct dma_chan *chan, int nr, gfp_t flags)
>  {
>  	return NULL;
>  }


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH 1/1] dmaengine: change dmaengine_get_unmap_data() first arg to dma_chan
  2026-09-22 23:09 ` Dave Jiang
@ 2026-10-09  9:43   ` Vinod Koul
  2026-10-09 16:19     ` Dave Jiang
  0 siblings, 1 reply; 5+ messages in thread
From: Vinod Koul @ 2026-10-09  9:43 UTC (permalink / raw)
  To: Dave Jiang
  Cc: Frank.Li, Dan Williams, Herbert Xu, David S. Miller, Frank Li,
	Jon Mason, Allen Hubbe, Ard Biesheuvel, Andrew Morton,
	Eric Biggers, open list:CRYPTO API, open list,
	open list:DMA GENERIC OFFLOAD ENGINE SUBSYSTEM,
	open list:NTB DRIVER CORE, imx, Frank Li

On 22-09-26, 16:09, Dave Jiang wrote:
> 
> 
> On 9/22/26 11:45 AM, Frank.Li@oss.nxp.com wrote:
> > From: Frank Li <Frank.Li@nxp.com>
> > 
> > Replace the struct device *dev argument with struct dma_chan *chan so
> > callers do not need to reach into the dma_device internals to obtain
> > the device pointer.  The implementation now derives the device via
> > dmaengine_get_dma_device(chan), which correctly handles the per-channel
> > IOMMU mapping case.
> > 
> > Prepare to make dma_device private and make dmaengine API consistent.
> > 
> > Signed-off-by: Frank Li <Frank.Li@nxp.com>
> 
> For the NTB bits:
> Acked-by: Dave Jiang <dave.jiang@intel.com>
> 
> 
> > ---
> >  crypto/async_tx/async_memcpy.c      | 4 ++--
> >  crypto/async_tx/async_pq.c          | 4 ++--
> >  crypto/async_tx/async_raid6_recov.c | 4 ++--
> >  crypto/async_tx/async_xor.c         | 8 ++++----
> 
> Maybe one day Dan's wishes will become true and someone will finally deprecate async_tx....

Does Intel still have use it. I am looking at fixing the names and we
can drop async_tx completely...? 

-- 
~Vinod

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH 1/1] dmaengine: change dmaengine_get_unmap_data() first arg to dma_chan
  2026-10-09  9:43   ` Vinod Koul
@ 2026-10-09 16:19     ` Dave Jiang
  2026-10-09 19:02       ` Frank Li
  0 siblings, 1 reply; 5+ messages in thread
From: Dave Jiang @ 2026-10-09 16:19 UTC (permalink / raw)
  To: Vinod Koul
  Cc: Frank.Li, Dan Williams, Herbert Xu, David S. Miller, Frank Li,
	Jon Mason, Allen Hubbe, Ard Biesheuvel, Andrew Morton,
	Eric Biggers, open list:CRYPTO API, open list,
	open list:DMA GENERIC OFFLOAD ENGINE SUBSYSTEM,
	open list:NTB DRIVER CORE, imx, Frank Li



On 10/9/26 2:43 AM, Vinod Koul wrote:
> On 22-09-26, 16:09, Dave Jiang wrote:
>>
>>
>> On 9/22/26 11:45 AM, Frank.Li@oss.nxp.com wrote:
>>> From: Frank Li <Frank.Li@nxp.com>
>>>
>>> Replace the struct device *dev argument with struct dma_chan *chan so
>>> callers do not need to reach into the dma_device internals to obtain
>>> the device pointer.  The implementation now derives the device via
>>> dmaengine_get_dma_device(chan), which correctly handles the per-channel
>>> IOMMU mapping case.
>>>
>>> Prepare to make dma_device private and make dmaengine API consistent.
>>>
>>> Signed-off-by: Frank Li <Frank.Li@nxp.com>
>>
>> For the NTB bits:
>> Acked-by: Dave Jiang <dave.jiang@intel.com>
>>
>>
>>> ---
>>>  crypto/async_tx/async_memcpy.c      | 4 ++--
>>>  crypto/async_tx/async_pq.c          | 4 ++--
>>>  crypto/async_tx/async_raid6_recov.c | 4 ++--
>>>  crypto/async_tx/async_xor.c         | 8 ++++----
>>
>> Maybe one day Dan's wishes will become true and someone will finally deprecate async_tx....
> 
> Does Intel still have use it. I am looking at fixing the names and we
> can drop async_tx completely...? 
> 
I don't think so. Not since ioatdma days. Dan has talked about wanting to remove async_tx for quite a few years now. No idea if there are ARM dma devices that still use that or not. 

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH 1/1] dmaengine: change dmaengine_get_unmap_data() first arg to dma_chan
  2026-10-09 16:19     ` Dave Jiang
@ 2026-10-09 19:02       ` Frank Li
  0 siblings, 0 replies; 5+ messages in thread
From: Frank Li @ 2026-10-09 19:02 UTC (permalink / raw)
  To: Dave Jiang
  Cc: Vinod Koul, Dan Williams, Herbert Xu, David S. Miller, Frank Li,
	Jon Mason, Allen Hubbe, Ard Biesheuvel, Andrew Morton,
	Eric Biggers, open list:CRYPTO API, open list,
	open list:DMA GENERIC OFFLOAD ENGINE SUBSYSTEM,
	open list:NTB DRIVER CORE, imx, Frank Li

On Fri, Oct 09, 2026 at 09:19:43AM -0700, Dave Jiang wrote:
>
>
> On 10/9/26 2:43 AM, Vinod Koul wrote:
> > On 22-09-26, 16:09, Dave Jiang wrote:
> >>
> >>
> >> On 9/22/26 11:45 AM, Frank.Li@oss.nxp.com wrote:
> >>> From: Frank Li <Frank.Li@nxp.com>
> >>>
> >>> Replace the struct device *dev argument with struct dma_chan *chan so
> >>> callers do not need to reach into the dma_device internals to obtain
> >>> the device pointer.  The implementation now derives the device via
> >>> dmaengine_get_dma_device(chan), which correctly handles the per-channel
> >>> IOMMU mapping case.
> >>>
> >>> Prepare to make dma_device private and make dmaengine API consistent.
> >>>
> >>> Signed-off-by: Frank Li <Frank.Li@nxp.com>
> >>
> >> For the NTB bits:
> >> Acked-by: Dave Jiang <dave.jiang@intel.com>
> >>
> >>
> >>> ---
> >>>  crypto/async_tx/async_memcpy.c      | 4 ++--
> >>>  crypto/async_tx/async_pq.c          | 4 ++--
> >>>  crypto/async_tx/async_raid6_recov.c | 4 ++--
> >>>  crypto/async_tx/async_xor.c         | 8 ++++----
> >>
> >> Maybe one day Dan's wishes will become true and someone will finally deprecate async_tx....
> >
> > Does Intel still have use it. I am looking at fixing the names and we
> > can drop async_tx completely...?
> >
> I don't think so. Not since ioatdma days. Dan has talked about wanting to remove async_tx for quite a few years now. No idea if there are ARM dma devices that still use that or not.

Maybe we can create patch to skip build it firstly, let's see if there are
really user.

Frank

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2026-10-09 19:02 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-09-22 18:45 [PATCH 1/1] dmaengine: change dmaengine_get_unmap_data() first arg to dma_chan Frank.Li
2026-09-22 23:09 ` Dave Jiang
2026-10-09  9:43   ` Vinod Koul
2026-10-09 16:19     ` Dave Jiang
2026-10-09 19:02       ` Frank Li

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox