[PATCH 01/10] drm/amdgpu: install ctx entities with cmpxchg

Andrey Grodzovsky andrey.grodzovsky at amd.com
Thu Mar 3 19:52:16 UTC 2022


Reviewed-by: Andrey Grodzovsky <andrey.grodzovsky at amd.com>

Andrey

On 2022-03-03 03:22, Christian König wrote:
> Since we removed the context lock we need to make sure that not two threads
> are trying to install an entity at the same time.
>
> Signed-off-by: Christian König <christian.koenig at amd.com>
> Fixes: e68efb27647f ("drm/amdgpu: remove ctx->lock")
> ---
>   drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c | 8 +++++++-
>   1 file changed, 7 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c
> index c1f8b0e37b93..72c5f1c53d6b 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c
> @@ -204,9 +204,15 @@ static int amdgpu_ctx_init_entity(struct amdgpu_ctx *ctx, u32 hw_ip,
>   	if (r)
>   		goto error_free_entity;
>   
> -	ctx->entities[hw_ip][ring] = entity;
> +	/* It's not an error if we fail to install the new entity */
> +	if (cmpxchg(&ctx->entities[hw_ip][ring], NULL, entity))
> +		goto cleanup_entity;
> +
>   	return 0;
>   
> +cleanup_entity:
> +	drm_sched_entity_fini(&entity->entity);
> +
>   error_free_entity:
>   	kfree(entity);
>   


More information about the amd-gfx mailing list