--- a/sys/dev/drm/radeon/radeon_atombios.c +++ b/sys/dev/drm/radeon/radeon_atombios.c @@ -1544,6 +1544,8 @@ bool radeon_atombios_get_asic_ss_info(struct radeon_device *rdev, ss->rate = le16_to_cpu(ss_assign->v1.usSpreadRateInKhz); ss->percentage_divider = 100; + if (!ss->rate) + return false; return true; @@ -1567,6 +1569,9 @@ bool radeon_atombios_get_asic_ss_info(struct radeon_device *rdev, ((id == ASIC_INTERNAL_ENGINE_SS) || (id == ASIC_INTERNAL_MEMORY_SS))) ss->rate /= 100; + if (!ss->rate) + return false; return true; @@ -1593,6 +1598,9 @@ bool radeon_atombios_get_asic_ss_info(struct radeon_device *rdev, if ((id == ASIC_INTERNAL_ENGINE_SS) || (id == ASIC_INTERNAL_MEMORY_SS)) ss->rate /= 100; + if (!ss->rate) + return false; if (rdev->flags & RADEON_IS_IGP) radeon_atombios_get_igp_ss_overrides(rdev, ss, id);