]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
drm/panthor: Fix panthor_pwr_unplug()
authorBoris Brezillon <boris.brezillon@collabora.com>
Thu, 25 Jun 2026 12:40:33 +0000 (14:40 +0200)
committerLiviu Dudau <liviu.dudau@arm.com>
Tue, 30 Jun 2026 14:26:55 +0000 (15:26 +0100)
We can't call panthor_pwr_irq_suspend() if the device is suspended,
or this leads to a hang when the IOMEM region is accessed while the
clks are disabled. Do what other sub-components do and conditionally
call panthor_pwr_irq_suspend() if we know the PWR regbank block is
accessible.

Fixes: c27787f2b77f ("drm/panthor: Introduce panthor_pwr API and power control framework")
Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Liviu Dudau <liviu.dudau@arm.com>
Signed-off-by: Liviu Dudau <liviu.dudau@arm.com>
Link: https://patch.msgid.link/20260625-panthor-misc-fixes-v1-7-b67ed973fea6@collabora.com
drivers/gpu/drm/panthor/panthor_pwr.c

index 7c7f424a1436d102c65b5367ac648c822e00f42d..090362bd700b15158e8709b0ec4ce6f7ae89b04e 100644 (file)
@@ -453,7 +453,8 @@ void panthor_pwr_unplug(struct panthor_device *ptdev)
                return;
 
        /* Make sure the IRQ handler is not running after that point. */
-       panthor_pwr_irq_suspend(&ptdev->pwr->irq);
+       if (!IS_ENABLED(CONFIG_PM) || pm_runtime_active(ptdev->base.dev))
+               panthor_pwr_irq_suspend(&ptdev->pwr->irq);
 
        /* Wake-up all waiters. */
        spin_lock_irqsave(&ptdev->pwr->reqs_lock, flags);