FAILED: patch "[PATCH] drm/amd/display: Remove wait while locked" failed to apply to 6.5-stable tree
[email protected]
maintainerThe patch below does not apply to the 6.5-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
To reproduce the conflict and resubmit, you may use the following commands:
git fetch https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/ linux-6.5.y
git checkout FETCH_HEAD
git cherry-pick -x d12f00c91fdfe3e50747f9e7e229fd8ede16b632
# <resolve conflicts, build, test, etc.>
git commit -s
git send-email --to '<[email protected]>' --in-reply-to '2023112444-ribbon-phobia-e4f6@gregkh' --subject-prefix 'PATCH 6.5.y' HEAD^..
Possible dependencies:
d12f00c91fdf ("drm/amd/display: Remove wait while locked")
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From d12f00c91fdfe3e50747f9e7e229fd8ede16b632 Mon Sep 17 00:00:00 2001
From: Gabe Teeger <[email protected]>
Date: Mon, 14 Aug 2023 16:06:18 -0400
Subject: [PATCH] drm/amd/display: Remove wait while locked
[Why]
We wait for mpc idle while in a locked state, leading to potential deadlock.
[What]
Move the wait_for_idle call to outside of HW lock. This and a call to wait_drr_doublebuffer_pending_clear are moved added to a new static helper function called wait_for_outstanding_hw_updates, to make the interface clearer.
drivers/gpu/drm/amd/display/dc/Makefile +1 -0
@@ -78,3 +78,4 @@ DC_EDID += dc_edid_parser.o AMD_DISPLAY_DMUB = $(addprefix $(AMDDALPATH)/dc/,$(DC_DMUB)) AMD_DISPLAY_EDID = $(addprefix $(AMDDALPATH)/dc/,$(DC_EDID)) AMD_DISPLAY_FILES += $(AMD_DISPLAY_DMUB) $(AMD_DISPLAY_EDID) +
drivers/gpu/drm/amd/display/dc/core/dc.c +41 -17
71 lines not on this page · raw message
drivers/gpu/drm/amd/display/dc/dcn20/dcn20_hwseq.c +0 -11
@@ -1563,17 +1563,6 @@ static void dcn20_update_dchubp_dpp( || plane_state->update_flags.bits.global_alpha_change || plane_state->update_flags.bits.per_pixel_alpha_change) {// MPCC inst is equal to pipe index in practice -int mpcc_inst = hubp->inst; -int opp_inst; -int opp_count = dc->res_pool->pipe_count; - -for (opp_inst =0 ; opp_inst < opp_count; opp_inst++) { -if (dc->res_pool->opps[opp_inst]->mpcc_disconnect_pending[mpcc_inst]) { - dc->res_pool->mpc->funcs->wait_for_idle (dc->res_pool->mpc, mpcc_inst); - dc->res_pool->opps[opp_inst]->mpcc_disconnect_pending[mpcc_inst] = false; -break ; - } - } hws->funcs.update_mpcc (dc, pipe_ctx); }