DF-4589 / fix.diff
--- a/sys/dev/drm/radeon/atombios_dp.c +++ b/sys/dev/drm/radeon/atombios_dp.c @@ -670,6 +670,7 @@ bool clock_recovery; u8 voltage; int i; + int max_loop_tries = 50; radeon_dp_set_tp(dp_info, DP_TRAINING_PATTERN_1); memset(dp_info->train_set, 0, 4); @@ -682,6 +683,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, |