On 4/20/2022 7:32 AM, Prike Liang wrote:
Without MMHUB clock gating being enabled then MMHUB will not disconnect from DF and will result in DF C-state entry can't be accessed during S2idle suspend, and eventually s0ix entry will be blocked. Signed-off-by: Prike Liang <Prike.Liang@xxxxxxx> --- drivers/gpu/drm/amd/amdgpu/mmhub_v2_3.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/drivers/gpu/drm/amd/amdgpu/mmhub_v2_3.c b/drivers/gpu/drm/amd/amdgpu/mmhub_v2_3.c index 1957fb098c4d..cb3dca4834b4 100644 --- a/drivers/gpu/drm/amd/amdgpu/mmhub_v2_3.c +++ b/drivers/gpu/drm/amd/amdgpu/mmhub_v2_3.c @@ -568,6 +568,15 @@ static int mmhub_v2_3_set_clockgating(struct amdgpu_device *adev, { if (amdgpu_sriov_vf(adev)) return 0; + /* + * The issue mmhub can't disconnect from DF with clock gating being disabled + * seems only observed at DF 3.0.3, with the same suspend sequence not seen + * any issue on the DF 3.0.2 series platform. + */ + if (adev->in_s0ix) { + dev_dbg(adev->dev, "keep mmhub clock gating being enabled for s0ix\n"); + return 0; + }
A better fix would be to explicitly enable mmhub clockgating during s0ix suspend of gmc for this IP version.
Thanks, Lijo
mmhub_v2_3_update_medium_grain_clock_gating(adev, state == AMD_CG_STATE_GATE);