Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/i915/display: Remove FBC modulo 4 restriction for ADL-P+

WA:22010751166 does not apply past display version 12. Or, in
other words, the FBC restriction where FBC is disabled for
non-modulo 4 plane sizes (including plane size + yoffset) is fixed
from display version 13 and onwards. Relax the restriction for the same.

v4: Dropped redundant commit message

v3: Update comments for clarity (Jonathan Cavitt)

v2: Update the macro for display version check (Vinod)

Suggested-by: Vidya Srinivas <vidya.srinivas@intel.com>
Signed-off-by: Uma Shankar <uma.shankar@intel.com>
Reviewed-by: Vinod Govindapillai <vinod.govindapillai@intel.com>
Reviewed-by: Jonathan Cavitt <jonathan.cavitt@intel.com>
Link: https://lore.kernel.org/r/20250904095338.300813-2-uma.shankar@intel.com

+2 -2
+2 -2
drivers/gpu/drm/i915/display/intel_fbc.c
··· 1550 1550 * having a Y offset that isn't divisible by 4 causes FIFO underrun 1551 1551 * and screen flicker. 1552 1552 */ 1553 - if (DISPLAY_VER(display) >= 9 && 1553 + if (IS_DISPLAY_VER(display, 9, 12) && 1554 1554 plane_state->view.color_plane[0].y & 3) { 1555 1555 plane_state->no_fbc_reason = "plane start Y offset misaligned"; 1556 1556 return 0; 1557 1557 } 1558 1558 1559 1559 /* Wa_22010751166: icl, ehl, tgl, dg1, rkl */ 1560 - if (DISPLAY_VER(display) >= 11 && 1560 + if (IS_DISPLAY_VER(display, 9, 12) && 1561 1561 (plane_state->view.color_plane[0].y + 1562 1562 (drm_rect_height(&plane_state->uapi.src) >> 16)) & 3) { 1563 1563 plane_state->no_fbc_reason = "plane end Y offset misaligned";