[AMD Official Use Only - General] Reviewed-by: Evan Quan <evan.quan@xxxxxxx> > -----Original Message----- > From: amd-gfx <amd-gfx-bounces@xxxxxxxxxxxxxxxxxxxxx> On Behalf Of Alex > Deucher > Sent: Tuesday, May 10, 2022 4:04 AM > To: amd-gfx@xxxxxxxxxxxxxxxxxxxxx > Cc: Deucher, Alexander <Alexander.Deucher@xxxxxxx> > Subject: [PATCH] drm/amdgpu/ctx: only reset stable pstate if the user > changed it > > Track whether the user requested a stable pstate via the ctx > IOCTL and only reset the pstate on context destroy if the user > actually changed it. This avoids changing the pstate on contex > destroy if the user never changed it in the first place via the > IOCTL. > > Fixes: 8cda7a4f96e435 ("drm/amdgpu/UAPI: add new CTX OP to get/set > stable pstates") > Signed-off-by: Alex Deucher <alexander.deucher@xxxxxxx> > --- > drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c | 5 ++++- > drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.h | 1 + > 2 files changed, 5 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c > b/drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c > index 5981c7d9bd48..e4b0c6ec227c 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c > @@ -330,6 +330,8 @@ static int amdgpu_ctx_set_stable_pstate(struct > amdgpu_ctx *ctx, > adev->pm.stable_pstate_ctx = NULL; > else > adev->pm.stable_pstate_ctx = ctx; > + > + ctx->stable_pstate_requested = true; > done: > mutex_unlock(&adev->pm.stable_pstate_ctx_lock); > > @@ -353,7 +355,8 @@ static void amdgpu_ctx_fini(struct kref *ref) > } > > if (drm_dev_enter(&adev->ddev, &idx)) { > - amdgpu_ctx_set_stable_pstate(ctx, > AMDGPU_CTX_STABLE_PSTATE_NONE); > + if (ctx->stable_pstate_requested) > + amdgpu_ctx_set_stable_pstate(ctx, > AMDGPU_CTX_STABLE_PSTATE_NONE); > drm_dev_exit(idx); > } > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.h > b/drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.h > index d0cbfcea90f7..f03e842209b8 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.h > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.h > @@ -53,6 +53,7 @@ struct amdgpu_ctx { > unsigned long ras_counter_ce; > unsigned long ras_counter_ue; > uint32_t stable_pstate; > + bool stable_pstate_requested; > }; > > struct amdgpu_ctx_mgr { > -- > 2.35.1