aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYoung Xiao <[email protected]>2018-12-17 12:23:03 +0000
committerJani Nikula <[email protected]>2018-12-28 11:35:52 +0200
commitb8449c43c95b5ea40ced8824d4ddea997f77b911 (patch)
treec8d192bf22bd498f3627690833370d04f4ce53a1
parent6879216897b7dd4cfeaaed8e80e0374f260fc594 (diff)
drm/i915: avoid division by zero on skl_calc_wrpll_link
If for some unexpected reason the registers all read zero it's better to WARN and return instead of dividing by zero and completely freezing the machine. See commit 0e005888b833 ("drm/i915: avoid division by zero on cnl_calc_wrpll_link") for detail. Signed-off-by: Young Xiao <[email protected]> Signed-off-by: Jani Nikula <[email protected]> Link: https://patchwork.freedesktop.org/patch/msgid/SG2PR01MB2169F6E95BC8BB5E29477042ADBC0@SG2PR01MB2169.apcprd01.prod.exchangelabs.com
-rw-r--r--drivers/gpu/drm/i915/intel_ddi.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c
index fdf57f451b72..2d6ed990a232 100644
--- a/drivers/gpu/drm/i915/intel_ddi.c
+++ b/drivers/gpu/drm/i915/intel_ddi.c
@@ -1296,6 +1296,9 @@ static int skl_calc_wrpll_link(struct drm_i915_private *dev_priv,
dco_freq += (((cfgcr1_val & DPLL_CFGCR1_DCO_FRACTION_MASK) >> 9) * 24 *
1000) / 0x8000;
+ if (WARN_ON(p0 == 0 || p1 == 0 || p2 == 0))
+ return 0;
+
return dco_freq / (p0 * p1 * p2 * 5);
}