[PATCH v2 1/8] drm/panfrost: Fix possible suspend in panfrost_remove
Steven Price
steven.price at arm.com
Fri Aug 23 14:50:51 UTC 2019
On 23/08/2019 03:12, Rob Herring wrote:
> Calls to panfrost_device_fini() access the h/w, but we already done a
> pm_runtime_put_sync_autosuspend() beforehand. This only works if the
> autosuspend delay is long enough. A 0ms delay will hang the system when
> removing the device. Fix this by moving the pm_runtime_put_sync_suspend()
> after the panfrost_device_fini() call.
>
> Cc: Tomeu Vizoso <tomeu.vizoso at collabora.com>
> Cc: Steven Price <steven.price at arm.com>
> Cc: Alyssa Rosenzweig <alyssa.rosenzweig at collabora.com>
> Cc: David Airlie <airlied at linux.ie>
> Cc: Daniel Vetter <daniel at ffwll.ch>
> Signed-off-by: Rob Herring <robh at kernel.org>
Reviewed-by: Steven Price <steven.price at arm.com>
> ---
> v2: new patch
>
> drivers/gpu/drm/panfrost/panfrost_drv.c | 6 ++++--
> 1 file changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/panfrost/panfrost_drv.c b/drivers/gpu/drm/panfrost/panfrost_drv.c
> index 44a558c6e17e..d74442d71048 100644
> --- a/drivers/gpu/drm/panfrost/panfrost_drv.c
> +++ b/drivers/gpu/drm/panfrost/panfrost_drv.c
> @@ -570,11 +570,13 @@ static int panfrost_remove(struct platform_device *pdev)
>
> drm_dev_unregister(ddev);
> panfrost_gem_shrinker_cleanup(ddev);
> +
> pm_runtime_get_sync(pfdev->dev);
> - pm_runtime_put_sync_autosuspend(pfdev->dev);
> - pm_runtime_disable(pfdev->dev);
> panfrost_devfreq_fini(pfdev);
> panfrost_device_fini(pfdev);
> + pm_runtime_put_sync_suspend(pfdev->dev);
> + pm_runtime_disable(pfdev->dev);
> +
> drm_dev_put(ddev);
> return 0;
> }
>
More information about the dri-devel
mailing list