Message ID | a79d1142-6a97-dba6-0652-0258488c789c@linux.intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Hi, On Monday 17 July 2017 04:01 PM, Maarten Lankhorst wrote: > Op 17-07-17 om 12:32 schreef Mahesh Kumar: >> Hi, >> >> >> On Monday 17 July 2017 03:22 PM, Jani Nikula wrote: >>> On Mon, 17 Jul 2017, David Binderman <dcb314@hotmail.com> wrote: >>>> Hello there, >>> Hello. No need to include LKML for stuff like this. But Cc'd the folks >>> from the broken commit. >>> >>>> drivers/gpu/drm/i915/intel_pm.c:4467]: (warning) Comparison of a boolean expression with an integer other than 0 or 1. >>>> >>>> Source code is >>>> >>>> else if ((ddb_allocation && ddb_allocation / >>>> fixed_16_16_to_u32_round_up(plane_blocks_per_line)) >= 1) >> ddb_allocation being integer was intentional. >> Other than that code has improper parentheses as well. >> intention was if ddb_allocation is not 0 & (ddb_allocation / plane_blocks_per_line >= 1) then execute the condition. >> it should have been >> else if (ddb_allocation && (ddb_allocation / fixed_16_16_to_u32_round_up(plane_blocks_per_line) >= 1)) >> >> will post a fix. >> >> thanks. >> >> -Mahesh >>> Broken by >>> >>> commit d555cb5827d603244969e08444340e3db78c8a37 >>> Author: Kumar, Mahesh <mahesh1.kumar@intel.com> >>> Date: Wed May 17 17:28:29 2017 +0530 >>> >>> drm/i915/skl+: use linetime latency if ddb size is not available >>> >>> The broken code has since been removed by bb9d85f6e9de ("drm/i915/skl: >>> New ddb allocation algorithm") but restored by 9a30a26122c3 ("Revert >>> "drm/i915/skl: New ddb allocation algorithm""). *sigh*. >>> >>> Mahesh et al, please figure it out. >>> >>> >>> BR, >>> Jani. >>> >>> > Would this work? > > diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c > index 78b9acfc64c0..b9b3d8d45016 100644 > --- a/drivers/gpu/drm/i915/intel_pm.c > +++ b/drivers/gpu/drm/i915/intel_pm.c > @@ -4681,8 +4681,8 @@ static int skl_compute_plane_wm(const struct drm_i915_private *dev_priv, > if ((cpp * cstate->base.adjusted_mode.crtc_htotal / 512 < 1) && > (plane_bytes_per_line / 512 < 1)) > selected_result = method2; > - else if ((ddb_allocation && ddb_allocation / > - fixed_16_16_to_u32_round_up(plane_blocks_per_line)) >= 1) > + else if (ddb_allocation >= > + fixed_16_16_to_u32_round_up(plane_blocks_per_line)) yes, this would even simplify the condition :) -Mahesh > selected_result = min_fixed_16_16(method1, method2); > else if (latency >= linetime_us) > selected_result = min_fixed_16_16(method1, method2); >
diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c index 78b9acfc64c0..b9b3d8d45016 100644 --- a/drivers/gpu/drm/i915/intel_pm.c +++ b/drivers/gpu/drm/i915/intel_pm.c @@ -4681,8 +4681,8 @@ static int skl_compute_plane_wm(const struct drm_i915_private *dev_priv, if ((cpp * cstate->base.adjusted_mode.crtc_htotal / 512 < 1) && (plane_bytes_per_line / 512 < 1)) selected_result = method2; - else if ((ddb_allocation && ddb_allocation / - fixed_16_16_to_u32_round_up(plane_blocks_per_line)) >= 1) + else if (ddb_allocation >= + fixed_16_16_to_u32_round_up(plane_blocks_per_line)) selected_result = min_fixed_16_16(method1, method2); else if (latency >= linetime_us) selected_result = min_fixed_16_16(method1, method2);