[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