Hi @De Marchi, Lucas > -----Original Message----- > From: De Marchi, Lucas <lucas.demarchi@xxxxxxxxx> > Sent: Wednesday, June 12, 2024 10:02 AM > To: Golani, Mitulkumar Ajitkumar <mitulkumar.ajitkumar.golani@xxxxxxxxx> > Cc: intel-xe@xxxxxxxxxxxxxxxxxxxxx; intel-gfx@xxxxxxxxxxxxxxxxxxxxx > Subject: Re: [RFC] drm/i915/display: Update vtotal math to address 32b build > > On Wed, Jun 12, 2024 at 12:02:08AM GMT, Mitul Golani wrote: > >Fix few divisions which may not work on 32b builds. > > > >Use DIV_ROUND_UP, with that expecting deviate params from +/- 1 > >accuracy in value. > > > >Fixes: 1676ecd303ac ("drm/i915: Compute CMRR and calculate vtotal") > >Signed-off-by: Mitul Golani <mitulkumar.ajitkumar.golani@xxxxxxxxx> > >--- > > drivers/gpu/drm/i915/display/intel_vrr.c | 10 ++++++---- > > 1 file changed, 6 insertions(+), 4 deletions(-) > > > >diff --git a/drivers/gpu/drm/i915/display/intel_vrr.c > >b/drivers/gpu/drm/i915/display/intel_vrr.c > >index 05f67dc9d98d..5112961f6964 100644 > >--- a/drivers/gpu/drm/i915/display/intel_vrr.c > >+++ b/drivers/gpu/drm/i915/display/intel_vrr.c > >@@ -122,10 +122,11 @@ is_cmrr_frac_required(struct intel_crtc_state > >*crtc_state) > > > > actual_refresh_k = > > drm_mode_vrefresh(adjusted_mode) * > FIXED_POINT_PRECISION; > >- pixel_clock_per_line = > >- adjusted_mode->crtc_clock * 1000 / adjusted_mode- > >crtc_htotal; > >+ pixel_clock_per_line = DIV_ROUND_UP(adjusted_mode->crtc_clock * > 1000, > >+ adjusted_mode->crtc_htotal); > > calculated_refresh_k = > >- pixel_clock_per_line * FIXED_POINT_PRECISION / > adjusted_mode->crtc_vtotal; > >+ DIV_ROUND_UP(pixel_clock_per_line * > FIXED_POINT_PRECISION, > >+ adjusted_mode->crtc_vtotal); > > > > if ((actual_refresh_k - calculated_refresh_k) < > CMRR_PRECISION_TOLERANCE) > > return false; > >@@ -149,7 +150,8 @@ cmrr_get_vtotal(struct intel_crtc_state > >*crtc_state, bool video_mode_required) > > > > 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; > >+ vtotal = DIV_ROUND_UP(adjusted_mode->crtc_clock * 1000 * > multiplier_n, > >+ crtc_state->cmrr.cmrr_n); > > to fix the 32b build you need to build with DIV_ROUND_UP_ULL (). > Thanks, tried with DIV_ROUND_UP_ULL, build is passing on 32b config as well. Change is floated for review. Regards, Mitul > Lucas De Marchi > > > adjusted_pixel_rate = adjusted_mode->crtc_clock * 1000 * > multiplier_m; > > crtc_state->cmrr.cmrr_m = do_div(adjusted_pixel_rate, > > crtc_state->cmrr.cmrr_n); > > > >-- > >2.45.2 > >