dmaengine: at_xdmac: Use pm_runtime_put_noidle() with many usage_counts
authorSakari Ailus <sakari.ailus@linux.intel.com>
Thu, 10 Apr 2025 06:58:04 +0000 (09:58 +0300)
committerVinod Koul <vkoul@kernel.org>
Thu, 17 Apr 2025 15:08:10 +0000 (20:38 +0530)
We're holding more than one Runtime PM usage_counts in
at_xdmac_device_terminate_all(). This makes pm_runtime_mark_last_busy()
redundant and pm_runtime_put_autosuspend() misleading. Drop
pm_runtime_mark_last_busy() and use pm_runtime_put_noidle() to decrement
the usage_count, except in the case it may be the last.

Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Link: https://lore.kernel.org/r/20250410065804.3676582-1-sakari.ailus@linux.intel.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
drivers/dma/at_xdmac.c

index ba25c23164e7898e0d7684a4b70d2ded4d3445c8..3fbc74710a1336dfb0420fffdc9a1952da1a8f95 100644 (file)
@@ -2033,10 +2033,8 @@ static int at_xdmac_device_terminate_all(struct dma_chan *chan)
                 * at_xdmac_start_xfer() for this descriptor. Now it's time
                 * to release it.
                 */
-               if (desc->active_xfer) {
-                       pm_runtime_put_autosuspend(atxdmac->dev);
-                       pm_runtime_mark_last_busy(atxdmac->dev);
-               }
+               if (desc->active_xfer)
+                       pm_runtime_put_noidle(atxdmac->dev);
        }
 
        clear_bit(AT_XDMAC_CHAN_IS_PAUSED, &atchan->status);