[PATCH 5/8] drm/etnaviv: avoid runtime PM usage in etnaviv_gpu_bind

Christian Gmeiner christian.gmeiner at gmail.com
Mon Jun 19 13:12:29 UTC 2023


Hi Lucas

>
> Nothing in this callpath actually touches the GPU, so there is no reason
> to get it out of suspend state here. Only if runtime PM isn't enabled at
> all we must make sure to enable the clocks, so the GPU init routine can
> access the GPU later on.
>
> This also removes the need to guard against the state where the driver
> isn't fully initialized yet in the runtime PM resume handler.
>
> Signed-off-by: Lucas Stach <l.stach at pengutronix.de>

Reviewed-by: Christian Gmeiner <cgmeiner at igalia.com>

> ---
>  drivers/gpu/drm/etnaviv/etnaviv_gpu.c | 15 +++++----------
>  1 file changed, 5 insertions(+), 10 deletions(-)
>
> diff --git a/drivers/gpu/drm/etnaviv/etnaviv_gpu.c b/drivers/gpu/drm/etnaviv/etnaviv_gpu.c
> index 57cf77ed2fcf..fb07d0e73802 100644
> --- a/drivers/gpu/drm/etnaviv/etnaviv_gpu.c
> +++ b/drivers/gpu/drm/etnaviv/etnaviv_gpu.c
> @@ -1735,13 +1735,11 @@ static int etnaviv_gpu_bind(struct device *dev, struct device *master,
>         if (ret)
>                 goto out_workqueue;
>
> -       if (IS_ENABLED(CONFIG_PM))
> -               ret = pm_runtime_get_sync(gpu->dev);
> -       else
> +       if (!IS_ENABLED(CONFIG_PM)) {
>                 ret = etnaviv_gpu_clk_enable(gpu);
> -       if (ret < 0)
> -               goto out_sched;
> -
> +               if (ret < 0)
> +                       goto out_sched;
> +       }
>
>         gpu->drm = drm;
>         gpu->fence_context = dma_fence_context_alloc(1);
> @@ -1753,9 +1751,6 @@ static int etnaviv_gpu_bind(struct device *dev, struct device *master,
>
>         priv->gpu[priv->num_gpus++] = gpu;
>
> -       pm_runtime_mark_last_busy(gpu->dev);
> -       pm_runtime_put_autosuspend(gpu->dev);
> -
>         return 0;
>
>  out_sched:
> @@ -1936,7 +1931,7 @@ static int etnaviv_gpu_rpm_resume(struct device *dev)
>                 return ret;
>
>         /* Re-initialise the basic hardware state */
> -       if (gpu->drm && gpu->initialized) {
> +       if (gpu->initialized) {
>                 ret = etnaviv_gpu_hw_resume(gpu);
>                 if (ret) {
>                         etnaviv_gpu_clk_disable(gpu);
> --
> 2.39.2
>


-- 
greets
--
Christian Gmeiner, MSc

https://christian-gmeiner.info/privacypolicy


More information about the dri-devel mailing list