[PATCH 1/2] drm/amdgpu: Skip drm_sched_entity realted ops for KIQ ring.
Alex Deucher
alexdeucher at gmail.com
Tue May 15 19:42:02 UTC 2018
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>
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
More information about the amd-gfx
mailing list