Intel-GFX Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 00/15] drm/i915/pfit: Make GMCH panel fitter nicer
@ 2026-10-19 13:52 Ville Syrjala
  2026-10-19 13:52 ` [PATCH 01/15] drm/i915/pfit: s/pch_pfit/pfit/ Ville Syrjala
                   ` (17 more replies)
  0 siblings, 18 replies; 35+ messages in thread
From: Ville Syrjala @ 2026-10-19 13:52 UTC (permalink / raw)
  To: intel-gfx; +Cc: intel-xe

From: Ville Syrjälä <ville.syrjala@linux.intel.com>

Eliminate the GMCH vs. ILK+ panel fitter differences in high
level code by populating the crtc_state->pch_pfit (will be
just crtc_state->pfit from now on) information on GMCH
platofrms. Also include a few other assorted improvements
to the pfit code.

Ville Syrjälä (15):
  drm/i915/pfit: s/pch_pfit/pfit/
  drm/i915/pfit: s/intel_pch_pfit/ilk_pfit/
  drm/i915/pfit: Stop using HAS_PCH_SPLIT() in confusing places
  drm/i915/pfit: Introduce intel_pfit_get_config()
  drm/i915/pfit: Rename some pfit functions
  drm/i915/pfit: Extract i965_pfit_get_config()
  drm/i915/pfit: Drop platform check for gmch_pfit.pgm_ratios
  drm/i915/pfit: Unconfuse panel_fitter_scaling()
  drm/i915/pfit: Populate crtc_state->pfit.dst on GMCH platforms
  drm/i915/pfit: Check scaling factor on GMCH
  drm/i915/pfit: Check panel fitter source size on GMCH
  drm/i915/pfit: Extract i9xx_pfit_vscale_ratio() and
    i9xx_pfit_is_one_line_mode()
  drm/i915/pfit: No pfit one line mode on i965+
  drm/i915/pfit: Account for pfit downscaling in pixel rate on GMCH
    platforms
  drm/i915/pfit: Allow downscaling on i966+

 drivers/gpu/drm/i915/display/i9xx_wm.c        |   2 +-
 drivers/gpu/drm/i915/display/intel_casf.c     |  28 +-
 .../drm/i915/display/intel_crtc_state_dump.c  |  16 +-
 drivers/gpu/drm/i915/display/intel_ddi.c      |   6 +-
 drivers/gpu/drm/i915/display/intel_display.c  |  77 ++-
 .../drm/i915/display/intel_display_debugfs.c  |   2 +-
 .../drm/i915/display/intel_display_types.h    |   4 +-
 drivers/gpu/drm/i915/display/intel_overlay.c  |  31 +-
 drivers/gpu/drm/i915/display/intel_pfit.c     | 459 ++++++++++++++----
 drivers/gpu/drm/i915/display/intel_pfit.h     |   8 +-
 .../gpu/drm/i915/display/intel_pfit_regs.h    |   4 +-
 drivers/gpu/drm/i915/display/skl_scaler.c     |  40 +-
 12 files changed, 447 insertions(+), 230 deletions(-)

-- 
2.55.0


^ permalink raw reply	[flat|nested] 35+ messages in thread

* [PATCH 01/15] drm/i915/pfit: s/pch_pfit/pfit/
  2026-10-19 13:52 [PATCH 00/15] drm/i915/pfit: Make GMCH panel fitter nicer Ville Syrjala
@ 2026-10-19 13:52 ` Ville Syrjala
  2026-10-19 15:48   ` Jani Nikula
  2026-10-19 13:52 ` [PATCH 02/15] drm/i915/pfit: s/intel_pch_pfit/ilk_pfit/ Ville Syrjala
                   ` (16 subsequent siblings)
  17 siblings, 1 reply; 35+ messages in thread
From: Ville Syrjala @ 2026-10-19 13:52 UTC (permalink / raw)
  To: intel-gfx; +Cc: intel-xe

From: Ville Syrjälä <ville.syrjala@linux.intel.com>

Rename crtc_state->pch_fit to just crtc_state->pfit in
anticipation of using it also on GMCH platforms.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 drivers/gpu/drm/i915/display/intel_casf.c     | 28 ++++++-------
 .../drm/i915/display/intel_crtc_state_dump.c  | 14 +++----
 drivers/gpu/drm/i915/display/intel_ddi.c      |  6 +--
 drivers/gpu/drm/i915/display/intel_display.c  | 36 ++++++++---------
 .../drm/i915/display/intel_display_types.h    |  4 +-
 drivers/gpu/drm/i915/display/intel_pfit.c     | 18 ++++-----
 drivers/gpu/drm/i915/display/skl_scaler.c     | 40 +++++++++----------
 7 files changed, 73 insertions(+), 73 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_casf.c b/drivers/gpu/drm/i915/display/intel_casf.c
index cafd21a03632..64d99d6480ac 100644
--- a/drivers/gpu/drm/i915/display/intel_casf.c
+++ b/drivers/gpu/drm/i915/display/intel_casf.c
@@ -81,11 +81,11 @@ static void intel_casf_compute_win_size(struct intel_crtc_state *crtc_state)
 	u32 total_pixels = mode->hdisplay * mode->vdisplay;
 
 	if (total_pixels <= MAX_PIXELS_FOR_3_TAP_FILTER)
-		crtc_state->pch_pfit.casf.win_size = SHARPNESS_FILTER_SIZE_3X3;
+		crtc_state->pfit.casf.win_size = SHARPNESS_FILTER_SIZE_3X3;
 	else if (total_pixels <= MAX_PIXELS_FOR_5_TAP_FILTER)
-		crtc_state->pch_pfit.casf.win_size = SHARPNESS_FILTER_SIZE_5X5;
+		crtc_state->pfit.casf.win_size = SHARPNESS_FILTER_SIZE_5X5;
 	else
-		crtc_state->pch_pfit.casf.win_size = SHARPNESS_FILTER_SIZE_7X7;
+		crtc_state->pfit.casf.win_size = SHARPNESS_FILTER_SIZE_7X7;
 }
 
 static void intel_casf_scaler_compute_coeff(struct intel_crtc_state *crtc_state);
@@ -103,7 +103,7 @@ int intel_casf_compute_config(struct intel_crtc_state *crtc_state)
 		return -EINVAL;
 	}
 
-	crtc_state->pch_pfit.casf.enable = true;
+	crtc_state->pfit.casf.enable = true;
 
 	/*
 	 * HW takes a value in form (1.0 + strength) in 4.4 fixed format.
@@ -113,7 +113,7 @@ int intel_casf_compute_config(struct intel_crtc_state *crtc_state)
 	 * 6.3125 in 4.4 format is b01100101 which is equal to 101.
 	 * Also 85 + 16 = 101.
 	 */
-	crtc_state->pch_pfit.casf.strength =
+	crtc_state->pfit.casf.strength =
 		min(crtc_state->hw.sharpness_strength, 0xEF) + 0x10;
 
 	intel_casf_compute_win_size(crtc_state);
@@ -133,12 +133,12 @@ void intel_casf_sharpness_get_config(struct intel_crtc_state *crtc_state)
 	if (sharp & FILTER_EN) {
 		if (drm_WARN_ON(display->drm,
 				REG_FIELD_GET(FILTER_STRENGTH_MASK, sharp) < 16))
-			crtc_state->pch_pfit.casf.strength = 0;
+			crtc_state->pfit.casf.strength = 0;
 		else
-			crtc_state->pch_pfit.casf.strength =
+			crtc_state->pfit.casf.strength =
 				REG_FIELD_GET(FILTER_STRENGTH_MASK, sharp);
-		crtc_state->pch_pfit.casf.enable = true;
-		crtc_state->pch_pfit.casf.win_size =
+		crtc_state->pfit.casf.enable = true;
+		crtc_state->pfit.casf.win_size =
 			REG_FIELD_GET(FILTER_SIZE_MASK, sharp);
 	}
 }
@@ -153,7 +153,7 @@ static u32 casf_coeff(const struct intel_crtc_state *crtc_state, int tap)
 	struct scaler_filter_coeff value;
 	u32 coeff;
 
-	value = crtc_state->pch_pfit.casf.coeff[tap];
+	value = crtc_state->pfit.casf.coeff[tap];
 	value.sign = 0;
 
 	coeff = value.sign << 15 | value.exp << 12 | value.mantissa << 3;
@@ -163,7 +163,7 @@ static u32 casf_coeff(const struct intel_crtc_state *crtc_state, int tap)
 /*
  * 17 phase of 7 taps requires 119 coefficients in 60 dwords per set.
  * To enable casf: program scaler coefficients with the coefficients
- * that are calculated and stored in pch_pfit.casf.coeff as per
+ * that are calculated and stored in pfit.casf.coeff as per
  * SCALER_COEFFICIENT_FORMAT
  */
 static void intel_casf_write_coeff(const struct intel_crtc_state *crtc_state)
@@ -221,9 +221,9 @@ static void intel_casf_scaler_compute_coeff(struct intel_crtc_state *crtc_state)
 	u16 sum_coeff = 0;
 	int i;
 
-	if (crtc_state->pch_pfit.casf.win_size == 0)
+	if (crtc_state->pfit.casf.win_size == 0)
 		filtercoeff = filtercoeff_1;
-	else if (crtc_state->pch_pfit.casf.win_size == 1)
+	else if (crtc_state->pfit.casf.win_size == 1)
 		filtercoeff = filtercoeff_2;
 	else
 		filtercoeff = filtercoeff_3;
@@ -233,7 +233,7 @@ static void intel_casf_scaler_compute_coeff(struct intel_crtc_state *crtc_state)
 
 	for (i = 0; i < SCALER_FILTER_NUM_TAPS; i++) {
 		filter_coeff[i] = (*(filtercoeff + i) * 100 / sum_coeff);
-		convert_sharpness_coeff_binary(&crtc_state->pch_pfit.casf.coeff[i],
+		convert_sharpness_coeff_binary(&crtc_state->pfit.casf.coeff[i],
 					      filter_coeff[i]);
 	}
 }
diff --git a/drivers/gpu/drm/i915/display/intel_crtc_state_dump.c b/drivers/gpu/drm/i915/display/intel_crtc_state_dump.c
index 92675a88b969..f30d07bc6b07 100644
--- a/drivers/gpu/drm/i915/display/intel_crtc_state_dump.c
+++ b/drivers/gpu/drm/i915/display/intel_crtc_state_dump.c
@@ -356,15 +356,15 @@ void intel_crtc_state_dump(const struct intel_crtc_state *pipe_config,
 			   pipe_config->gmch_pfit.pgm_ratios,
 			   pipe_config->gmch_pfit.lvds_border_bits);
 	else
-		drm_printf(&p, "pch pfit: " DRM_RECT_FMT ", %s, force thru: %s\n",
-			   DRM_RECT_ARG(&pipe_config->pch_pfit.dst),
-			   str_enabled_disabled(pipe_config->pch_pfit.enabled),
-			   str_yes_no(pipe_config->pch_pfit.force_thru));
+		drm_printf(&p, "pfit: " DRM_RECT_FMT ", %s, force thru: %s\n",
+			   DRM_RECT_ARG(&pipe_config->pfit.dst),
+			   str_enabled_disabled(pipe_config->pfit.enabled),
+			   str_yes_no(pipe_config->pfit.force_thru));
 
 	drm_printf(&p, "sharpness strength: %d, sharpness tap size: %d, sharpness enable: %d\n",
-		   pipe_config->pch_pfit.casf.strength,
-		   pipe_config->pch_pfit.casf.win_size,
-		   pipe_config->pch_pfit.casf.enable);
+		   pipe_config->pfit.casf.strength,
+		   pipe_config->pfit.casf.win_size,
+		   pipe_config->pfit.casf.enable);
 
 	drm_printf(&p, "ips: %i, double wide: %i, drrs: %i\n",
 		   pipe_config->ips_enabled, pipe_config->double_wide,
diff --git a/drivers/gpu/drm/i915/display/intel_ddi.c b/drivers/gpu/drm/i915/display/intel_ddi.c
index a46ab5d3d70f..2c09fccecbbf 100644
--- a/drivers/gpu/drm/i915/display/intel_ddi.c
+++ b/drivers/gpu/drm/i915/display/intel_ddi.c
@@ -562,7 +562,7 @@ intel_ddi_transcoder_func_reg_val_get(struct intel_encoder *encoder,
 			 * eDP when not using the panel fitter, and when not
 			 * using motion blur mitigation (which we don't
 			 * support). */
-			if (crtc_state->pch_pfit.force_thru)
+			if (crtc_state->pfit.force_thru)
 				temp |= TRANS_DDI_EDP_INPUT_A_ONOFF;
 			else
 				temp |= TRANS_DDI_EDP_INPUT_A_ON;
@@ -4560,8 +4560,8 @@ static int intel_ddi_compute_config(struct intel_atomic_state *state,
 
 	if (display->platform.haswell && crtc->pipe == PIPE_A &&
 	    pipe_config->cpu_transcoder == TRANSCODER_EDP)
-		pipe_config->pch_pfit.force_thru =
-			pipe_config->pch_pfit.enabled ||
+		pipe_config->pfit.force_thru =
+			pipe_config->pfit.enabled ||
 			pipe_config->crc_enabled;
 
 	if (display->platform.geminilake || display->platform.broxton)
diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index d5d4453f283b..723dec35402a 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -1130,7 +1130,7 @@ static void intel_post_plane_update(struct intel_atomic_state *state,
 		intel_encoders_audio_enable(state, crtc);
 
 	if (intel_display_wa(display, INTEL_DISPLAY_WA_14011503117)) {
-		if (old_crtc_state->pch_pfit.enabled != new_crtc_state->pch_pfit.enabled)
+		if (old_crtc_state->pfit.enabled != new_crtc_state->pfit.enabled)
 			adl_scaler_ecc_unmask(new_crtc_state);
 	}
 
@@ -1652,7 +1652,7 @@ static bool glk_need_scaler_clock_gating_wa(const struct intel_crtc_state *crtc_
 {
 	struct intel_display *display = to_intel_display(crtc_state);
 
-	return DISPLAY_VER(display) == 10 && crtc_state->pch_pfit.enabled;
+	return DISPLAY_VER(display) == 10 && crtc_state->pfit.enabled;
 }
 
 static void glk_pipe_scaler_clock_gating_wa(struct intel_crtc *crtc, bool enable)
@@ -2052,8 +2052,8 @@ static void get_crtc_power_domains(struct intel_crtc_state *crtc_state,
 
 	set_bit(POWER_DOMAIN_PIPE(pipe), mask->bits);
 	set_bit(POWER_DOMAIN_TRANSCODER(cpu_transcoder), mask->bits);
-	if (crtc_state->pch_pfit.enabled ||
-	    crtc_state->pch_pfit.force_thru)
+	if (crtc_state->pfit.enabled ||
+	    crtc_state->pfit.force_thru)
 		set_bit(POWER_DOMAIN_PIPE_PANEL_FITTER(pipe), mask->bits);
 
 	drm_for_each_encoder_mask(encoder, display->drm,
@@ -2288,14 +2288,14 @@ static u32 ilk_pipe_pixel_rate(const struct intel_crtc_state *crtc_state)
 	 * PF-ID we'll need to adjust the pixel_rate here.
 	 */
 
-	if (!crtc_state->pch_pfit.enabled)
+	if (!crtc_state->pfit.enabled)
 		return pixel_rate;
 
 	drm_rect_init(&src, 0, 0,
 		      drm_rect_width(&crtc_state->pipe_src) << 16,
 		      drm_rect_height(&crtc_state->pipe_src) << 16);
 
-	return intel_adjusted_rate(&src, &crtc_state->pch_pfit.dst,
+	return intel_adjusted_rate(&src, &crtc_state->pfit.dst,
 				   pixel_rate);
 }
 
@@ -2311,14 +2311,14 @@ static u32 ilk_pipe_pixel_rate_cdclk(const struct intel_crtc_state *crtc_state)
 	 * PF-ID we'll need to adjust the pixel_rate here.
 	 */
 
-	if (!crtc_state->pch_pfit.enabled)
+	if (!crtc_state->pfit.enabled)
 		return pixel_rate;
 
 	drm_rect_init(&src, 0, 0,
 		      drm_rect_width(&crtc_state->pipe_src) << 16,
 		      drm_rect_height(&crtc_state->pipe_src) << 16);
 
-	return intel_adjusted_rate_cdclk(&src, &crtc_state->pch_pfit.dst,
+	return intel_adjusted_rate_cdclk(&src, &crtc_state->pfit.dst,
 					 pixel_rate, ppc);
 }
 
@@ -4012,7 +4012,7 @@ static bool hsw_get_transcoder_state(struct intel_crtc *crtc,
 				    TRANS_DDI_FUNC_CTL(display, pipe_config->cpu_transcoder));
 
 		if ((tmp & TRANS_DDI_EDP_INPUT_MASK) == TRANS_DDI_EDP_INPUT_A_ONOFF)
-			pipe_config->pch_pfit.force_thru = true;
+			pipe_config->pfit.force_thru = true;
 	}
 
 	tmp = intel_de_read(display,
@@ -5475,16 +5475,16 @@ intel_pipe_config_compare(const struct intel_crtc_state *current_config,
 	 * Changing the EDP transcoder input mux
 	 * (A_ONOFF vs. A_ON) requires a full modeset.
 	 */
-	PIPE_CONF_CHECK_BOOL(pch_pfit.force_thru);
+	PIPE_CONF_CHECK_BOOL(pfit.force_thru);
 
 	if (!fastset) {
 		PIPE_CONF_CHECK_RECT(pipe_src);
 
-		PIPE_CONF_CHECK_BOOL(pch_pfit.enabled);
-		PIPE_CONF_CHECK_RECT(pch_pfit.dst);
-		PIPE_CONF_CHECK_BOOL(pch_pfit.casf.enable);
-		PIPE_CONF_CHECK_I(pch_pfit.casf.win_size);
-		PIPE_CONF_CHECK_I(pch_pfit.casf.strength);
+		PIPE_CONF_CHECK_BOOL(pfit.enabled);
+		PIPE_CONF_CHECK_RECT(pfit.dst);
+		PIPE_CONF_CHECK_BOOL(pfit.casf.enable);
+		PIPE_CONF_CHECK_I(pfit.casf.win_size);
+		PIPE_CONF_CHECK_I(pfit.casf.strength);
 
 		PIPE_CONF_CHECK_I(scaler_state.scaler_id);
 		PIPE_CONF_CHECK_I(pixel_rate_cdclk);
@@ -6775,12 +6775,12 @@ static void intel_pipe_fastset(const struct intel_crtc_state *old_crtc_state,
 
 	/* on skylake this is done by detaching scalers */
 	if (DISPLAY_VER(display) >= 9) {
-		if (new_crtc_state->pch_pfit.enabled)
+		if (new_crtc_state->pfit.enabled)
 			skl_pfit_enable(new_crtc_state);
 	} else if (HAS_PCH_SPLIT(display)) {
-		if (new_crtc_state->pch_pfit.enabled)
+		if (new_crtc_state->pfit.enabled)
 			ilk_pfit_enable(new_crtc_state);
-		else if (old_crtc_state->pch_pfit.enabled)
+		else if (old_crtc_state->pfit.enabled)
 			ilk_pfit_disable(old_crtc_state);
 	}
 
diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h b/drivers/gpu/drm/i915/display/intel_display_types.h
index 0e3083e852d5..b3d55993e41a 100644
--- a/drivers/gpu/drm/i915/display/intel_display_types.h
+++ b/drivers/gpu/drm/i915/display/intel_display_types.h
@@ -1251,13 +1251,13 @@ struct intel_crtc_state {
 		u32 lvds_border_bits;
 	} gmch_pfit;
 
-	/* Panel fitter placement and size for Ironlake+ */
+	/* Panel fitter placement and size */
 	struct {
 		struct intel_casf casf;
 		struct drm_rect dst;
 		bool enabled;
 		bool force_thru;
-	} pch_pfit;
+	} pfit;
 
 	/* FDI configuration, only valid if has_pch_encoder is set. */
 	int fdi_lanes;
diff --git a/drivers/gpu/drm/i915/display/intel_pfit.c b/drivers/gpu/drm/i915/display/intel_pfit.c
index 5b170c74a510..3e3c69233e58 100644
--- a/drivers/gpu/drm/i915/display/intel_pfit.c
+++ b/drivers/gpu/drm/i915/display/intel_pfit.c
@@ -22,7 +22,7 @@ static int intel_pch_pfit_check_dst_window(const struct intel_crtc_state *crtc_s
 	struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
 	const struct drm_display_mode *adjusted_mode =
 		&crtc_state->hw.adjusted_mode;
-	const struct drm_rect *dst = &crtc_state->pch_pfit.dst;
+	const struct drm_rect *dst = &crtc_state->pfit.dst;
 	int width = drm_rect_width(dst);
 	int height = drm_rect_height(dst);
 	int x = dst->x1;
@@ -109,7 +109,7 @@ static int intel_pch_pfit_check_scaling(const struct intel_crtc_state *crtc_stat
 {
 	struct intel_display *display = to_intel_display(crtc_state);
 	struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
-	const struct drm_rect *dst = &crtc_state->pch_pfit.dst;
+	const struct drm_rect *dst = &crtc_state->pfit.dst;
 	int pipe_src_w = drm_rect_width(&crtc_state->pipe_src);
 	int pipe_src_h = drm_rect_height(&crtc_state->pipe_src);
 	int hscale, vscale, max_scale = 0x12000; /* 1.125 */
@@ -271,9 +271,9 @@ static int pch_panel_fitting(struct intel_crtc_state *crtc_state,
 		return -EINVAL;
 	}
 
-	drm_rect_init(&crtc_state->pch_pfit.dst,
+	drm_rect_init(&crtc_state->pfit.dst,
 		      x, y, width, height);
-	crtc_state->pch_pfit.enabled = true;
+	crtc_state->pfit.enabled = true;
 
 	/*
 	 * SKL+ have unified scalers for pipes/planes so the
@@ -594,14 +594,14 @@ void ilk_pfit_enable(const struct intel_crtc_state *crtc_state)
 {
 	struct intel_display *display = to_intel_display(crtc_state);
 	struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
-	const struct drm_rect *dst = &crtc_state->pch_pfit.dst;
+	const struct drm_rect *dst = &crtc_state->pfit.dst;
 	enum pipe pipe = crtc->pipe;
 	int width = drm_rect_width(dst);
 	int height = drm_rect_height(dst);
 	int x = dst->x1;
 	int y = dst->y1;
 
-	if (!crtc_state->pch_pfit.enabled)
+	if (!crtc_state->pfit.enabled)
 		return;
 
 	/*
@@ -630,7 +630,7 @@ void ilk_pfit_disable(const struct intel_crtc_state *old_crtc_state)
 	 * To avoid upsetting the power well on haswell only disable the pfit if
 	 * it's in use. The hw state code will make sure we get this right.
 	 */
-	if (!old_crtc_state->pch_pfit.enabled)
+	if (!old_crtc_state->pfit.enabled)
 		return;
 
 	intel_de_write_fw(display, PF_CTL(pipe), 0);
@@ -654,12 +654,12 @@ void ilk_pfit_get_config(struct intel_crtc_state *crtc_state)
 	else
 		pipe = crtc->pipe;
 
-	crtc_state->pch_pfit.enabled = true;
+	crtc_state->pfit.enabled = true;
 
 	pos = intel_de_read(display, PF_WIN_POS(crtc->pipe));
 	size = intel_de_read(display, PF_WIN_SZ(crtc->pipe));
 
-	drm_rect_init(&crtc_state->pch_pfit.dst,
+	drm_rect_init(&crtc_state->pfit.dst,
 		      REG_FIELD_GET(PF_WIN_XPOS_MASK, pos),
 		      REG_FIELD_GET(PF_WIN_YPOS_MASK, pos),
 		      REG_FIELD_GET(PF_WIN_XSIZE_MASK, size),
diff --git a/drivers/gpu/drm/i915/display/skl_scaler.c b/drivers/gpu/drm/i915/display/skl_scaler.c
index 7994b983d509..0be6808bc2e4 100644
--- a/drivers/gpu/drm/i915/display/skl_scaler.c
+++ b/drivers/gpu/drm/i915/display/skl_scaler.c
@@ -276,9 +276,9 @@ int skl_update_scaler_crtc(struct intel_crtc_state *crtc_state)
 	if (ret)
 		return ret;
 
-	if (crtc_state->pch_pfit.enabled) {
-		width = drm_rect_width(&crtc_state->pch_pfit.dst);
-		height = drm_rect_height(&crtc_state->pch_pfit.dst);
+	if (crtc_state->pfit.enabled) {
+		width = drm_rect_width(&crtc_state->pfit.dst);
+		height = drm_rect_height(&crtc_state->pfit.dst);
 	} else {
 		width = pipe_mode->crtc_hdisplay;
 		height = pipe_mode->crtc_vdisplay;
@@ -289,7 +289,7 @@ int skl_update_scaler_crtc(struct intel_crtc_state *crtc_state)
 				 drm_rect_width(&crtc_state->pipe_src),
 				 drm_rect_height(&crtc_state->pipe_src),
 				 width, height, NULL, 0,
-				 crtc_state->pch_pfit.enabled);
+				 crtc_state->pfit.enabled);
 }
 
 /**
@@ -482,7 +482,7 @@ static int intel_atomic_setup_scaler(struct intel_crtc_state *crtc_state,
 		}
 	}
 
-	if (crtc_state->pch_pfit.enabled) {
+	if (crtc_state->pfit.enabled) {
 		struct drm_rect src;
 		int max_hscale, max_vscale;
 
@@ -503,9 +503,9 @@ static int intel_atomic_setup_scaler(struct intel_crtc_state *crtc_state,
 			max_vscale = 0x10000;
 		}
 
-		hscale = drm_rect_calc_hscale(&src, &crtc_state->pch_pfit.dst,
+		hscale = drm_rect_calc_hscale(&src, &crtc_state->pfit.dst,
 					      0, max_hscale);
-		vscale = drm_rect_calc_vscale(&src, &crtc_state->pch_pfit.dst,
+		vscale = drm_rect_calc_vscale(&src, &crtc_state->pfit.dst,
 					      0, max_vscale);
 
 		if (hscale < 0 || vscale < 0) {
@@ -513,7 +513,7 @@ static int intel_atomic_setup_scaler(struct intel_crtc_state *crtc_state,
 				    "Scaler %d doesn't support required pipe scaling\n",
 				    *scaler_id);
 			drm_rect_debug_print("src: ", &src, true);
-			drm_rect_debug_print("dst: ", &crtc_state->pch_pfit.dst, false);
+			drm_rect_debug_print("dst: ", &crtc_state->pfit.dst, false);
 
 			return -EINVAL;
 		}
@@ -542,7 +542,7 @@ static int setup_crtc_scaler(struct intel_atomic_state *state,
 					 hweight32(scaler_state->scaler_users),
 					 crtc, "CRTC", crtc->base.base.id,
 					 NULL, &scaler_state->scaler_id,
-					 crtc_state->pch_pfit.casf.enable);
+					 crtc_state->pfit.casf.enable);
 }
 
 static int setup_plane_scaler(struct intel_atomic_state *state,
@@ -760,12 +760,12 @@ static void skl_scaler_setup_filter(struct intel_display *display,
 
 static u32 casf_sharpness_ctl(const struct intel_crtc_state *crtc_state)
 {
-	if (!crtc_state->pch_pfit.casf.enable)
+	if (!crtc_state->pfit.casf.enable)
 		return 0;
 
 	return FILTER_EN |
-		FILTER_STRENGTH(crtc_state->pch_pfit.casf.strength) |
-		crtc_state->pch_pfit.casf.win_size;
+		FILTER_STRENGTH(crtc_state->pfit.casf.strength) |
+		crtc_state->pfit.casf.win_size;
 }
 
 void skl_pfit_enable(const struct intel_crtc_state *crtc_state)
@@ -774,7 +774,7 @@ void skl_pfit_enable(const struct intel_crtc_state *crtc_state)
 	struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
 	const struct intel_crtc_scaler_state *scaler_state =
 		&crtc_state->scaler_state;
-	const struct drm_rect *dst = &crtc_state->pch_pfit.dst;
+	const struct drm_rect *dst = &crtc_state->pfit.dst;
 	u16 uv_rgb_hphase, uv_rgb_vphase;
 	enum pipe pipe = crtc->pipe;
 	int width = drm_rect_width(dst);
@@ -786,7 +786,7 @@ void skl_pfit_enable(const struct intel_crtc_state *crtc_state)
 	int id;
 	u32 ps_ctrl;
 
-	if (!crtc_state->pch_pfit.enabled)
+	if (!crtc_state->pfit.enabled)
 		return;
 
 	if (drm_WARN_ON(display->drm,
@@ -810,11 +810,11 @@ void skl_pfit_enable(const struct intel_crtc_state *crtc_state)
 
 	ps_ctrl = PS_SCALER_EN | PS_BINDING_PIPE | scaler_state->scalers[id].mode |
 		skl_scaler_get_filter_select(crtc_state->hw.scaling_filter,
-					     crtc_state->pch_pfit.casf.enable);
+					     crtc_state->pfit.casf.enable);
 
 	trace_intel_pipe_scaler_update_arm(crtc, id, x, y, width, height);
 
-	if (crtc_state->pch_pfit.casf.enable)
+	if (crtc_state->pfit.casf.enable)
 		intel_casf_setup(crtc_state);
 	else
 		skl_scaler_setup_filter(display, NULL, pipe, id, 0,
@@ -977,12 +977,12 @@ void skl_scaler_get_config(struct intel_crtc_state *crtc_state)
 	if (scaler_has_casf(display, scaler_id))
 		intel_casf_sharpness_get_config(crtc_state);
 
-	crtc_state->pch_pfit.enabled = true;
+	crtc_state->pfit.enabled = true;
 
 	pos = intel_de_read(display, SKL_PS_WIN_POS(crtc->pipe, scaler_id));
 	size = intel_de_read(display, SKL_PS_WIN_SZ(crtc->pipe, scaler_id));
 
-	drm_rect_init(&crtc_state->pch_pfit.dst,
+	drm_rect_init(&crtc_state->pfit.dst,
 		      REG_FIELD_GET(PS_WIN_XPOS_MASK, pos),
 		      REG_FIELD_GET(PS_WIN_YPOS_MASK, pos),
 		      REG_FIELD_GET(PS_WIN_XSIZE_MASK, size),
@@ -998,7 +998,7 @@ void adl_scaler_ecc_mask(const struct intel_crtc_state *crtc_state)
 {
 	struct intel_display *display = to_intel_display(crtc_state);
 
-	if (!crtc_state->pch_pfit.enabled)
+	if (!crtc_state->pfit.enabled)
 		return;
 
 	intel_de_write(display, XELPD_DISPLAY_ERR_FATAL_MASK, ~0);
@@ -1056,7 +1056,7 @@ unsigned int skl_scaler_2nd_prefill_lines(const struct intel_crtc_state *crtc_st
 		&crtc_state->scaler_state;
 	int num_scalers = hweight32(scaler_state->scaler_users);
 
-	if (num_scalers > 1 && crtc_state->pch_pfit.enabled)
+	if (num_scalers > 1 && crtc_state->pfit.enabled)
 		return 4 << 16;
 
 	return 0;
-- 
2.55.0


^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [PATCH 02/15] drm/i915/pfit: s/intel_pch_pfit/ilk_pfit/
  2026-10-19 13:52 [PATCH 00/15] drm/i915/pfit: Make GMCH panel fitter nicer Ville Syrjala
  2026-10-19 13:52 ` [PATCH 01/15] drm/i915/pfit: s/pch_pfit/pfit/ Ville Syrjala
@ 2026-10-19 13:52 ` Ville Syrjala
  2026-10-19 15:49   ` Jani Nikula
  2026-10-19 13:52 ` [PATCH 03/15] drm/i915/pfit: Stop using HAS_PCH_SPLIT() in confusing places Ville Syrjala
                   ` (15 subsequent siblings)
  17 siblings, 1 reply; 35+ messages in thread
From: Ville Syrjala @ 2026-10-19 13:52 UTC (permalink / raw)
  To: intel-gfx; +Cc: intel-xe

From: Ville Syrjälä <ville.syrjala@linux.intel.com>

The intel_pch_pfit_*() have nothing to do with PCH. Rename
them to just ilk_pfit_*() to better reflect their meaning.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 drivers/gpu/drm/i915/display/intel_pfit.c | 24 +++++++++++------------
 1 file changed, 12 insertions(+), 12 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_pfit.c b/drivers/gpu/drm/i915/display/intel_pfit.c
index 3e3c69233e58..aa4a4d10d124 100644
--- a/drivers/gpu/drm/i915/display/intel_pfit.c
+++ b/drivers/gpu/drm/i915/display/intel_pfit.c
@@ -16,7 +16,7 @@
 #include "intel_pfit_regs.h"
 #include "skl_scaler.h"
 
-static int intel_pch_pfit_check_dst_window(const struct intel_crtc_state *crtc_state)
+static int ilk_pfit_check_dst_window(const struct intel_crtc_state *crtc_state)
 {
 	struct intel_display *display = to_intel_display(crtc_state);
 	struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
@@ -67,7 +67,7 @@ static int intel_pch_pfit_check_dst_window(const struct intel_crtc_state *crtc_s
 	return 0;
 }
 
-static int intel_pch_pfit_check_src_size(const struct intel_crtc_state *crtc_state)
+static int ilk_pfit_check_src_size(const struct intel_crtc_state *crtc_state)
 {
 	struct intel_display *display = to_intel_display(crtc_state);
 	struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
@@ -105,7 +105,7 @@ static int intel_pch_pfit_check_src_size(const struct intel_crtc_state *crtc_sta
 	return 0;
 }
 
-static int intel_pch_pfit_check_scaling(const struct intel_crtc_state *crtc_state)
+static int ilk_pfit_check_scaling(const struct intel_crtc_state *crtc_state)
 {
 	struct intel_display *display = to_intel_display(crtc_state);
 	struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
@@ -140,7 +140,7 @@ static int intel_pch_pfit_check_scaling(const struct intel_crtc_state *crtc_stat
 	return 0;
 }
 
-static int intel_pch_pfit_check_timings(const struct intel_crtc_state *crtc_state)
+static int ilk_pfit_check_timings(const struct intel_crtc_state *crtc_state)
 {
 	struct intel_display *display = to_intel_display(crtc_state);
 	struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
@@ -158,7 +158,7 @@ static int intel_pch_pfit_check_timings(const struct intel_crtc_state *crtc_stat
 	return 0;
 }
 
-static int intel_pch_pfit_check_cloning(const struct intel_crtc_state *crtc_state)
+static int ilk_pfit_check_cloning(const struct intel_crtc_state *crtc_state)
 {
 	struct intel_display *display = to_intel_display(crtc_state);
 	struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
@@ -182,7 +182,7 @@ static int intel_pch_pfit_check_cloning(const struct intel_crtc_state *crtc_stat
 }
 
 /* adjusted_mode has been preset to be the panel's fixed mode */
-static int pch_panel_fitting(struct intel_crtc_state *crtc_state,
+static int ilk_panel_fitting(struct intel_crtc_state *crtc_state,
 			     const struct drm_connector_state *conn_state)
 {
 	struct intel_display *display = to_intel_display(crtc_state);
@@ -282,23 +282,23 @@ static int pch_panel_fitting(struct intel_crtc_state *crtc_state,
 	if (DISPLAY_VER(display) >= 9)
 		return 0;
 
-	ret = intel_pch_pfit_check_dst_window(crtc_state);
+	ret = ilk_pfit_check_dst_window(crtc_state);
 	if (ret)
 		return ret;
 
-	ret = intel_pch_pfit_check_src_size(crtc_state);
+	ret = ilk_pfit_check_src_size(crtc_state);
 	if (ret)
 		return ret;
 
-	ret = intel_pch_pfit_check_scaling(crtc_state);
+	ret = ilk_pfit_check_scaling(crtc_state);
 	if (ret)
 		return ret;
 
-	ret = intel_pch_pfit_check_timings(crtc_state);
+	ret = ilk_pfit_check_timings(crtc_state);
 	if (ret)
 		return ret;
 
-	ret = intel_pch_pfit_check_cloning(crtc_state);
+	ret = ilk_pfit_check_cloning(crtc_state);
 	if (ret)
 		return ret;
 
@@ -587,7 +587,7 @@ int intel_pfit_compute_config(struct intel_crtc_state *crtc_state,
 	if (HAS_GMCH(display))
 		return gmch_panel_fitting(crtc_state, conn_state);
 	else
-		return pch_panel_fitting(crtc_state, conn_state);
+		return ilk_panel_fitting(crtc_state, conn_state);
 }
 
 void ilk_pfit_enable(const struct intel_crtc_state *crtc_state)
-- 
2.55.0


^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [PATCH 03/15] drm/i915/pfit: Stop using HAS_PCH_SPLIT() in confusing places
  2026-10-19 13:52 [PATCH 00/15] drm/i915/pfit: Make GMCH panel fitter nicer Ville Syrjala
  2026-10-19 13:52 ` [PATCH 01/15] drm/i915/pfit: s/pch_pfit/pfit/ Ville Syrjala
  2026-10-19 13:52 ` [PATCH 02/15] drm/i915/pfit: s/intel_pch_pfit/ilk_pfit/ Ville Syrjala
@ 2026-10-19 13:52 ` Ville Syrjala
  2026-10-19 15:49   ` Jani Nikula
  2026-10-19 13:52 ` [PATCH 04/15] drm/i915/pfit: Introduce intel_pfit_get_config() Ville Syrjala
                   ` (14 subsequent siblings)
  17 siblings, 1 reply; 35+ messages in thread
From: Ville Syrjala @ 2026-10-19 13:52 UTC (permalink / raw)
  To: intel-gfx; +Cc: intel-xe

From: Ville Syrjälä <ville.syrjala@linux.intel.com>

Stop using HAS_PCH_SPLIT() in places that have nothing to
do with PCH. !HAS_GMCH is a more sensible thing top check for.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 drivers/gpu/drm/i915/display/i9xx_wm.c               | 2 +-
 drivers/gpu/drm/i915/display/intel_display.c         | 2 +-
 drivers/gpu/drm/i915/display/intel_display_debugfs.c | 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/i9xx_wm.c b/drivers/gpu/drm/i915/display/i9xx_wm.c
index 86d1c9f7f0ff..0233f5053d95 100644
--- a/drivers/gpu/drm/i915/display/i9xx_wm.c
+++ b/drivers/gpu/drm/i915/display/i9xx_wm.c
@@ -4150,7 +4150,7 @@ static const struct intel_wm_funcs nop_funcs = {
 void i9xx_wm_init(struct intel_display *display)
 {
 	/* For FIFO watermark updates */
-	if (HAS_PCH_SPLIT(display)) {
+	if (!HAS_GMCH(display)) {
 		ilk_setup_wm_latency(display);
 		display->wm.funcs = &ilk_wm_funcs;
 	} else if (display->platform.valleyview || display->platform.cherryview) {
diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index 723dec35402a..d1440cc6dba4 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -6777,7 +6777,7 @@ static void intel_pipe_fastset(const struct intel_crtc_state *old_crtc_state,
 	if (DISPLAY_VER(display) >= 9) {
 		if (new_crtc_state->pfit.enabled)
 			skl_pfit_enable(new_crtc_state);
-	} else if (HAS_PCH_SPLIT(display)) {
+	} else if (!HAS_GMCH(display)) {
 		if (new_crtc_state->pfit.enabled)
 			ilk_pfit_enable(new_crtc_state);
 		else if (old_crtc_state->pfit.enabled)
diff --git a/drivers/gpu/drm/i915/display/intel_display_debugfs.c b/drivers/gpu/drm/i915/display/intel_display_debugfs.c
index 3e302f23f247..dba34f034785 100644
--- a/drivers/gpu/drm/i915/display/intel_display_debugfs.c
+++ b/drivers/gpu/drm/i915/display/intel_display_debugfs.c
@@ -96,7 +96,7 @@ static int i915_sr_status(struct seq_file *m, void *unused)
 
 	if (DISPLAY_VER(display) >= 9)
 		/* no global SR status; inspect per-plane WM */;
-	else if (HAS_PCH_SPLIT(display))
+	else if (!HAS_GMCH(display))
 		sr_enabled = intel_de_read(display, WM1_LP_ILK) & WM_LP_ENABLE;
 	else if (display->platform.i965gm || display->platform.g4x ||
 		 display->platform.i945g || display->platform.i945gm)
-- 
2.55.0


^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [PATCH 04/15] drm/i915/pfit: Introduce intel_pfit_get_config()
  2026-10-19 13:52 [PATCH 00/15] drm/i915/pfit: Make GMCH panel fitter nicer Ville Syrjala
                   ` (2 preceding siblings ...)
  2026-10-19 13:52 ` [PATCH 03/15] drm/i915/pfit: Stop using HAS_PCH_SPLIT() in confusing places Ville Syrjala
@ 2026-10-19 13:52 ` Ville Syrjala
  2026-10-19 15:53   ` Jani Nikula
  2026-10-19 13:52 ` [PATCH 05/15] drm/i915/pfit: Rename some pfit functions Ville Syrjala
                   ` (13 subsequent siblings)
  17 siblings, 1 reply; 35+ messages in thread
From: Ville Syrjala @ 2026-10-19 13:52 UTC (permalink / raw)
  To: intel-gfx; +Cc: intel-xe

From: Ville Syrjälä <ville.syrjala@linux.intel.com>

Introduce a new intel_pfit_get_config() wrapper to better
contain the pfit details inside intel_pfit.c.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 drivers/gpu/drm/i915/display/intel_display.c | 12 ++++--------
 drivers/gpu/drm/i915/display/intel_pfit.c    | 16 ++++++++++++++--
 drivers/gpu/drm/i915/display/intel_pfit.h    |  3 +--
 3 files changed, 19 insertions(+), 12 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index d1440cc6dba4..79c4aff1c633 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -3236,7 +3236,7 @@ static bool i9xx_get_pipe_config(struct intel_crtc *crtc,
 	intel_get_transcoder_timings(crtc, pipe_config);
 	intel_get_pipe_src_size(crtc, pipe_config);
 
-	i9xx_pfit_get_config(pipe_config);
+	intel_pfit_get_config(pipe_config);
 
 	i9xx_dpll_get_hw_state(crtc, &pipe_config->dpll_hw_state);
 
@@ -3586,7 +3586,7 @@ static bool ilk_get_pipe_config(struct intel_crtc *crtc,
 	intel_get_transcoder_timings(crtc, pipe_config);
 	intel_get_pipe_src_size(crtc, pipe_config);
 
-	ilk_pfit_get_config(pipe_config);
+	intel_pfit_get_config(pipe_config);
 
 	ret = true;
 
@@ -4153,12 +4153,8 @@ static bool hsw_get_pipe_config(struct intel_crtc *crtc,
 			REG_FIELD_GET(HSW_IPS_LINETIME_MASK, tmp);
 
 	if (intel_display_power_get_in_set_if_enabled(display, &crtc->hw_readout_power_domains,
-						      POWER_DOMAIN_PIPE_PANEL_FITTER(crtc->pipe))) {
-		if (DISPLAY_VER(display) >= 9)
-			skl_scaler_get_config(pipe_config);
-		else
-			ilk_pfit_get_config(pipe_config);
-	}
+						      POWER_DOMAIN_PIPE_PANEL_FITTER(crtc->pipe)))
+		intel_pfit_get_config(pipe_config);
 
 	hsw_ips_get_config(pipe_config);
 
diff --git a/drivers/gpu/drm/i915/display/intel_pfit.c b/drivers/gpu/drm/i915/display/intel_pfit.c
index aa4a4d10d124..b4a201dc8f7b 100644
--- a/drivers/gpu/drm/i915/display/intel_pfit.c
+++ b/drivers/gpu/drm/i915/display/intel_pfit.c
@@ -638,7 +638,7 @@ void ilk_pfit_disable(const struct intel_crtc_state *old_crtc_state)
 	intel_de_write_fw(display, PF_WIN_SZ(pipe), 0);
 }
 
-void ilk_pfit_get_config(struct intel_crtc_state *crtc_state)
+static void ilk_pfit_get_config(struct intel_crtc_state *crtc_state)
 {
 	struct intel_display *display = to_intel_display(crtc_state);
 	struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
@@ -724,7 +724,7 @@ static bool i9xx_has_pfit(struct intel_display *display)
 		display->platform.pineview || display->platform.mobile;
 }
 
-void i9xx_pfit_get_config(struct intel_crtc_state *crtc_state)
+static void i9xx_pfit_get_config(struct intel_crtc_state *crtc_state)
 {
 	struct intel_display *display = to_intel_display(crtc_state);
 	struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
@@ -751,3 +751,15 @@ void i9xx_pfit_get_config(struct intel_crtc_state *crtc_state)
 	crtc_state->gmch_pfit.pgm_ratios =
 		intel_de_read(display, PFIT_PGM_RATIOS(display));
 }
+
+void intel_pfit_get_config(struct intel_crtc_state *crtc_state)
+{
+	struct intel_display *display = to_intel_display(crtc_state);
+
+	if (HAS_GMCH(display))
+		i9xx_pfit_get_config(crtc_state);
+	else if (DISPLAY_VER(display) >= 9)
+		skl_scaler_get_config(crtc_state);
+	else
+		ilk_pfit_get_config(crtc_state);
+}
diff --git a/drivers/gpu/drm/i915/display/intel_pfit.h b/drivers/gpu/drm/i915/display/intel_pfit.h
index c1bb0d1f344e..184e1932eae5 100644
--- a/drivers/gpu/drm/i915/display/intel_pfit.h
+++ b/drivers/gpu/drm/i915/display/intel_pfit.h
@@ -17,10 +17,9 @@ int intel_pfit_compute_config(struct intel_crtc_state *crtc_state,
 			      const struct drm_connector_state *conn_state);
 void ilk_pfit_enable(const struct intel_crtc_state *crtc_state);
 void ilk_pfit_disable(const struct intel_crtc_state *old_crtc_state);
-void ilk_pfit_get_config(struct intel_crtc_state *crtc_state);
 void i9xx_pfit_enable(const struct intel_crtc_state *crtc_state);
 void i9xx_pfit_disable(const struct intel_crtc_state *old_crtc_state);
-void i9xx_pfit_get_config(struct intel_crtc_state *crtc_state);
+void intel_pfit_get_config(struct intel_crtc_state *crtc_state);
 enum drm_mode_status
 intel_pfit_mode_valid(struct intel_display *display,
 		      const struct drm_display_mode *mode,
-- 
2.55.0


^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [PATCH 05/15] drm/i915/pfit: Rename some pfit functions
  2026-10-19 13:52 [PATCH 00/15] drm/i915/pfit: Make GMCH panel fitter nicer Ville Syrjala
                   ` (3 preceding siblings ...)
  2026-10-19 13:52 ` [PATCH 04/15] drm/i915/pfit: Introduce intel_pfit_get_config() Ville Syrjala
@ 2026-10-19 13:52 ` Ville Syrjala
  2026-10-19 15:54   ` Jani Nikula
  2026-10-19 13:53 ` [PATCH 06/15] drm/i915/pfit: Extract i965_pfit_get_config() Ville Syrjala
                   ` (12 subsequent siblings)
  17 siblings, 1 reply; 35+ messages in thread
From: Ville Syrjala @ 2026-10-19 13:52 UTC (permalink / raw)
  To: intel-gfx; +Cc: intel-xe

From: Ville Syrjälä <ville.syrjala@linux.intel.com>

Most pfit functions are called {ilk,i9xx}_pfit_*(). Rename
{gmch,ilk}_panel_fitting() and intel_gmch_pfit_check_timings()
to match.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 drivers/gpu/drm/i915/display/intel_pfit.c | 21 +++++++++++++--------
 1 file changed, 13 insertions(+), 8 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_pfit.c b/drivers/gpu/drm/i915/display/intel_pfit.c
index b4a201dc8f7b..972218346362 100644
--- a/drivers/gpu/drm/i915/display/intel_pfit.c
+++ b/drivers/gpu/drm/i915/display/intel_pfit.c
@@ -182,8 +182,8 @@ static int ilk_pfit_check_cloning(const struct intel_crtc_state *crtc_state)
 }
 
 /* adjusted_mode has been preset to be the panel's fixed mode */
-static int ilk_panel_fitting(struct intel_crtc_state *crtc_state,
-			     const struct drm_connector_state *conn_state)
+static int ilk_pfit_compute_config(struct intel_crtc_state *crtc_state,
+				   const struct drm_connector_state *conn_state)
 {
 	struct intel_display *display = to_intel_display(crtc_state);
 	struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
@@ -438,7 +438,7 @@ static void i9xx_scale_aspect(struct intel_crtc_state *crtc_state,
 	}
 }
 
-static int intel_gmch_pfit_check_timings(const struct intel_crtc_state *crtc_state)
+static int i9xx_pfit_check_timings(const struct intel_crtc_state *crtc_state)
 {
 	struct intel_display *display = to_intel_display(crtc_state);
 	struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
@@ -470,8 +470,8 @@ static int intel_gmch_pfit_check_timings(const struct intel_crtc_state *crtc_sta
 	return 0;
 }
 
-static int gmch_panel_fitting(struct intel_crtc_state *crtc_state,
-			      const struct drm_connector_state *conn_state)
+static int i9xx_pfit_compute_config(struct intel_crtc_state *crtc_state,
+				    const struct drm_connector_state *conn_state)
 {
 	struct intel_display *display = to_intel_display(crtc_state);
 	struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
@@ -479,6 +479,7 @@ static int gmch_panel_fitting(struct intel_crtc_state *crtc_state,
 	struct drm_display_mode *adjusted_mode = &crtc_state->hw.adjusted_mode;
 	int pipe_src_w = drm_rect_width(&crtc_state->pipe_src);
 	int pipe_src_h = drm_rect_height(&crtc_state->pipe_src);
+	int ret;
 
 	/* Native modes don't need fitting */
 	if (adjusted_mode->crtc_hdisplay == pipe_src_w &&
@@ -566,7 +567,11 @@ static int gmch_panel_fitting(struct intel_crtc_state *crtc_state,
 	if ((pfit_control & PFIT_ENABLE) == 0)
 		return 0;
 
-	return intel_gmch_pfit_check_timings(crtc_state);
+	ret = i9xx_pfit_check_timings(crtc_state);
+	if (ret)
+		return ret;
+
+	return 0;
 }
 
 enum drm_mode_status
@@ -585,9 +590,9 @@ int intel_pfit_compute_config(struct intel_crtc_state *crtc_state,
 	struct intel_display *display = to_intel_display(crtc_state);
 
 	if (HAS_GMCH(display))
-		return gmch_panel_fitting(crtc_state, conn_state);
+		return i9xx_pfit_compute_config(crtc_state, conn_state);
 	else
-		return ilk_panel_fitting(crtc_state, conn_state);
+		return ilk_pfit_compute_config(crtc_state, conn_state);
 }
 
 void ilk_pfit_enable(const struct intel_crtc_state *crtc_state)
-- 
2.55.0


^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [PATCH 06/15] drm/i915/pfit: Extract i965_pfit_get_config()
  2026-10-19 13:52 [PATCH 00/15] drm/i915/pfit: Make GMCH panel fitter nicer Ville Syrjala
                   ` (4 preceding siblings ...)
  2026-10-19 13:52 ` [PATCH 05/15] drm/i915/pfit: Rename some pfit functions Ville Syrjala
@ 2026-10-19 13:53 ` Ville Syrjala
  2026-10-19 16:02   ` Jani Nikula
  2026-10-20 18:38   ` [PATCH v2 " Ville Syrjala
  2026-10-19 13:53 ` [PATCH 07/15] drm/i915/pfit: Drop platform check for gmch_pfit.pgm_ratios Ville Syrjala
                   ` (11 subsequent siblings)
  17 siblings, 2 replies; 35+ messages in thread
From: Ville Syrjala @ 2026-10-19 13:53 UTC (permalink / raw)
  To: intel-gfx; +Cc: intel-xe

From: Ville Syrjälä <ville.syrjala@linux.intel.com>

Split i965_pfit_get_config() out from i9xx_pfit_get_config() to
unconfuse things a bit.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 drivers/gpu/drm/i915/display/intel_pfit.c | 66 ++++++++++++++---------
 1 file changed, 42 insertions(+), 24 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_pfit.c b/drivers/gpu/drm/i915/display/intel_pfit.c
index 972218346362..82804159d0a1 100644
--- a/drivers/gpu/drm/i915/display/intel_pfit.c
+++ b/drivers/gpu/drm/i915/display/intel_pfit.c
@@ -720,39 +720,52 @@ void i9xx_pfit_disable(const struct intel_crtc_state *old_crtc_state)
 	intel_de_write(display, PFIT_CONTROL(display), 0);
 }
 
-static bool i9xx_has_pfit(struct intel_display *display)
-{
-	if (display->platform.i830)
-		return false;
-
-	return DISPLAY_VER(display) >= 4 ||
-		display->platform.pineview || display->platform.mobile;
-}
-
-static void i9xx_pfit_get_config(struct intel_crtc_state *crtc_state)
+static void i965_pfit_get_config(struct intel_crtc_state *crtc_state)
 {
 	struct intel_display *display = to_intel_display(crtc_state);
 	struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
 	enum pipe pipe;
 	u32 tmp;
 
-	if (!i9xx_has_pfit(display))
-		return;
-
 	tmp = intel_de_read(display, PFIT_CONTROL(display));
 	if (!(tmp & PFIT_ENABLE))
 		return;
 
 	/* Check whether the pfit is attached to our pipe. */
-	if (DISPLAY_VER(display) >= 4)
-		pipe = REG_FIELD_GET(PFIT_PIPE_MASK, tmp);
-	else
-		pipe = PIPE_B;
-
+	pipe = REG_FIELD_GET(PFIT_PIPE_MASK, tmp);
 	if (pipe != crtc->pipe)
 		return;
 
 	crtc_state->gmch_pfit.control = tmp;
+}
+
+static bool i9xx_has_pfit(struct intel_crtc *crtc)
+{
+	struct intel_display *display = to_intel_display(crtc);
+
+	if (crtc->pipe != PIPE_B)
+		return false;
+
+	if (display->platform.i830)
+		return false;
+
+	return display->platform.pineview || display->platform.mobile;
+}
+
+static void i9xx_pfit_get_config(struct intel_crtc_state *crtc_state)
+{
+	struct intel_display *display = to_intel_display(crtc_state);
+	struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
+	u32 tmp;
+
+	if (!i9xx_has_pfit(crtc))
+		return;
+
+	tmp = intel_de_read(display, PFIT_CONTROL(display));
+	if (!(tmp & PFIT_ENABLE))
+		return;
+
+	crtc_state->gmch_pfit.control = tmp;
 	crtc_state->gmch_pfit.pgm_ratios =
 		intel_de_read(display, PFIT_PGM_RATIOS(display));
 }
@@ -761,10 +774,15 @@ void intel_pfit_get_config(struct intel_crtc_state *crtc_state)
 {
 	struct intel_display *display = to_intel_display(crtc_state);
 
-	if (HAS_GMCH(display))
-		i9xx_pfit_get_config(crtc_state);
-	else if (DISPLAY_VER(display) >= 9)
-		skl_scaler_get_config(crtc_state);
-	else
-		ilk_pfit_get_config(crtc_state);
+	if (HAS_GMCH(display)) {
+		if (DISPLAY_VER(display) >= 4)
+			i965_pfit_get_config(crtc_state);
+		else
+			i9xx_pfit_get_config(crtc_state);
+	} else {
+		if (DISPLAY_VER(display) >= 9)
+			skl_scaler_get_config(crtc_state);
+		else
+			ilk_pfit_get_config(crtc_state);
+	}
 }
-- 
2.55.0


^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [PATCH 07/15] drm/i915/pfit: Drop platform check for gmch_pfit.pgm_ratios
  2026-10-19 13:52 [PATCH 00/15] drm/i915/pfit: Make GMCH panel fitter nicer Ville Syrjala
                   ` (5 preceding siblings ...)
  2026-10-19 13:53 ` [PATCH 06/15] drm/i915/pfit: Extract i965_pfit_get_config() Ville Syrjala
@ 2026-10-19 13:53 ` Ville Syrjala
  2026-10-19 16:05   ` Jani Nikula
  2026-10-19 13:53 ` [PATCH 08/15] drm/i915/pfit: Unconfuse panel_fitter_scaling() Ville Syrjala
                   ` (10 subsequent siblings)
  17 siblings, 1 reply; 35+ messages in thread
From: Ville Syrjala @ 2026-10-19 13:53 UTC (permalink / raw)
  To: intel-gfx; +Cc: intel-xe

From: Ville Syrjälä <ville.syrjala@linux.intel.com>

The platform check in the state checker for gmch_pfit.pgm_ratios
is now pointless. gmch_pfit.pgm_ratios will always be 0 on i965+.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 drivers/gpu/drm/i915/display/intel_display.c | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index 79c4aff1c633..200426bf0c59 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -5462,9 +5462,7 @@ intel_pipe_config_compare(const struct intel_crtc_state *current_config,
 	}
 
 	PIPE_CONF_CHECK_X(gmch_pfit.control);
-	/* pfit ratios are autocomputed by the hw on gen4+ */
-	if (DISPLAY_VER(display) < 4)
-		PIPE_CONF_CHECK_X(gmch_pfit.pgm_ratios);
+	PIPE_CONF_CHECK_X(gmch_pfit.pgm_ratios);
 	PIPE_CONF_CHECK_X(gmch_pfit.lvds_border_bits);
 
 	/*
-- 
2.55.0


^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [PATCH 08/15] drm/i915/pfit: Unconfuse panel_fitter_scaling()
  2026-10-19 13:52 [PATCH 00/15] drm/i915/pfit: Make GMCH panel fitter nicer Ville Syrjala
                   ` (6 preceding siblings ...)
  2026-10-19 13:53 ` [PATCH 07/15] drm/i915/pfit: Drop platform check for gmch_pfit.pgm_ratios Ville Syrjala
@ 2026-10-19 13:53 ` Ville Syrjala
  2026-10-19 16:15   ` Jani Nikula
  2026-10-19 13:53 ` [PATCH 09/15] drm/i915/pfit: Populate crtc_state->pfit.dst on GMCH platforms Ville Syrjala
                   ` (9 subsequent siblings)
  17 siblings, 1 reply; 35+ messages in thread
From: Ville Syrjala @ 2026-10-19 13:53 UTC (permalink / raw)
  To: intel-gfx; +Cc: intel-xe

From: Ville Syrjälä <ville.syrjala@linux.intel.com>

panel_fitter_scaling() apparently tries to implemnt
DIV_ROUND_CLOSEST() by hand, but in a somewhat weird way
where the division and rounding are done as separate steps.
Just use the real DIV_ROUND_CLOSEST() instead.

This does in fact match how the i965+ hardware calculates
the automagic scaling factors, which will be important
for upcoming readout support.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 drivers/gpu/drm/i915/display/intel_pfit.c | 10 +---------
 1 file changed, 1 insertion(+), 9 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_pfit.c b/drivers/gpu/drm/i915/display/intel_pfit.c
index 82804159d0a1..5d519f45adbe 100644
--- a/drivers/gpu/drm/i915/display/intel_pfit.c
+++ b/drivers/gpu/drm/i915/display/intel_pfit.c
@@ -350,15 +350,7 @@ centre_vertically(struct drm_display_mode *adjusted_mode,
 
 static u32 panel_fitter_scaling(u32 source, u32 target)
 {
-	/*
-	 * Floating point operation is not supported. So the FACTOR
-	 * is defined, which can avoid the floating point computation
-	 * when calculating the panel ratio.
-	 */
-#define ACCURACY 12
-#define FACTOR (1 << ACCURACY)
-	u32 ratio = source * FACTOR / target;
-	return (FACTOR * ratio + FACTOR/2) / FACTOR;
+	return DIV_ROUND_CLOSEST(source << 12, target);
 }
 
 static void i965_scale_aspect(struct intel_crtc_state *crtc_state,
-- 
2.55.0


^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [PATCH 09/15] drm/i915/pfit: Populate crtc_state->pfit.dst on GMCH platforms
  2026-10-19 13:52 [PATCH 00/15] drm/i915/pfit: Make GMCH panel fitter nicer Ville Syrjala
                   ` (7 preceding siblings ...)
  2026-10-19 13:53 ` [PATCH 08/15] drm/i915/pfit: Unconfuse panel_fitter_scaling() Ville Syrjala
@ 2026-10-19 13:53 ` Ville Syrjala
  2026-10-19 14:23   ` sashiko-bot
  2026-10-20 18:40   ` [PATCH v2 " Ville Syrjala
  2026-10-19 13:53 ` [PATCH 10/15] drm/i915/pfit: Check scaling factor on GMCH Ville Syrjala
                   ` (8 subsequent siblings)
  17 siblings, 2 replies; 35+ messages in thread
From: Ville Syrjala @ 2026-10-19 13:53 UTC (permalink / raw)
  To: intel-gfx; +Cc: intel-xe

From: Ville Syrjälä <ville.syrjala@linux.intel.com>

Populate crtc_state->pfit.dst on GMCH platforms. Since
(unlike ILK+) we don't actually program the pfit window
coordinates to the hardware we need to compute the coordinates
based on the scaling factor the hardware will use (whether
that'll be the manually programmed thing on pre-i965 or
the automagic thing on i965+). As long as we do the computation
the same way .compute_config() and readout we'll get matching
results, which is important to the state checker.

Note that the automagic scaling factors on i965+ are slightly
weird in that only one of the scaling factors in the register
will read out correctly in the letterbox/pillabox modes. So
the readout will have to know which direction has the correct
information.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 .../drm/i915/display/intel_crtc_state_dump.c  |  10 +-
 drivers/gpu/drm/i915/display/intel_pfit.c     | 231 +++++++++++++-----
 drivers/gpu/drm/i915/display/intel_pfit.h     |   2 +
 .../gpu/drm/i915/display/intel_pfit_regs.h    |   4 +-
 4 files changed, 184 insertions(+), 63 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_crtc_state_dump.c b/drivers/gpu/drm/i915/display/intel_crtc_state_dump.c
index f30d07bc6b07..9220c73d2f5e 100644
--- a/drivers/gpu/drm/i915/display/intel_crtc_state_dump.c
+++ b/drivers/gpu/drm/i915/display/intel_crtc_state_dump.c
@@ -355,11 +355,11 @@ void intel_crtc_state_dump(const struct intel_crtc_state *pipe_config,
 			   pipe_config->gmch_pfit.control,
 			   pipe_config->gmch_pfit.pgm_ratios,
 			   pipe_config->gmch_pfit.lvds_border_bits);
-	else
-		drm_printf(&p, "pfit: " DRM_RECT_FMT ", %s, force thru: %s\n",
-			   DRM_RECT_ARG(&pipe_config->pfit.dst),
-			   str_enabled_disabled(pipe_config->pfit.enabled),
-			   str_yes_no(pipe_config->pfit.force_thru));
+
+	drm_printf(&p, "pfit: " DRM_RECT_FMT ", %s, force thru: %s\n",
+		   DRM_RECT_ARG(&pipe_config->pfit.dst),
+		   str_enabled_disabled(pipe_config->pfit.enabled),
+		   str_yes_no(pipe_config->pfit.force_thru));
 
 	drm_printf(&p, "sharpness strength: %d, sharpness tap size: %d, sharpness enable: %d\n",
 		   pipe_config->pfit.casf.strength,
diff --git a/drivers/gpu/drm/i915/display/intel_pfit.c b/drivers/gpu/drm/i915/display/intel_pfit.c
index 5d519f45adbe..63e5a656a33b 100644
--- a/drivers/gpu/drm/i915/display/intel_pfit.c
+++ b/drivers/gpu/drm/i915/display/intel_pfit.c
@@ -353,6 +353,35 @@ static u32 panel_fitter_scaling(u32 source, u32 target)
 	return DIV_ROUND_CLOSEST(source << 12, target);
 }
 
+static void i9xx_compute_pfit_dst(struct intel_crtc_state *crtc_state,
+				  u32 hscale, u32 vscale)
+{
+	const struct drm_display_mode *adjusted_mode =
+		&crtc_state->hw.adjusted_mode;
+	int pipe_src_w = drm_rect_width(&crtc_state->pipe_src);
+	int pipe_src_h = drm_rect_height(&crtc_state->pipe_src);
+	int x, y, width, height;
+
+	/* don't explode if the hw state was gibberish */
+	if (hscale == 0)
+		hscale = 1 << 12;
+	if (vscale == 0)
+		vscale = 1 << 12;
+
+	width = DIV_ROUND_CLOSEST(pipe_src_w << 12, hscale);
+	height = DIV_ROUND_CLOSEST(pipe_src_h << 12, vscale);
+
+	width = min(width, adjusted_mode->crtc_hdisplay);
+	height = min(height, adjusted_mode->crtc_vdisplay);
+
+	x = DIV_ROUND_CLOSEST(adjusted_mode->crtc_hdisplay - width, 2);
+	y = DIV_ROUND_CLOSEST(adjusted_mode->crtc_vdisplay - height, 2);
+
+	crtc_state->pfit.enabled = true;
+
+	drm_rect_init(&crtc_state->pfit.dst, x, y, width, height);
+}
+
 static void i965_scale_aspect(struct intel_crtc_state *crtc_state,
 			      u32 *pfit_control)
 {
@@ -362,16 +391,54 @@ static void i965_scale_aspect(struct intel_crtc_state *crtc_state,
 	int pipe_src_h = drm_rect_height(&crtc_state->pipe_src);
 	u32 scaled_width = adjusted_mode->crtc_hdisplay * pipe_src_h;
 	u32 scaled_height = pipe_src_w * adjusted_mode->crtc_vdisplay;
+	u32 hscale, vscale;
 
 	/* 965+ is easy, it does everything in hw */
-	if (scaled_width > scaled_height)
+	if (scaled_width > scaled_height) {
 		*pfit_control |= PFIT_ENABLE |
 			PFIT_SCALING_PILLAR;
-	else if (scaled_width < scaled_height)
+
+		vscale = panel_fitter_scaling(pipe_src_h, adjusted_mode->crtc_vdisplay);
+		hscale = vscale;
+
+		i9xx_compute_pfit_dst(crtc_state, hscale, vscale);
+	} else if (scaled_width < scaled_height) {
 		*pfit_control |= PFIT_ENABLE |
 			PFIT_SCALING_LETTER;
-	else if (adjusted_mode->crtc_hdisplay != pipe_src_w)
+
+		hscale = panel_fitter_scaling(pipe_src_w, adjusted_mode->crtc_hdisplay);
+		vscale = hscale;
+
+		i9xx_compute_pfit_dst(crtc_state, hscale, vscale);
+	} else if (adjusted_mode->crtc_hdisplay != pipe_src_w) {
 		*pfit_control |= PFIT_ENABLE | PFIT_SCALING_AUTO;
+
+		hscale = panel_fitter_scaling(pipe_src_w, adjusted_mode->crtc_hdisplay);
+		vscale = panel_fitter_scaling(pipe_src_h, adjusted_mode->crtc_vdisplay);
+
+		i9xx_compute_pfit_dst(crtc_state, hscale, vscale);
+	}
+}
+
+static void i965_scale_fullscreen(struct intel_crtc_state *crtc_state,
+				  u32 *pfit_control)
+{
+	const struct drm_display_mode *adjusted_mode =
+		&crtc_state->hw.adjusted_mode;
+	int pipe_src_w = drm_rect_width(&crtc_state->pipe_src);
+	int pipe_src_h = drm_rect_height(&crtc_state->pipe_src);
+	u32 hscale, vscale;
+
+	if (pipe_src_h == adjusted_mode->crtc_vdisplay &&
+	    pipe_src_w == adjusted_mode->crtc_hdisplay)
+		return;
+
+	*pfit_control |= PFIT_ENABLE | PFIT_SCALING_AUTO;
+
+	hscale = panel_fitter_scaling(pipe_src_w, adjusted_mode->crtc_hdisplay);
+	vscale = panel_fitter_scaling(pipe_src_h, adjusted_mode->crtc_vdisplay);
+
+	i9xx_compute_pfit_dst(crtc_state, hscale, vscale);
 }
 
 static void i9xx_scale_aspect(struct intel_crtc_state *crtc_state,
@@ -383,7 +450,7 @@ static void i9xx_scale_aspect(struct intel_crtc_state *crtc_state,
 	int pipe_src_h = drm_rect_height(&crtc_state->pipe_src);
 	u32 scaled_width = adjusted_mode->crtc_hdisplay * pipe_src_h;
 	u32 scaled_height = pipe_src_w * adjusted_mode->crtc_vdisplay;
-	u32 bits;
+	u32 hscale, vscale;
 
 	/*
 	 * For earlier chips we have to calculate the scaling
@@ -396,14 +463,16 @@ static void i9xx_scale_aspect(struct intel_crtc_state *crtc_state,
 
 		*border = LVDS_BORDER_ENABLE;
 		if (pipe_src_h != adjusted_mode->crtc_vdisplay) {
-			bits = panel_fitter_scaling(pipe_src_h,
-						    adjusted_mode->crtc_vdisplay);
+			vscale = panel_fitter_scaling(pipe_src_h, adjusted_mode->crtc_vdisplay);
+			hscale = vscale;
 
-			*pfit_pgm_ratios |= (PFIT_HORIZ_SCALE(bits) |
-					     PFIT_VERT_SCALE(bits));
+			*pfit_pgm_ratios |= (PFIT_HORIZ_SCALE(hscale) |
+					     PFIT_VERT_SCALE(vscale));
 			*pfit_control |= (PFIT_ENABLE |
 					  PFIT_VERT_INTERP_BILINEAR |
 					  PFIT_HORIZ_INTERP_BILINEAR);
+
+			i9xx_compute_pfit_dst(crtc_state, hscale, vscale);
 		}
 	} else if (scaled_width < scaled_height) { /* letter */
 		centre_vertically(adjusted_mode,
@@ -411,14 +480,16 @@ static void i9xx_scale_aspect(struct intel_crtc_state *crtc_state,
 
 		*border = LVDS_BORDER_ENABLE;
 		if (pipe_src_w != adjusted_mode->crtc_hdisplay) {
-			bits = panel_fitter_scaling(pipe_src_w,
-						    adjusted_mode->crtc_hdisplay);
+			vscale = panel_fitter_scaling(pipe_src_w, adjusted_mode->crtc_hdisplay);
+			hscale = vscale;
 
-			*pfit_pgm_ratios |= (PFIT_HORIZ_SCALE(bits) |
-					     PFIT_VERT_SCALE(bits));
+			*pfit_pgm_ratios |= (PFIT_HORIZ_SCALE(hscale) |
+					     PFIT_VERT_SCALE(vscale));
 			*pfit_control |= (PFIT_ENABLE |
 					  PFIT_VERT_INTERP_BILINEAR |
 					  PFIT_HORIZ_INTERP_BILINEAR);
+
+			i9xx_compute_pfit_dst(crtc_state, hscale, vscale);
 		}
 	} else {
 		/* Aspects match, Let hw scale both directions */
@@ -427,9 +498,40 @@ static void i9xx_scale_aspect(struct intel_crtc_state *crtc_state,
 				  PFIT_HORIZ_AUTO_SCALE |
 				  PFIT_VERT_INTERP_BILINEAR |
 				  PFIT_HORIZ_INTERP_BILINEAR);
+
+		hscale = panel_fitter_scaling(pipe_src_w, adjusted_mode->crtc_hdisplay);
+		vscale = panel_fitter_scaling(pipe_src_h, adjusted_mode->crtc_vdisplay);
+
+		i9xx_compute_pfit_dst(crtc_state, hscale, vscale);
 	}
 }
 
+static void i9xx_scale_fullscreen(struct intel_crtc_state *crtc_state,
+				  u32 *pfit_control, u32 *pfit_pgm_ratios,
+				  u32 *border)
+{
+	const struct drm_display_mode *adjusted_mode =
+		&crtc_state->hw.adjusted_mode;
+	int pipe_src_w = drm_rect_width(&crtc_state->pipe_src);
+	int pipe_src_h = drm_rect_height(&crtc_state->pipe_src);
+	u32 hscale, vscale;
+
+	if (pipe_src_h == adjusted_mode->crtc_vdisplay &&
+	    pipe_src_w == adjusted_mode->crtc_hdisplay)
+		return;
+
+	*pfit_control |= (PFIT_ENABLE |
+			  PFIT_VERT_AUTO_SCALE |
+			  PFIT_HORIZ_AUTO_SCALE |
+			  PFIT_VERT_INTERP_BILINEAR |
+			  PFIT_HORIZ_INTERP_BILINEAR);
+
+	hscale = panel_fitter_scaling(pipe_src_w, adjusted_mode->crtc_hdisplay);
+	vscale = panel_fitter_scaling(pipe_src_h, adjusted_mode->crtc_vdisplay);
+
+	i9xx_compute_pfit_dst(crtc_state, hscale, vscale);
+}
+
 static int i9xx_pfit_check_timings(const struct intel_crtc_state *crtc_state)
 {
 	struct intel_display *display = to_intel_display(crtc_state);
@@ -478,27 +580,18 @@ static int i9xx_pfit_compute_config(struct intel_crtc_state *crtc_state,
 	    adjusted_mode->crtc_vdisplay == pipe_src_h)
 		goto out;
 
-	/*
-	 * TODO: implement downscaling for i965+. Need to account
-	 * for downscaling in intel_crtc_compute_pixel_rate().
-	 */
-	if (adjusted_mode->crtc_hdisplay < pipe_src_w) {
-		drm_dbg_kms(display->drm,
-			    "[CRTC:%d:%s] pfit horizontal downscaling (%d->%d) not supported\n",
-			    crtc->base.base.id, crtc->base.name,
-			    pipe_src_w, adjusted_mode->crtc_hdisplay);
-		return -EINVAL;
-	}
-	if (adjusted_mode->crtc_vdisplay < pipe_src_h) {
-		drm_dbg_kms(display->drm,
-			    "[CRTC:%d:%s] pfit vertical downscaling (%d->%d) not supported\n",
-			    crtc->base.base.id, crtc->base.name,
-			    pipe_src_h, adjusted_mode->crtc_vdisplay);
-		return -EINVAL;
-	}
-
 	switch (conn_state->scaling_mode) {
 	case DRM_MODE_SCALE_CENTER:
+		if (adjusted_mode->crtc_hdisplay < pipe_src_w ||
+		    adjusted_mode->crtc_vdisplay < pipe_src_h) {
+			drm_dbg_kms(display->drm,
+				    "[CRTC:%d:%s] pfit center mode source (%dx%d) exceeds display (%dx%d)\n",
+				    crtc->base.base.id, crtc->base.name,
+				    pipe_src_w, pipe_src_h,
+				    adjusted_mode->crtc_hdisplay,
+				    adjusted_mode->crtc_vdisplay);
+			return -EINVAL;
+		}
 		/*
 		 * For centered modes, we have to calculate border widths &
 		 * heights and modify the values programmed into the CRTC.
@@ -516,21 +609,11 @@ static int i9xx_pfit_compute_config(struct intel_crtc_state *crtc_state,
 					  &pfit_pgm_ratios, &border);
 		break;
 	case DRM_MODE_SCALE_FULLSCREEN:
-		/*
-		 * Full scaling, even if it changes the aspect ratio.
-		 * Fortunately this is all done for us in hw.
-		 */
-		if (pipe_src_h != adjusted_mode->crtc_vdisplay ||
-		    pipe_src_w != adjusted_mode->crtc_hdisplay) {
-			pfit_control |= PFIT_ENABLE;
-			if (DISPLAY_VER(display) >= 4)
-				pfit_control |= PFIT_SCALING_AUTO;
-			else
-				pfit_control |= (PFIT_VERT_AUTO_SCALE |
-						 PFIT_VERT_INTERP_BILINEAR |
-						 PFIT_HORIZ_AUTO_SCALE |
-						 PFIT_HORIZ_INTERP_BILINEAR);
-		}
+		if (DISPLAY_VER(display) >= 4)
+			i965_scale_fullscreen(crtc_state, &pfit_control);
+		else
+			i9xx_scale_fullscreen(crtc_state, &pfit_control,
+					      &pfit_pgm_ratios, &border);
 		break;
 	default:
 		MISSING_CASE(conn_state->scaling_mode);
@@ -716,19 +799,39 @@ static void i965_pfit_get_config(struct intel_crtc_state *crtc_state)
 {
 	struct intel_display *display = to_intel_display(crtc_state);
 	struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
+	u32 hscale, vscale, control, ratios;
 	enum pipe pipe;
-	u32 tmp;
 
-	tmp = intel_de_read(display, PFIT_CONTROL(display));
-	if (!(tmp & PFIT_ENABLE))
+	control = intel_de_read(display, PFIT_CONTROL(display));
+	if (!(control & PFIT_ENABLE))
 		return;
 
 	/* Check whether the pfit is attached to our pipe. */
-	pipe = REG_FIELD_GET(PFIT_PIPE_MASK, tmp);
+	pipe = REG_FIELD_GET(PFIT_PIPE_MASK, control);
 	if (pipe != crtc->pipe)
 		return;
 
-	crtc_state->gmch_pfit.control = tmp;
+	crtc_state->gmch_pfit.control = control;
+
+	ratios = intel_de_read(display, PFIT_PGM_RATIOS(display));
+
+	switch (control & PFIT_SCALING_MASK) {
+	case PFIT_SCALING_LETTER:
+		hscale = REG_FIELD_GET(PFIT_HORIZ_SCALE_MASK_965, ratios);
+		vscale = hscale; /* PFIT_VERT_SCALE_MASK_965 contains garbage */
+		break;
+	case PFIT_SCALING_PILLAR:
+		vscale = REG_FIELD_GET(PFIT_VERT_SCALE_MASK_965, ratios);
+		hscale = vscale; /* PFIT_HORIZ_SCALE_MASK_965 contains garbage */
+		break;
+	case PFIT_SCALING_AUTO:
+	case PFIT_SCALING_PROGRAMMED:
+		hscale = REG_FIELD_GET(PFIT_HORIZ_SCALE_MASK_965, ratios);
+		vscale = REG_FIELD_GET(PFIT_VERT_SCALE_MASK_965, ratios);
+		break;
+	}
+
+	i9xx_compute_pfit_dst(crtc_state, hscale, vscale);
 }
 
 static bool i9xx_has_pfit(struct intel_crtc *crtc)
@@ -748,18 +851,32 @@ static void i9xx_pfit_get_config(struct intel_crtc_state *crtc_state)
 {
 	struct intel_display *display = to_intel_display(crtc_state);
 	struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
-	u32 tmp;
+	u32 hscale, vscale, control, ratios;
 
 	if (!i9xx_has_pfit(crtc))
 		return;
 
-	tmp = intel_de_read(display, PFIT_CONTROL(display));
-	if (!(tmp & PFIT_ENABLE))
+	control = intel_de_read(display, PFIT_CONTROL(display));
+	if (!(control & PFIT_ENABLE))
 		return;
 
-	crtc_state->gmch_pfit.control = tmp;
-	crtc_state->gmch_pfit.pgm_ratios =
-		intel_de_read(display, PFIT_PGM_RATIOS(display));
+	crtc_state->gmch_pfit.control = control;
+
+	ratios = intel_de_read(display, PFIT_AUTO_RATIOS(display));
+	if (control & PFIT_HORIZ_AUTO_SCALE)
+		hscale = REG_FIELD_GET(PFIT_HORIZ_SCALE_MASK, ratios);
+	if (control & PFIT_VERT_AUTO_SCALE)
+		vscale = REG_FIELD_GET(PFIT_VERT_SCALE_MASK, ratios);
+
+	ratios = intel_de_read(display, PFIT_PGM_RATIOS(display));
+	if ((control & PFIT_HORIZ_AUTO_SCALE) == 0)
+		hscale = REG_FIELD_GET(PFIT_HORIZ_SCALE_MASK, ratios);
+	if ((control & PFIT_VERT_AUTO_SCALE) == 0)
+		vscale = REG_FIELD_GET(PFIT_VERT_SCALE_MASK, ratios);
+
+	crtc_state->gmch_pfit.pgm_ratios = ratios;
+
+	i9xx_compute_pfit_dst(crtc_state, hscale, vscale);
 }
 
 void intel_pfit_get_config(struct intel_crtc_state *crtc_state)
diff --git a/drivers/gpu/drm/i915/display/intel_pfit.h b/drivers/gpu/drm/i915/display/intel_pfit.h
index 184e1932eae5..f1162b37d407 100644
--- a/drivers/gpu/drm/i915/display/intel_pfit.h
+++ b/drivers/gpu/drm/i915/display/intel_pfit.h
@@ -6,6 +6,8 @@
 #ifndef __INTEL_PFIT_H__
 #define __INTEL_PFIT_H__
 
+#include <linux/types.h>
+
 enum drm_mode_status;
 struct drm_display_mode;
 struct drm_connector_state;
diff --git a/drivers/gpu/drm/i915/display/intel_pfit_regs.h b/drivers/gpu/drm/i915/display/intel_pfit_regs.h
index add8ce28004e..a83ac3b20ca3 100644
--- a/drivers/gpu/drm/i915/display/intel_pfit_regs.h
+++ b/drivers/gpu/drm/i915/display/intel_pfit_regs.h
@@ -34,9 +34,11 @@
 #define   PFIT_HORIZ_SCALE_MASK		REG_GENMASK(15, 4) /* pre-965 */
 #define   PFIT_HORIZ_SCALE(x)		REG_FIELD_PREP(PFIT_HORIZ_SCALE_MASK, (x))
 #define   PFIT_VERT_SCALE_MASK_965	REG_GENMASK(28, 16) /* 965+ */
+#define   PFIT_VERT_SCALE_965(x)	REG_FIELD_PREP(PFIT_VERT_SCALE_MASK_965, (x))
 #define   PFIT_HORIZ_SCALE_MASK_965	REG_GENMASK(12, 0) /* 965+ */
+#define   PFIT_HORIZ_SCALE_965(x)	REG_FIELD_PREP(PFIT_HORIZ_SCALE_MASK_965, (x))
 
-#define PFIT_AUTO_RATIOS(dev_priv) _MMIO(DISPLAY_MMIO_BASE(dev_priv) + 0x61238)
+#define PFIT_AUTO_RATIOS(dev_priv) _MMIO(DISPLAY_MMIO_BASE(dev_priv) + 0x61238) /* pre-965 */
 
 /* CPU panel fitter */
 /* IVB+ has 3 fitters, 0 is 7x5 capable, the other two only 3x3 */
-- 
2.55.0


^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [PATCH 10/15] drm/i915/pfit: Check scaling factor on GMCH
  2026-10-19 13:52 [PATCH 00/15] drm/i915/pfit: Make GMCH panel fitter nicer Ville Syrjala
                   ` (8 preceding siblings ...)
  2026-10-19 13:53 ` [PATCH 09/15] drm/i915/pfit: Populate crtc_state->pfit.dst on GMCH platforms Ville Syrjala
@ 2026-10-19 13:53 ` Ville Syrjala
  2026-10-19 13:53 ` [PATCH 11/15] drm/i915/pfit: Check panel fitter source size " Ville Syrjala
                   ` (7 subsequent siblings)
  17 siblings, 0 replies; 35+ messages in thread
From: Ville Syrjala @ 2026-10-19 13:53 UTC (permalink / raw)
  To: intel-gfx; +Cc: intel-xe

From: Ville Syrjälä <ville.syrjala@linux.intel.com>

Make sure the pfit scaling factor is legal on GMCH platforms.
For now we'll limit all platforms to upscaling only, even
though i965+ can actually downscale.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 drivers/gpu/drm/i915/display/intel_pfit.c | 40 +++++++++++++++++++++++
 1 file changed, 40 insertions(+)

diff --git a/drivers/gpu/drm/i915/display/intel_pfit.c b/drivers/gpu/drm/i915/display/intel_pfit.c
index 63e5a656a33b..5c2e7fdb93cc 100644
--- a/drivers/gpu/drm/i915/display/intel_pfit.c
+++ b/drivers/gpu/drm/i915/display/intel_pfit.c
@@ -532,6 +532,42 @@ static void i9xx_scale_fullscreen(struct intel_crtc_state *crtc_state,
 	i9xx_compute_pfit_dst(crtc_state, hscale, vscale);
 }
 
+static int i9xx_pfit_check_scaling(const struct intel_crtc_state *crtc_state)
+{
+	struct intel_display *display = to_intel_display(crtc_state);
+	struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
+	const struct drm_rect *dst = &crtc_state->pfit.dst;
+	int pipe_src_w = drm_rect_width(&crtc_state->pipe_src);
+	int pipe_src_h = drm_rect_height(&crtc_state->pipe_src);
+	int hscale, vscale, max_scale;
+	struct drm_rect src;
+
+	max_scale = 0x10000;
+
+	drm_rect_init(&src, 0, 0, pipe_src_w << 16, pipe_src_h << 16);
+
+	hscale = drm_rect_calc_hscale(&src, dst, 0, max_scale);
+	if (hscale < 0) {
+		drm_dbg_kms(display->drm,
+			    "[CRTC:%d:%s] pfit horizontal downscaling (%d->%d) exceeds max (0x%x)\n",
+			    crtc->base.base.id, crtc->base.name,
+			    pipe_src_w, drm_rect_width(dst),
+			    max_scale);
+		return hscale;
+	}
+
+	vscale = drm_rect_calc_vscale(&src, dst, 0, max_scale);
+	if (vscale < 0) {
+		drm_dbg_kms(display->drm,
+			    "[CRTC:%d:%s] pfit vertical downscaling (%d->%d) exceeds max (0x%x)\n",
+			    crtc->base.base.id, crtc->base.name,
+			    pipe_src_h, drm_rect_height(dst),
+			    max_scale);
+		return vscale;
+	}
+
+	return 0;
+}
 static int i9xx_pfit_check_timings(const struct intel_crtc_state *crtc_state)
 {
 	struct intel_display *display = to_intel_display(crtc_state);
@@ -642,6 +678,10 @@ static int i9xx_pfit_compute_config(struct intel_crtc_state *crtc_state,
 	if ((pfit_control & PFIT_ENABLE) == 0)
 		return 0;
 
+	ret = i9xx_pfit_check_scaling(crtc_state);
+	if (ret)
+		return ret;
+
 	ret = i9xx_pfit_check_timings(crtc_state);
 	if (ret)
 		return ret;
-- 
2.55.0


^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [PATCH 11/15] drm/i915/pfit: Check panel fitter source size on GMCH
  2026-10-19 13:52 [PATCH 00/15] drm/i915/pfit: Make GMCH panel fitter nicer Ville Syrjala
                   ` (9 preceding siblings ...)
  2026-10-19 13:53 ` [PATCH 10/15] drm/i915/pfit: Check scaling factor on GMCH Ville Syrjala
@ 2026-10-19 13:53 ` Ville Syrjala
  2026-10-19 13:53 ` [PATCH 12/15] drm/i915/pfit: Extract i9xx_pfit_vscale_ratio() and i9xx_pfit_is_one_line_mode() Ville Syrjala
                   ` (6 subsequent siblings)
  17 siblings, 0 replies; 35+ messages in thread
From: Ville Syrjala @ 2026-10-19 13:53 UTC (permalink / raw)
  To: intel-gfx; +Cc: intel-xe

From: Ville Syrjälä <ville.syrjala@linux.intel.com>

The GMCH panel fitter is limited to <=2048 pixel wide
sources. Check for that.

There doesn't really seem to be any vertical limit.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 drivers/gpu/drm/i915/display/intel_pfit.c | 25 +++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/drivers/gpu/drm/i915/display/intel_pfit.c b/drivers/gpu/drm/i915/display/intel_pfit.c
index 5c2e7fdb93cc..d94301c80d57 100644
--- a/drivers/gpu/drm/i915/display/intel_pfit.c
+++ b/drivers/gpu/drm/i915/display/intel_pfit.c
@@ -532,6 +532,27 @@ static void i9xx_scale_fullscreen(struct intel_crtc_state *crtc_state,
 	i9xx_compute_pfit_dst(crtc_state, hscale, vscale);
 }
 
+static int i9xx_pfit_check_src_size(const struct intel_crtc_state *crtc_state)
+{
+	struct intel_display *display = to_intel_display(crtc_state);
+	struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
+	int pipe_src_w = drm_rect_width(&crtc_state->pipe_src);
+	int max_src_w;
+
+	/* Not sure there is any vertical limit */
+	max_src_w = 2048;
+
+	if (pipe_src_w > max_src_w) {
+		drm_dbg_kms(display->drm,
+			    "[CRTC:%d:%s] source width %d exceeds pfit max %d\n",
+			    crtc->base.base.id, crtc->base.name,
+			    pipe_src_w, max_src_w);
+		return -EINVAL;
+	}
+
+	return 0;
+}
+
 static int i9xx_pfit_check_scaling(const struct intel_crtc_state *crtc_state)
 {
 	struct intel_display *display = to_intel_display(crtc_state);
@@ -678,6 +699,10 @@ static int i9xx_pfit_compute_config(struct intel_crtc_state *crtc_state,
 	if ((pfit_control & PFIT_ENABLE) == 0)
 		return 0;
 
+	ret = i9xx_pfit_check_src_size(crtc_state);
+	if (ret)
+		return ret;
+
 	ret = i9xx_pfit_check_scaling(crtc_state);
 	if (ret)
 		return ret;
-- 
2.55.0


^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [PATCH 12/15] drm/i915/pfit: Extract i9xx_pfit_vscale_ratio() and i9xx_pfit_is_one_line_mode()
  2026-10-19 13:52 [PATCH 00/15] drm/i915/pfit: Make GMCH panel fitter nicer Ville Syrjala
                   ` (10 preceding siblings ...)
  2026-10-19 13:53 ` [PATCH 11/15] drm/i915/pfit: Check panel fitter source size " Ville Syrjala
@ 2026-10-19 13:53 ` Ville Syrjala
  2026-10-19 13:53 ` [PATCH 13/15] drm/i915/pfit: No pfit one line mode on i965+ Ville Syrjala
                   ` (5 subsequent siblings)
  17 siblings, 0 replies; 35+ messages in thread
From: Ville Syrjala @ 2026-10-19 13:53 UTC (permalink / raw)
  To: intel-gfx; +Cc: intel-xe

From: Ville Syrjälä <ville.syrjala@linux.intel.com>

Move the raw pfit stuff from the overlay code into intel_pfit.c.
For now we'll stick to the "read registers" approach in
i9xx_pfit_vscale_ratio(), but really we should just use precomputed
values there...

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 drivers/gpu/drm/i915/display/intel_overlay.c | 31 ++++----------------
 drivers/gpu/drm/i915/display/intel_pfit.c    | 30 +++++++++++++++++++
 drivers/gpu/drm/i915/display/intel_pfit.h    |  3 ++
 3 files changed, 38 insertions(+), 26 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_overlay.c b/drivers/gpu/drm/i915/display/intel_overlay.c
index a809aa2950ac..822eef96ea37 100644
--- a/drivers/gpu/drm/i915/display/intel_overlay.c
+++ b/drivers/gpu/drm/i915/display/intel_overlay.c
@@ -37,7 +37,7 @@
 #include "intel_frontbuffer.h"
 #include "intel_overlay.h"
 #include "intel_parent.h"
-#include "intel_pfit_regs.h"
+#include "intel_pfit.h"
 
 /* Limits for overlay size. According to intel doc, the real limits are:
  * Y width: 4095, UV width (planar): 2047, Y height: 2047,
@@ -614,28 +614,8 @@ static int check_overlay_possible_on_crtc(struct intel_overlay *overlay,
 static void update_pfit_vscale_ratio(struct intel_overlay *overlay)
 {
 	struct intel_display *display = overlay->display;
-	u32 ratio;
 
-	/* XXX: This is not the same logic as in the xorg driver, but more in
-	 * line with the intel documentation for the i965
-	 */
-	if (DISPLAY_VER(display) >= 4) {
-		u32 tmp = intel_de_read(display, PFIT_PGM_RATIOS(display));
-
-		/* on i965 use the PGM reg to read out the autoscaler values */
-		ratio = REG_FIELD_GET(PFIT_VERT_SCALE_MASK_965, tmp);
-	} else {
-		u32 tmp;
-
-		if (intel_de_read(display, PFIT_CONTROL(display)) & PFIT_VERT_AUTO_SCALE)
-			tmp = intel_de_read(display, PFIT_AUTO_RATIOS(display));
-		else
-			tmp = intel_de_read(display, PFIT_PGM_RATIOS(display));
-
-		ratio = REG_FIELD_GET(PFIT_VERT_SCALE_MASK, tmp);
-	}
-
-	overlay->pfit_vscale_ratio = ratio;
+	overlay->pfit_vscale_ratio = i9xx_pfit_vscale_ratio(display);
 }
 
 static int check_overlay_dst(struct intel_overlay *overlay,
@@ -838,13 +818,12 @@ int intel_overlay_put_image_ioctl(struct drm_device *dev, void *data,
 		overlay->crtc = crtc;
 		crtc->overlay = overlay;
 
-		/* line too wide, i.e. one-line-mode */
-		if (drm_rect_width(&crtc->config->pipe_src) > 1024 &&
-		    crtc->config->gmch_pfit.control & PFIT_ENABLE) {
+		if (i9xx_pfit_is_one_line_mode(crtc->config)) {
 			overlay->pfit_active = true;
 			update_pfit_vscale_ratio(overlay);
-		} else
+		} else {
 			overlay->pfit_active = false;
+		}
 	}
 
 	ret = check_overlay_dst(overlay, params);
diff --git a/drivers/gpu/drm/i915/display/intel_pfit.c b/drivers/gpu/drm/i915/display/intel_pfit.c
index d94301c80d57..d8daa463452e 100644
--- a/drivers/gpu/drm/i915/display/intel_pfit.c
+++ b/drivers/gpu/drm/i915/display/intel_pfit.c
@@ -960,3 +960,33 @@ void intel_pfit_get_config(struct intel_crtc_state *crtc_state)
 			ilk_pfit_get_config(crtc_state);
 	}
 }
+
+bool i9xx_pfit_is_one_line_mode(const struct intel_crtc_state *crtc_state)
+{
+	return crtc_state->gmch_pfit.control & PFIT_ENABLE &&
+		drm_rect_width(&crtc_state->pipe_src) > 1024;
+}
+
+u32 i9xx_pfit_vscale_ratio(struct intel_display *display)
+{
+	/* XXX: This is not the same logic as in the xorg driver, but more in
+	 * line with the intel documentation for the i965
+	 *
+	 * FIXME don't read this from the hardware but use a computed value
+	 */
+	if (DISPLAY_VER(display) >= 4) {
+		u32 tmp = intel_de_read(display, PFIT_PGM_RATIOS(display));
+
+		/* on i965 use the PGM reg to read out the autoscaler values */
+		return REG_FIELD_GET(PFIT_VERT_SCALE_MASK_965, tmp);
+	} else {
+		u32 tmp;
+
+		if (intel_de_read(display, PFIT_CONTROL(display)) & PFIT_VERT_AUTO_SCALE)
+			tmp = intel_de_read(display, PFIT_AUTO_RATIOS(display));
+		else
+			tmp = intel_de_read(display, PFIT_PGM_RATIOS(display));
+
+		return REG_FIELD_GET(PFIT_VERT_SCALE_MASK, tmp);
+	}
+}
diff --git a/drivers/gpu/drm/i915/display/intel_pfit.h b/drivers/gpu/drm/i915/display/intel_pfit.h
index f1162b37d407..e6cd3af2e2a4 100644
--- a/drivers/gpu/drm/i915/display/intel_pfit.h
+++ b/drivers/gpu/drm/i915/display/intel_pfit.h
@@ -27,4 +27,7 @@ intel_pfit_mode_valid(struct intel_display *display,
 		      const struct drm_display_mode *mode,
 		      enum intel_output_format output_format,
 		      int num_joined_pipes);
+bool i9xx_pfit_is_one_line_mode(const struct intel_crtc_state *crtc_state);
+u32 i9xx_pfit_vscale_ratio(struct intel_display *display);
+
 #endif /* __INTEL_PFIT_H__ */
-- 
2.55.0


^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [PATCH 13/15] drm/i915/pfit: No pfit one line mode on i965+
  2026-10-19 13:52 [PATCH 00/15] drm/i915/pfit: Make GMCH panel fitter nicer Ville Syrjala
                   ` (11 preceding siblings ...)
  2026-10-19 13:53 ` [PATCH 12/15] drm/i915/pfit: Extract i9xx_pfit_vscale_ratio() and i9xx_pfit_is_one_line_mode() Ville Syrjala
@ 2026-10-19 13:53 ` Ville Syrjala
  2026-10-19 13:53 ` [PATCH 14/15] drm/i915/pfit: Account for pfit downscaling in pixel rate on GMCH platforms Ville Syrjala
                   ` (4 subsequent siblings)
  17 siblings, 0 replies; 35+ messages in thread
From: Ville Syrjala @ 2026-10-19 13:53 UTC (permalink / raw)
  To: intel-gfx; +Cc: intel-xe

From: Ville Syrjälä <ville.syrjala@linux.intel.com>

i965+ panel fitter no longer appaers to have the "one line mode"
fallback for wide sources. Presumably the line buffers are now
big enough that the one line mode is not needed.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 drivers/gpu/drm/i915/display/intel_pfit.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/display/intel_pfit.c b/drivers/gpu/drm/i915/display/intel_pfit.c
index d8daa463452e..6eb457047bf4 100644
--- a/drivers/gpu/drm/i915/display/intel_pfit.c
+++ b/drivers/gpu/drm/i915/display/intel_pfit.c
@@ -963,7 +963,10 @@ void intel_pfit_get_config(struct intel_crtc_state *crtc_state)
 
 bool i9xx_pfit_is_one_line_mode(const struct intel_crtc_state *crtc_state)
 {
-	return crtc_state->gmch_pfit.control & PFIT_ENABLE &&
+	struct intel_display *display = to_intel_display(crtc_state);
+
+	return DISPLAY_VER(display) < 4 &&
+		crtc_state->gmch_pfit.control & PFIT_ENABLE &&
 		drm_rect_width(&crtc_state->pipe_src) > 1024;
 }
 
-- 
2.55.0


^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [PATCH 14/15] drm/i915/pfit: Account for pfit downscaling in pixel rate on GMCH platforms
  2026-10-19 13:52 [PATCH 00/15] drm/i915/pfit: Make GMCH panel fitter nicer Ville Syrjala
                   ` (12 preceding siblings ...)
  2026-10-19 13:53 ` [PATCH 13/15] drm/i915/pfit: No pfit one line mode on i965+ Ville Syrjala
@ 2026-10-19 13:53 ` Ville Syrjala
  2026-10-19 13:53 ` [PATCH 15/15] drm/i915/pfit: Allow downscaling on i966+ Ville Syrjala
                   ` (3 subsequent siblings)
  17 siblings, 0 replies; 35+ messages in thread
From: Ville Syrjala @ 2026-10-19 13:53 UTC (permalink / raw)
  To: intel-gfx; +Cc: intel-xe

From: Ville Syrjälä <ville.syrjala@linux.intel.com>

Now that we have crtc_state->pch.dst populated on GMCH platforms
we can use the existing ILK+ code to calculate the downscale
adjusted pixel rate correctly on GMCH platforms.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 drivers/gpu/drm/i915/display/intel_display.c | 23 +++++++-------------
 1 file changed, 8 insertions(+), 15 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index 200426bf0c59..6b813efff955 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -2278,7 +2278,8 @@ static bool intel_crtc_supports_double_wide(const struct intel_crtc *crtc)
 		(crtc->pipe == PIPE_A || display->platform.i915g);
 }
 
-static u32 ilk_pipe_pixel_rate(const struct intel_crtc_state *crtc_state)
+static unsigned int
+intel_pipe_pixel_rate(const struct intel_crtc_state *crtc_state)
 {
 	u32 pixel_rate = crtc_state->hw.pipe_mode.crtc_clock;
 	struct drm_rect src;
@@ -2299,7 +2300,8 @@ static u32 ilk_pipe_pixel_rate(const struct intel_crtc_state *crtc_state)
 				   pixel_rate);
 }
 
-static u32 ilk_pipe_pixel_rate_cdclk(const struct intel_crtc_state *crtc_state)
+static unsigned int
+intel_pipe_pixel_rate_cdclk(const struct intel_crtc_state *crtc_state)
 {
 	struct intel_display *display = to_intel_display(crtc_state);
 	u32 pixel_rate = crtc_state->hw.pipe_mode.crtc_clock;
@@ -2345,19 +2347,10 @@ static void intel_mode_from_crtc_timings(struct drm_display_mode *mode,
 
 static void intel_crtc_compute_pixel_rate(struct intel_crtc_state *crtc_state)
 {
-	struct intel_display *display = to_intel_display(crtc_state);
-
-	if (HAS_GMCH(display)) {
-		/* FIXME calculate proper pipe pixel rate for GMCH pfit */
-		crtc_state->pixel_rate =
-			crtc_state->hw.pipe_mode.crtc_clock;
-		crtc_state->pixel_rate_cdclk = crtc_state->pixel_rate;
-	} else {
-		crtc_state->pixel_rate =
-			ilk_pipe_pixel_rate(crtc_state);
-		crtc_state->pixel_rate_cdclk =
-			ilk_pipe_pixel_rate_cdclk(crtc_state);
-	}
+	crtc_state->pixel_rate =
+		intel_pipe_pixel_rate(crtc_state);
+	crtc_state->pixel_rate_cdclk =
+		intel_pipe_pixel_rate_cdclk(crtc_state);
 }
 
 static void intel_joiner_adjust_timings(const struct intel_crtc_state *crtc_state,
-- 
2.55.0


^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [PATCH 15/15] drm/i915/pfit: Allow downscaling on i966+
  2026-10-19 13:52 [PATCH 00/15] drm/i915/pfit: Make GMCH panel fitter nicer Ville Syrjala
                   ` (13 preceding siblings ...)
  2026-10-19 13:53 ` [PATCH 14/15] drm/i915/pfit: Account for pfit downscaling in pixel rate on GMCH platforms Ville Syrjala
@ 2026-10-19 13:53 ` Ville Syrjala
  2026-10-19 14:47   ` sashiko-bot
  2026-10-20 18:41   ` [PATCH v2 " Ville Syrjala
  2026-10-19 17:23 ` ✓ i915.CI.BAT: success for drm/i915/pfit: Make GMCH panel fitter nicer Patchwork
                   ` (2 subsequent siblings)
  17 siblings, 2 replies; 35+ messages in thread
From: Ville Syrjala @ 2026-10-19 13:53 UTC (permalink / raw)
  To: intel-gfx; +Cc: intel-xe

From: Ville Syrjälä <ville.syrjala@linux.intel.com>

The i965+ panel fitter supports downscaling. Allow it.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 drivers/gpu/drm/i915/display/intel_pfit.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/display/intel_pfit.c b/drivers/gpu/drm/i915/display/intel_pfit.c
index 6eb457047bf4..2b6706c7af53 100644
--- a/drivers/gpu/drm/i915/display/intel_pfit.c
+++ b/drivers/gpu/drm/i915/display/intel_pfit.c
@@ -563,7 +563,10 @@ static int i9xx_pfit_check_scaling(const struct intel_crtc_state *crtc_state)
 	int hscale, vscale, max_scale;
 	struct drm_rect src;
 
-	max_scale = 0x10000;
+	if (DISPLAY_VER(display) >= 4)
+		max_scale = 0x20000;
+	else
+		max_scale = 0x10000;
 
 	drm_rect_init(&src, 0, 0, pipe_src_w << 16, pipe_src_h << 16);
 
-- 
2.55.0


^ permalink raw reply related	[flat|nested] 35+ messages in thread

* Re: [PATCH 09/15] drm/i915/pfit: Populate crtc_state->pfit.dst on GMCH platforms
  2026-10-19 13:53 ` [PATCH 09/15] drm/i915/pfit: Populate crtc_state->pfit.dst on GMCH platforms Ville Syrjala
@ 2026-10-19 14:23   ` sashiko-bot
  2026-10-20 18:40   ` [PATCH v2 " Ville Syrjala
  1 sibling, 0 replies; 35+ messages in thread
From: sashiko-bot @ 2026-10-19 14:23 UTC (permalink / raw)
  To: Ville Syrjala, intel-gfx; +Cc: intel-xe

Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Medium] drm/i915/pfit: uninitialized hscale and vscale in i965_pfit_get_config()
--

commit 1baf5f8a446b17a6276479fa9824e29481b05caf
Author: Ville Syrjälä <ville.syrjala@linux.intel.com>

drm/i915/pfit: Populate crtc_state->pfit.dst on GMCH platforms

This commit populates crtc_state->pfit.dst on GMCH platforms by computing
the destination window coordinates from the horizontal and vertical panel
fitter scaling factors during both config computation and hardware readout.

> diff --git a/drivers/gpu/drm/i915/display/intel_pfit.c b/drivers/gpu/drm/i915/display/intel_pfit.c
> index 5d519f45adbec..63e5a656a33b8 100644
> --- a/drivers/gpu/drm/i915/display/intel_pfit.c
> +++ b/drivers/gpu/drm/i915/display/intel_pfit.c
[ ... ]
> @@ -716,19 +799,39 @@ static void i965_pfit_get_config(struct intel_crtc_state *crtc_state)
>  {
>  	struct intel_display *display = to_intel_display(crtc_state);
>  	struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
> +	u32 hscale, vscale, control, ratios;
>  	enum pipe pipe;
> -	u32 tmp;
>  
> -	tmp = intel_de_read(display, PFIT_CONTROL(display));
> -	if (!(tmp & PFIT_ENABLE))
> +	control = intel_de_read(display, PFIT_CONTROL(display));
> +	if (!(control & PFIT_ENABLE))
>  		return;
>  
>  	/* Check whether the pfit is attached to our pipe. */
> -	pipe = REG_FIELD_GET(PFIT_PIPE_MASK, tmp);
> +	pipe = REG_FIELD_GET(PFIT_PIPE_MASK, control);
>  	if (pipe != crtc->pipe)
>  		return;
>  
> -	crtc_state->gmch_pfit.control = tmp;
> +	crtc_state->gmch_pfit.control = control;
> +
> +	ratios = intel_de_read(display, PFIT_PGM_RATIOS(display));
> +
> +	switch (control & PFIT_SCALING_MASK) {
> +	case PFIT_SCALING_LETTER:
> +		hscale = REG_FIELD_GET(PFIT_HORIZ_SCALE_MASK_965, ratios);
> +		vscale = hscale; /* PFIT_VERT_SCALE_MASK_965 contains garbage */
> +		break;
> +	case PFIT_SCALING_PILLAR:
> +		vscale = REG_FIELD_GET(PFIT_VERT_SCALE_MASK_965, ratios);
> +		hscale = vscale; /* PFIT_HORIZ_SCALE_MASK_965 contains garbage */
> +		break;
> +	case PFIT_SCALING_AUTO:
> +	case PFIT_SCALING_PROGRAMMED:
> +		hscale = REG_FIELD_GET(PFIT_HORIZ_SCALE_MASK_965, ratios);
> +		vscale = REG_FIELD_GET(PFIT_VERT_SCALE_MASK_965, ratios);
> +		break;
> +	}
> +
> +	i9xx_compute_pfit_dst(crtc_state, hscale, vscale);
>  }

[Severity: Medium]
Can hscale and vscale be used uninitialized in i965_pfit_get_config()?

In drivers/gpu/drm/i915/display/intel_pfit_regs.h, PFIT_SCALING_MASK is a
3-bit mask with 8 possible values, while only 4 constants (0..3) are
defined:

#define   PFIT_SCALING_MASK		REG_GENMASK(28, 26) /* 965+ */
#define   PFIT_SCALING_AUTO		REG_FIELD_PREP(PFIT_SCALING_MASK, 0)
#define   PFIT_SCALING_PROGRAMMED	REG_FIELD_PREP(PFIT_SCALING_MASK, 1)
#define   PFIT_SCALING_PILLAR		REG_FIELD_PREP(PFIT_SCALING_MASK, 2)
#define   PFIT_SCALING_LETTER		REG_FIELD_PREP(PFIT_SCALING_MASK, 3)

Since the switch in intel_pfit_get_config() -> i965_pfit_get_config() has no
default case and hscale and vscale are not initialized at declaration, could
a reserved value in PFIT_CONTROL pass uninitialized stack values into
i9xx_compute_pfit_dst() (and trigger compiler uninitialized-variable
warnings)?

[ ... ]

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20261019135309.23578-1-ville.syrjala@linux.intel.com?part=9

^ permalink raw reply	[flat|nested] 35+ messages in thread

* Re: [PATCH 15/15] drm/i915/pfit: Allow downscaling on i966+
  2026-10-19 13:53 ` [PATCH 15/15] drm/i915/pfit: Allow downscaling on i966+ Ville Syrjala
@ 2026-10-19 14:47   ` sashiko-bot
  2026-10-20 18:31     ` Ville Syrjälä
  2026-10-20 18:41   ` [PATCH v2 " Ville Syrjala
  1 sibling, 1 reply; 35+ messages in thread
From: sashiko-bot @ 2026-10-19 14:47 UTC (permalink / raw)
  To: Ville Syrjala, intel-gfx; +Cc: intel-xe

Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Medium] drm/i915/pfit: off-by-one max_scale in i9xx_pfit_check_scaling()
--

commit c5496f644982a254aa09057b7c02f1bea3cb5b18
Author: Ville Syrjälä <ville.syrjala@linux.intel.com>

drm/i915/pfit: Allow downscaling on i966+

This commit updates i9xx_pfit_check_scaling() to raise max_scale to 0x20000 on
DISPLAY_VER(display) >= 4 platforms to permit panel fitter downscaling.

> diff --git a/drivers/gpu/drm/i915/display/intel_pfit.c b/drivers/gpu/drm/i915/display/intel_pfit.c
> index 6eb457047bf4c..2b6706c7af534 100644
> --- a/drivers/gpu/drm/i915/display/intel_pfit.c
> +++ b/drivers/gpu/drm/i915/display/intel_pfit.c
> @@ -563,7 +563,10 @@ static int i9xx_pfit_check_scaling(const struct intel_crtc_state *crtc_state)
>  	int hscale, vscale, max_scale;
>  	struct drm_rect src;
>  
> -	max_scale = 0x10000;
> +	if (DISPLAY_VER(display) >= 4)
> +		max_scale = 0x20000;
> +	else
> +		max_scale = 0x10000;
>  
>  	drm_rect_init(&src, 0, 0, pipe_src_w << 16, pipe_src_h << 16);
>  

[Severity: Medium]
Should max_scale be 0x20000 - 1 (or 0x1fff0) rather than 0x20000 here?

In i9xx_pfit_check_scaling(), max_scale is passed to drm_rect_calc_hscale()
and drm_rect_calc_vscale(), which treat max_hscale and max_vscale as inclusive
upper bounds and only reject with -ERANGE when scale > max_scale. Setting
max_scale = 0x20000 allows an exact 2.0x downscale factor (for example, when
scaling a 1600x1200 pipe_src to an 800x600 dst).

However, in drivers/gpu/drm/i915/display/intel_pfit_regs.h, the i965+ scaling
ratio fields in PFIT_PGM_RATIOS are 13-bit 1.12 fixed-point values:

#define   PFIT_VERT_SCALE_MASK_965	REG_GENMASK(28, 16) /* 965+ */
#define   PFIT_VERT_SCALE_965(x)	REG_FIELD_PREP(PFIT_VERT_SCALE_MASK_965, (x))
#define   PFIT_HORIZ_SCALE_MASK_965	REG_GENMASK(12, 0) /* 965+ */
#define   PFIT_HORIZ_SCALE_965(x)	REG_FIELD_PREP(PFIT_HORIZ_SCALE_MASK_965, (x))

These 13-bit fields have a maximum representable value of 0x1fff (< 2.0). For
an exact 2.0x downscale, panel_fitter_scaling() computes 0x2000 (BIT(13)),
which overflows the 13-bit register field and causes a hardware state readout
mismatch in i965_pfit_get_config() -> i9xx_compute_pfit_dst() on
crtc_state->pfit.dst and pixel_rate:

drivers/gpu/drm/i915/display/intel_pfit.c:i965_pfit_get_config() {
	...
	case PFIT_SCALING_AUTO:
	case PFIT_SCALING_PROGRAMMED:
		hscale = REG_FIELD_GET(PFIT_HORIZ_SCALE_MASK_965, ratios);
		vscale = REG_FIELD_GET(PFIT_VERT_SCALE_MASK_965, ratios);
		break;
	}

	i9xx_compute_pfit_dst(crtc_state, hscale, vscale);
	...
}

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20261019135309.23578-1-ville.syrjala@linux.intel.com?part=15

^ permalink raw reply	[flat|nested] 35+ messages in thread

* Re: [PATCH 01/15] drm/i915/pfit: s/pch_pfit/pfit/
  2026-10-19 13:52 ` [PATCH 01/15] drm/i915/pfit: s/pch_pfit/pfit/ Ville Syrjala
@ 2026-10-19 15:48   ` Jani Nikula
  0 siblings, 0 replies; 35+ messages in thread
From: Jani Nikula @ 2026-10-19 15:48 UTC (permalink / raw)
  To: Ville Syrjala, intel-gfx; +Cc: intel-xe

On Mon, 19 Oct 2026, Ville Syrjala <ville.syrjala@linux.intel.com> wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> Rename crtc_state->pch_fit to just crtc_state->pfit in
> anticipation of using it also on GMCH platforms.
>
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>

Reviewed-by: Jani Nikula <jani.nikula@intel.com>

> ---
>  drivers/gpu/drm/i915/display/intel_casf.c     | 28 ++++++-------
>  .../drm/i915/display/intel_crtc_state_dump.c  | 14 +++----
>  drivers/gpu/drm/i915/display/intel_ddi.c      |  6 +--
>  drivers/gpu/drm/i915/display/intel_display.c  | 36 ++++++++---------
>  .../drm/i915/display/intel_display_types.h    |  4 +-
>  drivers/gpu/drm/i915/display/intel_pfit.c     | 18 ++++-----
>  drivers/gpu/drm/i915/display/skl_scaler.c     | 40 +++++++++----------
>  7 files changed, 73 insertions(+), 73 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_casf.c b/drivers/gpu/drm/i915/display/intel_casf.c
> index cafd21a03632..64d99d6480ac 100644
> --- a/drivers/gpu/drm/i915/display/intel_casf.c
> +++ b/drivers/gpu/drm/i915/display/intel_casf.c
> @@ -81,11 +81,11 @@ static void intel_casf_compute_win_size(struct intel_crtc_state *crtc_state)
>  	u32 total_pixels = mode->hdisplay * mode->vdisplay;
>  
>  	if (total_pixels <= MAX_PIXELS_FOR_3_TAP_FILTER)
> -		crtc_state->pch_pfit.casf.win_size = SHARPNESS_FILTER_SIZE_3X3;
> +		crtc_state->pfit.casf.win_size = SHARPNESS_FILTER_SIZE_3X3;
>  	else if (total_pixels <= MAX_PIXELS_FOR_5_TAP_FILTER)
> -		crtc_state->pch_pfit.casf.win_size = SHARPNESS_FILTER_SIZE_5X5;
> +		crtc_state->pfit.casf.win_size = SHARPNESS_FILTER_SIZE_5X5;
>  	else
> -		crtc_state->pch_pfit.casf.win_size = SHARPNESS_FILTER_SIZE_7X7;
> +		crtc_state->pfit.casf.win_size = SHARPNESS_FILTER_SIZE_7X7;
>  }
>  
>  static void intel_casf_scaler_compute_coeff(struct intel_crtc_state *crtc_state);
> @@ -103,7 +103,7 @@ int intel_casf_compute_config(struct intel_crtc_state *crtc_state)
>  		return -EINVAL;
>  	}
>  
> -	crtc_state->pch_pfit.casf.enable = true;
> +	crtc_state->pfit.casf.enable = true;
>  
>  	/*
>  	 * HW takes a value in form (1.0 + strength) in 4.4 fixed format.
> @@ -113,7 +113,7 @@ int intel_casf_compute_config(struct intel_crtc_state *crtc_state)
>  	 * 6.3125 in 4.4 format is b01100101 which is equal to 101.
>  	 * Also 85 + 16 = 101.
>  	 */
> -	crtc_state->pch_pfit.casf.strength =
> +	crtc_state->pfit.casf.strength =
>  		min(crtc_state->hw.sharpness_strength, 0xEF) + 0x10;
>  
>  	intel_casf_compute_win_size(crtc_state);
> @@ -133,12 +133,12 @@ void intel_casf_sharpness_get_config(struct intel_crtc_state *crtc_state)
>  	if (sharp & FILTER_EN) {
>  		if (drm_WARN_ON(display->drm,
>  				REG_FIELD_GET(FILTER_STRENGTH_MASK, sharp) < 16))
> -			crtc_state->pch_pfit.casf.strength = 0;
> +			crtc_state->pfit.casf.strength = 0;
>  		else
> -			crtc_state->pch_pfit.casf.strength =
> +			crtc_state->pfit.casf.strength =
>  				REG_FIELD_GET(FILTER_STRENGTH_MASK, sharp);
> -		crtc_state->pch_pfit.casf.enable = true;
> -		crtc_state->pch_pfit.casf.win_size =
> +		crtc_state->pfit.casf.enable = true;
> +		crtc_state->pfit.casf.win_size =
>  			REG_FIELD_GET(FILTER_SIZE_MASK, sharp);
>  	}
>  }
> @@ -153,7 +153,7 @@ static u32 casf_coeff(const struct intel_crtc_state *crtc_state, int tap)
>  	struct scaler_filter_coeff value;
>  	u32 coeff;
>  
> -	value = crtc_state->pch_pfit.casf.coeff[tap];
> +	value = crtc_state->pfit.casf.coeff[tap];
>  	value.sign = 0;
>  
>  	coeff = value.sign << 15 | value.exp << 12 | value.mantissa << 3;
> @@ -163,7 +163,7 @@ static u32 casf_coeff(const struct intel_crtc_state *crtc_state, int tap)
>  /*
>   * 17 phase of 7 taps requires 119 coefficients in 60 dwords per set.
>   * To enable casf: program scaler coefficients with the coefficients
> - * that are calculated and stored in pch_pfit.casf.coeff as per
> + * that are calculated and stored in pfit.casf.coeff as per
>   * SCALER_COEFFICIENT_FORMAT
>   */
>  static void intel_casf_write_coeff(const struct intel_crtc_state *crtc_state)
> @@ -221,9 +221,9 @@ static void intel_casf_scaler_compute_coeff(struct intel_crtc_state *crtc_state)
>  	u16 sum_coeff = 0;
>  	int i;
>  
> -	if (crtc_state->pch_pfit.casf.win_size == 0)
> +	if (crtc_state->pfit.casf.win_size == 0)
>  		filtercoeff = filtercoeff_1;
> -	else if (crtc_state->pch_pfit.casf.win_size == 1)
> +	else if (crtc_state->pfit.casf.win_size == 1)
>  		filtercoeff = filtercoeff_2;
>  	else
>  		filtercoeff = filtercoeff_3;
> @@ -233,7 +233,7 @@ static void intel_casf_scaler_compute_coeff(struct intel_crtc_state *crtc_state)
>  
>  	for (i = 0; i < SCALER_FILTER_NUM_TAPS; i++) {
>  		filter_coeff[i] = (*(filtercoeff + i) * 100 / sum_coeff);
> -		convert_sharpness_coeff_binary(&crtc_state->pch_pfit.casf.coeff[i],
> +		convert_sharpness_coeff_binary(&crtc_state->pfit.casf.coeff[i],
>  					      filter_coeff[i]);
>  	}
>  }
> diff --git a/drivers/gpu/drm/i915/display/intel_crtc_state_dump.c b/drivers/gpu/drm/i915/display/intel_crtc_state_dump.c
> index 92675a88b969..f30d07bc6b07 100644
> --- a/drivers/gpu/drm/i915/display/intel_crtc_state_dump.c
> +++ b/drivers/gpu/drm/i915/display/intel_crtc_state_dump.c
> @@ -356,15 +356,15 @@ void intel_crtc_state_dump(const struct intel_crtc_state *pipe_config,
>  			   pipe_config->gmch_pfit.pgm_ratios,
>  			   pipe_config->gmch_pfit.lvds_border_bits);
>  	else
> -		drm_printf(&p, "pch pfit: " DRM_RECT_FMT ", %s, force thru: %s\n",
> -			   DRM_RECT_ARG(&pipe_config->pch_pfit.dst),
> -			   str_enabled_disabled(pipe_config->pch_pfit.enabled),
> -			   str_yes_no(pipe_config->pch_pfit.force_thru));
> +		drm_printf(&p, "pfit: " DRM_RECT_FMT ", %s, force thru: %s\n",
> +			   DRM_RECT_ARG(&pipe_config->pfit.dst),
> +			   str_enabled_disabled(pipe_config->pfit.enabled),
> +			   str_yes_no(pipe_config->pfit.force_thru));
>  
>  	drm_printf(&p, "sharpness strength: %d, sharpness tap size: %d, sharpness enable: %d\n",
> -		   pipe_config->pch_pfit.casf.strength,
> -		   pipe_config->pch_pfit.casf.win_size,
> -		   pipe_config->pch_pfit.casf.enable);
> +		   pipe_config->pfit.casf.strength,
> +		   pipe_config->pfit.casf.win_size,
> +		   pipe_config->pfit.casf.enable);
>  
>  	drm_printf(&p, "ips: %i, double wide: %i, drrs: %i\n",
>  		   pipe_config->ips_enabled, pipe_config->double_wide,
> diff --git a/drivers/gpu/drm/i915/display/intel_ddi.c b/drivers/gpu/drm/i915/display/intel_ddi.c
> index a46ab5d3d70f..2c09fccecbbf 100644
> --- a/drivers/gpu/drm/i915/display/intel_ddi.c
> +++ b/drivers/gpu/drm/i915/display/intel_ddi.c
> @@ -562,7 +562,7 @@ intel_ddi_transcoder_func_reg_val_get(struct intel_encoder *encoder,
>  			 * eDP when not using the panel fitter, and when not
>  			 * using motion blur mitigation (which we don't
>  			 * support). */
> -			if (crtc_state->pch_pfit.force_thru)
> +			if (crtc_state->pfit.force_thru)
>  				temp |= TRANS_DDI_EDP_INPUT_A_ONOFF;
>  			else
>  				temp |= TRANS_DDI_EDP_INPUT_A_ON;
> @@ -4560,8 +4560,8 @@ static int intel_ddi_compute_config(struct intel_atomic_state *state,
>  
>  	if (display->platform.haswell && crtc->pipe == PIPE_A &&
>  	    pipe_config->cpu_transcoder == TRANSCODER_EDP)
> -		pipe_config->pch_pfit.force_thru =
> -			pipe_config->pch_pfit.enabled ||
> +		pipe_config->pfit.force_thru =
> +			pipe_config->pfit.enabled ||
>  			pipe_config->crc_enabled;
>  
>  	if (display->platform.geminilake || display->platform.broxton)
> diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
> index d5d4453f283b..723dec35402a 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.c
> +++ b/drivers/gpu/drm/i915/display/intel_display.c
> @@ -1130,7 +1130,7 @@ static void intel_post_plane_update(struct intel_atomic_state *state,
>  		intel_encoders_audio_enable(state, crtc);
>  
>  	if (intel_display_wa(display, INTEL_DISPLAY_WA_14011503117)) {
> -		if (old_crtc_state->pch_pfit.enabled != new_crtc_state->pch_pfit.enabled)
> +		if (old_crtc_state->pfit.enabled != new_crtc_state->pfit.enabled)
>  			adl_scaler_ecc_unmask(new_crtc_state);
>  	}
>  
> @@ -1652,7 +1652,7 @@ static bool glk_need_scaler_clock_gating_wa(const struct intel_crtc_state *crtc_
>  {
>  	struct intel_display *display = to_intel_display(crtc_state);
>  
> -	return DISPLAY_VER(display) == 10 && crtc_state->pch_pfit.enabled;
> +	return DISPLAY_VER(display) == 10 && crtc_state->pfit.enabled;
>  }
>  
>  static void glk_pipe_scaler_clock_gating_wa(struct intel_crtc *crtc, bool enable)
> @@ -2052,8 +2052,8 @@ static void get_crtc_power_domains(struct intel_crtc_state *crtc_state,
>  
>  	set_bit(POWER_DOMAIN_PIPE(pipe), mask->bits);
>  	set_bit(POWER_DOMAIN_TRANSCODER(cpu_transcoder), mask->bits);
> -	if (crtc_state->pch_pfit.enabled ||
> -	    crtc_state->pch_pfit.force_thru)
> +	if (crtc_state->pfit.enabled ||
> +	    crtc_state->pfit.force_thru)
>  		set_bit(POWER_DOMAIN_PIPE_PANEL_FITTER(pipe), mask->bits);
>  
>  	drm_for_each_encoder_mask(encoder, display->drm,
> @@ -2288,14 +2288,14 @@ static u32 ilk_pipe_pixel_rate(const struct intel_crtc_state *crtc_state)
>  	 * PF-ID we'll need to adjust the pixel_rate here.
>  	 */
>  
> -	if (!crtc_state->pch_pfit.enabled)
> +	if (!crtc_state->pfit.enabled)
>  		return pixel_rate;
>  
>  	drm_rect_init(&src, 0, 0,
>  		      drm_rect_width(&crtc_state->pipe_src) << 16,
>  		      drm_rect_height(&crtc_state->pipe_src) << 16);
>  
> -	return intel_adjusted_rate(&src, &crtc_state->pch_pfit.dst,
> +	return intel_adjusted_rate(&src, &crtc_state->pfit.dst,
>  				   pixel_rate);
>  }
>  
> @@ -2311,14 +2311,14 @@ static u32 ilk_pipe_pixel_rate_cdclk(const struct intel_crtc_state *crtc_state)
>  	 * PF-ID we'll need to adjust the pixel_rate here.
>  	 */
>  
> -	if (!crtc_state->pch_pfit.enabled)
> +	if (!crtc_state->pfit.enabled)
>  		return pixel_rate;
>  
>  	drm_rect_init(&src, 0, 0,
>  		      drm_rect_width(&crtc_state->pipe_src) << 16,
>  		      drm_rect_height(&crtc_state->pipe_src) << 16);
>  
> -	return intel_adjusted_rate_cdclk(&src, &crtc_state->pch_pfit.dst,
> +	return intel_adjusted_rate_cdclk(&src, &crtc_state->pfit.dst,
>  					 pixel_rate, ppc);
>  }
>  
> @@ -4012,7 +4012,7 @@ static bool hsw_get_transcoder_state(struct intel_crtc *crtc,
>  				    TRANS_DDI_FUNC_CTL(display, pipe_config->cpu_transcoder));
>  
>  		if ((tmp & TRANS_DDI_EDP_INPUT_MASK) == TRANS_DDI_EDP_INPUT_A_ONOFF)
> -			pipe_config->pch_pfit.force_thru = true;
> +			pipe_config->pfit.force_thru = true;
>  	}
>  
>  	tmp = intel_de_read(display,
> @@ -5475,16 +5475,16 @@ intel_pipe_config_compare(const struct intel_crtc_state *current_config,
>  	 * Changing the EDP transcoder input mux
>  	 * (A_ONOFF vs. A_ON) requires a full modeset.
>  	 */
> -	PIPE_CONF_CHECK_BOOL(pch_pfit.force_thru);
> +	PIPE_CONF_CHECK_BOOL(pfit.force_thru);
>  
>  	if (!fastset) {
>  		PIPE_CONF_CHECK_RECT(pipe_src);
>  
> -		PIPE_CONF_CHECK_BOOL(pch_pfit.enabled);
> -		PIPE_CONF_CHECK_RECT(pch_pfit.dst);
> -		PIPE_CONF_CHECK_BOOL(pch_pfit.casf.enable);
> -		PIPE_CONF_CHECK_I(pch_pfit.casf.win_size);
> -		PIPE_CONF_CHECK_I(pch_pfit.casf.strength);
> +		PIPE_CONF_CHECK_BOOL(pfit.enabled);
> +		PIPE_CONF_CHECK_RECT(pfit.dst);
> +		PIPE_CONF_CHECK_BOOL(pfit.casf.enable);
> +		PIPE_CONF_CHECK_I(pfit.casf.win_size);
> +		PIPE_CONF_CHECK_I(pfit.casf.strength);
>  
>  		PIPE_CONF_CHECK_I(scaler_state.scaler_id);
>  		PIPE_CONF_CHECK_I(pixel_rate_cdclk);
> @@ -6775,12 +6775,12 @@ static void intel_pipe_fastset(const struct intel_crtc_state *old_crtc_state,
>  
>  	/* on skylake this is done by detaching scalers */
>  	if (DISPLAY_VER(display) >= 9) {
> -		if (new_crtc_state->pch_pfit.enabled)
> +		if (new_crtc_state->pfit.enabled)
>  			skl_pfit_enable(new_crtc_state);
>  	} else if (HAS_PCH_SPLIT(display)) {
> -		if (new_crtc_state->pch_pfit.enabled)
> +		if (new_crtc_state->pfit.enabled)
>  			ilk_pfit_enable(new_crtc_state);
> -		else if (old_crtc_state->pch_pfit.enabled)
> +		else if (old_crtc_state->pfit.enabled)
>  			ilk_pfit_disable(old_crtc_state);
>  	}
>  
> diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h b/drivers/gpu/drm/i915/display/intel_display_types.h
> index 0e3083e852d5..b3d55993e41a 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_types.h
> +++ b/drivers/gpu/drm/i915/display/intel_display_types.h
> @@ -1251,13 +1251,13 @@ struct intel_crtc_state {
>  		u32 lvds_border_bits;
>  	} gmch_pfit;
>  
> -	/* Panel fitter placement and size for Ironlake+ */
> +	/* Panel fitter placement and size */
>  	struct {
>  		struct intel_casf casf;
>  		struct drm_rect dst;
>  		bool enabled;
>  		bool force_thru;
> -	} pch_pfit;
> +	} pfit;
>  
>  	/* FDI configuration, only valid if has_pch_encoder is set. */
>  	int fdi_lanes;
> diff --git a/drivers/gpu/drm/i915/display/intel_pfit.c b/drivers/gpu/drm/i915/display/intel_pfit.c
> index 5b170c74a510..3e3c69233e58 100644
> --- a/drivers/gpu/drm/i915/display/intel_pfit.c
> +++ b/drivers/gpu/drm/i915/display/intel_pfit.c
> @@ -22,7 +22,7 @@ static int intel_pch_pfit_check_dst_window(const struct intel_crtc_state *crtc_s
>  	struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
>  	const struct drm_display_mode *adjusted_mode =
>  		&crtc_state->hw.adjusted_mode;
> -	const struct drm_rect *dst = &crtc_state->pch_pfit.dst;
> +	const struct drm_rect *dst = &crtc_state->pfit.dst;
>  	int width = drm_rect_width(dst);
>  	int height = drm_rect_height(dst);
>  	int x = dst->x1;
> @@ -109,7 +109,7 @@ static int intel_pch_pfit_check_scaling(const struct intel_crtc_state *crtc_stat
>  {
>  	struct intel_display *display = to_intel_display(crtc_state);
>  	struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
> -	const struct drm_rect *dst = &crtc_state->pch_pfit.dst;
> +	const struct drm_rect *dst = &crtc_state->pfit.dst;
>  	int pipe_src_w = drm_rect_width(&crtc_state->pipe_src);
>  	int pipe_src_h = drm_rect_height(&crtc_state->pipe_src);
>  	int hscale, vscale, max_scale = 0x12000; /* 1.125 */
> @@ -271,9 +271,9 @@ static int pch_panel_fitting(struct intel_crtc_state *crtc_state,
>  		return -EINVAL;
>  	}
>  
> -	drm_rect_init(&crtc_state->pch_pfit.dst,
> +	drm_rect_init(&crtc_state->pfit.dst,
>  		      x, y, width, height);
> -	crtc_state->pch_pfit.enabled = true;
> +	crtc_state->pfit.enabled = true;
>  
>  	/*
>  	 * SKL+ have unified scalers for pipes/planes so the
> @@ -594,14 +594,14 @@ void ilk_pfit_enable(const struct intel_crtc_state *crtc_state)
>  {
>  	struct intel_display *display = to_intel_display(crtc_state);
>  	struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
> -	const struct drm_rect *dst = &crtc_state->pch_pfit.dst;
> +	const struct drm_rect *dst = &crtc_state->pfit.dst;
>  	enum pipe pipe = crtc->pipe;
>  	int width = drm_rect_width(dst);
>  	int height = drm_rect_height(dst);
>  	int x = dst->x1;
>  	int y = dst->y1;
>  
> -	if (!crtc_state->pch_pfit.enabled)
> +	if (!crtc_state->pfit.enabled)
>  		return;
>  
>  	/*
> @@ -630,7 +630,7 @@ void ilk_pfit_disable(const struct intel_crtc_state *old_crtc_state)
>  	 * To avoid upsetting the power well on haswell only disable the pfit if
>  	 * it's in use. The hw state code will make sure we get this right.
>  	 */
> -	if (!old_crtc_state->pch_pfit.enabled)
> +	if (!old_crtc_state->pfit.enabled)
>  		return;
>  
>  	intel_de_write_fw(display, PF_CTL(pipe), 0);
> @@ -654,12 +654,12 @@ void ilk_pfit_get_config(struct intel_crtc_state *crtc_state)
>  	else
>  		pipe = crtc->pipe;
>  
> -	crtc_state->pch_pfit.enabled = true;
> +	crtc_state->pfit.enabled = true;
>  
>  	pos = intel_de_read(display, PF_WIN_POS(crtc->pipe));
>  	size = intel_de_read(display, PF_WIN_SZ(crtc->pipe));
>  
> -	drm_rect_init(&crtc_state->pch_pfit.dst,
> +	drm_rect_init(&crtc_state->pfit.dst,
>  		      REG_FIELD_GET(PF_WIN_XPOS_MASK, pos),
>  		      REG_FIELD_GET(PF_WIN_YPOS_MASK, pos),
>  		      REG_FIELD_GET(PF_WIN_XSIZE_MASK, size),
> diff --git a/drivers/gpu/drm/i915/display/skl_scaler.c b/drivers/gpu/drm/i915/display/skl_scaler.c
> index 7994b983d509..0be6808bc2e4 100644
> --- a/drivers/gpu/drm/i915/display/skl_scaler.c
> +++ b/drivers/gpu/drm/i915/display/skl_scaler.c
> @@ -276,9 +276,9 @@ int skl_update_scaler_crtc(struct intel_crtc_state *crtc_state)
>  	if (ret)
>  		return ret;
>  
> -	if (crtc_state->pch_pfit.enabled) {
> -		width = drm_rect_width(&crtc_state->pch_pfit.dst);
> -		height = drm_rect_height(&crtc_state->pch_pfit.dst);
> +	if (crtc_state->pfit.enabled) {
> +		width = drm_rect_width(&crtc_state->pfit.dst);
> +		height = drm_rect_height(&crtc_state->pfit.dst);
>  	} else {
>  		width = pipe_mode->crtc_hdisplay;
>  		height = pipe_mode->crtc_vdisplay;
> @@ -289,7 +289,7 @@ int skl_update_scaler_crtc(struct intel_crtc_state *crtc_state)
>  				 drm_rect_width(&crtc_state->pipe_src),
>  				 drm_rect_height(&crtc_state->pipe_src),
>  				 width, height, NULL, 0,
> -				 crtc_state->pch_pfit.enabled);
> +				 crtc_state->pfit.enabled);
>  }
>  
>  /**
> @@ -482,7 +482,7 @@ static int intel_atomic_setup_scaler(struct intel_crtc_state *crtc_state,
>  		}
>  	}
>  
> -	if (crtc_state->pch_pfit.enabled) {
> +	if (crtc_state->pfit.enabled) {
>  		struct drm_rect src;
>  		int max_hscale, max_vscale;
>  
> @@ -503,9 +503,9 @@ static int intel_atomic_setup_scaler(struct intel_crtc_state *crtc_state,
>  			max_vscale = 0x10000;
>  		}
>  
> -		hscale = drm_rect_calc_hscale(&src, &crtc_state->pch_pfit.dst,
> +		hscale = drm_rect_calc_hscale(&src, &crtc_state->pfit.dst,
>  					      0, max_hscale);
> -		vscale = drm_rect_calc_vscale(&src, &crtc_state->pch_pfit.dst,
> +		vscale = drm_rect_calc_vscale(&src, &crtc_state->pfit.dst,
>  					      0, max_vscale);
>  
>  		if (hscale < 0 || vscale < 0) {
> @@ -513,7 +513,7 @@ static int intel_atomic_setup_scaler(struct intel_crtc_state *crtc_state,
>  				    "Scaler %d doesn't support required pipe scaling\n",
>  				    *scaler_id);
>  			drm_rect_debug_print("src: ", &src, true);
> -			drm_rect_debug_print("dst: ", &crtc_state->pch_pfit.dst, false);
> +			drm_rect_debug_print("dst: ", &crtc_state->pfit.dst, false);
>  
>  			return -EINVAL;
>  		}
> @@ -542,7 +542,7 @@ static int setup_crtc_scaler(struct intel_atomic_state *state,
>  					 hweight32(scaler_state->scaler_users),
>  					 crtc, "CRTC", crtc->base.base.id,
>  					 NULL, &scaler_state->scaler_id,
> -					 crtc_state->pch_pfit.casf.enable);
> +					 crtc_state->pfit.casf.enable);
>  }
>  
>  static int setup_plane_scaler(struct intel_atomic_state *state,
> @@ -760,12 +760,12 @@ static void skl_scaler_setup_filter(struct intel_display *display,
>  
>  static u32 casf_sharpness_ctl(const struct intel_crtc_state *crtc_state)
>  {
> -	if (!crtc_state->pch_pfit.casf.enable)
> +	if (!crtc_state->pfit.casf.enable)
>  		return 0;
>  
>  	return FILTER_EN |
> -		FILTER_STRENGTH(crtc_state->pch_pfit.casf.strength) |
> -		crtc_state->pch_pfit.casf.win_size;
> +		FILTER_STRENGTH(crtc_state->pfit.casf.strength) |
> +		crtc_state->pfit.casf.win_size;
>  }
>  
>  void skl_pfit_enable(const struct intel_crtc_state *crtc_state)
> @@ -774,7 +774,7 @@ void skl_pfit_enable(const struct intel_crtc_state *crtc_state)
>  	struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
>  	const struct intel_crtc_scaler_state *scaler_state =
>  		&crtc_state->scaler_state;
> -	const struct drm_rect *dst = &crtc_state->pch_pfit.dst;
> +	const struct drm_rect *dst = &crtc_state->pfit.dst;
>  	u16 uv_rgb_hphase, uv_rgb_vphase;
>  	enum pipe pipe = crtc->pipe;
>  	int width = drm_rect_width(dst);
> @@ -786,7 +786,7 @@ void skl_pfit_enable(const struct intel_crtc_state *crtc_state)
>  	int id;
>  	u32 ps_ctrl;
>  
> -	if (!crtc_state->pch_pfit.enabled)
> +	if (!crtc_state->pfit.enabled)
>  		return;
>  
>  	if (drm_WARN_ON(display->drm,
> @@ -810,11 +810,11 @@ void skl_pfit_enable(const struct intel_crtc_state *crtc_state)
>  
>  	ps_ctrl = PS_SCALER_EN | PS_BINDING_PIPE | scaler_state->scalers[id].mode |
>  		skl_scaler_get_filter_select(crtc_state->hw.scaling_filter,
> -					     crtc_state->pch_pfit.casf.enable);
> +					     crtc_state->pfit.casf.enable);
>  
>  	trace_intel_pipe_scaler_update_arm(crtc, id, x, y, width, height);
>  
> -	if (crtc_state->pch_pfit.casf.enable)
> +	if (crtc_state->pfit.casf.enable)
>  		intel_casf_setup(crtc_state);
>  	else
>  		skl_scaler_setup_filter(display, NULL, pipe, id, 0,
> @@ -977,12 +977,12 @@ void skl_scaler_get_config(struct intel_crtc_state *crtc_state)
>  	if (scaler_has_casf(display, scaler_id))
>  		intel_casf_sharpness_get_config(crtc_state);
>  
> -	crtc_state->pch_pfit.enabled = true;
> +	crtc_state->pfit.enabled = true;
>  
>  	pos = intel_de_read(display, SKL_PS_WIN_POS(crtc->pipe, scaler_id));
>  	size = intel_de_read(display, SKL_PS_WIN_SZ(crtc->pipe, scaler_id));
>  
> -	drm_rect_init(&crtc_state->pch_pfit.dst,
> +	drm_rect_init(&crtc_state->pfit.dst,
>  		      REG_FIELD_GET(PS_WIN_XPOS_MASK, pos),
>  		      REG_FIELD_GET(PS_WIN_YPOS_MASK, pos),
>  		      REG_FIELD_GET(PS_WIN_XSIZE_MASK, size),
> @@ -998,7 +998,7 @@ void adl_scaler_ecc_mask(const struct intel_crtc_state *crtc_state)
>  {
>  	struct intel_display *display = to_intel_display(crtc_state);
>  
> -	if (!crtc_state->pch_pfit.enabled)
> +	if (!crtc_state->pfit.enabled)
>  		return;
>  
>  	intel_de_write(display, XELPD_DISPLAY_ERR_FATAL_MASK, ~0);
> @@ -1056,7 +1056,7 @@ unsigned int skl_scaler_2nd_prefill_lines(const struct intel_crtc_state *crtc_st
>  		&crtc_state->scaler_state;
>  	int num_scalers = hweight32(scaler_state->scaler_users);
>  
> -	if (num_scalers > 1 && crtc_state->pch_pfit.enabled)
> +	if (num_scalers > 1 && crtc_state->pfit.enabled)
>  		return 4 << 16;
>  
>  	return 0;

-- 
Jani Nikula, Intel

^ permalink raw reply	[flat|nested] 35+ messages in thread

* Re: [PATCH 02/15] drm/i915/pfit: s/intel_pch_pfit/ilk_pfit/
  2026-10-19 13:52 ` [PATCH 02/15] drm/i915/pfit: s/intel_pch_pfit/ilk_pfit/ Ville Syrjala
@ 2026-10-19 15:49   ` Jani Nikula
  0 siblings, 0 replies; 35+ messages in thread
From: Jani Nikula @ 2026-10-19 15:49 UTC (permalink / raw)
  To: Ville Syrjala, intel-gfx; +Cc: intel-xe

On Mon, 19 Oct 2026, Ville Syrjala <ville.syrjala@linux.intel.com> wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> The intel_pch_pfit_*() have nothing to do with PCH. Rename
> them to just ilk_pfit_*() to better reflect their meaning.
>
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>

Reviewed-by: Jani Nikula <jani.nikula@intel.com>

> ---
>  drivers/gpu/drm/i915/display/intel_pfit.c | 24 +++++++++++------------
>  1 file changed, 12 insertions(+), 12 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_pfit.c b/drivers/gpu/drm/i915/display/intel_pfit.c
> index 3e3c69233e58..aa4a4d10d124 100644
> --- a/drivers/gpu/drm/i915/display/intel_pfit.c
> +++ b/drivers/gpu/drm/i915/display/intel_pfit.c
> @@ -16,7 +16,7 @@
>  #include "intel_pfit_regs.h"
>  #include "skl_scaler.h"
>  
> -static int intel_pch_pfit_check_dst_window(const struct intel_crtc_state *crtc_state)
> +static int ilk_pfit_check_dst_window(const struct intel_crtc_state *crtc_state)
>  {
>  	struct intel_display *display = to_intel_display(crtc_state);
>  	struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
> @@ -67,7 +67,7 @@ static int intel_pch_pfit_check_dst_window(const struct intel_crtc_state *crtc_s
>  	return 0;
>  }
>  
> -static int intel_pch_pfit_check_src_size(const struct intel_crtc_state *crtc_state)
> +static int ilk_pfit_check_src_size(const struct intel_crtc_state *crtc_state)
>  {
>  	struct intel_display *display = to_intel_display(crtc_state);
>  	struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
> @@ -105,7 +105,7 @@ static int intel_pch_pfit_check_src_size(const struct intel_crtc_state *crtc_sta
>  	return 0;
>  }
>  
> -static int intel_pch_pfit_check_scaling(const struct intel_crtc_state *crtc_state)
> +static int ilk_pfit_check_scaling(const struct intel_crtc_state *crtc_state)
>  {
>  	struct intel_display *display = to_intel_display(crtc_state);
>  	struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
> @@ -140,7 +140,7 @@ static int intel_pch_pfit_check_scaling(const struct intel_crtc_state *crtc_stat
>  	return 0;
>  }
>  
> -static int intel_pch_pfit_check_timings(const struct intel_crtc_state *crtc_state)
> +static int ilk_pfit_check_timings(const struct intel_crtc_state *crtc_state)
>  {
>  	struct intel_display *display = to_intel_display(crtc_state);
>  	struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
> @@ -158,7 +158,7 @@ static int intel_pch_pfit_check_timings(const struct intel_crtc_state *crtc_stat
>  	return 0;
>  }
>  
> -static int intel_pch_pfit_check_cloning(const struct intel_crtc_state *crtc_state)
> +static int ilk_pfit_check_cloning(const struct intel_crtc_state *crtc_state)
>  {
>  	struct intel_display *display = to_intel_display(crtc_state);
>  	struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
> @@ -182,7 +182,7 @@ static int intel_pch_pfit_check_cloning(const struct intel_crtc_state *crtc_stat
>  }
>  
>  /* adjusted_mode has been preset to be the panel's fixed mode */
> -static int pch_panel_fitting(struct intel_crtc_state *crtc_state,
> +static int ilk_panel_fitting(struct intel_crtc_state *crtc_state,
>  			     const struct drm_connector_state *conn_state)
>  {
>  	struct intel_display *display = to_intel_display(crtc_state);
> @@ -282,23 +282,23 @@ static int pch_panel_fitting(struct intel_crtc_state *crtc_state,
>  	if (DISPLAY_VER(display) >= 9)
>  		return 0;
>  
> -	ret = intel_pch_pfit_check_dst_window(crtc_state);
> +	ret = ilk_pfit_check_dst_window(crtc_state);
>  	if (ret)
>  		return ret;
>  
> -	ret = intel_pch_pfit_check_src_size(crtc_state);
> +	ret = ilk_pfit_check_src_size(crtc_state);
>  	if (ret)
>  		return ret;
>  
> -	ret = intel_pch_pfit_check_scaling(crtc_state);
> +	ret = ilk_pfit_check_scaling(crtc_state);
>  	if (ret)
>  		return ret;
>  
> -	ret = intel_pch_pfit_check_timings(crtc_state);
> +	ret = ilk_pfit_check_timings(crtc_state);
>  	if (ret)
>  		return ret;
>  
> -	ret = intel_pch_pfit_check_cloning(crtc_state);
> +	ret = ilk_pfit_check_cloning(crtc_state);
>  	if (ret)
>  		return ret;
>  
> @@ -587,7 +587,7 @@ int intel_pfit_compute_config(struct intel_crtc_state *crtc_state,
>  	if (HAS_GMCH(display))
>  		return gmch_panel_fitting(crtc_state, conn_state);
>  	else
> -		return pch_panel_fitting(crtc_state, conn_state);
> +		return ilk_panel_fitting(crtc_state, conn_state);
>  }
>  
>  void ilk_pfit_enable(const struct intel_crtc_state *crtc_state)

-- 
Jani Nikula, Intel

^ permalink raw reply	[flat|nested] 35+ messages in thread

* Re: [PATCH 03/15] drm/i915/pfit: Stop using HAS_PCH_SPLIT() in confusing places
  2026-10-19 13:52 ` [PATCH 03/15] drm/i915/pfit: Stop using HAS_PCH_SPLIT() in confusing places Ville Syrjala
@ 2026-10-19 15:49   ` Jani Nikula
  0 siblings, 0 replies; 35+ messages in thread
From: Jani Nikula @ 2026-10-19 15:49 UTC (permalink / raw)
  To: Ville Syrjala, intel-gfx; +Cc: intel-xe

On Mon, 19 Oct 2026, Ville Syrjala <ville.syrjala@linux.intel.com> wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> Stop using HAS_PCH_SPLIT() in places that have nothing to
> do with PCH. !HAS_GMCH is a more sensible thing top check for.

*to

Reviewed-by: Jani Nikula <jani.nikula@intel.com>


>
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> ---
>  drivers/gpu/drm/i915/display/i9xx_wm.c               | 2 +-
>  drivers/gpu/drm/i915/display/intel_display.c         | 2 +-
>  drivers/gpu/drm/i915/display/intel_display_debugfs.c | 2 +-
>  3 files changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/i9xx_wm.c b/drivers/gpu/drm/i915/display/i9xx_wm.c
> index 86d1c9f7f0ff..0233f5053d95 100644
> --- a/drivers/gpu/drm/i915/display/i9xx_wm.c
> +++ b/drivers/gpu/drm/i915/display/i9xx_wm.c
> @@ -4150,7 +4150,7 @@ static const struct intel_wm_funcs nop_funcs = {
>  void i9xx_wm_init(struct intel_display *display)
>  {
>  	/* For FIFO watermark updates */
> -	if (HAS_PCH_SPLIT(display)) {
> +	if (!HAS_GMCH(display)) {
>  		ilk_setup_wm_latency(display);
>  		display->wm.funcs = &ilk_wm_funcs;
>  	} else if (display->platform.valleyview || display->platform.cherryview) {
> diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
> index 723dec35402a..d1440cc6dba4 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.c
> +++ b/drivers/gpu/drm/i915/display/intel_display.c
> @@ -6777,7 +6777,7 @@ static void intel_pipe_fastset(const struct intel_crtc_state *old_crtc_state,
>  	if (DISPLAY_VER(display) >= 9) {
>  		if (new_crtc_state->pfit.enabled)
>  			skl_pfit_enable(new_crtc_state);
> -	} else if (HAS_PCH_SPLIT(display)) {
> +	} else if (!HAS_GMCH(display)) {
>  		if (new_crtc_state->pfit.enabled)
>  			ilk_pfit_enable(new_crtc_state);
>  		else if (old_crtc_state->pfit.enabled)
> diff --git a/drivers/gpu/drm/i915/display/intel_display_debugfs.c b/drivers/gpu/drm/i915/display/intel_display_debugfs.c
> index 3e302f23f247..dba34f034785 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_debugfs.c
> +++ b/drivers/gpu/drm/i915/display/intel_display_debugfs.c
> @@ -96,7 +96,7 @@ static int i915_sr_status(struct seq_file *m, void *unused)
>  
>  	if (DISPLAY_VER(display) >= 9)
>  		/* no global SR status; inspect per-plane WM */;
> -	else if (HAS_PCH_SPLIT(display))
> +	else if (!HAS_GMCH(display))
>  		sr_enabled = intel_de_read(display, WM1_LP_ILK) & WM_LP_ENABLE;
>  	else if (display->platform.i965gm || display->platform.g4x ||
>  		 display->platform.i945g || display->platform.i945gm)

-- 
Jani Nikula, Intel

^ permalink raw reply	[flat|nested] 35+ messages in thread

* Re: [PATCH 04/15] drm/i915/pfit: Introduce intel_pfit_get_config()
  2026-10-19 13:52 ` [PATCH 04/15] drm/i915/pfit: Introduce intel_pfit_get_config() Ville Syrjala
@ 2026-10-19 15:53   ` Jani Nikula
  0 siblings, 0 replies; 35+ messages in thread
From: Jani Nikula @ 2026-10-19 15:53 UTC (permalink / raw)
  To: Ville Syrjala, intel-gfx; +Cc: intel-xe

On Mon, 19 Oct 2026, Ville Syrjala <ville.syrjala@linux.intel.com> wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> Introduce a new intel_pfit_get_config() wrapper to better
> contain the pfit details inside intel_pfit.c.
>
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>

Reviewed-by: Jani Nikula <jani.nikula@intel.com>

> ---
>  drivers/gpu/drm/i915/display/intel_display.c | 12 ++++--------
>  drivers/gpu/drm/i915/display/intel_pfit.c    | 16 ++++++++++++++--
>  drivers/gpu/drm/i915/display/intel_pfit.h    |  3 +--
>  3 files changed, 19 insertions(+), 12 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
> index d1440cc6dba4..79c4aff1c633 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.c
> +++ b/drivers/gpu/drm/i915/display/intel_display.c
> @@ -3236,7 +3236,7 @@ static bool i9xx_get_pipe_config(struct intel_crtc *crtc,
>  	intel_get_transcoder_timings(crtc, pipe_config);
>  	intel_get_pipe_src_size(crtc, pipe_config);
>  
> -	i9xx_pfit_get_config(pipe_config);
> +	intel_pfit_get_config(pipe_config);
>  
>  	i9xx_dpll_get_hw_state(crtc, &pipe_config->dpll_hw_state);
>  
> @@ -3586,7 +3586,7 @@ static bool ilk_get_pipe_config(struct intel_crtc *crtc,
>  	intel_get_transcoder_timings(crtc, pipe_config);
>  	intel_get_pipe_src_size(crtc, pipe_config);
>  
> -	ilk_pfit_get_config(pipe_config);
> +	intel_pfit_get_config(pipe_config);
>  
>  	ret = true;
>  
> @@ -4153,12 +4153,8 @@ static bool hsw_get_pipe_config(struct intel_crtc *crtc,
>  			REG_FIELD_GET(HSW_IPS_LINETIME_MASK, tmp);
>  
>  	if (intel_display_power_get_in_set_if_enabled(display, &crtc->hw_readout_power_domains,
> -						      POWER_DOMAIN_PIPE_PANEL_FITTER(crtc->pipe))) {
> -		if (DISPLAY_VER(display) >= 9)
> -			skl_scaler_get_config(pipe_config);
> -		else
> -			ilk_pfit_get_config(pipe_config);
> -	}
> +						      POWER_DOMAIN_PIPE_PANEL_FITTER(crtc->pipe)))
> +		intel_pfit_get_config(pipe_config);
>  
>  	hsw_ips_get_config(pipe_config);
>  
> diff --git a/drivers/gpu/drm/i915/display/intel_pfit.c b/drivers/gpu/drm/i915/display/intel_pfit.c
> index aa4a4d10d124..b4a201dc8f7b 100644
> --- a/drivers/gpu/drm/i915/display/intel_pfit.c
> +++ b/drivers/gpu/drm/i915/display/intel_pfit.c
> @@ -638,7 +638,7 @@ void ilk_pfit_disable(const struct intel_crtc_state *old_crtc_state)
>  	intel_de_write_fw(display, PF_WIN_SZ(pipe), 0);
>  }
>  
> -void ilk_pfit_get_config(struct intel_crtc_state *crtc_state)
> +static void ilk_pfit_get_config(struct intel_crtc_state *crtc_state)
>  {
>  	struct intel_display *display = to_intel_display(crtc_state);
>  	struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
> @@ -724,7 +724,7 @@ static bool i9xx_has_pfit(struct intel_display *display)
>  		display->platform.pineview || display->platform.mobile;
>  }
>  
> -void i9xx_pfit_get_config(struct intel_crtc_state *crtc_state)
> +static void i9xx_pfit_get_config(struct intel_crtc_state *crtc_state)
>  {
>  	struct intel_display *display = to_intel_display(crtc_state);
>  	struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
> @@ -751,3 +751,15 @@ void i9xx_pfit_get_config(struct intel_crtc_state *crtc_state)
>  	crtc_state->gmch_pfit.pgm_ratios =
>  		intel_de_read(display, PFIT_PGM_RATIOS(display));
>  }
> +
> +void intel_pfit_get_config(struct intel_crtc_state *crtc_state)
> +{
> +	struct intel_display *display = to_intel_display(crtc_state);
> +
> +	if (HAS_GMCH(display))
> +		i9xx_pfit_get_config(crtc_state);
> +	else if (DISPLAY_VER(display) >= 9)
> +		skl_scaler_get_config(crtc_state);
> +	else
> +		ilk_pfit_get_config(crtc_state);
> +}
> diff --git a/drivers/gpu/drm/i915/display/intel_pfit.h b/drivers/gpu/drm/i915/display/intel_pfit.h
> index c1bb0d1f344e..184e1932eae5 100644
> --- a/drivers/gpu/drm/i915/display/intel_pfit.h
> +++ b/drivers/gpu/drm/i915/display/intel_pfit.h
> @@ -17,10 +17,9 @@ int intel_pfit_compute_config(struct intel_crtc_state *crtc_state,
>  			      const struct drm_connector_state *conn_state);
>  void ilk_pfit_enable(const struct intel_crtc_state *crtc_state);
>  void ilk_pfit_disable(const struct intel_crtc_state *old_crtc_state);
> -void ilk_pfit_get_config(struct intel_crtc_state *crtc_state);
>  void i9xx_pfit_enable(const struct intel_crtc_state *crtc_state);
>  void i9xx_pfit_disable(const struct intel_crtc_state *old_crtc_state);
> -void i9xx_pfit_get_config(struct intel_crtc_state *crtc_state);
> +void intel_pfit_get_config(struct intel_crtc_state *crtc_state);
>  enum drm_mode_status
>  intel_pfit_mode_valid(struct intel_display *display,
>  		      const struct drm_display_mode *mode,

-- 
Jani Nikula, Intel

^ permalink raw reply	[flat|nested] 35+ messages in thread

* Re: [PATCH 05/15] drm/i915/pfit: Rename some pfit functions
  2026-10-19 13:52 ` [PATCH 05/15] drm/i915/pfit: Rename some pfit functions Ville Syrjala
@ 2026-10-19 15:54   ` Jani Nikula
  0 siblings, 0 replies; 35+ messages in thread
From: Jani Nikula @ 2026-10-19 15:54 UTC (permalink / raw)
  To: Ville Syrjala, intel-gfx; +Cc: intel-xe

On Mon, 19 Oct 2026, Ville Syrjala <ville.syrjala@linux.intel.com> wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> Most pfit functions are called {ilk,i9xx}_pfit_*(). Rename
> {gmch,ilk}_panel_fitting() and intel_gmch_pfit_check_timings()
> to match.
>
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>

Reviewed-by: Jani Nikula <jani.nikula@intel.com>

> ---
>  drivers/gpu/drm/i915/display/intel_pfit.c | 21 +++++++++++++--------
>  1 file changed, 13 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_pfit.c b/drivers/gpu/drm/i915/display/intel_pfit.c
> index b4a201dc8f7b..972218346362 100644
> --- a/drivers/gpu/drm/i915/display/intel_pfit.c
> +++ b/drivers/gpu/drm/i915/display/intel_pfit.c
> @@ -182,8 +182,8 @@ static int ilk_pfit_check_cloning(const struct intel_crtc_state *crtc_state)
>  }
>  
>  /* adjusted_mode has been preset to be the panel's fixed mode */
> -static int ilk_panel_fitting(struct intel_crtc_state *crtc_state,
> -			     const struct drm_connector_state *conn_state)
> +static int ilk_pfit_compute_config(struct intel_crtc_state *crtc_state,
> +				   const struct drm_connector_state *conn_state)
>  {
>  	struct intel_display *display = to_intel_display(crtc_state);
>  	struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
> @@ -438,7 +438,7 @@ static void i9xx_scale_aspect(struct intel_crtc_state *crtc_state,
>  	}
>  }
>  
> -static int intel_gmch_pfit_check_timings(const struct intel_crtc_state *crtc_state)
> +static int i9xx_pfit_check_timings(const struct intel_crtc_state *crtc_state)
>  {
>  	struct intel_display *display = to_intel_display(crtc_state);
>  	struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
> @@ -470,8 +470,8 @@ static int intel_gmch_pfit_check_timings(const struct intel_crtc_state *crtc_sta
>  	return 0;
>  }
>  
> -static int gmch_panel_fitting(struct intel_crtc_state *crtc_state,
> -			      const struct drm_connector_state *conn_state)
> +static int i9xx_pfit_compute_config(struct intel_crtc_state *crtc_state,
> +				    const struct drm_connector_state *conn_state)
>  {
>  	struct intel_display *display = to_intel_display(crtc_state);
>  	struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
> @@ -479,6 +479,7 @@ static int gmch_panel_fitting(struct intel_crtc_state *crtc_state,
>  	struct drm_display_mode *adjusted_mode = &crtc_state->hw.adjusted_mode;
>  	int pipe_src_w = drm_rect_width(&crtc_state->pipe_src);
>  	int pipe_src_h = drm_rect_height(&crtc_state->pipe_src);
> +	int ret;
>  
>  	/* Native modes don't need fitting */
>  	if (adjusted_mode->crtc_hdisplay == pipe_src_w &&
> @@ -566,7 +567,11 @@ static int gmch_panel_fitting(struct intel_crtc_state *crtc_state,
>  	if ((pfit_control & PFIT_ENABLE) == 0)
>  		return 0;
>  
> -	return intel_gmch_pfit_check_timings(crtc_state);
> +	ret = i9xx_pfit_check_timings(crtc_state);
> +	if (ret)
> +		return ret;
> +
> +	return 0;
>  }
>  
>  enum drm_mode_status
> @@ -585,9 +590,9 @@ int intel_pfit_compute_config(struct intel_crtc_state *crtc_state,
>  	struct intel_display *display = to_intel_display(crtc_state);
>  
>  	if (HAS_GMCH(display))
> -		return gmch_panel_fitting(crtc_state, conn_state);
> +		return i9xx_pfit_compute_config(crtc_state, conn_state);
>  	else
> -		return ilk_panel_fitting(crtc_state, conn_state);
> +		return ilk_pfit_compute_config(crtc_state, conn_state);
>  }
>  
>  void ilk_pfit_enable(const struct intel_crtc_state *crtc_state)

-- 
Jani Nikula, Intel

^ permalink raw reply	[flat|nested] 35+ messages in thread

* Re: [PATCH 06/15] drm/i915/pfit: Extract i965_pfit_get_config()
  2026-10-19 13:53 ` [PATCH 06/15] drm/i915/pfit: Extract i965_pfit_get_config() Ville Syrjala
@ 2026-10-19 16:02   ` Jani Nikula
  2026-10-19 16:05     ` Jani Nikula
  2026-10-20 18:38   ` [PATCH v2 " Ville Syrjala
  1 sibling, 1 reply; 35+ messages in thread
From: Jani Nikula @ 2026-10-19 16:02 UTC (permalink / raw)
  To: Ville Syrjala, intel-gfx; +Cc: intel-xe

On Mon, 19 Oct 2026, Ville Syrjala <ville.syrjala@linux.intel.com> wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> Split i965_pfit_get_config() out from i9xx_pfit_get_config() to
> unconfuse things a bit.
>
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> ---
>  drivers/gpu/drm/i915/display/intel_pfit.c | 66 ++++++++++++++---------
>  1 file changed, 42 insertions(+), 24 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_pfit.c b/drivers/gpu/drm/i915/display/intel_pfit.c
> index 972218346362..82804159d0a1 100644
> --- a/drivers/gpu/drm/i915/display/intel_pfit.c
> +++ b/drivers/gpu/drm/i915/display/intel_pfit.c
> @@ -720,39 +720,52 @@ void i9xx_pfit_disable(const struct intel_crtc_state *old_crtc_state)
>  	intel_de_write(display, PFIT_CONTROL(display), 0);
>  }
>  
> -static bool i9xx_has_pfit(struct intel_display *display)
> -{
> -	if (display->platform.i830)
> -		return false;
> -
> -	return DISPLAY_VER(display) >= 4 ||
> -		display->platform.pineview || display->platform.mobile;
> -}
> -
> -static void i9xx_pfit_get_config(struct intel_crtc_state *crtc_state)
> +static void i965_pfit_get_config(struct intel_crtc_state *crtc_state)
>  {
>  	struct intel_display *display = to_intel_display(crtc_state);
>  	struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
>  	enum pipe pipe;
>  	u32 tmp;
>  
> -	if (!i9xx_has_pfit(display))
> -		return;
> -
>  	tmp = intel_de_read(display, PFIT_CONTROL(display));
>  	if (!(tmp & PFIT_ENABLE))
>  		return;
>  
>  	/* Check whether the pfit is attached to our pipe. */
> -	if (DISPLAY_VER(display) >= 4)
> -		pipe = REG_FIELD_GET(PFIT_PIPE_MASK, tmp);
> -	else
> -		pipe = PIPE_B;
> -
> +	pipe = REG_FIELD_GET(PFIT_PIPE_MASK, tmp);
>  	if (pipe != crtc->pipe)
>  		return;
>  
>  	crtc_state->gmch_pfit.control = tmp;

This drops PFIT_PGM_RATIOS read.

With that fixed,

Reviewed-by: Jani Nikula <jani.nikula@intel.com>


> +}
> +
> +static bool i9xx_has_pfit(struct intel_crtc *crtc)
> +{
> +	struct intel_display *display = to_intel_display(crtc);
> +
> +	if (crtc->pipe != PIPE_B)
> +		return false;
> +
> +	if (display->platform.i830)
> +		return false;
> +
> +	return display->platform.pineview || display->platform.mobile;
> +}
> +
> +static void i9xx_pfit_get_config(struct intel_crtc_state *crtc_state)
> +{
> +	struct intel_display *display = to_intel_display(crtc_state);
> +	struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
> +	u32 tmp;
> +
> +	if (!i9xx_has_pfit(crtc))
> +		return;
> +
> +	tmp = intel_de_read(display, PFIT_CONTROL(display));
> +	if (!(tmp & PFIT_ENABLE))
> +		return;
> +
> +	crtc_state->gmch_pfit.control = tmp;
>  	crtc_state->gmch_pfit.pgm_ratios =
>  		intel_de_read(display, PFIT_PGM_RATIOS(display));
>  }
> @@ -761,10 +774,15 @@ void intel_pfit_get_config(struct intel_crtc_state *crtc_state)
>  {
>  	struct intel_display *display = to_intel_display(crtc_state);
>  
> -	if (HAS_GMCH(display))
> -		i9xx_pfit_get_config(crtc_state);
> -	else if (DISPLAY_VER(display) >= 9)
> -		skl_scaler_get_config(crtc_state);
> -	else
> -		ilk_pfit_get_config(crtc_state);
> +	if (HAS_GMCH(display)) {
> +		if (DISPLAY_VER(display) >= 4)
> +			i965_pfit_get_config(crtc_state);
> +		else
> +			i9xx_pfit_get_config(crtc_state);
> +	} else {
> +		if (DISPLAY_VER(display) >= 9)
> +			skl_scaler_get_config(crtc_state);
> +		else
> +			ilk_pfit_get_config(crtc_state);
> +	}
>  }

-- 
Jani Nikula, Intel

^ permalink raw reply	[flat|nested] 35+ messages in thread

* Re: [PATCH 06/15] drm/i915/pfit: Extract i965_pfit_get_config()
  2026-10-19 16:02   ` Jani Nikula
@ 2026-10-19 16:05     ` Jani Nikula
  2026-10-19 17:04       ` Ville Syrjälä
  0 siblings, 1 reply; 35+ messages in thread
From: Jani Nikula @ 2026-10-19 16:05 UTC (permalink / raw)
  To: Ville Syrjala, intel-gfx; +Cc: intel-xe

On Mon, 19 Oct 2026, Jani Nikula <jani.nikula@linux.intel.com> wrote:
> On Mon, 19 Oct 2026, Ville Syrjala <ville.syrjala@linux.intel.com> wrote:
>> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>>
>> Split i965_pfit_get_config() out from i9xx_pfit_get_config() to
>> unconfuse things a bit.
>>
>> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
>> ---
>>  drivers/gpu/drm/i915/display/intel_pfit.c | 66 ++++++++++++++---------
>>  1 file changed, 42 insertions(+), 24 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/i915/display/intel_pfit.c b/drivers/gpu/drm/i915/display/intel_pfit.c
>> index 972218346362..82804159d0a1 100644
>> --- a/drivers/gpu/drm/i915/display/intel_pfit.c
>> +++ b/drivers/gpu/drm/i915/display/intel_pfit.c
>> @@ -720,39 +720,52 @@ void i9xx_pfit_disable(const struct intel_crtc_state *old_crtc_state)
>>  	intel_de_write(display, PFIT_CONTROL(display), 0);
>>  }
>>  
>> -static bool i9xx_has_pfit(struct intel_display *display)
>> -{
>> -	if (display->platform.i830)
>> -		return false;
>> -
>> -	return DISPLAY_VER(display) >= 4 ||
>> -		display->platform.pineview || display->platform.mobile;
>> -}
>> -
>> -static void i9xx_pfit_get_config(struct intel_crtc_state *crtc_state)
>> +static void i965_pfit_get_config(struct intel_crtc_state *crtc_state)
>>  {
>>  	struct intel_display *display = to_intel_display(crtc_state);
>>  	struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
>>  	enum pipe pipe;
>>  	u32 tmp;
>>  
>> -	if (!i9xx_has_pfit(display))
>> -		return;
>> -
>>  	tmp = intel_de_read(display, PFIT_CONTROL(display));
>>  	if (!(tmp & PFIT_ENABLE))
>>  		return;
>>  
>>  	/* Check whether the pfit is attached to our pipe. */
>> -	if (DISPLAY_VER(display) >= 4)
>> -		pipe = REG_FIELD_GET(PFIT_PIPE_MASK, tmp);
>> -	else
>> -		pipe = PIPE_B;
>> -
>> +	pipe = REG_FIELD_GET(PFIT_PIPE_MASK, tmp);
>>  	if (pipe != crtc->pipe)
>>  		return;
>>  
>>  	crtc_state->gmch_pfit.control = tmp;
>
> This drops PFIT_PGM_RATIOS read.

Judging by the next patch, this is intentional. Should be mentioned in
the commit message, and why it's okay we're still writing the register
also for i965.

BR,
Jani.

>
> With that fixed,
>
> Reviewed-by: Jani Nikula <jani.nikula@intel.com>
>
>
>> +}
>> +
>> +static bool i9xx_has_pfit(struct intel_crtc *crtc)
>> +{
>> +	struct intel_display *display = to_intel_display(crtc);
>> +
>> +	if (crtc->pipe != PIPE_B)
>> +		return false;
>> +
>> +	if (display->platform.i830)
>> +		return false;
>> +
>> +	return display->platform.pineview || display->platform.mobile;
>> +}
>> +
>> +static void i9xx_pfit_get_config(struct intel_crtc_state *crtc_state)
>> +{
>> +	struct intel_display *display = to_intel_display(crtc_state);
>> +	struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
>> +	u32 tmp;
>> +
>> +	if (!i9xx_has_pfit(crtc))
>> +		return;
>> +
>> +	tmp = intel_de_read(display, PFIT_CONTROL(display));
>> +	if (!(tmp & PFIT_ENABLE))
>> +		return;
>> +
>> +	crtc_state->gmch_pfit.control = tmp;
>>  	crtc_state->gmch_pfit.pgm_ratios =
>>  		intel_de_read(display, PFIT_PGM_RATIOS(display));
>>  }
>> @@ -761,10 +774,15 @@ void intel_pfit_get_config(struct intel_crtc_state *crtc_state)
>>  {
>>  	struct intel_display *display = to_intel_display(crtc_state);
>>  
>> -	if (HAS_GMCH(display))
>> -		i9xx_pfit_get_config(crtc_state);
>> -	else if (DISPLAY_VER(display) >= 9)
>> -		skl_scaler_get_config(crtc_state);
>> -	else
>> -		ilk_pfit_get_config(crtc_state);
>> +	if (HAS_GMCH(display)) {
>> +		if (DISPLAY_VER(display) >= 4)
>> +			i965_pfit_get_config(crtc_state);
>> +		else
>> +			i9xx_pfit_get_config(crtc_state);
>> +	} else {
>> +		if (DISPLAY_VER(display) >= 9)
>> +			skl_scaler_get_config(crtc_state);
>> +		else
>> +			ilk_pfit_get_config(crtc_state);
>> +	}
>>  }

-- 
Jani Nikula, Intel

^ permalink raw reply	[flat|nested] 35+ messages in thread

* Re: [PATCH 07/15] drm/i915/pfit: Drop platform check for gmch_pfit.pgm_ratios
  2026-10-19 13:53 ` [PATCH 07/15] drm/i915/pfit: Drop platform check for gmch_pfit.pgm_ratios Ville Syrjala
@ 2026-10-19 16:05   ` Jani Nikula
  0 siblings, 0 replies; 35+ messages in thread
From: Jani Nikula @ 2026-10-19 16:05 UTC (permalink / raw)
  To: Ville Syrjala, intel-gfx; +Cc: intel-xe

On Mon, 19 Oct 2026, Ville Syrjala <ville.syrjala@linux.intel.com> wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> The platform check in the state checker for gmch_pfit.pgm_ratios
> is now pointless. gmch_pfit.pgm_ratios will always be 0 on i965+.
>
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>

Reviewed-by: Jani Nikula <jani.nikula@intel.com>

> ---
>  drivers/gpu/drm/i915/display/intel_display.c | 4 +---
>  1 file changed, 1 insertion(+), 3 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
> index 79c4aff1c633..200426bf0c59 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.c
> +++ b/drivers/gpu/drm/i915/display/intel_display.c
> @@ -5462,9 +5462,7 @@ intel_pipe_config_compare(const struct intel_crtc_state *current_config,
>  	}
>  
>  	PIPE_CONF_CHECK_X(gmch_pfit.control);
> -	/* pfit ratios are autocomputed by the hw on gen4+ */
> -	if (DISPLAY_VER(display) < 4)
> -		PIPE_CONF_CHECK_X(gmch_pfit.pgm_ratios);
> +	PIPE_CONF_CHECK_X(gmch_pfit.pgm_ratios);
>  	PIPE_CONF_CHECK_X(gmch_pfit.lvds_border_bits);
>  
>  	/*

-- 
Jani Nikula, Intel

^ permalink raw reply	[flat|nested] 35+ messages in thread

* Re: [PATCH 08/15] drm/i915/pfit: Unconfuse panel_fitter_scaling()
  2026-10-19 13:53 ` [PATCH 08/15] drm/i915/pfit: Unconfuse panel_fitter_scaling() Ville Syrjala
@ 2026-10-19 16:15   ` Jani Nikula
  0 siblings, 0 replies; 35+ messages in thread
From: Jani Nikula @ 2026-10-19 16:15 UTC (permalink / raw)
  To: Ville Syrjala, intel-gfx; +Cc: intel-xe

On Mon, 19 Oct 2026, Ville Syrjala <ville.syrjala@linux.intel.com> wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> panel_fitter_scaling() apparently tries to implemnt

*implement

> DIV_ROUND_CLOSEST() by hand, but in a somewhat weird way
> where the division and rounding are done as separate steps.
> Just use the real DIV_ROUND_CLOSEST() instead.
>
> This does in fact match how the i965+ hardware calculates
> the automagic scaling factors, which will be important
> for upcoming readout support.
>
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>

Reviewed-by: Jani Nikula <jani.nikula@intel.com>

> ---
>  drivers/gpu/drm/i915/display/intel_pfit.c | 10 +---------
>  1 file changed, 1 insertion(+), 9 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_pfit.c b/drivers/gpu/drm/i915/display/intel_pfit.c
> index 82804159d0a1..5d519f45adbe 100644
> --- a/drivers/gpu/drm/i915/display/intel_pfit.c
> +++ b/drivers/gpu/drm/i915/display/intel_pfit.c
> @@ -350,15 +350,7 @@ centre_vertically(struct drm_display_mode *adjusted_mode,
>  
>  static u32 panel_fitter_scaling(u32 source, u32 target)
>  {
> -	/*
> -	 * Floating point operation is not supported. So the FACTOR
> -	 * is defined, which can avoid the floating point computation
> -	 * when calculating the panel ratio.
> -	 */
> -#define ACCURACY 12
> -#define FACTOR (1 << ACCURACY)
> -	u32 ratio = source * FACTOR / target;
> -	return (FACTOR * ratio + FACTOR/2) / FACTOR;
> +	return DIV_ROUND_CLOSEST(source << 12, target);
>  }
>  
>  static void i965_scale_aspect(struct intel_crtc_state *crtc_state,

-- 
Jani Nikula, Intel

^ permalink raw reply	[flat|nested] 35+ messages in thread

* Re: [PATCH 06/15] drm/i915/pfit: Extract i965_pfit_get_config()
  2026-10-19 16:05     ` Jani Nikula
@ 2026-10-19 17:04       ` Ville Syrjälä
  0 siblings, 0 replies; 35+ messages in thread
From: Ville Syrjälä @ 2026-10-19 17:04 UTC (permalink / raw)
  To: Jani Nikula; +Cc: intel-gfx, intel-xe

On Mon, Oct 19, 2026 at 07:05:05PM +0300, Jani Nikula wrote:
> On Mon, 19 Oct 2026, Jani Nikula <jani.nikula@linux.intel.com> wrote:
> > On Mon, 19 Oct 2026, Ville Syrjala <ville.syrjala@linux.intel.com> wrote:
> >> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> >>
> >> Split i965_pfit_get_config() out from i9xx_pfit_get_config() to
> >> unconfuse things a bit.
> >>
> >> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> >> ---
> >>  drivers/gpu/drm/i915/display/intel_pfit.c | 66 ++++++++++++++---------
> >>  1 file changed, 42 insertions(+), 24 deletions(-)
> >>
> >> diff --git a/drivers/gpu/drm/i915/display/intel_pfit.c b/drivers/gpu/drm/i915/display/intel_pfit.c
> >> index 972218346362..82804159d0a1 100644
> >> --- a/drivers/gpu/drm/i915/display/intel_pfit.c
> >> +++ b/drivers/gpu/drm/i915/display/intel_pfit.c
> >> @@ -720,39 +720,52 @@ void i9xx_pfit_disable(const struct intel_crtc_state *old_crtc_state)
> >>  	intel_de_write(display, PFIT_CONTROL(display), 0);
> >>  }
> >>  
> >> -static bool i9xx_has_pfit(struct intel_display *display)
> >> -{
> >> -	if (display->platform.i830)
> >> -		return false;
> >> -
> >> -	return DISPLAY_VER(display) >= 4 ||
> >> -		display->platform.pineview || display->platform.mobile;
> >> -}
> >> -
> >> -static void i9xx_pfit_get_config(struct intel_crtc_state *crtc_state)
> >> +static void i965_pfit_get_config(struct intel_crtc_state *crtc_state)
> >>  {
> >>  	struct intel_display *display = to_intel_display(crtc_state);
> >>  	struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
> >>  	enum pipe pipe;
> >>  	u32 tmp;
> >>  
> >> -	if (!i9xx_has_pfit(display))
> >> -		return;
> >> -
> >>  	tmp = intel_de_read(display, PFIT_CONTROL(display));
> >>  	if (!(tmp & PFIT_ENABLE))
> >>  		return;
> >>  
> >>  	/* Check whether the pfit is attached to our pipe. */
> >> -	if (DISPLAY_VER(display) >= 4)
> >> -		pipe = REG_FIELD_GET(PFIT_PIPE_MASK, tmp);
> >> -	else
> >> -		pipe = PIPE_B;
> >> -
> >> +	pipe = REG_FIELD_GET(PFIT_PIPE_MASK, tmp);
> >>  	if (pipe != crtc->pipe)
> >>  		return;
> >>  
> >>  	crtc_state->gmch_pfit.control = tmp;
> >
> > This drops PFIT_PGM_RATIOS read.
> 
> Judging by the next patch, this is intentional. Should be mentioned in
> the commit message, and why it's okay we're still writing the register
> also for i965.

Yeah, we don't use programmed scale factors on i965+ and reading
the register just gives back the automagic ratios that the hardware
calculated (and some of which is garbage in the letterbox/pillabox
modes).

-- 
Ville Syrjälä
Intel

^ permalink raw reply	[flat|nested] 35+ messages in thread

* ✓ i915.CI.BAT: success for drm/i915/pfit: Make GMCH panel fitter nicer
  2026-10-19 13:52 [PATCH 00/15] drm/i915/pfit: Make GMCH panel fitter nicer Ville Syrjala
                   ` (14 preceding siblings ...)
  2026-10-19 13:53 ` [PATCH 15/15] drm/i915/pfit: Allow downscaling on i966+ Ville Syrjala
@ 2026-10-19 17:23 ` Patchwork
  2026-10-19 22:45 ` ✓ i915.CI.Full: " Patchwork
  2026-10-20 19:43 ` ✓ i915.CI.BAT: success for drm/i915/pfit: Make GMCH panel fitter nicer (rev4) Patchwork
  17 siblings, 0 replies; 35+ messages in thread
From: Patchwork @ 2026-10-19 17:23 UTC (permalink / raw)
  To: Ville Syrjälä; +Cc: intel-gfx

[-- Attachment #1: Type: text/plain, Size: 1080 bytes --]

== Series Details ==

Series: drm/i915/pfit: Make GMCH panel fitter nicer
URL   : https://patchwork.freedesktop.org/series/176400/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_19362 -> Patchwork_176400v1
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/index.html

Participating hosts (40 -> 39)
------------------------------

  Missing    (1): bat-dg2-13 


Changes
-------

  No changes found


Build changes
-------------

  * Linux: CI_DRM_19362 -> Patchwork_176400v1

  CI-20190529: 20190529
  CI_DRM_19362: a16b0e27155a8187d222dc914932a2d244d254b2 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGT_9150: 18811c476bfde62ffbb4c0af55cd6f57e36e0dca @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  Patchwork_176400v1: a16b0e27155a8187d222dc914932a2d244d254b2 @ git://anongit.freedesktop.org/gfx-ci/linux

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/index.html

[-- Attachment #2: Type: text/html, Size: 1645 bytes --]

^ permalink raw reply	[flat|nested] 35+ messages in thread

* ✓ i915.CI.Full: success for drm/i915/pfit: Make GMCH panel fitter nicer
  2026-10-19 13:52 [PATCH 00/15] drm/i915/pfit: Make GMCH panel fitter nicer Ville Syrjala
                   ` (15 preceding siblings ...)
  2026-10-19 17:23 ` ✓ i915.CI.BAT: success for drm/i915/pfit: Make GMCH panel fitter nicer Patchwork
@ 2026-10-19 22:45 ` Patchwork
  2026-10-20 19:43 ` ✓ i915.CI.BAT: success for drm/i915/pfit: Make GMCH panel fitter nicer (rev4) Patchwork
  17 siblings, 0 replies; 35+ messages in thread
From: Patchwork @ 2026-10-19 22:45 UTC (permalink / raw)
  To: Ville Syrjälä; +Cc: intel-gfx

[-- Attachment #1: Type: text/plain, Size: 143703 bytes --]

== Series Details ==

Series: drm/i915/pfit: Make GMCH panel fitter nicer
URL   : https://patchwork.freedesktop.org/series/176400/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_19362_full -> Patchwork_176400v1_full
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  

Participating hosts (10 -> 10)
------------------------------

  No changes in participating hosts

Known issues
------------

  Here are the changes found in Patchwork_176400v1_full that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@device_reset@cold-reset-bound:
    - shard-rkl:          NOTRUN -> [SKIP][1] ([i915#11078])
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-8/igt@device_reset@cold-reset-bound.html

  * igt@fbdev@info:
    - shard-dg2:          [PASS][2] -> [SKIP][3] ([i915#1849] / [i915#2582])
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg2-5/igt@fbdev@info.html
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-7/igt@fbdev@info.html

  * igt@gem_ccs@ctrl-surf-copy:
    - shard-mtlp:         NOTRUN -> [SKIP][4] ([i915#3555] / [i915#9323])
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-mtlp-4/igt@gem_ccs@ctrl-surf-copy.html

  * igt@gem_ccs@ctrl-surf-copy-new-ctx:
    - shard-rkl:          NOTRUN -> [SKIP][5] ([i915#9323])
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-7/igt@gem_ccs@ctrl-surf-copy-new-ctx.html

  * igt@gem_ccs@large-ctrl-surf-copy:
    - shard-tglu:         NOTRUN -> [SKIP][6] ([i915#13008])
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-tglu-3/igt@gem_ccs@large-ctrl-surf-copy.html

  * igt@gem_ccs@suspend-resume:
    - shard-dg2:          [PASS][7] -> [INCOMPLETE][8] ([i915#13356] / [i915#16348]) +1 other test incomplete
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg2-5/igt@gem_ccs@suspend-resume.html
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-5/igt@gem_ccs@suspend-resume.html

  * igt@gem_ctx_persistence@heartbeat-hostile:
    - shard-dg1:          NOTRUN -> [SKIP][9] ([i915#8555])
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg1-15/igt@gem_ctx_persistence@heartbeat-hostile.html

  * igt@gem_ctx_sseu@engines:
    - shard-tglu-1:       NOTRUN -> [SKIP][10] ([i915#280])
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-tglu-1/igt@gem_ctx_sseu@engines.html

  * igt@gem_ctx_sseu@invalid-args:
    - shard-rkl:          NOTRUN -> [SKIP][11] ([i915#280])
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-7/igt@gem_ctx_sseu@invalid-args.html

  * igt@gem_eio@hibernate:
    - shard-mtlp:         NOTRUN -> [INCOMPLETE][12] ([i915#17190] / [i915#7975])
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-mtlp-4/igt@gem_eio@hibernate.html

  * igt@gem_exec_balancer@bonded-pair:
    - shard-mtlp:         NOTRUN -> [SKIP][13] ([i915#4771])
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-mtlp-4/igt@gem_exec_balancer@bonded-pair.html

  * igt@gem_exec_balancer@parallel:
    - shard-tglu:         NOTRUN -> [SKIP][14] ([i915#4525])
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-tglu-2/igt@gem_exec_balancer@parallel.html

  * igt@gem_exec_balancer@parallel-balancer:
    - shard-rkl:          NOTRUN -> [SKIP][15] ([i915#4525])
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-7/igt@gem_exec_balancer@parallel-balancer.html

  * igt@gem_exec_balancer@parallel-dmabuf-import-out-fence:
    - shard-tglu-1:       NOTRUN -> [SKIP][16] ([i915#4525])
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-tglu-1/igt@gem_exec_balancer@parallel-dmabuf-import-out-fence.html

  * igt@gem_exec_flush@basic-uc-set-default:
    - shard-dg1:          NOTRUN -> [SKIP][17] ([i915#3539])
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg1-15/igt@gem_exec_flush@basic-uc-set-default.html

  * igt@gem_exec_flush@basic-wb-rw-before-default:
    - shard-dg2:          NOTRUN -> [SKIP][18] ([i915#3539] / [i915#4852])
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-5/igt@gem_exec_flush@basic-wb-rw-before-default.html

  * igt@gem_exec_reloc@basic-cpu-wc-active:
    - shard-mtlp:         NOTRUN -> [SKIP][19] ([i915#3281]) +1 other test skip
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-mtlp-4/igt@gem_exec_reloc@basic-cpu-wc-active.html

  * igt@gem_exec_reloc@basic-gtt-cpu:
    - shard-rkl:          NOTRUN -> [SKIP][20] ([i915#3281]) +3 other tests skip
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-4/igt@gem_exec_reloc@basic-gtt-cpu.html

  * igt@gem_exec_reloc@basic-gtt-wc-noreloc:
    - shard-dg1:          NOTRUN -> [SKIP][21] ([i915#3281]) +2 other tests skip
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg1-15/igt@gem_exec_reloc@basic-gtt-wc-noreloc.html

  * igt@gem_exec_schedule@semaphore-power:
    - shard-dg1:          NOTRUN -> [SKIP][22] ([i915#4812])
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg1-15/igt@gem_exec_schedule@semaphore-power.html

  * igt@gem_lmem_evict@dontneed-evict-race:
    - shard-tglu:         NOTRUN -> [SKIP][23] ([i915#4613] / [i915#7582])
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-tglu-8/igt@gem_lmem_evict@dontneed-evict-race.html

  * igt@gem_lmem_swapping@heavy-multi:
    - shard-mtlp:         NOTRUN -> [SKIP][24] ([i915#4613])
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-mtlp-4/igt@gem_lmem_swapping@heavy-multi.html

  * igt@gem_lmem_swapping@parallel-multi:
    - shard-tglu-1:       NOTRUN -> [SKIP][25] ([i915#4613]) +2 other tests skip
   [25]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-tglu-1/igt@gem_lmem_swapping@parallel-multi.html

  * igt@gem_lmem_swapping@verify-random:
    - shard-glk:          NOTRUN -> [SKIP][26] ([i915#4613]) +1 other test skip
   [26]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-glk3/igt@gem_lmem_swapping@verify-random.html

  * igt@gem_mmap_wc@write-wc-read-gtt:
    - shard-dg1:          NOTRUN -> [SKIP][27] ([i915#4083])
   [27]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg1-15/igt@gem_mmap_wc@write-wc-read-gtt.html

  * igt@gem_pread@exhaustion:
    - shard-glk:          NOTRUN -> [WARN][28] ([i915#2658])
   [28]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-glk1/igt@gem_pread@exhaustion.html

  * igt@gem_pwrite@basic-random:
    - shard-rkl:          NOTRUN -> [SKIP][29] ([i915#3282]) +2 other tests skip
   [29]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-8/igt@gem_pwrite@basic-random.html

  * igt@gem_pxp@verify-pxp-stale-buf-optout-execution:
    - shard-dg1:          NOTRUN -> [SKIP][30] ([i915#4270])
   [30]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg1-15/igt@gem_pxp@verify-pxp-stale-buf-optout-execution.html

  * igt@gem_set_tiling_vs_blt@tiled-to-tiled:
    - shard-dg1:          NOTRUN -> [SKIP][31] ([i915#4079])
   [31]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg1-15/igt@gem_set_tiling_vs_blt@tiled-to-tiled.html

  * igt@gem_softpin@noreloc-s3:
    - shard-rkl:          [PASS][32] -> [INCOMPLETE][33] ([i915#13809] / [i915#16226])
   [32]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-rkl-2/igt@gem_softpin@noreloc-s3.html
   [33]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-3/igt@gem_softpin@noreloc-s3.html

  * igt@gem_tiling_max_stride:
    - shard-dg1:          NOTRUN -> [SKIP][34] ([i915#4077]) +6 other tests skip
   [34]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg1-15/igt@gem_tiling_max_stride.html

  * igt@gem_userptr_blits@coherency-sync:
    - shard-rkl:          NOTRUN -> [SKIP][35] ([i915#3297]) +1 other test skip
   [35]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-8/igt@gem_userptr_blits@coherency-sync.html

  * igt@gem_userptr_blits@create-destroy-unsync:
    - shard-tglu-1:       NOTRUN -> [SKIP][36] ([i915#3297])
   [36]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-tglu-1/igt@gem_userptr_blits@create-destroy-unsync.html

  * igt@gem_userptr_blits@readonly-unsync:
    - shard-mtlp:         NOTRUN -> [SKIP][37] ([i915#3297])
   [37]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-mtlp-4/igt@gem_userptr_blits@readonly-unsync.html

  * igt@gem_workarounds@suspend-resume-fd:
    - shard-glk:          [PASS][38] -> [INCOMPLETE][39] ([i915#13356] / [i915#14586])
   [38]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-glk2/igt@gem_workarounds@suspend-resume-fd.html
   [39]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-glk8/igt@gem_workarounds@suspend-resume-fd.html

  * igt@gen9_exec_parse@bb-start-far:
    - shard-rkl:          NOTRUN -> [SKIP][40] ([i915#2527]) +1 other test skip
   [40]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-8/igt@gen9_exec_parse@bb-start-far.html

  * igt@gen9_exec_parse@shadow-peek:
    - shard-tglu-1:       NOTRUN -> [SKIP][41] ([i915#2527] / [i915#2856]) +1 other test skip
   [41]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-tglu-1/igt@gen9_exec_parse@shadow-peek.html

  * igt@gen9_exec_parse@valid-registers:
    - shard-tglu:         NOTRUN -> [SKIP][42] ([i915#2527] / [i915#2856])
   [42]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-tglu-8/igt@gen9_exec_parse@valid-registers.html

  * igt@gpu_buddy@gpu_buddy:
    - shard-rkl:          NOTRUN -> [SKIP][43] ([i915#15678])
   [43]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-8/igt@gpu_buddy@gpu_buddy.html

  * igt@i915_drm_fdinfo@all-busy-idle-check-all:
    - shard-mtlp:         NOTRUN -> [SKIP][44] ([i915#14123])
   [44]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-mtlp-4/igt@i915_drm_fdinfo@all-busy-idle-check-all.html

  * igt@i915_drm_fdinfo@busy-check-all@vecs0:
    - shard-dg2:          NOTRUN -> [SKIP][45] ([i915#11527]) +7 other tests skip
   [45]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-5/igt@i915_drm_fdinfo@busy-check-all@vecs0.html

  * igt@i915_module_load@fault-injection:
    - shard-dg1:          NOTRUN -> [ABORT][46] ([i915#11814]) +1 other test abort
   [46]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg1-14/igt@i915_module_load@fault-injection.html

  * igt@i915_module_load@fault-injection@intel_connector_register:
    - shard-glk11:        NOTRUN -> [ABORT][47] ([i915#15342]) +1 other test abort
   [47]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-glk11/igt@i915_module_load@fault-injection@intel_connector_register.html

  * igt@i915_pm_freq_api@freq-basic-api:
    - shard-tglu-1:       NOTRUN -> [SKIP][48] ([i915#8399])
   [48]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-tglu-1/igt@i915_pm_freq_api@freq-basic-api.html

  * igt@i915_pm_freq_api@freq-reset:
    - shard-rkl:          NOTRUN -> [SKIP][49] ([i915#8399])
   [49]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-4/igt@i915_pm_freq_api@freq-reset.html

  * igt@i915_pm_rps@basic-api:
    - shard-dg1:          NOTRUN -> [SKIP][50] ([i915#11681] / [i915#6621])
   [50]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg1-15/igt@i915_pm_rps@basic-api.html

  * igt@i915_power@sanity:
    - shard-mtlp:         [PASS][51] -> [SKIP][52] ([i915#7984])
   [51]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-mtlp-3/igt@i915_power@sanity.html
   [52]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-mtlp-6/igt@i915_power@sanity.html

  * igt@i915_query@query-topology-unsupported:
    - shard-tglu:         NOTRUN -> [SKIP][53] ([i915#16079])
   [53]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-tglu-3/igt@i915_query@query-topology-unsupported.html

  * igt@i915_selftest@mock:
    - shard-tglu:         NOTRUN -> [ABORT][54] ([i915#17076]) +1 other test abort
   [54]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-tglu-3/igt@i915_selftest@mock.html

  * igt@i915_suspend@basic-s3-without-i915:
    - shard-glk:          NOTRUN -> [INCOMPLETE][55] ([i915#13356] / [i915#16182] / [i915#4817])
   [55]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-glk8/igt@i915_suspend@basic-s3-without-i915.html

  * igt@kms_addfb_basic@invalid-smem-bo-on-discrete:
    - shard-tglu:         NOTRUN -> [SKIP][56] ([i915#12454] / [i915#12712])
   [56]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-tglu-3/igt@kms_addfb_basic@invalid-smem-bo-on-discrete.html

  * igt@kms_atomic_transition@plane-all-modeset-transition-fencing-internal-panels:
    - shard-mtlp:         [PASS][57] -> [FAIL][58] ([i915#5956]) +1 other test fail
   [57]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-mtlp-7/igt@kms_atomic_transition@plane-all-modeset-transition-fencing-internal-panels.html
   [58]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-mtlp-1/igt@kms_atomic_transition@plane-all-modeset-transition-fencing-internal-panels.html

  * igt@kms_big_fb@4-tiled-16bpp-rotate-180:
    - shard-dg2:          NOTRUN -> [SKIP][59] ([i915#17356])
   [59]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-7/igt@kms_big_fb@4-tiled-16bpp-rotate-180.html

  * igt@kms_big_fb@4-tiled-32bpp-rotate-0:
    - shard-tglu:         NOTRUN -> [SKIP][60] ([i915#5286]) +2 other tests skip
   [60]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-tglu-8/igt@kms_big_fb@4-tiled-32bpp-rotate-0.html

  * igt@kms_big_fb@4-tiled-64bpp-rotate-0:
    - shard-rkl:          NOTRUN -> [SKIP][61] ([i915#5286]) +5 other tests skip
   [61]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-8/igt@kms_big_fb@4-tiled-64bpp-rotate-0.html

  * igt@kms_big_fb@4-tiled-addfb:
    - shard-tglu-1:       NOTRUN -> [SKIP][62] ([i915#5286]) +2 other tests skip
   [62]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-tglu-1/igt@kms_big_fb@4-tiled-addfb.html
    - shard-dg1:          NOTRUN -> [SKIP][63] ([i915#5286])
   [63]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg1-15/igt@kms_big_fb@4-tiled-addfb.html

  * igt@kms_big_fb@linear-64bpp-rotate-90:
    - shard-dg1:          NOTRUN -> [SKIP][64] ([i915#3638]) +1 other test skip
   [64]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg1-15/igt@kms_big_fb@linear-64bpp-rotate-90.html

  * igt@kms_big_fb@linear-max-hw-stride-64bpp-rotate-180-hflip:
    - shard-tglu:         NOTRUN -> [SKIP][65] ([i915#3828])
   [65]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-tglu-3/igt@kms_big_fb@linear-max-hw-stride-64bpp-rotate-180-hflip.html

  * igt@kms_big_fb@x-tiled-16bpp-rotate-90:
    - shard-rkl:          NOTRUN -> [SKIP][66] ([i915#3638]) +2 other tests skip
   [66]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-4/igt@kms_big_fb@x-tiled-16bpp-rotate-90.html

  * igt@kms_big_fb@x-tiled-64bpp-rotate-180:
    - shard-dg2:          [PASS][67] -> [SKIP][68] ([i915#17356]) +35 other tests skip
   [67]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg2-5/igt@kms_big_fb@x-tiled-64bpp-rotate-180.html
   [68]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-7/igt@kms_big_fb@x-tiled-64bpp-rotate-180.html

  * igt@kms_big_fb@yf-tiled-addfb-size-overflow:
    - shard-dg2:          NOTRUN -> [SKIP][69] ([i915#5190])
   [69]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-5/igt@kms_big_fb@yf-tiled-addfb-size-overflow.html

  * igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-180:
    - shard-dg1:          NOTRUN -> [SKIP][70] ([i915#4538]) +1 other test skip
   [70]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg1-14/igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-180.html

  * igt@kms_ccs@bad-rotation-90-4-tiled-bmg-ccs:
    - shard-tglu:         NOTRUN -> [SKIP][71] ([i915#12313])
   [71]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-tglu-2/igt@kms_ccs@bad-rotation-90-4-tiled-bmg-ccs.html

  * igt@kms_ccs@bad-rotation-90-4-tiled-lnl-ccs:
    - shard-dg2:          NOTRUN -> [SKIP][72] ([i915#12313])
   [72]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-5/igt@kms_ccs@bad-rotation-90-4-tiled-lnl-ccs.html
    - shard-rkl:          NOTRUN -> [SKIP][73] ([i915#12313]) +1 other test skip
   [73]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-4/igt@kms_ccs@bad-rotation-90-4-tiled-lnl-ccs.html

  * igt@kms_ccs@bad-rotation-90-y-tiled-ccs@pipe-b-hdmi-a-1:
    - shard-tglu-1:       NOTRUN -> [SKIP][74] ([i915#6095]) +24 other tests skip
   [74]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-tglu-1/igt@kms_ccs@bad-rotation-90-y-tiled-ccs@pipe-b-hdmi-a-1.html

  * igt@kms_ccs@ccs-on-another-bo-4-tiled-mtl-rc-ccs@pipe-d-hdmi-a-1:
    - shard-dg2:          NOTRUN -> [SKIP][75] ([i915#10307] / [i915#10434] / [i915#6095]) +1 other test skip
   [75]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-4/igt@kms_ccs@ccs-on-another-bo-4-tiled-mtl-rc-ccs@pipe-d-hdmi-a-1.html

  * igt@kms_ccs@crc-primary-suspend-4-tiled-lnl-ccs:
    - shard-rkl:          NOTRUN -> [SKIP][76] ([i915#12805])
   [76]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-8/igt@kms_ccs@crc-primary-suspend-4-tiled-lnl-ccs.html

  * igt@kms_ccs@crc-primary-suspend-4-tiled-mtl-mc-ccs@pipe-b-edp-1:
    - shard-mtlp:         NOTRUN -> [INCOMPLETE][77] ([i915#15582])
   [77]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-mtlp-8/igt@kms_ccs@crc-primary-suspend-4-tiled-mtl-mc-ccs@pipe-b-edp-1.html

  * igt@kms_ccs@crc-primary-suspend-y-tiled-gen12-mc-ccs@pipe-a-hdmi-a-3:
    - shard-dg2:          NOTRUN -> [SKIP][78] ([i915#6095]) +7 other tests skip
   [78]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-6/igt@kms_ccs@crc-primary-suspend-y-tiled-gen12-mc-ccs@pipe-a-hdmi-a-3.html

  * igt@kms_ccs@crc-primary-suspend-y-tiled-gen12-rc-ccs-cc:
    - shard-rkl:          [PASS][79] -> [INCOMPLETE][80] ([i915#14694] / [i915#15582]) +1 other test incomplete
   [79]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-rkl-7/igt@kms_ccs@crc-primary-suspend-y-tiled-gen12-rc-ccs-cc.html
   [80]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-3/igt@kms_ccs@crc-primary-suspend-y-tiled-gen12-rc-ccs-cc.html

  * igt@kms_ccs@crc-sprite-planes-basic-4-tiled-mtl-mc-ccs:
    - shard-rkl:          NOTRUN -> [SKIP][81] ([i915#14098] / [i915#6095]) +33 other tests skip
   [81]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-4/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-mtl-mc-ccs.html

  * igt@kms_ccs@crc-sprite-planes-basic-4-tiled-mtl-mc-ccs@pipe-a-hdmi-a-3:
    - shard-dg2:          NOTRUN -> [SKIP][82] ([i915#10307] / [i915#6095]) +116 other tests skip
   [82]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-5/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-mtl-mc-ccs@pipe-a-hdmi-a-3.html

  * igt@kms_ccs@crc-sprite-planes-basic-y-tiled-ccs@pipe-b-hdmi-a-1:
    - shard-tglu:         NOTRUN -> [SKIP][83] ([i915#6095]) +29 other tests skip
   [83]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-tglu-2/igt@kms_ccs@crc-sprite-planes-basic-y-tiled-ccs@pipe-b-hdmi-a-1.html

  * igt@kms_ccs@missing-ccs-buffer-y-tiled-gen12-mc-ccs:
    - shard-mtlp:         NOTRUN -> [SKIP][84] ([i915#6095]) +9 other tests skip
   [84]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-mtlp-4/igt@kms_ccs@missing-ccs-buffer-y-tiled-gen12-mc-ccs.html

  * igt@kms_ccs@missing-ccs-buffer-yf-tiled-ccs@pipe-b-hdmi-a-1:
    - shard-dg1:          NOTRUN -> [SKIP][85] ([i915#6095]) +170 other tests skip
   [85]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg1-15/igt@kms_ccs@missing-ccs-buffer-yf-tiled-ccs@pipe-b-hdmi-a-1.html

  * igt@kms_ccs@random-ccs-data-4-tiled-lnl-ccs:
    - shard-tglu-1:       NOTRUN -> [SKIP][86] ([i915#12313]) +1 other test skip
   [86]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-tglu-1/igt@kms_ccs@random-ccs-data-4-tiled-lnl-ccs.html
    - shard-dg1:          NOTRUN -> [SKIP][87] ([i915#12313])
   [87]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg1-15/igt@kms_ccs@random-ccs-data-4-tiled-lnl-ccs.html

  * igt@kms_ccs@random-ccs-data-4-tiled-mtl-rc-ccs@pipe-b-hdmi-a-2:
    - shard-rkl:          NOTRUN -> [SKIP][88] ([i915#6095]) +47 other tests skip
   [88]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-7/igt@kms_ccs@random-ccs-data-4-tiled-mtl-rc-ccs@pipe-b-hdmi-a-2.html

  * igt@kms_cdclk@mode-transition-all-outputs:
    - shard-rkl:          NOTRUN -> [SKIP][89] ([i915#3742])
   [89]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-8/igt@kms_cdclk@mode-transition-all-outputs.html

  * igt@kms_cdclk@mode-transition@pipe-d-hdmi-a-1:
    - shard-dg2:          NOTRUN -> [SKIP][90] ([i915#13781]) +7 other tests skip
   [90]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-4/igt@kms_cdclk@mode-transition@pipe-d-hdmi-a-1.html

  * igt@kms_cdclk@plane-scaling:
    - shard-tglu:         NOTRUN -> [SKIP][91] ([i915#3742])
   [91]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-tglu-8/igt@kms_cdclk@plane-scaling.html

  * igt@kms_chamelium_color@ctm-0-50:
    - shard-dg2:          NOTRUN -> [SKIP][92] +1 other test skip
   [92]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-5/igt@kms_chamelium_color@ctm-0-50.html

  * igt@kms_chamelium_frames@dp-frame-dump:
    - shard-dg2:          NOTRUN -> [SKIP][93] ([i915#11151] / [i915#7828])
   [93]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-5/igt@kms_chamelium_frames@dp-frame-dump.html
    - shard-rkl:          NOTRUN -> [SKIP][94] ([i915#11151] / [i915#7828]) +4 other tests skip
   [94]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-4/igt@kms_chamelium_frames@dp-frame-dump.html

  * igt@kms_chamelium_hpd@dp-hpd-after-suspend:
    - shard-dg1:          NOTRUN -> [SKIP][95] ([i915#11151] / [i915#7828]) +1 other test skip
   [95]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg1-15/igt@kms_chamelium_hpd@dp-hpd-after-suspend.html

  * igt@kms_chamelium_hpd@vga-hpd-for-each-pipe:
    - shard-tglu-1:       NOTRUN -> [SKIP][96] ([i915#11151] / [i915#7828]) +4 other tests skip
   [96]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-tglu-1/igt@kms_chamelium_hpd@vga-hpd-for-each-pipe.html

  * igt@kms_chamelium_hpd@vga-hpd-without-ddc:
    - shard-tglu:         NOTRUN -> [SKIP][97] ([i915#11151] / [i915#7828]) +5 other tests skip
   [97]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-tglu-8/igt@kms_chamelium_hpd@vga-hpd-without-ddc.html

  * igt@kms_color@background-color:
    - shard-glk10:        NOTRUN -> [FAIL][98] ([i915#17133]) +3 other tests fail
   [98]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-glk10/igt@kms_color@background-color.html

  * igt@kms_color@ctm-negative:
    - shard-dg2:          [PASS][99] -> [SKIP][100] ([i915#12655] / [i915#17373])
   [99]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg2-3/igt@kms_color@ctm-negative.html
   [100]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-7/igt@kms_color@ctm-negative.html

  * igt@kms_color_pipeline@plane-ctm3x4@pipe-a-plane-4:
    - shard-dg2:          NOTRUN -> [SKIP][101] ([i915#16990]) +7 other tests skip
   [101]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-6/igt@kms_color_pipeline@plane-ctm3x4@pipe-a-plane-4.html

  * igt@kms_color_pipeline@plane-fixed-matrix-yuv-rgb-bt2020-lim-lut1d:
    - shard-dg2:          [PASS][102] -> [SKIP][103] ([i915#15529]) +2 other tests skip
   [102]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg2-4/igt@kms_color_pipeline@plane-fixed-matrix-yuv-rgb-bt2020-lim-lut1d.html
   [103]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-7/igt@kms_color_pipeline@plane-fixed-matrix-yuv-rgb-bt2020-lim-lut1d.html

  * igt@kms_color_pipeline@plane-lut1d-post-ctm3x4@pipe-c-plane-4:
    - shard-rkl:          NOTRUN -> [SKIP][104] ([i915#16990]) +11 other tests skip
   [104]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-2/igt@kms_color_pipeline@plane-lut1d-post-ctm3x4@pipe-c-plane-4.html

  * igt@kms_color_pipeline@plane-lut1d-pre-ctm3x4@pipe-a-plane-6:
    - shard-tglu:         NOTRUN -> [SKIP][105] ([i915#16990]) +15 other tests skip
   [105]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-tglu-2/igt@kms_color_pipeline@plane-lut1d-pre-ctm3x4@pipe-a-plane-6.html

  * igt@kms_content_protection@dp-mst-lic-type-0-hdcp14:
    - shard-rkl:          NOTRUN -> [SKIP][106] ([i915#15330])
   [106]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-4/igt@kms_content_protection@dp-mst-lic-type-0-hdcp14.html

  * igt@kms_content_protection@dp-mst-lic-type-1:
    - shard-mtlp:         NOTRUN -> [SKIP][107] ([i915#15330] / [i915#3299])
   [107]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-mtlp-4/igt@kms_content_protection@dp-mst-lic-type-1.html

  * igt@kms_content_protection@legacy-hdcp14:
    - shard-tglu-1:       NOTRUN -> [SKIP][108] ([i915#15865])
   [108]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-tglu-1/igt@kms_content_protection@legacy-hdcp14.html
    - shard-dg1:          NOTRUN -> [SKIP][109] ([i915#15865])
   [109]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg1-15/igt@kms_content_protection@legacy-hdcp14.html

  * igt@kms_content_protection@lic-type-1:
    - shard-rkl:          NOTRUN -> [SKIP][110] ([i915#15865])
   [110]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-7/igt@kms_content_protection@lic-type-1.html

  * igt@kms_content_protection@srm:
    - shard-tglu:         NOTRUN -> [SKIP][111] ([i915#15865]) +1 other test skip
   [111]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-tglu-3/igt@kms_content_protection@srm.html

  * igt@kms_cursor_crc@cursor-offscreen-512x512:
    - shard-tglu-1:       NOTRUN -> [SKIP][112] ([i915#13049])
   [112]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-tglu-1/igt@kms_cursor_crc@cursor-offscreen-512x512.html

  * igt@kms_cursor_crc@cursor-onscreen-32x32:
    - shard-tglu-1:       NOTRUN -> [SKIP][113] ([i915#3555])
   [113]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-tglu-1/igt@kms_cursor_crc@cursor-onscreen-32x32.html
    - shard-dg1:          NOTRUN -> [SKIP][114] ([i915#3555])
   [114]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg1-15/igt@kms_cursor_crc@cursor-onscreen-32x32.html

  * igt@kms_cursor_crc@cursor-onscreen-512x512:
    - shard-tglu:         NOTRUN -> [SKIP][115] ([i915#13049])
   [115]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-tglu-8/igt@kms_cursor_crc@cursor-onscreen-512x512.html

  * igt@kms_cursor_crc@cursor-rapid-movement-32x10:
    - shard-rkl:          NOTRUN -> [SKIP][116] ([i915#3555]) +3 other tests skip
   [116]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-7/igt@kms_cursor_crc@cursor-rapid-movement-32x10.html

  * igt@kms_cursor_legacy@2x-long-cursor-vs-flip-legacy:
    - shard-dg2:          NOTRUN -> [SKIP][117] ([i915#13046] / [i915#5354])
   [117]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-5/igt@kms_cursor_legacy@2x-long-cursor-vs-flip-legacy.html

  * igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions-varying-size:
    - shard-rkl:          NOTRUN -> [SKIP][118] ([i915#4103])
   [118]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-4/igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions-varying-size.html

  * igt@kms_dirtyfb@drrs-dirtyfb-ioctl:
    - shard-rkl:          NOTRUN -> [SKIP][119] ([i915#9723])
   [119]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-8/igt@kms_dirtyfb@drrs-dirtyfb-ioctl.html

  * igt@kms_dirtyfb@psr-dirtyfb-ioctl:
    - shard-tglu-1:       NOTRUN -> [SKIP][120] ([i915#9723])
   [120]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-tglu-1/igt@kms_dirtyfb@psr-dirtyfb-ioctl.html
    - shard-dg1:          NOTRUN -> [SKIP][121] ([i915#9723])
   [121]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg1-15/igt@kms_dirtyfb@psr-dirtyfb-ioctl.html

  * igt@kms_dither@fb-8bpc-vs-panel-6bpc:
    - shard-rkl:          NOTRUN -> [SKIP][122] ([i915#3555] / [i915#3804])
   [122]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-7/igt@kms_dither@fb-8bpc-vs-panel-6bpc.html

  * igt@kms_dither@fb-8bpc-vs-panel-6bpc@pipe-a-hdmi-a-2:
    - shard-rkl:          NOTRUN -> [SKIP][123] ([i915#3804])
   [123]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-7/igt@kms_dither@fb-8bpc-vs-panel-6bpc@pipe-a-hdmi-a-2.html

  * igt@kms_dp_aux_dev@basic:
    - shard-tglu-1:       NOTRUN -> [SKIP][124] ([i915#1257])
   [124]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-tglu-1/igt@kms_dp_aux_dev@basic.html

  * igt@kms_dp_link_training@non-uhbr-mst-tbtalt-train:
    - shard-tglu:         NOTRUN -> [SKIP][125] ([i915#17291])
   [125]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-tglu-8/igt@kms_dp_link_training@non-uhbr-mst-tbtalt-train.html

  * igt@kms_dp_link_training@uhbr-sst-tbtalt-train:
    - shard-rkl:          NOTRUN -> [SKIP][126] ([i915#17285])
   [126]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-4/igt@kms_dp_link_training@uhbr-sst-tbtalt-train.html

  * igt@kms_dsc@dsc-with-bpc-formats-bigjoiner:
    - shard-tglu-1:       NOTRUN -> [SKIP][127] ([i915#16361]) +1 other test skip
   [127]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-tglu-1/igt@kms_dsc@dsc-with-bpc-formats-bigjoiner.html

  * igt@kms_dsc@dsc-with-formats:
    - shard-dg1:          NOTRUN -> [SKIP][128] ([i915#16361])
   [128]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg1-15/igt@kms_dsc@dsc-with-formats.html

  * igt@kms_dsc@dsc-with-formats-ultrajoiner:
    - shard-rkl:          NOTRUN -> [SKIP][129] ([i915#16361]) +1 other test skip
   [129]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-8/igt@kms_dsc@dsc-with-formats-ultrajoiner.html

  * igt@kms_dsc@dsc-with-output-formats-with-bpc-ultrajoiner:
    - shard-tglu:         NOTRUN -> [SKIP][130] ([i915#16361]) +2 other tests skip
   [130]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-tglu-3/igt@kms_dsc@dsc-with-output-formats-with-bpc-ultrajoiner.html

  * igt@kms_feature_discovery@display-3x:
    - shard-rkl:          NOTRUN -> [SKIP][131] ([i915#16081])
   [131]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-8/igt@kms_feature_discovery@display-3x.html

  * igt@kms_feature_discovery@display-4x:
    - shard-tglu-1:       NOTRUN -> [SKIP][132] ([i915#16081])
   [132]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-tglu-1/igt@kms_feature_discovery@display-4x.html

  * igt@kms_feature_discovery@dp-mst:
    - shard-tglu-1:       NOTRUN -> [SKIP][133] ([i915#16599])
   [133]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-tglu-1/igt@kms_feature_discovery@dp-mst.html
    - shard-dg1:          NOTRUN -> [SKIP][134] ([i915#16599])
   [134]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg1-15/igt@kms_feature_discovery@dp-mst.html

  * igt@kms_flip@2x-flip-vs-suspend-interruptible:
    - shard-glk:          NOTRUN -> [INCOMPLETE][135] ([i915#12745] / [i915#13356] / [i915#17183] / [i915#4839])
   [135]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-glk3/igt@kms_flip@2x-flip-vs-suspend-interruptible.html

  * igt@kms_flip@2x-flip-vs-suspend-interruptible@ac-hdmi-a1-hdmi-a2:
    - shard-glk:          NOTRUN -> [INCOMPLETE][136] ([i915#12745] / [i915#13356] / [i915#17183])
   [136]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-glk3/igt@kms_flip@2x-flip-vs-suspend-interruptible@ac-hdmi-a1-hdmi-a2.html

  * igt@kms_flip@2x-flip-vs-wf_vblank-interruptible:
    - shard-rkl:          NOTRUN -> [SKIP][137] ([i915#9934]) +7 other tests skip
   [137]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-4/igt@kms_flip@2x-flip-vs-wf_vblank-interruptible.html

  * igt@kms_flip@2x-plain-flip:
    - shard-tglu:         NOTRUN -> [SKIP][138] ([i915#3637] / [i915#9934]) +3 other tests skip
   [138]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-tglu-3/igt@kms_flip@2x-plain-flip.html

  * igt@kms_flip@2x-plain-flip-interruptible:
    - shard-tglu-1:       NOTRUN -> [SKIP][139] ([i915#3637] / [i915#9934]) +1 other test skip
   [139]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-tglu-1/igt@kms_flip@2x-plain-flip-interruptible.html
    - shard-dg1:          NOTRUN -> [SKIP][140] ([i915#9934]) +1 other test skip
   [140]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg1-15/igt@kms_flip@2x-plain-flip-interruptible.html

  * igt@kms_flip@flip-vs-absolute-wf_vblank-interruptible:
    - shard-dg1:          [PASS][141] -> [FAIL][142] ([i915#14600]) +1 other test fail
   [141]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg1-17/igt@kms_flip@flip-vs-absolute-wf_vblank-interruptible.html
   [142]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg1-17/igt@kms_flip@flip-vs-absolute-wf_vblank-interruptible.html

  * igt@kms_flip@single-buffer-flip-vs-dpms-off-vs-modeset-interruptible:
    - shard-dg2:          [PASS][143] -> [SKIP][144] ([i915#5354]) +3 other tests skip
   [143]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg2-4/igt@kms_flip@single-buffer-flip-vs-dpms-off-vs-modeset-interruptible.html
   [144]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-7/igt@kms_flip@single-buffer-flip-vs-dpms-off-vs-modeset-interruptible.html

  * igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-32bpp-yftileccs-downscaling:
    - shard-mtlp:         NOTRUN -> [SKIP][145] ([i915#15643])
   [145]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-mtlp-4/igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-32bpp-yftileccs-downscaling.html

  * igt@kms_flip_scaled_crc@flip-32bpp-yftileccs-to-64bpp-yftile-downscaling:
    - shard-tglu-1:       NOTRUN -> [SKIP][146] ([i915#15643]) +1 other test skip
   [146]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-tglu-1/igt@kms_flip_scaled_crc@flip-32bpp-yftileccs-to-64bpp-yftile-downscaling.html
    - shard-dg1:          NOTRUN -> [SKIP][147] ([i915#15643])
   [147]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg1-15/igt@kms_flip_scaled_crc@flip-32bpp-yftileccs-to-64bpp-yftile-downscaling.html

  * igt@kms_flip_scaled_crc@flip-32bpp-yftileccs-to-64bpp-yftile-upscaling:
    - shard-tglu:         NOTRUN -> [SKIP][148] ([i915#15643]) +2 other tests skip
   [148]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-tglu-8/igt@kms_flip_scaled_crc@flip-32bpp-yftileccs-to-64bpp-yftile-upscaling.html

  * igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tile-upscaling:
    - shard-dg2:          [PASS][149] -> [SKIP][150] ([i915#3555] / [i915#8813]) +2 other tests skip
   [149]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg2-5/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tile-upscaling.html
   [150]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-7/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tile-upscaling.html

  * igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-upscaling:
    - shard-glk11:        NOTRUN -> [SKIP][151] +81 other tests skip
   [151]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-glk11/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-upscaling.html

  * igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-32bpp-yftile-upscaling:
    - shard-rkl:          NOTRUN -> [SKIP][152] ([i915#15643]) +4 other tests skip
   [152]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-4/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-32bpp-yftile-upscaling.html

  * igt@kms_frontbuffer_tracking@fbc-1p-offscreen-pri-indfb-draw-blt:
    - shard-dg2:          [PASS][153] -> [SKIP][154] ([i915#16708])
   [153]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg2-3/igt@kms_frontbuffer_tracking@fbc-1p-offscreen-pri-indfb-draw-blt.html
   [154]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-7/igt@kms_frontbuffer_tracking@fbc-1p-offscreen-pri-indfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-pwrite:
    - shard-dg2:          [PASS][155] -> [SKIP][156] ([i915#16708] / [i915#5354])
   [155]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg2-5/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-pwrite.html
   [156]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-7/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-pwrite.html

  * igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-shrfb-draw-mmap-cpu:
    - shard-dg2:          NOTRUN -> [SKIP][157] ([i915#16708] / [i915#5354])
   [157]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-7/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-shrfb-draw-mmap-cpu.html

  * igt@kms_frontbuffer_tracking@fbc-rgb565-draw-mmap-gtt:
    - shard-dg1:          NOTRUN -> [SKIP][158] ([i915#15990] / [i915#8708]) +5 other tests skip
   [158]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg1-15/igt@kms_frontbuffer_tracking@fbc-rgb565-draw-mmap-gtt.html

  * igt@kms_frontbuffer_tracking@fbc-suspend:
    - shard-glk11:        NOTRUN -> [INCOMPLETE][159] ([i915#10056] / [i915#13356] / [i915#16593])
   [159]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-glk11/igt@kms_frontbuffer_tracking@fbc-suspend.html

  * igt@kms_frontbuffer_tracking@fbchdr-1p-offscreen-pri-indfb-draw-mmap-wc:
    - shard-tglu-1:       NOTRUN -> [SKIP][160] ([i915#15989]) +10 other tests skip
   [160]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-tglu-1/igt@kms_frontbuffer_tracking@fbchdr-1p-offscreen-pri-indfb-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@fbchdr-1p-primscrn-spr-indfb-draw-mmap-cpu:
    - shard-dg2:          NOTRUN -> [SKIP][161] ([i915#15989]) +1 other test skip
   [161]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-5/igt@kms_frontbuffer_tracking@fbchdr-1p-primscrn-spr-indfb-draw-mmap-cpu.html

  * igt@kms_frontbuffer_tracking@fbchdr-2p-primscrn-cur-indfb-draw-pwrite:
    - shard-rkl:          NOTRUN -> [SKIP][162] +72 other tests skip
   [162]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-2/igt@kms_frontbuffer_tracking@fbchdr-2p-primscrn-cur-indfb-draw-pwrite.html

  * igt@kms_frontbuffer_tracking@fbchdr-2p-scndscrn-cur-indfb-draw-mmap-gtt:
    - shard-dg1:          NOTRUN -> [SKIP][163] ([i915#15990]) +4 other tests skip
   [163]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg1-14/igt@kms_frontbuffer_tracking@fbchdr-2p-scndscrn-cur-indfb-draw-mmap-gtt.html

  * igt@kms_frontbuffer_tracking@fbchdr-rgb565-draw-mmap-cpu:
    - shard-dg1:          NOTRUN -> [SKIP][164] ([i915#15989]) +5 other tests skip
   [164]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg1-14/igt@kms_frontbuffer_tracking@fbchdr-rgb565-draw-mmap-cpu.html

  * igt@kms_frontbuffer_tracking@fbcpsr-1p-offscreen-pri-shrfb-draw-mmap-gtt:
    - shard-dg2:          NOTRUN -> [SKIP][165] ([i915#15104] / [i915#15990])
   [165]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-5/igt@kms_frontbuffer_tracking@fbcpsr-1p-offscreen-pri-shrfb-draw-mmap-gtt.html

  * igt@kms_frontbuffer_tracking@fbcpsr-1p-pri-indfb-multidraw:
    - shard-rkl:          NOTRUN -> [SKIP][166] ([i915#15102]) +31 other tests skip
   [166]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-4/igt@kms_frontbuffer_tracking@fbcpsr-1p-pri-indfb-multidraw.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-shrfb-draw-mmap-gtt:
    - shard-mtlp:         NOTRUN -> [SKIP][167] ([i915#15990] / [i915#8708]) +1 other test skip
   [167]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-mtlp-4/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-shrfb-draw-mmap-gtt.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-spr-indfb-draw-mmap-gtt:
    - shard-rkl:          NOTRUN -> [SKIP][168] ([i915#1825]) +2 other tests skip
   [168]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-4/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-spr-indfb-draw-mmap-gtt.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-shrfb-pgflip-blt:
    - shard-tglu-1:       NOTRUN -> [SKIP][169] +48 other tests skip
   [169]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-tglu-1/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-shrfb-pgflip-blt.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-draw-pwrite:
    - shard-dg2:          NOTRUN -> [SKIP][170] ([i915#15991] / [i915#5354]) +1 other test skip
   [170]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-5/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-draw-pwrite.html

  * igt@kms_frontbuffer_tracking@fbcpsr-rgb565-draw-mmap-wc:
    - shard-tglu-1:       NOTRUN -> [SKIP][171] ([i915#15102]) +21 other tests skip
   [171]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-tglu-1/igt@kms_frontbuffer_tracking@fbcpsr-rgb565-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@fbcpsrhdr-2p-indfb-fliptrack-mmap-gtt:
    - shard-glk10:        NOTRUN -> [SKIP][172] +155 other tests skip
   [172]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-glk10/igt@kms_frontbuffer_tracking@fbcpsrhdr-2p-indfb-fliptrack-mmap-gtt.html

  * igt@kms_frontbuffer_tracking@fbcpsrhdr-shrfb-scaledprimary:
    - shard-tglu:         NOTRUN -> [SKIP][173] ([i915#15102]) +18 other tests skip
   [173]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-tglu-8/igt@kms_frontbuffer_tracking@fbcpsrhdr-shrfb-scaledprimary.html

  * igt@kms_frontbuffer_tracking@fbcpsrhdr-tiling-4:
    - shard-tglu-1:       NOTRUN -> [SKIP][174] ([i915#5439])
   [174]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-tglu-1/igt@kms_frontbuffer_tracking@fbcpsrhdr-tiling-4.html
    - shard-dg1:          NOTRUN -> [SKIP][175] ([i915#5439])
   [175]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg1-15/igt@kms_frontbuffer_tracking@fbcpsrhdr-tiling-4.html

  * igt@kms_frontbuffer_tracking@hdr-1p-primscrn-pri-indfb-draw-blt:
    - shard-tglu:         NOTRUN -> [SKIP][176] ([i915#15989]) +10 other tests skip
   [176]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-tglu-3/igt@kms_frontbuffer_tracking@hdr-1p-primscrn-pri-indfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@hdr-2p-primscrn-cur-indfb-draw-mmap-cpu:
    - shard-mtlp:         NOTRUN -> [SKIP][177] ([i915#15991]) +2 other tests skip
   [177]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-mtlp-4/igt@kms_frontbuffer_tracking@hdr-2p-primscrn-cur-indfb-draw-mmap-cpu.html

  * igt@kms_frontbuffer_tracking@hdr-2p-primscrn-cur-indfb-draw-mmap-gtt:
    - shard-tglu:         NOTRUN -> [SKIP][178] +47 other tests skip
   [178]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-tglu-2/igt@kms_frontbuffer_tracking@hdr-2p-primscrn-cur-indfb-draw-mmap-gtt.html

  * igt@kms_frontbuffer_tracking@hdr-2p-scndscrn-cur-indfb-draw-render:
    - shard-dg2:          NOTRUN -> [SKIP][179] ([i915#15991]) +3 other tests skip
   [179]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-5/igt@kms_frontbuffer_tracking@hdr-2p-scndscrn-cur-indfb-draw-render.html

  * igt@kms_frontbuffer_tracking@hdr-farfromfence-mmap-gtt:
    - shard-rkl:          NOTRUN -> [SKIP][180] ([i915#15989]) +19 other tests skip
   [180]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-8/igt@kms_frontbuffer_tracking@hdr-farfromfence-mmap-gtt.html

  * igt@kms_frontbuffer_tracking@hdr-rgb101010-draw-render:
    - shard-glk:          [PASS][181] -> [SKIP][182] +16 other tests skip
   [181]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-glk8/igt@kms_frontbuffer_tracking@hdr-rgb101010-draw-render.html
   [182]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-glk9/igt@kms_frontbuffer_tracking@hdr-rgb101010-draw-render.html

  * igt@kms_frontbuffer_tracking@hdr-rgb565-draw-mmap-cpu:
    - shard-rkl:          [PASS][183] -> [SKIP][184] ([i915#15989]) +6 other tests skip
   [183]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-rkl-6/igt@kms_frontbuffer_tracking@hdr-rgb565-draw-mmap-cpu.html
   [184]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-4/igt@kms_frontbuffer_tracking@hdr-rgb565-draw-mmap-cpu.html

  * igt@kms_frontbuffer_tracking@psr-1p-offscreen-pri-indfb-draw-pwrite:
    - shard-dg2:          NOTRUN -> [SKIP][185] ([i915#15102]) +1 other test skip
   [185]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-5/igt@kms_frontbuffer_tracking@psr-1p-offscreen-pri-indfb-draw-pwrite.html

  * igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-move:
    - shard-dg1:          NOTRUN -> [SKIP][186] ([i915#15102]) +9 other tests skip
   [186]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg1-15/igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-move.html

  * igt@kms_frontbuffer_tracking@psr-2p-primscrn-indfb-plflip-blt:
    - shard-mtlp:         NOTRUN -> [SKIP][187] ([i915#15991] / [i915#1825]) +1 other test skip
   [187]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-mtlp-4/igt@kms_frontbuffer_tracking@psr-2p-primscrn-indfb-plflip-blt.html

  * igt@kms_frontbuffer_tracking@psrhdr-1p-offscreen-pri-indfb-draw-mmap-gtt:
    - shard-mtlp:         NOTRUN -> [SKIP][188] ([i915#15990])
   [188]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-mtlp-4/igt@kms_frontbuffer_tracking@psrhdr-1p-offscreen-pri-indfb-draw-mmap-gtt.html

  * igt@kms_frontbuffer_tracking@psrhdr-1p-primscrn-pri-shrfb-draw-mmap-cpu:
    - shard-mtlp:         NOTRUN -> [SKIP][189] ([i915#15989])
   [189]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-mtlp-4/igt@kms_frontbuffer_tracking@psrhdr-1p-primscrn-pri-shrfb-draw-mmap-cpu.html

  * igt@kms_frontbuffer_tracking@psrhdr-1p-primscrn-pri-shrfb-draw-mmap-gtt:
    - shard-dg2:          NOTRUN -> [SKIP][190] ([i915#15990]) +1 other test skip
   [190]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-5/igt@kms_frontbuffer_tracking@psrhdr-1p-primscrn-pri-shrfb-draw-mmap-gtt.html

  * igt@kms_frontbuffer_tracking@psrhdr-2p-rte:
    - shard-dg1:          NOTRUN -> [SKIP][191] +19 other tests skip
   [191]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg1-15/igt@kms_frontbuffer_tracking@psrhdr-2p-rte.html

  * igt@kms_hdmi_audio_bw@audio-bw-hblank160:
    - shard-dg2:          [PASS][192] -> [SKIP][193] ([i915#17357])
   [192]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg2-4/igt@kms_hdmi_audio_bw@audio-bw-hblank160.html
   [193]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-7/igt@kms_hdmi_audio_bw@audio-bw-hblank160.html
    - shard-mtlp:         NOTRUN -> [SKIP][194] ([i915#17103])
   [194]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-mtlp-4/igt@kms_hdmi_audio_bw@audio-bw-hblank160.html

  * igt@kms_hdr@bpc-switch-suspend@pipe-a-hdmi-a-2-xrgb2101010:
    - shard-rkl:          NOTRUN -> [INCOMPLETE][195] ([i915#15436])
   [195]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-6/igt@kms_hdr@bpc-switch-suspend@pipe-a-hdmi-a-2-xrgb2101010.html

  * igt@kms_invalid_mode@zero-clock:
    - shard-dg2:          [PASS][196] -> [SKIP][197] ([i915#16746] / [i915#3555]) +1 other test skip
   [196]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg2-4/igt@kms_invalid_mode@zero-clock.html
   [197]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-7/igt@kms_invalid_mode@zero-clock.html

  * igt@kms_joiner@basic-force-big-joiner:
    - shard-tglu-1:       NOTRUN -> [SKIP][198] ([i915#15459])
   [198]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-tglu-1/igt@kms_joiner@basic-force-big-joiner.html
    - shard-dg1:          NOTRUN -> [SKIP][199] ([i915#15459])
   [199]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg1-15/igt@kms_joiner@basic-force-big-joiner.html

  * igt@kms_joiner@basic-force-ultra-joiner:
    - shard-rkl:          NOTRUN -> [SKIP][200] ([i915#15458]) +1 other test skip
   [200]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-8/igt@kms_joiner@basic-force-ultra-joiner.html

  * igt@kms_joiner@invalid-modeset-big-joiner:
    - shard-rkl:          NOTRUN -> [SKIP][201] ([i915#15460])
   [201]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-4/igt@kms_joiner@invalid-modeset-big-joiner.html

  * igt@kms_joiner@switch-modeset-ultra-joiner-big-joiner:
    - shard-rkl:          NOTRUN -> [SKIP][202] ([i915#15638] / [i915#15722])
   [202]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-7/igt@kms_joiner@switch-modeset-ultra-joiner-big-joiner.html

  * igt@kms_multipipe_modeset@basic-max-pipe-crc-check:
    - shard-dg2:          NOTRUN -> [SKIP][203] ([i915#15815])
   [203]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-5/igt@kms_multipipe_modeset@basic-max-pipe-crc-check.html
    - shard-rkl:          NOTRUN -> [SKIP][204] ([i915#15815])
   [204]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-4/igt@kms_multipipe_modeset@basic-max-pipe-crc-check.html

  * igt@kms_panel_fitting@legacy:
    - shard-tglu:         NOTRUN -> [SKIP][205] ([i915#6301])
   [205]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-tglu-8/igt@kms_panel_fitting@legacy.html

  * igt@kms_pipe_crc_basic@read-crc-frame-sequence:
    - shard-dg2:          [PASS][206] -> [SKIP][207] ([i915#11190] / [i915#17356])
   [206]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg2-3/igt@kms_pipe_crc_basic@read-crc-frame-sequence.html
   [207]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-7/igt@kms_pipe_crc_basic@read-crc-frame-sequence.html

  * igt@kms_pipe_stress@stress-xrgb8888-xtiled:
    - shard-glk:          NOTRUN -> [DMESG-FAIL][208] ([i915#118])
   [208]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-glk1/igt@kms_pipe_stress@stress-xrgb8888-xtiled.html

  * igt@kms_pipe_stress@stress-xrgb8888-yftiled:
    - shard-tglu:         NOTRUN -> [SKIP][209] ([i915#14712])
   [209]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-tglu-8/igt@kms_pipe_stress@stress-xrgb8888-yftiled.html
    - shard-glk:          NOTRUN -> [DMESG-FAIL][210] ([i915#118] / [i915#16396])
   [210]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-glk1/igt@kms_pipe_stress@stress-xrgb8888-yftiled.html

  * igt@kms_plane@pixel-format-4-tiled-dg2-rc-ccs-cc-modifier:
    - shard-tglu:         NOTRUN -> [SKIP][211] ([i915#15709]) +2 other tests skip
   [211]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-tglu-3/igt@kms_plane@pixel-format-4-tiled-dg2-rc-ccs-cc-modifier.html

  * igt@kms_plane@pixel-format-4-tiled-dg2-rc-ccs-cc-modifier-source-clamping:
    - shard-rkl:          NOTRUN -> [SKIP][212] ([i915#15709])
   [212]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-4/igt@kms_plane@pixel-format-4-tiled-dg2-rc-ccs-cc-modifier-source-clamping.html

  * igt@kms_plane@pixel-format-4-tiled-dg2-rc-ccs-modifier-source-clamping:
    - shard-dg2:          [PASS][213] -> [SKIP][214] ([i915#8825]) +1 other test skip
   [213]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg2-3/igt@kms_plane@pixel-format-4-tiled-dg2-rc-ccs-modifier-source-clamping.html
   [214]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-7/igt@kms_plane@pixel-format-4-tiled-dg2-rc-ccs-modifier-source-clamping.html

  * igt@kms_plane@pixel-format-4-tiled-mtl-rc-ccs-cc-modifier:
    - shard-tglu-1:       NOTRUN -> [SKIP][215] ([i915#15709])
   [215]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-tglu-1/igt@kms_plane@pixel-format-4-tiled-mtl-rc-ccs-cc-modifier.html
    - shard-dg1:          NOTRUN -> [SKIP][216] ([i915#15709])
   [216]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg1-15/igt@kms_plane@pixel-format-4-tiled-mtl-rc-ccs-cc-modifier.html

  * igt@kms_plane@pixel-format-y-tiled-gen12-rc-ccs-cc-modifier@pipe-b-plane-7:
    - shard-tglu-1:       NOTRUN -> [SKIP][217] ([i915#16386]) +1 other test skip
   [217]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-tglu-1/igt@kms_plane@pixel-format-y-tiled-gen12-rc-ccs-cc-modifier@pipe-b-plane-7.html

  * igt@kms_plane@pixel-format-y-tiled-gen12-rc-ccs-modifier@pipe-a-plane-7:
    - shard-tglu:         NOTRUN -> [SKIP][218] ([i915#16386]) +1 other test skip
   [218]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-tglu-3/igt@kms_plane@pixel-format-y-tiled-gen12-rc-ccs-modifier@pipe-a-plane-7.html

  * igt@kms_plane@pixel-format-y-tiled-modifier@pipe-b-plane-7:
    - shard-dg1:          NOTRUN -> [SKIP][219] ([i915#16386]) +1 other test skip
   [219]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg1-14/igt@kms_plane@pixel-format-y-tiled-modifier@pipe-b-plane-7.html

  * igt@kms_plane_multiple@2x-tiling-none:
    - shard-rkl:          NOTRUN -> [SKIP][220] ([i915#13958])
   [220]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-8/igt@kms_plane_multiple@2x-tiling-none.html

  * igt@kms_plane_scaling@invalid-num-scalers:
    - shard-dg2:          [PASS][221] -> [SKIP][222] ([i915#17356] / [i915#3555] / [i915#6953] / [i915#9423])
   [221]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg2-3/igt@kms_plane_scaling@invalid-num-scalers.html
   [222]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-7/igt@kms_plane_scaling@invalid-num-scalers.html

  * igt@kms_plane_scaling@plane-downscale-factor-0-75-with-rotation@pipe-b:
    - shard-dg2:          [PASS][223] -> [SKIP][224] ([i915#15329]) +11 other tests skip
   [223]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg2-5/igt@kms_plane_scaling@plane-downscale-factor-0-75-with-rotation@pipe-b.html
   [224]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-7/igt@kms_plane_scaling@plane-downscale-factor-0-75-with-rotation@pipe-b.html

  * igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-rotation:
    - shard-rkl:          NOTRUN -> [SKIP][225] ([i915#15329] / [i915#3555])
   [225]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-7/igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-rotation.html

  * igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-rotation@pipe-b:
    - shard-rkl:          NOTRUN -> [SKIP][226] ([i915#15329]) +2 other tests skip
   [226]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-7/igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-rotation@pipe-b.html

  * igt@kms_plane_scaling@plane-upscale-20x20-with-rotation@pipe-d:
    - shard-dg2:          [PASS][227] -> [SKIP][228] ([i915#15329] / [i915#17356]) +3 other tests skip
   [227]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg2-5/igt@kms_plane_scaling@plane-upscale-20x20-with-rotation@pipe-d.html
   [228]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-7/igt@kms_plane_scaling@plane-upscale-20x20-with-rotation@pipe-d.html

  * igt@kms_plane_scaling@planes-downscale-factor-0-5-upscale-20x20:
    - shard-dg2:          [PASS][229] -> [SKIP][230] ([i915#15329] / [i915#17356] / [i915#9423]) +3 other tests skip
   [229]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg2-4/igt@kms_plane_scaling@planes-downscale-factor-0-5-upscale-20x20.html
   [230]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-7/igt@kms_plane_scaling@planes-downscale-factor-0-5-upscale-20x20.html

  * igt@kms_plane_scaling@planes-downscale-factor-0-5-upscale-20x20@pipe-d:
    - shard-mtlp:         NOTRUN -> [SKIP][231] ([i915#15329]) +4 other tests skip
   [231]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-mtlp-4/igt@kms_plane_scaling@planes-downscale-factor-0-5-upscale-20x20@pipe-d.html

  * igt@kms_pm_backlight@fade-with-suspend:
    - shard-tglu:         NOTRUN -> [SKIP][232] ([i915#12343] / [i915#9812])
   [232]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-tglu-8/igt@kms_pm_backlight@fade-with-suspend.html

  * igt@kms_pm_dc@dc6-psr:
    - shard-tglu:         NOTRUN -> [SKIP][233] ([i915#15948])
   [233]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-tglu-2/igt@kms_pm_dc@dc6-psr.html

  * igt@kms_pm_dc@dc9-dpms:
    - shard-tglu:         NOTRUN -> [SKIP][234] ([i915#15739])
   [234]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-tglu-3/igt@kms_pm_dc@dc9-dpms.html

  * igt@kms_pm_lpsp@kms-lpsp:
    - shard-rkl:          NOTRUN -> [SKIP][235] ([i915#9340])
   [235]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-4/igt@kms_pm_lpsp@kms-lpsp.html

  * igt@kms_pm_rpm@dpms-mode-unset-non-lpsp:
    - shard-tglu-1:       NOTRUN -> [SKIP][236] ([i915#15073])
   [236]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-tglu-1/igt@kms_pm_rpm@dpms-mode-unset-non-lpsp.html

  * igt@kms_pm_rpm@modeset-lpsp-stress:
    - shard-dg1:          [PASS][237] -> [SKIP][238] ([i915#15073]) +1 other test skip
   [237]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg1-15/igt@kms_pm_rpm@modeset-lpsp-stress.html
   [238]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg1-18/igt@kms_pm_rpm@modeset-lpsp-stress.html

  * igt@kms_pm_rpm@modeset-non-lpsp-stress:
    - shard-dg2:          [PASS][239] -> [SKIP][240] ([i915#15073])
   [239]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg2-8/igt@kms_pm_rpm@modeset-non-lpsp-stress.html
   [240]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-4/igt@kms_pm_rpm@modeset-non-lpsp-stress.html

  * igt@kms_pm_rpm@modeset-non-lpsp-stress-no-wait:
    - shard-rkl:          [PASS][241] -> [SKIP][242] ([i915#15073]) +1 other test skip
   [241]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-rkl-4/igt@kms_pm_rpm@modeset-non-lpsp-stress-no-wait.html
   [242]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-8/igt@kms_pm_rpm@modeset-non-lpsp-stress-no-wait.html

  * igt@kms_pm_rpm@package-g7:
    - shard-tglu:         NOTRUN -> [SKIP][243] ([i915#15403])
   [243]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-tglu-2/igt@kms_pm_rpm@package-g7.html

  * igt@kms_pm_rpm@system-suspend-modeset:
    - shard-glk:          NOTRUN -> [INCOMPLETE][244] ([i915#10553] / [i915#13356])
   [244]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-glk2/igt@kms_pm_rpm@system-suspend-modeset.html
    - shard-rkl:          [PASS][245] -> [INCOMPLETE][246] ([i915#14419])
   [245]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-rkl-5/igt@kms_pm_rpm@system-suspend-modeset.html
   [246]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-7/igt@kms_pm_rpm@system-suspend-modeset.html

  * igt@kms_prime@basic-modeset-hybrid:
    - shard-tglu-1:       NOTRUN -> [SKIP][247] ([i915#6524])
   [247]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-tglu-1/igt@kms_prime@basic-modeset-hybrid.html

  * igt@kms_properties@colorop-properties-legacy:
    - shard-dg2:          [PASS][248] -> [SKIP][249] ([i915#15347])
   [248]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg2-4/igt@kms_properties@colorop-properties-legacy.html
   [249]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-7/igt@kms_properties@colorop-properties-legacy.html

  * igt@kms_psr2_sf@fbc-pr-cursor-plane-move-continuous-exceed-fully-sf:
    - shard-rkl:          NOTRUN -> [SKIP][250] ([i915#11520]) +5 other tests skip
   [250]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-4/igt@kms_psr2_sf@fbc-pr-cursor-plane-move-continuous-exceed-fully-sf.html

  * igt@kms_psr2_sf@fbc-psr2-overlay-plane-move-continuous-sf:
    - shard-glk11:        NOTRUN -> [SKIP][251] ([i915#11520]) +3 other tests skip
   [251]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-glk11/igt@kms_psr2_sf@fbc-psr2-overlay-plane-move-continuous-sf.html

  * igt@kms_psr2_sf@pr-overlay-plane-update-sf-dmg-area:
    - shard-glk:          NOTRUN -> [SKIP][252] ([i915#11520]) +5 other tests skip
   [252]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-glk1/igt@kms_psr2_sf@pr-overlay-plane-update-sf-dmg-area.html

  * igt@kms_psr2_sf@psr2-cursor-plane-move-continuous-sf:
    - shard-tglu:         NOTRUN -> [SKIP][253] ([i915#11520]) +2 other tests skip
   [253]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-tglu-2/igt@kms_psr2_sf@psr2-cursor-plane-move-continuous-sf.html

  * igt@kms_psr2_sf@psr2-overlay-plane-move-continuous-exceed-fully-sf:
    - shard-glk10:        NOTRUN -> [SKIP][254] ([i915#11520]) +4 other tests skip
   [254]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-glk10/igt@kms_psr2_sf@psr2-overlay-plane-move-continuous-exceed-fully-sf.html

  * igt@kms_psr2_sf@psr2-overlay-plane-update-continuous-sf:
    - shard-tglu-1:       NOTRUN -> [SKIP][255] ([i915#11520]) +4 other tests skip
   [255]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-tglu-1/igt@kms_psr2_sf@psr2-overlay-plane-update-continuous-sf.html

  * igt@kms_psr2_sf@psr2-overlay-plane-update-sf-dmg-area:
    - shard-dg1:          NOTRUN -> [SKIP][256] ([i915#11520]) +3 other tests skip
   [256]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg1-14/igt@kms_psr2_sf@psr2-overlay-plane-update-sf-dmg-area.html

  * igt@kms_psr@fbc-pr-primary-mmap-cpu:
    - shard-dg2:          NOTRUN -> [SKIP][257] ([i915#1072] / [i915#9732]) +4 other tests skip
   [257]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-5/igt@kms_psr@fbc-pr-primary-mmap-cpu.html

  * igt@kms_psr@fbc-psr-primary-page-flip:
    - shard-tglu-1:       NOTRUN -> [SKIP][258] ([i915#9732]) +9 other tests skip
   [258]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-tglu-1/igt@kms_psr@fbc-psr-primary-page-flip.html
    - shard-dg1:          NOTRUN -> [SKIP][259] ([i915#1072] / [i915#9732]) +5 other tests skip
   [259]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg1-15/igt@kms_psr@fbc-psr-primary-page-flip.html

  * igt@kms_psr@fbc-psr2-cursor-mmap-gtt:
    - shard-glk:          NOTRUN -> [SKIP][260] +298 other tests skip
   [260]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-glk1/igt@kms_psr@fbc-psr2-cursor-mmap-gtt.html

  * igt@kms_psr@pr-cursor-render:
    - shard-mtlp:         NOTRUN -> [SKIP][261] ([i915#9688])
   [261]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-mtlp-4/igt@kms_psr@pr-cursor-render.html

  * igt@kms_psr@psr-cursor-plane-move:
    - shard-tglu:         NOTRUN -> [SKIP][262] ([i915#9732]) +10 other tests skip
   [262]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-tglu-8/igt@kms_psr@psr-cursor-plane-move.html

  * igt@kms_psr@psr2-cursor-mmap-gtt:
    - shard-rkl:          NOTRUN -> [SKIP][263] ([i915#1072] / [i915#9732]) +17 other tests skip
   [263]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-8/igt@kms_psr@psr2-cursor-mmap-gtt.html

  * igt@kms_psr_stress_test@invalidate-primary-flip-overlay:
    - shard-tglu-1:       NOTRUN -> [SKIP][264] ([i915#15949])
   [264]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-tglu-1/igt@kms_psr_stress_test@invalidate-primary-flip-overlay.html

  * igt@kms_rotation_crc@multiplane-rotation-cropping-bottom:
    - shard-glk:          NOTRUN -> [INCOMPLETE][265] ([i915#15500] / [i915#16184])
   [265]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-glk1/igt@kms_rotation_crc@multiplane-rotation-cropping-bottom.html

  * igt@kms_rotation_crc@multiplane-rotation-cropping-top:
    - shard-glk:          NOTRUN -> [INCOMPLETE][266] ([i915#15492] / [i915#16184])
   [266]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-glk3/igt@kms_rotation_crc@multiplane-rotation-cropping-top.html

  * igt@kms_rotation_crc@sprite-rotation-270:
    - shard-mtlp:         NOTRUN -> [SKIP][267] ([i915#12755] / [i915#15867])
   [267]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-mtlp-4/igt@kms_rotation_crc@sprite-rotation-270.html

  * igt@kms_selftest@drm_framebuffer:
    - shard-tglu:         NOTRUN -> [ABORT][268] ([i915#13179]) +1 other test abort
   [268]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-tglu-2/igt@kms_selftest@drm_framebuffer.html

  * igt@kms_setmode@invalid-clone-single-crtc:
    - shard-tglu:         NOTRUN -> [SKIP][269] ([i915#3555])
   [269]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-tglu-2/igt@kms_setmode@invalid-clone-single-crtc.html

  * igt@kms_tiled_display@basic-test-pattern-with-chamelium:
    - shard-rkl:          NOTRUN -> [SKIP][270] ([i915#8623])
   [270]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-4/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html

  * igt@kms_vblank@ts-continuation-dpms-suspend:
    - shard-rkl:          [PASS][271] -> [INCOMPLETE][272] ([i915#12276])
   [271]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-rkl-2/igt@kms_vblank@ts-continuation-dpms-suspend.html
   [272]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-3/igt@kms_vblank@ts-continuation-dpms-suspend.html
    - shard-glk10:        NOTRUN -> [INCOMPLETE][273] ([i915#12276] / [i915#13356]) +1 other test incomplete
   [273]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-glk10/igt@kms_vblank@ts-continuation-dpms-suspend.html

  * igt@kms_vblank@ts-continuation-dpms-suspend@pipe-a-hdmi-a-2:
    - shard-rkl:          NOTRUN -> [INCOMPLETE][274] ([i915#12276])
   [274]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-3/igt@kms_vblank@ts-continuation-dpms-suspend@pipe-a-hdmi-a-2.html

  * igt@kms_vrr@flip-basic:
    - shard-mtlp:         NOTRUN -> [SKIP][275] ([i915#3555] / [i915#8808])
   [275]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-mtlp-4/igt@kms_vrr@flip-basic.html

  * igt@kms_vrr@flip-basic-fastset:
    - shard-tglu-1:       NOTRUN -> [SKIP][276] ([i915#9906])
   [276]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-tglu-1/igt@kms_vrr@flip-basic-fastset.html

  * igt@kms_vrr@flip-dpms:
    - shard-dg2:          NOTRUN -> [SKIP][277] ([i915#15243] / [i915#3555])
   [277]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-5/igt@kms_vrr@flip-dpms.html
    - shard-rkl:          NOTRUN -> [SKIP][278] ([i915#15243] / [i915#3555])
   [278]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-4/igt@kms_vrr@flip-dpms.html

  * igt@perf_pmu@module-unload:
    - shard-glk11:        NOTRUN -> [FAIL][279] ([i915#17119])
   [279]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-glk11/igt@perf_pmu@module-unload.html

  * igt@perf_pmu@rc6-all-gts:
    - shard-rkl:          NOTRUN -> [SKIP][280] ([i915#8516])
   [280]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-7/igt@perf_pmu@rc6-all-gts.html

  * igt@perf_pmu@render-node-busy-idle@vcs1:
    - shard-dg1:          [PASS][281] -> [FAIL][282] ([i915#4349]) +3 other tests fail
   [281]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg1-15/igt@perf_pmu@render-node-busy-idle@vcs1.html
   [282]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg1-18/igt@perf_pmu@render-node-busy-idle@vcs1.html

  * igt@prime_udl@share-import:
    - shard-rkl:          NOTRUN -> [SKIP][283] ([i915#16420])
   [283]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-2/igt@prime_udl@share-import.html

  * igt@prime_udl@share-import-addfb:
    - shard-tglu:         NOTRUN -> [SKIP][284] ([i915#16420])
   [284]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-tglu-3/igt@prime_udl@share-import-addfb.html

  * igt@prime_vgem@basic-fence-mmap:
    - shard-dg1:          NOTRUN -> [SKIP][285] ([i915#3708] / [i915#4077])
   [285]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg1-15/igt@prime_vgem@basic-fence-mmap.html

  
#### Possible fixes ####

  * igt@fbdev@pan:
    - shard-snb:          [FAIL][286] ([i915#15792]) -> [PASS][287]
   [286]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-snb7/igt@fbdev@pan.html
   [287]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-snb6/igt@fbdev@pan.html

  * igt@gem_eio@hibernate:
    - shard-dg1:          [DMESG-WARN][288] ([i915#4391] / [i915#4423]) -> [PASS][289]
   [288]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg1-12/igt@gem_eio@hibernate.html
   [289]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg1-17/igt@gem_eio@hibernate.html

  * igt@gem_exec_big@single:
    - shard-rkl:          [FAIL][290] ([i915#16604]) -> [PASS][291]
   [290]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-rkl-8/igt@gem_exec_big@single.html
   [291]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-8/igt@gem_exec_big@single.html
    - shard-mtlp:         [FAIL][292] ([i915#15871]) -> [PASS][293]
   [292]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-mtlp-7/igt@gem_exec_big@single.html
   [293]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-mtlp-1/igt@gem_exec_big@single.html

  * igt@gem_exec_suspend@basic-s0:
    - shard-dg2:          [INCOMPLETE][294] ([i915#13356]) -> [PASS][295] +1 other test pass
   [294]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg2-3/igt@gem_exec_suspend@basic-s0.html
   [295]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-5/igt@gem_exec_suspend@basic-s0.html

  * igt@i915_suspend@fence-restore-tiled2untiled:
    - shard-rkl:          [INCOMPLETE][296] ([i915#4817]) -> [PASS][297]
   [296]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-rkl-3/igt@i915_suspend@fence-restore-tiled2untiled.html
   [297]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-2/igt@i915_suspend@fence-restore-tiled2untiled.html

  * igt@kms_atomic_interruptible@atomic-setmode:
    - shard-dg2:          [SKIP][298] ([i915#17356]) -> [PASS][299] +42 other tests pass
   [298]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg2-7/igt@kms_atomic_interruptible@atomic-setmode.html
   [299]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-6/igt@kms_atomic_interruptible@atomic-setmode.html

  * igt@kms_atomic_transition@plane-all-modeset-transition@pipe-a-hdmi-a-1:
    - shard-tglu:         [FAIL][300] ([i915#15662]) -> [PASS][301] +1 other test pass
   [300]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-tglu-10/igt@kms_atomic_transition@plane-all-modeset-transition@pipe-a-hdmi-a-1.html
   [301]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-tglu-7/igt@kms_atomic_transition@plane-all-modeset-transition@pipe-a-hdmi-a-1.html

  * igt@kms_color@ctm-0-75:
    - shard-dg2:          [SKIP][302] ([i915#12655] / [i915#17373]) -> [PASS][303] +1 other test pass
   [302]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg2-7/igt@kms_color@ctm-0-75.html
   [303]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-6/igt@kms_color@ctm-0-75.html

  * igt@kms_color_pipeline@plane-fixed-matrix-yuv-rgb-bt709-lim-lut1d:
    - shard-dg2:          [SKIP][304] ([i915#15529]) -> [PASS][305] +2 other tests pass
   [304]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg2-7/igt@kms_color_pipeline@plane-fixed-matrix-yuv-rgb-bt709-lim-lut1d.html
   [305]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-5/igt@kms_color_pipeline@plane-fixed-matrix-yuv-rgb-bt709-lim-lut1d.html

  * igt@kms_cursor_edge_walk@128x128-right-edge:
    - shard-dg1:          [DMESG-WARN][306] ([i915#4423]) -> [PASS][307] +1 other test pass
   [306]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg1-12/igt@kms_cursor_edge_walk@128x128-right-edge.html
   [307]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg1-17/igt@kms_cursor_edge_walk@128x128-right-edge.html

  * igt@kms_flip@flip-vs-dpms-on-nop:
    - shard-dg2:          [SKIP][308] ([i915#17358]) -> [PASS][309]
   [308]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg2-7/igt@kms_flip@flip-vs-dpms-on-nop.html
   [309]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-6/igt@kms_flip@flip-vs-dpms-on-nop.html

  * igt@kms_flip@nonexisting-fb-interruptible:
    - shard-dg2:          [SKIP][310] ([i915#5354]) -> [PASS][311] +7 other tests pass
   [310]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg2-7/igt@kms_flip@nonexisting-fb-interruptible.html
   [311]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-5/igt@kms_flip@nonexisting-fb-interruptible.html

  * igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-32bpp-4tiledg2rcccs-downscaling:
    - shard-dg2:          [SKIP][312] ([i915#3555] / [i915#8813]) -> [PASS][313] +1 other test pass
   [312]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg2-7/igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-32bpp-4tiledg2rcccs-downscaling.html
   [313]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-5/igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-32bpp-4tiledg2rcccs-downscaling.html

  * igt@kms_flip_tiling@flip-change-tiling:
    - shard-mtlp:         [DMESG-FAIL][314] ([i915#16175]) -> [PASS][315] +1 other test pass
   [314]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-mtlp-7/igt@kms_flip_tiling@flip-change-tiling.html
   [315]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-mtlp-1/igt@kms_flip_tiling@flip-change-tiling.html

  * igt@kms_flip_tiling@flip-change-tiling@pipe-a-edp-1-4-to-4-rc-ccs:
    - shard-mtlp:         [FAIL][316] ([i915#15733]) -> [PASS][317]
   [316]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-mtlp-7/igt@kms_flip_tiling@flip-change-tiling@pipe-a-edp-1-4-to-4-rc-ccs.html
   [317]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-mtlp-1/igt@kms_flip_tiling@flip-change-tiling@pipe-a-edp-1-4-to-4-rc-ccs.html

  * igt@kms_frontbuffer_tracking@fbc-1p-offscreen-pri-indfb-draw-render:
    - shard-dg2:          [SKIP][318] ([i915#16708]) -> [PASS][319]
   [318]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg2-7/igt@kms_frontbuffer_tracking@fbc-1p-offscreen-pri-indfb-draw-render.html
   [319]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-5/igt@kms_frontbuffer_tracking@fbc-1p-offscreen-pri-indfb-draw-render.html

  * igt@kms_frontbuffer_tracking@fbc-rgb565-draw-render:
    - shard-dg2:          [SKIP][320] ([i915#16708] / [i915#5354]) -> [PASS][321] +2 other tests pass
   [320]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg2-7/igt@kms_frontbuffer_tracking@fbc-rgb565-draw-render.html
   [321]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-6/igt@kms_frontbuffer_tracking@fbc-rgb565-draw-render.html

  * igt@kms_frontbuffer_tracking@fbchdr-1p-offscreen-pri-shrfb-draw-pwrite:
    - shard-rkl:          [SKIP][322] ([i915#15989]) -> [PASS][323] +4 other tests pass
   [322]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-rkl-7/igt@kms_frontbuffer_tracking@fbchdr-1p-offscreen-pri-shrfb-draw-pwrite.html
   [323]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-6/igt@kms_frontbuffer_tracking@fbchdr-1p-offscreen-pri-shrfb-draw-pwrite.html

  * igt@kms_frontbuffer_tracking@hdr-1p-primscrn-pri-shrfb-draw-render:
    - shard-glk:          [SKIP][324] -> [PASS][325] +2 other tests pass
   [324]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-glk2/igt@kms_frontbuffer_tracking@hdr-1p-primscrn-pri-shrfb-draw-render.html
   [325]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-glk8/igt@kms_frontbuffer_tracking@hdr-1p-primscrn-pri-shrfb-draw-render.html

  * igt@kms_hdmi_inject@inject-audio:
    - shard-mtlp:         [SKIP][326] ([i915#15725]) -> [PASS][327]
   [326]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-mtlp-1/igt@kms_hdmi_inject@inject-audio.html
   [327]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-mtlp-5/igt@kms_hdmi_inject@inject-audio.html

  * igt@kms_invalid_mode@bad-hsync-end:
    - shard-dg2:          [SKIP][328] ([i915#16746] / [i915#3555]) -> [PASS][329]
   [328]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg2-7/igt@kms_invalid_mode@bad-hsync-end.html
   [329]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-6/igt@kms_invalid_mode@bad-hsync-end.html

  * igt@kms_pipe_crc_basic@compare-crc-sanitycheck-nv12:
    - shard-dg2:          [SKIP][330] ([i915#11190] / [i915#17356]) -> [PASS][331]
   [330]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg2-7/igt@kms_pipe_crc_basic@compare-crc-sanitycheck-nv12.html
   [331]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-6/igt@kms_pipe_crc_basic@compare-crc-sanitycheck-nv12.html

  * igt@kms_plane@pixel-format-linear-modifier:
    - shard-dg2:          [SKIP][332] ([i915#8825]) -> [PASS][333] +1 other test pass
   [332]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg2-7/igt@kms_plane@pixel-format-linear-modifier.html
   [333]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-6/igt@kms_plane@pixel-format-linear-modifier.html

  * igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-rotation:
    - shard-dg2:          [SKIP][334] ([i915#15329] / [i915#17356] / [i915#3555] / [i915#9423]) -> [PASS][335]
   [334]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg2-7/igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-rotation.html
   [335]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-6/igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-rotation.html

  * igt@kms_plane_scaling@plane-upscale-factor-0-25-with-modifiers:
    - shard-dg2:          [SKIP][336] ([i915#15329] / [i915#17356] / [i915#9423]) -> [PASS][337] +2 other tests pass
   [336]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg2-7/igt@kms_plane_scaling@plane-upscale-factor-0-25-with-modifiers.html
   [337]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-5/igt@kms_plane_scaling@plane-upscale-factor-0-25-with-modifiers.html

  * igt@kms_plane_scaling@plane-upscale-factor-0-25-with-modifiers@pipe-c:
    - shard-dg2:          [SKIP][338] ([i915#15329]) -> [PASS][339] +17 other tests pass
   [338]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg2-7/igt@kms_plane_scaling@plane-upscale-factor-0-25-with-modifiers@pipe-c.html
   [339]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-5/igt@kms_plane_scaling@plane-upscale-factor-0-25-with-modifiers@pipe-c.html

  * igt@kms_plane_scaling@planes-upscale-factor-0-25:
    - shard-dg2:          [SKIP][340] ([i915#15329] / [i915#17356] / [i915#3555] / [i915#6953] / [i915#9423]) -> [PASS][341] +1 other test pass
   [340]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg2-7/igt@kms_plane_scaling@planes-upscale-factor-0-25.html
   [341]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-6/igt@kms_plane_scaling@planes-upscale-factor-0-25.html

  * igt@kms_plane_scaling@planes-upscale-factor-0-25@pipe-d:
    - shard-dg2:          [SKIP][342] ([i915#15329] / [i915#17356]) -> [PASS][343] +5 other tests pass
   [342]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg2-7/igt@kms_plane_scaling@planes-upscale-factor-0-25@pipe-d.html
   [343]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-6/igt@kms_plane_scaling@planes-upscale-factor-0-25@pipe-d.html

  * igt@kms_pm_rpm@dpms-lpsp:
    - shard-dg2:          [SKIP][344] ([i915#15073]) -> [PASS][345] +2 other tests pass
   [344]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg2-8/igt@kms_pm_rpm@dpms-lpsp.html
   [345]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-4/igt@kms_pm_rpm@dpms-lpsp.html

  * igt@kms_pm_rpm@dpms-mode-unset-non-lpsp:
    - shard-rkl:          [SKIP][346] ([i915#15073]) -> [PASS][347] +1 other test pass
   [346]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-rkl-5/igt@kms_pm_rpm@dpms-mode-unset-non-lpsp.html
   [347]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-7/igt@kms_pm_rpm@dpms-mode-unset-non-lpsp.html

  * igt@kms_pm_rpm@system-suspend-idle:
    - shard-rkl:          [INCOMPLETE][348] ([i915#14419]) -> [PASS][349]
   [348]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-rkl-3/igt@kms_pm_rpm@system-suspend-idle.html
   [349]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-8/igt@kms_pm_rpm@system-suspend-idle.html

  * igt@kms_selftest@drm_framebuffer@drm_test_framebuffer_create:
    - shard-glk:          [ABORT][350] ([i915#13179]) -> [PASS][351]
   [350]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-glk2/igt@kms_selftest@drm_framebuffer@drm_test_framebuffer_create.html
   [351]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-glk5/igt@kms_selftest@drm_framebuffer@drm_test_framebuffer_create.html

  * igt@kms_setmode@basic:
    - shard-dg2:          [SKIP][352] ([i915#3555]) -> [PASS][353]
   [352]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg2-7/igt@kms_setmode@basic.html
   [353]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-6/igt@kms_setmode@basic.html

  
#### Warnings ####

  * igt@api_intel_bb@crc32:
    - shard-rkl:          [SKIP][354] ([i915#14544] / [i915#6230]) -> [SKIP][355] ([i915#6230])
   [354]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-rkl-6/igt@api_intel_bb@crc32.html
   [355]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-5/igt@api_intel_bb@crc32.html

  * igt@gem_ccs@ctrl-surf-copy:
    - shard-rkl:          [SKIP][356] ([i915#14544] / [i915#3555] / [i915#9323]) -> [SKIP][357] ([i915#3555] / [i915#9323])
   [356]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-rkl-6/igt@gem_ccs@ctrl-surf-copy.html
   [357]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-5/igt@gem_ccs@ctrl-surf-copy.html

  * igt@gem_exec_reloc@basic-cpu-gtt-noreloc:
    - shard-rkl:          [SKIP][358] ([i915#14544] / [i915#3281]) -> [SKIP][359] ([i915#3281]) +2 other tests skip
   [358]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-rkl-6/igt@gem_exec_reloc@basic-cpu-gtt-noreloc.html
   [359]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-5/igt@gem_exec_reloc@basic-cpu-gtt-noreloc.html

  * igt@gem_lmem_swapping@verify:
    - shard-rkl:          [SKIP][360] ([i915#14544] / [i915#4613]) -> [SKIP][361] ([i915#4613]) +1 other test skip
   [360]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-rkl-6/igt@gem_lmem_swapping@verify.html
   [361]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-5/igt@gem_lmem_swapping@verify.html

  * igt@gem_pread@self:
    - shard-rkl:          [SKIP][362] ([i915#14544] / [i915#3282]) -> [SKIP][363] ([i915#3282]) +1 other test skip
   [362]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-rkl-6/igt@gem_pread@self.html
   [363]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-5/igt@gem_pread@self.html

  * igt@gem_userptr_blits@readonly-unsync:
    - shard-rkl:          [SKIP][364] ([i915#14544] / [i915#3297]) -> [SKIP][365] ([i915#3297])
   [364]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-rkl-6/igt@gem_userptr_blits@readonly-unsync.html
   [365]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-5/igt@gem_userptr_blits@readonly-unsync.html

  * igt@gen9_exec_parse@cmd-crossing-page:
    - shard-rkl:          [SKIP][366] ([i915#14544] / [i915#2527]) -> [SKIP][367] ([i915#2527])
   [366]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-rkl-6/igt@gen9_exec_parse@cmd-crossing-page.html
   [367]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-5/igt@gen9_exec_parse@cmd-crossing-page.html

  * igt@kms_big_fb@4-tiled-32bpp-rotate-180:
    - shard-rkl:          [SKIP][368] ([i915#14544] / [i915#5286]) -> [SKIP][369] ([i915#5286]) +1 other test skip
   [368]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-rkl-6/igt@kms_big_fb@4-tiled-32bpp-rotate-180.html
   [369]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-5/igt@kms_big_fb@4-tiled-32bpp-rotate-180.html

  * igt@kms_big_fb@4-tiled-64bpp-rotate-90:
    - shard-dg2:          [SKIP][370] ([i915#17356]) -> [SKIP][371] +1 other test skip
   [370]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg2-7/igt@kms_big_fb@4-tiled-64bpp-rotate-90.html
   [371]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-5/igt@kms_big_fb@4-tiled-64bpp-rotate-90.html

  * igt@kms_big_fb@linear-max-hw-stride-32bpp-rotate-0-hflip:
    - shard-dg2:          [SKIP][372] ([i915#3828]) -> [SKIP][373] ([i915#17356])
   [372]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg2-3/igt@kms_big_fb@linear-max-hw-stride-32bpp-rotate-0-hflip.html
   [373]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-7/igt@kms_big_fb@linear-max-hw-stride-32bpp-rotate-0-hflip.html

  * igt@kms_big_fb@x-tiled-32bpp-rotate-90:
    - shard-dg2:          [SKIP][374] -> [SKIP][375] ([i915#17356]) +1 other test skip
   [374]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg2-4/igt@kms_big_fb@x-tiled-32bpp-rotate-90.html
   [375]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-7/igt@kms_big_fb@x-tiled-32bpp-rotate-90.html
    - shard-rkl:          [SKIP][376] ([i915#14544] / [i915#3638]) -> [SKIP][377] ([i915#3638])
   [376]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-rkl-6/igt@kms_big_fb@x-tiled-32bpp-rotate-90.html
   [377]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-5/igt@kms_big_fb@x-tiled-32bpp-rotate-90.html
    - shard-dg1:          [SKIP][378] ([i915#3638] / [i915#4423]) -> [SKIP][379] ([i915#3638])
   [378]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg1-12/igt@kms_big_fb@x-tiled-32bpp-rotate-90.html
   [379]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg1-17/igt@kms_big_fb@x-tiled-32bpp-rotate-90.html

  * igt@kms_big_fb@y-tiled-8bpp-rotate-90:
    - shard-dg2:          [SKIP][380] ([i915#17356] / [i915#5190]) -> [SKIP][381] ([i915#4538] / [i915#5190]) +8 other tests skip
   [380]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg2-7/igt@kms_big_fb@y-tiled-8bpp-rotate-90.html
   [381]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-6/igt@kms_big_fb@y-tiled-8bpp-rotate-90.html

  * igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180-hflip-async-flip:
    - shard-dg2:          [SKIP][382] ([i915#4538] / [i915#5190]) -> [SKIP][383] ([i915#17356] / [i915#5190]) +8 other tests skip
   [382]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg2-4/igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180-hflip-async-flip.html
   [383]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-7/igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180-hflip-async-flip.html

  * igt@kms_big_fb@yf-tiled-16bpp-rotate-180:
    - shard-rkl:          [SKIP][384] ([i915#14544]) -> [SKIP][385] +20 other tests skip
   [384]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-rkl-6/igt@kms_big_fb@yf-tiled-16bpp-rotate-180.html
   [385]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-5/igt@kms_big_fb@yf-tiled-16bpp-rotate-180.html

  * igt@kms_ccs@bad-pixel-format-4-tiled-mtl-mc-ccs:
    - shard-dg2:          [SKIP][386] ([i915#10307] / [i915#6095]) -> [SKIP][387] ([i915#17356]) +9 other tests skip
   [386]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg2-5/igt@kms_ccs@bad-pixel-format-4-tiled-mtl-mc-ccs.html
   [387]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-7/igt@kms_ccs@bad-pixel-format-4-tiled-mtl-mc-ccs.html

  * igt@kms_ccs@bad-pixel-format-yf-tiled-ccs:
    - shard-rkl:          [SKIP][388] ([i915#14098] / [i915#14544] / [i915#6095]) -> [SKIP][389] ([i915#14098] / [i915#6095]) +3 other tests skip
   [388]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-rkl-6/igt@kms_ccs@bad-pixel-format-yf-tiled-ccs.html
   [389]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-5/igt@kms_ccs@bad-pixel-format-yf-tiled-ccs.html

  * igt@kms_ccs@crc-primary-basic-4-tiled-bmg-ccs:
    - shard-dg2:          [SKIP][390] ([i915#12313]) -> [SKIP][391] ([i915#17356])
   [390]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg2-5/igt@kms_ccs@crc-primary-basic-4-tiled-bmg-ccs.html
   [391]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-7/igt@kms_ccs@crc-primary-basic-4-tiled-bmg-ccs.html

  * igt@kms_ccs@crc-primary-basic-y-tiled-gen12-rc-ccs-cc:
    - shard-dg2:          [SKIP][392] ([i915#17356]) -> [SKIP][393] ([i915#10307] / [i915#6095]) +9 other tests skip
   [392]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg2-7/igt@kms_ccs@crc-primary-basic-y-tiled-gen12-rc-ccs-cc.html
   [393]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-6/igt@kms_ccs@crc-primary-basic-y-tiled-gen12-rc-ccs-cc.html

  * igt@kms_ccs@crc-primary-suspend-4-tiled-mtl-mc-ccs@pipe-a-edp-1:
    - shard-mtlp:         [INCOMPLETE][394] ([i915#15582]) -> [FAIL][395] ([i915#17158]) +2 other tests fail
   [394]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-mtlp-4/igt@kms_ccs@crc-primary-suspend-4-tiled-mtl-mc-ccs@pipe-a-edp-1.html
   [395]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-mtlp-8/igt@kms_ccs@crc-primary-suspend-4-tiled-mtl-mc-ccs@pipe-a-edp-1.html

  * igt@kms_ccs@crc-primary-suspend-4-tiled-mtl-rc-ccs-cc:
    - shard-dg2:          [SKIP][396] ([i915#6095]) -> [SKIP][397] ([i915#17356])
   [396]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg2-4/igt@kms_ccs@crc-primary-suspend-4-tiled-mtl-rc-ccs-cc.html
   [397]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-7/igt@kms_ccs@crc-primary-suspend-4-tiled-mtl-rc-ccs-cc.html

  * igt@kms_ccs@crc-primary-suspend-y-tiled-gen12-mc-ccs:
    - shard-dg2:          [SKIP][398] ([i915#17356]) -> [SKIP][399] ([i915#6095])
   [398]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg2-7/igt@kms_ccs@crc-primary-suspend-y-tiled-gen12-mc-ccs.html
   [399]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-6/igt@kms_ccs@crc-primary-suspend-y-tiled-gen12-mc-ccs.html

  * igt@kms_ccs@crc-sprite-planes-basic-4-tiled-dg2-rc-ccs-cc@pipe-b-hdmi-a-2:
    - shard-rkl:          [SKIP][400] ([i915#6095]) -> [SKIP][401] ([i915#14544] / [i915#6095]) +1 other test skip
   [400]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-rkl-7/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-dg2-rc-ccs-cc@pipe-b-hdmi-a-2.html
   [401]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-6/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-dg2-rc-ccs-cc@pipe-b-hdmi-a-2.html

  * igt@kms_ccs@crc-sprite-planes-basic-4-tiled-dg2-rc-ccs-cc@pipe-c-hdmi-a-2:
    - shard-rkl:          [SKIP][402] ([i915#14098] / [i915#6095]) -> [SKIP][403] ([i915#14098] / [i915#14544] / [i915#6095]) +1 other test skip
   [402]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-rkl-7/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-dg2-rc-ccs-cc@pipe-c-hdmi-a-2.html
   [403]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-6/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-dg2-rc-ccs-cc@pipe-c-hdmi-a-2.html

  * igt@kms_chamelium_color_pipeline@plane-ctm3x4:
    - shard-rkl:          [SKIP][404] ([i915#14544] / [i915#16471]) -> [SKIP][405] ([i915#16471])
   [404]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-rkl-6/igt@kms_chamelium_color_pipeline@plane-ctm3x4.html
   [405]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-4/igt@kms_chamelium_color_pipeline@plane-ctm3x4.html

  * igt@kms_chamelium_hpd@hdmi-hpd-fast:
    - shard-rkl:          [SKIP][406] ([i915#11151] / [i915#14544] / [i915#7828]) -> [SKIP][407] ([i915#11151] / [i915#7828]) +1 other test skip
   [406]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-rkl-6/igt@kms_chamelium_hpd@hdmi-hpd-fast.html
   [407]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-5/igt@kms_chamelium_hpd@hdmi-hpd-fast.html

  * igt@kms_content_protection@atomic-dpms-hdcp14:
    - shard-dg2:          [SKIP][408] ([i915#15865]) -> [SKIP][409] ([i915#17356]) +1 other test skip
   [408]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg2-3/igt@kms_content_protection@atomic-dpms-hdcp14.html
   [409]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-7/igt@kms_content_protection@atomic-dpms-hdcp14.html

  * igt@kms_content_protection@dp-mst-lic-type-1:
    - shard-dg2:          [SKIP][410] ([i915#15330] / [i915#3299]) -> [SKIP][411] ([i915#17356])
   [410]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg2-4/igt@kms_content_protection@dp-mst-lic-type-1.html
   [411]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-7/igt@kms_content_protection@dp-mst-lic-type-1.html
    - shard-rkl:          [SKIP][412] ([i915#14544] / [i915#15330] / [i915#3116]) -> [SKIP][413] ([i915#15330] / [i915#3116])
   [412]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-rkl-6/igt@kms_content_protection@dp-mst-lic-type-1.html
   [413]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-5/igt@kms_content_protection@dp-mst-lic-type-1.html

  * igt@kms_content_protection@dp-mst-type-0-suspend-resume:
    - shard-dg2:          [SKIP][414] ([i915#17356]) -> [SKIP][415] ([i915#15330])
   [414]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg2-7/igt@kms_content_protection@dp-mst-type-0-suspend-resume.html
   [415]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-6/igt@kms_content_protection@dp-mst-type-0-suspend-resume.html

  * igt@kms_content_protection@lic-type-1:
    - shard-dg2:          [SKIP][416] ([i915#17356]) -> [SKIP][417] ([i915#15865]) +1 other test skip
   [416]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg2-7/igt@kms_content_protection@lic-type-1.html
   [417]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-6/igt@kms_content_protection@lic-type-1.html

  * igt@kms_content_protection@srm:
    - shard-rkl:          [SKIP][418] ([i915#15865]) -> [SKIP][419] ([i915#14544] / [i915#15865])
   [418]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-rkl-3/igt@kms_content_protection@srm.html
   [419]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-6/igt@kms_content_protection@srm.html

  * igt@kms_cursor_crc@cursor-offscreen-512x170:
    - shard-dg2:          [SKIP][420] ([i915#17356]) -> [SKIP][421] ([i915#13049])
   [420]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg2-7/igt@kms_cursor_crc@cursor-offscreen-512x170.html
   [421]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-5/igt@kms_cursor_crc@cursor-offscreen-512x170.html

  * igt@kms_cursor_crc@cursor-random-32x10:
    - shard-dg2:          [SKIP][422] ([i915#3555]) -> [SKIP][423] ([i915#17356]) +2 other tests skip
   [422]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg2-4/igt@kms_cursor_crc@cursor-random-32x10.html
   [423]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-7/igt@kms_cursor_crc@cursor-random-32x10.html
    - shard-rkl:          [SKIP][424] ([i915#14544] / [i915#3555]) -> [SKIP][425] ([i915#3555])
   [424]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-rkl-6/igt@kms_cursor_crc@cursor-random-32x10.html
   [425]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-5/igt@kms_cursor_crc@cursor-random-32x10.html

  * igt@kms_cursor_crc@cursor-random-512x170:
    - shard-dg2:          [SKIP][426] ([i915#13049]) -> [SKIP][427] ([i915#17356]) +1 other test skip
   [426]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg2-5/igt@kms_cursor_crc@cursor-random-512x170.html
   [427]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-7/igt@kms_cursor_crc@cursor-random-512x170.html

  * igt@kms_cursor_crc@cursor-sliding-max-size:
    - shard-dg2:          [SKIP][428] ([i915#17356]) -> [SKIP][429] ([i915#3555]) +3 other tests skip
   [428]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg2-7/igt@kms_cursor_crc@cursor-sliding-max-size.html
   [429]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-5/igt@kms_cursor_crc@cursor-sliding-max-size.html

  * igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy:
    - shard-rkl:          [SKIP][430] ([i915#14544] / [i915#4103]) -> [SKIP][431] ([i915#4103])
   [430]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-rkl-6/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html
   [431]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-5/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html
    - shard-dg2:          [SKIP][432] ([i915#4103]) -> [SKIP][433] ([i915#11190] / [i915#17356])
   [432]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg2-4/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html
   [433]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-7/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html

  * igt@kms_cursor_legacy@cursorb-vs-flipa-atomic-transitions-varying-size:
    - shard-dg2:          [SKIP][434] ([i915#13046] / [i915#5354]) -> [SKIP][435] ([i915#17356]) +2 other tests skip
   [434]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg2-5/igt@kms_cursor_legacy@cursorb-vs-flipa-atomic-transitions-varying-size.html
   [435]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-7/igt@kms_cursor_legacy@cursorb-vs-flipa-atomic-transitions-varying-size.html

  * igt@kms_cursor_legacy@cursorb-vs-flipb-legacy:
    - shard-dg2:          [SKIP][436] ([i915#17356]) -> [SKIP][437] ([i915#13046] / [i915#5354]) +4 other tests skip
   [436]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg2-7/igt@kms_cursor_legacy@cursorb-vs-flipb-legacy.html
   [437]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-5/igt@kms_cursor_legacy@cursorb-vs-flipb-legacy.html

  * igt@kms_cursor_legacy@short-busy-flip-before-cursor-toggle:
    - shard-dg2:          [SKIP][438] ([i915#4103]) -> [SKIP][439] ([i915#17356])
   [438]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg2-5/igt@kms_cursor_legacy@short-busy-flip-before-cursor-toggle.html
   [439]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-7/igt@kms_cursor_legacy@short-busy-flip-before-cursor-toggle.html

  * igt@kms_display_modes@extended-mode-basic:
    - shard-dg2:          [SKIP][440] ([i915#17356]) -> [SKIP][441] ([i915#13691])
   [440]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg2-7/igt@kms_display_modes@extended-mode-basic.html
   [441]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-5/igt@kms_display_modes@extended-mode-basic.html

  * igt@kms_dp_link_training@non-uhbr-mst:
    - shard-dg2:          [SKIP][442] ([i915#17289]) -> [SKIP][443] ([i915#17356])
   [442]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg2-4/igt@kms_dp_link_training@non-uhbr-mst.html
   [443]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-7/igt@kms_dp_link_training@non-uhbr-mst.html
    - shard-rkl:          [SKIP][444] ([i915#14544] / [i915#17289]) -> [SKIP][445] ([i915#17289])
   [444]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-rkl-6/igt@kms_dp_link_training@non-uhbr-mst.html
   [445]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-5/igt@kms_dp_link_training@non-uhbr-mst.html

  * igt@kms_dp_link_training@non-uhbr-sst-tbtalt-train:
    - shard-dg2:          [SKIP][446] ([i915#17356]) -> [SKIP][447] ([i915#17290])
   [446]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg2-7/igt@kms_dp_link_training@non-uhbr-sst-tbtalt-train.html
   [447]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-6/igt@kms_dp_link_training@non-uhbr-sst-tbtalt-train.html

  * igt@kms_dp_link_training@uhbr-mst-tbtalt-train:
    - shard-dg2:          [SKIP][448] ([i915#17285]) -> [SKIP][449] ([i915#17356])
   [448]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg2-3/igt@kms_dp_link_training@uhbr-mst-tbtalt-train.html
   [449]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-7/igt@kms_dp_link_training@uhbr-mst-tbtalt-train.html

  * igt@kms_dp_linktrain_fallback@dsc-fallback:
    - shard-rkl:          [SKIP][450] ([i915#13707] / [i915#14544]) -> [SKIP][451] ([i915#13707])
   [450]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-rkl-6/igt@kms_dp_linktrain_fallback@dsc-fallback.html
   [451]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-4/igt@kms_dp_linktrain_fallback@dsc-fallback.html

  * igt@kms_draw_crc@draw-method-mmap-gtt:
    - shard-dg2:          [SKIP][452] ([i915#8812]) -> [SKIP][453] ([i915#17356])
   [452]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg2-3/igt@kms_draw_crc@draw-method-mmap-gtt.html
   [453]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-7/igt@kms_draw_crc@draw-method-mmap-gtt.html

  * igt@kms_dsc@dsc-fractional-bpp-ultrajoiner:
    - shard-dg2:          [SKIP][454] ([i915#16361]) -> [SKIP][455] ([i915#17356])
   [454]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg2-5/igt@kms_dsc@dsc-fractional-bpp-ultrajoiner.html
   [455]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-7/igt@kms_dsc@dsc-fractional-bpp-ultrajoiner.html

  * igt@kms_dsc@dsc-with-output-formats-ultrajoiner:
    - shard-dg2:          [SKIP][456] ([i915#17356]) -> [SKIP][457] ([i915#16361]) +3 other tests skip
   [456]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg2-7/igt@kms_dsc@dsc-with-output-formats-ultrajoiner.html
   [457]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-5/igt@kms_dsc@dsc-with-output-formats-ultrajoiner.html

  * igt@kms_feature_discovery@chamelium:
    - shard-rkl:          [SKIP][458] ([i915#14544] / [i915#16084]) -> [SKIP][459] ([i915#16084])
   [458]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-rkl-6/igt@kms_feature_discovery@chamelium.html
   [459]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-5/igt@kms_feature_discovery@chamelium.html

  * igt@kms_flip@2x-flip-vs-expired-vblank-interruptible:
    - shard-rkl:          [SKIP][460] ([i915#14544] / [i915#9934]) -> [SKIP][461] ([i915#9934]) +1 other test skip
   [460]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-rkl-6/igt@kms_flip@2x-flip-vs-expired-vblank-interruptible.html
   [461]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-5/igt@kms_flip@2x-flip-vs-expired-vblank-interruptible.html

  * igt@kms_flip@flip-vs-suspend:
    - shard-rkl:          [INCOMPLETE][462] ([i915#16276] / [i915#6113]) -> [ABORT][463] ([i915#15132] / [i915#16925]) +1 other test abort
   [462]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-rkl-4/igt@kms_flip@flip-vs-suspend.html
   [463]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-1/igt@kms_flip@flip-vs-suspend.html
    - shard-glk:          [INCOMPLETE][464] ([i915#12314] / [i915#12745] / [i915#13356] / [i915#17183] / [i915#4839]) -> [INCOMPLETE][465] ([i915#12745] / [i915#13356] / [i915#17183] / [i915#4839])
   [464]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-glk8/igt@kms_flip@flip-vs-suspend.html
   [465]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-glk4/igt@kms_flip@flip-vs-suspend.html

  * igt@kms_flip@flip-vs-suspend@a-hdmi-a1:
    - shard-glk:          [INCOMPLETE][466] ([i915#12314] / [i915#12745] / [i915#13356] / [i915#17183]) -> [INCOMPLETE][467] ([i915#12745] / [i915#13356] / [i915#17183])
   [466]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-glk8/igt@kms_flip@flip-vs-suspend@a-hdmi-a1.html
   [467]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-glk4/igt@kms_flip@flip-vs-suspend@a-hdmi-a1.html

  * igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-32bpp-yftileccs-downscaling:
    - shard-rkl:          [SKIP][468] ([i915#14544] / [i915#15643]) -> [SKIP][469] ([i915#15643])
   [468]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-rkl-6/igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-32bpp-yftileccs-downscaling.html
   [469]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-5/igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-32bpp-yftileccs-downscaling.html

  * igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-upscaling:
    - shard-rkl:          [SKIP][470] ([i915#15643]) -> [SKIP][471] ([i915#14544] / [i915#15643])
   [470]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-rkl-3/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-upscaling.html
   [471]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-6/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-upscaling.html

  * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-pri-shrfb-draw-mmap-wc:
    - shard-dg2:          [SKIP][472] ([i915#15990] / [i915#8708]) -> [SKIP][473] ([i915#16708] / [i915#5354]) +13 other tests skip
   [472]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg2-5/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-pri-shrfb-draw-mmap-wc.html
   [473]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-7/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-pri-shrfb-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-draw-mmap-wc:
    - shard-dg2:          [SKIP][474] ([i915#16708] / [i915#5354]) -> [SKIP][475] ([i915#15990] / [i915#8708]) +13 other tests skip
   [474]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg2-7/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-draw-mmap-wc.html
   [475]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-6/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-indfb-plflip-blt:
    - shard-dg2:          [SKIP][476] ([i915#15991] / [i915#5354]) -> [SKIP][477] ([i915#16708] / [i915#5354]) +20 other tests skip
   [476]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg2-5/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-indfb-plflip-blt.html
   [477]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-7/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-indfb-plflip-blt.html

  * igt@kms_frontbuffer_tracking@fbc-tiling-y:
    - shard-dg2:          [SKIP][478] ([i915#16708] / [i915#5354]) -> [SKIP][479] ([i915#10055])
   [478]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg2-7/igt@kms_frontbuffer_tracking@fbc-tiling-y.html
   [479]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-6/igt@kms_frontbuffer_tracking@fbc-tiling-y.html

  * igt@kms_frontbuffer_tracking@fbcpsr-1p-offscreen-pri-shrfb-draw-blt:
    - shard-dg2:          [SKIP][480] ([i915#16708]) -> [SKIP][481] ([i915#15102]) +15 other tests skip
   [480]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg2-7/igt@kms_frontbuffer_tracking@fbcpsr-1p-offscreen-pri-shrfb-draw-blt.html
   [481]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-6/igt@kms_frontbuffer_tracking@fbcpsr-1p-offscreen-pri-shrfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@fbcpsr-1p-rte:
    - shard-rkl:          [SKIP][482] ([i915#14544] / [i915#15102]) -> [SKIP][483] ([i915#15102]) +15 other tests skip
   [482]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-rkl-6/igt@kms_frontbuffer_tracking@fbcpsr-1p-rte.html
   [483]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-5/igt@kms_frontbuffer_tracking@fbcpsr-1p-rte.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-shrfb-draw-mmap-gtt:
    - shard-rkl:          [SKIP][484] ([i915#14544] / [i915#1825]) -> [SKIP][485] ([i915#1825]) +1 other test skip
   [484]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-rkl-6/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-shrfb-draw-mmap-gtt.html
   [485]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-5/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-shrfb-draw-mmap-gtt.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-draw-mmap-gtt:
    - shard-dg1:          [SKIP][486] ([i915#15990] / [i915#8708]) -> [SKIP][487] ([i915#15990] / [i915#4423] / [i915#8708])
   [486]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg1-19/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-draw-mmap-gtt.html
   [487]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg1-16/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-draw-mmap-gtt.html

  * igt@kms_frontbuffer_tracking@fbcpsr-rgb565-draw-blt:
    - shard-dg2:          [SKIP][488] ([i915#15102]) -> [SKIP][489] ([i915#16708] / [i915#5354]) +11 other tests skip
   [488]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg2-3/igt@kms_frontbuffer_tracking@fbcpsr-rgb565-draw-blt.html
   [489]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-7/igt@kms_frontbuffer_tracking@fbcpsr-rgb565-draw-blt.html

  * igt@kms_frontbuffer_tracking@fbcpsrhdr-2p-shrfb-fliptrack-mmap-gtt:
    - shard-dg2:          [SKIP][490] ([i915#16708]) -> [SKIP][491] ([i915#15990]) +13 other tests skip
   [490]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg2-7/igt@kms_frontbuffer_tracking@fbcpsrhdr-2p-shrfb-fliptrack-mmap-gtt.html
   [491]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-6/igt@kms_frontbuffer_tracking@fbcpsrhdr-2p-shrfb-fliptrack-mmap-gtt.html

  * igt@kms_frontbuffer_tracking@hdr-1p-primscrn-indfb-msflip-blt:
    - shard-dg2:          [SKIP][492] ([i915#15989]) -> [SKIP][493] ([i915#16708]) +10 other tests skip
   [492]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg2-5/igt@kms_frontbuffer_tracking@hdr-1p-primscrn-indfb-msflip-blt.html
   [493]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-7/igt@kms_frontbuffer_tracking@hdr-1p-primscrn-indfb-msflip-blt.html

  * igt@kms_frontbuffer_tracking@hdr-1p-primscrn-pri-shrfb-draw-mmap-cpu:
    - shard-dg2:          [SKIP][494] ([i915#16708]) -> [SKIP][495] ([i915#15989]) +11 other tests skip
   [494]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg2-7/igt@kms_frontbuffer_tracking@hdr-1p-primscrn-pri-shrfb-draw-mmap-cpu.html
   [495]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-6/igt@kms_frontbuffer_tracking@hdr-1p-primscrn-pri-shrfb-draw-mmap-cpu.html

  * igt@kms_frontbuffer_tracking@pipe-fbc-rte:
    - shard-dg2:          [SKIP][496] ([i915#16708] / [i915#4342] / [i915#5354]) -> [SKIP][497] ([i915#9766])
   [496]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg2-7/igt@kms_frontbuffer_tracking@pipe-fbc-rte.html
   [497]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-6/igt@kms_frontbuffer_tracking@pipe-fbc-rte.html

  * igt@kms_frontbuffer_tracking@psr-1p-offscreen-pri-indfb-draw-blt:
    - shard-rkl:          [SKIP][498] ([i915#15102]) -> [SKIP][499] ([i915#14544] / [i915#15102]) +1 other test skip
   [498]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-rkl-7/igt@kms_frontbuffer_tracking@psr-1p-offscreen-pri-indfb-draw-blt.html
   [499]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-6/igt@kms_frontbuffer_tracking@psr-1p-offscreen-pri-indfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@psr-1p-offscreen-pri-indfb-draw-mmap-gtt:
    - shard-dg2:          [SKIP][500] ([i915#15104] / [i915#15990]) -> [SKIP][501] ([i915#16708]) +1 other test skip
   [500]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg2-3/igt@kms_frontbuffer_tracking@psr-1p-offscreen-pri-indfb-draw-mmap-gtt.html
   [501]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-7/igt@kms_frontbuffer_tracking@psr-1p-offscreen-pri-indfb-draw-mmap-gtt.html

  * igt@kms_frontbuffer_tracking@psr-1p-rte:
    - shard-dg2:          [SKIP][502] ([i915#16708] / [i915#5354]) -> [SKIP][503] ([i915#15102]) +8 other tests skip
   [502]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg2-7/igt@kms_frontbuffer_tracking@psr-1p-rte.html
   [503]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-6/igt@kms_frontbuffer_tracking@psr-1p-rte.html

  * igt@kms_frontbuffer_tracking@psr-2p-scndscrn-cur-indfb-draw-blt:
    - shard-rkl:          [SKIP][504] -> [SKIP][505] ([i915#14544]) +4 other tests skip
   [504]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-rkl-7/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-cur-indfb-draw-blt.html
   [505]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-6/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-cur-indfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@psr-2p-scndscrn-indfb-plflip-blt:
    - shard-dg2:          [SKIP][506] ([i915#16708] / [i915#5354]) -> [SKIP][507] ([i915#15991] / [i915#5354]) +19 other tests skip
   [506]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg2-7/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-indfb-plflip-blt.html
   [507]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-6/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-indfb-plflip-blt.html

  * igt@kms_frontbuffer_tracking@psrhdr-2p-primscrn-pri-shrfb-draw-mmap-gtt:
    - shard-dg2:          [SKIP][508] ([i915#15990]) -> [SKIP][509] ([i915#16708]) +12 other tests skip
   [508]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg2-5/igt@kms_frontbuffer_tracking@psrhdr-2p-primscrn-pri-shrfb-draw-mmap-gtt.html
   [509]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-7/igt@kms_frontbuffer_tracking@psrhdr-2p-primscrn-pri-shrfb-draw-mmap-gtt.html

  * igt@kms_frontbuffer_tracking@psrhdr-2p-primscrn-pri-shrfb-draw-pwrite:
    - shard-dg1:          [SKIP][510] ([i915#4423]) -> [SKIP][511]
   [510]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg1-12/igt@kms_frontbuffer_tracking@psrhdr-2p-primscrn-pri-shrfb-draw-pwrite.html
   [511]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg1-17/igt@kms_frontbuffer_tracking@psrhdr-2p-primscrn-pri-shrfb-draw-pwrite.html

  * igt@kms_frontbuffer_tracking@psrhdr-2p-scndscrn-pri-shrfb-draw-blt:
    - shard-dg2:          [SKIP][512] ([i915#15991]) -> [SKIP][513] ([i915#16708]) +27 other tests skip
   [512]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg2-5/igt@kms_frontbuffer_tracking@psrhdr-2p-scndscrn-pri-shrfb-draw-blt.html
   [513]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-7/igt@kms_frontbuffer_tracking@psrhdr-2p-scndscrn-pri-shrfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@psrhdr-2p-scndscrn-pri-shrfb-draw-render:
    - shard-dg2:          [SKIP][514] ([i915#16708]) -> [SKIP][515] ([i915#15991]) +27 other tests skip
   [514]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg2-7/igt@kms_frontbuffer_tracking@psrhdr-2p-scndscrn-pri-shrfb-draw-render.html
   [515]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-6/igt@kms_frontbuffer_tracking@psrhdr-2p-scndscrn-pri-shrfb-draw-render.html

  * igt@kms_frontbuffer_tracking@psrhdr-slowdraw:
    - shard-dg2:          [SKIP][516] ([i915#15102]) -> [SKIP][517] ([i915#16708]) +18 other tests skip
   [516]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg2-5/igt@kms_frontbuffer_tracking@psrhdr-slowdraw.html
   [517]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-7/igt@kms_frontbuffer_tracking@psrhdr-slowdraw.html

  * igt@kms_hdr@bpc-switch:
    - shard-dg2:          [SKIP][518] ([i915#16518] / [i915#3555] / [i915#8228]) -> [SKIP][519] ([i915#17356]) +1 other test skip
   [518]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg2-5/igt@kms_hdr@bpc-switch.html
   [519]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-7/igt@kms_hdr@bpc-switch.html

  * igt@kms_hdr@bpc-switch-suspend:
    - shard-rkl:          [SKIP][520] ([i915#16644] / [i915#3555] / [i915#8228]) -> [INCOMPLETE][521] ([i915#15436])
   [520]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-rkl-7/igt@kms_hdr@bpc-switch-suspend.html
   [521]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-6/igt@kms_hdr@bpc-switch-suspend.html

  * igt@kms_hdr@static-swap:
    - shard-dg2:          [SKIP][522] ([i915#17356]) -> [SKIP][523] ([i915#16518] / [i915#3555] / [i915#8228]) +1 other test skip
   [522]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg2-7/igt@kms_hdr@static-swap.html
   [523]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-6/igt@kms_hdr@static-swap.html

  * igt@kms_mst@mst-suspend-read-crc:
    - shard-dg2:          [SKIP][524] ([i915#16451]) -> [SKIP][525] ([i915#17356])
   [524]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg2-3/igt@kms_mst@mst-suspend-read-crc.html
   [525]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-7/igt@kms_mst@mst-suspend-read-crc.html

  * igt@kms_plane@pixel-format-4-tiled-dg2-mc-ccs-modifier-source-clamping:
    - shard-rkl:          [SKIP][526] ([i915#14544] / [i915#15709]) -> [SKIP][527] ([i915#15709]) +1 other test skip
   [526]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-rkl-6/igt@kms_plane@pixel-format-4-tiled-dg2-mc-ccs-modifier-source-clamping.html
   [527]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-5/igt@kms_plane@pixel-format-4-tiled-dg2-mc-ccs-modifier-source-clamping.html
    - shard-dg1:          [SKIP][528] ([i915#15709] / [i915#4423]) -> [SKIP][529] ([i915#15709])
   [528]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg1-12/igt@kms_plane@pixel-format-4-tiled-dg2-mc-ccs-modifier-source-clamping.html
   [529]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg1-17/igt@kms_plane@pixel-format-4-tiled-dg2-mc-ccs-modifier-source-clamping.html

  * igt@kms_plane_lowres@tiling-y:
    - shard-dg2:          [SKIP][530] ([i915#17356]) -> [SKIP][531] ([i915#8821])
   [530]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg2-7/igt@kms_plane_lowres@tiling-y.html
   [531]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-6/igt@kms_plane_lowres@tiling-y.html

  * igt@kms_plane_multiple@2x-tiling-x:
    - shard-dg2:          [SKIP][532] ([i915#17356]) -> [SKIP][533] ([i915#13958])
   [532]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg2-7/igt@kms_plane_multiple@2x-tiling-x.html
   [533]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-6/igt@kms_plane_multiple@2x-tiling-x.html

  * igt@kms_pm_backlight@fade-with-dpms:
    - shard-rkl:          [SKIP][534] ([i915#12343] / [i915#14544] / [i915#5354]) -> [SKIP][535] ([i915#12343] / [i915#5354])
   [534]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-rkl-6/igt@kms_pm_backlight@fade-with-dpms.html
   [535]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-5/igt@kms_pm_backlight@fade-with-dpms.html

  * igt@kms_pm_dc@dc5-pageflip-negative:
    - shard-rkl:          [SKIP][536] ([i915#14544] / [i915#9685]) -> [SKIP][537] ([i915#9685])
   [536]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-rkl-6/igt@kms_pm_dc@dc5-pageflip-negative.html
   [537]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-5/igt@kms_pm_dc@dc5-pageflip-negative.html

  * igt@kms_psr2_sf@fbc-psr2-cursor-plane-move-continuous-sf:
    - shard-rkl:          [SKIP][538] ([i915#11520]) -> [SKIP][539] ([i915#11520] / [i915#14544]) +1 other test skip
   [538]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-rkl-3/igt@kms_psr2_sf@fbc-psr2-cursor-plane-move-continuous-sf.html
   [539]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-6/igt@kms_psr2_sf@fbc-psr2-cursor-plane-move-continuous-sf.html

  * igt@kms_psr2_sf@psr2-overlay-plane-move-continuous-sf:
    - shard-rkl:          [SKIP][540] ([i915#11520] / [i915#14544]) -> [SKIP][541] ([i915#11520])
   [540]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-rkl-6/igt@kms_psr2_sf@psr2-overlay-plane-move-continuous-sf.html
   [541]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-5/igt@kms_psr2_sf@psr2-overlay-plane-move-continuous-sf.html

  * igt@kms_psr2_su@page_flip-xrgb8888:
    - shard-rkl:          [SKIP][542] ([i915#14544] / [i915#9683]) -> [SKIP][543] ([i915#9683])
   [542]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-rkl-6/igt@kms_psr2_su@page_flip-xrgb8888.html
   [543]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-5/igt@kms_psr2_su@page_flip-xrgb8888.html

  * igt@kms_psr@pr-cursor-render:
    - shard-rkl:          [SKIP][544] ([i915#1072] / [i915#14544] / [i915#9732]) -> [SKIP][545] ([i915#1072] / [i915#9732]) +3 other tests skip
   [544]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-rkl-6/igt@kms_psr@pr-cursor-render.html
   [545]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-5/igt@kms_psr@pr-cursor-render.html

  * igt@kms_rotation_crc@exhaust-fences:
    - shard-dg2:          [SKIP][546] ([i915#17356]) -> [SKIP][547] ([i915#4235])
   [546]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg2-7/igt@kms_rotation_crc@exhaust-fences.html
   [547]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-6/igt@kms_rotation_crc@exhaust-fences.html

  * igt@kms_rotation_crc@primary-y-tiled-reflect-x-0:
    - shard-dg2:          [SKIP][548] ([i915#5190]) -> [SKIP][549] ([i915#17356] / [i915#5190]) +1 other test skip
   [548]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg2-5/igt@kms_rotation_crc@primary-y-tiled-reflect-x-0.html
   [549]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-7/igt@kms_rotation_crc@primary-y-tiled-reflect-x-0.html

  * igt@kms_rotation_crc@primary-y-tiled-reflect-x-90:
    - shard-dg2:          [SKIP][550] ([i915#17356] / [i915#5190]) -> [SKIP][551] ([i915#12755] / [i915#15867] / [i915#5190])
   [550]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg2-7/igt@kms_rotation_crc@primary-y-tiled-reflect-x-90.html
   [551]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-6/igt@kms_rotation_crc@primary-y-tiled-reflect-x-90.html

  * igt@kms_rotation_crc@primary-yf-tiled-reflect-x-0:
    - shard-dg2:          [SKIP][552] ([i915#17356] / [i915#5190]) -> [SKIP][553] ([i915#5190])
   [552]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg2-7/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-0.html
   [553]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-5/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-0.html

  * igt@kms_rotation_crc@sprite-rotation-270:
    - shard-dg2:          [SKIP][554] ([i915#12755] / [i915#15867]) -> [SKIP][555] ([i915#17356])
   [554]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg2-4/igt@kms_rotation_crc@sprite-rotation-270.html
   [555]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-7/igt@kms_rotation_crc@sprite-rotation-270.html

  * igt@kms_selftest@drm_framebuffer@drm_test_framebuffer_free:
    - shard-glk:          [DMESG-FAIL][556] ([i915#13179]) -> [ABORT][557] ([i915#13179])
   [556]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-glk2/igt@kms_selftest@drm_framebuffer@drm_test_framebuffer_free.html
   [557]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-glk5/igt@kms_selftest@drm_framebuffer@drm_test_framebuffer_free.html

  * igt@kms_tiled_display@basic-test-pattern:
    - shard-dg2:          [SKIP][558] ([i915#8623]) -> [SKIP][559] ([i915#17356])
   [558]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg2-5/igt@kms_tiled_display@basic-test-pattern.html
   [559]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-7/igt@kms_tiled_display@basic-test-pattern.html

  * igt@kms_vrr@flip-basic:
    - shard-dg2:          [SKIP][560] ([i915#15243] / [i915#3555]) -> [SKIP][561] ([i915#17356])
   [560]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-dg2-4/igt@kms_vrr@flip-basic.html
   [561]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-dg2-7/igt@kms_vrr@flip-basic.html
    - shard-rkl:          [SKIP][562] ([i915#14544] / [i915#15243] / [i915#3555]) -> [SKIP][563] ([i915#15243] / [i915#3555])
   [562]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19362/shard-rkl-6/igt@kms_vrr@flip-basic.html
   [563]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/shard-rkl-5/igt@kms_vrr@flip-basic.html

  
  [i915#10055]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10055
  [i915#10056]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10056
  [i915#10307]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10307
  [i915#10434]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10434
  [i915#10553]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10553
  [i915#1072]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1072
  [i915#11078]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11078
  [i915#11151]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11151
  [i915#11190]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11190
  [i915#11520]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11520
  [i915#11527]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11527
  [i915#11681]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11681
  [i915#118]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/118
  [i915#11814]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11814
  [i915#12276]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12276
  [i915#12313]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12313
  [i915#12314]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12314
  [i915#12343]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12343
  [i915#12454]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12454
  [i915#1257]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1257
  [i915#12655]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12655
  [i915#12712]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12712
  [i915#12745]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12745
  [i915#12755]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12755
  [i915#12805]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12805
  [i915#13008]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13008
  [i915#13046]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13046
  [i915#13049]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13049
  [i915#13179]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13179
  [i915#13356]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13356
  [i915#13691]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13691
  [i915#13707]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13707
  [i915#13781]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13781
  [i915#13809]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13809
  [i915#13958]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13958
  [i915#14098]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14098
  [i915#14123]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14123
  [i915#14419]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14419
  [i915#14544]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14544
  [i915#14586]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14586
  [i915#14600]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14600
  [i915#14694]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14694
  [i915#14712]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14712
  [i915#15073]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15073
  [i915#15102]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15102
  [i915#15104]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15104
  [i915#15132]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15132
  [i915#15243]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15243
  [i915#15329]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15329
  [i915#15330]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15330
  [i915#15342]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15342
  [i915#15347]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15347
  [i915#15403]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15403
  [i915#15436]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15436
  [i915#15458]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15458
  [i915#15459]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15459
  [i915#15460]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15460
  [i915#15492]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15492
  [i915#15500]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15500
  [i915#15529]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15529
  [i915#15582]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15582
  [i915#15638]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15638
  [i915#15643]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15643
  [i915#15662]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15662
  [i915#15678]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15678
  [i915#15709]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15709
  [i915#15722]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15722
  [i915#15725]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15725
  [i915#15733]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15733
  [i915#15739]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15739
  [i915#15792]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15792
  [i915#15815]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15815
  [i915#15865]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15865
  [i915#15867]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15867
  [i915#15871]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15871
  [i915#15948]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15948
  [i915#15949]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15949
  [i915#15989]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15989
  [i915#15990]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15990
  [i915#15991]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15991
  [i915#16079]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/16079
  [i915#16081]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/16081
  [i915#16084]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/16084
  [i915#16175]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/16175
  [i915#16182]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/16182
  [i915#16184]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/16184
  [i915#16226]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/16226
  [i915#16276]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/16276
  [i915#16348]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/16348
  [i915#16361]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/16361
  [i915#16386]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/16386
  [i915#16396]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/16396
  [i915#16420]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/16420
  [i915#16451]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/16451
  [i915#16471]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/16471
  [i915#16518]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/16518
  [i915#16593]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/16593
  [i915#16599]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/16599
  [i915#16604]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/16604
  [i915#16644]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/16644
  [i915#16708]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/16708
  [i915#16746]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/16746
  [i915#16925]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/16925
  [i915#16990]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/16990
  [i915#17076]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/17076
  [i915#17103]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/17103
  [i915#17119]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/17119
  [i915#17133]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/17133
  [i915#17158]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/17158
  [i915#17183]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/17183
  [i915#17190]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/17190
  [i915#17285]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/17285
  [i915#17289]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/17289
  [i915#17290]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/17290
  [i915#17291]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/17291
  [i915#17356]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/17356
  [i915#17357]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/17357
  [i915#17358]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/17358
  [i915#17373]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/17373
  [i915#1825]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1825
  [i915#1849]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1849
  [i915#2527]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2527
  [i915#2582]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2582
  [i915#2658]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2658
  [i915#280]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/280
  [i915#2856]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2856
  [i915#3116]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3116
  [i915#3281]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3281
  [i915#3282]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3282
  [i915#3297]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3297
  [i915#3299]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3299
  [i915#3539]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3539
  [i915#3555]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3555
  [i915#3637]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3637
  [i915#3638]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3638
  [i915#3708]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3708
  [i915#3742]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3742
  [i915#3804]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3804
  [i915#3828]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3828
  [i915#4077]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4077
  [i915#4079]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4079
  [i915#4083]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4083
  [i915#4103]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4103
  [i915#4235]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4235
  [i915#4270]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4270
  [i915#4342]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4342
  [i915#4349]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4349
  [i915#4391]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4391
  [i915#4423]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4423
  [i915#4525]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4525
  [i915#4538]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4538
  [i915#4613]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4613
  [i915#4771]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4771
  [i915#4812]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4812
  [i915#4817]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4817
  [i915#4839]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4839
  [i915#4852]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4852
  [i915#5190]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5190
  [i915#5286]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5286
  [i915#5354]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5354
  [i915#5439]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5439
  [i915#5956]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5956
  [i915#6095]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6095
  [i915#6113]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6113
  [i915#6230]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6230
  [i915#6301]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6301
  [i915#6524]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6524
  [i915#6621]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6621
  [i915#6953]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6953
  [i915#7582]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7582
  [i915#7828]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7828
  [i915#7975]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7975
  [i915#7984]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7984
  [i915#8228]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8228
  [i915#8399]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8399
  [i915#8516]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8516
  [i915#8555]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8555
  [i915#8623]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8623
  [i915#8708]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8708
  [i915#8808]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8808
  [i915#8812]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8812
  [i915#8813]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8813
  [i915#8821]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8821
  [i915#8825]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8825
  [i915#9323]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9323
  [i915#9340]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9340
  [i915#9423]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9423
  [i915#9683]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9683
  [i915#9685]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9685
  [i915#9688]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9688
  [i915#9723]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9723
  [i915#9732]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9732
  [i915#9766]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9766
  [i915#9812]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9812
  [i915#9906]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9906
  [i915#9934]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9934


Build changes
-------------

  * Linux: CI_DRM_19362 -> Patchwork_176400v1

  CI-20190529: 20190529
  CI_DRM_19362: a16b0e27155a8187d222dc914932a2d244d254b2 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGT_9150: 18811c476bfde62ffbb4c0af55cd6f57e36e0dca @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  Patchwork_176400v1: a16b0e27155a8187d222dc914932a2d244d254b2 @ git://anongit.freedesktop.org/gfx-ci/linux
  piglit_4509: fdc5a4ca11124ab8413c7988896eec4c97336694 @ git://anongit.freedesktop.org/piglit

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v1/index.html

[-- Attachment #2: Type: text/html, Size: 190588 bytes --]

^ permalink raw reply	[flat|nested] 35+ messages in thread

* Re: [PATCH 15/15] drm/i915/pfit: Allow downscaling on i966+
  2026-10-19 14:47   ` sashiko-bot
@ 2026-10-20 18:31     ` Ville Syrjälä
  0 siblings, 0 replies; 35+ messages in thread
From: Ville Syrjälä @ 2026-10-20 18:31 UTC (permalink / raw)
  To: sashiko-reviews; +Cc: intel-gfx, intel-xe

On Mon, Oct 19, 2026 at 02:47:56PM +0000, sashiko-bot@kernel.org wrote:
> Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
> - [Medium] drm/i915/pfit: off-by-one max_scale in i9xx_pfit_check_scaling()
> --
> 
> commit c5496f644982a254aa09057b7c02f1bea3cb5b18
> Author: Ville Syrjälä <ville.syrjala@linux.intel.com>
> 
> drm/i915/pfit: Allow downscaling on i966+
> 
> This commit updates i9xx_pfit_check_scaling() to raise max_scale to 0x20000 on
> DISPLAY_VER(display) >= 4 platforms to permit panel fitter downscaling.
> 
> > diff --git a/drivers/gpu/drm/i915/display/intel_pfit.c b/drivers/gpu/drm/i915/display/intel_pfit.c
> > index 6eb457047bf4c..2b6706c7af534 100644
> > --- a/drivers/gpu/drm/i915/display/intel_pfit.c
> > +++ b/drivers/gpu/drm/i915/display/intel_pfit.c
> > @@ -563,7 +563,10 @@ static int i9xx_pfit_check_scaling(const struct intel_crtc_state *crtc_state)
> >  	int hscale, vscale, max_scale;
> >  	struct drm_rect src;
> >  
> > -	max_scale = 0x10000;
> > +	if (DISPLAY_VER(display) >= 4)
> > +		max_scale = 0x20000;
> > +	else
> > +		max_scale = 0x10000;
> >  
> >  	drm_rect_init(&src, 0, 0, pipe_src_w << 16, pipe_src_h << 16);
> >  
> 
> [Severity: Medium]
> Should max_scale be 0x20000 - 1 (or 0x1fff0) rather than 0x20000 here?

I guess I'll just go with 0x20000-1 for now. I suppose that isn't
100% correct because it doesn't match the hardware precision, but
then again neither does the rounding done by drm_rect_{h,v}scale().
The same issue actually exist in the ILK+ pfit and SKL+ scaler
code as well, though in that case the hw precision is .15. I think
what we should do is perform the check using the hardware precision
and rounding, but that check will have to be done after clipping
and all this stuff right now runs before clipping. Currently we
don't have clipping for pfit but I have a branch somewhere that
tries to add that to properly handle the pfit+joiner combo.
For SKL+ plane scaling clipping is already there of course.

> 
> In i9xx_pfit_check_scaling(), max_scale is passed to drm_rect_calc_hscale()
> and drm_rect_calc_vscale(), which treat max_hscale and max_vscale as inclusive
> upper bounds and only reject with -ERANGE when scale > max_scale. Setting
> max_scale = 0x20000 allows an exact 2.0x downscale factor (for example, when
> scaling a 1600x1200 pipe_src to an 800x600 dst).
> 
> However, in drivers/gpu/drm/i915/display/intel_pfit_regs.h, the i965+ scaling
> ratio fields in PFIT_PGM_RATIOS are 13-bit 1.12 fixed-point values:
> 
> #define   PFIT_VERT_SCALE_MASK_965	REG_GENMASK(28, 16) /* 965+ */
> #define   PFIT_VERT_SCALE_965(x)	REG_FIELD_PREP(PFIT_VERT_SCALE_MASK_965, (x))
> #define   PFIT_HORIZ_SCALE_MASK_965	REG_GENMASK(12, 0) /* 965+ */
> #define   PFIT_HORIZ_SCALE_965(x)	REG_FIELD_PREP(PFIT_HORIZ_SCALE_MASK_965, (x))
> 
> These 13-bit fields have a maximum representable value of 0x1fff (< 2.0). For
> an exact 2.0x downscale, panel_fitter_scaling() computes 0x2000 (BIT(13)),
> which overflows the 13-bit register field and causes a hardware state readout
> mismatch in i965_pfit_get_config() -> i9xx_compute_pfit_dst() on
> crtc_state->pfit.dst and pixel_rate:
> 
> drivers/gpu/drm/i915/display/intel_pfit.c:i965_pfit_get_config() {
> 	...
> 	case PFIT_SCALING_AUTO:
> 	case PFIT_SCALING_PROGRAMMED:
> 		hscale = REG_FIELD_GET(PFIT_HORIZ_SCALE_MASK_965, ratios);
> 		vscale = REG_FIELD_GET(PFIT_VERT_SCALE_MASK_965, ratios);
> 		break;
> 	}
> 
> 	i9xx_compute_pfit_dst(crtc_state, hscale, vscale);
> 	...
> }
> 
> -- 
> Sashiko AI review · https://sashiko.dev/#/patchset/20261019135309.23578-1-ville.syrjala@linux.intel.com?part=15

-- 
Ville Syrjälä
Intel

^ permalink raw reply	[flat|nested] 35+ messages in thread

* [PATCH v2 06/15] drm/i915/pfit: Extract i965_pfit_get_config()
  2026-10-19 13:53 ` [PATCH 06/15] drm/i915/pfit: Extract i965_pfit_get_config() Ville Syrjala
  2026-10-19 16:02   ` Jani Nikula
@ 2026-10-20 18:38   ` Ville Syrjala
  1 sibling, 0 replies; 35+ messages in thread
From: Ville Syrjala @ 2026-10-20 18:38 UTC (permalink / raw)
  To: intel-gfx; +Cc: intel-xe, Jani Nikula

From: Ville Syrjälä <ville.syrjala@linux.intel.com>

Split i965_pfit_get_config() out from i9xx_pfit_get_config() to
unconfuse things a bit.

Note that we stop reading PFIT_PGM_RATIOS into
crtc_state->gmch_pfit.pgm_ratios since wen ever use the
progammed ratios on i965+. The .compute_config() path doesn't
populate crtc_state->gmch_pfit.pgm_ratios either.

v2: Highlight the crtc_state->gmch_pfit.pgm_ratios change (Jani)

Reviewed-by: Jani Nikula <jani.nikula@intel.com>
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 drivers/gpu/drm/i915/display/intel_pfit.c | 58 +++++++++++++++--------
 1 file changed, 38 insertions(+), 20 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_pfit.c b/drivers/gpu/drm/i915/display/intel_pfit.c
index 972218346362..82804159d0a1 100644
--- a/drivers/gpu/drm/i915/display/intel_pfit.c
+++ b/drivers/gpu/drm/i915/display/intel_pfit.c
@@ -720,38 +720,51 @@ void i9xx_pfit_disable(const struct intel_crtc_state *old_crtc_state)
 	intel_de_write(display, PFIT_CONTROL(display), 0);
 }
 
-static bool i9xx_has_pfit(struct intel_display *display)
+static void i965_pfit_get_config(struct intel_crtc_state *crtc_state)
 {
+	struct intel_display *display = to_intel_display(crtc_state);
+	struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
+	enum pipe pipe;
+	u32 tmp;
+
+	tmp = intel_de_read(display, PFIT_CONTROL(display));
+	if (!(tmp & PFIT_ENABLE))
+		return;
+
+	/* Check whether the pfit is attached to our pipe. */
+	pipe = REG_FIELD_GET(PFIT_PIPE_MASK, tmp);
+	if (pipe != crtc->pipe)
+		return;
+
+	crtc_state->gmch_pfit.control = tmp;
+}
+
+static bool i9xx_has_pfit(struct intel_crtc *crtc)
+{
+	struct intel_display *display = to_intel_display(crtc);
+
+	if (crtc->pipe != PIPE_B)
+		return false;
+
 	if (display->platform.i830)
 		return false;
 
-	return DISPLAY_VER(display) >= 4 ||
-		display->platform.pineview || display->platform.mobile;
+	return display->platform.pineview || display->platform.mobile;
 }
 
 static void i9xx_pfit_get_config(struct intel_crtc_state *crtc_state)
 {
 	struct intel_display *display = to_intel_display(crtc_state);
 	struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
-	enum pipe pipe;
 	u32 tmp;
 
-	if (!i9xx_has_pfit(display))
+	if (!i9xx_has_pfit(crtc))
 		return;
 
 	tmp = intel_de_read(display, PFIT_CONTROL(display));
 	if (!(tmp & PFIT_ENABLE))
 		return;
 
-	/* Check whether the pfit is attached to our pipe. */
-	if (DISPLAY_VER(display) >= 4)
-		pipe = REG_FIELD_GET(PFIT_PIPE_MASK, tmp);
-	else
-		pipe = PIPE_B;
-
-	if (pipe != crtc->pipe)
-		return;
-
 	crtc_state->gmch_pfit.control = tmp;
 	crtc_state->gmch_pfit.pgm_ratios =
 		intel_de_read(display, PFIT_PGM_RATIOS(display));
@@ -761,10 +774,15 @@ void intel_pfit_get_config(struct intel_crtc_state *crtc_state)
 {
 	struct intel_display *display = to_intel_display(crtc_state);
 
-	if (HAS_GMCH(display))
-		i9xx_pfit_get_config(crtc_state);
-	else if (DISPLAY_VER(display) >= 9)
-		skl_scaler_get_config(crtc_state);
-	else
-		ilk_pfit_get_config(crtc_state);
+	if (HAS_GMCH(display)) {
+		if (DISPLAY_VER(display) >= 4)
+			i965_pfit_get_config(crtc_state);
+		else
+			i9xx_pfit_get_config(crtc_state);
+	} else {
+		if (DISPLAY_VER(display) >= 9)
+			skl_scaler_get_config(crtc_state);
+		else
+			ilk_pfit_get_config(crtc_state);
+	}
 }
-- 
2.55.0


^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [PATCH v2 09/15] drm/i915/pfit: Populate crtc_state->pfit.dst on GMCH platforms
  2026-10-19 13:53 ` [PATCH 09/15] drm/i915/pfit: Populate crtc_state->pfit.dst on GMCH platforms Ville Syrjala
  2026-10-19 14:23   ` sashiko-bot
@ 2026-10-20 18:40   ` Ville Syrjala
  1 sibling, 0 replies; 35+ messages in thread
From: Ville Syrjala @ 2026-10-20 18:40 UTC (permalink / raw)
  To: intel-gfx; +Cc: intel-xe

From: Ville Syrjälä <ville.syrjala@linux.intel.com>

Populate crtc_state->pfit.dst on GMCH platforms. Since
(unlike ILK+) we don't actually program the pfit window
coordinates to the hardware we need to compute the coordinates
based on the scaling factor the hardware will use (whether
that'll be the manually programmed thing on pre-i965 or
the automagic thing on i965+). As long as we do the computation
the same way .compute_config() and readout we'll get matching
results, which is important to the state checker.

Note that the automagic scaling factors on i965+ are slightly
weird in that only one of the scaling factors in the register
will read out correctly in the letterbox/pillabox modes. So
the readout will have to know which direction has the correct
information.

v2: Protect against bogus PFIT_SCALING_MASK value (sashiko)

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 .../drm/i915/display/intel_crtc_state_dump.c  |  10 +-
 drivers/gpu/drm/i915/display/intel_pfit.c     | 234 +++++++++++++-----
 drivers/gpu/drm/i915/display/intel_pfit.h     |   2 +
 .../gpu/drm/i915/display/intel_pfit_regs.h    |   4 +-
 4 files changed, 187 insertions(+), 63 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_crtc_state_dump.c b/drivers/gpu/drm/i915/display/intel_crtc_state_dump.c
index f30d07bc6b07..9220c73d2f5e 100644
--- a/drivers/gpu/drm/i915/display/intel_crtc_state_dump.c
+++ b/drivers/gpu/drm/i915/display/intel_crtc_state_dump.c
@@ -355,11 +355,11 @@ void intel_crtc_state_dump(const struct intel_crtc_state *pipe_config,
 			   pipe_config->gmch_pfit.control,
 			   pipe_config->gmch_pfit.pgm_ratios,
 			   pipe_config->gmch_pfit.lvds_border_bits);
-	else
-		drm_printf(&p, "pfit: " DRM_RECT_FMT ", %s, force thru: %s\n",
-			   DRM_RECT_ARG(&pipe_config->pfit.dst),
-			   str_enabled_disabled(pipe_config->pfit.enabled),
-			   str_yes_no(pipe_config->pfit.force_thru));
+
+	drm_printf(&p, "pfit: " DRM_RECT_FMT ", %s, force thru: %s\n",
+		   DRM_RECT_ARG(&pipe_config->pfit.dst),
+		   str_enabled_disabled(pipe_config->pfit.enabled),
+		   str_yes_no(pipe_config->pfit.force_thru));
 
 	drm_printf(&p, "sharpness strength: %d, sharpness tap size: %d, sharpness enable: %d\n",
 		   pipe_config->pfit.casf.strength,
diff --git a/drivers/gpu/drm/i915/display/intel_pfit.c b/drivers/gpu/drm/i915/display/intel_pfit.c
index 5d519f45adbe..a322c7766772 100644
--- a/drivers/gpu/drm/i915/display/intel_pfit.c
+++ b/drivers/gpu/drm/i915/display/intel_pfit.c
@@ -353,6 +353,35 @@ static u32 panel_fitter_scaling(u32 source, u32 target)
 	return DIV_ROUND_CLOSEST(source << 12, target);
 }
 
+static void i9xx_compute_pfit_dst(struct intel_crtc_state *crtc_state,
+				  u32 hscale, u32 vscale)
+{
+	const struct drm_display_mode *adjusted_mode =
+		&crtc_state->hw.adjusted_mode;
+	int pipe_src_w = drm_rect_width(&crtc_state->pipe_src);
+	int pipe_src_h = drm_rect_height(&crtc_state->pipe_src);
+	int x, y, width, height;
+
+	/* don't explode if the hw state was gibberish */
+	if (hscale == 0)
+		hscale = 1 << 12;
+	if (vscale == 0)
+		vscale = 1 << 12;
+
+	width = DIV_ROUND_CLOSEST(pipe_src_w << 12, hscale);
+	height = DIV_ROUND_CLOSEST(pipe_src_h << 12, vscale);
+
+	width = min(width, adjusted_mode->crtc_hdisplay);
+	height = min(height, adjusted_mode->crtc_vdisplay);
+
+	x = DIV_ROUND_CLOSEST(adjusted_mode->crtc_hdisplay - width, 2);
+	y = DIV_ROUND_CLOSEST(adjusted_mode->crtc_vdisplay - height, 2);
+
+	crtc_state->pfit.enabled = true;
+
+	drm_rect_init(&crtc_state->pfit.dst, x, y, width, height);
+}
+
 static void i965_scale_aspect(struct intel_crtc_state *crtc_state,
 			      u32 *pfit_control)
 {
@@ -362,16 +391,54 @@ static void i965_scale_aspect(struct intel_crtc_state *crtc_state,
 	int pipe_src_h = drm_rect_height(&crtc_state->pipe_src);
 	u32 scaled_width = adjusted_mode->crtc_hdisplay * pipe_src_h;
 	u32 scaled_height = pipe_src_w * adjusted_mode->crtc_vdisplay;
+	u32 hscale, vscale;
 
 	/* 965+ is easy, it does everything in hw */
-	if (scaled_width > scaled_height)
+	if (scaled_width > scaled_height) {
 		*pfit_control |= PFIT_ENABLE |
 			PFIT_SCALING_PILLAR;
-	else if (scaled_width < scaled_height)
+
+		vscale = panel_fitter_scaling(pipe_src_h, adjusted_mode->crtc_vdisplay);
+		hscale = vscale;
+
+		i9xx_compute_pfit_dst(crtc_state, hscale, vscale);
+	} else if (scaled_width < scaled_height) {
 		*pfit_control |= PFIT_ENABLE |
 			PFIT_SCALING_LETTER;
-	else if (adjusted_mode->crtc_hdisplay != pipe_src_w)
+
+		hscale = panel_fitter_scaling(pipe_src_w, adjusted_mode->crtc_hdisplay);
+		vscale = hscale;
+
+		i9xx_compute_pfit_dst(crtc_state, hscale, vscale);
+	} else if (adjusted_mode->crtc_hdisplay != pipe_src_w) {
 		*pfit_control |= PFIT_ENABLE | PFIT_SCALING_AUTO;
+
+		hscale = panel_fitter_scaling(pipe_src_w, adjusted_mode->crtc_hdisplay);
+		vscale = panel_fitter_scaling(pipe_src_h, adjusted_mode->crtc_vdisplay);
+
+		i9xx_compute_pfit_dst(crtc_state, hscale, vscale);
+	}
+}
+
+static void i965_scale_fullscreen(struct intel_crtc_state *crtc_state,
+				  u32 *pfit_control)
+{
+	const struct drm_display_mode *adjusted_mode =
+		&crtc_state->hw.adjusted_mode;
+	int pipe_src_w = drm_rect_width(&crtc_state->pipe_src);
+	int pipe_src_h = drm_rect_height(&crtc_state->pipe_src);
+	u32 hscale, vscale;
+
+	if (pipe_src_h == adjusted_mode->crtc_vdisplay &&
+	    pipe_src_w == adjusted_mode->crtc_hdisplay)
+		return;
+
+	*pfit_control |= PFIT_ENABLE | PFIT_SCALING_AUTO;
+
+	hscale = panel_fitter_scaling(pipe_src_w, adjusted_mode->crtc_hdisplay);
+	vscale = panel_fitter_scaling(pipe_src_h, adjusted_mode->crtc_vdisplay);
+
+	i9xx_compute_pfit_dst(crtc_state, hscale, vscale);
 }
 
 static void i9xx_scale_aspect(struct intel_crtc_state *crtc_state,
@@ -383,7 +450,7 @@ static void i9xx_scale_aspect(struct intel_crtc_state *crtc_state,
 	int pipe_src_h = drm_rect_height(&crtc_state->pipe_src);
 	u32 scaled_width = adjusted_mode->crtc_hdisplay * pipe_src_h;
 	u32 scaled_height = pipe_src_w * adjusted_mode->crtc_vdisplay;
-	u32 bits;
+	u32 hscale, vscale;
 
 	/*
 	 * For earlier chips we have to calculate the scaling
@@ -396,14 +463,16 @@ static void i9xx_scale_aspect(struct intel_crtc_state *crtc_state,
 
 		*border = LVDS_BORDER_ENABLE;
 		if (pipe_src_h != adjusted_mode->crtc_vdisplay) {
-			bits = panel_fitter_scaling(pipe_src_h,
-						    adjusted_mode->crtc_vdisplay);
+			vscale = panel_fitter_scaling(pipe_src_h, adjusted_mode->crtc_vdisplay);
+			hscale = vscale;
 
-			*pfit_pgm_ratios |= (PFIT_HORIZ_SCALE(bits) |
-					     PFIT_VERT_SCALE(bits));
+			*pfit_pgm_ratios |= (PFIT_HORIZ_SCALE(hscale) |
+					     PFIT_VERT_SCALE(vscale));
 			*pfit_control |= (PFIT_ENABLE |
 					  PFIT_VERT_INTERP_BILINEAR |
 					  PFIT_HORIZ_INTERP_BILINEAR);
+
+			i9xx_compute_pfit_dst(crtc_state, hscale, vscale);
 		}
 	} else if (scaled_width < scaled_height) { /* letter */
 		centre_vertically(adjusted_mode,
@@ -411,14 +480,16 @@ static void i9xx_scale_aspect(struct intel_crtc_state *crtc_state,
 
 		*border = LVDS_BORDER_ENABLE;
 		if (pipe_src_w != adjusted_mode->crtc_hdisplay) {
-			bits = panel_fitter_scaling(pipe_src_w,
-						    adjusted_mode->crtc_hdisplay);
+			vscale = panel_fitter_scaling(pipe_src_w, adjusted_mode->crtc_hdisplay);
+			hscale = vscale;
 
-			*pfit_pgm_ratios |= (PFIT_HORIZ_SCALE(bits) |
-					     PFIT_VERT_SCALE(bits));
+			*pfit_pgm_ratios |= (PFIT_HORIZ_SCALE(hscale) |
+					     PFIT_VERT_SCALE(vscale));
 			*pfit_control |= (PFIT_ENABLE |
 					  PFIT_VERT_INTERP_BILINEAR |
 					  PFIT_HORIZ_INTERP_BILINEAR);
+
+			i9xx_compute_pfit_dst(crtc_state, hscale, vscale);
 		}
 	} else {
 		/* Aspects match, Let hw scale both directions */
@@ -427,9 +498,40 @@ static void i9xx_scale_aspect(struct intel_crtc_state *crtc_state,
 				  PFIT_HORIZ_AUTO_SCALE |
 				  PFIT_VERT_INTERP_BILINEAR |
 				  PFIT_HORIZ_INTERP_BILINEAR);
+
+		hscale = panel_fitter_scaling(pipe_src_w, adjusted_mode->crtc_hdisplay);
+		vscale = panel_fitter_scaling(pipe_src_h, adjusted_mode->crtc_vdisplay);
+
+		i9xx_compute_pfit_dst(crtc_state, hscale, vscale);
 	}
 }
 
+static void i9xx_scale_fullscreen(struct intel_crtc_state *crtc_state,
+				  u32 *pfit_control, u32 *pfit_pgm_ratios,
+				  u32 *border)
+{
+	const struct drm_display_mode *adjusted_mode =
+		&crtc_state->hw.adjusted_mode;
+	int pipe_src_w = drm_rect_width(&crtc_state->pipe_src);
+	int pipe_src_h = drm_rect_height(&crtc_state->pipe_src);
+	u32 hscale, vscale;
+
+	if (pipe_src_h == adjusted_mode->crtc_vdisplay &&
+	    pipe_src_w == adjusted_mode->crtc_hdisplay)
+		return;
+
+	*pfit_control |= (PFIT_ENABLE |
+			  PFIT_VERT_AUTO_SCALE |
+			  PFIT_HORIZ_AUTO_SCALE |
+			  PFIT_VERT_INTERP_BILINEAR |
+			  PFIT_HORIZ_INTERP_BILINEAR);
+
+	hscale = panel_fitter_scaling(pipe_src_w, adjusted_mode->crtc_hdisplay);
+	vscale = panel_fitter_scaling(pipe_src_h, adjusted_mode->crtc_vdisplay);
+
+	i9xx_compute_pfit_dst(crtc_state, hscale, vscale);
+}
+
 static int i9xx_pfit_check_timings(const struct intel_crtc_state *crtc_state)
 {
 	struct intel_display *display = to_intel_display(crtc_state);
@@ -478,27 +580,18 @@ static int i9xx_pfit_compute_config(struct intel_crtc_state *crtc_state,
 	    adjusted_mode->crtc_vdisplay == pipe_src_h)
 		goto out;
 
-	/*
-	 * TODO: implement downscaling for i965+. Need to account
-	 * for downscaling in intel_crtc_compute_pixel_rate().
-	 */
-	if (adjusted_mode->crtc_hdisplay < pipe_src_w) {
-		drm_dbg_kms(display->drm,
-			    "[CRTC:%d:%s] pfit horizontal downscaling (%d->%d) not supported\n",
-			    crtc->base.base.id, crtc->base.name,
-			    pipe_src_w, adjusted_mode->crtc_hdisplay);
-		return -EINVAL;
-	}
-	if (adjusted_mode->crtc_vdisplay < pipe_src_h) {
-		drm_dbg_kms(display->drm,
-			    "[CRTC:%d:%s] pfit vertical downscaling (%d->%d) not supported\n",
-			    crtc->base.base.id, crtc->base.name,
-			    pipe_src_h, adjusted_mode->crtc_vdisplay);
-		return -EINVAL;
-	}
-
 	switch (conn_state->scaling_mode) {
 	case DRM_MODE_SCALE_CENTER:
+		if (adjusted_mode->crtc_hdisplay < pipe_src_w ||
+		    adjusted_mode->crtc_vdisplay < pipe_src_h) {
+			drm_dbg_kms(display->drm,
+				    "[CRTC:%d:%s] pfit center mode source (%dx%d) exceeds display (%dx%d)\n",
+				    crtc->base.base.id, crtc->base.name,
+				    pipe_src_w, pipe_src_h,
+				    adjusted_mode->crtc_hdisplay,
+				    adjusted_mode->crtc_vdisplay);
+			return -EINVAL;
+		}
 		/*
 		 * For centered modes, we have to calculate border widths &
 		 * heights and modify the values programmed into the CRTC.
@@ -516,21 +609,11 @@ static int i9xx_pfit_compute_config(struct intel_crtc_state *crtc_state,
 					  &pfit_pgm_ratios, &border);
 		break;
 	case DRM_MODE_SCALE_FULLSCREEN:
-		/*
-		 * Full scaling, even if it changes the aspect ratio.
-		 * Fortunately this is all done for us in hw.
-		 */
-		if (pipe_src_h != adjusted_mode->crtc_vdisplay ||
-		    pipe_src_w != adjusted_mode->crtc_hdisplay) {
-			pfit_control |= PFIT_ENABLE;
-			if (DISPLAY_VER(display) >= 4)
-				pfit_control |= PFIT_SCALING_AUTO;
-			else
-				pfit_control |= (PFIT_VERT_AUTO_SCALE |
-						 PFIT_VERT_INTERP_BILINEAR |
-						 PFIT_HORIZ_AUTO_SCALE |
-						 PFIT_HORIZ_INTERP_BILINEAR);
-		}
+		if (DISPLAY_VER(display) >= 4)
+			i965_scale_fullscreen(crtc_state, &pfit_control);
+		else
+			i9xx_scale_fullscreen(crtc_state, &pfit_control,
+					      &pfit_pgm_ratios, &border);
 		break;
 	default:
 		MISSING_CASE(conn_state->scaling_mode);
@@ -716,19 +799,42 @@ static void i965_pfit_get_config(struct intel_crtc_state *crtc_state)
 {
 	struct intel_display *display = to_intel_display(crtc_state);
 	struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
+	u32 hscale, vscale, control, ratios;
 	enum pipe pipe;
-	u32 tmp;
 
-	tmp = intel_de_read(display, PFIT_CONTROL(display));
-	if (!(tmp & PFIT_ENABLE))
+	control = intel_de_read(display, PFIT_CONTROL(display));
+	if (!(control & PFIT_ENABLE))
 		return;
 
 	/* Check whether the pfit is attached to our pipe. */
-	pipe = REG_FIELD_GET(PFIT_PIPE_MASK, tmp);
+	pipe = REG_FIELD_GET(PFIT_PIPE_MASK, control);
 	if (pipe != crtc->pipe)
 		return;
 
-	crtc_state->gmch_pfit.control = tmp;
+	crtc_state->gmch_pfit.control = control;
+
+	ratios = intel_de_read(display, PFIT_PGM_RATIOS(display));
+
+	switch (control & PFIT_SCALING_MASK) {
+	case PFIT_SCALING_LETTER:
+		hscale = REG_FIELD_GET(PFIT_HORIZ_SCALE_MASK_965, ratios);
+		vscale = hscale; /* PFIT_VERT_SCALE_MASK_965 contains garbage */
+		break;
+	case PFIT_SCALING_PILLAR:
+		vscale = REG_FIELD_GET(PFIT_VERT_SCALE_MASK_965, ratios);
+		hscale = vscale; /* PFIT_HORIZ_SCALE_MASK_965 contains garbage */
+		break;
+	case PFIT_SCALING_AUTO:
+	case PFIT_SCALING_PROGRAMMED:
+		hscale = REG_FIELD_GET(PFIT_HORIZ_SCALE_MASK_965, ratios);
+		vscale = REG_FIELD_GET(PFIT_VERT_SCALE_MASK_965, ratios);
+		break;
+	default:
+		MISSING_CASE(control & PFIT_SCALING_MASK);
+		return;
+	}
+
+	i9xx_compute_pfit_dst(crtc_state, hscale, vscale);
 }
 
 static bool i9xx_has_pfit(struct intel_crtc *crtc)
@@ -748,18 +854,32 @@ static void i9xx_pfit_get_config(struct intel_crtc_state *crtc_state)
 {
 	struct intel_display *display = to_intel_display(crtc_state);
 	struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
-	u32 tmp;
+	u32 hscale, vscale, control, ratios;
 
 	if (!i9xx_has_pfit(crtc))
 		return;
 
-	tmp = intel_de_read(display, PFIT_CONTROL(display));
-	if (!(tmp & PFIT_ENABLE))
+	control = intel_de_read(display, PFIT_CONTROL(display));
+	if (!(control & PFIT_ENABLE))
 		return;
 
-	crtc_state->gmch_pfit.control = tmp;
-	crtc_state->gmch_pfit.pgm_ratios =
-		intel_de_read(display, PFIT_PGM_RATIOS(display));
+	crtc_state->gmch_pfit.control = control;
+
+	ratios = intel_de_read(display, PFIT_AUTO_RATIOS(display));
+	if (control & PFIT_HORIZ_AUTO_SCALE)
+		hscale = REG_FIELD_GET(PFIT_HORIZ_SCALE_MASK, ratios);
+	if (control & PFIT_VERT_AUTO_SCALE)
+		vscale = REG_FIELD_GET(PFIT_VERT_SCALE_MASK, ratios);
+
+	ratios = intel_de_read(display, PFIT_PGM_RATIOS(display));
+	if ((control & PFIT_HORIZ_AUTO_SCALE) == 0)
+		hscale = REG_FIELD_GET(PFIT_HORIZ_SCALE_MASK, ratios);
+	if ((control & PFIT_VERT_AUTO_SCALE) == 0)
+		vscale = REG_FIELD_GET(PFIT_VERT_SCALE_MASK, ratios);
+
+	crtc_state->gmch_pfit.pgm_ratios = ratios;
+
+	i9xx_compute_pfit_dst(crtc_state, hscale, vscale);
 }
 
 void intel_pfit_get_config(struct intel_crtc_state *crtc_state)
diff --git a/drivers/gpu/drm/i915/display/intel_pfit.h b/drivers/gpu/drm/i915/display/intel_pfit.h
index 184e1932eae5..f1162b37d407 100644
--- a/drivers/gpu/drm/i915/display/intel_pfit.h
+++ b/drivers/gpu/drm/i915/display/intel_pfit.h
@@ -6,6 +6,8 @@
 #ifndef __INTEL_PFIT_H__
 #define __INTEL_PFIT_H__
 
+#include <linux/types.h>
+
 enum drm_mode_status;
 struct drm_display_mode;
 struct drm_connector_state;
diff --git a/drivers/gpu/drm/i915/display/intel_pfit_regs.h b/drivers/gpu/drm/i915/display/intel_pfit_regs.h
index add8ce28004e..a83ac3b20ca3 100644
--- a/drivers/gpu/drm/i915/display/intel_pfit_regs.h
+++ b/drivers/gpu/drm/i915/display/intel_pfit_regs.h
@@ -34,9 +34,11 @@
 #define   PFIT_HORIZ_SCALE_MASK		REG_GENMASK(15, 4) /* pre-965 */
 #define   PFIT_HORIZ_SCALE(x)		REG_FIELD_PREP(PFIT_HORIZ_SCALE_MASK, (x))
 #define   PFIT_VERT_SCALE_MASK_965	REG_GENMASK(28, 16) /* 965+ */
+#define   PFIT_VERT_SCALE_965(x)	REG_FIELD_PREP(PFIT_VERT_SCALE_MASK_965, (x))
 #define   PFIT_HORIZ_SCALE_MASK_965	REG_GENMASK(12, 0) /* 965+ */
+#define   PFIT_HORIZ_SCALE_965(x)	REG_FIELD_PREP(PFIT_HORIZ_SCALE_MASK_965, (x))
 
-#define PFIT_AUTO_RATIOS(dev_priv) _MMIO(DISPLAY_MMIO_BASE(dev_priv) + 0x61238)
+#define PFIT_AUTO_RATIOS(dev_priv) _MMIO(DISPLAY_MMIO_BASE(dev_priv) + 0x61238) /* pre-965 */
 
 /* CPU panel fitter */
 /* IVB+ has 3 fitters, 0 is 7x5 capable, the other two only 3x3 */
-- 
2.55.0


^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [PATCH v2 15/15] drm/i915/pfit: Allow downscaling on i966+
  2026-10-19 13:53 ` [PATCH 15/15] drm/i915/pfit: Allow downscaling on i966+ Ville Syrjala
  2026-10-19 14:47   ` sashiko-bot
@ 2026-10-20 18:41   ` Ville Syrjala
  1 sibling, 0 replies; 35+ messages in thread
From: Ville Syrjala @ 2026-10-20 18:41 UTC (permalink / raw)
  To: intel-gfx; +Cc: intel-xe

From: Ville Syrjälä <ville.syrjala@linux.intel.com>

The i965+ panel fitter supports downscaling. Allow it.

v2: Limit to <2.0 instead of <=2.0 (sashiko)

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 drivers/gpu/drm/i915/display/intel_pfit.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/display/intel_pfit.c b/drivers/gpu/drm/i915/display/intel_pfit.c
index 42d087b406e0..293ec2aae095 100644
--- a/drivers/gpu/drm/i915/display/intel_pfit.c
+++ b/drivers/gpu/drm/i915/display/intel_pfit.c
@@ -563,7 +563,10 @@ static int i9xx_pfit_check_scaling(const struct intel_crtc_state *crtc_state)
 	int hscale, vscale, max_scale;
 	struct drm_rect src;
 
-	max_scale = 0x10000;
+	if (DISPLAY_VER(display) >= 4)
+		max_scale = 0x20000 - 1;
+	else
+		max_scale = 0x10000;
 
 	drm_rect_init(&src, 0, 0, pipe_src_w << 16, pipe_src_h << 16);
 
-- 
2.55.0


^ permalink raw reply related	[flat|nested] 35+ messages in thread

* ✓ i915.CI.BAT: success for drm/i915/pfit: Make GMCH panel fitter nicer (rev4)
  2026-10-19 13:52 [PATCH 00/15] drm/i915/pfit: Make GMCH panel fitter nicer Ville Syrjala
                   ` (16 preceding siblings ...)
  2026-10-19 22:45 ` ✓ i915.CI.Full: " Patchwork
@ 2026-10-20 19:43 ` Patchwork
  17 siblings, 0 replies; 35+ messages in thread
From: Patchwork @ 2026-10-20 19:43 UTC (permalink / raw)
  To: Ville Syrjala; +Cc: intel-gfx

[-- Attachment #1: Type: text/plain, Size: 1528 bytes --]

== Series Details ==

Series: drm/i915/pfit: Make GMCH panel fitter nicer (rev4)
URL   : https://patchwork.freedesktop.org/series/176400/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_19369 -> Patchwork_176400v4
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v4/index.html

Participating hosts (40 -> 39)
------------------------------

  Missing    (1): bat-dg2-13 

Known issues
------------

  Here are the changes found in Patchwork_176400v4 that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@kms_hdmi_inject@inject-audio:
    - fi-tgl-1115g4:      [PASS][1] -> [SKIP][2] ([i915#13030])
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19369/fi-tgl-1115g4/igt@kms_hdmi_inject@inject-audio.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v4/fi-tgl-1115g4/igt@kms_hdmi_inject@inject-audio.html

  
  [i915#13030]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13030


Build changes
-------------

  * Linux: CI_DRM_19369 -> Patchwork_176400v4

  CI-20190529: 20190529
  CI_DRM_19369: 0610db36f4635ed214d9f1de57f9141f36c78a31 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGT_9156: 9156
  Patchwork_176400v4: 0610db36f4635ed214d9f1de57f9141f36c78a31 @ git://anongit.freedesktop.org/gfx-ci/linux

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_176400v4/index.html

[-- Attachment #2: Type: text/html, Size: 2113 bytes --]

^ permalink raw reply	[flat|nested] 35+ messages in thread

end of thread, other threads:[~2026-10-20 19:43 UTC | newest]

Thread overview: 35+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-10-19 13:52 [PATCH 00/15] drm/i915/pfit: Make GMCH panel fitter nicer Ville Syrjala
2026-10-19 13:52 ` [PATCH 01/15] drm/i915/pfit: s/pch_pfit/pfit/ Ville Syrjala
2026-10-19 15:48   ` Jani Nikula
2026-10-19 13:52 ` [PATCH 02/15] drm/i915/pfit: s/intel_pch_pfit/ilk_pfit/ Ville Syrjala
2026-10-19 15:49   ` Jani Nikula
2026-10-19 13:52 ` [PATCH 03/15] drm/i915/pfit: Stop using HAS_PCH_SPLIT() in confusing places Ville Syrjala
2026-10-19 15:49   ` Jani Nikula
2026-10-19 13:52 ` [PATCH 04/15] drm/i915/pfit: Introduce intel_pfit_get_config() Ville Syrjala
2026-10-19 15:53   ` Jani Nikula
2026-10-19 13:52 ` [PATCH 05/15] drm/i915/pfit: Rename some pfit functions Ville Syrjala
2026-10-19 15:54   ` Jani Nikula
2026-10-19 13:53 ` [PATCH 06/15] drm/i915/pfit: Extract i965_pfit_get_config() Ville Syrjala
2026-10-19 16:02   ` Jani Nikula
2026-10-19 16:05     ` Jani Nikula
2026-10-19 17:04       ` Ville Syrjälä
2026-10-20 18:38   ` [PATCH v2 " Ville Syrjala
2026-10-19 13:53 ` [PATCH 07/15] drm/i915/pfit: Drop platform check for gmch_pfit.pgm_ratios Ville Syrjala
2026-10-19 16:05   ` Jani Nikula
2026-10-19 13:53 ` [PATCH 08/15] drm/i915/pfit: Unconfuse panel_fitter_scaling() Ville Syrjala
2026-10-19 16:15   ` Jani Nikula
2026-10-19 13:53 ` [PATCH 09/15] drm/i915/pfit: Populate crtc_state->pfit.dst on GMCH platforms Ville Syrjala
2026-10-19 14:23   ` sashiko-bot
2026-10-20 18:40   ` [PATCH v2 " Ville Syrjala
2026-10-19 13:53 ` [PATCH 10/15] drm/i915/pfit: Check scaling factor on GMCH Ville Syrjala
2026-10-19 13:53 ` [PATCH 11/15] drm/i915/pfit: Check panel fitter source size " Ville Syrjala
2026-10-19 13:53 ` [PATCH 12/15] drm/i915/pfit: Extract i9xx_pfit_vscale_ratio() and i9xx_pfit_is_one_line_mode() Ville Syrjala
2026-10-19 13:53 ` [PATCH 13/15] drm/i915/pfit: No pfit one line mode on i965+ Ville Syrjala
2026-10-19 13:53 ` [PATCH 14/15] drm/i915/pfit: Account for pfit downscaling in pixel rate on GMCH platforms Ville Syrjala
2026-10-19 13:53 ` [PATCH 15/15] drm/i915/pfit: Allow downscaling on i966+ Ville Syrjala
2026-10-19 14:47   ` sashiko-bot
2026-10-20 18:31     ` Ville Syrjälä
2026-10-20 18:41   ` [PATCH v2 " Ville Syrjala
2026-10-19 17:23 ` ✓ i915.CI.BAT: success for drm/i915/pfit: Make GMCH panel fitter nicer Patchwork
2026-10-19 22:45 ` ✓ i915.CI.Full: " Patchwork
2026-10-20 19:43 ` ✓ i915.CI.BAT: success for drm/i915/pfit: Make GMCH panel fitter nicer (rev4) Patchwork

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox