]> www.infradead.org Git - users/hch/misc.git/commitdiff
drm/amd/pm: Treat zero vblank time as too short in si_dpm (v3)
authorTimur Kristóf <timur.kristof@gmail.com>
Thu, 28 Aug 2025 15:11:08 +0000 (17:11 +0200)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 2 Sep 2025 19:55:34 +0000 (15:55 -0400)
Some parts of the code base expect that MCLK switching is turned
off when the vblank time is set to zero.

According to pp_pm_compute_clocks the non-DC code has issues
with MCLK switching with refresh rates over 120 Hz.

v3:
Add code comment to explain this better.
Add an if statement instead of changing the switch_limit.

Fixes: 841686df9f7d ("drm/amdgpu: add SI DPM support (v4)")
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Timur Kristóf <timur.kristof@gmail.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/pm/legacy-dpm/si_dpm.c

index fb008c5980d67e135cccd995397eb116514b0f50..c11c4cc111df5f33a7fffc1a61cb4d6fe671a413 100644 (file)
@@ -3085,7 +3085,13 @@ static bool si_dpm_vblank_too_short(void *handle)
        /* we never hit the non-gddr5 limit so disable it */
        u32 switch_limit = adev->gmc.vram_type == AMDGPU_VRAM_TYPE_GDDR5 ? 450 : 0;
 
-       if (vblank_time < switch_limit)
+       /* Consider zero vblank time too short and disable MCLK switching.
+        * Note that the vblank time is set to maximum when no displays are attached,
+        * so we'll still enable MCLK switching in that case.
+        */
+       if (vblank_time == 0)
+               return true;
+       else if (vblank_time < switch_limit)
                return true;
        else
                return false;