Reviewed-by: Andrey Grodzovsky <andrey.grodzov...@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.koe...@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);

Reply via email to