[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