[PATCH 1/2] drm/amd/dm: Don't forget to attach MST encoders

Zuo, Jerry Jerry.Zuo at amd.com
Mon Nov 19 15:00:10 UTC 2018


Reviewed-by: Jerry (Fangzhi) Zuo <Jerry.Zuo at amd.com>

The change fixed MST + SST daisy chain and S3 scenarios. The issue shows huge delay in MST + SST daisy chain, and soft hang in S3 resume.

The aux sequence is changed by failed iteration search in drm_connector_for_each_possible_encoder(). 
The failure of searching for the best encoder for the connector due to the miss of attached encoder in the process of adding MST connector. The iteration search takes time to push drm_dp_send_enum_path_resources() aux transaction after the mode probe, and causes conflict to drm_dp_mst_i2c_xfer(), leading to the aux transaction timeout.

-----Original Message-----
From: Lyude Paul <lyude at redhat.com> 
Sent: November 16, 2018 6:25 PM
To: amd-gfx at lists.freedesktop.org
Cc: Zuo, Jerry <Jerry.Zuo at amd.com>; Wentland, Harry <Harry.Wentland at amd.com>; Li, Sun peng (Leo) <Sunpeng.Li at amd.com>; Deucher, Alexander <Alexander.Deucher at amd.com>; Koenig, Christian <Christian.Koenig at amd.com>; Zhou, David(ChunMing) <David1.Zhou at amd.com>; David Airlie <airlied at linux.ie>; Li, Roman <Roman.Li at amd.com>; S, Shirish <Shirish.S at amd.com>; Daniel Vetter <daniel.vetter at ffwll.ch>; dri-devel at lists.freedesktop.org; linux-kernel at vger.kernel.org
Subject: [PATCH 1/2] drm/amd/dm: Don't forget to attach MST encoders

Drive-by fix, this is bound to cause problems somewhere.

Signed-off-by: Lyude Paul <lyude at redhat.com>
Cc: Jerry Zuo <Jerry.Zuo at amd.com>
---
 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c | 2 ++
 1 file changed, 2 insertions(+)

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 d02c32a1039c..0cca1809fdcd 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
@@ -342,6 +342,8 @@ dm_dp_add_mst_connector(struct drm_dp_mst_topology_mgr *mgr,
 		master->connector_id);
 
 	aconnector->mst_encoder = dm_dp_create_fake_mst_encoder(master);
+	drm_connector_attach_encoder(&aconnector->base,
+				     &aconnector->mst_encoder->base);
 
 	/*
 	 * TODO: understand why this one is needed
-- 
2.19.1



More information about the amd-gfx mailing list