From: Greg Kroah-Hartman Date: Mon, 24 Aug 2020 16:23:15 +0000 (+0200) Subject: 5.7-stable patches X-Git-Tag: v4.4.234~4 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=451523ce40f17a343cbddbd97926f53f48e68d8c;p=thirdparty%2Fkernel%2Fstable-queue.git 5.7-stable patches added patches: revert-drm-amd-display-improve-displayport-monitor-interop.patch --- 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 index 00000000000..3a3ca78c3b1 --- /dev/null +++ b/queue-5.7/revert-drm-amd-display-improve-displayport-monitor-interop.patch @@ -0,0 +1,106 @@ +From alexdeucher@gmail.com Mon Aug 24 18:22:34 2020 +From: Alex Deucher +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 +Message-ID: <20200824161029.2001401-1-alexander.deucher@amd.com> + +From: Alex Deucher + +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 +Cc: stable@vger.kernel.org # 5.7.x, 5.8.x +Cc: Sasha Levin +Signed-off-by: Greg Kroah-Hartman + +--- + 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); +- } +- + } + + diff --git a/queue-5.7/series b/queue-5.7/series index b040d5d2519..3ca51f2f779 100644 --- a/queue-5.7/series +++ b/queue-5.7/series @@ -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