From: Bing Guo bing.guo@amd.com
[ Upstream commit 4716a7c50c5c66d6ddc42401e1e0ba13b492e105 ]
Why: Function decide_dp_link_settings() loops infinitely when required bandwidth can't be supported.
How: Check the required bandwidth against verified_link_cap before trying to find a link setting for it.
Tested-by: Daniel Wheeler daniel.wheeler@amd.com Signed-off-by: Bing Guo bing.guo@amd.com Reviewed-by: Jun Lei Jun.Lei@amd.com Acked-by: Anson Jacob anson.jacob@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/core/dc_link_dp.c | 3 +++ 1 file changed, 3 insertions(+)
diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c b/drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c index 98464886341f6..004e2b32e02fa 100644 --- a/drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c +++ b/drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c @@ -2375,6 +2375,9 @@ static bool decide_dp_link_settings(struct dc_link *link, struct dc_link_setting initial_link_setting; uint32_t link_bw;
+ if (req_bw > dc_link_bandwidth_kbps(link, &link->verified_link_cap)) + return false; + /* search for the minimum link setting that: * 1. is supported according to the link training result * 2. could support the b/w requested by the timing