DF-4652 / fix.diff
--- a/sys/dev/drm/amd/amdgpu/atombios_dp.c +++ b/sys/dev/drm/amd/amdgpu/atombios_dp.c @@ -591,6 +591,7 @@ bool clock_recovery; u8 voltage; int i; + int max_loop_tries = 50; amdgpu_atombios_dp_set_tp(dp_info, DP_TRAINING_PATTERN_1); memset(dp_info->train_set, 0, 4); @@ -603,6 +604,11 @@ dp_info->tries = 0; voltage = 0xff; while (1) { + if (max_loop_tries-- <= 0) { + DRM_ERROR("clock recovery exceeded max loop attempts\n"); + break; + } + drm_dp_link_train_clock_recovery_delay(dp_info->dpcd); if (drm_dp_dpcd_read_link_status(dp_info->aux, |