[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <2ad40570-102e-448b-bf40-06af8ecdfca2@tuxon.dev>
Date: Mon, 12 Jan 2026 11:30:35 +0200
From: Claudiu Beznea <claudiu.beznea@...on.dev>
To: Tommaso Merciai <tommaso.merciai.xr@...renesas.com>,
tomm.merciai@...il.com
Cc: linux-renesas-soc@...r.kernel.org, biju.das.jz@...renesas.com,
Vinod Koul <vkoul@...nel.org>, Geert Uytterhoeven <geert+renesas@...der.be>,
Wolfram Sang <wsa+renesas@...g-engineering.com>,
Fabrizio Castro <fabrizio.castro.jz@...esas.com>,
Uwe Kleine-König <u.kleine-koenig@...libre.com>,
dmaengine@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH 3/4] dmaengine: sh: rz-dmac: Refactor runtime PM handling
Hi, Tommaso,
On 9/5/25 17:44, Tommaso Merciai wrote:
> Refactor runtime PM handling to ensure correct power management and prevent
> resource leaks. Invoke pm_runtime_get_sync() when allocating DMA channel
> resources and pm_runtime_put() when freeing them. Add pm_runtime_put() in
> rz_dmac_probe() to balance the usage count during device initialization,
> and remove the unnecessary pm_runtime_put() from rz_dmac_remove() to avoid
> PM inconsistencies.
>
> Signed-off-by: Tommaso Merciai <tommaso.merciai.xr@...renesas.com>
> ---
> drivers/dma/sh/rz-dmac.c | 6 ++++--
> 1 file changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/dma/sh/rz-dmac.c b/drivers/dma/sh/rz-dmac.c
> index 0bc11a6038383..4ab6076f5499e 100644
> --- a/drivers/dma/sh/rz-dmac.c
> +++ b/drivers/dma/sh/rz-dmac.c
> @@ -455,7 +455,7 @@ static int rz_dmac_alloc_chan_resources(struct dma_chan *chan)
> if (!channel->descs_allocated)
> return -ENOMEM;
>
> - return channel->descs_allocated;
> + return pm_runtime_get_sync(chan->device->dev);
This looks wrong to me as, rz_dmac_alloc_chan_resources() could be
called from the following path:
dma_request_chan() ->
find_candidate() ->
dma_chan_get() ->
rz_dmac_alloc_chan_resources()
With this, the runtime PM reference counter is incremented on
dma_request_chan() calls, when DMA consumers request DMA channels, and
remains different than zero until the DMA channel is put. But, on
suspend path, the runtime PM reference counter is not touched even when
there are DMA channels requested.
Am I missing something?
Thank you,
Claudiu
Powered by blists - more mailing lists