On Wed, 2024-07-03 at 15:25 +0200, Christian König wrote:
> Some contended objects might never be locked again in the case of
> eviction
> handling for example.
> 
> Make sure that those doesn't show up in the list of locked objects
> until
> they are explicitely mentioned.

Could you be a bit more specific in the commit message about in what
situations that is bad?

/Thomas



> 
> Signed-off-by: Christian König <christian.koe...@amd.com>
> ---
>  drivers/gpu/drm/drm_exec.c | 18 +++++++++---------
>  1 file changed, 9 insertions(+), 9 deletions(-)
> 
> diff --git a/drivers/gpu/drm/drm_exec.c b/drivers/gpu/drm/drm_exec.c
> index 2da094bdf8a4..220df336fbd9 100644
> --- a/drivers/gpu/drm/drm_exec.c
> +++ b/drivers/gpu/drm/drm_exec.c
> @@ -61,8 +61,11 @@ static void drm_exec_unlock_all(struct drm_exec
> *exec)
>               drm_gem_object_put(obj);
>       }
>  
> -     drm_gem_object_put(exec->prelocked);
> -     exec->prelocked = NULL;
> +     if (exec->prelocked) {
> +             dma_resv_unlock(exec->prelocked->resv);
> +             drm_gem_object_put(exec->prelocked);
> +             exec->prelocked = NULL;
> +     }
>  }
>  
>  /**
> @@ -179,16 +182,9 @@ static int drm_exec_lock_contended(struct
> drm_exec *exec)
>               dma_resv_lock_slow(obj->resv, &exec->ticket);
>       }
>  
> -     ret = drm_exec_obj_locked(exec, obj);
> -     if (unlikely(ret))
> -             goto error_unlock;
> -
>       exec->prelocked = obj;
>       return 0;
>  
> -error_unlock:
> -     dma_resv_unlock(obj->resv);
> -
>  error_dropref:
>       drm_gem_object_put(obj);
>       return ret;
> @@ -214,6 +210,10 @@ int drm_exec_lock_obj(struct drm_exec *exec,
> struct drm_gem_object *obj)
>               return ret;
>  
>       if (exec->prelocked == obj) {
> +             ret = drm_exec_obj_locked(exec, obj);
> +             if (unlikely(ret))
> +                     return ret;
> +
>               drm_gem_object_put(exec->prelocked);
>               exec->prelocked = NULL;
>               return 0;

Reply via email to