| From foo@baz Thu Oct 18 11:08:35 CEST 2018 |
| From: Heiko Stuebner <heiko@sntech.de> |
| Date: Mon, 27 Aug 2018 12:56:24 +0200 |
| Subject: iommu/rockchip: Free irqs in shutdown handler |
| |
| From: Heiko Stuebner <heiko@sntech.de> |
| |
| [ Upstream commit 74bc2abca7603c956d1e331e8b9bee7b874c1eec ] |
| |
| In the iommu's shutdown handler we disable runtime-pm which could |
| result in the irq-handler running unclocked and since commit |
| 3fc7c5c0cff3 ("iommu/rockchip: Handle errors returned from PM framework") |
| we warn about that fact. |
| |
| This can cause warnings on shutdown on some Rockchip machines, so |
| free the irqs in the shutdown handler before we disable runtime-pm. |
| |
| Reported-by: Enric Balletbo i Serra <enric.balletbo@collabora.com> |
| Fixes: 3fc7c5c0cff3 ("iommu/rockchip: Handle errors returned from PM framework") |
| Signed-off-by: Heiko Stuebner <heiko@sntech.de> |
| Tested-by: Enric Balletbo i Serra <enric.balletbo@collabora.com> |
| Acked-by: Marc Zyngier <marc.zyngier@arm.com> |
| Signed-off-by: Joerg Roedel <jroedel@suse.de> |
| Signed-off-by: Sasha Levin <alexander.levin@microsoft.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| drivers/iommu/rockchip-iommu.c | 6 ++++++ |
| 1 file changed, 6 insertions(+) |
| |
| --- a/drivers/iommu/rockchip-iommu.c |
| +++ b/drivers/iommu/rockchip-iommu.c |
| @@ -1242,6 +1242,12 @@ err_unprepare_clocks: |
| |
| static void rk_iommu_shutdown(struct platform_device *pdev) |
| { |
| + struct rk_iommu *iommu = platform_get_drvdata(pdev); |
| + int i = 0, irq; |
| + |
| + while ((irq = platform_get_irq(pdev, i++)) != -ENXIO) |
| + devm_free_irq(iommu->dev, irq, iommu); |
| + |
| pm_runtime_force_suspend(&pdev->dev); |
| } |
| |