[PATCH v4] drm/amd: Flush any delayed gfxoff on suspend entry

Quan, Evan Evan.Quan at amd.com
Fri May 19 03:33:30 UTC 2023


[AMD Official Use Only - General]

If I understand correctly, similar job is already performed in "amdgpu_device_set_pg_state(adev, AMD_PG_STATE_UNGATE);"
Maybe you just need to undo the "skip PG for GFX on S0ix"?

                /* skip PG for GFX, SDMA on S0ix */
                if (adev->in_s0ix &&
                    (adev->ip_blocks[i].version->type == AMD_IP_BLOCK_TYPE_GFX ||
                     adev->ip_blocks[i].version->type == AMD_IP_BLOCK_TYPE_SDMA))
                        continue;

Evan
> -----Original Message-----
> From: amd-gfx <amd-gfx-bounces at lists.freedesktop.org> On Behalf Of Mario
> Limonciello
> Sent: Friday, May 19, 2023 12:53 AM
> To: amd-gfx at lists.freedesktop.org
> Cc: Tsao, Anson <anson.tsao at amd.com>; Huang, Tim
> <Tim.Huang at amd.com>; Martinez, Juan <Juan.Martinez at amd.com>;
> Limonciello, Mario <Mario.Limonciello at amd.com>; Gong, Richard
> <Richard.Gong at amd.com>
> Subject: [PATCH v4] drm/amd: Flush any delayed gfxoff on suspend entry
>
> DCN 3.1.4 is reported to hang on s2idle entry if graphics activity
> is happening during entry.  This is because GFXOFF was scheduled as
> delayed but RLC gets disabled in s2idle entry sequence which will
> hang GFX IP if not already in GFXOFF.
>
> To help this problem, flush any delayed work for GFXOFF early in
> s2idle entry sequence to ensure that it's off when RLC is changed.
>
> commit 3964b0c2e843 ("drm/amdgpu: complete gfxoff allow signal during
> suspend without delay") modified power gating flow so that if called
> in s0ix that it ensured that GFXOFF wasn't put in work queue but
> instead processed immediately.
>
> This is dead code due to commit 5d70a549d00d ("drm/amdgpu: skip
> CG/PG for gfx during S0ix") because GFXOFF will now not be explicitly
> called as part of the suspend entry code.  Remove that dead code.
>
> Cc: stable at vger.kernel.org # 6.1+
> Suggested-by: Tim Huang <tim.huang at amd.com>
> Signed-off-by: Mario Limonciello <mario.limonciello at amd.com>
> ---
> v3->v4:
>  * Drop patches 2-4
> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 1 +
>  drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c    | 9 +--------
>  2 files changed, 2 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> index a9d9bbe8586b..059139f1f973 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> @@ -4316,6 +4316,7 @@ int amdgpu_device_suspend(struct drm_device
> *dev, bool fbcon)
>               drm_fb_helper_set_suspend_unlocked(adev_to_drm(adev)-
> >fb_helper, true);
>
>       cancel_delayed_work_sync(&adev->delayed_init_work);
> +     flush_delayed_work(&adev->gfx.gfx_off_delay_work);
>
>       amdgpu_ras_suspend(adev);
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c
> b/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c
> index f2d0b1d55d77..b1190eb0e9c7 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c
> @@ -692,15 +692,8 @@ void amdgpu_gfx_off_ctrl(struct amdgpu_device
> *adev, bool enable)
>
>               if (adev->gfx.gfx_off_req_count == 0 &&
>                   !adev->gfx.gfx_off_state) {
> -                     /* If going to s2idle, no need to wait */
> -                     if (adev->in_s0ix) {
> -                             if
> (!amdgpu_dpm_set_powergating_by_smu(adev,
> -                                             AMD_IP_BLOCK_TYPE_GFX,
> true))
> -                                     adev->gfx.gfx_off_state = true;
> -                     } else {
> -                             schedule_delayed_work(&adev-
> >gfx.gfx_off_delay_work,
> +                     schedule_delayed_work(&adev-
> >gfx.gfx_off_delay_work,
>                                             delay);
> -                     }
>               }
>       } else {
>               if (adev->gfx.gfx_off_req_count == 0) {
> --
> 2.34.1



More information about the amd-gfx mailing list