<div dir="auto"><div dir="auto">Hi Kenneth,</div><div dir="auto"><br></div><div>I understand that changing voltage 'standalone' is not a good idea. In that case, would it be possible to change the voltage table so that it would give a lower clock on certain voltage?</div><div dir="auto"><br></div><div dir="auto">For example, I would like to change</div><div dir="auto"><br></div><div dir="auto">sclk 900, vddc: 1050</div><div dir="auto"><br></div><div dir="auto">to</div><div dir="auto"><br></div><div dir="auto">sclk 800, vddc: 1050</div><div dir="auto"><br></div><div dir="auto">Thanks</div><div dir="auto"><br><div class="gmail_quote" dir="auto"><div dir="ltr" class="gmail_attr">On Mon, Aug 23, 2021, 14:59  <<a href="mailto:amd-gfx-request@lists.freedesktop.org">amd-gfx-request@lists.freedesktop.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Send amd-gfx mailing list submissions to<br>
        <a href="mailto:amd-gfx@lists.freedesktop.org" target="_blank" rel="noreferrer">amd-gfx@lists.freedesktop.org</a><br>
<br>
To subscribe or unsubscribe via the World Wide Web, visit<br>
        <a href="https://lists.freedesktop.org/mailman/listinfo/amd-gfx" rel="noreferrer noreferrer" target="_blank">https://lists.freedesktop.org/mailman/listinfo/amd-gfx</a><br>
or, via email, send a message with subject or body 'help' to<br>
        <a href="mailto:amd-gfx-request@lists.freedesktop.org" target="_blank" rel="noreferrer">amd-gfx-request@lists.freedesktop.org</a><br>
<br>
You can reach the person managing the list at<br>
        <a href="mailto:amd-gfx-owner@lists.freedesktop.org" target="_blank" rel="noreferrer">amd-gfx-owner@lists.freedesktop.org</a><br>
<br>
When replying, please edit your Subject line so it is more specific<br>
than "Re: Contents of amd-gfx digest..."<br>
<br>
<br>
Today's Topics:<br>
<br>
   1. RE: Voltage control on Southern Island GPU using radeon<br>
      driver (Feng, Kenneth)<br>
   2. RE: [PATCH] drm/amdgpu: add missing cleanups for Polaris12<br>
      UVD/VCE on suspend (Quan, Evan)<br>
<br>
<br>
----------------------------------------------------------------------<br>
<br>
Message: 1<br>
Date: Mon, 23 Aug 2021 07:11:10 +0000<br>
From: "Feng, Kenneth" <<a href="mailto:Kenneth.Feng@amd.com" target="_blank" rel="noreferrer">Kenneth.Feng@amd.com</a>><br>
To: "Koenig, Christian" <<a href="mailto:Christian.Koenig@amd.com" target="_blank" rel="noreferrer">Christian.Koenig@amd.com</a>>, Evans Jahja<br>
        <<a href="mailto:evansjahja13@gmail.com" target="_blank" rel="noreferrer">evansjahja13@gmail.com</a>>, "<a href="mailto:amd-gfx@lists.freedesktop.org" target="_blank" rel="noreferrer">amd-gfx@lists.freedesktop.org</a>"<br>
        <<a href="mailto:amd-gfx@lists.freedesktop.org" target="_blank" rel="noreferrer">amd-gfx@lists.freedesktop.org</a>><br>
Subject: RE: Voltage control on Southern Island GPU using radeon<br>
        driver<br>
Message-ID:<br>
        <<a href="mailto:BY5PR12MB55607F9193F1A315210D1B838EC49@BY5PR12MB5560.namprd12.prod.outlook.com" target="_blank" rel="noreferrer">BY5PR12MB55607F9193F1A315210D1B838EC49@BY5PR12MB5560.namprd12.prod.outlook.com</a>><br>
<br>
Content-Type: text/plain; charset="utf-8"<br>
<br>
[AMD Official Use Only]<br>
<br>
Hi Evans<br>
I'm sorry but I don't suggest you manually control the standalone voltage because it's predefined with the clock value.<br>
A decrease of voltage could hit the hardware critical path. You may need to change the clock and voltage together, we call it dpm level change.<br>
Thanks.<br>
<br>
<br>
-----Original Message-----<br>
From: amd-gfx <<a href="mailto:amd-gfx-bounces@lists.freedesktop.org" target="_blank" rel="noreferrer">amd-gfx-bounces@lists.freedesktop.org</a>> On Behalf Of Christian K?nig<br>
Sent: Monday, August 23, 2021 2:26 PM<br>
To: Evans Jahja <<a href="mailto:evansjahja13@gmail.com" target="_blank" rel="noreferrer">evansjahja13@gmail.com</a>>; <a href="mailto:amd-gfx@lists.freedesktop.org" target="_blank" rel="noreferrer">amd-gfx@lists.freedesktop.org</a><br>
Subject: Re: Voltage control on Southern Island GPU using radeon driver<br>
<br>
[CAUTION: External Email]<br>
<br>
Hi Evans,<br>
<br>
in general the voltage tables are stored in the atombios and the best advice I can give you is to first double check if there isn't an updated BIOS for your hardware.<br>
<br>
But Alex is the expert on power management, especially for those older hardware generations. Maybe he has another idea what to try.<br>
<br>
Regards,<br>
Christian.<br>
<br>
Am 23.08.21 um 03:56 schrieb Evans Jahja:<br>
> Hi, I have a HAINAN GPU below:<br>
><br>
> lspci -nn<br>
> 0a:00.0 Display controller [0380]: Advanced Micro Devices, Inc.<br>
> [AMD/ATI] Sun LE [Radeon HD 8550M / R5 M230] [1002:666f]<br>
><br>
> I run linux 5.13.12 on Arch on a Lenovo B40-70 laptop.<br>
><br>
> I'm trying to understand more on how voltage control works and how I <br>
> can modify the voltage for doing overvoltage / undervoltage on my GPU.<br>
> The reason is I am observing how running programs under high GPU load<br>
> (glmark2) would lead to crashes when I use dpm=1 in either radeon or <br>
> amdgpu driver, which seems to happen when I am reaching power level 4 <br>
> (sclk 900MHz), while a lighter program like glxgears could run and <br>
> switch power levels  between 0,1,2 without issue under both drivers. I <br>
> believe my laptop might be faulty, but I would like to take this <br>
> opportunity to try fixing it from the driver's side so that it can run <br>
> anyway, however limited.<br>
><br>
> Right now, I have managed to increase the performance of my GPU by <br>
> manually overwriting the sclk to 630MHz in all performance_levels in <br>
> radeon_pm.c, which surprises me as overriding the clock was not <br>
> possible for me to do previously via sysfs.<br>
><br>
> I've managed to tweak both sclk and mclk (or so I believe), but I <br>
> still cannot tweak the voltage (vddc). The reason is, if I increase <br>
> the sclk to 650MHz, the lockup will happen again. Changing the<br>
> pl->vddc  variable does not seem to do anything. After various tracing<br>
> with printk, I understand that on my system:<br>
><br>
> pi->voltage_control = radeon_atom_is_voltage_gpio(rdev,<br>
> SET_VOLTAGE_TYPE_ASIC_VDDC,<br>
>    VOLTAGE_OBJ_GPIO_LUT)<br>
><br>
> this returns false, while:<br>
><br>
> si_pi->voltage_control_svi2 =<br>
> radeon_atom_is_voltage_gpio(rdev, SET_VOLTAGE_TYPE_ASIC_VDDC,<br>
>    VOLTAGE_OBJ_SVID2);<br>
><br>
> This returns true, so I believe my system is using SVI2 somehow to set <br>
> the voltage. Having no experience with SVI2, I read online and found <br>
> out that SVI2 is a voltage regulator that uses Data / Clock pins to <br>
> clock-in 8 bits of information and convert it to some voltage value <br>
> between OFF, 0.5V -> 1.5V, offering fine control based on some look up <br>
> table.<br>
><br>
> My questions are as follows:<br>
> Is it possible for me to modify my system so that I can manually <br>
> adjust the voltage to my GPU?<br>
><br>
> Thank you very much in advance. This is the first time I deal with <br>
> kernel drivers, so any guidance on the matter helps a lot.<br>
><br>
> - Evans<br>
><br>
><br>
<br>
------------------------------<br>
<br>
Message: 2<br>
Date: Mon, 23 Aug 2021 07:59:36 +0000<br>
From: "Quan, Evan" <<a href="mailto:Evan.Quan@amd.com" target="_blank" rel="noreferrer">Evan.Quan@amd.com</a>><br>
To: Alex Deucher <<a href="mailto:alexdeucher@gmail.com" target="_blank" rel="noreferrer">alexdeucher@gmail.com</a>><br>
Cc: "Lazar, Lijo" <<a href="mailto:Lijo.Lazar@amd.com" target="_blank" rel="noreferrer">Lijo.Lazar@amd.com</a>>, "Zhu, James"<br>
        <<a href="mailto:James.Zhu@amd.com" target="_blank" rel="noreferrer">James.Zhu@amd.com</a>>, "<a href="mailto:amd-gfx@lists.freedesktop.org" target="_blank" rel="noreferrer">amd-gfx@lists.freedesktop.org</a>"<br>
        <<a href="mailto:amd-gfx@lists.freedesktop.org" target="_blank" rel="noreferrer">amd-gfx@lists.freedesktop.org</a>>, "Liu, Leo" <<a href="mailto:Leo.Liu@amd.com" target="_blank" rel="noreferrer">Leo.Liu@amd.com</a>>,<br>
        "Deucher, Alexander" <<a href="mailto:Alexander.Deucher@amd.com" target="_blank" rel="noreferrer">Alexander.Deucher@amd.com</a>>, "Chen, Guchun"<br>
        <<a href="mailto:Guchun.Chen@amd.com" target="_blank" rel="noreferrer">Guchun.Chen@amd.com</a>>, "Pan, Xinhui" <<a href="mailto:Xinhui.Pan@amd.com" target="_blank" rel="noreferrer">Xinhui.Pan@amd.com</a>><br>
Subject: RE: [PATCH] drm/amdgpu: add missing cleanups for Polaris12<br>
        UVD/VCE on suspend<br>
Message-ID:<br>
        <<a href="mailto:DM6PR12MB261946019274A3F1B5C09995E4C49@DM6PR12MB2619.namprd12.prod.outlook.com" target="_blank" rel="noreferrer">DM6PR12MB261946019274A3F1B5C09995E4C49@DM6PR12MB2619.namprd12.prod.outlook.com</a>><br>
<br>
Content-Type: text/plain; charset="utf-8"<br>
<br>
[AMD Official Use Only]<br>
<br>
<br>
<br>
> -----Original Message-----<br>
> From: Alex Deucher <<a href="mailto:alexdeucher@gmail.com" target="_blank" rel="noreferrer">alexdeucher@gmail.com</a>><br>
> Sent: Friday, August 20, 2021 10:23 PM<br>
> To: Quan, Evan <<a href="mailto:Evan.Quan@amd.com" target="_blank" rel="noreferrer">Evan.Quan@amd.com</a>><br>
> Cc: Lazar, Lijo <<a href="mailto:Lijo.Lazar@amd.com" target="_blank" rel="noreferrer">Lijo.Lazar@amd.com</a>>; Zhu, James <<a href="mailto:James.Zhu@amd.com" target="_blank" rel="noreferrer">James.Zhu@amd.com</a>>;<br>
> <a href="mailto:amd-gfx@lists.freedesktop.org" target="_blank" rel="noreferrer">amd-gfx@lists.freedesktop.org</a>; Liu, Leo <<a href="mailto:Leo.Liu@amd.com" target="_blank" rel="noreferrer">Leo.Liu@amd.com</a>>; Deucher,<br>
> Alexander <<a href="mailto:Alexander.Deucher@amd.com" target="_blank" rel="noreferrer">Alexander.Deucher@amd.com</a>>; Chen, Guchun<br>
> <<a href="mailto:Guchun.Chen@amd.com" target="_blank" rel="noreferrer">Guchun.Chen@amd.com</a>>; Pan, Xinhui <<a href="mailto:Xinhui.Pan@amd.com" target="_blank" rel="noreferrer">Xinhui.Pan@amd.com</a>><br>
> Subject: Re: [PATCH] drm/amdgpu: add missing cleanups for Polaris12<br>
> UVD/VCE on suspend<br>
> <br>
> On Thu, Aug 19, 2021 at 10:15 PM Quan, Evan <<a href="mailto:Evan.Quan@amd.com" target="_blank" rel="noreferrer">Evan.Quan@amd.com</a>> wrote:<br>
> ><br>
> > [AMD Official Use Only]<br>
> ><br>
> ><br>
> ><br>
> ><br>
> ><br>
> ><br>
> ><br>
> > From: Lazar, Lijo <<a href="mailto:Lijo.Lazar@amd.com" target="_blank" rel="noreferrer">Lijo.Lazar@amd.com</a>><br>
> > Sent: Thursday, August 19, 2021 10:36 PM<br>
> > To: Zhu, James <<a href="mailto:James.Zhu@amd.com" target="_blank" rel="noreferrer">James.Zhu@amd.com</a>>; Quan, Evan<br>
> <<a href="mailto:Evan.Quan@amd.com" target="_blank" rel="noreferrer">Evan.Quan@amd.com</a>>;<br>
> > <a href="mailto:amd-gfx@lists.freedesktop.org" target="_blank" rel="noreferrer">amd-gfx@lists.freedesktop.org</a><br>
> > Cc: Deucher, Alexander <<a href="mailto:Alexander.Deucher@amd.com" target="_blank" rel="noreferrer">Alexander.Deucher@amd.com</a>>; Chen, Guchun<br>
> > <<a href="mailto:Guchun.Chen@amd.com" target="_blank" rel="noreferrer">Guchun.Chen@amd.com</a>>; Pan, Xinhui <<a href="mailto:Xinhui.Pan@amd.com" target="_blank" rel="noreferrer">Xinhui.Pan@amd.com</a>><br>
> > Subject: RE: [PATCH] drm/amdgpu: add missing cleanups for Polaris12<br>
> > UVD/VCE on suspend<br>
> ><br>
> ><br>
> ><br>
> > [AMD Official Use Only]<br>
> ><br>
> ><br>
> ><br>
> > If that is done  ?<br>
> ><br>
> ><br>
> ><br>
> > +               amdgpu_device_ip_set_powergating_state(adev,<br>
> AMD_IP_BLOCK_TYPE_UVD,<br>
> > +                                                      AMD_PG_STATE_GATE);<br>
> > +               amdgpu_device_ip_set_clockgating_state(adev,<br>
> AMD_IP_BLOCK_TYPE_UVD,<br>
> > +<br>
> > + AMD_CG_STATE_GATE);<br>
> ><br>
> ><br>
> ><br>
> > Usual order is CG followed by PG. It comes in the else part, so less likely to<br>
> happen. Nice to fix for code correctness purpose.<br>
> ><br>
> > [Quan, Evan] Thanks Lijo. Make sense to me. However, actually these code<br>
> were copied from amdgpu_uvd_idle_work_handler() of amdgpu_uvd.c.<br>
> Same logic was used there. So, maybe @Zhu, James or @Liu, Leo can share<br>
> some insights about this.<br>
> ><br>
> <br>
> It looks like it is wrong there as well.  We should be gating the clocks before<br>
> the power.  The order is also wrong in amdgpu_uvd_ring_begin_use().  We<br>
> need to ungate the power before the clocks<br>
[Quan, Evan] I created a patch for this. But during the verification, I got the errors below<br>
[   87.420822] [drm:uvd_v6_0_start [amdgpu]] *ERROR* UVD not responding, trying to reset the VCPU!!!<br>
[   88.443029] [drm:uvd_v6_0_start [amdgpu]] *ERROR* UVD not responding, trying to reset the VCPU!!!<br>
[   89.465386] [drm:uvd_v6_0_start [amdgpu]] *ERROR* UVD not responding, trying to reset the VCPU!!!<br>
[   90.487629] [drm:uvd_v6_0_start [amdgpu]] *ERROR* UVD not responding, trying to reset the VCPU!!!<br>
[   91.510380] [drm:uvd_v6_0_start [amdgpu]] *ERROR* UVD not responding, trying to reset the VCPU!!!<br>
[   92.533782] [drm:uvd_v6_0_start [amdgpu]] *ERROR* UVD not responding, trying to reset the VCPU!!!<br>
[   93.557400] [drm:uvd_v6_0_start [amdgpu]] *ERROR* UVD not responding, trying to reset the VCPU!!!<br>
[   94.580708] [drm:uvd_v6_0_start [amdgpu]] *ERROR* UVD not responding, trying to reset the VCPU!!!<br>
[   95.603832] [drm:uvd_v6_0_start [amdgpu]] *ERROR* UVD not responding, trying to reset the VCPU!!!<br>
[   96.627727] [drm:uvd_v6_0_start [amdgpu]] *ERROR* UVD not responding, trying to reset the VCPU!!!<br>
[   96.657453] [drm:uvd_v6_0_start [amdgpu]] *ERROR* UVD not responding, giving up!!!<br>
[   96.665892] [drm:amdgpu_device_ip_set_powergating_state [amdgpu]] *ERROR* set_powergating_state of IP block <uvd_v6_0> failed -1<br>
[   97.697422] amdgpu 0000:02:00.0: [drm:amdgpu_ib_ring_tests [amdgpu]] *ERROR* IB test failed on uvd (-110).<br>
[   98.721432] amdgpu 0000:02:00.0: [drm:amdgpu_ib_ring_tests [amdgpu]] *ERROR* IB test failed on uvd_enc0 (-110).<br>
[   99.745407] amdgpu 0000:02:00.0: [drm:amdgpu_ib_ring_tests [amdgpu]] *ERROR* IB test failed on uvd_enc1 (-110).<br>
[   99.857784] [drm:amdgpu_device_delayed_init_work_handler [amdgpu]] *ERROR* ib ring test failed (-110).<br>
<br>
After checking the related source code roughly. It seems the underlaying implementation of -> set_powergating_state(e.g.  uvd_v6_0_set_powergating_state ) performs more jobs than just power gating. And I guess maybe some of those jobs needs to be performed after -> set_clockgating_state. James and Leo may comment more.<br>
<br>
BR<br>
Evan<br>
> <br>
> Alex<br>
> <br>
> <br>
> ><br>
> ><br>
> > BR<br>
> ><br>
> > Evan<br>
> ><br>
> ><br>
> ><br>
> > Thanks,<br>
> ><br>
> > Lijo<br>
> ><br>
> ><br>
> ><br>
> > From: Zhu, James <<a href="mailto:James.Zhu@amd.com" target="_blank" rel="noreferrer">James.Zhu@amd.com</a>><br>
> > Sent: Thursday, August 19, 2021 7:49 PM<br>
> > To: Quan, Evan <<a href="mailto:Evan.Quan@amd.com" target="_blank" rel="noreferrer">Evan.Quan@amd.com</a>>; <a href="mailto:amd-gfx@lists.freedesktop.org" target="_blank" rel="noreferrer">amd-gfx@lists.freedesktop.org</a><br>
> > Cc: Deucher, Alexander <<a href="mailto:Alexander.Deucher@amd.com" target="_blank" rel="noreferrer">Alexander.Deucher@amd.com</a>>; Chen, Guchun<br>
> > <<a href="mailto:Guchun.Chen@amd.com" target="_blank" rel="noreferrer">Guchun.Chen@amd.com</a>>; Lazar, Lijo <<a href="mailto:Lijo.Lazar@amd.com" target="_blank" rel="noreferrer">Lijo.Lazar@amd.com</a>>; Pan, Xinhui<br>
> > <<a href="mailto:Xinhui.Pan@amd.com" target="_blank" rel="noreferrer">Xinhui.Pan@amd.com</a>><br>
> > Subject: Re: [PATCH] drm/amdgpu: add missing cleanups for Polaris12<br>
> > UVD/VCE on suspend<br>
> ><br>
> ><br>
> ><br>
> > [AMD Official Use Only]<br>
> ><br>
> ><br>
> ><br>
> ><br>
> ><br>
> > Why not move changes into hw_fini?<br>
> ><br>
> ><br>
> ><br>
> > Best Regards!<br>
> ><br>
> ><br>
> ><br>
> > James Zhu<br>
> ><br>
> > ________________________________<br>
> ><br>
> > From: amd-gfx <<a href="mailto:amd-gfx-bounces@lists.freedesktop.org" target="_blank" rel="noreferrer">amd-gfx-bounces@lists.freedesktop.org</a>> on behalf of<br>
> > Evan Quan <<a href="mailto:evan.quan@amd.com" target="_blank" rel="noreferrer">evan.quan@amd.com</a>><br>
> > Sent: Wednesday, August 18, 2021 11:08 PM<br>
> > To: <a href="mailto:amd-gfx@lists.freedesktop.org" target="_blank" rel="noreferrer">amd-gfx@lists.freedesktop.org</a> <<a href="mailto:amd-gfx@lists.freedesktop.org" target="_blank" rel="noreferrer">amd-gfx@lists.freedesktop.org</a>><br>
> > Cc: Deucher, Alexander <<a href="mailto:Alexander.Deucher@amd.com" target="_blank" rel="noreferrer">Alexander.Deucher@amd.com</a>>; Chen, Guchun<br>
> > <<a href="mailto:Guchun.Chen@amd.com" target="_blank" rel="noreferrer">Guchun.Chen@amd.com</a>>; Lazar, Lijo <<a href="mailto:Lijo.Lazar@amd.com" target="_blank" rel="noreferrer">Lijo.Lazar@amd.com</a>>; Quan, Evan<br>
> > <<a href="mailto:Evan.Quan@amd.com" target="_blank" rel="noreferrer">Evan.Quan@amd.com</a>>; Pan, Xinhui <<a href="mailto:Xinhui.Pan@amd.com" target="_blank" rel="noreferrer">Xinhui.Pan@amd.com</a>><br>
> > Subject: [PATCH] drm/amdgpu: add missing cleanups for Polaris12<br>
> > UVD/VCE on suspend<br>
> ><br>
> ><br>
> ><br>
> > Perform proper cleanups on UVD/VCE suspend: powergate enablement,<br>
> > clockgating enablement and dpm disablement. This can fix some hangs<br>
> > observed on suspending when UVD/VCE still using(e.g. issue<br>
> > "pm-suspend" when video is still playing).<br>
> ><br>
> > Change-Id: I36f39d9731e0a9638b52d5d92558b0ee9c23a9ed<br>
> > Signed-off-by: Evan Quan <<a href="mailto:evan.quan@amd.com" target="_blank" rel="noreferrer">evan.quan@amd.com</a>><br>
> > Signed-off-by: xinhui pan <<a href="mailto:xinhui.pan@amd.com" target="_blank" rel="noreferrer">xinhui.pan@amd.com</a>><br>
> > ---<br>
> >  drivers/gpu/drm/amd/amdgpu/uvd_v6_0.c | 24<br>
> ++++++++++++++++++++++++<br>
> > drivers/gpu/drm/amd/amdgpu/vce_v3_0.c | 23<br>
> +++++++++++++++++++++++<br>
> >  2 files changed, 47 insertions(+)<br>
> ><br>
> > diff --git a/drivers/gpu/drm/amd/amdgpu/uvd_v6_0.c<br>
> > b/drivers/gpu/drm/amd/amdgpu/uvd_v6_0.c<br>
> > index 4eebf973a065..d0fc6ec18c29 100644<br>
> > --- a/drivers/gpu/drm/amd/amdgpu/uvd_v6_0.c<br>
> > +++ b/drivers/gpu/drm/amd/amdgpu/uvd_v6_0.c<br>
> > @@ -554,6 +554,30 @@ static int uvd_v6_0_suspend(void *handle)<br>
> >          int r;<br>
> >          struct amdgpu_device *adev = (struct amdgpu_device *)handle;<br>
> ><br>
> > +       /*<br>
> > +        * Proper cleanups before halting the HW engine:<br>
> > +        *   - cancel the delayed idle work<br>
> > +        *   - enable powergating<br>
> > +        *   - enable clockgating<br>
> > +        *   - disable dpm<br>
> > +        *<br>
> > +        * TODO: to align with the VCN implementation, move the<br>
> > +        * jobs for clockgating/powergating/dpm setting to<br>
> > +        * ->set_powergating_state().<br>
> > +        */<br>
> > +       cancel_delayed_work_sync(&adev->uvd.idle_work);<br>
> > +<br>
> > +       if (adev->pm.dpm_enabled) {<br>
> > +               amdgpu_dpm_enable_uvd(adev, false);<br>
> > +       } else {<br>
> > +               amdgpu_asic_set_uvd_clocks(adev, 0, 0);<br>
> > +               /* shutdown the UVD block */<br>
> > +               amdgpu_device_ip_set_powergating_state(adev,<br>
> AMD_IP_BLOCK_TYPE_UVD,<br>
> > +                                                      AMD_PG_STATE_GATE);<br>
> > +               amdgpu_device_ip_set_clockgating_state(adev,<br>
> AMD_IP_BLOCK_TYPE_UVD,<br>
> > +                                                      AMD_CG_STATE_GATE);<br>
> > +       }<br>
> > +<br>
> >          r = uvd_v6_0_hw_fini(adev);<br>
> >          if (r)<br>
> >                  return r;<br>
> > diff --git a/drivers/gpu/drm/amd/amdgpu/vce_v3_0.c<br>
> > b/drivers/gpu/drm/amd/amdgpu/vce_v3_0.c<br>
> > index 6d9108fa22e0..a594ade5d30a 100644<br>
> > --- a/drivers/gpu/drm/amd/amdgpu/vce_v3_0.c<br>
> > +++ b/drivers/gpu/drm/amd/amdgpu/vce_v3_0.c<br>
> > @@ -503,6 +503,29 @@ static int vce_v3_0_suspend(void *handle)<br>
> >          int r;<br>
> >          struct amdgpu_device *adev = (struct amdgpu_device *)handle;<br>
> ><br>
> > +       /*<br>
> > +        * Proper cleanups before halting the HW engine:<br>
> > +        *   - cancel the delayed idle work<br>
> > +        *   - enable powergating<br>
> > +        *   - enable clockgating<br>
> > +        *   - disable dpm<br>
> > +        *<br>
> > +        * TODO: to align with the VCN implementation, move the<br>
> > +        * jobs for clockgating/powergating/dpm setting to<br>
> > +        * ->set_powergating_state().<br>
> > +        */<br>
> > +       cancel_delayed_work_sync(&adev->vce.idle_work);<br>
> > +<br>
> > +       if (adev->pm.dpm_enabled) {<br>
> > +               amdgpu_dpm_enable_vce(adev, false);<br>
> > +       } else {<br>
> > +               amdgpu_asic_set_vce_clocks(adev, 0, 0);<br>
> > +               amdgpu_device_ip_set_powergating_state(adev,<br>
> AMD_IP_BLOCK_TYPE_VCE,<br>
> > +                                                      AMD_PG_STATE_GATE);<br>
> > +               amdgpu_device_ip_set_clockgating_state(adev,<br>
> AMD_IP_BLOCK_TYPE_VCE,<br>
> > +                                                      AMD_CG_STATE_GATE);<br>
> > +       }<br>
> > +<br>
> >          r = vce_v3_0_hw_fini(adev);<br>
> >          if (r)<br>
> >                  return r;<br>
> > --<br>
> > 2.29.0<br>
<br>
------------------------------<br>
<br>
Subject: Digest Footer<br>
<br>
_______________________________________________<br>
amd-gfx mailing list<br>
<a href="mailto:amd-gfx@lists.freedesktop.org" target="_blank" rel="noreferrer">amd-gfx@lists.freedesktop.org</a><br>
<a href="https://lists.freedesktop.org/mailman/listinfo/amd-gfx" rel="noreferrer noreferrer" target="_blank">https://lists.freedesktop.org/mailman/listinfo/amd-gfx</a><br>
<br>
<br>
------------------------------<br>
<br>
End of amd-gfx Digest, Vol 63, Issue 280<br>
****************************************<br>
</blockquote></div></div></div>