Re: [PATCH 04/10] drm/ttm: grab BO reference before locking it
From: Thomas Hellström
Date: Tue Jul 07 2026 - 08:13:58 EST
On Fri, 2026-07-03 at 18:31 +0200, Natalie Vock wrote:
> From: Christian König <christian.koenig@xxxxxxx>
>
> Previously we always grabbed the BO reference after taking the lock,
> but
> that isn't necessary any more.
>
> So avoid doing that and cleanup the handling here.
>
> Signed-off-by: Christian König <christian.koenig@xxxxxxx>
> Signed-off-by: Natalie Vock <natalie.vock@xxxxxx>
Reviewed-by: Thomas Hellström <thomas.hellstrom@xxxxxxxxxxxxxxx>
> ---
> drivers/gpu/drm/ttm/ttm_bo_util.c | 15 +++++++++------
> 1 file changed, 9 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/gpu/drm/ttm/ttm_bo_util.c
> b/drivers/gpu/drm/ttm/ttm_bo_util.c
> index 29f068944a972..a53b25e8c2967 100644
> --- a/drivers/gpu/drm/ttm/ttm_bo_util.c
> +++ b/drivers/gpu/drm/ttm/ttm_bo_util.c
> @@ -1010,14 +1010,17 @@ __ttm_bo_lru_cursor_next(struct
> ttm_bo_lru_cursor *curs)
> break;
>
> bo = res->bo;
> - if (ttm_lru_walk_trylock(curs, bo))
> - bo_locked = true;
> - else if (!arg->ticket || arg->ctx->no_wait_gpu ||
> arg->trylock_only)
> + if (!ttm_bo_get_unless_zero(bo))
> continue;
>
> - if (!ttm_bo_get_unless_zero(bo)) {
> - if (curs->needs_unlock)
> - dma_resv_unlock(bo->base.resv);
> + if (ttm_lru_walk_trylock(curs, bo)) {
> + bo_locked = true;
> +
> + } else if (!arg->ticket || arg->ctx->no_wait_gpu ||
> + arg->trylock_only) {
> + spin_unlock(lru_lock);
> + ttm_bo_put(bo);
> + spin_lock(lru_lock);
> continue;
> }
>