diff options
Diffstat (limited to '0038-drm-amd-display-Avoid-MPC-infinite-loop.patch')
-rw-r--r-- | 0038-drm-amd-display-Avoid-MPC-infinite-loop.patch | 64 |
1 files changed, 0 insertions, 64 deletions
diff --git a/0038-drm-amd-display-Avoid-MPC-infinite-loop.patch b/0038-drm-amd-display-Avoid-MPC-infinite-loop.patch deleted file mode 100644 index cef646076e47..000000000000 --- a/0038-drm-amd-display-Avoid-MPC-infinite-loop.patch +++ /dev/null @@ -1,64 +0,0 @@ -From b26218b2349ac2b2141fd07430ded3786bee6910 Mon Sep 17 00:00:00 2001 -From: Josip Pavic <Josip.Pavic@amd.com> -Date: Thu, 21 Jul 2022 15:33:00 -0400 -Subject: [PATCH 38/73] drm/amd/display: Avoid MPC infinite loop - -[ Upstream commit 8de297dc046c180651c0500f8611663ae1c3828a ] - -[why] -In some cases MPC tree bottom pipe ends up point to itself. This causes -iterating from top to bottom to hang the system in an infinite loop. - -[how] -When looping to next MPC bottom pipe, check that the pointer is not same -as current to avoid infinite loop. - -Reviewed-by: Josip Pavic <Josip.Pavic@amd.com> -Reviewed-by: Jun Lei <Jun.Lei@amd.com> -Acked-by: Alex Hung <alex.hung@amd.com> -Signed-off-by: Aric Cyr <aric.cyr@amd.com> -Tested-by: Daniel Wheeler <daniel.wheeler@amd.com> -Signed-off-by: Alex Deucher <alexander.deucher@amd.com> -Signed-off-by: Sasha Levin <sashal@kernel.org> ---- - drivers/gpu/drm/amd/display/dc/dcn10/dcn10_mpc.c | 6 ++++++ - drivers/gpu/drm/amd/display/dc/dcn20/dcn20_mpc.c | 6 ++++++ - 2 files changed, 12 insertions(+) - -diff --git a/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_mpc.c b/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_mpc.c -index 11019c2c62cc..8192f1967e92 100644 ---- a/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_mpc.c -+++ b/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_mpc.c -@@ -126,6 +126,12 @@ struct mpcc *mpc1_get_mpcc_for_dpp(struct mpc_tree *tree, int dpp_id) - while (tmp_mpcc != NULL) { - if (tmp_mpcc->dpp_id == dpp_id) - return tmp_mpcc; -+ -+ /* avoid circular linked list */ -+ ASSERT(tmp_mpcc != tmp_mpcc->mpcc_bot); -+ if (tmp_mpcc == tmp_mpcc->mpcc_bot) -+ break; -+ - tmp_mpcc = tmp_mpcc->mpcc_bot; - } - return NULL; -diff --git a/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_mpc.c b/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_mpc.c -index 15734db0cdea..f3c311d09319 100644 ---- a/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_mpc.c -+++ b/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_mpc.c -@@ -531,6 +531,12 @@ static struct mpcc *mpc2_get_mpcc_for_dpp(struct mpc_tree *tree, int dpp_id) - while (tmp_mpcc != NULL) { - if (tmp_mpcc->dpp_id == 0xf || tmp_mpcc->dpp_id == dpp_id) - return tmp_mpcc; -+ -+ /* avoid circular linked list */ -+ ASSERT(tmp_mpcc != tmp_mpcc->mpcc_bot); -+ if (tmp_mpcc == tmp_mpcc->mpcc_bot) -+ break; -+ - tmp_mpcc = tmp_mpcc->mpcc_bot; - } - return NULL; --- -2.37.3 - |