drm/amd/display: on dp link lost event toggle dpms for master pipe only
authorWenjing Liu <wenjing.liu@amd.com>
Sat, 28 Jan 2023 00:16:05 +0000 (19:16 -0500)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 14 Feb 2023 21:03:49 +0000 (16:03 -0500)
commited6941b632100169aea453f60461ab79111af48c
tree99f3c879ac5dc93be0fe2a7f4e8d0231ccc319ae
parent3d8fcc6740c9f959bc490cd4a084c5a55b572987
drm/amd/display: on dp link lost event toggle dpms for master pipe only

[why]
We mistakenly toggle dpms state for non master pipe when handling
link lost. A non master pipe doesn't connect to a backend. So it is
toggling dpms for non master is undefined and caused NULL pointer
dereference.

[how]
Add helper functions to find an array of active master pipes for current
link and only toggle DPMS for active master pipes connected to the link.
Add assert in case we get called to program dpms with non master pipe.

Reviewed-by: Alvin Lee <Alvin.Lee2@amd.com>
Acked-by: Qingqing Zhuo <qingqing.zhuo@amd.com>
Signed-off-by: Wenjing Liu <wenjing.liu@amd.com>
Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/dc/link/accessories/link_dp_cts.c
drivers/gpu/drm/amd/display/dc/link/link_detection.c
drivers/gpu/drm/amd/display/dc/link/link_dpms.c
drivers/gpu/drm/amd/display/dc/link/link_dpms.h
drivers/gpu/drm/amd/display/dc/link/protocols/link_dp_irq_handler.c