]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/i915/bw: Fix num_planes handling on TGL+
authorVille Syrjälä <ville.syrjala@linux.intel.com>
Fri, 22 May 2026 20:03:37 +0000 (23:03 +0300)
committerVille Syrjälä <ville.syrjala@linux.intel.com>
Thu, 28 May 2026 03:44:12 +0000 (06:44 +0300)
The TGL+ bw code has an off by one error on the num_planes
calculation, and tgl_max_bw_index() incorrectly bumps
the num_planes to 1 from 0.

That approach made sense on ICL where num_planes is more or
less a minimum number of planes to consider for the group,
but on TGL+ num_planes really is a maximum number of planes,
so these adjustments no longer make any sense there.

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

index d5aac5abea6f9fcd3025acdd65aac535b8f542a6..c7b59cad176ab96b6045a8d0d2d7125fe2de9293 100644 (file)
@@ -636,8 +636,7 @@ static int tgl_get_bw_info(struct intel_display *display,
                        bi_next = &display->bw.max[i + 1];
 
                        if (clpchgroup < clperchgroup)
-                               bi_next->num_planes = (ipqdepth - clpchgroup) /
-                                                      clpchgroup + 1;
+                               bi_next->num_planes = (ipqdepth - clpchgroup) / clpchgroup;
                        else
                                bi_next->num_planes = 0;
                }
@@ -802,11 +801,6 @@ static unsigned int tgl_max_bw_index(struct intel_display *display,
 {
        int i;
 
-       /*
-        * Let's return max bw for 0 planes
-        */
-       num_planes = max(1, num_planes);
-
        for (i = ARRAY_SIZE(display->bw.max) - 1; i >= 0; i--) {
                const struct intel_bw_info *bi =
                        &display->bw.max[i];