]> git.ipfire.org Git - thirdparty/kernel/stable.git/commit
drm/amd/display: phase2 enable mst hdcp multiple displays
authorhersen wu <hersenxs.wu@amd.com>
Mon, 14 Nov 2022 19:29:56 +0000 (14:29 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 9 May 2025 07:41:45 +0000 (09:41 +0200)
commit8a86bb891bf89b235623eef32f8aaef2a8ee28b3
tree17534421ef53a6fc8cce09122f1db066b59be94d
parent8316820e4082052666872398a31c91668d1f8461
drm/amd/display: phase2 enable mst hdcp multiple displays

[ Upstream commit aa9fdd5d5add50305d2022fa072fe6f189283415 ]

[why]
For MST topology with 1 physical link and multiple connectors (>=2),
e.g. daisy cahined MST + SST, or 1-to-multi MST hub, if userspace
set to enable the HDCP simultaneously on all connected outputs, the
commit tail iteratively call the hdcp_update_display() for each
display (connector). However, the hdcp workqueue data structure for
each link has only one DM connector and encryption status members,
which means the work queue of property_validate/update() would only
be triggered for the last connector within this physical link, and
therefore the HDCP property value of other connectors would stay on
DESIRED instead of switching to ENABLED, which is NOT as expected.

[how]
Use array of AMDGPU_DM_MAX_DISPLAY_INDEX for both aconnector and
encryption status in hdcp workqueue data structure for each physical
link. For property validate/update work queue, we iterates over the
array and do similar operation/check for each connected display.

Tested-by: Daniel Wheeler <Daniel.Wheeler@amd.com>
Signed-off-by: hersen wu <hersenxs.wu@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Stable-dep-of: be593d9d91c5 ("drm/amd/display: Fix slab-use-after-free in hdcp")
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_hdcp.c
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_hdcp.h