Am 15.05.2018 um 21:42 schrieb Alex Deucher:
> On Tue, May 15, 2018 at 3:31 PM, Andrey Grodzovsky
> <andrey.grodzovsky at amd.com> wrote:
>> Follwoing change 75fbed2 we need to skip KIQ ring when iterating
>> amdgpu_ctx's scheduler entites.
>>>> Signed-off-by: Andrey Grodzovsky <andrey.grodzovsky at amd.com>
> 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 at amd.com>
With the typos fixed Reviewed-by: Christian König
<christian.koenig at amd.com>.
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 at lists.freedesktop.org>>https://lists.freedesktop.org/mailman/listinfo/dri-devel> _______________________________________________
> amd-gfx mailing list
>amd-gfx at lists.freedesktop.org>https://lists.freedesktop.org/mailman/listinfo/amd-gfx