* [PATCH v2 0/3] dmaengine: rcar-dmac: collection of small missed fixes
@ 2026-10-12 12:30 Wolfram Sang
2026-10-12 12:30 ` [PATCH v2 1/3] dmaengine: rcar-dmac: Fix PM usage counter imbalance Wolfram Sang
` (2 more replies)
0 siblings, 3 replies; 5+ messages in thread
From: Wolfram Sang @ 2026-10-12 12:30 UTC (permalink / raw)
To: linux-renesas-soc
Cc: Wolfram Sang, dmaengine, Frank Li, Geert Uytterhoeven,
Magnus Damm, Vinod Koul
While working on this driver, I found that there were these small fixes
contributed in the past but they have not been applied yet. So, I
collected and rebased them, added review tags and minorly improved the
commit messages. For v2, I addressed review comments. Changes are
described per patch. Please apply.
Tested on a Renesas R-Car X5H Ironhide board and R-Car V4H SparrowHawk.
Koichiro Den (1):
dmaengine: rcar-dmac: Add missing dma_descriptor_unmap()
Pan Chuang (1):
dmaengine: rcar-dmac: Remove redundant dev_err()/dev_err_probe()
Zhang Shurong (1):
dmaengine: rcar-dmac: Fix PM usage counter imbalance
drivers/dma/sh/rcar-dmac.c | 9 ++++-----
1 file changed, 4 insertions(+), 5 deletions(-)
--
2.53.0
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH v2 1/3] dmaengine: rcar-dmac: Fix PM usage counter imbalance
2026-10-12 12:30 [PATCH v2 0/3] dmaengine: rcar-dmac: collection of small missed fixes Wolfram Sang
@ 2026-10-12 12:30 ` Wolfram Sang
2026-10-12 12:30 ` [PATCH v2 2/3] dmaengine: rcar-dmac: Add missing dma_descriptor_unmap() Wolfram Sang
2026-10-12 12:30 ` [PATCH v2 3/3] dmaengine: rcar-dmac: Remove redundant dev_err()/dev_err_probe() Wolfram Sang
2 siblings, 0 replies; 5+ messages in thread
From: Wolfram Sang @ 2026-10-12 12:30 UTC (permalink / raw)
To: linux-renesas-soc
Cc: Zhang Shurong, Geert Uytterhoeven, Frank Li, Laurent Pinchart,
Wolfram Sang, Vinod Koul, Frank Li, Magnus Damm, dmaengine
From: Zhang Shurong <zhang_shurong@foxmail.com>
pm_runtime_get_sync will increment pm usage counter even it failed.
Forgetting to putting operation will result in reference leak here. We
fix it by replacing it with pm_runtime_resume_and_get to keep usage
counter balanced.
Fixes: 87244fe5abdf ("dmaengine: rcar-dmac: Add Renesas R-Car Gen2 DMA Controller (DMAC) driver")
Signed-off-by: Zhang Shurong <zhang_shurong@foxmail.com>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Reviewed-by: Frank Li <Frank.Li@nxp.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
---
Change since v1:
* added Laurent's tag (thanks!)
drivers/dma/sh/rcar-dmac.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/dma/sh/rcar-dmac.c b/drivers/dma/sh/rcar-dmac.c
index 3ad8aba5dcd4..5b54f1c4ce15 100644
--- a/drivers/dma/sh/rcar-dmac.c
+++ b/drivers/dma/sh/rcar-dmac.c
@@ -1070,7 +1070,7 @@ static int rcar_dmac_alloc_chan_resources(struct dma_chan *chan)
if (ret < 0)
return -ENOMEM;
- return pm_runtime_get_sync(chan->device->dev);
+ return pm_runtime_resume_and_get(chan->device->dev);
}
static void rcar_dmac_free_chan_resources(struct dma_chan *chan)
--
2.53.0
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH v2 2/3] dmaengine: rcar-dmac: Add missing dma_descriptor_unmap()
2026-10-12 12:30 [PATCH v2 0/3] dmaengine: rcar-dmac: collection of small missed fixes Wolfram Sang
2026-10-12 12:30 ` [PATCH v2 1/3] dmaengine: rcar-dmac: Fix PM usage counter imbalance Wolfram Sang
@ 2026-10-12 12:30 ` Wolfram Sang
2026-10-12 14:23 ` Frank Li
2026-10-12 12:30 ` [PATCH v2 3/3] dmaengine: rcar-dmac: Remove redundant dev_err()/dev_err_probe() Wolfram Sang
2 siblings, 1 reply; 5+ messages in thread
From: Wolfram Sang @ 2026-10-12 12:30 UTC (permalink / raw)
To: linux-renesas-soc
Cc: Koichiro Den, Wolfram Sang, Vinod Koul, Frank Li,
Geert Uytterhoeven, Magnus Damm, Laurent Pinchart, dmaengine
From: Koichiro Den <den@valinux.co.jp>
Call dma_descriptor_unmap() right before dma_cookie_complete() in the
threaded IRQ completion path. Without this, streaming DMA mappings
attached to the descriptor are never released and may eventually exhaust
DMA mapping resources (e.g. IOVA with an IOMMU or bounce-buffer slots
with SWIOTLB), leading to dma_map_* failures.
Also ensure dma_descriptor_unmap() is called in rcar_dmac_chan_reinit()
(error/terminate path) to avoid the same type of leaks.
Fixes: 87244fe5abdf ("dmaengine: rcar-dmac: Add Renesas R-Car Gen2 DMA Controller (DMAC) driver")
Signed-off-by: Koichiro Den <den@valinux.co.jp>
[wsa: moved unmap before cookie completion, added Fixes tag]
Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
---
Change since v1:
* moved unmap before cookie_complete (Sashiko + humans)
* adjusted commit message
drivers/dma/sh/rcar-dmac.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/dma/sh/rcar-dmac.c b/drivers/dma/sh/rcar-dmac.c
index 5b54f1c4ce15..78a913c4c0d8 100644
--- a/drivers/dma/sh/rcar-dmac.c
+++ b/drivers/dma/sh/rcar-dmac.c
@@ -844,6 +844,7 @@ static void rcar_dmac_chan_reinit(struct rcar_dmac_chan *chan)
list_for_each_entry_safe(desc, _desc, &descs, node) {
list_del(&desc->node);
+ dma_descriptor_unmap(&desc->async_tx);
rcar_dmac_desc_put(chan, desc);
}
}
@@ -1653,6 +1654,7 @@ static irqreturn_t rcar_dmac_isr_channel_thread(int irq, void *dev)
while (!list_empty(&chan->desc.done)) {
desc = list_first_entry(&chan->desc.done, struct rcar_dmac_desc,
node);
+ dma_descriptor_unmap(&desc->async_tx);
dma_cookie_complete(&desc->async_tx);
list_del(&desc->node);
--
2.53.0
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH v2 3/3] dmaengine: rcar-dmac: Remove redundant dev_err()/dev_err_probe()
2026-10-12 12:30 [PATCH v2 0/3] dmaengine: rcar-dmac: collection of small missed fixes Wolfram Sang
2026-10-12 12:30 ` [PATCH v2 1/3] dmaengine: rcar-dmac: Fix PM usage counter imbalance Wolfram Sang
2026-10-12 12:30 ` [PATCH v2 2/3] dmaengine: rcar-dmac: Add missing dma_descriptor_unmap() Wolfram Sang
@ 2026-10-12 12:30 ` Wolfram Sang
2 siblings, 0 replies; 5+ messages in thread
From: Wolfram Sang @ 2026-10-12 12:30 UTC (permalink / raw)
To: linux-renesas-soc
Cc: Pan Chuang, Geert Uytterhoeven, Frank Li, Wolfram Sang,
Vinod Koul, Frank Li, Magnus Damm, dmaengine
From: Pan Chuang <panchuang@vivo.com>
The devm_request_threaded_irq() now automatically logs detailed error
messages on failure. This eliminates the need for driver-specific
dev_err() and dev_err_probe() calls that previously printed generic
messages.
Signed-off-by: Pan Chuang <panchuang@vivo.com>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Reviewed-by: Frank Li <Frank.Li@nxp.com>
Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
---
Change since v1:
* none
drivers/dma/sh/rcar-dmac.c | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)
diff --git a/drivers/dma/sh/rcar-dmac.c b/drivers/dma/sh/rcar-dmac.c
index 78a913c4c0d8..73b15045ad92 100644
--- a/drivers/dma/sh/rcar-dmac.c
+++ b/drivers/dma/sh/rcar-dmac.c
@@ -1797,11 +1797,8 @@ static int rcar_dmac_chan_probe(struct rcar_dmac *dmac,
rcar_dmac_isr_channel,
rcar_dmac_isr_channel_thread, 0,
irqname, rchan);
- if (ret) {
- dev_err(dmac->dev, "failed to request IRQ %u (%d)\n",
- rchan->irq, ret);
+ if (ret)
return ret;
- }
return 0;
}
--
2.53.0
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH v2 2/3] dmaengine: rcar-dmac: Add missing dma_descriptor_unmap()
2026-10-12 12:30 ` [PATCH v2 2/3] dmaengine: rcar-dmac: Add missing dma_descriptor_unmap() Wolfram Sang
@ 2026-10-12 14:23 ` Frank Li
0 siblings, 0 replies; 5+ messages in thread
From: Frank Li @ 2026-10-12 14:23 UTC (permalink / raw)
To: Wolfram Sang
Cc: linux-renesas-soc, Koichiro Den, Vinod Koul, Frank Li,
Geert Uytterhoeven, Magnus Damm, Laurent Pinchart, dmaengine
On Mon, Oct 12, 2026 at 02:30:22PM +0200, Wolfram Sang wrote:
> From: Koichiro Den <den@valinux.co.jp>
>
> Call dma_descriptor_unmap() right before dma_cookie_complete() in the
> threaded IRQ completion path. Without this, streaming DMA mappings
> attached to the descriptor are never released and may eventually exhaust
> DMA mapping resources (e.g. IOVA with an IOMMU or bounce-buffer slots
> with SWIOTLB), leading to dma_map_* failures.
>
> Also ensure dma_descriptor_unmap() is called in rcar_dmac_chan_reinit()
> (error/terminate path) to avoid the same type of leaks.
>
> Fixes: 87244fe5abdf ("dmaengine: rcar-dmac: Add Renesas R-Car Gen2 DMA Controller (DMAC) driver")
> Signed-off-by: Koichiro Den <den@valinux.co.jp>
> [wsa: moved unmap before cookie completion, added Fixes tag]
> Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
> ---
Reviewed-by: Frank Li <Frank.Li@nxp.com>
>
> Change since v1:
> * moved unmap before cookie_complete (Sashiko + humans)
> * adjusted commit message
>
> drivers/dma/sh/rcar-dmac.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/drivers/dma/sh/rcar-dmac.c b/drivers/dma/sh/rcar-dmac.c
> index 5b54f1c4ce15..78a913c4c0d8 100644
> --- a/drivers/dma/sh/rcar-dmac.c
> +++ b/drivers/dma/sh/rcar-dmac.c
> @@ -844,6 +844,7 @@ static void rcar_dmac_chan_reinit(struct rcar_dmac_chan *chan)
>
> list_for_each_entry_safe(desc, _desc, &descs, node) {
> list_del(&desc->node);
> + dma_descriptor_unmap(&desc->async_tx);
> rcar_dmac_desc_put(chan, desc);
> }
> }
> @@ -1653,6 +1654,7 @@ static irqreturn_t rcar_dmac_isr_channel_thread(int irq, void *dev)
> while (!list_empty(&chan->desc.done)) {
> desc = list_first_entry(&chan->desc.done, struct rcar_dmac_desc,
> node);
> + dma_descriptor_unmap(&desc->async_tx);
> dma_cookie_complete(&desc->async_tx);
> list_del(&desc->node);
>
> --
> 2.53.0
>
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2026-10-12 14:23 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-10-12 12:30 [PATCH v2 0/3] dmaengine: rcar-dmac: collection of small missed fixes Wolfram Sang
2026-10-12 12:30 ` [PATCH v2 1/3] dmaengine: rcar-dmac: Fix PM usage counter imbalance Wolfram Sang
2026-10-12 12:30 ` [PATCH v2 2/3] dmaengine: rcar-dmac: Add missing dma_descriptor_unmap() Wolfram Sang
2026-10-12 14:23 ` Frank Li
2026-10-12 12:30 ` [PATCH v2 3/3] dmaengine: rcar-dmac: Remove redundant dev_err()/dev_err_probe() Wolfram Sang
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox