From: sashiko-bot@kernel.org
To: "Sai Sree Kartheek Adivi" <s-adivi@ti.com>
Cc: robh@kernel.org, devicetree@vger.kernel.org, conor+dt@kernel.org,
Frank.Li@kernel.org, vkoul@kernel.org, dmaengine@vger.kernel.org
Subject: Re: [PATCH v10 17/19] dmaengine: ti: k3-udma-v2: Add support for PKTDMA V2
Date: Mon, 28 Sep 2026 03:21:49 +0000 [thread overview]
Message-ID: <20260928032150.486851F000FF@smtp.kernel.org> (raw)
In-Reply-To: <20260928025749.1055383-18-s-adivi@ti.com>
Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
- [High] dmaengine: ti: k3-udma: inconsistent IRQ lookup keys for PKTDMA V2
- [High] dmaengine: ti: k3-udma: ring reset races with interrupt handler
--
commit 9f976c6183eaa9059066ffde518addf6969bc382
Author: Sai Sree Kartheek Adivi <s-adivi@ti.com>
Subject: dmaengine: ti: k3-udma-v2: Add support for PKTDMA V2
The PKTDMA V2 is different than the existing PKTDMA supported by the
k3-udma driver.
> diff --git a/drivers/dma/ti/k3-udma-private.c b/drivers/dma/ti/k3-udma-private.c
> index 44c097fff5ee6..525155d3bb513 100644
> --- a/drivers/dma/ti/k3-udma-private.c
> +++ b/drivers/dma/ti/k3-udma-private.c
> @@ -174,16 +174,30 @@ EXPORT_SYMBOL(xudma_is_pktdma);
>
> int xudma_pktdma_tflow_get_irq(struct udma_dev *ud, int udma_tflow_id)
> {
> - const struct udma_oes_offsets *oes = &ud->soc_data->oes;
> + if (ud->match_data->version == K3_UDMA_V1) {
> + const struct udma_oes_offsets *oes = &ud->soc_data->oes;
>
> - return msi_get_virq(ud->dev, udma_tflow_id + oes->pktdma_tchan_flow);
> + return msi_get_virq(ud->dev, udma_tflow_id + oes->pktdma_tchan_flow);
> + }
> + struct platform_device *pdev = to_platform_device(ud->dev);
> + char irq_name[10];
> +
> + snprintf(irq_name, sizeof(irq_name), "tx-%u", udma_tflow_id);
[Severity: High]
Does this cause an inconsistent IRQ lookup? In
pktdma_v2_alloc_chan_resources(), the driver formats the interrupt name
using mapped_channel_id. However, here in the glue layer helper, the same
string format is used with the flow ID (udma_tflow_id).
Since flow ID and mapped channel ID can differ in PKTDMA V2 (for example,
tflow_cnt=112 vs chan_cnt=97), they could look up different strings for the
exact same device node, leading to either the DMA engine or the glue layer
client acquiring the wrong interrupt.
> + return platform_get_irq_byname(pdev, irq_name);
> }
> EXPORT_SYMBOL(xudma_pktdma_tflow_get_irq);
[ ... ]
> diff --git a/drivers/dma/ti/k3-udma-v2.c b/drivers/dma/ti/k3-udma-v2.c
> index ba3042e866cac..a71471aa7707a 100644
> --- a/drivers/dma/ti/k3-udma-v2.c
> +++ b/drivers/dma/ti/k3-udma-v2.c
[ ... ]
> +static int pktdma_v2_alloc_chan_resources(struct dma_chan *chan)
> +{
[ ... ]
> + if (uc->config.dir == DMA_MEM_TO_DEV)
> + snprintf(irq_name, sizeof(irq_name), "tx-%u", irq_ring_idx);
> + else
> + snprintf(irq_name, sizeof(irq_name), "rx-%u", irq_ring_idx);
> + uc->irq_num_ring = platform_get_irq_byname(pdev, irq_name);
> + if (uc->irq_num_ring < 0) {
> + ret = uc->irq_num_ring;
> + goto err_res_free;
> + }
> +
> + ret = request_irq(uc->irq_num_ring, udma_v2_ring_irq_handler,
> + IRQF_SHARED | IRQF_TRIGGER_HIGH, uc->name, uc);
> +
> + if (ret) {
> + dev_err(ud->dev, "chan%d: ring irq request failed\n", uc->id);
> + goto err_irq_free;
> + }
> +
> + uc->irq_num_udma = 0;
> +
> + udma_reset_rings(uc);
[Severity: High]
Does this create a race condition where the interrupt handler might execute
before the ring state is fully reset?
If the shared IRQ line fires early or a stale interrupt is already pending,
udma_v2_ring_irq_handler() could be called before udma_reset_rings()
completes. Would it be safer to reset the hardware state before requesting
the IRQ?
> +
> + if (uc->tchan)
> + dev_dbg(ud->dev,
> + "chan%d: tchan%d, tflow%d, Remote thread: 0x%04x\n",
> + uc->id, uc->tchan->id, uc->tchan->tflow_id,
> + uc->config.remote_thread_id);
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260928025749.1055383-1-s-adivi@ti.com?part=17
next prev parent reply other threads:[~2026-09-28 3:21 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-28 2:56 [PATCH v10 00/19] dmaengine: ti: Add support for BCDMA v2 and PKTDMA v2 Sai Sree Kartheek Adivi
2026-09-28 2:56 ` [PATCH v10 01/19] dmaengine: ti: k3-udma: Fix sporadic crash on AM62x Sai Sree Kartheek Adivi
2026-09-28 8:39 ` Vignesh Raghavendra
2026-09-28 2:56 ` [PATCH v10 02/19] dmaengine: ti: k3-udma: move macros to header file Sai Sree Kartheek Adivi
2026-09-28 2:56 ` [PATCH v10 03/19] dmaengine: ti: k3-udma: move structs and enums " Sai Sree Kartheek Adivi
2026-09-28 2:56 ` [PATCH v10 04/19] dmaengine: ti: k3-udma: move static inline helper functions " Sai Sree Kartheek Adivi
2026-09-28 3:12 ` sashiko-bot
2026-09-28 2:56 ` [PATCH v10 05/19] dmaengine: ti: k3-udma: move descriptor management to k3-udma-common.c Sai Sree Kartheek Adivi
2026-09-28 8:39 ` Vignesh Raghavendra
2026-09-28 2:56 ` [PATCH v10 06/19] dmaengine: ti: k3-udma: move ring management functions " Sai Sree Kartheek Adivi
2026-09-28 2:56 ` [PATCH v10 07/19] dmaengine: ti: k3-udma: Add variant-specific function pointers to udma_dev Sai Sree Kartheek Adivi
2026-09-28 8:39 ` Vignesh Raghavendra
2026-09-28 2:56 ` [PATCH v10 08/19] dmaengine: ti: k3-udma: move udma utility functions to k3-udma-common.c Sai Sree Kartheek Adivi
2026-09-28 8:39 ` Vignesh Raghavendra
2026-09-28 2:56 ` [PATCH v10 09/19] dmaengine: ti: k3-udma: move resource management " Sai Sree Kartheek Adivi
2026-09-28 2:56 ` [PATCH v10 10/19] dmaengine: ti: k3-udma: refactor resource setup functions Sai Sree Kartheek Adivi
2026-09-28 8:39 ` Vignesh Raghavendra
2026-09-28 2:56 ` [PATCH v10 11/19] dmaengine: ti: k3-udma: move inclusion of k3-udma-private.c to k3-udma-common.c Sai Sree Kartheek Adivi
2026-09-28 3:13 ` sashiko-bot
2026-09-28 2:56 ` [PATCH v10 12/19] drivers: soc: ti: k3-ringacc: handle absence of tisci Sai Sree Kartheek Adivi
2026-09-28 3:15 ` sashiko-bot
2026-09-28 8:39 ` Vignesh Raghavendra
2026-09-28 2:56 ` [PATCH v10 13/19] dt-bindings: dma: ti: Add K3 BCDMA V2 Sai Sree Kartheek Adivi
2026-09-28 2:56 ` [PATCH v10 14/19] dt-bindings: dma: ti: Add K3 PKTDMA V2 Sai Sree Kartheek Adivi
2026-09-30 10:22 ` Krzysztof Kozlowski
2026-09-28 2:56 ` [PATCH v10 15/19] dmaengine: ti: k3-psil-am62l: Add AM62Lx PSIL and PDMA data Sai Sree Kartheek Adivi
2026-09-28 3:18 ` sashiko-bot
2026-09-28 8:39 ` Vignesh Raghavendra
2026-09-28 2:56 ` [PATCH v10 16/19] dmaengine: ti: k3-udma-v2: New driver for K3 BCDMA_V2 Sai Sree Kartheek Adivi
2026-09-28 3:26 ` sashiko-bot
2026-09-28 8:39 ` Vignesh Raghavendra
2026-09-28 2:56 ` [PATCH v10 17/19] dmaengine: ti: k3-udma-v2: Add support for PKTDMA V2 Sai Sree Kartheek Adivi
2026-09-28 3:21 ` sashiko-bot [this message]
2026-09-28 8:39 ` Vignesh Raghavendra
2026-10-01 7:17 ` Sai Sree Kartheek Adivi
2026-09-28 2:56 ` [PATCH v10 18/19] dmaengine: ti: k3-udma-v2: Update glue layer to support " Sai Sree Kartheek Adivi
2026-09-28 3:17 ` sashiko-bot
2026-09-28 2:56 ` [PATCH v10 19/19] dmaengine: ti: k3-udma: Validate resource ID and fix logging in reservation Sai Sree Kartheek Adivi
2026-09-28 8:39 ` Vignesh Raghavendra
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=20260928032150.486851F000FF@smtp.kernel.org \
--to=sashiko-bot@kernel.org \
--cc=Frank.Li@kernel.org \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=dmaengine@vger.kernel.org \
--cc=robh@kernel.org \
--cc=s-adivi@ti.com \
--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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.