[PATCH 2/6] drm/amdgpu:don't change ctx->reset_couner upon query
Christian König
ckoenig.leichtzumerken at gmail.com
Tue Oct 24 08:00:44 UTC 2017
Am 24.10.2017 um 07:57 schrieb Monk Liu:
> reset_counter marks the reset counter number once the context
> is created, shouldn't be changed due to query.
>
> To keep U/K interface on the ctx_query and keep ctx's reset_counter
> logic compatible with GPU RESET feature, now use another var named
> "reset_counter_query" to replace the original checked & updated in
> amdgpu_ctx_query.
>
> Change-Id: I369e0b5bb8ea1443750ef2ac5b8a021a09fd5782
> Signed-off-by: Monk Liu <Monk.Liu at amd.com>
Nice solution to the problem, patch is Reviewed-by: Christian König
<christian.koenig at amd.com>.
> ---
> drivers/gpu/drm/amd/amdgpu/amdgpu.h | 1 +
> drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c | 5 +++--
> 2 files changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
> index 5646e61..002281d 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
> @@ -740,6 +740,7 @@ struct amdgpu_ctx {
> struct amdgpu_device *adev;
> struct amdgpu_queue_mgr queue_mgr;
> unsigned reset_counter;
> + unsigned reset_counter_query;
> uint32_t vram_lost_counter;
> spinlock_t ring_lock;
> struct dma_fence **fences;
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c
> index 1bf4cdc..c539fb6 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c
> @@ -75,6 +75,7 @@ static int amdgpu_ctx_init(struct amdgpu_device *adev,
> }
>
> ctx->reset_counter = atomic_read(&adev->gpu_reset_counter);
> + ctx->reset_counter_query = ctx->reset_counter;
> ctx->vram_lost_counter = atomic_read(&adev->vram_lost_counter);
> ctx->init_priority = priority;
> ctx->override_priority = AMD_SCHED_PRIORITY_UNSET;
> @@ -216,11 +217,11 @@ static int amdgpu_ctx_query(struct amdgpu_device *adev,
> /* determine if a GPU reset has occured since the last call */
> reset_counter = atomic_read(&adev->gpu_reset_counter);
> /* TODO: this should ideally return NO, GUILTY, or INNOCENT. */
> - if (ctx->reset_counter == reset_counter)
> + if (ctx->reset_counter_query == reset_counter)
> out->state.reset_status = AMDGPU_CTX_NO_RESET;
> else
> out->state.reset_status = AMDGPU_CTX_UNKNOWN_RESET;
> - ctx->reset_counter = reset_counter;
> + ctx->reset_counter_query = reset_counter;
>
> mutex_unlock(&mgr->lock);
> return 0;
More information about the amd-gfx
mailing list