Am 11.09.2018 um 17:06 schrieb James Zhu: > > > > On 2018-09-11 10:44 AM, Alex Deucher wrote: >> On Mon, Sep 10, 2018 at 4:34 PM James Zhu<jzhums at gmail.com> wrote: >>> Signed-off-by: James Zhu<James.Zhu at amd.com> >>> >>> When VCN PG state is unchanged, it is unnecessary to reset >>> power gate state again. >> Don't you need to initialize and store the PG state somewhere? You >> are just using a local variable here. >> >> Alex >> > Hi Alex, > > I used */static/* for this local state variable(*cur_state*) with > initialization state AMD_PG_STATE_GATE. That won't work correctly. A "static" variable is global, but the power state is per device. Regards, Christian. > this variable's scope is only inside this function, but it's > initialization is done > once at compile time and it's lifetime will last until the driver exit. > > Since it is only used inside this function, I didn't put it into > struct amdgpu_vcn. > > Best Regards! > James Zhu >>> --- >>> drivers/gpu/drm/amd/amdgpu/vcn_v1_0.c | 13 +++++++++++-- >>> 1 file changed, 11 insertions(+), 2 deletions(-) >>> >>> diff --git a/drivers/gpu/drm/amd/amdgpu/vcn_v1_0.c b/drivers/gpu/drm/amd/amdgpu/vcn_v1_0.c >>> index 2664bb2..86d98d2 100644 >>> --- a/drivers/gpu/drm/amd/amdgpu/vcn_v1_0.c >>> +++ b/drivers/gpu/drm/amd/amdgpu/vcn_v1_0.c >>> @@ -1633,12 +1633,21 @@ static int vcn_v1_0_set_powergating_state(void *handle, >>> * revisit this when there is a cleaner line between >>> * the smc and the hw blocks >>> */ >>> + int ret; >>> + static enum amd_powergating_state cur_state = AMD_PG_STATE_GATE; >>> struct amdgpu_device *adev = (struct amdgpu_device *)handle; >>> >>> + if (state == cur_state) >>> + return 0; >>> + >>> if (state == AMD_PG_STATE_GATE) >>> - return vcn_v1_0_stop(adev); >>> + ret = vcn_v1_0_stop(adev); >>> else >>> - return vcn_v1_0_start(adev); >>> + ret = vcn_v1_0_start(adev); >>> + >>> + if (!ret) >>> + cur_state = state; >>> + return ret; >>> } >>> >>> static const struct amd_ip_funcs vcn_v1_0_ip_funcs = { >>> -- >>> 2.7.4 >>> >>> _______________________________________________ >>> amd-gfx mailing list >>> amd-gfx at lists.freedesktop.org >>> https://lists.freedesktop.org/mailman/listinfo/amd-gfx > > > > _______________________________________________ > amd-gfx mailing list > amd-gfx at lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/amd-gfx -------------- next part -------------- An HTML attachment was scrubbed... URL: <https://lists.freedesktop.org/archives/amd-gfx/attachments/20180911/fb741696/attachment.html>