drm/amd/display: do not copy invalid CRTC timing info
authorGergo Koteles <soyer@irl.hu>
Wed, 2 Apr 2025 17:03:31 +0000 (19:03 +0200)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 22 Apr 2025 12:51:45 +0000 (08:51 -0400)
Since b255ce4388e0, it is possible that the CRTC timing
information for the preferred mode has not yet been
calculated while amdgpu_dm_connector_mode_valid() is running.

In this case use the CRTC timing information of the actual mode.

Fixes: b255ce4388e0 ("drm/amdgpu: don't change mode in amdgpu_dm_connector_mode_valid()")
Closes: https://lore.kernel.org/all/ed09edb167e74167a694f4854102a3de6d2f1433.camel@irl.hu/
Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/4085
Signed-off-by: Gergo Koteles <soyer@irl.hu>
Reviewed-by: Zaeem Mohamed <zaeem.mohamed@amd.com>
Tested-by: Mark Broadworth <mark.broadworth@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c

index f26066817fcb362369daabe9f7c0b71cc5592a83..31a5b8fc4dc4fb9b01034b70cfaef1cbcfef1f30 100644 (file)
@@ -6588,12 +6588,12 @@ decide_crtc_timing_for_drm_display_mode(struct drm_display_mode *drm_mode,
                                        const struct drm_display_mode *native_mode,
                                        bool scale_enabled)
 {
-       if (scale_enabled) {
-               copy_crtc_timing_for_drm_display_mode(native_mode, drm_mode);
-       } else if (native_mode->clock == drm_mode->clock &&
-                       native_mode->htotal == drm_mode->htotal &&
-                       native_mode->vtotal == drm_mode->vtotal) {
-               copy_crtc_timing_for_drm_display_mode(native_mode, drm_mode);
+       if (scale_enabled || (
+           native_mode->clock == drm_mode->clock &&
+           native_mode->htotal == drm_mode->htotal &&
+           native_mode->vtotal == drm_mode->vtotal)) {
+               if (native_mode->crtc_clock)
+                       copy_crtc_timing_for_drm_display_mode(native_mode, drm_mode);
        } else {
                /* no scaling nor amdgpu inserted, no need to patch */
        }