diff options
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.19.8/1541-drm-amd-display-Fix-soft-hang-issue-when-some-DPCD-d.patch')
-rw-r--r-- | common/recipes-kernel/linux/linux-yocto-4.19.8/1541-drm-amd-display-Fix-soft-hang-issue-when-some-DPCD-d.patch | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.19.8/1541-drm-amd-display-Fix-soft-hang-issue-when-some-DPCD-d.patch b/common/recipes-kernel/linux/linux-yocto-4.19.8/1541-drm-amd-display-Fix-soft-hang-issue-when-some-DPCD-d.patch new file mode 100644 index 00000000..a1526bb1 --- /dev/null +++ b/common/recipes-kernel/linux/linux-yocto-4.19.8/1541-drm-amd-display-Fix-soft-hang-issue-when-some-DPCD-d.patch @@ -0,0 +1,44 @@ +From 73c5b6846781fde69c0b2799b9f1a4655e3025cb Mon Sep 17 00:00:00 2001 +From: Anthony Koo <Anthony.Koo@amd.com> +Date: Fri, 15 Feb 2019 14:19:30 -0500 +Subject: [PATCH 1541/2940] drm/amd/display: Fix soft hang issue when some DPCD + data invalid + +[Why] +AUX transaction returns success, but data has invalid lane count and rate +which when passed to VBIOS command table causes it to soft hang + +[How] +Do some sanity checking and fail if the DPCD caps are invalid. + +Change-Id: I846615c12223f75d100067ce76792f19b64beab3 +Signed-off-by: Anthony Koo <Anthony.Koo@amd.com> +Reviewed-by: Tony Cheng <Tony.Cheng@amd.com> +Acked-by: Bhawanpreet Lakha <Bhawanpreet.Lakha@amd.com> +--- + drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c | 9 +++++++++ + 1 file changed, 9 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 8ad79df56bf8..e1081e2dffdc 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 +@@ -2474,6 +2474,15 @@ static bool retrieve_link_cap(struct dc_link *link) + } + } + ++ /* Error condition checking... ++ * It is impossible for Sink to report Max Lane Count = 0. ++ * It is possible for Sink to report Max Link Rate = 0, if it is ++ * an eDP device that is reporting specialized link rates in the ++ * SUPPORTED_LINK_RATE table. ++ */ ++ if (dpcd_data[DP_MAX_LANE_COUNT - DP_DPCD_REV] == 0) ++ return false; ++ + link->dpcd_caps.dpcd_rev.raw = + dpcd_data[DP_DPCD_REV - DP_DPCD_REV]; + +-- +2.17.1 + |