diff options
author | Justin M. Forbes <jforbes@fedoraproject.org> | 2020-04-28 10:25:56 -0500 |
---|---|---|
committer | Justin M. Forbes <jforbes@fedoraproject.org> | 2020-04-28 10:25:56 -0500 |
commit | 2fdd468ba1083379c60a917fd60ed2d328534540 (patch) | |
tree | eafbd43b34169170885fa723bbfcb85fe789c729 /drm-dp_mst-Fix-drm_dp_send_dpcd_write-return-code.patch | |
parent | 19b3730040d96370b94a8b7f31809cb72e873510 (diff) | |
download | kernel-2fdd468ba1083379c60a917fd60ed2d328534540.tar.gz kernel-2fdd468ba1083379c60a917fd60ed2d328534540.tar.xz kernel-2fdd468ba1083379c60a917fd60ed2d328534540.zip |
Fix drm_dp_send_dpcd_write() return code
Diffstat (limited to 'drm-dp_mst-Fix-drm_dp_send_dpcd_write-return-code.patch')
-rw-r--r-- | drm-dp_mst-Fix-drm_dp_send_dpcd_write-return-code.patch | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/drm-dp_mst-Fix-drm_dp_send_dpcd_write-return-code.patch b/drm-dp_mst-Fix-drm_dp_send_dpcd_write-return-code.patch new file mode 100644 index 000000000..d5b7f003f --- /dev/null +++ b/drm-dp_mst-Fix-drm_dp_send_dpcd_write-return-code.patch @@ -0,0 +1,47 @@ +From: Lyude Paul <lyude@redhat.com> +Date: Fri, 24 Apr 2020 15:07:22 -0400 +Subject: drm/dp_mst: Fix drm_dp_send_dpcd_write() return code + +drm_dp_mst_wait_tx_reply() returns > 1 if time elapsed in +wait_event_timeout() before check_txmsg_state(mgr, txmsg) evaluated to +true. However, we make the mistake of returning this time from +drm_dp_send_dpcd_write() on success instead of returning the number of +bytes written - causing spontaneous failures during link probing: + +[drm:drm_dp_send_link_address [drm_kms_helper]] *ERROR* GUID check on +10:01 failed: 3975 + +Yikes! So, fix this by returning the number of bytes written on success +instead. + +Signed-off-by: Lyude Paul <lyude@redhat.com> +Fixes: cb897542c6d2 ("drm/dp_mst: Fix W=1 warnings") +Cc: Benjamin Gaignard <benjamin.gaignard@st.com> +Cc: Sean Paul <sean@poorly.run> +Acked-by: Alex Deucher <alexander.deucher@amd.com> +Reviewed-by: Sean Paul <sean@poorly.run> +Link: https://patchwork.freedesktop.org/patch/msgid/20200424190722.775284-1-lyude@redhat.com +--- + drivers/gpu/drm/drm_dp_mst_topology.c | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + + +diff --git a/drivers/gpu/drm/drm_dp_mst_topology.c b/drivers/gpu/drm/drm_dp_mst_topology.c +index 03a1496f6120..21dc78cb4ba6 100644 +--- a/drivers/gpu/drm/drm_dp_mst_topology.c ++++ b/drivers/gpu/drm/drm_dp_mst_topology.c +@@ -3436,8 +3436,12 @@ static int drm_dp_send_dpcd_write(struct drm_dp_mst_topology_mgr *mgr, + drm_dp_queue_down_tx(mgr, txmsg); + + ret = drm_dp_mst_wait_tx_reply(mstb, txmsg); +- if (ret > 0 && txmsg->reply.reply_type == DP_SIDEBAND_REPLY_NAK) +- ret = -EIO; ++ if (ret > 0) { ++ if (txmsg->reply.reply_type == DP_SIDEBAND_REPLY_NAK) ++ ret = -EIO; ++ else ++ ret = size; ++ } + + kfree(txmsg); + fail_put: |