Re: [PATCH 1/2] drm/amdgpu: Skip drm_sched_entity realted ops for KIQ ring.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Am 15.05.2018 um 21:42 schrieb Alex Deucher:
On Tue, May 15, 2018 at 3:31 PM, Andrey Grodzovsky
<andrey.grodzovsky@xxxxxxx> wrote:
Follwoing change 75fbed2 we need to skip KIQ ring when iterating
amdgpu_ctx's scheduler entites.

Signed-off-by: Andrey Grodzovsky <andrey.grodzovsky@xxxxxxx>
Typo in the title: realted -> related
Typo in the description: Follwoing -> Following
Also expand on the reasoning a bit in the patch description.  E.g., we
never initialize or use the GPU scheduler for KIQ.
With those things fixes:
Reviewed-by: Alex Deucher <alexander.deucher@xxxxxxx>

With the typos fixed Reviewed-by: Christian König <christian.koenig@xxxxxxx>.

Christian.


Alex

---
  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

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

_______________________________________________
dri-devel mailing list
dri-devel@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/dri-devel




[Index of Archives]     [Linux DRI Users]     [Linux Intel Graphics]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux