[AMD Public Use]

Sorry for spamming. 
It's a duplicate one and should be ignored.

> -----Original Message-----
> From: Wayne Lin <wayne....@amd.com>
> Sent: Tuesday, August 4, 2020 11:37 AM
> To: amd-gfx@lists.freedesktop.org
> Cc: Pillai, Aurabindo <aurabindo.pil...@amd.com>; Wu, Hersen
> <hersenxs...@amd.com>; Kazlauskas, Nicholas
> <nicholas.kazlaus...@amd.com>; Siqueira, Rodrigo
> <rodrigo.sique...@amd.com>; Zuo, Jerry <jerry....@amd.com>; Lin, Wayne
> <wayne....@amd.com>
> 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....@amd.com>
> ---
>  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@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

Reply via email to