DMA Engine development
 help / color / mirror / Atom feed
From: sashiko-bot@kernel.org
To: Frank.Li@oss.nxp.com
Cc: Frank.Li@kernel.org, linux-pci@vger.kernel.org,
	dmaengine@vger.kernel.org, vkoul@kernel.org, imx@lists.linux.dev
Subject: Re: [PATCH v4 06/10] dmaengine: dw-edma: Add callbacks to fill link list entries
Date: Wed, 08 Jul 2026 18:51:16 +0000	[thread overview]
Message-ID: <20260708185116.7D08B1F000E9@smtp.kernel.org> (raw)
In-Reply-To: <20260708-edma_ll-v4-6-cc128f0afb61@nxp.com>

Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:

Pre-existing issues:
- [High] The first burst of the initial chunk is populated but skipped during hardware descriptor programming, leading to silent data loss.
--

--- Patch [6]: [PATCH v4 06/10] dmaengine: dw-edma: Add callbacks to fill link list entries ---
commit 8217e6927a330e1d9e36c8d3201ab9c4807b55cf
Author: Frank Li <Frank.Li@nxp.com>
Subject: dmaengine: dw-edma: Add callbacks to fill link list entries

This commit introduces four new callbacks to fill link list entries in
preparation for replacing the existing core start routines. The abstraction
allows the code to be cleanly shared between eDMA and HDMA implementations.

Tested-by: Koichiro Den <den@valinux.co.jp>
Signed-off-by: Frank Li <Frank.Li@nxp.com>

> diff --git a/drivers/dma/dw-edma/dw-edma-v0-core.c b/drivers/dma/dw-edma/dw-edma-v0-core.c
> index 8d38867cd9983..c0746e5351410 100644
> --- a/drivers/dma/dw-edma/dw-edma-v0-core.c
> +++ b/drivers/dma/dw-edma/dw-edma-v0-core.c
[ ... ]
> @@ -509,6 +509,48 @@ static void dw_edma_v0_core_ch_config(struct dw_edma_chan *chan)
>  	}
>  }
>  
> +static void
> +dw_edma_v0_core_ll_data(struct dw_edma_chan *chan, struct dw_edma_burst *burst,
> +			u32 idx, bool cb, bool irq)
> +{

[Severity: High]
This isn't a bug introduced by this patch, but since this new callback is
being introduced to handle filling link list data entries, does the existing
driver logic silently drop the first data segment?

Looking at dw_edma_device_transfer() in dw-edma-core.c, it allocates and
populates the first burst directly into chunk->burst:

dw_edma_device_transfer()
    ...
    burst = dw_edma_alloc_burst(chunk);
    if (unlikely(!burst))
        goto err_alloc;

    if (xfer->type == EDMA_XFER_CYCLIC)
        burst->sz = xfer->xfer.cyclic.len;

However, the hardware descriptor programming loop in dw-edma-v0-core.c treats
chunk->burst->list as a dummy head rather than a data element:

dw_edma_v0_core_write_chunk()
    ...
    list_for_each_entry(child, &chunk->burst->list, list) {
        ...
        dw_edma_v0_write_ll_data(chan, i++, control, child->sz,
                                 child->sar, child->dar);
    }

Since list_for_each_entry() starts from head->next and skips the head itself,
will this skip programming the first burst entirely and cause silent data loss
for scatter-gather, cyclic, or single block transfers?

> +	u32 control = 0;
> +
> +	if (cb)
> +		control |= DW_EDMA_V0_CB;
> +

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260708-edma_ll-v4-0-cc128f0afb61@nxp.com?part=6

  reply	other threads:[~2026-07-08 18:51 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-07-08 18:35 [PATCH v4 00/10] dmaengine: dw-edma: flatten desc structions and simple code Frank.Li
2026-07-08 18:35 ` [PATCH v4 01/10] dmaengine: dw-edma: Move control field update of DMA link to the last step Frank.Li
2026-07-08 18:47   ` sashiko-bot
2026-07-08 18:35 ` [PATCH v4 02/10] dmaengine: dw-edma: Add xfer_sz field to struct dw_edma_chunk Frank.Li
2026-07-08 18:49   ` sashiko-bot
2026-07-08 18:35 ` [PATCH v4 03/10] dmaengine: dw-edma: Move ll_region from struct dw_edma_chunk to struct dw_edma_chan Frank.Li
2026-07-08 18:46   ` sashiko-bot
2026-07-08 18:35 ` [PATCH v4 04/10] dmaengine: dw-edma: Pass down dw_edma_chan to reduce one level of indirection Frank.Li
2026-07-08 18:44   ` sashiko-bot
2026-07-08 18:35 ` [PATCH v4 05/10] dmaengine: dw-edma: Add helper dw_(edma|hdma)_v0_core_ch_enable() Frank.Li
2026-07-08 18:40   ` sashiko-bot
2026-07-08 18:35 ` [PATCH v4 06/10] dmaengine: dw-edma: Add callbacks to fill link list entries Frank.Li
2026-07-08 18:51   ` sashiko-bot [this message]
2026-07-08 18:35 ` [PATCH v4 07/10] dmaengine: dw-edma: Add non_ll_start() callback Frank.Li
2026-07-08 18:49   ` sashiko-bot
2026-07-08 18:35 ` [PATCH v4 08/10] dmaengine: dw-edma: Use common dw_edma_core_start() for both eDMA and HDMA Frank.Li
2026-07-08 18:56   ` sashiko-bot
2026-07-08 18:35 ` [PATCH v4 09/10] dmaengine: dw-edma: Use burst array instead of linked list Frank.Li
2026-07-08 18:49   ` sashiko-bot
2026-07-08 18:35 ` [PATCH v4 10/10] dmaengine: dw-edma: Remove struct dw_edma_chunk Frank.Li
2026-07-08 18:47   ` sashiko-bot
2026-07-09 11:33 ` [PATCH v4 00/10] dmaengine: dw-edma: flatten desc structions and simple code Markus Elfring

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=20260708185116.7D08B1F000E9@smtp.kernel.org \
    --to=sashiko-bot@kernel.org \
    --cc=Frank.Li@kernel.org \
    --cc=Frank.Li@oss.nxp.com \
    --cc=dmaengine@vger.kernel.org \
    --cc=imx@lists.linux.dev \
    --cc=linux-pci@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