]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/i915/bw: Fix DEPROGBWPCLIMIT handling on BMG
authorVille Syrjälä <ville.syrjala@linux.intel.com>
Fri, 22 May 2026 20:03:42 +0000 (23:03 +0300)
committerVille Syrjälä <ville.syrjala@linux.intel.com>
Thu, 28 May 2026 03:50:44 +0000 (06:50 +0300)
DEPROGBWPCLIMIT is specified in %, so divide by 100 instead of 10.

Fortunately the deprobbwlimit is much lower than the peak memory
bandwidth on BMG, so whether we take 60% or 600% of the peak
bandwidth doesn't matter as the min() will pick the lower
deprobbwlimit anyway.

Eg. on the BMG here I get (with or without the fix):
 QGV 0: deratedbw=33600 peakbw=48000
 QGV 1: deratedbw=53000 peakbw=456000

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patch.msgid.link/20260522200346.17377-7-ville.syrjala@linux.intel.com
Reviewed-by: Michał Grzelak <michal.grzelak@intel.com>
drivers/gpu/drm/i915/display/intel_bw.c

index 53e83eb1a4253bf2725a509c02b0620eb2373257..6ebf33e6e343ec28e7423a5132c6908444c96a7a 100644 (file)
@@ -738,7 +738,7 @@ static int xe2_hpd_get_bw_info(struct intel_display *display,
        }
 
        peakbw = num_channels * qi.channel_width / 8 * icl_sagv_max_dclk(&qi);
-       maxdebw = min(soc_bw_params->deprogbwlimit * 1000, peakbw * DEPROGBWPCLIMIT / 10);
+       maxdebw = min(soc_bw_params->deprogbwlimit * 1000, peakbw * DEPROGBWPCLIMIT / 100);
 
        for (i = 0; i < qi.num_points; i++) {
                const struct intel_qgv_point *point = &qi.points[i];