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.koenig@xxxxxxx> > --- > 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;