aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2818-drm-amd-display-Do-DC-mode-change-check-when-adding-.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2818-drm-amd-display-Do-DC-mode-change-check-when-adding-.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2818-drm-amd-display-Do-DC-mode-change-check-when-adding-.patch42
1 files changed, 42 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2818-drm-amd-display-Do-DC-mode-change-check-when-adding-.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2818-drm-amd-display-Do-DC-mode-change-check-when-adding-.patch
new file mode 100644
index 00000000..495f1b77
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2818-drm-amd-display-Do-DC-mode-change-check-when-adding-.patch
@@ -0,0 +1,42 @@
+From c62362e20bd020f2ee45e36ba2dea75979755b18 Mon Sep 17 00:00:00 2001
+From: "Leo (Sunpeng) Li" <sunpeng.li@amd.com>
+Date: Fri, 10 Nov 2017 15:02:19 -0500
+Subject: [PATCH 2818/4131] drm/amd/display: Do DC mode-change check when
+ adding CRTCs
+
+Within atomic check, dm_update_crtcs_state is called twice. First to
+remove from the dc_state, and subsequently to add to it.
+
+In both calls, a secondary mode-change check is done using dc-level
+states. We shouldn't be doing this while removing, since a new
+dc_stream_state has not been created to do the necessary comparison.
+Because of this, the mode_changed flag within the DRM state can be
+mistakenly set to false. Doing so only when adding prevents this.
+
+We are also guaranteed that a call to add will come after remove, or
+else the atomic check fails (and a commit will not happen).
+
+Signed-off-by: Leo (Sunpeng) Li <sunpeng.li@amd.com>
+Reviewed-by: Tony Cheng <Tony.Cheng@amd.com>
+Acked-by: Harry Wentland <harry.wentland@amd.com>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+---
+ drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
+index b25f5c9..9597a07 100644
+--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
++++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
+@@ -4981,7 +4981,7 @@ static int dm_update_crtcs_state(struct dc *dc,
+ }
+ }
+
+- if (dc_is_stream_unchanged(new_stream, dm_old_crtc_state->stream) &&
++ if (enable && dc_is_stream_unchanged(new_stream, dm_old_crtc_state->stream) &&
+ dc_is_stream_scaling_unchanged(new_stream, dm_old_crtc_state->stream)) {
+
+ new_crtc_state->mode_changed = false;
+--
+2.7.4
+