aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/1786-drm-amd-display-Check-scaling-info-when-determing-up.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/1786-drm-amd-display-Check-scaling-info-when-determing-up.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/1786-drm-amd-display-Check-scaling-info-when-determing-up.patch66
1 files changed, 66 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/1786-drm-amd-display-Check-scaling-info-when-determing-up.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/1786-drm-amd-display-Check-scaling-info-when-determing-up.patch
new file mode 100644
index 00000000..344c1c3e
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/1786-drm-amd-display-Check-scaling-info-when-determing-up.patch
@@ -0,0 +1,66 @@
+From dc4089a6b7300ab4df1775677ab6375484708c8e Mon Sep 17 00:00:00 2001
+From: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
+Date: Thu, 28 Mar 2019 15:50:06 -0400
+Subject: [PATCH 1786/2940] drm/amd/display: Check scaling info when determing
+ update type
+
+[Why]
+Surface scaling info updates can affect bandwidth and blocks. We need
+to be checking these with global validation to avoid underflow or
+corruption.
+
+[How]
+Drop the state->allow_modeset early exit in
+dm_determine_update_type_for_commit. Most of those should be considered
+fast now anyway.
+
+Fill in scaling info and it to the surface update in atomic
+check.
+
+Change-Id: I3d32b8426a8097bb34851c51dfe143a75707f08d
+Signed-off-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
+Reviewed-by: David Francis <David.Francis@amd.com>
+Acked-by: Bhawanpreet Lakha <Bhawanpreet Lakha@amd.com>
+---
+ drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 11 ++++++++---
+ 1 file changed, 8 insertions(+), 3 deletions(-)
+
+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 7d52612c17f0..7b6d53eba878 100644
+--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
++++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
+@@ -6417,6 +6417,7 @@ dm_determine_update_type_for_commit(struct amdgpu_display_manager *dm,
+ }
+
+ for_each_oldnew_crtc_in_state(state, crtc, old_crtc_state, new_crtc_state, i) {
++ struct dc_scaling_info scaling_info;
+ struct dc_stream_update stream_update;
+
+ memset(&stream_update, 0, sizeof(stream_update));
+@@ -6447,9 +6448,6 @@ dm_determine_update_type_for_commit(struct amdgpu_display_manager *dm,
+ goto cleanup;
+ }
+
+- if (!state->allow_modeset)
+- continue;
+-
+ if (crtc != new_plane_crtc)
+ continue;
+
+@@ -6471,6 +6469,13 @@ dm_determine_update_type_for_commit(struct amdgpu_display_manager *dm,
+ new_dm_crtc_state->stream->out_transfer_func;
+ }
+
++ ret = fill_dc_scaling_info(new_plane_state,
++ &scaling_info);
++ if (ret)
++ goto cleanup;
++
++ updates[num_plane].scaling_info = &scaling_info;
++
+ num_plane++;
+ }
+
+--
+2.17.1
+