]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
5.7-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 24 Aug 2020 16:23:15 +0000 (18:23 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 24 Aug 2020 16:23:15 +0000 (18:23 +0200)
added patches:
revert-drm-amd-display-improve-displayport-monitor-interop.patch

queue-5.7/revert-drm-amd-display-improve-displayport-monitor-interop.patch [new file with mode: 0644]
queue-5.7/series

diff --git a/queue-5.7/revert-drm-amd-display-improve-displayport-monitor-interop.patch b/queue-5.7/revert-drm-amd-display-improve-displayport-monitor-interop.patch
new file mode 100644 (file)
index 0000000..3a3ca78
--- /dev/null
@@ -0,0 +1,106 @@
+From alexdeucher@gmail.com  Mon Aug 24 18:22:34 2020
+From: Alex Deucher <alexdeucher@gmail.com>
+Date: Mon, 24 Aug 2020 12:10:29 -0400
+Subject: Revert "drm/amd/display: Improve DisplayPort monitor interop"
+To: stable@vger.kernel.org
+Cc: sashal@kernel.org, Alex Deucher <alexander.deucher@amd.com>
+Message-ID: <20200824161029.2001401-1-alexander.deucher@amd.com>
+
+From: Alex Deucher <alexdeucher@gmail.com>
+
+This reverts commit 1adb2ff1f6b170cdbc3925a359c8f39d2215dc20.
+
+This breaks display wake up in stable kernels (5.7.x and 5.8.x).
+
+Note that there is no upstream equivalent to this
+revert. This patch was targeted for stable by Sasha's stable
+patch process. Presumably there are some other changes necessary
+for this patch to work properly on stable kernels.
+
+Bug: https://gitlab.freedesktop.org/drm/amd/-/issues/1266
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+Cc: stable@vger.kernel.org # 5.7.x, 5.8.x
+Cc: Sasha Levin <sashal@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/gpu/drm/amd/display/dc/core/dc_link.c               |    4 ---
+ drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c            |   16 ++++--------
+ drivers/gpu/drm/amd/display/dc/dce110/dce110_hw_sequencer.c |   11 --------
+ 3 files changed, 8 insertions(+), 23 deletions(-)
+
+--- a/drivers/gpu/drm/amd/display/dc/core/dc_link.c
++++ b/drivers/gpu/drm/amd/display/dc/core/dc_link.c
+@@ -3145,11 +3145,9 @@ void core_link_disable_stream(struct pip
+                       write_i2c_redriver_setting(pipe_ctx, false);
+               }
+       }
+-
+-      disable_link(pipe_ctx->stream->link, pipe_ctx->stream->signal);
+-
+       dc->hwss.disable_stream(pipe_ctx);
++      disable_link(pipe_ctx->stream->link, pipe_ctx->stream->signal);
+       if (pipe_ctx->stream->timing.flags.DSC) {
+               if (dc_is_dp_signal(pipe_ctx->stream->signal))
+                       dp_set_dsc_enable(pipe_ctx, false);
+--- a/drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c
++++ b/drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c
+@@ -1103,10 +1103,6 @@ static inline enum link_training_result
+       dpcd_pattern.v1_4.TRAINING_PATTERN_SET = DPCD_TRAINING_PATTERN_VIDEOIDLE;
+       dpcd_set_training_pattern(link, dpcd_pattern);
+-      /* delay 5ms after notifying sink of idle pattern before switching output */
+-      if (link->connector_signal != SIGNAL_TYPE_EDP)
+-              msleep(5);
+-
+       /* 4. mainlink output idle pattern*/
+       dp_set_hw_test_pattern(link, DP_TEST_PATTERN_VIDEO_MODE, NULL, 0);
+@@ -1556,12 +1552,6 @@ bool perform_link_training_with_retries(
+       struct dc_link *link = stream->link;
+       enum dp_panel_mode panel_mode = dp_get_panel_mode(link);
+-      /* We need to do this before the link training to ensure the idle pattern in SST
+-       * mode will be sent right after the link training
+-       */
+-      link->link_enc->funcs->connect_dig_be_to_fe(link->link_enc,
+-                                                      pipe_ctx->stream_res.stream_enc->id, true);
+-
+       for (j = 0; j < attempts; ++j) {
+               dp_enable_link_phy(
+@@ -1578,6 +1568,12 @@ bool perform_link_training_with_retries(
+               dp_set_panel_mode(link, panel_mode);
++              /* We need to do this before the link training to ensure the idle pattern in SST
++               * mode will be sent right after the link training
++               */
++              link->link_enc->funcs->connect_dig_be_to_fe(link->link_enc,
++                                                              pipe_ctx->stream_res.stream_enc->id, true);
++
+               if (link->aux_access_disabled) {
+                       dc_link_dp_perform_link_training_skip_aux(link, link_setting);
+                       return true;
+--- a/drivers/gpu/drm/amd/display/dc/dce110/dce110_hw_sequencer.c
++++ b/drivers/gpu/drm/amd/display/dc/dce110/dce110_hw_sequencer.c
+@@ -1090,17 +1090,8 @@ void dce110_blank_stream(struct pipe_ctx
+               dc_link_set_abm_disable(link);
+       }
+-      if (dc_is_dp_signal(pipe_ctx->stream->signal)) {
++      if (dc_is_dp_signal(pipe_ctx->stream->signal))
+               pipe_ctx->stream_res.stream_enc->funcs->dp_blank(pipe_ctx->stream_res.stream_enc);
+-
+-              /*
+-               * After output is idle pattern some sinks need time to recognize the stream
+-               * has changed or they enter protection state and hang.
+-               */
+-              if (!dc_is_embedded_signal(pipe_ctx->stream->signal))
+-                      msleep(60);
+-      }
+-
+ }
index b040d5d251929beb7300bf612f2471555c038c26..3ca51f2f779af58e3e037c2c994ab29bdc21f9ec 100644 (file)
@@ -124,3 +124,4 @@ do_epoll_ctl-clean-the-failure-exits-up-a-bit.patch
 xen-don-t-reschedule-in-preemption-off-sections.patch
 kvm-pass-mmu-notifier-range-flags-to-kvm_unmap_hva_range.patch
 kvm-arm64-only-reschedule-if-mmu_notifier_range_blockable-is-not-set.patch
+revert-drm-amd-display-improve-displayport-monitor-interop.patch