Message ID | 20240614044213.377710-1-mitulkumar.ajitkumar.golani@intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [v2] drm/i915/display: Update calculation to avoid overflow | expand |
On Fri, Jun 14, 2024 at 10:12:13AM GMT, Mitul Golani wrote: >Update calculation to avoid overflow. > >-v2: >Remove extra line between cc and signed-off. > >Fixes: 1676ecd303ac ("drm/i915: Compute CMRR and calculate vtotal") >Cc: Mitul Golani <mitulkumar.ajitkumar.golani@intel.com> >Cc: Ankit Nautiyal <ankit.k.nautiyal@intel.com> >Cc: Suraj Kandpal <suraj.kandpal@intel.com> >Cc: Jani Nikula <jani.nikula@linux.intel.com> >Cc: Stephen Rothwell <sfr@canb.auug.org.au> >Signed-off-by: Mitul Golani <mitulkumar.ajitkumar.golani@intel.com> >Reviewed-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com> Acked-by: Lucas De Marchi <lucas.demarchi@intel.com> Lucas De Marchi
diff --git a/drivers/gpu/drm/i915/display/intel_vrr.c b/drivers/gpu/drm/i915/display/intel_vrr.c index eb5b62b54d32..6430da25957d 100644 --- a/drivers/gpu/drm/i915/display/intel_vrr.c +++ b/drivers/gpu/drm/i915/display/intel_vrr.c @@ -147,10 +147,11 @@ cmrr_get_vtotal(struct intel_crtc_state *crtc_state, bool video_mode_required) multiplier_n = 1000; } - crtc_state->cmrr.cmrr_n = - desired_refresh_rate * adjusted_mode->crtc_htotal * multiplier_n; - vtotal = (adjusted_mode->crtc_clock * 1000 * multiplier_n) / crtc_state->cmrr.cmrr_n; - adjusted_pixel_rate = adjusted_mode->crtc_clock * 1000 * multiplier_m; + crtc_state->cmrr.cmrr_n = mul_u32_u32(desired_refresh_rate * adjusted_mode->crtc_htotal, + multiplier_n); + vtotal = DIV_ROUND_UP_ULL(mul_u32_u32(adjusted_mode->crtc_clock * 1000, multiplier_n), + crtc_state->cmrr.cmrr_n); + adjusted_pixel_rate = mul_u32_u32(adjusted_mode->crtc_clock * 1000, multiplier_m); crtc_state->cmrr.cmrr_m = do_div(adjusted_pixel_rate, crtc_state->cmrr.cmrr_n); return vtotal;