Re: [PATCH] drm/dp/mst: Restore primary hub guid on resume

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Apr 15, 2016 at 08:41:30AM -0400, Harry Wentland wrote:
> Patch makes sense to me. It looks like when the receiver detects an upstream
> disconnect it will reset its internal state, at least somewhat. We've seen
> that happen when system enters S3 and GPU loses power.
> 
> Reviewed-by: Harry Wentland <harry.wentland@xxxxxxx>

Applied to drm-misc, thanks for patch&review.
-Daniel

> 
> Harry
> 
> On 2016-04-13 04:50 PM, Lyude wrote:
> >Some hubs are forgetful, and end up forgetting whatever GUID we set
> >previously after we do a suspend/resume cycle. This can lead to
> >hotplugging breaking (along with probably other things) since the hub
> >will start sending connection notifications with the wrong GUID. As
> >such, we need to check on resume whether or not the GUID the hub is
> >giving us is valid.
> >
> >Signed-off-by: Lyude <cpaul@xxxxxxxxxx>
> >Signed-off-by: Dave Airlie <airlied@xxxxxxxxxx>
> >---
> >  drivers/gpu/drm/drm_dp_mst_topology.c | 12 ++++++++++++
> >  1 file changed, 12 insertions(+)
> >
> >diff --git a/drivers/gpu/drm/drm_dp_mst_topology.c b/drivers/gpu/drm/drm_dp_mst_topology.c
> >index 27fbd79..d2efd78 100644
> >--- a/drivers/gpu/drm/drm_dp_mst_topology.c
> >+++ b/drivers/gpu/drm/drm_dp_mst_topology.c
> >@@ -2121,6 +2121,8 @@ int drm_dp_mst_topology_mgr_resume(struct drm_dp_mst_topology_mgr *mgr)
> >  	if (mgr->mst_primary) {
> >  		int sret;
> >+		u8 guid[16];
> >+
> >  		sret = drm_dp_dpcd_read(mgr->aux, DP_DPCD_REV, mgr->dpcd, DP_RECEIVER_CAP_SIZE);
> >  		if (sret != DP_RECEIVER_CAP_SIZE) {
> >  			DRM_DEBUG_KMS("dpcd read failed - undocked during suspend?\n");
> >@@ -2135,6 +2137,16 @@ int drm_dp_mst_topology_mgr_resume(struct drm_dp_mst_topology_mgr *mgr)
> >  			ret = -1;
> >  			goto out_unlock;
> >  		}
> >+
> >+		/* Some hubs forget their guids after they resume */
> >+		sret = drm_dp_dpcd_read(mgr->aux, DP_GUID, guid, 16);
> >+		if (sret != 16) {
> >+			DRM_DEBUG_KMS("dpcd read failed - undocked during suspend?\n");
> >+			ret = -1;
> >+			goto out_unlock;
> >+		}
> >+		drm_dp_check_mstb_guid(mgr->mst_primary, guid);
> >+
> >  		ret = 0;
> >  	} else
> >  		ret = -1;
> 
> _______________________________________________
> dri-devel mailing list
> dri-devel@xxxxxxxxxxxxxxxxxxxxx
> https://lists.freedesktop.org/mailman/listinfo/dri-devel

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
dri-devel mailing list
dri-devel@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/dri-devel




[Index of Archives]     [Linux DRI Users]     [Linux Intel Graphics]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux