drm/amd/display: Use PSR version selected during set_psr_caps
authorNicholas Kazlauskas <nicholas.kazlauskas@amd.com>
Sun, 23 Jan 2022 18:20:04 +0000 (13:20 -0500)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 25 Jan 2022 23:00:35 +0000 (18:00 -0500)
[Why]
If the DPCD caps specifies a PSR version newer than PSR_VERSION_1 then
we fallback to using PSR_VERSION_1 in amdgpu_dm_set_psr_caps.

This gets overriden with the raw DPCD value in amdgpu_dm_link_setup_psr,
which can result in DMCUB hanging if we pass in an unsupported PSR
version number.

[How]
Fix the hang by using link->psr_settings.psr_version directly during
amdgpu_dm_link_setup_psr.

Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
Reviewed-by: Anthony Koo <Anthony.Koo@amd.com>
Acked-by: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com>
Signed-off-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_psr.c

index c510638..a009fc6 100644 (file)
@@ -149,10 +149,8 @@ bool amdgpu_dm_link_setup_psr(struct dc_stream_state *stream)
 
        link = stream->link;
 
-       psr_config.psr_version = link->dpcd_caps.psr_caps.psr_version;
-
-       if (psr_config.psr_version > 0) {
-               psr_config.psr_exit_link_training_required = 0x1;
+       if (link->psr_settings.psr_version != DC_PSR_VERSION_UNSUPPORTED) {
+               psr_config.psr_version = link->psr_settings.psr_version;
                psr_config.psr_frame_capture_indication_req = 0;
                psr_config.psr_rfb_setup_time = 0x37;
                psr_config.psr_sdp_transmit_line_num_deadline = 0x20;