[PATCH] drm/amdgpu: only lock the valid list of invalidated bo

Christian König ckoenig.leichtzumerken at gmail.com
Thu Mar 27 14:24:34 UTC 2025



Am 27.03.25 um 10:27 schrieb Prike Liang:
> Before locking and traversing the user queue invalidated BO list,
> it requires ensuring the VM done list is available.

No it doesn't. This patch here is just a no-op.

list_for_each_entry() works perfectly fine on empty lists.

Regards,
Christian.

>
> Signed-off-by: Prike Liang <Prike.Liang at amd.com>
> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu_userqueue.c | 20 ++++++++++---------
>  1 file changed, 11 insertions(+), 9 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_userqueue.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_userqueue.c
> index ecd49cf15b2a..cb6b89da73c4 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_userqueue.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_userqueue.c
> @@ -479,15 +479,17 @@ amdgpu_userqueue_validate_bos(struct amdgpu_userq_mgr *uq_mgr)
>  		}
>  
>  		/* Lock the done list */
> -		list_for_each_entry(bo_va, &vm->done, base.vm_status) {
> -			bo = bo_va->base.bo;
> -			if (!bo)
> -				continue;
> -
> -			ret = drm_exec_lock_obj(&exec, &bo->tbo.base);
> -			drm_exec_retry_on_contention(&exec);
> -			if (unlikely(ret))
> -				goto unlock_all;
> +		if (!list_empty(&vm->done)) {
> +			list_for_each_entry(bo_va, &vm->done, base.vm_status) {
> +				bo = bo_va->base.bo;
> +				if (!bo)
> +					continue;
> +
> +				ret = drm_exec_lock_obj(&exec, &bo->tbo.base);
> +				drm_exec_retry_on_contention(&exec);
> +				if (unlikely(ret))
> +					goto unlock_all;
> +			}
>  		}
>  	}
>  



More information about the amd-gfx mailing list