diff --git a/sys/dev/drm/radeon/si_dpm.c b/sys/dev/drm/radeon/si_dpm.c --- a/sys/dev/drm/radeon/si_dpm.c +++ b/sys/dev/drm/radeon/si_dpm.c @@ -6057,6 +6057,14 @@ t_diff1 = rdev->pm.dpm.fan.t_med - rdev->pm.dpm.fan.t_min; t_diff2 = rdev->pm.dpm.fan.t_high - rdev->pm.dpm.fan.t_med; + if (t_diff1 == 0 || t_diff2 == 0) { + dev_err(rdev->dev, "invalid thermal fan table: zero temperature delta (t_min=%u t_med=%u t_high=%u)\n", + rdev->pm.dpm.fan.t_min, rdev->pm.dpm.fan.t_med, + rdev->pm.dpm.fan.t_high); + rdev->pm.dpm.fan.ucode_fan_control = false; + return -EINVAL; + } + pwm_diff1 = rdev->pm.dpm.fan.pwm_med - rdev->pm.dpm.fan.pwm_min; pwm_diff2 = rdev->pm.dpm.fan.pwm_high - rdev->pm.dpm.fan.pwm_med;