Re: [PATCH] drm/panfrost: fix autosuspend cleanup during teardown
Guangshuo Li <[email protected]>
| Newsgroups | org.freedesktop.lists.dri-devel,org.kernel.vger.linux-kernel,org.kernel.vger.stable |
|---|---|
| Message-ID | <CANUHTR9Xneqaa7FvdKmwuBfKiBuj2nE+nOXOxuR_cJYjExiemQ@mail.gmail.com> |
Hi Adrian, On Wed, 12 Aug 2026 at 22:35, Adrián Larumbe <[email protected]> wrote: > > Hi Guangshuo, > > Recently I've been working on a patch series that addresses PM refcnt imbalances in Panfrost. > One of the fixes introduces devm_pm_runtime_enable(), so manually calling pm_runtime_dont_use_autosuspend() > is no longer necessary like you mentioned in the commit message. > > However, there might be a point in using it during device teardown and probe error just like Panthor does, > becasue it doesn't make sense to postpone suspension when the device is going away. > > Anyway, you can have a look at it here: > https://lore.kernel.org/r/[email protected] > > I was thinking, I'll let you know when I've v6 ready and then you could rebase this patch onto it > before I submit the series to the ML so that I can send them all together? > > Kind Regards, > Adrian > > On 08.08.2026 21:50, Guangshuo Li wrote: > > panfrost_probe() calls pm_runtime_use_autosuspend(), but neither the > > probe error path nor panfrost_remove() calls the matching > > pm_runtime_dont_use_autosuspend() during teardown. > > > > If the autosuspend delay is set to a negative value while autosuspend > > is enabled, the runtime PM core increments usage_count to prevent > > runtime suspend. Without calling pm_runtime_dont_use_autosuspend() > > during teardown, this reference is not dropped. > > > > The documentation for pm_runtime_use_autosuspend() also notes that it > > is important to undo it with pm_runtime_dont_use_autosuspend() at > > driver exit time, unless runtime PM was initially enabled with > > devm_pm_runtime_enable(). > > > > Add the missing pm_runtime_dont_use_autosuspend() calls to both the > > probe failure and device removal paths. > > > > This issue was found by manual code inspection. > > > > Fixes: f3ba91228e8e ("drm/panfrost: Add initial panfrost driver") > > Cc: [email protected] > > Signed-off-by: Guangshuo Li <[email protected]> > > --- > > drivers/gpu/drm/panfrost/panfrost_drv.c | 2 ++ > > 1 file changed, 2 insertions(+) > > > > diff --git a/drivers/gpu/drm/panfrost/panfrost_drv.c b/drivers/gpu/drm/panfrost/panfrost_drv.c > > index 784e36d72c2b..007dcba62e62 100644 > > --- a/drivers/gpu/drm/panfrost/panfrost_drv.c > > +++ b/drivers/gpu/drm/panfrost/panfrost_drv.c > > @@ -1011,6 +1011,7 @@ static int panfrost_probe(struct platform_device *pdev) > > err_out2: > > drm_dev_unregister(&pfdev->base); > > err_out1: > > + pm_runtime_dont_use_autosuspend(pfdev->base.dev); > > pm_runtime_disable(pfdev->base.dev); > > panfrost_device_fini(pfdev); > > pm_runtime_set_suspended(pfdev->base.dev); > > @@ -1025,6 +1026,7 @@ static void panfrost_remove(struct platform_device *pdev) > > drm_dev_unregister(&pfdev->base); > > panfrost_gem_shrinker_cleanup(&pfdev->base); > > > > + pm_runtime_dont_use_autosuspend(pfdev->base.dev); > > pm_runtime_get_sync(pfdev->base.dev); > > pm_runtime_disable(pfdev->base.dev); > > panfrost_device_fini(pfdev); > > -- > > 2.43.0 > > Adrian Larumbe Sure, I’d be glad to do that. Please let me know when v6 is ready, and I’ll rebase my patch on top of it. Best regards, Guangshuo