intel-gfx.lists.freedesktop.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 0/4] drm/{i915, xe}: migrate stolen interface to parent interface, cleanups
@ 2025-12-05 10:30 Jani Nikula
  2025-12-05 10:30 ` [PATCH v2 1/4] drm/i915/fbc: let to_intel_display() do its generic magic Jani Nikula
                   ` (5 more replies)
  0 siblings, 6 replies; 11+ messages in thread
From: Jani Nikula @ 2025-12-05 10:30 UTC (permalink / raw)
  To: intel-gfx, intel-xe; +Cc: jani.nikula

v2 of [1], converting one more call that had appeared in the mean time.


[1] https://lore.kernel.org/r/cover.1764868989.git.jani.nikula@intel.com

Jani Nikula (4):
  drm/i915/fbc: let to_intel_display() do its generic magic
  drm/xe/stolen: unify interface with i915
  drm/{i915,xe}/stolen: move stolen memory handling to display parent
    interface
  drm/{i915,xe}/stolen: make insert_node, area_address, area_size
    optional

 drivers/gpu/drm/i915/display/intel_fbc.c      | 105 +++++++++---------
 drivers/gpu/drm/i915/display/intel_parent.c   |  76 +++++++++++++
 drivers/gpu/drm/i915/display/intel_parent.h   |  19 ++++
 drivers/gpu/drm/i915/gem/i915_gem_stolen.c    |  52 ++++++---
 drivers/gpu/drm/i915/gem/i915_gem_stolen.h    |  23 +---
 drivers/gpu/drm/i915/i915_driver.c            |   1 +
 .../compat-i915-headers/gem/i915_gem_stolen.h |  40 -------
 drivers/gpu/drm/xe/display/xe_display.c       |   4 +-
 drivers/gpu/drm/xe/display/xe_stolen.c        |  62 +++++------
 drivers/gpu/drm/xe/display/xe_stolen.h        |   9 ++
 include/drm/intel/display_parent_interface.h  |  20 ++++
 11 files changed, 243 insertions(+), 168 deletions(-)
 delete mode 100644 drivers/gpu/drm/xe/compat-i915-headers/gem/i915_gem_stolen.h
 create mode 100644 drivers/gpu/drm/xe/display/xe_stolen.h

-- 
2.47.3


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

* [PATCH v2 1/4] drm/i915/fbc: let to_intel_display() do its generic magic
  2025-12-05 10:30 [PATCH v2 0/4] drm/{i915, xe}: migrate stolen interface to parent interface, cleanups Jani Nikula
@ 2025-12-05 10:30 ` Jani Nikula
  2025-12-09 13:25   ` Govindapillai, Vinod
  2025-12-05 10:30 ` [PATCH v2 2/4] drm/xe/stolen: unify interface with i915 Jani Nikula
                   ` (4 subsequent siblings)
  5 siblings, 1 reply; 11+ messages in thread
From: Jani Nikula @ 2025-12-05 10:30 UTC (permalink / raw)
  To: intel-gfx, intel-xe; +Cc: jani.nikula

to_intel_display() generics can handle struct intel_plane_state, struct
intel_atomic_state, and struct intel_crtc just fine. Pass them directly.

Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 drivers/gpu/drm/i915/display/intel_fbc.c | 34 ++++++++++++------------
 1 file changed, 17 insertions(+), 17 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_fbc.c b/drivers/gpu/drm/i915/display/intel_fbc.c
index 155b308ed66f..0e946bed484f 100644
--- a/drivers/gpu/drm/i915/display/intel_fbc.c
+++ b/drivers/gpu/drm/i915/display/intel_fbc.c
@@ -217,7 +217,7 @@ static unsigned int _intel_fbc_cfb_stride(struct intel_display *display,
 
 static unsigned int intel_fbc_cfb_stride(const struct intel_plane_state *plane_state)
 {
-	struct intel_display *display = to_intel_display(plane_state->uapi.plane->dev);
+	struct intel_display *display = to_intel_display(plane_state);
 	unsigned int stride = intel_fbc_plane_cfb_stride(plane_state);
 	unsigned int width = drm_rect_width(&plane_state->uapi.src) >> 16;
 	unsigned int cpp = intel_fbc_cfb_cpp(plane_state);
@@ -248,7 +248,7 @@ static unsigned int _intel_fbc_cfb_size(struct intel_display *display,
 
 static unsigned int intel_fbc_cfb_size(const struct intel_plane_state *plane_state)
 {
-	struct intel_display *display = to_intel_display(plane_state->uapi.plane->dev);
+	struct intel_display *display = to_intel_display(plane_state);
 	unsigned int height = drm_rect_height(&plane_state->uapi.src) >> 16;
 
 	return _intel_fbc_cfb_size(display, height, intel_fbc_cfb_stride(plane_state));
@@ -256,7 +256,7 @@ static unsigned int intel_fbc_cfb_size(const struct intel_plane_state *plane_sta
 
 static u16 intel_fbc_override_cfb_stride(const struct intel_plane_state *plane_state)
 {
-	struct intel_display *display = to_intel_display(plane_state->uapi.plane->dev);
+	struct intel_display *display = to_intel_display(plane_state);
 	unsigned int stride_aligned = intel_fbc_cfb_stride(plane_state);
 	unsigned int stride = intel_fbc_plane_cfb_stride(plane_state);
 	const struct drm_framebuffer *fb = plane_state->hw.fb;
@@ -1098,7 +1098,7 @@ static bool icl_fbc_stride_is_valid(const struct intel_plane_state *plane_state)
 
 static bool stride_is_valid(const struct intel_plane_state *plane_state)
 {
-	struct intel_display *display = to_intel_display(plane_state->uapi.plane->dev);
+	struct intel_display *display = to_intel_display(plane_state);
 
 	if (DISPLAY_VER(display) >= 11)
 		return icl_fbc_stride_is_valid(plane_state);
@@ -1114,7 +1114,7 @@ static bool stride_is_valid(const struct intel_plane_state *plane_state)
 
 static bool i8xx_fbc_pixel_format_is_valid(const struct intel_plane_state *plane_state)
 {
-	struct intel_display *display = to_intel_display(plane_state->uapi.plane->dev);
+	struct intel_display *display = to_intel_display(plane_state);
 	const struct drm_framebuffer *fb = plane_state->hw.fb;
 
 	switch (fb->format->format) {
@@ -1134,7 +1134,7 @@ static bool i8xx_fbc_pixel_format_is_valid(const struct intel_plane_state *plane
 
 static bool g4x_fbc_pixel_format_is_valid(const struct intel_plane_state *plane_state)
 {
-	struct intel_display *display = to_intel_display(plane_state->uapi.plane->dev);
+	struct intel_display *display = to_intel_display(plane_state);
 	const struct drm_framebuffer *fb = plane_state->hw.fb;
 
 	switch (fb->format->format) {
@@ -1213,7 +1213,7 @@ intel_fbc_is_enable_pixel_normalizer(const struct intel_plane_state *plane_state
 
 static bool pixel_format_is_valid(const struct intel_plane_state *plane_state)
 {
-	struct intel_display *display = to_intel_display(plane_state->uapi.plane->dev);
+	struct intel_display *display = to_intel_display(plane_state);
 
 	if (DISPLAY_VER(display) >= 35)
 		return xe3p_lpd_fbc_pixel_format_is_valid(plane_state);
@@ -1249,7 +1249,7 @@ static bool skl_fbc_rotation_is_valid(const struct intel_plane_state *plane_stat
 
 static bool rotation_is_valid(const struct intel_plane_state *plane_state)
 {
-	struct intel_display *display = to_intel_display(plane_state->uapi.plane->dev);
+	struct intel_display *display = to_intel_display(plane_state);
 
 	if (DISPLAY_VER(display) >= 9)
 		return skl_fbc_rotation_is_valid(plane_state);
@@ -1288,7 +1288,7 @@ static void intel_fbc_max_surface_size(struct intel_display *display,
  */
 static bool intel_fbc_surface_size_ok(const struct intel_plane_state *plane_state)
 {
-	struct intel_display *display = to_intel_display(plane_state->uapi.plane->dev);
+	struct intel_display *display = to_intel_display(plane_state);
 	unsigned int effective_w, effective_h, max_w, max_h;
 
 	intel_fbc_max_surface_size(display, &max_w, &max_h);
@@ -1321,7 +1321,7 @@ static void intel_fbc_max_plane_size(struct intel_display *display,
 
 static bool intel_fbc_plane_size_valid(const struct intel_plane_state *plane_state)
 {
-	struct intel_display *display = to_intel_display(plane_state->uapi.plane->dev);
+	struct intel_display *display = to_intel_display(plane_state);
 	unsigned int w, h, max_w, max_h;
 
 	intel_fbc_max_plane_size(display, &max_w, &max_h);
@@ -1346,7 +1346,7 @@ static bool skl_fbc_tiling_valid(const struct intel_plane_state *plane_state)
 
 static bool tiling_is_valid(const struct intel_plane_state *plane_state)
 {
-	struct intel_display *display = to_intel_display(plane_state->uapi.plane->dev);
+	struct intel_display *display = to_intel_display(plane_state);
 
 	if (DISPLAY_VER(display) >= 9)
 		return skl_fbc_tiling_valid(plane_state);
@@ -1426,7 +1426,7 @@ static void intel_fbc_update_state(struct intel_atomic_state *state,
 				   struct intel_crtc *crtc,
 				   struct intel_plane *plane)
 {
-	struct intel_display *display = to_intel_display(state->base.dev);
+	struct intel_display *display = to_intel_display(state);
 	const struct intel_crtc_state *crtc_state =
 		intel_atomic_get_new_crtc_state(state, crtc);
 	const struct intel_plane_state *plane_state =
@@ -1459,7 +1459,7 @@ static void intel_fbc_update_state(struct intel_atomic_state *state,
 
 static bool intel_fbc_is_fence_ok(const struct intel_plane_state *plane_state)
 {
-	struct intel_display *display = to_intel_display(plane_state->uapi.plane->dev);
+	struct intel_display *display = to_intel_display(plane_state);
 
 	/*
 	 * The use of a CPU fence is one of two ways to detect writes by the
@@ -1566,7 +1566,7 @@ static int _intel_fbc_min_cdclk(const struct intel_crtc_state *crtc_state)
 static int intel_fbc_check_plane(struct intel_atomic_state *state,
 				 struct intel_plane *plane)
 {
-	struct intel_display *display = to_intel_display(state->base.dev);
+	struct intel_display *display = to_intel_display(state);
 	struct intel_plane_state *plane_state =
 		intel_atomic_get_new_plane_state(state, plane);
 	const struct drm_framebuffer *fb = plane_state->hw.fb;
@@ -1793,7 +1793,7 @@ static bool __intel_fbc_pre_update(struct intel_atomic_state *state,
 				   struct intel_crtc *crtc,
 				   struct intel_plane *plane)
 {
-	struct intel_display *display = to_intel_display(state->base.dev);
+	struct intel_display *display = to_intel_display(state);
 	struct intel_fbc *fbc = plane->fbc;
 	bool need_vblank_wait = false;
 
@@ -2008,7 +2008,7 @@ static void __intel_fbc_enable(struct intel_atomic_state *state,
 			       struct intel_crtc *crtc,
 			       struct intel_plane *plane)
 {
-	struct intel_display *display = to_intel_display(state->base.dev);
+	struct intel_display *display = to_intel_display(state);
 	const struct intel_plane_state *plane_state =
 		intel_atomic_get_new_plane_state(state, plane);
 	struct intel_fbc *fbc = plane->fbc;
@@ -2072,7 +2072,7 @@ static void __intel_fbc_enable(struct intel_atomic_state *state,
  */
 void intel_fbc_disable(struct intel_crtc *crtc)
 {
-	struct intel_display *display = to_intel_display(crtc->base.dev);
+	struct intel_display *display = to_intel_display(crtc);
 	struct intel_plane *plane;
 
 	for_each_intel_plane(display->drm, plane) {
-- 
2.47.3


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

* [PATCH v2 2/4] drm/xe/stolen: unify interface with i915
  2025-12-05 10:30 [PATCH v2 0/4] drm/{i915, xe}: migrate stolen interface to parent interface, cleanups Jani Nikula
  2025-12-05 10:30 ` [PATCH v2 1/4] drm/i915/fbc: let to_intel_display() do its generic magic Jani Nikula
@ 2025-12-05 10:30 ` Jani Nikula
  2025-12-09 13:34   ` Govindapillai, Vinod
  2025-12-05 10:30 ` [PATCH v2 3/4] drm/{i915, xe}/stolen: move stolen memory handling to display parent interface Jani Nikula
                   ` (3 subsequent siblings)
  5 siblings, 1 reply; 11+ messages in thread
From: Jani Nikula @ 2025-12-05 10:30 UTC (permalink / raw)
  To: intel-gfx, intel-xe; +Cc: jani.nikula

Have i915_gem_stolen_node_offset() return u64, and pass const pointer to
them.

Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 drivers/gpu/drm/xe/compat-i915-headers/gem/i915_gem_stolen.h | 4 ++--
 drivers/gpu/drm/xe/display/xe_stolen.c                       | 4 ++--
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/xe/compat-i915-headers/gem/i915_gem_stolen.h b/drivers/gpu/drm/xe/compat-i915-headers/gem/i915_gem_stolen.h
index 48e3256ba37e..368045a470d1 100644
--- a/drivers/gpu/drm/xe/compat-i915-headers/gem/i915_gem_stolen.h
+++ b/drivers/gpu/drm/xe/compat-i915-headers/gem/i915_gem_stolen.h
@@ -23,13 +23,13 @@ bool i915_gem_stolen_initialized(struct drm_device *drm);
 
 bool i915_gem_stolen_node_allocated(const struct intel_stolen_node *node);
 
-u32 i915_gem_stolen_node_offset(struct intel_stolen_node *node);
+u64 i915_gem_stolen_node_offset(const struct intel_stolen_node *node);
 
 u64 i915_gem_stolen_area_address(struct drm_device *drm);
 
 u64 i915_gem_stolen_area_size(struct drm_device *drm);
 
-u64 i915_gem_stolen_node_address(struct intel_stolen_node *node);
+u64 i915_gem_stolen_node_address(const struct intel_stolen_node *node);
 
 u64 i915_gem_stolen_node_size(const struct intel_stolen_node *node);
 
diff --git a/drivers/gpu/drm/xe/display/xe_stolen.c b/drivers/gpu/drm/xe/display/xe_stolen.c
index 9f04ba36e930..387506586288 100644
--- a/drivers/gpu/drm/xe/display/xe_stolen.c
+++ b/drivers/gpu/drm/xe/display/xe_stolen.c
@@ -67,7 +67,7 @@ bool i915_gem_stolen_node_allocated(const struct intel_stolen_node *node)
 	return node->bo;
 }
 
-u32 i915_gem_stolen_node_offset(struct intel_stolen_node *node)
+u64 i915_gem_stolen_node_offset(const struct intel_stolen_node *node)
 {
 	struct xe_res_cursor res;
 
@@ -91,7 +91,7 @@ u64 i915_gem_stolen_area_size(struct drm_device *drm)
 	return 0;
 }
 
-u64 i915_gem_stolen_node_address(struct intel_stolen_node *node)
+u64 i915_gem_stolen_node_address(const struct intel_stolen_node *node)
 {
 	struct xe_device *xe = node->xe;
 
-- 
2.47.3


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

* [PATCH v2 3/4] drm/{i915, xe}/stolen: move stolen memory handling to display parent interface
  2025-12-05 10:30 [PATCH v2 0/4] drm/{i915, xe}: migrate stolen interface to parent interface, cleanups Jani Nikula
  2025-12-05 10:30 ` [PATCH v2 1/4] drm/i915/fbc: let to_intel_display() do its generic magic Jani Nikula
  2025-12-05 10:30 ` [PATCH v2 2/4] drm/xe/stolen: unify interface with i915 Jani Nikula
@ 2025-12-05 10:30 ` Jani Nikula
  2025-12-09 14:15   ` Govindapillai, Vinod
  2025-12-05 10:30 ` [PATCH v2 4/4] drm/{i915, xe}/stolen: make insert_node, area_address, area_size optional Jani Nikula
                   ` (2 subsequent siblings)
  5 siblings, 1 reply; 11+ messages in thread
From: Jani Nikula @ 2025-12-05 10:30 UTC (permalink / raw)
  To: intel-gfx, intel-xe; +Cc: jani.nikula

Call the stolen memory interface through the display parent interface.

This makes xe compat gem/i915_gem_stolen.h redundant, and it can be
removed.

v2: Rebase, convert one more call that appeared

Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 drivers/gpu/drm/i915/display/intel_fbc.c      | 71 ++++++++++---------
 drivers/gpu/drm/i915/display/intel_parent.c   | 66 +++++++++++++++++
 drivers/gpu/drm/i915/display/intel_parent.h   | 19 +++++
 drivers/gpu/drm/i915/gem/i915_gem_stolen.c    | 52 +++++++++-----
 drivers/gpu/drm/i915/gem/i915_gem_stolen.h    | 23 +-----
 drivers/gpu/drm/i915/i915_driver.c            |  1 +
 .../compat-i915-headers/gem/i915_gem_stolen.h | 40 -----------
 drivers/gpu/drm/xe/display/xe_display.c       |  4 +-
 drivers/gpu/drm/xe/display/xe_stolen.c        | 47 ++++++++----
 drivers/gpu/drm/xe/display/xe_stolen.h        |  9 +++
 include/drm/intel/display_parent_interface.h  | 20 ++++++
 11 files changed, 222 insertions(+), 130 deletions(-)
 delete mode 100644 drivers/gpu/drm/xe/compat-i915-headers/gem/i915_gem_stolen.h
 create mode 100644 drivers/gpu/drm/xe/display/xe_stolen.h

diff --git a/drivers/gpu/drm/i915/display/intel_fbc.c b/drivers/gpu/drm/i915/display/intel_fbc.c
index 0e946bed484f..fef2f35ff1e9 100644
--- a/drivers/gpu/drm/i915/display/intel_fbc.c
+++ b/drivers/gpu/drm/i915/display/intel_fbc.c
@@ -45,8 +45,6 @@
 #include <drm/drm_fourcc.h>
 #include <drm/drm_print.h>
 
-#include "gem/i915_gem_stolen.h"
-
 #include "i915_vma.h"
 #include "i9xx_plane_regs.h"
 #include "intel_de.h"
@@ -393,17 +391,17 @@ static void i8xx_fbc_program_cfb(struct intel_fbc *fbc)
 	struct intel_display *display = fbc->display;
 
 	drm_WARN_ON(display->drm,
-		    range_end_overflows_t(u64, i915_gem_stolen_area_address(display->drm),
-					  i915_gem_stolen_node_offset(fbc->compressed_fb),
+		    range_end_overflows_t(u64, intel_parent_stolen_area_address(display),
+					  intel_parent_stolen_node_offset(display, fbc->compressed_fb),
 					  U32_MAX));
 	drm_WARN_ON(display->drm,
-		    range_end_overflows_t(u64, i915_gem_stolen_area_address(display->drm),
-					  i915_gem_stolen_node_offset(fbc->compressed_llb),
+		    range_end_overflows_t(u64, intel_parent_stolen_area_address(display),
+					  intel_parent_stolen_node_offset(display, fbc->compressed_llb),
 					  U32_MAX));
 	intel_de_write(display, FBC_CFB_BASE,
-		       i915_gem_stolen_node_address(fbc->compressed_fb));
+		       intel_parent_stolen_node_address(display, fbc->compressed_fb));
 	intel_de_write(display, FBC_LL_BASE,
-		       i915_gem_stolen_node_address(fbc->compressed_llb));
+		       intel_parent_stolen_node_address(display, fbc->compressed_llb));
 }
 
 static const struct intel_fbc_funcs i8xx_fbc_funcs = {
@@ -511,7 +509,7 @@ static void g4x_fbc_program_cfb(struct intel_fbc *fbc)
 	struct intel_display *display = fbc->display;
 
 	intel_de_write(display, DPFC_CB_BASE,
-		       i915_gem_stolen_node_offset(fbc->compressed_fb));
+		       intel_parent_stolen_node_offset(display, fbc->compressed_fb));
 }
 
 static const struct intel_fbc_funcs g4x_fbc_funcs = {
@@ -580,7 +578,7 @@ static void ilk_fbc_program_cfb(struct intel_fbc *fbc)
 	struct intel_display *display = fbc->display;
 
 	intel_de_write(display, ILK_DPFC_CB_BASE(fbc->id),
-		       i915_gem_stolen_node_offset(fbc->compressed_fb));
+		       intel_parent_stolen_node_offset(display, fbc->compressed_fb));
 }
 
 static const struct intel_fbc_funcs ilk_fbc_funcs = {
@@ -819,7 +817,7 @@ static u64 intel_fbc_stolen_end(struct intel_display *display)
 	 * underruns, even if that range is not reserved by the BIOS. */
 	if (display->platform.broadwell ||
 	    (DISPLAY_VER(display) == 9 && !display->platform.broxton))
-		end = i915_gem_stolen_area_size(display->drm) - 8 * 1024 * 1024;
+		end = intel_parent_stolen_area_size(display) - 8 * 1024 * 1024;
 	else
 		end = U64_MAX;
 
@@ -854,14 +852,14 @@ static int find_compression_limit(struct intel_fbc *fbc,
 	size /= limit;
 
 	/* Try to over-allocate to reduce reallocations and fragmentation. */
-	ret = i915_gem_stolen_insert_node_in_range(fbc->compressed_fb,
-						   size <<= 1, 4096, 0, end);
+	ret = intel_parent_stolen_insert_node_in_range(display, fbc->compressed_fb,
+						       size <<= 1, 4096, 0, end);
 	if (ret == 0)
 		return limit;
 
 	for (; limit <= intel_fbc_max_limit(display); limit <<= 1) {
-		ret = i915_gem_stolen_insert_node_in_range(fbc->compressed_fb,
-							   size >>= 1, 4096, 0, end);
+		ret = intel_parent_stolen_insert_node_in_range(display, fbc->compressed_fb,
+							       size >>= 1, 4096, 0, end);
 		if (ret == 0)
 			return limit;
 	}
@@ -876,12 +874,12 @@ static int intel_fbc_alloc_cfb(struct intel_fbc *fbc,
 	int ret;
 
 	drm_WARN_ON(display->drm,
-		    i915_gem_stolen_node_allocated(fbc->compressed_fb));
+		    intel_parent_stolen_node_allocated(display, fbc->compressed_fb));
 	drm_WARN_ON(display->drm,
-		    i915_gem_stolen_node_allocated(fbc->compressed_llb));
+		    intel_parent_stolen_node_allocated(display, fbc->compressed_llb));
 
 	if (DISPLAY_VER(display) < 5 && !display->platform.g4x) {
-		ret = i915_gem_stolen_insert_node(fbc->compressed_llb, 4096, 4096);
+		ret = intel_parent_stolen_insert_node(display, fbc->compressed_llb, 4096, 4096);
 		if (ret)
 			goto err;
 	}
@@ -897,14 +895,14 @@ static int intel_fbc_alloc_cfb(struct intel_fbc *fbc,
 
 	drm_dbg_kms(display->drm,
 		    "reserved %llu bytes of contiguous stolen space for FBC, limit: %d\n",
-		    i915_gem_stolen_node_size(fbc->compressed_fb), fbc->limit);
+		    intel_parent_stolen_node_size(display, fbc->compressed_fb), fbc->limit);
 	return 0;
 
 err_llb:
-	if (i915_gem_stolen_node_allocated(fbc->compressed_llb))
-		i915_gem_stolen_remove_node(fbc->compressed_llb);
+	if (intel_parent_stolen_node_allocated(display, fbc->compressed_llb))
+		intel_parent_stolen_remove_node(display, fbc->compressed_llb);
 err:
-	if (i915_gem_stolen_initialized(display->drm))
+	if (intel_parent_stolen_initialized(display))
 		drm_info_once(display->drm,
 			      "not enough stolen space for compressed buffer (need %d more bytes), disabling. Hint: you may be able to increase stolen memory size in the BIOS to avoid this.\n", size);
 	return -ENOSPC;
@@ -1010,7 +1008,7 @@ static void fbc_sys_cache_enable(const struct intel_fbc *fbc)
 
 	range = fbc_sys_cache_limit(display) / (64 * 1024);
 
-	offset = i915_gem_stolen_node_offset(fbc->compressed_fb) / (4 * 1024);
+	offset = intel_parent_stolen_node_offset(display, fbc->compressed_fb) / (4 * 1024);
 
 	cfg = FBC_SYS_CACHE_TAG_USE_RES_SPACE | FBC_SYS_CACHEABLE_RANGE(range) |
 	      FBC_SYS_CACHE_START_BASE(offset);
@@ -1024,13 +1022,15 @@ static void fbc_sys_cache_enable(const struct intel_fbc *fbc)
 
 static void __intel_fbc_cleanup_cfb(struct intel_fbc *fbc)
 {
+	struct intel_display *display = fbc->display;
+
 	if (WARN_ON(intel_fbc_hw_is_active(fbc)))
 		return;
 
-	if (i915_gem_stolen_node_allocated(fbc->compressed_llb))
-		i915_gem_stolen_remove_node(fbc->compressed_llb);
-	if (i915_gem_stolen_node_allocated(fbc->compressed_fb))
-		i915_gem_stolen_remove_node(fbc->compressed_fb);
+	if (intel_parent_stolen_node_allocated(display, fbc->compressed_llb))
+		intel_parent_stolen_remove_node(display, fbc->compressed_llb);
+	if (intel_parent_stolen_node_allocated(display, fbc->compressed_fb))
+		intel_parent_stolen_remove_node(display, fbc->compressed_fb);
 }
 
 void intel_fbc_cleanup(struct intel_display *display)
@@ -1043,8 +1043,8 @@ void intel_fbc_cleanup(struct intel_display *display)
 		__intel_fbc_cleanup_cfb(fbc);
 		mutex_unlock(&fbc->lock);
 
-		i915_gem_stolen_node_free(fbc->compressed_fb);
-		i915_gem_stolen_node_free(fbc->compressed_llb);
+		intel_parent_stolen_node_free(display, fbc->compressed_fb);
+		intel_parent_stolen_node_free(display, fbc->compressed_llb);
 
 		kfree(fbc);
 	}
@@ -1480,12 +1480,13 @@ static bool intel_fbc_is_fence_ok(const struct intel_plane_state *plane_state)
 
 static bool intel_fbc_is_cfb_ok(const struct intel_plane_state *plane_state)
 {
+	struct intel_display *display = to_intel_display(plane_state);
 	struct intel_plane *plane = to_intel_plane(plane_state->uapi.plane);
 	struct intel_fbc *fbc = plane->fbc;
 
 	return intel_fbc_min_limit(plane_state) <= fbc->limit &&
 		intel_fbc_cfb_size(plane_state) <= fbc->limit *
-			i915_gem_stolen_node_size(fbc->compressed_fb);
+			intel_parent_stolen_node_size(display, fbc->compressed_fb);
 }
 
 static bool intel_fbc_is_ok(const struct intel_plane_state *plane_state)
@@ -1577,7 +1578,7 @@ static int intel_fbc_check_plane(struct intel_atomic_state *state,
 	if (!fbc)
 		return 0;
 
-	if (!i915_gem_stolen_initialized(display->drm)) {
+	if (!intel_parent_stolen_initialized(display)) {
 		plane_state->no_fbc_reason = "stolen memory not initialised";
 		return 0;
 	}
@@ -2282,10 +2283,10 @@ static struct intel_fbc *intel_fbc_create(struct intel_display *display,
 	if (!fbc)
 		return NULL;
 
-	fbc->compressed_fb = i915_gem_stolen_node_alloc(display->drm);
+	fbc->compressed_fb = intel_parent_stolen_node_alloc(display);
 	if (!fbc->compressed_fb)
 		goto err;
-	fbc->compressed_llb = i915_gem_stolen_node_alloc(display->drm);
+	fbc->compressed_llb = intel_parent_stolen_node_alloc(display);
 	if (!fbc->compressed_llb)
 		goto err;
 
@@ -2310,8 +2311,8 @@ static struct intel_fbc *intel_fbc_create(struct intel_display *display,
 	return fbc;
 
 err:
-	i915_gem_stolen_node_free(fbc->compressed_llb);
-	i915_gem_stolen_node_free(fbc->compressed_fb);
+	intel_parent_stolen_node_free(display, fbc->compressed_llb);
+	intel_parent_stolen_node_free(display, fbc->compressed_fb);
 	kfree(fbc);
 
 	return NULL;
diff --git a/drivers/gpu/drm/i915/display/intel_parent.c b/drivers/gpu/drm/i915/display/intel_parent.c
index 2ea310cc3509..49cb64ca8c4c 100644
--- a/drivers/gpu/drm/i915/display/intel_parent.c
+++ b/drivers/gpu/drm/i915/display/intel_parent.c
@@ -79,6 +79,72 @@ void intel_parent_rps_ilk_irq_handler(struct intel_display *display)
 		display->parent->rps->ilk_irq_handler(display->drm);
 }
 
+int intel_parent_stolen_insert_node_in_range(struct intel_display *display,
+					     struct intel_stolen_node *node, u64 size,
+					     unsigned int align, u64 start, u64 end)
+{
+	return display->parent->stolen->insert_node_in_range(node, size, align, start, end);
+}
+
+int intel_parent_stolen_insert_node(struct intel_display *display, struct intel_stolen_node *node, u64 size,
+				    unsigned int align)
+{
+	return display->parent->stolen->insert_node(node, size, align);
+}
+
+void intel_parent_stolen_remove_node(struct intel_display *display,
+				     struct intel_stolen_node *node)
+{
+	display->parent->stolen->remove_node(node);
+}
+
+bool intel_parent_stolen_initialized(struct intel_display *display)
+{
+	return display->parent->stolen->initialized(display->drm);
+}
+
+bool intel_parent_stolen_node_allocated(struct intel_display *display,
+					const struct intel_stolen_node *node)
+{
+	return display->parent->stolen->node_allocated(node);
+}
+
+u32 intel_parent_stolen_node_offset(struct intel_display *display, struct intel_stolen_node *node)
+{
+	return display->parent->stolen->node_offset(node);
+}
+
+u64 intel_parent_stolen_area_address(struct intel_display *display)
+{
+	return display->parent->stolen->area_address(display->drm);
+}
+
+u64 intel_parent_stolen_area_size(struct intel_display *display)
+{
+	return display->parent->stolen->area_size(display->drm);
+}
+
+u64 intel_parent_stolen_node_address(struct intel_display *display, struct intel_stolen_node *node)
+{
+	return display->parent->stolen->node_address(node);
+}
+
+u64 intel_parent_stolen_node_size(struct intel_display *display, const struct intel_stolen_node *node)
+{
+	return display->parent->stolen->node_size(node);
+}
+
+struct intel_stolen_node *intel_parent_stolen_node_alloc(struct intel_display *display)
+{
+	return display->parent->stolen->node_alloc(display->drm);
+}
+
+void intel_parent_stolen_node_free(struct intel_display *display, const struct intel_stolen_node *node)
+{
+	display->parent->stolen->node_free(node);
+}
+
+
 bool intel_parent_vgpu_active(struct intel_display *display)
 {
 	return display->parent->vgpu_active && display->parent->vgpu_active(display->drm);
diff --git a/drivers/gpu/drm/i915/display/intel_parent.h b/drivers/gpu/drm/i915/display/intel_parent.h
index 8f91a6f75c53..bc740dfad985 100644
--- a/drivers/gpu/drm/i915/display/intel_parent.h
+++ b/drivers/gpu/drm/i915/display/intel_parent.h
@@ -9,6 +9,7 @@
 struct dma_fence;
 struct intel_display;
 struct intel_hdcp_gsc_context;
+struct intel_stolen_node;
 
 ssize_t intel_parent_hdcp_gsc_msg_send(struct intel_display *display,
 				       struct intel_hdcp_gsc_context *gsc_context,
@@ -27,6 +28,24 @@ void intel_parent_rps_boost_if_not_started(struct intel_display *display, struct
 void intel_parent_rps_mark_interactive(struct intel_display *display, bool interactive);
 void intel_parent_rps_ilk_irq_handler(struct intel_display *display);
 
+int intel_parent_stolen_insert_node_in_range(struct intel_display *display,
+					     struct intel_stolen_node *node, u64 size,
+					     unsigned int align, u64 start, u64 end);
+int intel_parent_stolen_insert_node(struct intel_display *display, struct intel_stolen_node *node, u64 size,
+				    unsigned int align);
+void intel_parent_stolen_remove_node(struct intel_display *display,
+				     struct intel_stolen_node *node);
+bool intel_parent_stolen_initialized(struct intel_display *display);
+bool intel_parent_stolen_node_allocated(struct intel_display *display,
+					const struct intel_stolen_node *node);
+u32 intel_parent_stolen_node_offset(struct intel_display *display, struct intel_stolen_node *node);
+u64 intel_parent_stolen_area_address(struct intel_display *display);
+u64 intel_parent_stolen_area_size(struct intel_display *display);
+u64 intel_parent_stolen_node_address(struct intel_display *display, struct intel_stolen_node *node);
+u64 intel_parent_stolen_node_size(struct intel_display *display, const struct intel_stolen_node *node);
+struct intel_stolen_node *intel_parent_stolen_node_alloc(struct intel_display *display);
+void intel_parent_stolen_node_free(struct intel_display *display, const struct intel_stolen_node *node);
+
 bool intel_parent_vgpu_active(struct intel_display *display);
 
 bool intel_parent_has_fenced_regions(struct intel_display *display);
diff --git a/drivers/gpu/drm/i915/gem/i915_gem_stolen.c b/drivers/gpu/drm/i915/gem/i915_gem_stolen.c
index f859c99f969b..c3e0b8da485c 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_stolen.c
+++ b/drivers/gpu/drm/i915/gem/i915_gem_stolen.c
@@ -8,6 +8,7 @@
 
 #include <drm/drm_mm.h>
 #include <drm/drm_print.h>
+#include <drm/intel/display_parent_interface.h>
 #include <drm/intel/i915_drm.h>
 
 #include "gem/i915_gem_lmem.h"
@@ -64,8 +65,8 @@ static int __i915_gem_stolen_insert_node_in_range(struct drm_i915_private *i915,
 	return ret;
 }
 
-int i915_gem_stolen_insert_node_in_range(struct intel_stolen_node *node, u64 size,
-					 unsigned int alignment, u64 start, u64 end)
+static int i915_gem_stolen_insert_node_in_range(struct intel_stolen_node *node, u64 size,
+						unsigned int alignment, u64 start, u64 end)
 {
 	return __i915_gem_stolen_insert_node_in_range(node->i915, &node->node,
 						      size, alignment,
@@ -82,8 +83,8 @@ static int __i915_gem_stolen_insert_node(struct drm_i915_private *i915,
 						      U64_MAX);
 }
 
-int i915_gem_stolen_insert_node(struct intel_stolen_node *node, u64 size,
-				unsigned int alignment)
+static int i915_gem_stolen_insert_node(struct intel_stolen_node *node, u64 size,
+				       unsigned int alignment)
 {
 	return __i915_gem_stolen_insert_node(node->i915, &node->node, size, alignment);
 }
@@ -96,7 +97,7 @@ static void __i915_gem_stolen_remove_node(struct drm_i915_private *i915,
 	mutex_unlock(&i915->mm.stolen_lock);
 }
 
-void i915_gem_stolen_remove_node(struct intel_stolen_node *node)
+static void i915_gem_stolen_remove_node(struct intel_stolen_node *node)
 {
 	__i915_gem_stolen_remove_node(node->i915, &node->node);
 }
@@ -1025,50 +1026,50 @@ bool i915_gem_object_is_stolen(const struct drm_i915_gem_object *obj)
 	return obj->ops == &i915_gem_object_stolen_ops;
 }
 
-bool i915_gem_stolen_initialized(struct drm_device *drm)
+static bool i915_gem_stolen_initialized(struct drm_device *drm)
 {
 	struct drm_i915_private *i915 = to_i915(drm);
 
 	return drm_mm_initialized(&i915->mm.stolen);
 }
 
-u64 i915_gem_stolen_area_address(struct drm_device *drm)
+static u64 i915_gem_stolen_area_address(struct drm_device *drm)
 {
 	struct drm_i915_private *i915 = to_i915(drm);
 
 	return i915->dsm.stolen.start;
 }
 
-u64 i915_gem_stolen_area_size(struct drm_device *drm)
+static u64 i915_gem_stolen_area_size(struct drm_device *drm)
 {
 	struct drm_i915_private *i915 = to_i915(drm);
 
 	return resource_size(&i915->dsm.stolen);
 }
 
-u64 i915_gem_stolen_node_address(const struct intel_stolen_node *node)
+static u64 i915_gem_stolen_node_offset(const struct intel_stolen_node *node)
+{
+	return node->node.start;
+}
+
+static u64 i915_gem_stolen_node_address(const struct intel_stolen_node *node)
 {
 	struct drm_i915_private *i915 = node->i915;
 
 	return i915->dsm.stolen.start + i915_gem_stolen_node_offset(node);
 }
 
-bool i915_gem_stolen_node_allocated(const struct intel_stolen_node *node)
+static bool i915_gem_stolen_node_allocated(const struct intel_stolen_node *node)
 {
 	return drm_mm_node_allocated(&node->node);
 }
 
-u64 i915_gem_stolen_node_offset(const struct intel_stolen_node *node)
-{
-	return node->node.start;
-}
-
-u64 i915_gem_stolen_node_size(const struct intel_stolen_node *node)
+static u64 i915_gem_stolen_node_size(const struct intel_stolen_node *node)
 {
 	return node->node.size;
 }
 
-struct intel_stolen_node *i915_gem_stolen_node_alloc(struct drm_device *drm)
+static struct intel_stolen_node *i915_gem_stolen_node_alloc(struct drm_device *drm)
 {
 	struct drm_i915_private *i915 = to_i915(drm);
 	struct intel_stolen_node *node;
@@ -1082,7 +1083,22 @@ struct intel_stolen_node *i915_gem_stolen_node_alloc(struct drm_device *drm)
 	return node;
 }
 
-void i915_gem_stolen_node_free(const struct intel_stolen_node *node)
+static void i915_gem_stolen_node_free(const struct intel_stolen_node *node)
 {
 	kfree(node);
 }
+
+const struct intel_display_stolen_interface i915_display_stolen_interface = {
+	.insert_node_in_range = i915_gem_stolen_insert_node_in_range,
+	.insert_node = i915_gem_stolen_insert_node,
+	.remove_node = i915_gem_stolen_remove_node,
+	.initialized = i915_gem_stolen_initialized,
+	.node_allocated = i915_gem_stolen_node_allocated,
+	.node_offset = i915_gem_stolen_node_offset,
+	.area_address = i915_gem_stolen_area_address,
+	.area_size = i915_gem_stolen_area_size,
+	.node_address = i915_gem_stolen_node_address,
+	.node_size = i915_gem_stolen_node_size,
+	.node_alloc = i915_gem_stolen_node_alloc,
+	.node_free = i915_gem_stolen_node_free,
+};
diff --git a/drivers/gpu/drm/i915/gem/i915_gem_stolen.h b/drivers/gpu/drm/i915/gem/i915_gem_stolen.h
index 7b0386002ed4..6db5262046a2 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_stolen.h
+++ b/drivers/gpu/drm/i915/gem/i915_gem_stolen.h
@@ -8,17 +8,9 @@
 
 #include <linux/types.h>
 
-struct drm_device;
 struct drm_i915_gem_object;
 struct drm_i915_private;
-struct intel_stolen_node;
-
-int i915_gem_stolen_insert_node(struct intel_stolen_node *node, u64 size,
-				unsigned alignment);
-int i915_gem_stolen_insert_node_in_range(struct intel_stolen_node *node, u64 size,
-					 unsigned alignment, u64 start,
-					 u64 end);
-void i915_gem_stolen_remove_node(struct intel_stolen_node *node);
+
 struct intel_memory_region *
 i915_gem_stolen_smem_setup(struct drm_i915_private *i915, u16 type,
 			   u16 instance);
@@ -34,17 +26,6 @@ bool i915_gem_object_is_stolen(const struct drm_i915_gem_object *obj);
 
 #define I915_GEM_STOLEN_BIAS SZ_128K
 
-bool i915_gem_stolen_initialized(struct drm_device *drm);
-u64 i915_gem_stolen_area_address(struct drm_device *drm);
-u64 i915_gem_stolen_area_size(struct drm_device *drm);
-
-u64 i915_gem_stolen_node_address(const struct intel_stolen_node *node);
-
-bool i915_gem_stolen_node_allocated(const struct intel_stolen_node *node);
-u64 i915_gem_stolen_node_offset(const struct intel_stolen_node *node);
-u64 i915_gem_stolen_node_size(const struct intel_stolen_node *node);
-
-struct intel_stolen_node *i915_gem_stolen_node_alloc(struct drm_device *drm);
-void i915_gem_stolen_node_free(const struct intel_stolen_node *node);
+extern const struct intel_display_stolen_interface i915_display_stolen_interface;
 
 #endif /* __I915_GEM_STOLEN_H__ */
diff --git a/drivers/gpu/drm/i915/i915_driver.c b/drivers/gpu/drm/i915/i915_driver.c
index d98839427ef9..fe84df4eae8f 100644
--- a/drivers/gpu/drm/i915/i915_driver.c
+++ b/drivers/gpu/drm/i915/i915_driver.c
@@ -762,6 +762,7 @@ static const struct intel_display_parent_interface parent = {
 	.rpm = &i915_display_rpm_interface,
 	.irq = &i915_display_irq_interface,
 	.rps = &i915_display_rps_interface,
+	.stolen = &i915_display_stolen_interface,
 	.vgpu_active = vgpu_active,
 	.has_fenced_regions = has_fenced_regions,
 	.fence_priority_display = fence_priority_display,
diff --git a/drivers/gpu/drm/xe/compat-i915-headers/gem/i915_gem_stolen.h b/drivers/gpu/drm/xe/compat-i915-headers/gem/i915_gem_stolen.h
deleted file mode 100644
index 368045a470d1..000000000000
--- a/drivers/gpu/drm/xe/compat-i915-headers/gem/i915_gem_stolen.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/* SPDX-License-Identifier: MIT */
-/*
- * Copyright © 2024 Intel Corporation
- */
-
-#ifndef _I915_GEM_STOLEN_H_
-#define _I915_GEM_STOLEN_H_
-
-#include <linux/types.h>
-
-struct drm_device;
-struct intel_stolen_node;
-
-int i915_gem_stolen_insert_node_in_range(struct intel_stolen_node *node, u64 size,
-					 unsigned int align, u64 start, u64 end);
-
-int i915_gem_stolen_insert_node(struct intel_stolen_node *node, u64 size,
-				unsigned int align);
-
-void i915_gem_stolen_remove_node(struct intel_stolen_node *node);
-
-bool i915_gem_stolen_initialized(struct drm_device *drm);
-
-bool i915_gem_stolen_node_allocated(const struct intel_stolen_node *node);
-
-u64 i915_gem_stolen_node_offset(const struct intel_stolen_node *node);
-
-u64 i915_gem_stolen_area_address(struct drm_device *drm);
-
-u64 i915_gem_stolen_area_size(struct drm_device *drm);
-
-u64 i915_gem_stolen_node_address(const struct intel_stolen_node *node);
-
-u64 i915_gem_stolen_node_size(const struct intel_stolen_node *node);
-
-struct intel_stolen_node *i915_gem_stolen_node_alloc(struct drm_device *drm);
-
-void i915_gem_stolen_node_free(const struct intel_stolen_node *node);
-
-#endif
diff --git a/drivers/gpu/drm/xe/display/xe_display.c b/drivers/gpu/drm/xe/display/xe_display.c
index 9d2aa69ea428..9fb5c2f3ddd8 100644
--- a/drivers/gpu/drm/xe/display/xe_display.c
+++ b/drivers/gpu/drm/xe/display/xe_display.c
@@ -36,8 +36,9 @@
 #include "intel_opregion.h"
 #include "skl_watermark.h"
 #include "xe_display_rpm.h"
-#include "xe_module.h"
 #include "xe_hdcp_gsc.h"
+#include "xe_module.h"
+#include "xe_stolen.h"
 
 /* Ensure drm and display members are placed properly. */
 INTEL_DISPLAY_MEMBER_STATIC_ASSERT(struct xe_device, drm, display);
@@ -538,6 +539,7 @@ static const struct intel_display_parent_interface parent = {
 	.hdcp = &xe_display_hdcp_interface,
 	.rpm = &xe_display_rpm_interface,
 	.irq = &xe_display_irq_interface,
+	.stolen = &xe_display_stolen_interface,
 };
 
 /**
diff --git a/drivers/gpu/drm/xe/display/xe_stolen.c b/drivers/gpu/drm/xe/display/xe_stolen.c
index 387506586288..cc7aec7db76c 100644
--- a/drivers/gpu/drm/xe/display/xe_stolen.c
+++ b/drivers/gpu/drm/xe/display/xe_stolen.c
@@ -1,8 +1,10 @@
 // SPDX-License-Identifier: MIT
 /* Copyright © 2025 Intel Corporation */
 
-#include "gem/i915_gem_stolen.h"
+#include <drm/intel/display_parent_interface.h>
+
 #include "xe_res_cursor.h"
+#include "xe_stolen.h"
 #include "xe_ttm_stolen_mgr.h"
 #include "xe_validation.h"
 
@@ -11,8 +13,8 @@ struct intel_stolen_node {
 	struct xe_bo *bo;
 };
 
-int i915_gem_stolen_insert_node_in_range(struct intel_stolen_node *node, u64 size,
-					 unsigned int align, u64 start, u64 end)
+static int xe_stolen_insert_node_in_range(struct intel_stolen_node *node, u64 size,
+					  unsigned int align, u64 start, u64 end)
 {
 	struct xe_device *xe = node->xe;
 
@@ -41,7 +43,7 @@ int i915_gem_stolen_insert_node_in_range(struct intel_stolen_node *node, u64 siz
 	return err;
 }
 
-int i915_gem_stolen_insert_node(struct intel_stolen_node *node, u64 size, unsigned int align)
+static int xe_stolen_insert_node(struct intel_stolen_node *node, u64 size, unsigned int align)
 {
 	/* Not used on xe */
 	WARN_ON(1);
@@ -49,25 +51,25 @@ int i915_gem_stolen_insert_node(struct intel_stolen_node *node, u64 size, unsign
 	return -ENODEV;
 }
 
-void i915_gem_stolen_remove_node(struct intel_stolen_node *node)
+static void xe_stolen_remove_node(struct intel_stolen_node *node)
 {
 	xe_bo_unpin_map_no_vm(node->bo);
 	node->bo = NULL;
 }
 
-bool i915_gem_stolen_initialized(struct drm_device *drm)
+static bool xe_stolen_initialized(struct drm_device *drm)
 {
 	struct xe_device *xe = to_xe_device(drm);
 
 	return ttm_manager_type(&xe->ttm, XE_PL_STOLEN);
 }
 
-bool i915_gem_stolen_node_allocated(const struct intel_stolen_node *node)
+static bool xe_stolen_node_allocated(const struct intel_stolen_node *node)
 {
 	return node->bo;
 }
 
-u64 i915_gem_stolen_node_offset(const struct intel_stolen_node *node)
+static u64 xe_stolen_node_offset(const struct intel_stolen_node *node)
 {
 	struct xe_res_cursor res;
 
@@ -76,7 +78,7 @@ u64 i915_gem_stolen_node_offset(const struct intel_stolen_node *node)
 }
 
 /* Used for < gen4. These are not supported by Xe */
-u64 i915_gem_stolen_area_address(struct drm_device *drm)
+static u64 xe_stolen_area_address(struct drm_device *drm)
 {
 	WARN_ON(1);
 
@@ -84,26 +86,26 @@ u64 i915_gem_stolen_area_address(struct drm_device *drm)
 }
 
 /* Used for gen9 specific WA. Gen9 is not supported by Xe */
-u64 i915_gem_stolen_area_size(struct drm_device *drm)
+static u64 xe_stolen_area_size(struct drm_device *drm)
 {
 	WARN_ON(1);
 
 	return 0;
 }
 
-u64 i915_gem_stolen_node_address(const struct intel_stolen_node *node)
+static u64 xe_stolen_node_address(const struct intel_stolen_node *node)
 {
 	struct xe_device *xe = node->xe;
 
-	return xe_ttm_stolen_gpu_offset(xe) + i915_gem_stolen_node_offset(node);
+	return xe_ttm_stolen_gpu_offset(xe) + xe_stolen_node_offset(node);
 }
 
-u64 i915_gem_stolen_node_size(const struct intel_stolen_node *node)
+static u64 xe_stolen_node_size(const struct intel_stolen_node *node)
 {
 	return node->bo->ttm.base.size;
 }
 
-struct intel_stolen_node *i915_gem_stolen_node_alloc(struct drm_device *drm)
+static struct intel_stolen_node *xe_stolen_node_alloc(struct drm_device *drm)
 {
 	struct xe_device *xe = to_xe_device(drm);
 	struct intel_stolen_node *node;
@@ -117,7 +119,22 @@ struct intel_stolen_node *i915_gem_stolen_node_alloc(struct drm_device *drm)
 	return node;
 }
 
-void i915_gem_stolen_node_free(const struct intel_stolen_node *node)
+static void xe_stolen_node_free(const struct intel_stolen_node *node)
 {
 	kfree(node);
 }
+
+const struct intel_display_stolen_interface xe_display_stolen_interface = {
+	.insert_node_in_range = xe_stolen_insert_node_in_range,
+	.insert_node = xe_stolen_insert_node,
+	.remove_node = xe_stolen_remove_node,
+	.initialized = xe_stolen_initialized,
+	.node_allocated = xe_stolen_node_allocated,
+	.node_offset = xe_stolen_node_offset,
+	.area_address = xe_stolen_area_address,
+	.area_size = xe_stolen_area_size,
+	.node_address = xe_stolen_node_address,
+	.node_size = xe_stolen_node_size,
+	.node_alloc = xe_stolen_node_alloc,
+	.node_free = xe_stolen_node_free,
+};
diff --git a/drivers/gpu/drm/xe/display/xe_stolen.h b/drivers/gpu/drm/xe/display/xe_stolen.h
new file mode 100644
index 000000000000..db86b9e01242
--- /dev/null
+++ b/drivers/gpu/drm/xe/display/xe_stolen.h
@@ -0,0 +1,9 @@
+/* SPDX-License-Identifier: MIT */
+/* Copyright © 2025 Intel Corporation */
+
+#ifndef __XE_STOLEN_H__
+#define __XE_STOLEN_H__
+
+extern const struct intel_display_stolen_interface xe_display_stolen_interface;
+
+#endif
diff --git a/include/drm/intel/display_parent_interface.h b/include/drm/intel/display_parent_interface.h
index 61d1b22adc83..f590e846464d 100644
--- a/include/drm/intel/display_parent_interface.h
+++ b/include/drm/intel/display_parent_interface.h
@@ -9,6 +9,7 @@
 struct dma_fence;
 struct drm_device;
 struct intel_hdcp_gsc_context;
+struct intel_stolen_node;
 struct ref_tracker;
 
 struct intel_display_rpm_interface {
@@ -47,6 +48,22 @@ struct intel_display_rps_interface {
 	void (*ilk_irq_handler)(struct drm_device *drm);
 };
 
+struct intel_display_stolen_interface {
+	int (*insert_node_in_range)(struct intel_stolen_node *node, u64 size,
+				    unsigned int align, u64 start, u64 end);
+	int (*insert_node)(struct intel_stolen_node *node, u64 size, unsigned int align);
+	void (*remove_node)(struct intel_stolen_node *node);
+	bool (*initialized)(struct drm_device *drm);
+	bool (*node_allocated)(const struct intel_stolen_node *node);
+	u64 (*node_offset)(const struct intel_stolen_node *node);
+	u64 (*area_address)(struct drm_device *drm);
+	u64 (*area_size)(struct drm_device *drm);
+	u64 (*node_address)(const struct intel_stolen_node *node);
+	u64 (*node_size)(const struct intel_stolen_node *node);
+	struct intel_stolen_node *(*node_alloc)(struct drm_device *drm);
+	void (*node_free)(const struct intel_stolen_node *node);
+};
+
 /**
  * struct intel_display_parent_interface - services parent driver provides to display
  *
@@ -72,6 +89,9 @@ struct intel_display_parent_interface {
 	/** @rpm: RPS interface. Optional. */
 	const struct intel_display_rps_interface *rps;
 
+	/** @stolen: Stolen memory. */
+	const struct intel_display_stolen_interface *stolen;
+
 	/** @vgpu_active: Is vGPU active? Optional. */
 	bool (*vgpu_active)(struct drm_device *drm);
 
-- 
2.47.3


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

* [PATCH v2 4/4] drm/{i915, xe}/stolen: make insert_node, area_address, area_size optional
  2025-12-05 10:30 [PATCH v2 0/4] drm/{i915, xe}: migrate stolen interface to parent interface, cleanups Jani Nikula
                   ` (2 preceding siblings ...)
  2025-12-05 10:30 ` [PATCH v2 3/4] drm/{i915, xe}/stolen: move stolen memory handling to display parent interface Jani Nikula
@ 2025-12-05 10:30 ` Jani Nikula
  2025-12-09 14:16   ` Govindapillai, Vinod
  2025-12-05 14:44 ` ✓ i915.CI.BAT: success for drm/{i915, xe}: migrate stolen interface to parent interface, cleanups (rev2) Patchwork
  2025-12-06 13:52 ` ✗ i915.CI.Full: failure " Patchwork
  5 siblings, 1 reply; 11+ messages in thread
From: Jani Nikula @ 2025-12-05 10:30 UTC (permalink / raw)
  To: intel-gfx, intel-xe; +Cc: jani.nikula

Since the stolen memory hooks are function pointers, make some of them
optional instead of having to define them for xe.

insert_node, area_address, and area_size are only needed on platforms
not supported by xe.

Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 drivers/gpu/drm/i915/display/intel_parent.c  | 10 ++++++++
 drivers/gpu/drm/xe/display/xe_stolen.c       | 27 --------------------
 include/drm/intel/display_parent_interface.h |  6 ++---
 3 files changed, 13 insertions(+), 30 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_parent.c b/drivers/gpu/drm/i915/display/intel_parent.c
index 49cb64ca8c4c..d16163007545 100644
--- a/drivers/gpu/drm/i915/display/intel_parent.c
+++ b/drivers/gpu/drm/i915/display/intel_parent.c
@@ -17,6 +17,7 @@
  * function pointer interface.
  */
 
+#include <drm/drm_print.h>
 #include <drm/intel/display_parent_interface.h>
 
 #include "intel_display_core.h"
@@ -89,6 +90,9 @@ int intel_parent_stolen_insert_node_in_range(struct intel_display *display,
 int intel_parent_stolen_insert_node(struct intel_display *display, struct intel_stolen_node *node, u64 size,
 				    unsigned int align)
 {
+	if (drm_WARN_ON_ONCE(display->drm, !display->parent->stolen->insert_node))
+		return -ENODEV;
+
 	return display->parent->stolen->insert_node(node, size, align);
 }
 
@@ -116,11 +120,17 @@ u32 intel_parent_stolen_node_offset(struct intel_display *display, struct intel_
 
 u64 intel_parent_stolen_area_address(struct intel_display *display)
 {
+	if (drm_WARN_ON_ONCE(display->drm, !display->parent->stolen->area_address))
+		return 0;
+
 	return display->parent->stolen->area_address(display->drm);
 }
 
 u64 intel_parent_stolen_area_size(struct intel_display *display)
 {
+	if (drm_WARN_ON_ONCE(display->drm, !display->parent->stolen->area_size))
+		return 0;
+
 	return display->parent->stolen->area_size(display->drm);
 }
 
diff --git a/drivers/gpu/drm/xe/display/xe_stolen.c b/drivers/gpu/drm/xe/display/xe_stolen.c
index cc7aec7db76c..12771709183a 100644
--- a/drivers/gpu/drm/xe/display/xe_stolen.c
+++ b/drivers/gpu/drm/xe/display/xe_stolen.c
@@ -43,14 +43,6 @@ static int xe_stolen_insert_node_in_range(struct intel_stolen_node *node, u64 si
 	return err;
 }
 
-static int xe_stolen_insert_node(struct intel_stolen_node *node, u64 size, unsigned int align)
-{
-	/* Not used on xe */
-	WARN_ON(1);
-
-	return -ENODEV;
-}
-
 static void xe_stolen_remove_node(struct intel_stolen_node *node)
 {
 	xe_bo_unpin_map_no_vm(node->bo);
@@ -77,22 +69,6 @@ static u64 xe_stolen_node_offset(const struct intel_stolen_node *node)
 	return res.start;
 }
 
-/* Used for < gen4. These are not supported by Xe */
-static u64 xe_stolen_area_address(struct drm_device *drm)
-{
-	WARN_ON(1);
-
-	return 0;
-}
-
-/* Used for gen9 specific WA. Gen9 is not supported by Xe */
-static u64 xe_stolen_area_size(struct drm_device *drm)
-{
-	WARN_ON(1);
-
-	return 0;
-}
-
 static u64 xe_stolen_node_address(const struct intel_stolen_node *node)
 {
 	struct xe_device *xe = node->xe;
@@ -126,13 +102,10 @@ static void xe_stolen_node_free(const struct intel_stolen_node *node)
 
 const struct intel_display_stolen_interface xe_display_stolen_interface = {
 	.insert_node_in_range = xe_stolen_insert_node_in_range,
-	.insert_node = xe_stolen_insert_node,
 	.remove_node = xe_stolen_remove_node,
 	.initialized = xe_stolen_initialized,
 	.node_allocated = xe_stolen_node_allocated,
 	.node_offset = xe_stolen_node_offset,
-	.area_address = xe_stolen_area_address,
-	.area_size = xe_stolen_area_size,
 	.node_address = xe_stolen_node_address,
 	.node_size = xe_stolen_node_size,
 	.node_alloc = xe_stolen_node_alloc,
diff --git a/include/drm/intel/display_parent_interface.h b/include/drm/intel/display_parent_interface.h
index f590e846464d..cc13b2ce1324 100644
--- a/include/drm/intel/display_parent_interface.h
+++ b/include/drm/intel/display_parent_interface.h
@@ -51,13 +51,13 @@ struct intel_display_rps_interface {
 struct intel_display_stolen_interface {
 	int (*insert_node_in_range)(struct intel_stolen_node *node, u64 size,
 				    unsigned int align, u64 start, u64 end);
-	int (*insert_node)(struct intel_stolen_node *node, u64 size, unsigned int align);
+	int (*insert_node)(struct intel_stolen_node *node, u64 size, unsigned int align); /* Optional */
 	void (*remove_node)(struct intel_stolen_node *node);
 	bool (*initialized)(struct drm_device *drm);
 	bool (*node_allocated)(const struct intel_stolen_node *node);
 	u64 (*node_offset)(const struct intel_stolen_node *node);
-	u64 (*area_address)(struct drm_device *drm);
-	u64 (*area_size)(struct drm_device *drm);
+	u64 (*area_address)(struct drm_device *drm); /* Optional */
+	u64 (*area_size)(struct drm_device *drm); /* Optional */
 	u64 (*node_address)(const struct intel_stolen_node *node);
 	u64 (*node_size)(const struct intel_stolen_node *node);
 	struct intel_stolen_node *(*node_alloc)(struct drm_device *drm);
-- 
2.47.3


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

* ✓ i915.CI.BAT: success for drm/{i915, xe}: migrate stolen interface to parent interface, cleanups (rev2)
  2025-12-05 10:30 [PATCH v2 0/4] drm/{i915, xe}: migrate stolen interface to parent interface, cleanups Jani Nikula
                   ` (3 preceding siblings ...)
  2025-12-05 10:30 ` [PATCH v2 4/4] drm/{i915, xe}/stolen: make insert_node, area_address, area_size optional Jani Nikula
@ 2025-12-05 14:44 ` Patchwork
  2025-12-06 13:52 ` ✗ i915.CI.Full: failure " Patchwork
  5 siblings, 0 replies; 11+ messages in thread
From: Patchwork @ 2025-12-05 14:44 UTC (permalink / raw)
  To: Jani Nikula; +Cc: intel-gfx

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

== Series Details ==

Series: drm/{i915, xe}: migrate stolen interface to parent interface, cleanups (rev2)
URL   : https://patchwork.freedesktop.org/series/158509/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_17640 -> Patchwork_158509v2
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

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

Participating hosts (45 -> 44)
------------------------------

  Missing    (1): fi-snb-2520m 

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

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

### IGT changes ###

#### Issues hit ####

  * igt@i915_selftest@live:
    - bat-mtlp-8:         [PASS][1] -> [DMESG-FAIL][2] ([i915#12061]) +1 other test dmesg-fail
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/bat-mtlp-8/igt@i915_selftest@live.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/bat-mtlp-8/igt@i915_selftest@live.html
    - bat-apl-1:          [PASS][3] -> [DMESG-FAIL][4] ([i915#14808]) +1 other test dmesg-fail
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/bat-apl-1/igt@i915_selftest@live.html
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/bat-apl-1/igt@i915_selftest@live.html

  * igt@i915_selftest@live@mman:
    - bat-atsm-1:         NOTRUN -> [DMESG-FAIL][5] ([i915#14204])
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/bat-atsm-1/igt@i915_selftest@live@mman.html

  * igt@i915_selftest@live@workarounds:
    - bat-dg2-9:          [PASS][6] -> [DMESG-FAIL][7] ([i915#12061]) +1 other test dmesg-fail
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/bat-dg2-9/igt@i915_selftest@live@workarounds.html
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/bat-dg2-9/igt@i915_selftest@live@workarounds.html
    - bat-mtlp-9:         [PASS][8] -> [DMESG-FAIL][9] ([i915#12061]) +1 other test dmesg-fail
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/bat-mtlp-9/igt@i915_selftest@live@workarounds.html
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/bat-mtlp-9/igt@i915_selftest@live@workarounds.html
    - bat-arls-6:         [PASS][10] -> [DMESG-FAIL][11] ([i915#12061]) +1 other test dmesg-fail
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/bat-arls-6/igt@i915_selftest@live@workarounds.html
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/bat-arls-6/igt@i915_selftest@live@workarounds.html

  
#### Possible fixes ####

  * igt@i915_selftest@live@requests:
    - bat-atsm-1:         [INCOMPLETE][12] -> [PASS][13]
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/bat-atsm-1/igt@i915_selftest@live@requests.html
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/bat-atsm-1/igt@i915_selftest@live@requests.html

  * igt@kms_flip@basic-flip-vs-modeset:
    - fi-bsw-n3050:       [DMESG-WARN][14] ([i915#15371]) -> [PASS][15] +5 other tests pass
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/fi-bsw-n3050/igt@kms_flip@basic-flip-vs-modeset.html
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/fi-bsw-n3050/igt@kms_flip@basic-flip-vs-modeset.html

  
#### Warnings ####

  * igt@i915_selftest@live:
    - bat-atsm-1:         [INCOMPLETE][16] ([i915#12061] / [i915#15157]) -> [DMESG-FAIL][17] ([i915#12061] / [i915#14204])
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/bat-atsm-1/igt@i915_selftest@live.html
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/bat-atsm-1/igt@i915_selftest@live.html

  
  [i915#12061]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12061
  [i915#14204]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14204
  [i915#14808]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14808
  [i915#15157]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15157
  [i915#15371]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15371


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

  * Linux: CI_DRM_17640 -> Patchwork_158509v2

  CI-20190529: 20190529
  CI_DRM_17640: a36e2c7fed2132052900236e8c7aa563d339baaf @ git://anongit.freedesktop.org/gfx-ci/linux
  IGT_8655: 8655
  Patchwork_158509v2: a36e2c7fed2132052900236e8c7aa563d339baaf @ git://anongit.freedesktop.org/gfx-ci/linux

== Logs ==

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

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

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

* ✗ i915.CI.Full: failure for drm/{i915, xe}: migrate stolen interface to parent interface, cleanups (rev2)
  2025-12-05 10:30 [PATCH v2 0/4] drm/{i915, xe}: migrate stolen interface to parent interface, cleanups Jani Nikula
                   ` (4 preceding siblings ...)
  2025-12-05 14:44 ` ✓ i915.CI.BAT: success for drm/{i915, xe}: migrate stolen interface to parent interface, cleanups (rev2) Patchwork
@ 2025-12-06 13:52 ` Patchwork
  5 siblings, 0 replies; 11+ messages in thread
From: Patchwork @ 2025-12-06 13:52 UTC (permalink / raw)
  To: Jani Nikula; +Cc: intel-gfx

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

== Series Details ==

Series: drm/{i915, xe}: migrate stolen interface to parent interface, cleanups (rev2)
URL   : https://patchwork.freedesktop.org/series/158509/
State : failure

== Summary ==

CI Bug Log - changes from CI_DRM_17640_full -> Patchwork_158509v2_full
====================================================

Summary
-------

  **FAILURE**

  Serious unknown changes coming with Patchwork_158509v2_full absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in Patchwork_158509v2_full, please notify your bug team (I915-ci-infra@lists.freedesktop.org) to allow them
  to document this new failure mode, which will reduce false positives in CI.

  

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

  No changes in participating hosts

Possible new issues
-------------------

  Here are the unknown changes that may have been introduced in Patchwork_158509v2_full:

### IGT changes ###

#### Possible regressions ####

  * igt@gem_pxp@hw-rejects-pxp-context:
    - shard-rkl:          NOTRUN -> [FAIL][1]
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-7/igt@gem_pxp@hw-rejects-pxp-context.html

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

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

### IGT changes ###

#### Issues hit ####

  * igt@device_reset@unbind-cold-reset-rebind:
    - shard-rkl:          NOTRUN -> [SKIP][2] ([i915#11078])
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-5/igt@device_reset@unbind-cold-reset-rebind.html

  * igt@gem_basic@multigpu-create-close:
    - shard-tglu:         NOTRUN -> [SKIP][3] ([i915#7697])
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-tglu-7/igt@gem_basic@multigpu-create-close.html

  * igt@gem_ccs@block-copy-compressed:
    - shard-tglu-1:       NOTRUN -> [SKIP][4] ([i915#3555] / [i915#9323])
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-tglu-1/igt@gem_ccs@block-copy-compressed.html

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

  * igt@gem_ccs@suspend-resume:
    - shard-dg2:          [PASS][6] -> [INCOMPLETE][7] ([i915#13356])
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-dg2-11/igt@gem_ccs@suspend-resume.html
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-dg2-5/igt@gem_ccs@suspend-resume.html
    - shard-tglu-1:       NOTRUN -> [SKIP][8] ([i915#9323])
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-tglu-1/igt@gem_ccs@suspend-resume.html

  * igt@gem_ccs@suspend-resume@tile4-compressed-compfmt0-lmem0-lmem0:
    - shard-dg2:          [PASS][9] -> [INCOMPLETE][10] ([i915#12392] / [i915#13356])
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-dg2-11/igt@gem_ccs@suspend-resume@tile4-compressed-compfmt0-lmem0-lmem0.html
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-dg2-5/igt@gem_ccs@suspend-resume@tile4-compressed-compfmt0-lmem0-lmem0.html

  * igt@gem_create@create-ext-cpu-access-big:
    - shard-tglu-1:       NOTRUN -> [SKIP][11] ([i915#6335])
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-tglu-1/igt@gem_create@create-ext-cpu-access-big.html

  * igt@gem_create@create-ext-set-pat:
    - shard-tglu-1:       NOTRUN -> [SKIP][12] ([i915#8562])
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-tglu-1/igt@gem_create@create-ext-set-pat.html

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

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

  * igt@gem_exec_capture@capture-recoverable:
    - shard-tglu-1:       NOTRUN -> [SKIP][15] ([i915#6344])
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-tglu-1/igt@gem_exec_capture@capture-recoverable.html

  * igt@gem_exec_reloc@basic-gtt-read:
    - shard-dg2:          NOTRUN -> [SKIP][16] ([i915#3281]) +1 other test skip
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-dg2-11/igt@gem_exec_reloc@basic-gtt-read.html
    - shard-rkl:          NOTRUN -> [SKIP][17] ([i915#3281]) +4 other tests skip
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-7/igt@gem_exec_reloc@basic-gtt-read.html
    - shard-mtlp:         NOTRUN -> [SKIP][18] ([i915#3281])
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-mtlp-2/igt@gem_exec_reloc@basic-gtt-read.html

  * igt@gem_exec_schedule@preempt-queue-contexts-chain:
    - shard-dg2:          NOTRUN -> [SKIP][19] ([i915#4537] / [i915#4812])
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-dg2-11/igt@gem_exec_schedule@preempt-queue-contexts-chain.html
    - shard-mtlp:         NOTRUN -> [SKIP][20] ([i915#4537] / [i915#4812])
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-mtlp-2/igt@gem_exec_schedule@preempt-queue-contexts-chain.html

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

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

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

  * igt@gem_lmem_swapping@smem-oom:
    - shard-tglu:         NOTRUN -> [SKIP][24] ([i915#4613]) +2 other tests skip
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-tglu-7/igt@gem_lmem_swapping@smem-oom.html

  * igt@gem_mmap@basic:
    - shard-dg2:          NOTRUN -> [SKIP][25] ([i915#4083])
   [25]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-dg2-11/igt@gem_mmap@basic.html

  * igt@gem_mmap_offset@clear-via-pagefault:
    - shard-mtlp:         [PASS][26] -> [ABORT][27] ([i915#14809]) +1 other test abort
   [26]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-mtlp-6/igt@gem_mmap_offset@clear-via-pagefault.html
   [27]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-mtlp-6/igt@gem_mmap_offset@clear-via-pagefault.html

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

  * igt@gem_pread@snoop:
    - shard-dg2:          NOTRUN -> [SKIP][29] ([i915#3282])
   [29]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-dg2-4/igt@gem_pread@snoop.html

  * igt@gem_pwrite@basic-exhaustion:
    - shard-tglu-1:       NOTRUN -> [WARN][30] ([i915#2658])
   [30]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-tglu-1/igt@gem_pwrite@basic-exhaustion.html

  * igt@gem_pxp@display-protected-crc:
    - shard-rkl:          NOTRUN -> [SKIP][31] ([i915#4270])
   [31]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-7/igt@gem_pxp@display-protected-crc.html

  * igt@gem_set_tiling_vs_pwrite:
    - shard-dg2:          NOTRUN -> [SKIP][32] ([i915#4079])
   [32]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-dg2-4/igt@gem_set_tiling_vs_pwrite.html

  * igt@gem_userptr_blits@dmabuf-unsync:
    - shard-rkl:          NOTRUN -> [SKIP][33] ([i915#3297]) +1 other test skip
   [33]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-7/igt@gem_userptr_blits@dmabuf-unsync.html

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

  * igt@gen9_exec_parse@cmd-crossing-page:
    - shard-tglu:         NOTRUN -> [SKIP][35] ([i915#2527] / [i915#2856])
   [35]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-tglu-7/igt@gen9_exec_parse@cmd-crossing-page.html

  * igt@gen9_exec_parse@shadow-peek:
    - shard-rkl:          NOTRUN -> [SKIP][36] ([i915#2527]) +3 other tests skip
   [36]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-5/igt@gen9_exec_parse@shadow-peek.html

  * igt@i915_module_load@resize-bar:
    - shard-tglu-1:       NOTRUN -> [SKIP][37] ([i915#6412])
   [37]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-tglu-1/igt@i915_module_load@resize-bar.html

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

  * igt@i915_pm_freq_api@freq-suspend:
    - shard-rkl:          NOTRUN -> [SKIP][39] ([i915#8399])
   [39]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-5/igt@i915_pm_freq_api@freq-suspend.html

  * igt@i915_pm_rpm@system-suspend-execbuf:
    - shard-rkl:          [PASS][40] -> [ABORT][41] ([i915#15060])
   [40]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-rkl-7/igt@i915_pm_rpm@system-suspend-execbuf.html
   [41]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-1/igt@i915_pm_rpm@system-suspend-execbuf.html

  * igt@i915_query@hwconfig_table:
    - shard-rkl:          NOTRUN -> [SKIP][42] ([i915#6245])
   [42]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-5/igt@i915_query@hwconfig_table.html

  * igt@i915_selftest@live@workarounds:
    - shard-mtlp:         [PASS][43] -> [DMESG-FAIL][44] ([i915#12061]) +1 other test dmesg-fail
   [43]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-mtlp-2/igt@i915_selftest@live@workarounds.html
   [44]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-mtlp-2/igt@i915_selftest@live@workarounds.html

  * igt@i915_suspend@basic-s3-without-i915:
    - shard-dg1:          [PASS][45] -> [DMESG-WARN][46] ([i915#4391] / [i915#4423])
   [45]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-dg1-16/igt@i915_suspend@basic-s3-without-i915.html
   [46]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-dg1-12/igt@i915_suspend@basic-s3-without-i915.html

  * igt@intel_hwmon@hwmon-write:
    - shard-tglu-1:       NOTRUN -> [SKIP][47] ([i915#7707])
   [47]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-tglu-1/igt@intel_hwmon@hwmon-write.html

  * igt@kms_addfb_basic@addfb25-framebuffer-vs-set-tiling:
    - shard-dg2:          NOTRUN -> [SKIP][48] ([i915#4212])
   [48]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-dg2-4/igt@kms_addfb_basic@addfb25-framebuffer-vs-set-tiling.html

  * igt@kms_async_flips@async-flip-suspend-resume:
    - shard-rkl:          [PASS][49] -> [INCOMPLETE][50] ([i915#12761])
   [49]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-rkl-5/igt@kms_async_flips@async-flip-suspend-resume.html
   [50]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-3/igt@kms_async_flips@async-flip-suspend-resume.html
    - shard-glk:          NOTRUN -> [INCOMPLETE][51] ([i915#12761]) +1 other test incomplete
   [51]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-glk6/igt@kms_async_flips@async-flip-suspend-resume.html

  * igt@kms_async_flips@async-flip-suspend-resume@pipe-a-hdmi-a-2:
    - shard-rkl:          NOTRUN -> [INCOMPLETE][52] ([i915#12761])
   [52]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-3/igt@kms_async_flips@async-flip-suspend-resume@pipe-a-hdmi-a-2.html

  * igt@kms_big_fb@4-tiled-64bpp-rotate-0:
    - shard-tglu:         NOTRUN -> [SKIP][53] ([i915#5286]) +1 other test skip
   [53]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-tglu-6/igt@kms_big_fb@4-tiled-64bpp-rotate-0.html

  * igt@kms_big_fb@4-tiled-64bpp-rotate-270:
    - shard-dg2:          NOTRUN -> [SKIP][54]
   [54]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-dg2-4/igt@kms_big_fb@4-tiled-64bpp-rotate-270.html

  * igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-180-hflip-async-flip:
    - shard-rkl:          NOTRUN -> [SKIP][55] ([i915#5286]) +2 other tests skip
   [55]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-5/igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-180-hflip-async-flip.html

  * igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180-hflip:
    - shard-tglu-1:       NOTRUN -> [SKIP][56] ([i915#5286]) +4 other tests skip
   [56]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-tglu-1/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180-hflip.html
    - shard-mtlp:         [PASS][57] -> [FAIL][58] ([i915#5138])
   [57]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-mtlp-7/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180-hflip.html
   [58]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-mtlp-7/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180-hflip.html

  * igt@kms_big_fb@y-tiled-64bpp-rotate-270:
    - shard-rkl:          NOTRUN -> [SKIP][59] ([i915#3638]) +1 other test skip
   [59]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-7/igt@kms_big_fb@y-tiled-64bpp-rotate-270.html

  * igt@kms_big_fb@yf-tiled-16bpp-rotate-270:
    - shard-rkl:          NOTRUN -> [SKIP][60] +5 other tests skip
   [60]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-5/igt@kms_big_fb@yf-tiled-16bpp-rotate-270.html

  * igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-180-hflip:
    - shard-dg2:          NOTRUN -> [SKIP][61] ([i915#4538] / [i915#5190]) +3 other tests skip
   [61]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-dg2-11/igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-180-hflip.html
    - shard-mtlp:         NOTRUN -> [SKIP][62]
   [62]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-mtlp-2/igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-180-hflip.html

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

  * igt@kms_ccs@bad-rotation-90-4-tiled-dg2-rc-ccs-cc@pipe-a-hdmi-a-2:
    - shard-rkl:          NOTRUN -> [SKIP][64] ([i915#14544] / [i915#6095]) +13 other tests skip
   [64]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-6/igt@kms_ccs@bad-rotation-90-4-tiled-dg2-rc-ccs-cc@pipe-a-hdmi-a-2.html

  * igt@kms_ccs@bad-rotation-90-4-tiled-dg2-rc-ccs-cc@pipe-c-hdmi-a-2:
    - shard-rkl:          NOTRUN -> [SKIP][65] ([i915#14098] / [i915#14544] / [i915#6095]) +6 other tests skip
   [65]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-6/igt@kms_ccs@bad-rotation-90-4-tiled-dg2-rc-ccs-cc@pipe-c-hdmi-a-2.html

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

  * igt@kms_ccs@bad-rotation-90-y-tiled-gen12-mc-ccs@pipe-c-hdmi-a-1:
    - shard-rkl:          NOTRUN -> [SKIP][67] ([i915#14098] / [i915#6095]) +35 other tests skip
   [67]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-8/igt@kms_ccs@bad-rotation-90-y-tiled-gen12-mc-ccs@pipe-c-hdmi-a-1.html

  * igt@kms_ccs@ccs-on-another-bo-y-tiled-gen12-mc-ccs@pipe-b-hdmi-a-1:
    - shard-tglu:         NOTRUN -> [SKIP][68] ([i915#6095]) +24 other tests skip
   [68]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-tglu-6/igt@kms_ccs@ccs-on-another-bo-y-tiled-gen12-mc-ccs@pipe-b-hdmi-a-1.html

  * igt@kms_ccs@crc-primary-rotation-180-y-tiled-gen12-rc-ccs-cc@pipe-c-dp-3:
    - shard-dg2:          NOTRUN -> [SKIP][69] ([i915#10307] / [i915#6095]) +96 other tests skip
   [69]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-dg2-11/igt@kms_ccs@crc-primary-rotation-180-y-tiled-gen12-rc-ccs-cc@pipe-c-dp-3.html

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

  * igt@kms_ccs@crc-primary-suspend-4-tiled-mtl-rc-ccs-cc@pipe-c-hdmi-a-1:
    - shard-tglu-1:       NOTRUN -> [SKIP][71] ([i915#6095]) +49 other tests skip
   [71]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-tglu-1/igt@kms_ccs@crc-primary-suspend-4-tiled-mtl-rc-ccs-cc@pipe-c-hdmi-a-1.html

  * igt@kms_ccs@crc-primary-suspend-y-tiled-gen12-rc-ccs-cc@pipe-c-hdmi-a-3:
    - shard-dg2:          NOTRUN -> [SKIP][72] ([i915#6095]) +11 other tests skip
   [72]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-dg2-1/igt@kms_ccs@crc-primary-suspend-y-tiled-gen12-rc-ccs-cc@pipe-c-hdmi-a-3.html

  * igt@kms_ccs@crc-sprite-planes-basic-4-tiled-bmg-ccs:
    - shard-tglu-1:       NOTRUN -> [SKIP][73] ([i915#12313])
   [73]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-tglu-1/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-bmg-ccs.html

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

  * igt@kms_ccs@random-ccs-data-yf-tiled-ccs@pipe-a-hdmi-a-3:
    - shard-dg1:          NOTRUN -> [SKIP][75] ([i915#6095]) +163 other tests skip
   [75]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-dg1-12/igt@kms_ccs@random-ccs-data-yf-tiled-ccs@pipe-a-hdmi-a-3.html

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

  * igt@kms_cdclk@plane-scaling@pipe-c-hdmi-a-3:
    - shard-dg2:          NOTRUN -> [SKIP][77] ([i915#13783]) +3 other tests skip
   [77]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-dg2-3/igt@kms_cdclk@plane-scaling@pipe-c-hdmi-a-3.html

  * igt@kms_chamelium_audio@hdmi-audio-edid:
    - shard-tglu:         NOTRUN -> [SKIP][78] ([i915#11151] / [i915#7828]) +4 other tests skip
   [78]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-tglu-7/igt@kms_chamelium_audio@hdmi-audio-edid.html

  * igt@kms_chamelium_frames@hdmi-crc-multiple:
    - shard-tglu-1:       NOTRUN -> [SKIP][79] ([i915#11151] / [i915#7828]) +4 other tests skip
   [79]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-tglu-1/igt@kms_chamelium_frames@hdmi-crc-multiple.html

  * igt@kms_chamelium_hpd@hdmi-hpd:
    - shard-dg2:          NOTRUN -> [SKIP][80] ([i915#11151] / [i915#7828])
   [80]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-dg2-4/igt@kms_chamelium_hpd@hdmi-hpd.html

  * igt@kms_chamelium_hpd@vga-hpd-for-each-pipe:
    - shard-rkl:          NOTRUN -> [SKIP][81] ([i915#11151] / [i915#7828]) +3 other tests skip
   [81]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-7/igt@kms_chamelium_hpd@vga-hpd-for-each-pipe.html

  * igt@kms_color@deep-color:
    - shard-dg2:          [PASS][82] -> [SKIP][83] ([i915#12655] / [i915#3555])
   [82]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-dg2-11/igt@kms_color@deep-color.html
   [83]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-dg2-1/igt@kms_color@deep-color.html
    - shard-rkl:          [PASS][84] -> [SKIP][85] ([i915#12655] / [i915#3555])
   [84]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-rkl-6/igt@kms_color@deep-color.html
   [85]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-4/igt@kms_color@deep-color.html

  * igt@kms_colorop@plane-xr24-xr24-ctm_3x4_bt709_enc:
    - shard-tglu:         NOTRUN -> [SKIP][86] ([i915#15343]) +3 other tests skip
   [86]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-tglu-6/igt@kms_colorop@plane-xr24-xr24-ctm_3x4_bt709_enc.html

  * igt@kms_colorop@plane-xr30-xr30-ctm_3x4_bt709_enc:
    - shard-dg2:          NOTRUN -> [SKIP][87] ([i915#15343]) +2 other tests skip
   [87]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-dg2-4/igt@kms_colorop@plane-xr30-xr30-ctm_3x4_bt709_enc.html

  * igt@kms_colorop@plane-xr30-xr30-pq_125_eotf-pq_125_inv_eotf-pq_125_eotf:
    - shard-rkl:          NOTRUN -> [SKIP][88] ([i915#15343])
   [88]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-5/igt@kms_colorop@plane-xr30-xr30-pq_125_eotf-pq_125_inv_eotf-pq_125_eotf.html

  * igt@kms_colorop@plane-xr30-xr30-srgb_inv_eotf:
    - shard-tglu-1:       NOTRUN -> [SKIP][89] ([i915#15343]) +6 other tests skip
   [89]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-tglu-1/igt@kms_colorop@plane-xr30-xr30-srgb_inv_eotf.html

  * igt@kms_content_protection@dp-mst-type-0:
    - shard-rkl:          NOTRUN -> [SKIP][90] ([i915#3116])
   [90]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-5/igt@kms_content_protection@dp-mst-type-0.html

  * igt@kms_content_protection@mei-interface:
    - shard-tglu-1:       NOTRUN -> [SKIP][91] ([i915#6944] / [i915#9424]) +1 other test skip
   [91]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-tglu-1/igt@kms_content_protection@mei-interface.html

  * igt@kms_content_protection@srm:
    - shard-tglu:         NOTRUN -> [SKIP][92] ([i915#6944] / [i915#7116] / [i915#7118])
   [92]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-tglu-6/igt@kms_content_protection@srm.html

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

  * igt@kms_cursor_crc@cursor-onscreen-256x85@pipe-a-hdmi-a-1:
    - shard-rkl:          NOTRUN -> [FAIL][94] ([i915#13566]) +1 other test fail
   [94]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-2/igt@kms_cursor_crc@cursor-onscreen-256x85@pipe-a-hdmi-a-1.html

  * igt@kms_cursor_crc@cursor-onscreen-32x32:
    - shard-tglu-1:       NOTRUN -> [SKIP][95] ([i915#3555]) +2 other tests skip
   [95]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-tglu-1/igt@kms_cursor_crc@cursor-onscreen-32x32.html

  * igt@kms_cursor_crc@cursor-onscreen-512x170:
    - shard-rkl:          NOTRUN -> [SKIP][96] ([i915#13049])
   [96]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-5/igt@kms_cursor_crc@cursor-onscreen-512x170.html

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

  * igt@kms_cursor_crc@cursor-random-max-size:
    - shard-dg2:          NOTRUN -> [SKIP][98] ([i915#3555])
   [98]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-dg2-11/igt@kms_cursor_crc@cursor-random-max-size.html
    - shard-rkl:          NOTRUN -> [SKIP][99] ([i915#3555])
   [99]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-7/igt@kms_cursor_crc@cursor-random-max-size.html
    - shard-mtlp:         NOTRUN -> [SKIP][100] ([i915#3555] / [i915#8814])
   [100]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-mtlp-2/igt@kms_cursor_crc@cursor-random-max-size.html

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

  * igt@kms_cursor_crc@cursor-sliding-128x128:
    - shard-dg1:          [PASS][102] -> [DMESG-WARN][103] ([i915#4423])
   [102]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-dg1-13/igt@kms_cursor_crc@cursor-sliding-128x128.html
   [103]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-dg1-15/igt@kms_cursor_crc@cursor-sliding-128x128.html

  * igt@kms_cursor_crc@cursor-sliding-256x85:
    - shard-tglu:         NOTRUN -> [FAIL][104] ([i915#13566]) +1 other test fail
   [104]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-tglu-7/igt@kms_cursor_crc@cursor-sliding-256x85.html

  * igt@kms_cursor_legacy@cursora-vs-flipb-varying-size:
    - shard-snb:          NOTRUN -> [SKIP][105] +43 other tests skip
   [105]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-snb4/igt@kms_cursor_legacy@cursora-vs-flipb-varying-size.html

  * igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions-varying-size:
    - shard-glk:          NOTRUN -> [FAIL][106] ([i915#2346])
   [106]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-glk5/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions-varying-size.html

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

  * igt@kms_dirtyfb@psr-dirtyfb-ioctl:
    - shard-tglu:         NOTRUN -> [SKIP][108] ([i915#9723])
   [108]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-tglu-6/igt@kms_dirtyfb@psr-dirtyfb-ioctl.html

  * igt@kms_dp_linktrain_fallback@dp-fallback:
    - shard-dg2:          [PASS][109] -> [SKIP][110] ([i915#13707])
   [109]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-dg2-11/igt@kms_dp_linktrain_fallback@dp-fallback.html
   [110]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-dg2-5/igt@kms_dp_linktrain_fallback@dp-fallback.html
    - shard-tglu-1:       NOTRUN -> [SKIP][111] ([i915#13707])
   [111]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-tglu-1/igt@kms_dp_linktrain_fallback@dp-fallback.html

  * igt@kms_dp_linktrain_fallback@dsc-fallback:
    - shard-rkl:          NOTRUN -> [SKIP][112] ([i915#13707])
   [112]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-7/igt@kms_dp_linktrain_fallback@dsc-fallback.html

  * igt@kms_dsc@dsc-with-bpc-formats:
    - shard-rkl:          NOTRUN -> [SKIP][113] ([i915#3555] / [i915#3840])
   [113]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-5/igt@kms_dsc@dsc-with-bpc-formats.html

  * igt@kms_fb_coherency@memset-crc@mmap-gtt:
    - shard-rkl:          NOTRUN -> [CRASH][114] ([i915#15351]) +1 other test crash
   [114]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-7/igt@kms_fb_coherency@memset-crc@mmap-gtt.html

  * igt@kms_feature_discovery@chamelium:
    - shard-tglu-1:       NOTRUN -> [SKIP][115] ([i915#2065] / [i915#4854])
   [115]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-tglu-1/igt@kms_feature_discovery@chamelium.html

  * igt@kms_feature_discovery@display-2x:
    - shard-dg2:          NOTRUN -> [SKIP][116] ([i915#1839])
   [116]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-dg2-4/igt@kms_feature_discovery@display-2x.html

  * igt@kms_feature_discovery@display-3x:
    - shard-tglu:         NOTRUN -> [SKIP][117] ([i915#1839])
   [117]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-tglu-6/igt@kms_feature_discovery@display-3x.html

  * igt@kms_flip@2x-absolute-wf_vblank:
    - shard-tglu:         NOTRUN -> [SKIP][118] ([i915#3637] / [i915#9934]) +2 other tests skip
   [118]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-tglu-7/igt@kms_flip@2x-absolute-wf_vblank.html

  * igt@kms_flip@2x-flip-vs-expired-vblank:
    - shard-dg2:          NOTRUN -> [SKIP][119] ([i915#9934])
   [119]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-dg2-4/igt@kms_flip@2x-flip-vs-expired-vblank.html

  * igt@kms_flip@2x-flip-vs-suspend-interruptible:
    - shard-snb:          [PASS][120] -> [TIMEOUT][121] ([i915#14033] / [i915#14350])
   [120]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-snb7/igt@kms_flip@2x-flip-vs-suspend-interruptible.html
   [121]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-snb6/igt@kms_flip@2x-flip-vs-suspend-interruptible.html

  * igt@kms_flip@2x-flip-vs-suspend-interruptible@ab-vga1-hdmi-a1:
    - shard-snb:          [PASS][122] -> [TIMEOUT][123] ([i915#14033])
   [122]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-snb7/igt@kms_flip@2x-flip-vs-suspend-interruptible@ab-vga1-hdmi-a1.html
   [123]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-snb6/igt@kms_flip@2x-flip-vs-suspend-interruptible@ab-vga1-hdmi-a1.html

  * igt@kms_flip@2x-nonexisting-fb-interruptible:
    - shard-rkl:          NOTRUN -> [SKIP][124] ([i915#9934]) +2 other tests skip
   [124]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-5/igt@kms_flip@2x-nonexisting-fb-interruptible.html

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

  * igt@kms_flip@blocking-wf_vblank@a-hdmi-a1:
    - shard-tglu:         [PASS][126] -> [FAIL][127] ([i915#14600]) +1 other test fail
   [126]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-tglu-7/igt@kms_flip@blocking-wf_vblank@a-hdmi-a1.html
   [127]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-tglu-3/igt@kms_flip@blocking-wf_vblank@a-hdmi-a1.html

  * igt@kms_flip@flip-vs-blocking-wf-vblank:
    - shard-snb:          [PASS][128] -> [FAIL][129] ([i915#14600]) +1 other test fail
   [128]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-snb7/igt@kms_flip@flip-vs-blocking-wf-vblank.html
   [129]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-snb5/igt@kms_flip@flip-vs-blocking-wf-vblank.html

  * igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-32bpp-4tiledg2rcccs-downscaling:
    - shard-tglu:         NOTRUN -> [SKIP][130] ([i915#2672] / [i915#3555])
   [130]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-tglu-6/igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-32bpp-4tiledg2rcccs-downscaling.html

  * igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-32bpp-4tiledg2rcccs-downscaling@pipe-a-valid-mode:
    - shard-tglu:         NOTRUN -> [SKIP][131] ([i915#2587] / [i915#2672])
   [131]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-tglu-6/igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-32bpp-4tiledg2rcccs-downscaling@pipe-a-valid-mode.html

  * igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs-upscaling:
    - shard-tglu-1:       NOTRUN -> [SKIP][132] ([i915#2587] / [i915#2672] / [i915#3555]) +1 other test skip
   [132]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-tglu-1/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs-upscaling.html

  * igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs-upscaling@pipe-a-valid-mode:
    - shard-tglu-1:       NOTRUN -> [SKIP][133] ([i915#2587] / [i915#2672]) +4 other tests skip
   [133]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-tglu-1/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs-upscaling@pipe-a-valid-mode.html

  * igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tile-upscaling:
    - shard-tglu-1:       NOTRUN -> [SKIP][134] ([i915#2672] / [i915#3555]) +2 other tests skip
   [134]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-tglu-1/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@pipe-a-valid-mode:
    - shard-glk:          NOTRUN -> [SKIP][135] +124 other tests skip
   [135]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-glk5/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-upscaling@pipe-a-valid-mode.html

  * igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-32bpp-yftile-downscaling:
    - shard-rkl:          NOTRUN -> [SKIP][136] ([i915#2672] / [i915#3555]) +1 other test skip
   [136]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-5/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-32bpp-yftile-downscaling.html

  * igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-32bpp-yftile-downscaling@pipe-a-valid-mode:
    - shard-rkl:          NOTRUN -> [SKIP][137] ([i915#2672]) +1 other test skip
   [137]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-5/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-32bpp-yftile-downscaling@pipe-a-valid-mode.html

  * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-pri-indfb-draw-mmap-cpu:
    - shard-dg2:          [PASS][138] -> [FAIL][139] ([i915#6880])
   [138]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-dg2-6/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-pri-indfb-draw-mmap-cpu.html
   [139]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-dg2-5/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-pri-indfb-draw-mmap-cpu.html

  * igt@kms_frontbuffer_tracking@fbc-1p-shrfb-fliptrack-mmap-gtt:
    - shard-dg2:          NOTRUN -> [SKIP][140] ([i915#8708]) +1 other test skip
   [140]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-dg2-4/igt@kms_frontbuffer_tracking@fbc-1p-shrfb-fliptrack-mmap-gtt.html

  * igt@kms_frontbuffer_tracking@fbc-2p-primscrn-pri-shrfb-draw-render:
    - shard-tglu:         NOTRUN -> [SKIP][141] +31 other tests skip
   [141]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-tglu-6/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-pri-shrfb-draw-render.html

  * igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-fullscreen:
    - shard-tglu-1:       NOTRUN -> [SKIP][142] +43 other tests skip
   [142]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-tglu-1/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-fullscreen.html

  * igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-draw-mmap-cpu:
    - shard-mtlp:         NOTRUN -> [SKIP][143] ([i915#1825])
   [143]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-mtlp-2/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-draw-mmap-cpu.html

  * igt@kms_frontbuffer_tracking@fbc-suspend:
    - shard-glk:          NOTRUN -> [INCOMPLETE][144] ([i915#10056])
   [144]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-glk1/igt@kms_frontbuffer_tracking@fbc-suspend.html

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

  * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-indfb-draw-pwrite:
    - shard-dg2:          NOTRUN -> [SKIP][146] ([i915#15102] / [i915#3458]) +5 other tests skip
   [146]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-dg2-4/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-indfb-draw-pwrite.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-shrfb-draw-blt:
    - shard-rkl:          NOTRUN -> [SKIP][147] ([i915#1825]) +7 other tests skip
   [147]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-5/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-shrfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-shrfb-draw-render:
    - shard-dg2:          NOTRUN -> [SKIP][148] ([i915#5354]) +4 other tests skip
   [148]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-dg2-4/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-shrfb-draw-render.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-draw-mmap-wc:
    - shard-glk10:        NOTRUN -> [SKIP][149] +22 other tests skip
   [149]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-glk10/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@psr-1p-offscreen-pri-indfb-draw-blt:
    - shard-rkl:          NOTRUN -> [SKIP][150] ([i915#15102]) +2 other tests skip
   [150]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-7/igt@kms_frontbuffer_tracking@psr-1p-offscreen-pri-indfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-draw-mmap-gtt:
    - shard-tglu:         NOTRUN -> [SKIP][151] ([i915#15102]) +8 other tests skip
   [151]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-tglu-7/igt@kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-draw-mmap-gtt.html

  * igt@kms_frontbuffer_tracking@psr-1p-rte:
    - shard-rkl:          NOTRUN -> [SKIP][152] ([i915#15102] / [i915#3023]) +4 other tests skip
   [152]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-5/igt@kms_frontbuffer_tracking@psr-1p-rte.html

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

  * igt@kms_hdr@brightness-with-hdr:
    - shard-rkl:          NOTRUN -> [SKIP][154] ([i915#12713])
   [154]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-5/igt@kms_hdr@brightness-with-hdr.html

  * igt@kms_hdr@invalid-metadata-sizes:
    - shard-dg2:          NOTRUN -> [SKIP][155] ([i915#3555] / [i915#8228])
   [155]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-dg2-4/igt@kms_hdr@invalid-metadata-sizes.html

  * igt@kms_hdr@static-toggle:
    - shard-dg2:          [PASS][156] -> [SKIP][157] ([i915#3555] / [i915#8228]) +1 other test skip
   [156]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-dg2-11/igt@kms_hdr@static-toggle.html
   [157]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-dg2-1/igt@kms_hdr@static-toggle.html
    - shard-rkl:          [PASS][158] -> [SKIP][159] ([i915#3555] / [i915#8228])
   [158]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-rkl-6/igt@kms_hdr@static-toggle.html
   [159]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-4/igt@kms_hdr@static-toggle.html

  * igt@kms_hdr@static-toggle-dpms:
    - shard-tglu-1:       NOTRUN -> [SKIP][160] ([i915#3555] / [i915#8228]) +1 other test skip
   [160]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-tglu-1/igt@kms_hdr@static-toggle-dpms.html

  * igt@kms_joiner@basic-big-joiner:
    - shard-tglu-1:       NOTRUN -> [SKIP][161] ([i915#10656])
   [161]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-tglu-1/igt@kms_joiner@basic-big-joiner.html

  * igt@kms_joiner@invalid-modeset-ultra-joiner:
    - shard-tglu-1:       NOTRUN -> [SKIP][162] ([i915#12339])
   [162]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-tglu-1/igt@kms_joiner@invalid-modeset-ultra-joiner.html

  * igt@kms_joiner@switch-modeset-ultra-joiner-big-joiner:
    - shard-tglu:         NOTRUN -> [SKIP][163] ([i915#13522])
   [163]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-tglu-6/igt@kms_joiner@switch-modeset-ultra-joiner-big-joiner.html

  * igt@kms_panel_fitting@atomic-fastset:
    - shard-tglu-1:       NOTRUN -> [SKIP][164] ([i915#6301])
   [164]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-tglu-1/igt@kms_panel_fitting@atomic-fastset.html

  * igt@kms_pipe_crc_basic@suspend-read-crc:
    - shard-glk10:        NOTRUN -> [INCOMPLETE][165] ([i915#12756] / [i915#13409] / [i915#13476])
   [165]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-glk10/igt@kms_pipe_crc_basic@suspend-read-crc.html

  * igt@kms_pipe_crc_basic@suspend-read-crc@pipe-b-hdmi-a-1:
    - shard-glk10:        NOTRUN -> [INCOMPLETE][166] ([i915#13409] / [i915#13476])
   [166]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-glk10/igt@kms_pipe_crc_basic@suspend-read-crc@pipe-b-hdmi-a-1.html

  * igt@kms_plane_multiple@tiling-y:
    - shard-dg2:          NOTRUN -> [SKIP][167] ([i915#14259])
   [167]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-dg2-4/igt@kms_plane_multiple@tiling-y.html

  * igt@kms_plane_scaling@intel-max-src-size:
    - shard-rkl:          NOTRUN -> [SKIP][168] ([i915#6953])
   [168]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-5/igt@kms_plane_scaling@intel-max-src-size.html

  * igt@kms_plane_scaling@plane-scaler-unity-scaling-with-rotation@pipe-b:
    - shard-rkl:          NOTRUN -> [SKIP][169] ([i915#15329]) +3 other tests skip
   [169]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-5/igt@kms_plane_scaling@plane-scaler-unity-scaling-with-rotation@pipe-b.html

  * igt@kms_pm_dc@dc3co-vpb-simulation:
    - shard-tglu-1:       NOTRUN -> [SKIP][170] ([i915#9685])
   [170]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-tglu-1/igt@kms_pm_dc@dc3co-vpb-simulation.html

  * igt@kms_pm_dc@dc5-psr:
    - shard-tglu:         NOTRUN -> [SKIP][171] ([i915#9685])
   [171]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-tglu-6/igt@kms_pm_dc@dc5-psr.html

  * igt@kms_pm_dc@dc5-retention-flops:
    - shard-tglu-1:       NOTRUN -> [SKIP][172] ([i915#3828])
   [172]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-tglu-1/igt@kms_pm_dc@dc5-retention-flops.html

  * igt@kms_pm_rpm@dpms-mode-unset-lpsp:
    - shard-rkl:          [PASS][173] -> [SKIP][174] ([i915#14544] / [i915#15073])
   [173]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-rkl-2/igt@kms_pm_rpm@dpms-mode-unset-lpsp.html
   [174]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-6/igt@kms_pm_rpm@dpms-mode-unset-lpsp.html

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

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

  * igt@kms_psr2_sf@fbc-pr-cursor-plane-update-sf:
    - shard-tglu:         NOTRUN -> [SKIP][177] ([i915#11520]) +4 other tests skip
   [177]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-tglu-6/igt@kms_psr2_sf@fbc-pr-cursor-plane-update-sf.html

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

  * igt@kms_psr2_sf@fbc-pr-primary-plane-update-sf-dmg-area:
    - shard-snb:          NOTRUN -> [SKIP][179] ([i915#11520]) +1 other test skip
   [179]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-snb4/igt@kms_psr2_sf@fbc-pr-primary-plane-update-sf-dmg-area.html

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

  * igt@kms_psr2_sf@fbc-psr2-cursor-plane-update-sf@pipe-b-edp-1:
    - shard-mtlp:         NOTRUN -> [SKIP][181] ([i915#9808]) +2 other tests skip
   [181]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-mtlp-2/igt@kms_psr2_sf@fbc-psr2-cursor-plane-update-sf@pipe-b-edp-1.html

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

  * igt@kms_psr2_sf@fbc-psr2-primary-plane-update-sf-dmg-area:
    - shard-glk:          NOTRUN -> [SKIP][183] ([i915#11520]) +6 other tests skip
   [183]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-glk5/igt@kms_psr2_sf@fbc-psr2-primary-plane-update-sf-dmg-area.html

  * igt@kms_psr2_sf@pr-overlay-plane-move-continuous-sf:
    - shard-glk10:        NOTRUN -> [SKIP][184] ([i915#11520])
   [184]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-glk10/igt@kms_psr2_sf@pr-overlay-plane-move-continuous-sf.html

  * igt@kms_psr@fbc-psr-dpms:
    - shard-dg2:          NOTRUN -> [SKIP][185] ([i915#1072] / [i915#9732]) +5 other tests skip
   [185]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-dg2-4/igt@kms_psr@fbc-psr-dpms.html

  * igt@kms_psr@fbc-psr2-cursor-blt:
    - shard-tglu:         NOTRUN -> [SKIP][186] ([i915#9732]) +9 other tests skip
   [186]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-tglu-7/igt@kms_psr@fbc-psr2-cursor-blt.html

  * igt@kms_psr@fbc-psr2-primary-mmap-cpu:
    - shard-mtlp:         NOTRUN -> [SKIP][187] ([i915#9688]) +1 other test skip
   [187]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-mtlp-2/igt@kms_psr@fbc-psr2-primary-mmap-cpu.html

  * igt@kms_psr@pr-cursor-mmap-cpu:
    - shard-tglu-1:       NOTRUN -> [SKIP][188] ([i915#9732]) +16 other tests skip
   [188]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-tglu-1/igt@kms_psr@pr-cursor-mmap-cpu.html

  * igt@kms_psr@psr2-sprite-mmap-cpu:
    - shard-rkl:          NOTRUN -> [SKIP][189] ([i915#1072] / [i915#9732]) +8 other tests skip
   [189]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-5/igt@kms_psr@psr2-sprite-mmap-cpu.html

  * igt@kms_rotation_crc@exhaust-fences:
    - shard-dg2:          NOTRUN -> [SKIP][190] ([i915#4235])
   [190]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-dg2-4/igt@kms_rotation_crc@exhaust-fences.html

  * igt@kms_rotation_crc@primary-4-tiled-reflect-x-180:
    - shard-tglu-1:       NOTRUN -> [SKIP][191] ([i915#5289])
   [191]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-tglu-1/igt@kms_rotation_crc@primary-4-tiled-reflect-x-180.html

  * igt@kms_rotation_crc@primary-yf-tiled-reflect-x-180:
    - shard-tglu:         NOTRUN -> [SKIP][192] ([i915#5289])
   [192]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-tglu-7/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-180.html

  * igt@kms_rotation_crc@sprite-rotation-90-pos-100-0:
    - shard-dg2:          NOTRUN -> [SKIP][193] ([i915#12755])
   [193]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-dg2-4/igt@kms_rotation_crc@sprite-rotation-90-pos-100-0.html

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

  * igt@kms_vrr@seamless-rr-switch-drrs:
    - shard-dg2:          NOTRUN -> [SKIP][195] ([i915#9906])
   [195]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-dg2-4/igt@kms_vrr@seamless-rr-switch-drrs.html

  * igt@kms_vrr@seamless-rr-switch-virtual:
    - shard-tglu-1:       NOTRUN -> [SKIP][196] ([i915#9906])
   [196]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-tglu-1/igt@kms_vrr@seamless-rr-switch-virtual.html

  * igt@kms_writeback@writeback-check-output:
    - shard-dg2:          NOTRUN -> [SKIP][197] ([i915#2437])
   [197]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-dg2-4/igt@kms_writeback@writeback-check-output.html

  * igt@kms_writeback@writeback-fb-id-xrgb2101010:
    - shard-tglu:         NOTRUN -> [SKIP][198] ([i915#2437] / [i915#9412])
   [198]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-tglu-6/igt@kms_writeback@writeback-fb-id-xrgb2101010.html

  * igt@perf@per-context-mode-unprivileged:
    - shard-rkl:          NOTRUN -> [SKIP][199] ([i915#2435])
   [199]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-5/igt@perf@per-context-mode-unprivileged.html

  * igt@perf_pmu@busy-double-start@ccs0:
    - shard-dg2:          [PASS][200] -> [FAIL][201] ([i915#4349])
   [200]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-dg2-1/igt@perf_pmu@busy-double-start@ccs0.html
   [201]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-dg2-7/igt@perf_pmu@busy-double-start@ccs0.html

  * igt@perf_pmu@busy-double-start@vcs0:
    - shard-dg1:          [PASS][202] -> [FAIL][203] ([i915#4349])
   [202]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-dg1-13/igt@perf_pmu@busy-double-start@vcs0.html
   [203]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-dg1-15/igt@perf_pmu@busy-double-start@vcs0.html

  * igt@perf_pmu@rc6@other-idle-gt0:
    - shard-tglu-1:       NOTRUN -> [SKIP][204] ([i915#8516])
   [204]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-tglu-1/igt@perf_pmu@rc6@other-idle-gt0.html

  * igt@sriov_basic@bind-unbind-vf@vf-4:
    - shard-tglu:         NOTRUN -> [FAIL][205] ([i915#12910]) +9 other tests fail
   [205]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-tglu-7/igt@sriov_basic@bind-unbind-vf@vf-4.html

  * igt@sriov_basic@enable-vfs-autoprobe-on@numvfs-7:
    - shard-tglu-1:       NOTRUN -> [FAIL][206] ([i915#12910]) +9 other tests fail
   [206]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-tglu-1/igt@sriov_basic@enable-vfs-autoprobe-on@numvfs-7.html

  * igt@sriov_basic@enable-vfs-bind-unbind-each:
    - shard-dg2:          NOTRUN -> [SKIP][207] ([i915#9917])
   [207]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-dg2-4/igt@sriov_basic@enable-vfs-bind-unbind-each.html

  
#### Possible fixes ####

  * igt@device_reset@unbind-reset-rebind:
    - shard-rkl:          [ABORT][208] ([i915#5507]) -> [PASS][209]
   [208]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-rkl-3/igt@device_reset@unbind-reset-rebind.html
   [209]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-7/igt@device_reset@unbind-reset-rebind.html

  * igt@gem_pxp@verify-pxp-key-change-after-suspend-resume:
    - shard-rkl:          [ABORT][210] ([i915#15131]) -> [PASS][211]
   [210]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-rkl-1/igt@gem_pxp@verify-pxp-key-change-after-suspend-resume.html
   [211]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-5/igt@gem_pxp@verify-pxp-key-change-after-suspend-resume.html

  * igt@i915_module_load@load:
    - shard-dg1:          ([PASS][212], [PASS][213], [PASS][214], [PASS][215], [PASS][216], [PASS][217], [PASS][218], [SKIP][219], [PASS][220], [PASS][221], [PASS][222], [PASS][223], [PASS][224], [PASS][225], [PASS][226], [PASS][227], [PASS][228], [PASS][229], [PASS][230], [PASS][231], [PASS][232], [PASS][233], [PASS][234], [PASS][235]) ([i915#14785]) -> ([PASS][236], [PASS][237], [PASS][238], [PASS][239], [PASS][240], [PASS][241], [PASS][242], [PASS][243], [PASS][244], [PASS][245], [PASS][246], [PASS][247], [PASS][248], [PASS][249], [PASS][250], [PASS][251], [PASS][252], [PASS][253], [PASS][254], [PASS][255], [PASS][256], [PASS][257], [PASS][258], [PASS][259], [PASS][260])
   [212]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-dg1-18/igt@i915_module_load@load.html
   [213]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-dg1-15/igt@i915_module_load@load.html
   [214]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-dg1-15/igt@i915_module_load@load.html
   [215]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-dg1-18/igt@i915_module_load@load.html
   [216]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-dg1-13/igt@i915_module_load@load.html
   [217]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-dg1-16/igt@i915_module_load@load.html
   [218]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-dg1-14/igt@i915_module_load@load.html
   [219]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-dg1-16/igt@i915_module_load@load.html
   [220]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-dg1-12/igt@i915_module_load@load.html
   [221]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-dg1-15/igt@i915_module_load@load.html
   [222]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-dg1-19/igt@i915_module_load@load.html
   [223]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-dg1-17/igt@i915_module_load@load.html
   [224]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-dg1-16/igt@i915_module_load@load.html
   [225]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-dg1-17/igt@i915_module_load@load.html
   [226]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-dg1-19/igt@i915_module_load@load.html
   [227]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-dg1-17/igt@i915_module_load@load.html
   [228]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-dg1-13/igt@i915_module_load@load.html
   [229]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-dg1-15/igt@i915_module_load@load.html
   [230]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-dg1-13/igt@i915_module_load@load.html
   [231]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-dg1-12/igt@i915_module_load@load.html
   [232]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-dg1-12/igt@i915_module_load@load.html
   [233]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-dg1-18/igt@i915_module_load@load.html
   [234]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-dg1-19/igt@i915_module_load@load.html
   [235]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-dg1-14/igt@i915_module_load@load.html
   [236]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-dg1-12/igt@i915_module_load@load.html
   [237]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-dg1-12/igt@i915_module_load@load.html
   [238]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-dg1-12/igt@i915_module_load@load.html
   [239]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-dg1-12/igt@i915_module_load@load.html
   [240]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-dg1-13/igt@i915_module_load@load.html
   [241]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-dg1-13/igt@i915_module_load@load.html
   [242]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-dg1-13/igt@i915_module_load@load.html
   [243]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-dg1-14/igt@i915_module_load@load.html
   [244]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-dg1-14/igt@i915_module_load@load.html
   [245]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-dg1-14/igt@i915_module_load@load.html
   [246]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-dg1-15/igt@i915_module_load@load.html
   [247]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-dg1-15/igt@i915_module_load@load.html
   [248]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-dg1-15/igt@i915_module_load@load.html
   [249]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-dg1-16/igt@i915_module_load@load.html
   [250]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-dg1-16/igt@i915_module_load@load.html
   [251]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-dg1-16/igt@i915_module_load@load.html
   [252]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-dg1-16/igt@i915_module_load@load.html
   [253]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-dg1-17/igt@i915_module_load@load.html
   [254]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-dg1-17/igt@i915_module_load@load.html
   [255]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-dg1-17/igt@i915_module_load@load.html
   [256]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-dg1-18/igt@i915_module_load@load.html
   [257]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-dg1-18/igt@i915_module_load@load.html
   [258]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-dg1-18/igt@i915_module_load@load.html
   [259]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-dg1-19/igt@i915_module_load@load.html
   [260]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-dg1-19/igt@i915_module_load@load.html

  * igt@i915_module_load@reload-with-fault-injection:
    - shard-snb:          [ABORT][261] ([i915#15342]) -> [PASS][262]
   [261]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-snb7/igt@i915_module_load@reload-with-fault-injection.html
   [262]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-snb5/igt@i915_module_load@reload-with-fault-injection.html
    - shard-mtlp:         [ABORT][263] ([i915#15386]) -> [PASS][264]
   [263]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-mtlp-2/igt@i915_module_load@reload-with-fault-injection.html
   [264]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-mtlp-2/igt@i915_module_load@reload-with-fault-injection.html

  * igt@i915_suspend@fence-restore-tiled2untiled:
    - shard-glk:          [INCOMPLETE][265] ([i915#4817]) -> [PASS][266]
   [265]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-glk8/igt@i915_suspend@fence-restore-tiled2untiled.html
   [266]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-glk5/igt@i915_suspend@fence-restore-tiled2untiled.html

  * igt@kms_atomic_transition@plane-all-modeset-transition@pipe-a-hdmi-a-1:
    - shard-dg2:          [FAIL][267] ([i915#5956]) -> [PASS][268] +1 other test pass
   [267]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-dg2-4/igt@kms_atomic_transition@plane-all-modeset-transition@pipe-a-hdmi-a-1.html
   [268]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-dg2-4/igt@kms_atomic_transition@plane-all-modeset-transition@pipe-a-hdmi-a-1.html

  * igt@kms_cursor_crc@cursor-sliding-256x85:
    - shard-rkl:          [FAIL][269] ([i915#13566]) -> [PASS][270]
   [269]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-rkl-5/igt@kms_cursor_crc@cursor-sliding-256x85.html
   [270]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-3/igt@kms_cursor_crc@cursor-sliding-256x85.html

  * igt@kms_cursor_legacy@2x-long-flip-vs-cursor-legacy:
    - shard-glk:          [FAIL][271] ([i915#13028]) -> [PASS][272]
   [271]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-glk6/igt@kms_cursor_legacy@2x-long-flip-vs-cursor-legacy.html
   [272]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-glk1/igt@kms_cursor_legacy@2x-long-flip-vs-cursor-legacy.html

  * igt@kms_cursor_legacy@forked-bo:
    - shard-dg1:          [DMESG-WARN][273] ([i915#4423]) -> [PASS][274]
   [273]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-dg1-17/igt@kms_cursor_legacy@forked-bo.html
   [274]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-dg1-17/igt@kms_cursor_legacy@forked-bo.html

  * igt@kms_frontbuffer_tracking@fbc-1p-offscreen-pri-shrfb-draw-mmap-cpu:
    - shard-dg2:          [FAIL][275] ([i915#15389]) -> [PASS][276]
   [275]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-dg2-11/igt@kms_frontbuffer_tracking@fbc-1p-offscreen-pri-shrfb-draw-mmap-cpu.html
   [276]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-dg2-5/igt@kms_frontbuffer_tracking@fbc-1p-offscreen-pri-shrfb-draw-mmap-cpu.html

  * igt@kms_hdr@bpc-switch-dpms:
    - shard-rkl:          [SKIP][277] ([i915#3555] / [i915#8228]) -> [PASS][278]
   [277]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-rkl-2/igt@kms_hdr@bpc-switch-dpms.html
   [278]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-6/igt@kms_hdr@bpc-switch-dpms.html

  * igt@kms_hdr@static-swap:
    - shard-dg2:          [SKIP][279] ([i915#3555] / [i915#8228]) -> [PASS][280] +1 other test pass
   [279]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-dg2-6/igt@kms_hdr@static-swap.html
   [280]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-dg2-11/igt@kms_hdr@static-swap.html

  * igt@kms_joiner@basic-force-big-joiner:
    - shard-dg2:          [SKIP][281] ([i915#12388]) -> [PASS][282]
   [281]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-dg2-5/igt@kms_joiner@basic-force-big-joiner.html
   [282]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-dg2-11/igt@kms_joiner@basic-force-big-joiner.html

  * igt@kms_pm_rpm@dpms-mode-unset-non-lpsp:
    - shard-rkl:          [SKIP][283] ([i915#15073]) -> [PASS][284] +1 other test pass
   [283]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-rkl-2/igt@kms_pm_rpm@dpms-mode-unset-non-lpsp.html
   [284]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-6/igt@kms_pm_rpm@dpms-mode-unset-non-lpsp.html

  * igt@kms_pm_rpm@system-suspend-idle:
    - shard-dg2:          [INCOMPLETE][285] ([i915#14419]) -> [PASS][286]
   [285]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-dg2-4/igt@kms_pm_rpm@system-suspend-idle.html
   [286]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-dg2-4/igt@kms_pm_rpm@system-suspend-idle.html

  * igt@perf_pmu@busy-double-start@vcs1:
    - shard-mtlp:         [FAIL][287] ([i915#4349]) -> [PASS][288] +1 other test pass
   [287]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-mtlp-8/igt@perf_pmu@busy-double-start@vcs1.html
   [288]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-mtlp-7/igt@perf_pmu@busy-double-start@vcs1.html

  
#### Warnings ####

  * igt@api_intel_bb@blit-reloc-keep-cache:
    - shard-rkl:          [SKIP][289] ([i915#14544] / [i915#8411]) -> [SKIP][290] ([i915#8411])
   [289]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-rkl-6/igt@api_intel_bb@blit-reloc-keep-cache.html
   [290]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-4/igt@api_intel_bb@blit-reloc-keep-cache.html

  * igt@api_intel_bb@crc32:
    - shard-rkl:          [SKIP][291] ([i915#6230]) -> [SKIP][292] ([i915#14544] / [i915#6230])
   [291]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-rkl-2/igt@api_intel_bb@crc32.html
   [292]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-6/igt@api_intel_bb@crc32.html

  * igt@device_reset@cold-reset-bound:
    - shard-rkl:          [SKIP][293] ([i915#11078] / [i915#14544]) -> [SKIP][294] ([i915#11078])
   [293]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-rkl-6/igt@device_reset@cold-reset-bound.html
   [294]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-4/igt@device_reset@cold-reset-bound.html

  * igt@gem_ccs@block-copy-compressed:
    - shard-rkl:          [SKIP][295] ([i915#3555] / [i915#9323]) -> [SKIP][296] ([i915#14544] / [i915#3555] / [i915#9323])
   [295]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-rkl-2/igt@gem_ccs@block-copy-compressed.html
   [296]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-6/igt@gem_ccs@block-copy-compressed.html

  * igt@gem_create@create-ext-cpu-access-big:
    - shard-rkl:          [SKIP][297] ([i915#6335]) -> [SKIP][298] ([i915#14544] / [i915#6335])
   [297]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-rkl-2/igt@gem_create@create-ext-cpu-access-big.html
   [298]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-6/igt@gem_create@create-ext-cpu-access-big.html

  * igt@gem_ctx_sseu@mmap-args:
    - shard-rkl:          [SKIP][299] ([i915#14544] / [i915#280]) -> [SKIP][300] ([i915#280])
   [299]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-rkl-6/igt@gem_ctx_sseu@mmap-args.html
   [300]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-4/igt@gem_ctx_sseu@mmap-args.html

  * igt@gem_exec_balancer@parallel:
    - shard-rkl:          [SKIP][301] ([i915#4525]) -> [SKIP][302] ([i915#14544] / [i915#4525]) +2 other tests skip
   [301]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-rkl-2/igt@gem_exec_balancer@parallel.html
   [302]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-6/igt@gem_exec_balancer@parallel.html

  * igt@gem_exec_balancer@parallel-bb-first:
    - shard-rkl:          [SKIP][303] ([i915#14544] / [i915#4525]) -> [SKIP][304] ([i915#4525])
   [303]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-rkl-6/igt@gem_exec_balancer@parallel-bb-first.html
   [304]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-4/igt@gem_exec_balancer@parallel-bb-first.html

  * igt@gem_exec_reloc@basic-gtt-wc:
    - shard-rkl:          [SKIP][305] ([i915#14544] / [i915#3281]) -> [SKIP][306] ([i915#3281]) +5 other tests skip
   [305]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-rkl-6/igt@gem_exec_reloc@basic-gtt-wc.html
   [306]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-4/igt@gem_exec_reloc@basic-gtt-wc.html

  * igt@gem_exec_reloc@basic-wc-cpu-active:
    - shard-rkl:          [SKIP][307] ([i915#3281]) -> [SKIP][308] ([i915#14544] / [i915#3281]) +5 other tests skip
   [307]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-rkl-2/igt@gem_exec_reloc@basic-wc-cpu-active.html
   [308]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-6/igt@gem_exec_reloc@basic-wc-cpu-active.html

  * igt@gem_lmem_swapping@parallel-random-verify:
    - shard-rkl:          [SKIP][309] ([i915#14544] / [i915#4613]) -> [SKIP][310] ([i915#4613])
   [309]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-rkl-6/igt@gem_lmem_swapping@parallel-random-verify.html
   [310]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-4/igt@gem_lmem_swapping@parallel-random-verify.html

  * igt@gem_lmem_swapping@parallel-random-verify-ccs:
    - shard-rkl:          [SKIP][311] ([i915#4613]) -> [SKIP][312] ([i915#14544] / [i915#4613]) +3 other tests skip
   [311]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-rkl-2/igt@gem_lmem_swapping@parallel-random-verify-ccs.html
   [312]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-6/igt@gem_lmem_swapping@parallel-random-verify-ccs.html

  * igt@gem_partial_pwrite_pread@writes-after-reads-display:
    - shard-rkl:          [SKIP][313] ([i915#14544] / [i915#3282]) -> [SKIP][314] ([i915#3282]) +3 other tests skip
   [313]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-rkl-6/igt@gem_partial_pwrite_pread@writes-after-reads-display.html
   [314]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-4/igt@gem_partial_pwrite_pread@writes-after-reads-display.html

  * igt@gem_partial_pwrite_pread@writes-after-reads-uncached:
    - shard-rkl:          [SKIP][315] ([i915#3282]) -> [SKIP][316] ([i915#14544] / [i915#3282]) +3 other tests skip
   [315]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-rkl-3/igt@gem_partial_pwrite_pread@writes-after-reads-uncached.html
   [316]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-6/igt@gem_partial_pwrite_pread@writes-after-reads-uncached.html

  * igt@gem_set_tiling_vs_blt@tiled-to-untiled:
    - shard-rkl:          [SKIP][317] ([i915#8411]) -> [SKIP][318] ([i915#14544] / [i915#8411])
   [317]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-rkl-2/igt@gem_set_tiling_vs_blt@tiled-to-untiled.html
   [318]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-6/igt@gem_set_tiling_vs_blt@tiled-to-untiled.html

  * igt@gem_userptr_blits@create-destroy-unsync:
    - shard-rkl:          [SKIP][319] ([i915#3297]) -> [SKIP][320] ([i915#14544] / [i915#3297]) +1 other test skip
   [319]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-rkl-2/igt@gem_userptr_blits@create-destroy-unsync.html
   [320]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-6/igt@gem_userptr_blits@create-destroy-unsync.html

  * igt@gem_userptr_blits@relocations:
    - shard-rkl:          [SKIP][321] ([i915#3281] / [i915#3297]) -> [SKIP][322] ([i915#14544] / [i915#3281] / [i915#3297])
   [321]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-rkl-3/igt@gem_userptr_blits@relocations.html
   [322]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-6/igt@gem_userptr_blits@relocations.html

  * igt@gen9_exec_parse@batch-without-end:
    - shard-rkl:          [SKIP][323] ([i915#2527]) -> [SKIP][324] ([i915#14544] / [i915#2527]) +1 other test skip
   [323]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-rkl-2/igt@gen9_exec_parse@batch-without-end.html
   [324]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-6/igt@gen9_exec_parse@batch-without-end.html

  * igt@gen9_exec_parse@unaligned-jump:
    - shard-rkl:          [SKIP][325] ([i915#14544] / [i915#2527]) -> [SKIP][326] ([i915#2527]) +1 other test skip
   [325]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-rkl-6/igt@gen9_exec_parse@unaligned-jump.html
   [326]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-4/igt@gen9_exec_parse@unaligned-jump.html

  * igt@i915_pm_freq_mult@media-freq@gt0:
    - shard-rkl:          [SKIP][327] ([i915#14544] / [i915#6590]) -> [SKIP][328] ([i915#6590]) +1 other test skip
   [327]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-rkl-6/igt@i915_pm_freq_mult@media-freq@gt0.html
   [328]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-4/igt@i915_pm_freq_mult@media-freq@gt0.html

  * igt@i915_power@sanity:
    - shard-rkl:          [SKIP][329] ([i915#7984]) -> [SKIP][330] ([i915#14544] / [i915#7984])
   [329]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-rkl-3/igt@i915_power@sanity.html
   [330]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-6/igt@i915_power@sanity.html

  * igt@intel_hwmon@hwmon-write:
    - shard-rkl:          [SKIP][331] ([i915#7707]) -> [SKIP][332] ([i915#14544] / [i915#7707])
   [331]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-rkl-2/igt@intel_hwmon@hwmon-write.html
   [332]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-6/igt@intel_hwmon@hwmon-write.html

  * igt@kms_atomic_transition@plane-all-modeset-transition-internal-panels:
    - shard-rkl:          [SKIP][333] ([i915#1769] / [i915#3555]) -> [SKIP][334] ([i915#14544] / [i915#1769] / [i915#3555])
   [333]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-rkl-2/igt@kms_atomic_transition@plane-all-modeset-transition-internal-panels.html
   [334]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-6/igt@kms_atomic_transition@plane-all-modeset-transition-internal-panels.html

  * igt@kms_big_fb@4-tiled-32bpp-rotate-180:
    - shard-rkl:          [SKIP][335] ([i915#14544] / [i915#5286]) -> [SKIP][336] ([i915#5286]) +2 other tests skip
   [335]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-rkl-6/igt@kms_big_fb@4-tiled-32bpp-rotate-180.html
   [336]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-4/igt@kms_big_fb@4-tiled-32bpp-rotate-180.html

  * igt@kms_big_fb@4-tiled-addfb:
    - shard-rkl:          [SKIP][337] ([i915#5286]) -> [SKIP][338] ([i915#14544] / [i915#5286]) +4 other tests skip
   [337]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-rkl-2/igt@kms_big_fb@4-tiled-addfb.html
   [338]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-6/igt@kms_big_fb@4-tiled-addfb.html

  * igt@kms_big_fb@y-tiled-8bpp-rotate-270:
    - shard-rkl:          [SKIP][339] ([i915#3638]) -> [SKIP][340] ([i915#14544] / [i915#3638]) +1 other test skip
   [339]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-rkl-2/igt@kms_big_fb@y-tiled-8bpp-rotate-270.html
   [340]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-6/igt@kms_big_fb@y-tiled-8bpp-rotate-270.html

  * igt@kms_big_fb@y-tiled-8bpp-rotate-90:
    - shard-rkl:          [SKIP][341] ([i915#14544] / [i915#3638]) -> [SKIP][342] ([i915#3638]) +2 other tests skip
   [341]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-rkl-6/igt@kms_big_fb@y-tiled-8bpp-rotate-90.html
   [342]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-4/igt@kms_big_fb@y-tiled-8bpp-rotate-90.html

  * igt@kms_big_fb@yf-tiled-16bpp-rotate-90:
    - shard-dg1:          [SKIP][343] ([i915#4423] / [i915#4538]) -> [SKIP][344] ([i915#4538])
   [343]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-dg1-17/igt@kms_big_fb@yf-tiled-16bpp-rotate-90.html
   [344]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-dg1-17/igt@kms_big_fb@yf-tiled-16bpp-rotate-90.html

  * igt@kms_ccs@bad-aux-stride-4-tiled-mtl-mc-ccs@pipe-a-hdmi-a-2:
    - shard-rkl:          [SKIP][345] ([i915#14544] / [i915#6095]) -> [SKIP][346] ([i915#6095]) +8 other tests skip
   [345]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-rkl-6/igt@kms_ccs@bad-aux-stride-4-tiled-mtl-mc-ccs@pipe-a-hdmi-a-2.html
   [346]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-4/igt@kms_ccs@bad-aux-stride-4-tiled-mtl-mc-ccs@pipe-a-hdmi-a-2.html

  * igt@kms_ccs@bad-pixel-format-y-tiled-gen12-mc-ccs:
    - shard-rkl:          [SKIP][347] ([i915#14098] / [i915#6095]) -> [SKIP][348] ([i915#14098] / [i915#14544] / [i915#6095]) +18 other tests skip
   [347]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-rkl-2/igt@kms_ccs@bad-pixel-format-y-tiled-gen12-mc-ccs.html
   [348]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-6/igt@kms_ccs@bad-pixel-format-y-tiled-gen12-mc-ccs.html

  * igt@kms_ccs@ccs-on-another-bo-4-tiled-mtl-mc-ccs@pipe-c-hdmi-a-2:
    - shard-rkl:          [SKIP][349] ([i915#14098] / [i915#14544] / [i915#6095]) -> [SKIP][350] ([i915#14098] / [i915#6095]) +9 other tests skip
   [349]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-rkl-6/igt@kms_ccs@ccs-on-another-bo-4-tiled-mtl-mc-ccs@pipe-c-hdmi-a-2.html
   [350]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-4/igt@kms_ccs@ccs-on-another-bo-4-tiled-mtl-mc-ccs@pipe-c-hdmi-a-2.html

  * igt@kms_ccs@crc-primary-rotation-180-y-tiled-ccs@pipe-b-hdmi-a-2:
    - shard-rkl:          [SKIP][351] ([i915#6095]) -> [SKIP][352] ([i915#14544] / [i915#6095]) +11 other tests skip
   [351]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-rkl-3/igt@kms_ccs@crc-primary-rotation-180-y-tiled-ccs@pipe-b-hdmi-a-2.html
   [352]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-6/igt@kms_ccs@crc-primary-rotation-180-y-tiled-ccs@pipe-b-hdmi-a-2.html

  * igt@kms_ccs@crc-sprite-planes-basic-4-tiled-lnl-ccs:
    - shard-rkl:          [SKIP][353] ([i915#12313]) -> [SKIP][354] ([i915#12313] / [i915#14544]) +1 other test skip
   [353]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-rkl-2/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-lnl-ccs.html
   [354]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-6/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-lnl-ccs.html

  * igt@kms_ccs@random-ccs-data-4-tiled-lnl-ccs:
    - shard-rkl:          [SKIP][355] ([i915#12313] / [i915#14544]) -> [SKIP][356] ([i915#12313])
   [355]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-rkl-6/igt@kms_ccs@random-ccs-data-4-tiled-lnl-ccs.html
   [356]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-4/igt@kms_ccs@random-ccs-data-4-tiled-lnl-ccs.html

  * igt@kms_chamelium_color@degamma:
    - shard-rkl:          [SKIP][357] -> [SKIP][358] ([i915#14544]) +10 other tests skip
   [357]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-rkl-2/igt@kms_chamelium_color@degamma.html
   [358]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-6/igt@kms_chamelium_color@degamma.html

  * igt@kms_chamelium_frames@hdmi-frame-dump:
    - shard-rkl:          [SKIP][359] ([i915#11151] / [i915#14544] / [i915#7828]) -> [SKIP][360] ([i915#11151] / [i915#7828]) +3 other tests skip
   [359]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-rkl-6/igt@kms_chamelium_frames@hdmi-frame-dump.html
   [360]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-4/igt@kms_chamelium_frames@hdmi-frame-dump.html

  * igt@kms_chamelium_hpd@vga-hpd-fast:
    - shard-rkl:          [SKIP][361] ([i915#11151] / [i915#7828]) -> [SKIP][362] ([i915#11151] / [i915#14544] / [i915#7828]) +5 other tests skip
   [361]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-rkl-3/igt@kms_chamelium_hpd@vga-hpd-fast.html
   [362]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-6/igt@kms_chamelium_hpd@vga-hpd-fast.html

  * igt@kms_colorop@plane-xr24-xr24-ctm_3x4_bt709_dec:
    - shard-rkl:          [SKIP][363] ([i915#14544] / [i915#15343]) -> [SKIP][364] ([i915#15343]) +2 other tests skip
   [363]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-rkl-6/igt@kms_colorop@plane-xr24-xr24-ctm_3x4_bt709_dec.html
   [364]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-4/igt@kms_colorop@plane-xr24-xr24-ctm_3x4_bt709_dec.html

  * igt@kms_colorop@plane-xr24-xr24-srgb_inv_eotf_lut-srgb_eotf_lut:
    - shard-rkl:          [SKIP][365] ([i915#15343]) -> [SKIP][366] ([i915#14544] / [i915#15343]) +6 other tests skip
   [365]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-rkl-2/igt@kms_colorop@plane-xr24-xr24-srgb_inv_eotf_lut-srgb_eotf_lut.html
   [366]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-6/igt@kms_colorop@plane-xr24-xr24-srgb_inv_eotf_lut-srgb_eotf_lut.html

  * igt@kms_content_protection@atomic-dpms:
    - shard-rkl:          [SKIP][367] ([i915#14544] / [i915#6944] / [i915#7118] / [i915#9424]) -> [SKIP][368] ([i915#6944] / [i915#7118] / [i915#9424])
   [367]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-rkl-6/igt@kms_content_protection@atomic-dpms.html
   [368]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-4/igt@kms_content_protection@atomic-dpms.html

  * igt@kms_content_protection@dp-mst-lic-type-1:
    - shard-rkl:          [SKIP][369] ([i915#3116]) -> [SKIP][370] ([i915#14544] / [i915#3116]) +1 other test skip
   [369]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-rkl-2/igt@kms_content_protection@dp-mst-lic-type-1.html
   [370]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-6/igt@kms_content_protection@dp-mst-lic-type-1.html

  * igt@kms_content_protection@suspend-resume:
    - shard-dg2:          [SKIP][371] ([i915#6944]) -> [FAIL][372] ([i915#7173])
   [371]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-dg2-5/igt@kms_content_protection@suspend-resume.html
   [372]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-dg2-11/igt@kms_content_protection@suspend-resume.html

  * igt@kms_cursor_crc@cursor-offscreen-512x512:
    - shard-rkl:          [SKIP][373] ([i915#13049]) -> [SKIP][374] ([i915#13049] / [i915#14544]) +1 other test skip
   [373]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-rkl-2/igt@kms_cursor_crc@cursor-offscreen-512x512.html
   [374]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-6/igt@kms_cursor_crc@cursor-offscreen-512x512.html

  * igt@kms_cursor_crc@cursor-random-512x170:
    - shard-rkl:          [SKIP][375] ([i915#13049] / [i915#14544]) -> [SKIP][376] ([i915#13049]) +1 other test skip
   [375]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-rkl-6/igt@kms_cursor_crc@cursor-random-512x170.html
   [376]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-4/igt@kms_cursor_crc@cursor-random-512x170.html

  * igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy:
    - shard-rkl:          [SKIP][377] ([i915#4103]) -> [SKIP][378] ([i915#14544] / [i915#4103])
   [377]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-rkl-2/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html
   [378]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-6/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html

  * igt@kms_cursor_legacy@modeset-atomic-cursor-hotspot:
    - shard-rkl:          [SKIP][379] ([i915#14544] / [i915#9067]) -> [SKIP][380] ([i915#9067])
   [379]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-rkl-6/igt@kms_cursor_legacy@modeset-atomic-cursor-hotspot.html
   [380]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-4/igt@kms_cursor_legacy@modeset-atomic-cursor-hotspot.html

  * igt@kms_dp_aux_dev:
    - shard-rkl:          [SKIP][381] ([i915#1257]) -> [SKIP][382] ([i915#1257] / [i915#14544])
   [381]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-rkl-3/igt@kms_dp_aux_dev.html
   [382]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-6/igt@kms_dp_aux_dev.html

  * igt@kms_dsc@dsc-with-bpc:
    - shard-rkl:          [SKIP][383] ([i915#3555] / [i915#3840]) -> [SKIP][384] ([i915#14544] / [i915#3555] / [i915#3840])
   [383]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-rkl-2/igt@kms_dsc@dsc-with-bpc.html
   [384]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-6/igt@kms_dsc@dsc-with-bpc.html

  * igt@kms_dsc@dsc-with-output-formats:
    - shard-rkl:          [SKIP][385] ([i915#14544] / [i915#3555] / [i915#3840]) -> [SKIP][386] ([i915#3555] / [i915#3840])
   [385]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-rkl-6/igt@kms_dsc@dsc-with-output-formats.html
   [386]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-4/igt@kms_dsc@dsc-with-output-formats.html

  * igt@kms_feature_discovery@chamelium:
    - shard-rkl:          [SKIP][387] ([i915#4854]) -> [SKIP][388] ([i915#14544] / [i915#4854])
   [387]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-rkl-2/igt@kms_feature_discovery@chamelium.html
   [388]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-6/igt@kms_feature_discovery@chamelium.html

  * igt@kms_feature_discovery@display-2x:
    - shard-dg1:          [SKIP][389] ([i915#1839] / [i915#4423]) -> [SKIP][390] ([i915#1839])
   [389]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-dg1-14/igt@kms_feature_discovery@display-2x.html
   [390]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-dg1-19/igt@kms_feature_discovery@display-2x.html

  * igt@kms_feature_discovery@psr1:
    - shard-rkl:          [SKIP][391] ([i915#14544] / [i915#658]) -> [SKIP][392] ([i915#658])
   [391]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-rkl-6/igt@kms_feature_discovery@psr1.html
   [392]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-4/igt@kms_feature_discovery@psr1.html

  * igt@kms_flip@2x-flip-vs-wf_vblank:
    - shard-rkl:          [SKIP][393] ([i915#14544] / [i915#9934]) -> [SKIP][394] ([i915#9934]) +1 other test skip
   [393]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-rkl-6/igt@kms_flip@2x-flip-vs-wf_vblank.html
   [394]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-4/igt@kms_flip@2x-flip-vs-wf_vblank.html

  * igt@kms_flip@2x-plain-flip:
    - shard-rkl:          [SKIP][395] ([i915#9934]) -> [SKIP][396] ([i915#14544] / [i915#9934]) +6 other tests skip
   [395]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-rkl-2/igt@kms_flip@2x-plain-flip.html
   [396]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-6/igt@kms_flip@2x-plain-flip.html

  * igt@kms_flip@flip-vs-suspend-interruptible:
    - shard-glk:          [INCOMPLETE][397] ([i915#12314] / [i915#12745] / [i915#4839] / [i915#6113]) -> [INCOMPLETE][398] ([i915#12314] / [i915#12745] / [i915#4839])
   [397]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-glk5/igt@kms_flip@flip-vs-suspend-interruptible.html
   [398]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-glk8/igt@kms_flip@flip-vs-suspend-interruptible.html

  * igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-64bpp-4tile-upscaling:
    - shard-rkl:          [SKIP][399] ([i915#2672] / [i915#3555]) -> [SKIP][400] ([i915#14544] / [i915#2672] / [i915#3555]) +2 other tests skip
   [399]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-rkl-3/igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-64bpp-4tile-upscaling.html
   [400]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-6/igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-64bpp-4tile-upscaling.html

  * igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling@pipe-a-valid-mode:
    - shard-rkl:          [SKIP][401] ([i915#14544] / [i915#2672]) -> [SKIP][402] ([i915#2672]) +1 other test skip
   [401]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-rkl-6/igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling@pipe-a-valid-mode.html
   [402]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-4/igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling@pipe-a-valid-mode.html

  * igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-16bpp-4tile-downscaling@pipe-a-valid-mode:
    - shard-rkl:          [SKIP][403] ([i915#2672]) -> [SKIP][404] ([i915#14544] / [i915#2672]) +2 other tests skip
   [403]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-rkl-2/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-16bpp-4tile-downscaling@pipe-a-valid-mode.html
   [404]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-6/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-16bpp-4tile-downscaling@pipe-a-valid-mode.html

  * igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tiledg2rcccs-upscaling:
    - shard-rkl:          [SKIP][405] ([i915#14544] / [i915#2672] / [i915#3555]) -> [SKIP][406] ([i915#2672] / [i915#3555]) +1 other test skip
   [405]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-rkl-6/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tiledg2rcccs-upscaling.html
   [406]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-4/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tiledg2rcccs-upscaling.html

  * igt@kms_frontbuffer_tracking@fbcpsr-1p-offscreen-pri-shrfb-draw-blt:
    - shard-rkl:          [SKIP][407] ([i915#15102]) -> [SKIP][408] ([i915#14544] / [i915#15102]) +3 other tests skip
   [407]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-rkl-3/igt@kms_frontbuffer_tracking@fbcpsr-1p-offscreen-pri-shrfb-draw-blt.html
   [408]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-6/igt@kms_frontbuffer_tracking@fbcpsr-1p-offscreen-pri-shrfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@fbcpsr-tiling-4:
    - shard-rkl:          [SKIP][409] ([i915#5439]) -> [SKIP][410] ([i915#14544] / [i915#5439])
   [409]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-rkl-3/igt@kms_frontbuffer_tracking@fbcpsr-tiling-4.html
   [410]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-6/igt@kms_frontbuffer_tracking@fbcpsr-tiling-4.html

  * igt@kms_frontbuffer_tracking@psr-1p-offscreen-pri-indfb-draw-pwrite:
    - shard-rkl:          [SKIP][411] ([i915#14544] / [i915#15102]) -> [SKIP][412] ([i915#15102]) +2 other tests skip
   [411]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-rkl-6/igt@kms_frontbuffer_tracking@psr-1p-offscreen-pri-indfb-draw-pwrite.html
   [412]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-4/igt@kms_frontbuffer_tracking@psr-1p-offscreen-pri-indfb-draw-pwrite.html

  * igt@kms_frontbuffer_tracking@psr-2p-primscrn-shrfb-plflip-blt:
    - shard-dg1:          [SKIP][413] ([i915#4423]) -> [SKIP][414] +1 other test skip
   [413]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-dg1-15/igt@kms_frontbuffer_tracking@psr-2p-primscrn-shrfb-plflip-blt.html
   [414]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-dg1-14/igt@kms_frontbuffer_tracking@psr-2p-primscrn-shrfb-plflip-blt.html

  * igt@kms_frontbuffer_tracking@psr-2p-primscrn-spr-indfb-draw-mmap-wc:
    - shard-rkl:          [SKIP][415] ([i915#14544] / [i915#1825]) -> [SKIP][416] ([i915#1825]) +15 other tests skip
   [415]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-rkl-6/igt@kms_frontbuffer_tracking@psr-2p-primscrn-spr-indfb-draw-mmap-wc.html
   [416]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-4/igt@kms_frontbuffer_tracking@psr-2p-primscrn-spr-indfb-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@psr-2p-scndscrn-indfb-msflip-blt:
    - shard-rkl:          [SKIP][417] ([i915#1825]) -> [SKIP][418] ([i915#14544] / [i915#1825]) +20 other tests skip
   [417]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-rkl-2/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-indfb-msflip-blt.html
   [418]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-6/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-indfb-msflip-blt.html

  * igt@kms_frontbuffer_tracking@psr-indfb-scaledprimary:
    - shard-rkl:          [SKIP][419] ([i915#14544] / [i915#15102] / [i915#3023]) -> [SKIP][420] ([i915#15102] / [i915#3023]) +10 other tests skip
   [419]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-rkl-6/igt@kms_frontbuffer_tracking@psr-indfb-scaledprimary.html
   [420]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-4/igt@kms_frontbuffer_tracking@psr-indfb-scaledprimary.html

  * igt@kms_frontbuffer_tracking@psr-rgb101010-draw-render:
    - shard-rkl:          [SKIP][421] ([i915#15102] / [i915#3023]) -> [SKIP][422] ([i915#14544] / [i915#15102] / [i915#3023]) +15 other tests skip
   [421]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-rkl-3/igt@kms_frontbuffer_tracking@psr-rgb101010-draw-render.html
   [422]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-6/igt@kms_frontbuffer_tracking@psr-rgb101010-draw-render.html

  * igt@kms_joiner@invalid-modeset-force-ultra-joiner:
    - shard-rkl:          [SKIP][423] ([i915#12394] / [i915#14544]) -> [SKIP][424] ([i915#12394])
   [423]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-rkl-6/igt@kms_joiner@invalid-modeset-force-ultra-joiner.html
   [424]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-4/igt@kms_joiner@invalid-modeset-force-ultra-joiner.html

  * igt@kms_joiner@invalid-modeset-ultra-joiner:
    - shard-rkl:          [SKIP][425] ([i915#12339]) -> [SKIP][426] ([i915#12339] / [i915#14544])
   [425]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-rkl-2/igt@kms_joiner@invalid-modeset-ultra-joiner.html
   [426]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-6/igt@kms_joiner@invalid-modeset-ultra-joiner.html

  * igt@kms_pipe_stress@stress-xrgb8888-yftiled:
    - shard-rkl:          [SKIP][427] ([i915#14544] / [i915#14712]) -> [SKIP][428] ([i915#14712])
   [427]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-rkl-6/igt@kms_pipe_stress@stress-xrgb8888-yftiled.html
   [428]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-4/igt@kms_pipe_stress@stress-xrgb8888-yftiled.html

  * igt@kms_plane_multiple@tiling-4:
    - shard-rkl:          [SKIP][429] ([i915#14259] / [i915#14544]) -> [SKIP][430] ([i915#14259])
   [429]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-rkl-6/igt@kms_plane_multiple@tiling-4.html
   [430]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-4/igt@kms_plane_multiple@tiling-4.html

  * igt@kms_plane_multiple@tiling-yf:
    - shard-rkl:          [SKIP][431] ([i915#14259]) -> [SKIP][432] ([i915#14259] / [i915#14544])
   [431]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-rkl-3/igt@kms_plane_multiple@tiling-yf.html
   [432]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-6/igt@kms_plane_multiple@tiling-yf.html

  * igt@kms_plane_scaling@plane-downscale-factor-0-5-with-rotation@pipe-b:
    - shard-rkl:          [SKIP][433] ([i915#15329]) -> [SKIP][434] ([i915#14544] / [i915#15329]) +3 other tests skip
   [433]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-rkl-2/igt@kms_plane_scaling@plane-downscale-factor-0-5-with-rotation@pipe-b.html
   [434]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-6/igt@kms_plane_scaling@plane-downscale-factor-0-5-with-rotation@pipe-b.html

  * igt@kms_plane_scaling@plane-downscale-factor-0-75-with-rotation@pipe-a:
    - shard-rkl:          [SKIP][435] ([i915#14544] / [i915#15329]) -> [SKIP][436] ([i915#15329]) +3 other tests skip
   [435]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-rkl-6/igt@kms_plane_scaling@plane-downscale-factor-0-75-with-rotation@pipe-a.html
   [436]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-4/igt@kms_plane_scaling@plane-downscale-factor-0-75-with-rotation@pipe-a.html

  * igt@kms_pm_backlight@brightness-with-dpms:
    - shard-rkl:          [SKIP][437] ([i915#12343]) -> [SKIP][438] ([i915#12343] / [i915#14544])
   [437]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-rkl-3/igt@kms_pm_backlight@brightness-with-dpms.html
   [438]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-6/igt@kms_pm_backlight@brightness-with-dpms.html

  * igt@kms_pm_dc@dc5-retention-flops:
    - shard-rkl:          [SKIP][439] ([i915#3828]) -> [SKIP][440] ([i915#14544] / [i915#3828])
   [439]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-rkl-2/igt@kms_pm_dc@dc5-retention-flops.html
   [440]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-6/igt@kms_pm_dc@dc5-retention-flops.html

  * igt@kms_pm_dc@dc6-psr:
    - shard-rkl:          [SKIP][441] ([i915#9685]) -> [SKIP][442] ([i915#14544] / [i915#9685])
   [441]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-rkl-2/igt@kms_pm_dc@dc6-psr.html
   [442]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-6/igt@kms_pm_dc@dc6-psr.html

  * igt@kms_pm_lpsp@screens-disabled:
    - shard-rkl:          [SKIP][443] ([i915#14544] / [i915#8430]) -> [SKIP][444] ([i915#8430])
   [443]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-rkl-6/igt@kms_pm_lpsp@screens-disabled.html
   [444]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-4/igt@kms_pm_lpsp@screens-disabled.html

  * igt@kms_pm_rpm@modeset-pc8-residency-stress:
    - shard-rkl:          [SKIP][445] ([i915#14544]) -> [SKIP][446] +5 other tests skip
   [445]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-rkl-6/igt@kms_pm_rpm@modeset-pc8-residency-stress.html
   [446]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-4/igt@kms_pm_rpm@modeset-pc8-residency-stress.html

  * igt@kms_psr2_sf@pr-overlay-plane-update-continuous-sf:
    - shard-rkl:          [SKIP][447] ([i915#11520]) -> [SKIP][448] ([i915#11520] / [i915#14544]) +4 other tests skip
   [447]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-rkl-2/igt@kms_psr2_sf@pr-overlay-plane-update-continuous-sf.html
   [448]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-6/igt@kms_psr2_sf@pr-overlay-plane-update-continuous-sf.html

  * igt@kms_psr2_sf@psr2-overlay-plane-update-continuous-sf:
    - shard-rkl:          [SKIP][449] ([i915#11520] / [i915#14544]) -> [SKIP][450] ([i915#11520]) +4 other tests skip
   [449]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-rkl-6/igt@kms_psr2_sf@psr2-overlay-plane-update-continuous-sf.html
   [450]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-4/igt@kms_psr2_sf@psr2-overlay-plane-update-continuous-sf.html

  * igt@kms_psr@psr-sprite-plane-move:
    - shard-rkl:          [SKIP][451] ([i915#1072] / [i915#14544] / [i915#9732]) -> [SKIP][452] ([i915#1072] / [i915#9732]) +9 other tests skip
   [451]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-rkl-6/igt@kms_psr@psr-sprite-plane-move.html
   [452]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-4/igt@kms_psr@psr-sprite-plane-move.html

  * igt@kms_psr@psr-sprite-plane-onoff:
    - shard-rkl:          [SKIP][453] ([i915#1072] / [i915#9732]) -> [SKIP][454] ([i915#1072] / [i915#14544] / [i915#9732]) +15 other tests skip
   [453]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-rkl-2/igt@kms_psr@psr-sprite-plane-onoff.html
   [454]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-6/igt@kms_psr@psr-sprite-plane-onoff.html

  * igt@kms_rotation_crc@primary-yf-tiled-reflect-x-0:
    - shard-rkl:          [SKIP][455] ([i915#5289]) -> [SKIP][456] ([i915#14544] / [i915#5289])
   [455]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-rkl-3/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-0.html
   [456]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-6/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-0.html

  * igt@kms_rotation_crc@primary-yf-tiled-reflect-x-90:
    - shard-rkl:          [SKIP][457] ([i915#14544] / [i915#5289]) -> [SKIP][458] ([i915#5289])
   [457]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-rkl-6/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-90.html
   [458]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-4/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-90.html

  * igt@kms_scaling_modes@scaling-mode-full:
    - shard-rkl:          [SKIP][459] ([i915#14544] / [i915#3555]) -> [SKIP][460] ([i915#3555]) +1 other test skip
   [459]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-rkl-6/igt@kms_scaling_modes@scaling-mode-full.html
   [460]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-4/igt@kms_scaling_modes@scaling-mode-full.html

  * igt@kms_scaling_modes@scaling-mode-full-aspect:
    - shard-rkl:          [SKIP][461] ([i915#3555]) -> [SKIP][462] ([i915#14544] / [i915#3555])
   [461]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-rkl-3/igt@kms_scaling_modes@scaling-mode-full-aspect.html
   [462]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-6/igt@kms_scaling_modes@scaling-mode-full-aspect.html

  * igt@kms_vrr@flip-suspend:
    - shard-rkl:          [SKIP][463] ([i915#15243] / [i915#3555]) -> [SKIP][464] ([i915#14544] / [i915#15243] / [i915#3555])
   [463]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-rkl-2/igt@kms_vrr@flip-suspend.html
   [464]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-6/igt@kms_vrr@flip-suspend.html

  * igt@kms_writeback@writeback-check-output-xrgb2101010:
    - shard-rkl:          [SKIP][465] ([i915#14544] / [i915#2437] / [i915#9412]) -> [SKIP][466] ([i915#2437] / [i915#9412])
   [465]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-rkl-6/igt@kms_writeback@writeback-check-output-xrgb2101010.html
   [466]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-4/igt@kms_writeback@writeback-check-output-xrgb2101010.html

  * igt@kms_writeback@writeback-fb-id:
    - shard-rkl:          [SKIP][467] ([i915#2437]) -> [SKIP][468] ([i915#14544] / [i915#2437]) +1 other test skip
   [467]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17640/shard-rkl-3/igt@kms_writeback@writeback-fb-id.html
   [468]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_158509v2/shard-rkl-6/igt@kms_writeback@writeback-fb-id.html

  
  {name}: This element is suppressed. This means it is ignored when computing
          the status of the difference (SUCCESS, WARNING, or FAILURE).

  [i915#10056]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10056
  [i915#10307]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10307
  [i915#10656]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10656
  [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#11520]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11520
  [i915#12061]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12061
  [i915#12313]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12313
  [i915#12314]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12314
  [i915#12339]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12339
  [i915#12343]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12343
  [i915#12388]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12388
  [i915#12392]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12392
  [i915#12394]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12394
  [i915#1257]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1257
  [i915#12655]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12655
  [i915#12713]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12713
  [i915#12745]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12745
  [i915#12755]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12755
  [i915#12756]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12756
  [i915#12761]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12761
  [i915#12805]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12805
  [i915#12910]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12910
  [i915#13028]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13028
  [i915#13049]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13049
  [i915#13356]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13356
  [i915#13409]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13409
  [i915#13476]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13476
  [i915#13522]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13522
  [i915#13566]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13566
  [i915#13707]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13707
  [i915#13783]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13783
  [i915#14033]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14033
  [i915#14098]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14098
  [i915#14259]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14259
  [i915#14350]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14350
  [i915#14419]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14419
  [i915#14544]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14544
  [i915#14600]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14600
  [i915#14712]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14712
  [i915#14785]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14785
  [i915#14809]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14809
  [i915#15060]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15060
  [i915#15073]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15073
  [i915#15102]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15102
  [i915#15131]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15131
  [i915#15243]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15243
  [i915#15329]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15329
  [i915#15342]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15342
  [i915#15343]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15343
  [i915#15351]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15351
  [i915#15386]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15386
  [i915#15389]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15389
  [i915#1769]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1769
  [i915#1825]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1825
  [i915#1839]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1839
  [i915#2065]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2065
  [i915#2346]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2346
  [i915#2435]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2435
  [i915#2437]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2437
  [i915#2527]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2527
  [i915#2587]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2587
  [i915#2658]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2658
  [i915#2672]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2672
  [i915#280]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/280
  [i915#2856]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2856
  [i915#3023]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3023
  [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#3458]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3458
  [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#3742]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3742
  [i915#3828]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3828
  [i915#3840]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3840
  [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#4212]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4212
  [i915#4213]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4213
  [i915#4235]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4235
  [i915#4270]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4270
  [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#4537]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4537
  [i915#4538]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4538
  [i915#4613]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4613
  [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#4854]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4854
  [i915#5138]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5138
  [i915#5190]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5190
  [i915#5286]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5286
  [i915#5289]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5289
  [i915#5354]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5354
  [i915#5439]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5439
  [i915#5507]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5507
  [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#6245]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6245
  [i915#6301]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6301
  [i915#6335]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6335
  [i915#6344]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6344
  [i915#6412]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6412
  [i915#6524]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6524
  [i915#658]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/658
  [i915#6590]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6590
  [i915#6880]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6880
  [i915#6944]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6944
  [i915#6953]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6953
  [i915#7116]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7116
  [i915#7118]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7118
  [i915#7173]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7173
  [i915#7582]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7582
  [i915#7697]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7697
  [i915#7707]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7707
  [i915#7828]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7828
  [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#8411]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8411
  [i915#8430]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8430
  [i915#8516]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8516
  [i915#8562]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8562
  [i915#8708]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8708
  [i915#8814]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8814
  [i915#9067]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9067
  [i915#9323]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9323
  [i915#9412]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9412
  [i915#9424]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9424
  [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#9808]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9808
  [i915#9906]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9906
  [i915#9917]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9917
  [i915#9934]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9934


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

  * Linux: CI_DRM_17640 -> Patchwork_158509v2

  CI-20190529: 20190529
  CI_DRM_17640: a36e2c7fed2132052900236e8c7aa563d339baaf @ git://anongit.freedesktop.org/gfx-ci/linux
  IGT_8655: 8655
  Patchwork_158509v2: a36e2c7fed2132052900236e8c7aa563d339baaf @ 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_158509v2/index.html

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

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

* Re: [PATCH v2 1/4] drm/i915/fbc: let to_intel_display() do its generic magic
  2025-12-05 10:30 ` [PATCH v2 1/4] drm/i915/fbc: let to_intel_display() do its generic magic Jani Nikula
@ 2025-12-09 13:25   ` Govindapillai, Vinod
  0 siblings, 0 replies; 11+ messages in thread
From: Govindapillai, Vinod @ 2025-12-09 13:25 UTC (permalink / raw)
  To: intel-xe@lists.freedesktop.org, Nikula, Jani,
	intel-gfx@lists.freedesktop.org

On Fri, 2025-12-05 at 12:30 +0200, Jani Nikula wrote:
> to_intel_display() generics can handle struct intel_plane_state,
> struct
> intel_atomic_state, and struct intel_crtc just fine. Pass them
> directly.
> 
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
> ---
>  drivers/gpu/drm/i915/display/intel_fbc.c | 34 ++++++++++++----------
> --
>  1 file changed, 17 insertions(+), 17 deletions(-)
> 

Reviewed-by: Vinod Govindapillai <vinod.govindapillai@intel.com>


> diff --git a/drivers/gpu/drm/i915/display/intel_fbc.c
> b/drivers/gpu/drm/i915/display/intel_fbc.c
> index 155b308ed66f..0e946bed484f 100644
> --- a/drivers/gpu/drm/i915/display/intel_fbc.c
> +++ b/drivers/gpu/drm/i915/display/intel_fbc.c
> @@ -217,7 +217,7 @@ static unsigned int _intel_fbc_cfb_stride(struct
> intel_display *display,
>  
>  static unsigned int intel_fbc_cfb_stride(const struct
> intel_plane_state *plane_state)
>  {
> -	struct intel_display *display =
> to_intel_display(plane_state->uapi.plane->dev);
> +	struct intel_display *display =
> to_intel_display(plane_state);
>  	unsigned int stride =
> intel_fbc_plane_cfb_stride(plane_state);
>  	unsigned int width = drm_rect_width(&plane_state->uapi.src)
> >> 16;
>  	unsigned int cpp = intel_fbc_cfb_cpp(plane_state);
> @@ -248,7 +248,7 @@ static unsigned int _intel_fbc_cfb_size(struct
> intel_display *display,
>  
>  static unsigned int intel_fbc_cfb_size(const struct
> intel_plane_state *plane_state)
>  {
> -	struct intel_display *display =
> to_intel_display(plane_state->uapi.plane->dev);
> +	struct intel_display *display =
> to_intel_display(plane_state);
>  	unsigned int height = drm_rect_height(&plane_state-
> >uapi.src) >> 16;
>  
>  	return _intel_fbc_cfb_size(display, height,
> intel_fbc_cfb_stride(plane_state));
> @@ -256,7 +256,7 @@ static unsigned int intel_fbc_cfb_size(const
> struct intel_plane_state *plane_sta
>  
>  static u16 intel_fbc_override_cfb_stride(const struct
> intel_plane_state *plane_state)
>  {
> -	struct intel_display *display =
> to_intel_display(plane_state->uapi.plane->dev);
> +	struct intel_display *display =
> to_intel_display(plane_state);
>  	unsigned int stride_aligned =
> intel_fbc_cfb_stride(plane_state);
>  	unsigned int stride =
> intel_fbc_plane_cfb_stride(plane_state);
>  	const struct drm_framebuffer *fb = plane_state->hw.fb;
> @@ -1098,7 +1098,7 @@ static bool icl_fbc_stride_is_valid(const
> struct intel_plane_state *plane_state)
>  
>  static bool stride_is_valid(const struct intel_plane_state
> *plane_state)
>  {
> -	struct intel_display *display =
> to_intel_display(plane_state->uapi.plane->dev);
> +	struct intel_display *display =
> to_intel_display(plane_state);
>  
>  	if (DISPLAY_VER(display) >= 11)
>  		return icl_fbc_stride_is_valid(plane_state);
> @@ -1114,7 +1114,7 @@ static bool stride_is_valid(const struct
> intel_plane_state *plane_state)
>  
>  static bool i8xx_fbc_pixel_format_is_valid(const struct
> intel_plane_state *plane_state)
>  {
> -	struct intel_display *display =
> to_intel_display(plane_state->uapi.plane->dev);
> +	struct intel_display *display =
> to_intel_display(plane_state);
>  	const struct drm_framebuffer *fb = plane_state->hw.fb;
>  
>  	switch (fb->format->format) {
> @@ -1134,7 +1134,7 @@ static bool
> i8xx_fbc_pixel_format_is_valid(const struct intel_plane_state *plane
>  
>  static bool g4x_fbc_pixel_format_is_valid(const struct
> intel_plane_state *plane_state)
>  {
> -	struct intel_display *display =
> to_intel_display(plane_state->uapi.plane->dev);
> +	struct intel_display *display =
> to_intel_display(plane_state);
>  	const struct drm_framebuffer *fb = plane_state->hw.fb;
>  
>  	switch (fb->format->format) {
> @@ -1213,7 +1213,7 @@ intel_fbc_is_enable_pixel_normalizer(const
> struct intel_plane_state *plane_state
>  
>  static bool pixel_format_is_valid(const struct intel_plane_state
> *plane_state)
>  {
> -	struct intel_display *display =
> to_intel_display(plane_state->uapi.plane->dev);
> +	struct intel_display *display =
> to_intel_display(plane_state);
>  
>  	if (DISPLAY_VER(display) >= 35)
>  		return
> xe3p_lpd_fbc_pixel_format_is_valid(plane_state);
> @@ -1249,7 +1249,7 @@ static bool skl_fbc_rotation_is_valid(const
> struct intel_plane_state *plane_stat
>  
>  static bool rotation_is_valid(const struct intel_plane_state
> *plane_state)
>  {
> -	struct intel_display *display =
> to_intel_display(plane_state->uapi.plane->dev);
> +	struct intel_display *display =
> to_intel_display(plane_state);
>  
>  	if (DISPLAY_VER(display) >= 9)
>  		return skl_fbc_rotation_is_valid(plane_state);
> @@ -1288,7 +1288,7 @@ static void intel_fbc_max_surface_size(struct
> intel_display *display,
>   */
>  static bool intel_fbc_surface_size_ok(const struct intel_plane_state
> *plane_state)
>  {
> -	struct intel_display *display =
> to_intel_display(plane_state->uapi.plane->dev);
> +	struct intel_display *display =
> to_intel_display(plane_state);
>  	unsigned int effective_w, effective_h, max_w, max_h;
>  
>  	intel_fbc_max_surface_size(display, &max_w, &max_h);
> @@ -1321,7 +1321,7 @@ static void intel_fbc_max_plane_size(struct
> intel_display *display,
>  
>  static bool intel_fbc_plane_size_valid(const struct
> intel_plane_state *plane_state)
>  {
> -	struct intel_display *display =
> to_intel_display(plane_state->uapi.plane->dev);
> +	struct intel_display *display =
> to_intel_display(plane_state);
>  	unsigned int w, h, max_w, max_h;
>  
>  	intel_fbc_max_plane_size(display, &max_w, &max_h);
> @@ -1346,7 +1346,7 @@ static bool skl_fbc_tiling_valid(const struct
> intel_plane_state *plane_state)
>  
>  static bool tiling_is_valid(const struct intel_plane_state
> *plane_state)
>  {
> -	struct intel_display *display =
> to_intel_display(plane_state->uapi.plane->dev);
> +	struct intel_display *display =
> to_intel_display(plane_state);
>  
>  	if (DISPLAY_VER(display) >= 9)
>  		return skl_fbc_tiling_valid(plane_state);
> @@ -1426,7 +1426,7 @@ static void intel_fbc_update_state(struct
> intel_atomic_state *state,
>  				   struct intel_crtc *crtc,
>  				   struct intel_plane *plane)
>  {
> -	struct intel_display *display = to_intel_display(state-
> >base.dev);
> +	struct intel_display *display = to_intel_display(state);
>  	const struct intel_crtc_state *crtc_state =
>  		intel_atomic_get_new_crtc_state(state, crtc);
>  	const struct intel_plane_state *plane_state =
> @@ -1459,7 +1459,7 @@ static void intel_fbc_update_state(struct
> intel_atomic_state *state,
>  
>  static bool intel_fbc_is_fence_ok(const struct intel_plane_state
> *plane_state)
>  {
> -	struct intel_display *display =
> to_intel_display(plane_state->uapi.plane->dev);
> +	struct intel_display *display =
> to_intel_display(plane_state);
>  
>  	/*
>  	 * The use of a CPU fence is one of two ways to detect
> writes by the
> @@ -1566,7 +1566,7 @@ static int _intel_fbc_min_cdclk(const struct
> intel_crtc_state *crtc_state)
>  static int intel_fbc_check_plane(struct intel_atomic_state *state,
>  				 struct intel_plane *plane)
>  {
> -	struct intel_display *display = to_intel_display(state-
> >base.dev);
> +	struct intel_display *display = to_intel_display(state);
>  	struct intel_plane_state *plane_state =
>  		intel_atomic_get_new_plane_state(state, plane);
>  	const struct drm_framebuffer *fb = plane_state->hw.fb;
> @@ -1793,7 +1793,7 @@ static bool __intel_fbc_pre_update(struct
> intel_atomic_state *state,
>  				   struct intel_crtc *crtc,
>  				   struct intel_plane *plane)
>  {
> -	struct intel_display *display = to_intel_display(state-
> >base.dev);
> +	struct intel_display *display = to_intel_display(state);
>  	struct intel_fbc *fbc = plane->fbc;
>  	bool need_vblank_wait = false;
>  
> @@ -2008,7 +2008,7 @@ static void __intel_fbc_enable(struct
> intel_atomic_state *state,
>  			       struct intel_crtc *crtc,
>  			       struct intel_plane *plane)
>  {
> -	struct intel_display *display = to_intel_display(state-
> >base.dev);
> +	struct intel_display *display = to_intel_display(state);
>  	const struct intel_plane_state *plane_state =
>  		intel_atomic_get_new_plane_state(state, plane);
>  	struct intel_fbc *fbc = plane->fbc;
> @@ -2072,7 +2072,7 @@ static void __intel_fbc_enable(struct
> intel_atomic_state *state,
>   */
>  void intel_fbc_disable(struct intel_crtc *crtc)
>  {
> -	struct intel_display *display = to_intel_display(crtc-
> >base.dev);
> +	struct intel_display *display = to_intel_display(crtc);
>  	struct intel_plane *plane;
>  
>  	for_each_intel_plane(display->drm, plane) {


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

* Re: [PATCH v2 2/4] drm/xe/stolen: unify interface with i915
  2025-12-05 10:30 ` [PATCH v2 2/4] drm/xe/stolen: unify interface with i915 Jani Nikula
@ 2025-12-09 13:34   ` Govindapillai, Vinod
  0 siblings, 0 replies; 11+ messages in thread
From: Govindapillai, Vinod @ 2025-12-09 13:34 UTC (permalink / raw)
  To: intel-xe@lists.freedesktop.org, Nikula, Jani,
	intel-gfx@lists.freedesktop.org

On Fri, 2025-12-05 at 12:30 +0200, Jani Nikula wrote:
> Have i915_gem_stolen_node_offset() return u64, and pass const pointer
> to
> them.
> 
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
> ---
>  drivers/gpu/drm/xe/compat-i915-headers/gem/i915_gem_stolen.h | 4 ++-
> -
>  drivers/gpu/drm/xe/display/xe_stolen.c                       | 4 ++-
> -
>  2 files changed, 4 insertions(+), 4 deletions(-)

Reviewed-by: Vinod Govindapillai <vinod.govindapillai@intel.com>

> 
> diff --git a/drivers/gpu/drm/xe/compat-i915-
> headers/gem/i915_gem_stolen.h b/drivers/gpu/drm/xe/compat-i915-
> headers/gem/i915_gem_stolen.h
> index 48e3256ba37e..368045a470d1 100644
> --- a/drivers/gpu/drm/xe/compat-i915-headers/gem/i915_gem_stolen.h
> +++ b/drivers/gpu/drm/xe/compat-i915-headers/gem/i915_gem_stolen.h
> @@ -23,13 +23,13 @@ bool i915_gem_stolen_initialized(struct
> drm_device *drm);
>  
>  bool i915_gem_stolen_node_allocated(const struct intel_stolen_node
> *node);
>  
> -u32 i915_gem_stolen_node_offset(struct intel_stolen_node *node);
> +u64 i915_gem_stolen_node_offset(const struct intel_stolen_node
> *node);
>  
>  u64 i915_gem_stolen_area_address(struct drm_device *drm);
>  
>  u64 i915_gem_stolen_area_size(struct drm_device *drm);
>  
> -u64 i915_gem_stolen_node_address(struct intel_stolen_node *node);
> +u64 i915_gem_stolen_node_address(const struct intel_stolen_node
> *node);
>  
>  u64 i915_gem_stolen_node_size(const struct intel_stolen_node *node);
>  
> diff --git a/drivers/gpu/drm/xe/display/xe_stolen.c
> b/drivers/gpu/drm/xe/display/xe_stolen.c
> index 9f04ba36e930..387506586288 100644
> --- a/drivers/gpu/drm/xe/display/xe_stolen.c
> +++ b/drivers/gpu/drm/xe/display/xe_stolen.c
> @@ -67,7 +67,7 @@ bool i915_gem_stolen_node_allocated(const struct
> intel_stolen_node *node)
>  	return node->bo;
>  }
>  
> -u32 i915_gem_stolen_node_offset(struct intel_stolen_node *node)
> +u64 i915_gem_stolen_node_offset(const struct intel_stolen_node
> *node)
>  {
>  	struct xe_res_cursor res;
>  
> @@ -91,7 +91,7 @@ u64 i915_gem_stolen_area_size(struct drm_device
> *drm)
>  	return 0;
>  }
>  
> -u64 i915_gem_stolen_node_address(struct intel_stolen_node *node)
> +u64 i915_gem_stolen_node_address(const struct intel_stolen_node
> *node)
>  {
>  	struct xe_device *xe = node->xe;
>  


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

* Re: [PATCH v2 3/4] drm/{i915, xe}/stolen: move stolen memory handling to display parent interface
  2025-12-05 10:30 ` [PATCH v2 3/4] drm/{i915, xe}/stolen: move stolen memory handling to display parent interface Jani Nikula
@ 2025-12-09 14:15   ` Govindapillai, Vinod
  0 siblings, 0 replies; 11+ messages in thread
From: Govindapillai, Vinod @ 2025-12-09 14:15 UTC (permalink / raw)
  To: intel-xe@lists.freedesktop.org, Nikula, Jani,
	intel-gfx@lists.freedesktop.org

On Fri, 2025-12-05 at 12:30 +0200, Jani Nikula wrote:
> Call the stolen memory interface through the display parent
> interface.
> 
> This makes xe compat gem/i915_gem_stolen.h redundant, and it can be
> removed.
> 
> v2: Rebase, convert one more call that appeared
> 
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
> ---
>  drivers/gpu/drm/i915/display/intel_fbc.c      | 71 ++++++++++-------
> --
>  drivers/gpu/drm/i915/display/intel_parent.c   | 66 +++++++++++++++++
>  drivers/gpu/drm/i915/display/intel_parent.h   | 19 +++++
>  drivers/gpu/drm/i915/gem/i915_gem_stolen.c    | 52 +++++++++-----
>  drivers/gpu/drm/i915/gem/i915_gem_stolen.h    | 23 +-----
>  drivers/gpu/drm/i915/i915_driver.c            |  1 +
>  .../compat-i915-headers/gem/i915_gem_stolen.h | 40 -----------
>  drivers/gpu/drm/xe/display/xe_display.c       |  4 +-
>  drivers/gpu/drm/xe/display/xe_stolen.c        | 47 ++++++++----
>  drivers/gpu/drm/xe/display/xe_stolen.h        |  9 +++
>  include/drm/intel/display_parent_interface.h  | 20 ++++++
>  11 files changed, 222 insertions(+), 130 deletions(-)
>  delete mode 100644 drivers/gpu/drm/xe/compat-i915-
> headers/gem/i915_gem_stolen.h
>  create mode 100644 drivers/gpu/drm/xe/display/xe_stolen.h
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_fbc.c
> b/drivers/gpu/drm/i915/display/intel_fbc.c
> index 0e946bed484f..fef2f35ff1e9 100644
> --- a/drivers/gpu/drm/i915/display/intel_fbc.c
> +++ b/drivers/gpu/drm/i915/display/intel_fbc.c
> @@ -45,8 +45,6 @@
>  #include <drm/drm_fourcc.h>
>  #include <drm/drm_print.h>
>  
> -#include "gem/i915_gem_stolen.h"
> -
>  #include "i915_vma.h"
>  #include "i9xx_plane_regs.h"
>  #include "intel_de.h"
> @@ -393,17 +391,17 @@ static void i8xx_fbc_program_cfb(struct
> intel_fbc *fbc)
>  	struct intel_display *display = fbc->display;
>  
>  	drm_WARN_ON(display->drm,
> -		    range_end_overflows_t(u64,
> i915_gem_stolen_area_address(display->drm),
> -					 
> i915_gem_stolen_node_offset(fbc->compressed_fb),
> +		    range_end_overflows_t(u64,
> intel_parent_stolen_area_address(display),
> +					 
> intel_parent_stolen_node_offset(display, fbc->compressed_fb),
>  					  U32_MAX));
>  	drm_WARN_ON(display->drm,
> -		    range_end_overflows_t(u64,
> i915_gem_stolen_area_address(display->drm),
> -					 
> i915_gem_stolen_node_offset(fbc->compressed_llb),
> +		    range_end_overflows_t(u64,
> intel_parent_stolen_area_address(display),
> +					 
> intel_parent_stolen_node_offset(display, fbc->compressed_llb),
>  					  U32_MAX));

Not related to this series, there are few other places in intel_fbc.c
where we use intel_parent_stolen_node_offset() directly as a parameter
to intel_de_write() which take u32. Wonder if we need to add the
similar warn on those places as well.

Reviewed-by: Vinod Govindapillai <vinod.govindapillai@intel.com>

>  	intel_de_write(display, FBC_CFB_BASE,
> -		       i915_gem_stolen_node_address(fbc-
> >compressed_fb));
> +		       intel_parent_stolen_node_address(display,
> fbc->compressed_fb));
>  	intel_de_write(display, FBC_LL_BASE,
> -		       i915_gem_stolen_node_address(fbc-
> >compressed_llb));
> +		       intel_parent_stolen_node_address(display,
> fbc->compressed_llb));
>  }
>  
>  static const struct intel_fbc_funcs i8xx_fbc_funcs = {
> @@ -511,7 +509,7 @@ static void g4x_fbc_program_cfb(struct intel_fbc
> *fbc)
>  	struct intel_display *display = fbc->display;
>  
>  	intel_de_write(display, DPFC_CB_BASE,
> -		       i915_gem_stolen_node_offset(fbc-
> >compressed_fb));
> +		       intel_parent_stolen_node_offset(display, fbc-
> >compressed_fb));
>  }
>  
>  static const struct intel_fbc_funcs g4x_fbc_funcs = {
> @@ -580,7 +578,7 @@ static void ilk_fbc_program_cfb(struct intel_fbc
> *fbc)
>  	struct intel_display *display = fbc->display;
>  
>  	intel_de_write(display, ILK_DPFC_CB_BASE(fbc->id),
> -		       i915_gem_stolen_node_offset(fbc-
> >compressed_fb));
> +		       intel_parent_stolen_node_offset(display, fbc-
> >compressed_fb));
>  }
>  
>  static const struct intel_fbc_funcs ilk_fbc_funcs = {
> @@ -819,7 +817,7 @@ static u64 intel_fbc_stolen_end(struct
> intel_display *display)
>  	 * underruns, even if that range is not reserved by the
> BIOS. */
>  	if (display->platform.broadwell ||
>  	    (DISPLAY_VER(display) == 9 && !display-
> >platform.broxton))
> -		end = i915_gem_stolen_area_size(display->drm) - 8 *
> 1024 * 1024;
> +		end = intel_parent_stolen_area_size(display) - 8 *
> 1024 * 1024;
>  	else
>  		end = U64_MAX;
>  
> @@ -854,14 +852,14 @@ static int find_compression_limit(struct
> intel_fbc *fbc,
>  	size /= limit;
>  
>  	/* Try to over-allocate to reduce reallocations and
> fragmentation. */
> -	ret = i915_gem_stolen_insert_node_in_range(fbc-
> >compressed_fb,
> -						   size <<= 1, 4096,
> 0, end);
> +	ret = intel_parent_stolen_insert_node_in_range(display, fbc-
> >compressed_fb,
> +						       size <<= 1,
> 4096, 0, end);
>  	if (ret == 0)
>  		return limit;
>  
>  	for (; limit <= intel_fbc_max_limit(display); limit <<= 1) {
> -		ret = i915_gem_stolen_insert_node_in_range(fbc-
> >compressed_fb,
> -							   size >>=
> 1, 4096, 0, end);
> +		ret =
> intel_parent_stolen_insert_node_in_range(display, fbc->compressed_fb,
> +							       size
> >>= 1, 4096, 0, end);
>  		if (ret == 0)
>  			return limit;
>  	}
> @@ -876,12 +874,12 @@ static int intel_fbc_alloc_cfb(struct intel_fbc
> *fbc,
>  	int ret;
>  
>  	drm_WARN_ON(display->drm,
> -		    i915_gem_stolen_node_allocated(fbc-
> >compressed_fb));
> +		    intel_parent_stolen_node_allocated(display, fbc-
> >compressed_fb));
>  	drm_WARN_ON(display->drm,
> -		    i915_gem_stolen_node_allocated(fbc-
> >compressed_llb));
> +		    intel_parent_stolen_node_allocated(display, fbc-
> >compressed_llb));
>  
>  	if (DISPLAY_VER(display) < 5 && !display->platform.g4x) {
> -		ret = i915_gem_stolen_insert_node(fbc-
> >compressed_llb, 4096, 4096);
> +		ret = intel_parent_stolen_insert_node(display, fbc-
> >compressed_llb, 4096, 4096);
>  		if (ret)
>  			goto err;
>  	}
> @@ -897,14 +895,14 @@ static int intel_fbc_alloc_cfb(struct intel_fbc
> *fbc,
>  
>  	drm_dbg_kms(display->drm,
>  		    "reserved %llu bytes of contiguous stolen space
> for FBC, limit: %d\n",
> -		    i915_gem_stolen_node_size(fbc->compressed_fb),
> fbc->limit);
> +		    intel_parent_stolen_node_size(display, fbc-
> >compressed_fb), fbc->limit);
>  	return 0;
>  
>  err_llb:
> -	if (i915_gem_stolen_node_allocated(fbc->compressed_llb))
> -		i915_gem_stolen_remove_node(fbc->compressed_llb);
> +	if (intel_parent_stolen_node_allocated(display, fbc-
> >compressed_llb))
> +		intel_parent_stolen_remove_node(display, fbc-
> >compressed_llb);
>  err:
> -	if (i915_gem_stolen_initialized(display->drm))
> +	if (intel_parent_stolen_initialized(display))
>  		drm_info_once(display->drm,
>  			      "not enough stolen space for
> compressed buffer (need %d more bytes), disabling. Hint: you may be
> able to increase stolen memory size in the BIOS to avoid this.\n",
> size);
>  	return -ENOSPC;
> @@ -1010,7 +1008,7 @@ static void fbc_sys_cache_enable(const struct
> intel_fbc *fbc)
>  
>  	range = fbc_sys_cache_limit(display) / (64 * 1024);
>  
> -	offset = i915_gem_stolen_node_offset(fbc->compressed_fb) /
> (4 * 1024);
> +	offset = intel_parent_stolen_node_offset(display, fbc-
> >compressed_fb) / (4 * 1024);
>  
>  	cfg = FBC_SYS_CACHE_TAG_USE_RES_SPACE |
> FBC_SYS_CACHEABLE_RANGE(range) |
>  	      FBC_SYS_CACHE_START_BASE(offset);
> @@ -1024,13 +1022,15 @@ static void fbc_sys_cache_enable(const struct
> intel_fbc *fbc)
>  
>  static void __intel_fbc_cleanup_cfb(struct intel_fbc *fbc)
>  {
> +	struct intel_display *display = fbc->display;
> +
>  	if (WARN_ON(intel_fbc_hw_is_active(fbc)))
>  		return;
>  
> -	if (i915_gem_stolen_node_allocated(fbc->compressed_llb))
> -		i915_gem_stolen_remove_node(fbc->compressed_llb);
> -	if (i915_gem_stolen_node_allocated(fbc->compressed_fb))
> -		i915_gem_stolen_remove_node(fbc->compressed_fb);
> +	if (intel_parent_stolen_node_allocated(display, fbc-
> >compressed_llb))
> +		intel_parent_stolen_remove_node(display, fbc-
> >compressed_llb);
> +	if (intel_parent_stolen_node_allocated(display, fbc-
> >compressed_fb))
> +		intel_parent_stolen_remove_node(display, fbc-
> >compressed_fb);
>  }
>  
>  void intel_fbc_cleanup(struct intel_display *display)
> @@ -1043,8 +1043,8 @@ void intel_fbc_cleanup(struct intel_display
> *display)
>  		__intel_fbc_cleanup_cfb(fbc);
>  		mutex_unlock(&fbc->lock);
>  
> -		i915_gem_stolen_node_free(fbc->compressed_fb);
> -		i915_gem_stolen_node_free(fbc->compressed_llb);
> +		intel_parent_stolen_node_free(display, fbc-
> >compressed_fb);
> +		intel_parent_stolen_node_free(display, fbc-
> >compressed_llb);
>  
>  		kfree(fbc);
>  	}
> @@ -1480,12 +1480,13 @@ static bool intel_fbc_is_fence_ok(const
> struct intel_plane_state *plane_state)
>  
>  static bool intel_fbc_is_cfb_ok(const struct intel_plane_state
> *plane_state)
>  {
> +	struct intel_display *display =
> to_intel_display(plane_state);
>  	struct intel_plane *plane = to_intel_plane(plane_state-
> >uapi.plane);
>  	struct intel_fbc *fbc = plane->fbc;
>  
>  	return intel_fbc_min_limit(plane_state) <= fbc->limit &&
>  		intel_fbc_cfb_size(plane_state) <= fbc->limit *
> -			i915_gem_stolen_node_size(fbc-
> >compressed_fb);
> +			intel_parent_stolen_node_size(display, fbc-
> >compressed_fb);
>  }
>  
>  static bool intel_fbc_is_ok(const struct intel_plane_state
> *plane_state)
> @@ -1577,7 +1578,7 @@ static int intel_fbc_check_plane(struct
> intel_atomic_state *state,
>  	if (!fbc)
>  		return 0;
>  
> -	if (!i915_gem_stolen_initialized(display->drm)) {
> +	if (!intel_parent_stolen_initialized(display)) {
>  		plane_state->no_fbc_reason = "stolen memory not
> initialised";
>  		return 0;
>  	}
> @@ -2282,10 +2283,10 @@ static struct intel_fbc
> *intel_fbc_create(struct intel_display *display,
>  	if (!fbc)
>  		return NULL;
>  
> -	fbc->compressed_fb = i915_gem_stolen_node_alloc(display-
> >drm);
> +	fbc->compressed_fb =
> intel_parent_stolen_node_alloc(display);
>  	if (!fbc->compressed_fb)
>  		goto err;
> -	fbc->compressed_llb = i915_gem_stolen_node_alloc(display-
> >drm);
> +	fbc->compressed_llb =
> intel_parent_stolen_node_alloc(display);
>  	if (!fbc->compressed_llb)
>  		goto err;
>  
> @@ -2310,8 +2311,8 @@ static struct intel_fbc
> *intel_fbc_create(struct intel_display *display,
>  	return fbc;
>  
>  err:
> -	i915_gem_stolen_node_free(fbc->compressed_llb);
> -	i915_gem_stolen_node_free(fbc->compressed_fb);
> +	intel_parent_stolen_node_free(display, fbc->compressed_llb);
> +	intel_parent_stolen_node_free(display, fbc->compressed_fb);
>  	kfree(fbc);
>  
>  	return NULL;
> diff --git a/drivers/gpu/drm/i915/display/intel_parent.c
> b/drivers/gpu/drm/i915/display/intel_parent.c
> index 2ea310cc3509..49cb64ca8c4c 100644
> --- a/drivers/gpu/drm/i915/display/intel_parent.c
> +++ b/drivers/gpu/drm/i915/display/intel_parent.c
> @@ -79,6 +79,72 @@ void intel_parent_rps_ilk_irq_handler(struct
> intel_display *display)
>  		display->parent->rps->ilk_irq_handler(display->drm);
>  }
>  
> +int intel_parent_stolen_insert_node_in_range(struct intel_display
> *display,
> +					     struct
> intel_stolen_node *node, u64 size,
> +					     unsigned int align, u64
> start, u64 end)
> +{
> +	return display->parent->stolen->insert_node_in_range(node,
> size, align, start, end);
> +}
> +
> +int intel_parent_stolen_insert_node(struct intel_display *display,
> struct intel_stolen_node *node, u64 size,
> +				    unsigned int align)
> +{
> +	return display->parent->stolen->insert_node(node, size,
> align);
> +}
> +
> +void intel_parent_stolen_remove_node(struct intel_display *display,
> +				     struct intel_stolen_node *node)
> +{
> +	display->parent->stolen->remove_node(node);
> +}
> +
> +bool intel_parent_stolen_initialized(struct intel_display *display)
> +{
> +	return display->parent->stolen->initialized(display->drm);
> +}
> +
> +bool intel_parent_stolen_node_allocated(struct intel_display
> *display,
> +					const struct
> intel_stolen_node *node)
> +{
> +	return display->parent->stolen->node_allocated(node);
> +}
> +
> +u32 intel_parent_stolen_node_offset(struct intel_display *display,
> struct intel_stolen_node *node)
> +{
> +	return display->parent->stolen->node_offset(node);
> +}
> +
> +u64 intel_parent_stolen_area_address(struct intel_display *display)
> +{
> +	return display->parent->stolen->area_address(display->drm);
> +}
> +
> +u64 intel_parent_stolen_area_size(struct intel_display *display)
> +{
> +	return display->parent->stolen->area_size(display->drm);
> +}
> +
> +u64 intel_parent_stolen_node_address(struct intel_display *display,
> struct intel_stolen_node *node)
> +{
> +	return display->parent->stolen->node_address(node);
> +}
> +
> +u64 intel_parent_stolen_node_size(struct intel_display *display,
> const struct intel_stolen_node *node)
> +{
> +	return display->parent->stolen->node_size(node);
> +}
> +
> +struct intel_stolen_node *intel_parent_stolen_node_alloc(struct
> intel_display *display)
> +{
> +	return display->parent->stolen->node_alloc(display->drm);
> +}
> +
> +void intel_parent_stolen_node_free(struct intel_display *display,
> const struct intel_stolen_node *node)
> +{
> +	display->parent->stolen->node_free(node);
> +}
> +
> +
>  bool intel_parent_vgpu_active(struct intel_display *display)
>  {
>  	return display->parent->vgpu_active && display->parent-
> >vgpu_active(display->drm);
> diff --git a/drivers/gpu/drm/i915/display/intel_parent.h
> b/drivers/gpu/drm/i915/display/intel_parent.h
> index 8f91a6f75c53..bc740dfad985 100644
> --- a/drivers/gpu/drm/i915/display/intel_parent.h
> +++ b/drivers/gpu/drm/i915/display/intel_parent.h
> @@ -9,6 +9,7 @@
>  struct dma_fence;
>  struct intel_display;
>  struct intel_hdcp_gsc_context;
> +struct intel_stolen_node;
>  
>  ssize_t intel_parent_hdcp_gsc_msg_send(struct intel_display
> *display,
>  				       struct intel_hdcp_gsc_context
> *gsc_context,
> @@ -27,6 +28,24 @@ void intel_parent_rps_boost_if_not_started(struct
> intel_display *display, struct
>  void intel_parent_rps_mark_interactive(struct intel_display
> *display, bool interactive);
>  void intel_parent_rps_ilk_irq_handler(struct intel_display
> *display);
>  
> +int intel_parent_stolen_insert_node_in_range(struct intel_display
> *display,
> +					     struct
> intel_stolen_node *node, u64 size,
> +					     unsigned int align, u64
> start, u64 end);
> +int intel_parent_stolen_insert_node(struct intel_display *display,
> struct intel_stolen_node *node, u64 size,
> +				    unsigned int align);
> +void intel_parent_stolen_remove_node(struct intel_display *display,
> +				     struct intel_stolen_node
> *node);
> +bool intel_parent_stolen_initialized(struct intel_display *display);
> +bool intel_parent_stolen_node_allocated(struct intel_display
> *display,
> +					const struct
> intel_stolen_node *node);
> +u32 intel_parent_stolen_node_offset(struct intel_display *display,
> struct intel_stolen_node *node);
> +u64 intel_parent_stolen_area_address(struct intel_display *display);
> +u64 intel_parent_stolen_area_size(struct intel_display *display);
> +u64 intel_parent_stolen_node_address(struct intel_display *display,
> struct intel_stolen_node *node);
> +u64 intel_parent_stolen_node_size(struct intel_display *display,
> const struct intel_stolen_node *node);
> +struct intel_stolen_node *intel_parent_stolen_node_alloc(struct
> intel_display *display);
> +void intel_parent_stolen_node_free(struct intel_display *display,
> const struct intel_stolen_node *node);
> +
>  bool intel_parent_vgpu_active(struct intel_display *display);
>  
>  bool intel_parent_has_fenced_regions(struct intel_display *display);
> diff --git a/drivers/gpu/drm/i915/gem/i915_gem_stolen.c
> b/drivers/gpu/drm/i915/gem/i915_gem_stolen.c
> index f859c99f969b..c3e0b8da485c 100644
> --- a/drivers/gpu/drm/i915/gem/i915_gem_stolen.c
> +++ b/drivers/gpu/drm/i915/gem/i915_gem_stolen.c
> @@ -8,6 +8,7 @@
>  
>  #include <drm/drm_mm.h>
>  #include <drm/drm_print.h>
> +#include <drm/intel/display_parent_interface.h>
>  #include <drm/intel/i915_drm.h>
>  
>  #include "gem/i915_gem_lmem.h"
> @@ -64,8 +65,8 @@ static int
> __i915_gem_stolen_insert_node_in_range(struct drm_i915_private *i915,
>  	return ret;
>  }
>  
> -int i915_gem_stolen_insert_node_in_range(struct intel_stolen_node
> *node, u64 size,
> -					 unsigned int alignment, u64
> start, u64 end)
> +static int i915_gem_stolen_insert_node_in_range(struct
> intel_stolen_node *node, u64 size,
> +						unsigned int
> alignment, u64 start, u64 end)
>  {
>  	return __i915_gem_stolen_insert_node_in_range(node->i915,
> &node->node,
>  						      size,
> alignment,
> @@ -82,8 +83,8 @@ static int __i915_gem_stolen_insert_node(struct
> drm_i915_private *i915,
>  						      U64_MAX);
>  }
>  
> -int i915_gem_stolen_insert_node(struct intel_stolen_node *node, u64
> size,
> -				unsigned int alignment)
> +static int i915_gem_stolen_insert_node(struct intel_stolen_node
> *node, u64 size,
> +				       unsigned int alignment)
>  {
>  	return __i915_gem_stolen_insert_node(node->i915, &node-
> >node, size, alignment);
>  }
> @@ -96,7 +97,7 @@ static void __i915_gem_stolen_remove_node(struct
> drm_i915_private *i915,
>  	mutex_unlock(&i915->mm.stolen_lock);
>  }
>  
> -void i915_gem_stolen_remove_node(struct intel_stolen_node *node)
> +static void i915_gem_stolen_remove_node(struct intel_stolen_node
> *node)
>  {
>  	__i915_gem_stolen_remove_node(node->i915, &node->node);
>  }
> @@ -1025,50 +1026,50 @@ bool i915_gem_object_is_stolen(const struct
> drm_i915_gem_object *obj)
>  	return obj->ops == &i915_gem_object_stolen_ops;
>  }
>  
> -bool i915_gem_stolen_initialized(struct drm_device *drm)
> +static bool i915_gem_stolen_initialized(struct drm_device *drm)
>  {
>  	struct drm_i915_private *i915 = to_i915(drm);
>  
>  	return drm_mm_initialized(&i915->mm.stolen);
>  }
>  
> -u64 i915_gem_stolen_area_address(struct drm_device *drm)
> +static u64 i915_gem_stolen_area_address(struct drm_device *drm)
>  {
>  	struct drm_i915_private *i915 = to_i915(drm);
>  
>  	return i915->dsm.stolen.start;
>  }
>  
> -u64 i915_gem_stolen_area_size(struct drm_device *drm)
> +static u64 i915_gem_stolen_area_size(struct drm_device *drm)
>  {
>  	struct drm_i915_private *i915 = to_i915(drm);
>  
>  	return resource_size(&i915->dsm.stolen);
>  }
>  
> -u64 i915_gem_stolen_node_address(const struct intel_stolen_node
> *node)
> +static u64 i915_gem_stolen_node_offset(const struct
> intel_stolen_node *node)
> +{
> +	return node->node.start;
> +}
> +
> +static u64 i915_gem_stolen_node_address(const struct
> intel_stolen_node *node)
>  {
>  	struct drm_i915_private *i915 = node->i915;
>  
>  	return i915->dsm.stolen.start +
> i915_gem_stolen_node_offset(node);
>  }
>  
> -bool i915_gem_stolen_node_allocated(const struct intel_stolen_node
> *node)
> +static bool i915_gem_stolen_node_allocated(const struct
> intel_stolen_node *node)
>  {
>  	return drm_mm_node_allocated(&node->node);
>  }
>  
> -u64 i915_gem_stolen_node_offset(const struct intel_stolen_node
> *node)
> -{
> -	return node->node.start;
> -}
> -
> -u64 i915_gem_stolen_node_size(const struct intel_stolen_node *node)
> +static u64 i915_gem_stolen_node_size(const struct intel_stolen_node
> *node)
>  {
>  	return node->node.size;
>  }
>  
> -struct intel_stolen_node *i915_gem_stolen_node_alloc(struct
> drm_device *drm)
> +static struct intel_stolen_node *i915_gem_stolen_node_alloc(struct
> drm_device *drm)
>  {
>  	struct drm_i915_private *i915 = to_i915(drm);
>  	struct intel_stolen_node *node;
> @@ -1082,7 +1083,22 @@ struct intel_stolen_node
> *i915_gem_stolen_node_alloc(struct drm_device *drm)
>  	return node;
>  }
>  
> -void i915_gem_stolen_node_free(const struct intel_stolen_node *node)
> +static void i915_gem_stolen_node_free(const struct intel_stolen_node
> *node)
>  {
>  	kfree(node);
>  }
> +
> +const struct intel_display_stolen_interface
> i915_display_stolen_interface = {
> +	.insert_node_in_range =
> i915_gem_stolen_insert_node_in_range,
> +	.insert_node = i915_gem_stolen_insert_node,
> +	.remove_node = i915_gem_stolen_remove_node,
> +	.initialized = i915_gem_stolen_initialized,
> +	.node_allocated = i915_gem_stolen_node_allocated,
> +	.node_offset = i915_gem_stolen_node_offset,
> +	.area_address = i915_gem_stolen_area_address,
> +	.area_size = i915_gem_stolen_area_size,
> +	.node_address = i915_gem_stolen_node_address,
> +	.node_size = i915_gem_stolen_node_size,
> +	.node_alloc = i915_gem_stolen_node_alloc,
> +	.node_free = i915_gem_stolen_node_free,
> +};
> diff --git a/drivers/gpu/drm/i915/gem/i915_gem_stolen.h
> b/drivers/gpu/drm/i915/gem/i915_gem_stolen.h
> index 7b0386002ed4..6db5262046a2 100644
> --- a/drivers/gpu/drm/i915/gem/i915_gem_stolen.h
> +++ b/drivers/gpu/drm/i915/gem/i915_gem_stolen.h
> @@ -8,17 +8,9 @@
>  
>  #include <linux/types.h>
>  
> -struct drm_device;
>  struct drm_i915_gem_object;
>  struct drm_i915_private;
> -struct intel_stolen_node;
> -
> -int i915_gem_stolen_insert_node(struct intel_stolen_node *node, u64
> size,
> -				unsigned alignment);
> -int i915_gem_stolen_insert_node_in_range(struct intel_stolen_node
> *node, u64 size,
> -					 unsigned alignment, u64
> start,
> -					 u64 end);
> -void i915_gem_stolen_remove_node(struct intel_stolen_node *node);
> +
>  struct intel_memory_region *
>  i915_gem_stolen_smem_setup(struct drm_i915_private *i915, u16 type,
>  			   u16 instance);
> @@ -34,17 +26,6 @@ bool i915_gem_object_is_stolen(const struct
> drm_i915_gem_object *obj);
>  
>  #define I915_GEM_STOLEN_BIAS SZ_128K
>  
> -bool i915_gem_stolen_initialized(struct drm_device *drm);
> -u64 i915_gem_stolen_area_address(struct drm_device *drm);
> -u64 i915_gem_stolen_area_size(struct drm_device *drm);
> -
> -u64 i915_gem_stolen_node_address(const struct intel_stolen_node
> *node);
> -
> -bool i915_gem_stolen_node_allocated(const struct intel_stolen_node
> *node);
> -u64 i915_gem_stolen_node_offset(const struct intel_stolen_node
> *node);
> -u64 i915_gem_stolen_node_size(const struct intel_stolen_node *node);
> -
> -struct intel_stolen_node *i915_gem_stolen_node_alloc(struct
> drm_device *drm);
> -void i915_gem_stolen_node_free(const struct intel_stolen_node
> *node);
> +extern const struct intel_display_stolen_interface
> i915_display_stolen_interface;
>  
>  #endif /* __I915_GEM_STOLEN_H__ */
> diff --git a/drivers/gpu/drm/i915/i915_driver.c
> b/drivers/gpu/drm/i915/i915_driver.c
> index d98839427ef9..fe84df4eae8f 100644
> --- a/drivers/gpu/drm/i915/i915_driver.c
> +++ b/drivers/gpu/drm/i915/i915_driver.c
> @@ -762,6 +762,7 @@ static const struct
> intel_display_parent_interface parent = {
>  	.rpm = &i915_display_rpm_interface,
>  	.irq = &i915_display_irq_interface,
>  	.rps = &i915_display_rps_interface,
> +	.stolen = &i915_display_stolen_interface,
>  	.vgpu_active = vgpu_active,
>  	.has_fenced_regions = has_fenced_regions,
>  	.fence_priority_display = fence_priority_display,
> diff --git a/drivers/gpu/drm/xe/compat-i915-
> headers/gem/i915_gem_stolen.h b/drivers/gpu/drm/xe/compat-i915-
> headers/gem/i915_gem_stolen.h
> deleted file mode 100644
> index 368045a470d1..000000000000
> --- a/drivers/gpu/drm/xe/compat-i915-headers/gem/i915_gem_stolen.h
> +++ /dev/null
> @@ -1,40 +0,0 @@
> -/* SPDX-License-Identifier: MIT */
> -/*
> - * Copyright © 2024 Intel Corporation
> - */
> -
> -#ifndef _I915_GEM_STOLEN_H_
> -#define _I915_GEM_STOLEN_H_
> -
> -#include <linux/types.h>
> -
> -struct drm_device;
> -struct intel_stolen_node;
> -
> -int i915_gem_stolen_insert_node_in_range(struct intel_stolen_node
> *node, u64 size,
> -					 unsigned int align, u64
> start, u64 end);
> -
> -int i915_gem_stolen_insert_node(struct intel_stolen_node *node, u64
> size,
> -				unsigned int align);
> -
> -void i915_gem_stolen_remove_node(struct intel_stolen_node *node);
> -
> -bool i915_gem_stolen_initialized(struct drm_device *drm);
> -
> -bool i915_gem_stolen_node_allocated(const struct intel_stolen_node
> *node);
> -
> -u64 i915_gem_stolen_node_offset(const struct intel_stolen_node
> *node);
> -
> -u64 i915_gem_stolen_area_address(struct drm_device *drm);
> -
> -u64 i915_gem_stolen_area_size(struct drm_device *drm);
> -
> -u64 i915_gem_stolen_node_address(const struct intel_stolen_node
> *node);
> -
> -u64 i915_gem_stolen_node_size(const struct intel_stolen_node *node);
> -
> -struct intel_stolen_node *i915_gem_stolen_node_alloc(struct
> drm_device *drm);
> -
> -void i915_gem_stolen_node_free(const struct intel_stolen_node
> *node);
> -
> -#endif
> diff --git a/drivers/gpu/drm/xe/display/xe_display.c
> b/drivers/gpu/drm/xe/display/xe_display.c
> index 9d2aa69ea428..9fb5c2f3ddd8 100644
> --- a/drivers/gpu/drm/xe/display/xe_display.c
> +++ b/drivers/gpu/drm/xe/display/xe_display.c
> @@ -36,8 +36,9 @@
>  #include "intel_opregion.h"
>  #include "skl_watermark.h"
>  #include "xe_display_rpm.h"
> -#include "xe_module.h"
>  #include "xe_hdcp_gsc.h"
> +#include "xe_module.h"
> +#include "xe_stolen.h"
>  
>  /* Ensure drm and display members are placed properly. */
>  INTEL_DISPLAY_MEMBER_STATIC_ASSERT(struct xe_device, drm, display);
> @@ -538,6 +539,7 @@ static const struct
> intel_display_parent_interface parent = {
>  	.hdcp = &xe_display_hdcp_interface,
>  	.rpm = &xe_display_rpm_interface,
>  	.irq = &xe_display_irq_interface,
> +	.stolen = &xe_display_stolen_interface,
>  };
>  
>  /**
> diff --git a/drivers/gpu/drm/xe/display/xe_stolen.c
> b/drivers/gpu/drm/xe/display/xe_stolen.c
> index 387506586288..cc7aec7db76c 100644
> --- a/drivers/gpu/drm/xe/display/xe_stolen.c
> +++ b/drivers/gpu/drm/xe/display/xe_stolen.c
> @@ -1,8 +1,10 @@
>  // SPDX-License-Identifier: MIT
>  /* Copyright © 2025 Intel Corporation */
>  
> -#include "gem/i915_gem_stolen.h"
> +#include <drm/intel/display_parent_interface.h>
> +
>  #include "xe_res_cursor.h"
> +#include "xe_stolen.h"
>  #include "xe_ttm_stolen_mgr.h"
>  #include "xe_validation.h"
>  
> @@ -11,8 +13,8 @@ struct intel_stolen_node {
>  	struct xe_bo *bo;
>  };
>  
> -int i915_gem_stolen_insert_node_in_range(struct intel_stolen_node
> *node, u64 size,
> -					 unsigned int align, u64
> start, u64 end)
> +static int xe_stolen_insert_node_in_range(struct intel_stolen_node
> *node, u64 size,
> +					  unsigned int align, u64
> start, u64 end)
>  {
>  	struct xe_device *xe = node->xe;
>  
> @@ -41,7 +43,7 @@ int i915_gem_stolen_insert_node_in_range(struct
> intel_stolen_node *node, u64 siz
>  	return err;
>  }
>  
> -int i915_gem_stolen_insert_node(struct intel_stolen_node *node, u64
> size, unsigned int align)
> +static int xe_stolen_insert_node(struct intel_stolen_node *node, u64
> size, unsigned int align)
>  {
>  	/* Not used on xe */
>  	WARN_ON(1);
> @@ -49,25 +51,25 @@ int i915_gem_stolen_insert_node(struct
> intel_stolen_node *node, u64 size, unsign
>  	return -ENODEV;
>  }
>  
> -void i915_gem_stolen_remove_node(struct intel_stolen_node *node)
> +static void xe_stolen_remove_node(struct intel_stolen_node *node)
>  {
>  	xe_bo_unpin_map_no_vm(node->bo);
>  	node->bo = NULL;
>  }
>  
> -bool i915_gem_stolen_initialized(struct drm_device *drm)
> +static bool xe_stolen_initialized(struct drm_device *drm)
>  {
>  	struct xe_device *xe = to_xe_device(drm);
>  
>  	return ttm_manager_type(&xe->ttm, XE_PL_STOLEN);
>  }
>  
> -bool i915_gem_stolen_node_allocated(const struct intel_stolen_node
> *node)
> +static bool xe_stolen_node_allocated(const struct intel_stolen_node
> *node)
>  {
>  	return node->bo;
>  }
>  
> -u64 i915_gem_stolen_node_offset(const struct intel_stolen_node
> *node)
> +static u64 xe_stolen_node_offset(const struct intel_stolen_node
> *node)
>  {
>  	struct xe_res_cursor res;
>  
> @@ -76,7 +78,7 @@ u64 i915_gem_stolen_node_offset(const struct
> intel_stolen_node *node)
>  }
>  
>  /* Used for < gen4. These are not supported by Xe */
> -u64 i915_gem_stolen_area_address(struct drm_device *drm)
> +static u64 xe_stolen_area_address(struct drm_device *drm)
>  {
>  	WARN_ON(1);
>  
> @@ -84,26 +86,26 @@ u64 i915_gem_stolen_area_address(struct
> drm_device *drm)
>  }
>  
>  /* Used for gen9 specific WA. Gen9 is not supported by Xe */
> -u64 i915_gem_stolen_area_size(struct drm_device *drm)
> +static u64 xe_stolen_area_size(struct drm_device *drm)
>  {
>  	WARN_ON(1);
>  
>  	return 0;
>  }
>  
> -u64 i915_gem_stolen_node_address(const struct intel_stolen_node
> *node)
> +static u64 xe_stolen_node_address(const struct intel_stolen_node
> *node)
>  {
>  	struct xe_device *xe = node->xe;
>  
> -	return xe_ttm_stolen_gpu_offset(xe) +
> i915_gem_stolen_node_offset(node);
> +	return xe_ttm_stolen_gpu_offset(xe) +
> xe_stolen_node_offset(node);
>  }
>  
> -u64 i915_gem_stolen_node_size(const struct intel_stolen_node *node)
> +static u64 xe_stolen_node_size(const struct intel_stolen_node *node)
>  {
>  	return node->bo->ttm.base.size;
>  }
>  
> -struct intel_stolen_node *i915_gem_stolen_node_alloc(struct
> drm_device *drm)
> +static struct intel_stolen_node *xe_stolen_node_alloc(struct
> drm_device *drm)
>  {
>  	struct xe_device *xe = to_xe_device(drm);
>  	struct intel_stolen_node *node;
> @@ -117,7 +119,22 @@ struct intel_stolen_node
> *i915_gem_stolen_node_alloc(struct drm_device *drm)
>  	return node;
>  }
>  
> -void i915_gem_stolen_node_free(const struct intel_stolen_node *node)
> +static void xe_stolen_node_free(const struct intel_stolen_node
> *node)
>  {
>  	kfree(node);
>  }
> +
> +const struct intel_display_stolen_interface
> xe_display_stolen_interface = {
> +	.insert_node_in_range = xe_stolen_insert_node_in_range,
> +	.insert_node = xe_stolen_insert_node,
> +	.remove_node = xe_stolen_remove_node,
> +	.initialized = xe_stolen_initialized,
> +	.node_allocated = xe_stolen_node_allocated,
> +	.node_offset = xe_stolen_node_offset,
> +	.area_address = xe_stolen_area_address,
> +	.area_size = xe_stolen_area_size,
> +	.node_address = xe_stolen_node_address,
> +	.node_size = xe_stolen_node_size,
> +	.node_alloc = xe_stolen_node_alloc,
> +	.node_free = xe_stolen_node_free,
> +};
> diff --git a/drivers/gpu/drm/xe/display/xe_stolen.h
> b/drivers/gpu/drm/xe/display/xe_stolen.h
> new file mode 100644
> index 000000000000..db86b9e01242
> --- /dev/null
> +++ b/drivers/gpu/drm/xe/display/xe_stolen.h
> @@ -0,0 +1,9 @@
> +/* SPDX-License-Identifier: MIT */
> +/* Copyright © 2025 Intel Corporation */
> +
> +#ifndef __XE_STOLEN_H__
> +#define __XE_STOLEN_H__
> +
> +extern const struct intel_display_stolen_interface
> xe_display_stolen_interface;
> +
> +#endif
> diff --git a/include/drm/intel/display_parent_interface.h
> b/include/drm/intel/display_parent_interface.h
> index 61d1b22adc83..f590e846464d 100644
> --- a/include/drm/intel/display_parent_interface.h
> +++ b/include/drm/intel/display_parent_interface.h
> @@ -9,6 +9,7 @@
>  struct dma_fence;
>  struct drm_device;
>  struct intel_hdcp_gsc_context;
> +struct intel_stolen_node;
>  struct ref_tracker;
>  
>  struct intel_display_rpm_interface {
> @@ -47,6 +48,22 @@ struct intel_display_rps_interface {
>  	void (*ilk_irq_handler)(struct drm_device *drm);
>  };
>  
> +struct intel_display_stolen_interface {
> +	int (*insert_node_in_range)(struct intel_stolen_node *node,
> u64 size,
> +				    unsigned int align, u64 start,
> u64 end);
> +	int (*insert_node)(struct intel_stolen_node *node, u64 size,
> unsigned int align);
> +	void (*remove_node)(struct intel_stolen_node *node);
> +	bool (*initialized)(struct drm_device *drm);
> +	bool (*node_allocated)(const struct intel_stolen_node
> *node);
> +	u64 (*node_offset)(const struct intel_stolen_node *node);
> +	u64 (*area_address)(struct drm_device *drm);
> +	u64 (*area_size)(struct drm_device *drm);
> +	u64 (*node_address)(const struct intel_stolen_node *node);
> +	u64 (*node_size)(const struct intel_stolen_node *node);
> +	struct intel_stolen_node *(*node_alloc)(struct drm_device
> *drm);
> +	void (*node_free)(const struct intel_stolen_node *node);
> +};
> +
>  /**
>   * struct intel_display_parent_interface - services parent driver
> provides to display
>   *
> @@ -72,6 +89,9 @@ struct intel_display_parent_interface {
>  	/** @rpm: RPS interface. Optional. */
>  	const struct intel_display_rps_interface *rps;
>  
> +	/** @stolen: Stolen memory. */
> +	const struct intel_display_stolen_interface *stolen;
> +
>  	/** @vgpu_active: Is vGPU active? Optional. */
>  	bool (*vgpu_active)(struct drm_device *drm);
>  


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

* Re: [PATCH v2 4/4] drm/{i915, xe}/stolen: make insert_node, area_address, area_size optional
  2025-12-05 10:30 ` [PATCH v2 4/4] drm/{i915, xe}/stolen: make insert_node, area_address, area_size optional Jani Nikula
@ 2025-12-09 14:16   ` Govindapillai, Vinod
  0 siblings, 0 replies; 11+ messages in thread
From: Govindapillai, Vinod @ 2025-12-09 14:16 UTC (permalink / raw)
  To: intel-xe@lists.freedesktop.org, Nikula, Jani,
	intel-gfx@lists.freedesktop.org

On Fri, 2025-12-05 at 12:30 +0200, Jani Nikula wrote:
> Since the stolen memory hooks are function pointers, make some of
> them
> optional instead of having to define them for xe.
> 
> insert_node, area_address, and area_size are only needed on platforms
> not supported by xe.
> 
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
> ---
>  drivers/gpu/drm/i915/display/intel_parent.c  | 10 ++++++++
>  drivers/gpu/drm/xe/display/xe_stolen.c       | 27 ------------------
> --
>  include/drm/intel/display_parent_interface.h |  6 ++---
>  3 files changed, 13 insertions(+), 30 deletions(-)
> 

Reviewed-by: Vinod Govindapillai <vinod.govindapillai@intel.com>

> diff --git a/drivers/gpu/drm/i915/display/intel_parent.c
> b/drivers/gpu/drm/i915/display/intel_parent.c
> index 49cb64ca8c4c..d16163007545 100644
> --- a/drivers/gpu/drm/i915/display/intel_parent.c
> +++ b/drivers/gpu/drm/i915/display/intel_parent.c
> @@ -17,6 +17,7 @@
>   * function pointer interface.
>   */
>  
> +#include <drm/drm_print.h>
>  #include <drm/intel/display_parent_interface.h>
>  
>  #include "intel_display_core.h"
> @@ -89,6 +90,9 @@ int intel_parent_stolen_insert_node_in_range(struct
> intel_display *display,
>  int intel_parent_stolen_insert_node(struct intel_display *display,
> struct intel_stolen_node *node, u64 size,
>  				    unsigned int align)
>  {
> +	if (drm_WARN_ON_ONCE(display->drm, !display->parent->stolen-
> >insert_node))
> +		return -ENODEV;
> +
>  	return display->parent->stolen->insert_node(node, size,
> align);
>  }
>  
> @@ -116,11 +120,17 @@ u32 intel_parent_stolen_node_offset(struct
> intel_display *display, struct intel_
>  
>  u64 intel_parent_stolen_area_address(struct intel_display *display)
>  {
> +	if (drm_WARN_ON_ONCE(display->drm, !display->parent->stolen-
> >area_address))
> +		return 0;
> +
>  	return display->parent->stolen->area_address(display->drm);
>  }
>  
>  u64 intel_parent_stolen_area_size(struct intel_display *display)
>  {
> +	if (drm_WARN_ON_ONCE(display->drm, !display->parent->stolen-
> >area_size))
> +		return 0;
> +
>  	return display->parent->stolen->area_size(display->drm);
>  }
>  
> diff --git a/drivers/gpu/drm/xe/display/xe_stolen.c
> b/drivers/gpu/drm/xe/display/xe_stolen.c
> index cc7aec7db76c..12771709183a 100644
> --- a/drivers/gpu/drm/xe/display/xe_stolen.c
> +++ b/drivers/gpu/drm/xe/display/xe_stolen.c
> @@ -43,14 +43,6 @@ static int xe_stolen_insert_node_in_range(struct
> intel_stolen_node *node, u64 si
>  	return err;
>  }
>  
> -static int xe_stolen_insert_node(struct intel_stolen_node *node, u64
> size, unsigned int align)
> -{
> -	/* Not used on xe */
> -	WARN_ON(1);
> -
> -	return -ENODEV;
> -}
> -
>  static void xe_stolen_remove_node(struct intel_stolen_node *node)
>  {
>  	xe_bo_unpin_map_no_vm(node->bo);
> @@ -77,22 +69,6 @@ static u64 xe_stolen_node_offset(const struct
> intel_stolen_node *node)
>  	return res.start;
>  }
>  
> -/* Used for < gen4. These are not supported by Xe */
> -static u64 xe_stolen_area_address(struct drm_device *drm)
> -{
> -	WARN_ON(1);
> -
> -	return 0;
> -}
> -
> -/* Used for gen9 specific WA. Gen9 is not supported by Xe */
> -static u64 xe_stolen_area_size(struct drm_device *drm)
> -{
> -	WARN_ON(1);
> -
> -	return 0;
> -}
> -
>  static u64 xe_stolen_node_address(const struct intel_stolen_node
> *node)
>  {
>  	struct xe_device *xe = node->xe;
> @@ -126,13 +102,10 @@ static void xe_stolen_node_free(const struct
> intel_stolen_node *node)
>  
>  const struct intel_display_stolen_interface
> xe_display_stolen_interface = {
>  	.insert_node_in_range = xe_stolen_insert_node_in_range,
> -	.insert_node = xe_stolen_insert_node,
>  	.remove_node = xe_stolen_remove_node,
>  	.initialized = xe_stolen_initialized,
>  	.node_allocated = xe_stolen_node_allocated,
>  	.node_offset = xe_stolen_node_offset,
> -	.area_address = xe_stolen_area_address,
> -	.area_size = xe_stolen_area_size,
>  	.node_address = xe_stolen_node_address,
>  	.node_size = xe_stolen_node_size,
>  	.node_alloc = xe_stolen_node_alloc,
> diff --git a/include/drm/intel/display_parent_interface.h
> b/include/drm/intel/display_parent_interface.h
> index f590e846464d..cc13b2ce1324 100644
> --- a/include/drm/intel/display_parent_interface.h
> +++ b/include/drm/intel/display_parent_interface.h
> @@ -51,13 +51,13 @@ struct intel_display_rps_interface {
>  struct intel_display_stolen_interface {
>  	int (*insert_node_in_range)(struct intel_stolen_node *node,
> u64 size,
>  				    unsigned int align, u64 start,
> u64 end);
> -	int (*insert_node)(struct intel_stolen_node *node, u64 size,
> unsigned int align);
> +	int (*insert_node)(struct intel_stolen_node *node, u64 size,
> unsigned int align); /* Optional */
>  	void (*remove_node)(struct intel_stolen_node *node);
>  	bool (*initialized)(struct drm_device *drm);
>  	bool (*node_allocated)(const struct intel_stolen_node
> *node);
>  	u64 (*node_offset)(const struct intel_stolen_node *node);
> -	u64 (*area_address)(struct drm_device *drm);
> -	u64 (*area_size)(struct drm_device *drm);
> +	u64 (*area_address)(struct drm_device *drm); /* Optional */
> +	u64 (*area_size)(struct drm_device *drm); /* Optional */
>  	u64 (*node_address)(const struct intel_stolen_node *node);
>  	u64 (*node_size)(const struct intel_stolen_node *node);
>  	struct intel_stolen_node *(*node_alloc)(struct drm_device
> *drm);


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

end of thread, other threads:[~2025-12-09 14:16 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-12-05 10:30 [PATCH v2 0/4] drm/{i915, xe}: migrate stolen interface to parent interface, cleanups Jani Nikula
2025-12-05 10:30 ` [PATCH v2 1/4] drm/i915/fbc: let to_intel_display() do its generic magic Jani Nikula
2025-12-09 13:25   ` Govindapillai, Vinod
2025-12-05 10:30 ` [PATCH v2 2/4] drm/xe/stolen: unify interface with i915 Jani Nikula
2025-12-09 13:34   ` Govindapillai, Vinod
2025-12-05 10:30 ` [PATCH v2 3/4] drm/{i915, xe}/stolen: move stolen memory handling to display parent interface Jani Nikula
2025-12-09 14:15   ` Govindapillai, Vinod
2025-12-05 10:30 ` [PATCH v2 4/4] drm/{i915, xe}/stolen: make insert_node, area_address, area_size optional Jani Nikula
2025-12-09 14:16   ` Govindapillai, Vinod
2025-12-05 14:44 ` ✓ i915.CI.BAT: success for drm/{i915, xe}: migrate stolen interface to parent interface, cleanups (rev2) Patchwork
2025-12-06 13:52 ` ✗ i915.CI.Full: failure " Patchwork

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).