lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Sun, 12 Jan 2020 20:30:01 +0300 From: Dmitry Osipenko <digetx@...il.com> To: Laxman Dewangan <ldewangan@...dia.com>, Vinod Koul <vkoul@...nel.org>, Dan Williams <dan.j.williams@...el.com>, Thierry Reding <thierry.reding@...il.com>, Jonathan Hunter <jonathanh@...dia.com>, Michał Mirosław <mirq-linux@...e.qmqm.pl> Cc: dmaengine@...r.kernel.org, linux-tegra@...r.kernel.org, linux-kernel@...r.kernel.org Subject: [PATCH v4 09/14] dmaengine: tegra-apb: Clean up runtime PM teardown It's cleaner to teardown RPM by revering the enable sequence, which makes code much easier to follow. Signed-off-by: Dmitry Osipenko <digetx@...il.com> --- drivers/dma/tegra20-apb-dma.c | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/drivers/dma/tegra20-apb-dma.c b/drivers/dma/tegra20-apb-dma.c index 7158bd3145c4..cc4a9ca20780 100644 --- a/drivers/dma/tegra20-apb-dma.c +++ b/drivers/dma/tegra20-apb-dma.c @@ -1429,13 +1429,15 @@ static int tegra_dma_probe(struct platform_device *pdev) spin_lock_init(&tdma->global_lock); pm_runtime_enable(&pdev->dev); - if (!pm_runtime_enabled(&pdev->dev)) + if (!pm_runtime_enabled(&pdev->dev)) { ret = tegra_dma_runtime_resume(&pdev->dev); - else + if (ret) + return ret; + } else { ret = pm_runtime_get_sync(&pdev->dev); - - if (ret < 0) - goto err_pm_disable; + if (ret < 0) + goto err_pm_disable; + } /* Reset DMA controller */ reset_control_assert(tdma->rst); @@ -1545,9 +1547,10 @@ static int tegra_dma_probe(struct platform_device *pdev) dma_async_device_unregister(&tdma->dma_dev); err_pm_disable: - pm_runtime_disable(&pdev->dev); - if (!pm_runtime_status_suspended(&pdev->dev)) + if (!pm_runtime_enabled(&pdev->dev)) tegra_dma_runtime_suspend(&pdev->dev); + else + pm_runtime_disable(&pdev->dev); return ret; } @@ -1558,9 +1561,10 @@ static int tegra_dma_remove(struct platform_device *pdev) dma_async_device_unregister(&tdma->dma_dev); - pm_runtime_disable(&pdev->dev); - if (!pm_runtime_status_suspended(&pdev->dev)) + if (!pm_runtime_enabled(&pdev->dev)) tegra_dma_runtime_suspend(&pdev->dev); + else + pm_runtime_disable(&pdev->dev); return 0; } -- 2.24.0
Powered by blists - more mailing lists