[PATCH v2 04/17] drm/v3d: Simplify job refcount handling

Iago Toral itoral at igalia.com
Mon Nov 27 07:57:23 UTC 2023


El jue, 23-11-2023 a las 21:47 -0300, Maíra Canal escribió:
> From: Melissa Wen <mwen at igalia.com>
> 
> Instead of checking if the job is NULL every time we call the
> function,
> check it inside the function.
> 
> Signed-off-by: Melissa Wen <mwen at igalia.com>
> Signed-off-by: Maíra Canal <mcanal at igalia.com>
> ---
>  drivers/gpu/drm/v3d/v3d_submit.c | 15 ++++++++-------
>  1 file changed, 8 insertions(+), 7 deletions(-)
> 
> diff --git a/drivers/gpu/drm/v3d/v3d_submit.c
> b/drivers/gpu/drm/v3d/v3d_submit.c
> index f36214002f37..e18e7c963884 100644
> --- a/drivers/gpu/drm/v3d/v3d_submit.c
> +++ b/drivers/gpu/drm/v3d/v3d_submit.c
> @@ -129,6 +129,9 @@ void v3d_job_cleanup(struct v3d_job *job)
>  
>  void v3d_job_put(struct v3d_job *job)
>  {
> +       if (!job)
> +               return;
> +
>         kref_put(&job->refcount, job->free);
>  }
>  
> @@ -517,11 +520,9 @@ v3d_submit_cl_ioctl(struct drm_device *dev, void
> *data,
>                                                  &se,
>                                                  last_job-
> >done_fence);
>  
> -       if (bin)
> -               v3d_job_put(&bin->base);
> -       v3d_job_put(&render->base);
> -       if (clean_job)
> -               v3d_job_put(clean_job);
> +       v3d_job_put((void *)bin);
> +       v3d_job_put((void *)render);
> +       v3d_job_put((void *)clean_job);

Personally, I am not a big fan of casting to void* instead of using
&job->base for all the v3d_job_put calls in this patch.

Iago

>  
>         return 0;
>  
> @@ -621,7 +622,7 @@ v3d_submit_tfu_ioctl(struct drm_device *dev, void
> *data,
>                                                  &se,
>                                                  job-
> >base.done_fence);
>  
> -       v3d_job_put(&job->base);
> +       v3d_job_put((void *)job);
>  
>         return 0;
>  
> @@ -725,7 +726,7 @@ v3d_submit_csd_ioctl(struct drm_device *dev, void
> *data,
>                                                  &se,
>                                                  clean_job-
> >done_fence);
>  
> -       v3d_job_put(&job->base);
> +       v3d_job_put((void *)job);
>         v3d_job_put(clean_job);
>  
>         return 0;



More information about the dri-devel mailing list