[AMD Public Use] Sorry for spamming. It's a duplicate one and should be ignored. > -----Original Message----- > From: Wayne Lin <Wayne.Lin@xxxxxxx> > Sent: Tuesday, August 4, 2020 11:37 AM > To: amd-gfx@xxxxxxxxxxxxxxxxxxxxx > Cc: Pillai, Aurabindo <Aurabindo.Pillai@xxxxxxx>; Wu, Hersen > <hersenxs.wu@xxxxxxx>; Kazlauskas, Nicholas > <Nicholas.Kazlauskas@xxxxxxx>; Siqueira, Rodrigo > <Rodrigo.Siqueira@xxxxxxx>; Zuo, Jerry <Jerry.Zuo@xxxxxxx>; Lin, Wayne > <Wayne.Lin@xxxxxxx> > Subject: [PATCH] drm/amd/mst: clean DP main link status only when unplug > mst 1st link > > [Why] > Under DP daisy chain scenario as below: > > Src - Monitor_1 - Monitor_2 > > If unplug 2nd Monitor_2 and plug in again, observe that Monitor_1 doesn't > light up. > > When unplug 2nd monitor, we clear the > dc_link->cur_link_settings.lane_count in dm_dp_destroy_mst_connector(). > However this link status is a shared data structure by all connected mst > monitors. Although the 2nd monitor is gone, this link status should still be > retained for other connected mst monitors. Otherwise, when we plug the 2nd > monitor in again, we find out that main link is not trained and do link training > again. Payload ID Table for Monitor_1 is ruined and we don't reallocate it. > > [How] > In dm_dp_destroy_mst_connector(), only clean the cur_link_settings when we > no longer do mst mode. > > Signed-off-by: Wayne Lin <Wayne.Lin@xxxxxxx> > --- > drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c | 5 > ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git > a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c > b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c > index 2c10352fa514..526f29598403 100644 > --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c > +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c > @@ -415,7 +415,10 @@ static void dm_dp_destroy_mst_connector(struct > drm_dp_mst_topology_mgr *mgr, > aconnector->dc_sink); > dc_sink_release(aconnector->dc_sink); > aconnector->dc_sink = NULL; > - aconnector->dc_link->cur_link_settings.lane_count = 0; > + mutex_lock(&mgr->lock); > + if (!mgr->mst_state) > + aconnector->dc_link->cur_link_settings.lane_count = 0; > + mutex_unlock(&mgr->lock); > } > > drm_connector_unregister(connector); > -- > 2.17.1 _______________________________________________ amd-gfx mailing list amd-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/amd-gfx