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;