[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID:
<MN0PR12MB5953134843F6FD10B839FCA5B72AA@MN0PR12MB5953.namprd12.prod.outlook.com>
Date: Wed, 13 Aug 2025 06:51:10 +0000
From: "Pandey, Radhey Shyam" <radhey.shyam.pandey@....com>
To: "Joseph, Abin" <Abin.Joseph@....com>, "vkoul@...nel.org"
<vkoul@...nel.org>, "Simek, Michal" <michal.simek@....com>,
"yanzhen@...o.com" <yanzhen@...o.com>, "palmer@...osinc.com"
<palmer@...osinc.com>, "u.kleine-koenig@...libre.com"
<u.kleine-koenig@...libre.com>
CC: "git (AMD-Xilinx)" <git@....com>, "Joseph, Abin" <Abin.Joseph@....com>,
"dmaengine@...r.kernel.org" <dmaengine@...r.kernel.org>,
"linux-arm-kernel@...ts.infradead.org"
<linux-arm-kernel@...ts.infradead.org>, "linux-kernel@...r.kernel.org"
<linux-kernel@...r.kernel.org>
Subject: RE: [PATCH v3] dmaengine: zynqmp_dma: Add shutdown operation support
[Public]
> -----Original Message-----
> From: Abin Joseph <abin.joseph@....com>
> Sent: Tuesday, July 22, 2025 12:33 PM
> To: vkoul@...nel.org; Simek, Michal <michal.simek@....com>;
> yanzhen@...o.com; Pandey, Radhey Shyam <radhey.shyam.pandey@....com>;
> palmer@...osinc.com; u.kleine-koenig@...libre.com
> Cc: git (AMD-Xilinx) <git@....com>; Joseph, Abin <Abin.Joseph@....com>;
> dmaengine@...r.kernel.org; linux-arm-kernel@...ts.infradead.org; linux-
> kernel@...r.kernel.org
> Subject: [PATCH v3] dmaengine: zynqmp_dma: Add shutdown operation support
>
> Add shutdown callback to ensure that DMA operations are properly stopped
> and resources are released during system shutdown or kexec operations.
> Fix incorrect PM state handling in the remove function that was causing
> clock disable warnings during the shutdown operations, which was not
> implemented earlier. The original logic used pm_runtime_enabled() check
> after calling the pm_runtime_disable(), would always evaluate to true
> after the disable call, which leads to unconditionally calling the
> runtime_suspend regardless of the device's actual power state.
>
> During shutdown, the device may already be suspended with clock disabled
> from the autosuspend timer, causing the clock framework to warn about
> the double-disable attempt. The pm_runtime_active() function checks the
> actual device power state rather than the PM subsystem's enabled/disabled
> status. ensuring the runtime_suspend is only called when the device is in
> active power state. This prevents clock warnings during shutdown while
> maintaining proper cleanup during normal remove operations.
>
> Signed-off-by: Abin Joseph <abin.joseph@....com>
Reviewed-by: Radhey Shyam Pandey <radhey.shyam.pandey@....com>
Thanks!
> ---
>
> Changes in v3:
> Update the commit description
> Update to call remove directly from shutdown hook.
>
> Changes in v2:
> Update the shutdown to perform same operations as remove.
>
> ---
> drivers/dma/xilinx/zynqmp_dma.c | 5 +++--
> 1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/dma/xilinx/zynqmp_dma.c b/drivers/dma/xilinx/zynqmp_dma.c
> index d05fc5fcc77d..f7e584de4335 100644
> --- a/drivers/dma/xilinx/zynqmp_dma.c
> +++ b/drivers/dma/xilinx/zynqmp_dma.c
> @@ -1173,9 +1173,9 @@ static void zynqmp_dma_remove(struct platform_device
> *pdev)
> dma_async_device_unregister(&zdev->common);
>
> zynqmp_dma_chan_remove(zdev->chan);
> - pm_runtime_disable(zdev->dev);
> - if (!pm_runtime_enabled(zdev->dev))
> + if (pm_runtime_active(zdev->dev))
> zynqmp_dma_runtime_suspend(zdev->dev);
> + pm_runtime_disable(zdev->dev);
> }
>
> static const struct of_device_id zynqmp_dma_of_match[] = {
> @@ -1193,6 +1193,7 @@ static struct platform_driver zynqmp_dma_driver = {
> },
> .probe = zynqmp_dma_probe,
> .remove = zynqmp_dma_remove,
> + .shutdown = zynqmp_dma_remove,
> };
>
> module_platform_driver(zynqmp_dma_driver);
> --
> 2.43.0
Powered by blists - more mailing lists