DMA Engine development
 help / color / mirror / Atom feed
From: sashiko-bot@kernel.org
To: "Koichiro Den" <den@valinux.co.jp>
Cc: vkoul@kernel.org, Frank.Li@kernel.org, dmaengine@vger.kernel.org
Subject: Re: [PATCH v6 04/10] dmaengine: dw-edma: Make DMA link list work as a circular buffer
Date: Thu, 20 Aug 2026 17:50:09 +0000	[thread overview]
Message-ID: <20260820175009.70ED01F00A3A@smtp.kernel.org> (raw)
In-Reply-To: <20260820173439.2004068-5-den@valinux.co.jp>

Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [High] The driver explicitly rejects linked-list DMA descriptors larger than the ring size, breaking support for large DMA transfers.
--

--- Patch [4]: [PATCH v6 04/10] dmaengine: dw-edma: Make DMA link list work as a circular buffer ---
commit afa3e356ba74dbd5874af4d32f4fd3abdf7cbf7c
Author: Frank Li <Frank.Li@nxp.com>

dmaengine: dw-edma: Make DMA link list work as a circular buffer

This patch converts the DMA link list into a circular buffer instead of
rebuilding it for every transfer. It clears control words before first use,
rejects descriptors that exceed the usable ring capacity, and resets the
ring after termination or abort.

> diff --git a/drivers/dma/dw-edma/dw-edma-core.c b/drivers/dma/dw-edma/dw-edma-core.c
> index a6bb68ffdfe26..1af262b6e881e 100644
> --- a/drivers/dma/dw-edma/dw-edma-core.c
> +++ b/drivers/dma/dw-edma/dw-edma-core.c
> @@ -51,13 +51,19 @@ dw_edma_alloc_desc(struct dw_edma_chan *chan, size_t nburst)
>  {
>  	struct dw_edma_desc *desc;
>  
> +	/*
> +	 * For now, a descriptor that does not fit would stall the channel
> +	 * forever: reject it up front.
> +	 */
> +	if (!chan->non_ll && nburst > chan->ll_max - 1)
> +		return NULL;
> +

[Severity: High]
Does this change break support for large DMA transfers?

By explicitly rejecting linked-list DMA descriptors larger than the ring
size, any client driver (such as storage or networking) that submits a
scatter-gather transfer larger than chan->ll_max - 1 will fail
unconditionally.

While the commit message acknowledges this as a limitation "until reclaim
support lands", that support appears to be completely missing from this
patch series.

Could this cause functional regressions for subsystems relying on this DMA
engine to submit moderately large transfers?

[ ... ]

> @@ -645,6 +708,8 @@ static void dw_edma_done_interrupt(struct dw_edma_chan *chan)
>  							    DMA_TRANS_NOERROR);
>  				list_del(&vd->node);
>  				vchan_cookie_complete(vd);
> +				if (!chan->non_ll)
> +					chan->ll_done = chan->ll_head;
>  			}
>  
>  			if (chan->request == EDMA_REQ_PAUSE) {

[Severity: High]
Since ring space is only reclaimed here when an entire descriptor completes,
does this structural change prevent incrementally chunking large descriptors?

Without the ability to reclaim space as partial transfers complete, this
seems to be the reason why large transfers can no longer be supported.

Could partial completions be handled here to prevent the functional regression
before the full reclaim support lands?

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260820173439.2004068-1-den@valinux.co.jp?part=4

  reply	other threads:[~2026-08-20 17:50 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-08-20 17:34 [PATCH v6 00/10] dmaengine: dw-edma: Prepare for dynamic LL appends Koichiro Den
2026-08-20 17:34 ` [PATCH v6 01/10] dmaengine: dw-edma: Add dw_edma_core_ll_cur_idx() to get current LL entry index Koichiro Den
2026-08-20 17:44   ` sashiko-bot
2026-08-20 17:34 ` [PATCH v6 02/10] dmaengine: dw-edma: Add dw_edma_core_ll_clear() to clear LL control-word Koichiro Den
2026-08-20 17:34 ` [PATCH v6 03/10] dmaengine: dw-edma: Factor out linked-list transfer start Koichiro Den
2026-08-20 17:34 ` [PATCH v6 04/10] dmaengine: dw-edma: Make DMA link list work as a circular buffer Koichiro Den
2026-08-20 17:50   ` sashiko-bot [this message]
2026-08-20 17:34 ` [PATCH v6 05/10] dmaengine: dw-edma: Move callback result helper before LL helpers Koichiro Den
2026-08-20 17:34 ` [PATCH v6 06/10] dmaengine: dw-edma: Dispatch DONE interrupts by channel request Koichiro Den
2026-08-20 17:34 ` [PATCH v6 07/10] dmaengine: dw-edma: Centralize LL doorbell decisions Koichiro Den
2026-08-20 17:34 ` [PATCH v6 08/10] dmaengine: dw-edma: Prepare LL progress event handling Koichiro Den
2026-08-20 17:34 ` [PATCH v6 09/10] dmaengine: dw-edma: Prepare deferred IRQ reporting for LL events Koichiro Den
2026-08-20 17:34 ` [PATCH v6 10/10] dmaengine: dw-edma: Prepare LL kicks for event serialization Koichiro Den

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20260820175009.70ED01F00A3A@smtp.kernel.org \
    --to=sashiko-bot@kernel.org \
    --cc=Frank.Li@kernel.org \
    --cc=den@valinux.co.jp \
    --cc=dmaengine@vger.kernel.org \
    --cc=sashiko-reviews@lists.linux.dev \
    --cc=vkoul@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox