diff options
author | Tony Lindgren <tony@atomide.com> | 2021-05-18 09:43:47 +0200 |
---|---|---|
committer | Vinod Koul <vkoul@kernel.org> | 2021-05-31 06:31:53 +0200 |
commit | 340ad031887b89af4467ee078e22d24aad0d8401 (patch) | |
tree | cf4137726b4d2d38ee333156ae346d1a91271447 /drivers | |
parent | dmaengine: hsu: Account transferred bytes (diff) | |
download | linux-340ad031887b89af4467ee078e22d24aad0d8401.tar.xz linux-340ad031887b89af4467ee078e22d24aad0d8401.zip |
dmaengine: ti: omap-dma: Skip pointless cpu_pm context restore on errors
There's no need to restore DMA context on CPU_CLUSTER_PM_ENTER_FAILED as
the DMA context won't be lost on errors.
Note that this does not cause invalid context restore as we already check
for busy DMA with omap_dma_busy() in CPU_CLUSTER_PM_ENTER, and block any
deeper idle states for the SoC by returning NOTIFY_BAD if busy.
If other drivers block deeper idle states with cpu_pm, we now just do a
pointless restore, but only if dma was not busy on CPU_CLUSTER_PM_ENTER.
Let's update the CPU_CLUSTER_PM_ENTER_FAILED handling for correctness,
and add a comment.
Cc: Aaro Koskinen <aaro.koskinen@iki.fi>
Cc: Adam Ford <aford173@gmail.com>
Cc: Andreas Kemnade <andreas@kemnade.info>
Cc: Peter Ujfalusi <peter.ujfalusi@gmail.com>
Signed-off-by: Tony Lindgren <tony@atomide.com>
Acked-by: Peter Ujfalusi <peter.ujfalusi@gmail.com>
Link: https://lore.kernel.org/r/20210518074347.16908-1-tony@atomide.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/dma/ti/omap-dma.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/dma/ti/omap-dma.c b/drivers/dma/ti/omap-dma.c index 268a08058714..7cb577e6587b 100644 --- a/drivers/dma/ti/omap-dma.c +++ b/drivers/dma/ti/omap-dma.c @@ -1608,7 +1608,8 @@ static int omap_dma_context_notifier(struct notifier_block *nb, return NOTIFY_BAD; omap_dma_context_save(od); break; - case CPU_CLUSTER_PM_ENTER_FAILED: + case CPU_CLUSTER_PM_ENTER_FAILED: /* No need to restore context */ + break; case CPU_CLUSTER_PM_EXIT: omap_dma_context_restore(od); break; |