Follwoing change 75fbed2 we need to skip KIQ ring when iterating
amdgpu_ctx's scheduler entites.

Signed-off-by: Andrey Grodzovsky <andrey.grodzov...@amd.com>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c | 21 ++++++++++++++++++---
 1 file changed, 18 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c
index 6741a62..744519b 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c
@@ -173,9 +173,14 @@ static void amdgpu_ctx_do_release(struct kref *ref)
 
        ctx = container_of(ref, struct amdgpu_ctx, refcount);
 
-       for (i = 0; i < ctx->adev->num_rings; i++)
+       for (i = 0; i < ctx->adev->num_rings; i++) {
+
+               if (ctx->adev->rings[i] == &ctx->adev->gfx.kiq.ring)
+                       continue;
+
                drm_sched_entity_fini(&ctx->adev->rings[i]->sched,
                        &ctx->rings[i].entity);
+       }
 
        amdgpu_ctx_fini(ref);
 }
@@ -452,12 +457,17 @@ void amdgpu_ctx_mgr_entity_fini(struct amdgpu_ctx_mgr 
*mgr)
                if (!ctx->adev)
                        return;
 
-               for (i = 0; i < ctx->adev->num_rings; i++)
+               for (i = 0; i < ctx->adev->num_rings; i++) {
+
+                       if (ctx->adev->rings[i] == &ctx->adev->gfx.kiq.ring)
+                               continue;
+
                        if (kref_read(&ctx->refcount) == 1)
                                
drm_sched_entity_do_release(&ctx->adev->rings[i]->sched,
                                                  &ctx->rings[i].entity);
                        else
                                DRM_ERROR("ctx %p is still alive\n", ctx);
+               }
        }
 }
 
@@ -474,12 +484,17 @@ void amdgpu_ctx_mgr_entity_cleanup(struct amdgpu_ctx_mgr 
*mgr)
                if (!ctx->adev)
                        return;
 
-               for (i = 0; i < ctx->adev->num_rings; i++)
+               for (i = 0; i < ctx->adev->num_rings; i++) {
+
+                       if (ctx->adev->rings[i] == &ctx->adev->gfx.kiq.ring)
+                               continue;
+
                        if (kref_read(&ctx->refcount) == 1)
                                
drm_sched_entity_cleanup(&ctx->adev->rings[i]->sched,
                                        &ctx->rings[i].entity);
                        else
                                DRM_ERROR("ctx %p is still alive\n", ctx);
+               }
        }
 }
 
-- 
2.7.4

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

Reply via email to