public inbox for intel-gfx@lists.freedesktop.org
 help / color / mirror / Atom feed
* [PATCH 00/11] drm/i915: Eliminate FB usage from low level pinning code
@ 2026-04-16 17:44 Ville Syrjala
  2026-04-16 17:44 ` [PATCH 01/11] drm/xe/fb: Use the correct gtt view for remapped FBs Ville Syrjala
                   ` (13 more replies)
  0 siblings, 14 replies; 28+ messages in thread
From: Ville Syrjala @ 2026-04-16 17:44 UTC (permalink / raw)
  To: intel-gfx; +Cc: intel-xe

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

Some work towards a proper display<->parent fb_pin interface.
The goal of the series here is to eliminate display specific 
things (the fb structure itself, and any display platform
checks) from the low level pinning code.

Ville Syrjälä (11):
  drm/xe/fb: Use the correct gtt view for remapped FBs
  drm/i915: Introduce struct intel_fb_pin_params
  drm/i915: Extract intel_fb_needs_cpu_access()
  drm/i915: Introduce pin_params.needs_cpu_lmem_access
  drm/i915: Extract intel_plane_needs_low_address()
  drm/i915: Introduce pin_params.needs_low_address
  drm/i915: Introduce pin_params.needs_physical
  drm/i915: Extract intel_plane_needs_fence()
  drm/i915: Introduce pin_params.needs_fence
  drm/xe: Eliminate intel_fb_uses_dpt() call from __xe_pin_fb_vma()
  drm/i915: Don't pass the framebuffer to low level pinning functions

 drivers/gpu/drm/i915/display/intel_fb.c       |  7 +-
 drivers/gpu/drm/i915/display/intel_fb.h       |  1 +
 drivers/gpu/drm/i915/display/intel_fb_pin.h   | 20 +++--
 drivers/gpu/drm/i915/display/intel_fbdev.c    | 19 +++--
 drivers/gpu/drm/i915/display/intel_plane.c    | 22 +++++
 drivers/gpu/drm/i915/display/intel_plane.h    |  3 +
 drivers/gpu/drm/i915/i915_fb_pin.c            | 85 ++++++++++---------
 drivers/gpu/drm/xe/display/xe_fb_pin.c        | 65 +++++++-------
 drivers/gpu/drm/xe/display/xe_initial_plane.c |  6 +-
 9 files changed, 135 insertions(+), 93 deletions(-)

-- 
2.52.0


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

* [PATCH 01/11] drm/xe/fb: Use the correct gtt view for remapped FBs
  2026-04-16 17:44 [PATCH 00/11] drm/i915: Eliminate FB usage from low level pinning code Ville Syrjala
@ 2026-04-16 17:44 ` Ville Syrjala
  2026-04-16 17:44 ` [PATCH 02/11] drm/i915: Introduce struct intel_fb_pin_params Ville Syrjala
                   ` (12 subsequent siblings)
  13 siblings, 0 replies; 28+ messages in thread
From: Ville Syrjala @ 2026-04-16 17:44 UTC (permalink / raw)
  To: intel-gfx; +Cc: intel-xe, Jani Nikula, Maarten Lankhorst

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

Use the proper gtt view from the plane state rather than always
assuming that it came directly from the FB. This is in the DPT
codepath so the view should currently always come from the FB,
but in the future we may also want per-plane remapping with DPT.

Reviewed-by: Jani Nikula <jani.nikula@intel.com>
Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 drivers/gpu/drm/xe/display/xe_fb_pin.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/xe/display/xe_fb_pin.c b/drivers/gpu/drm/xe/display/xe_fb_pin.c
index 739d9c019094..91e5c1052589 100644
--- a/drivers/gpu/drm/xe/display/xe_fb_pin.c
+++ b/drivers/gpu/drm/xe/display/xe_fb_pin.c
@@ -154,7 +154,7 @@ static int __xe_pin_fb_vma_dpt(const struct intel_framebuffer *fb,
 	if (view->type == I915_GTT_VIEW_NORMAL)
 		dpt_size = ALIGN(size / XE_PAGE_SIZE * 8, XE_PAGE_SIZE);
 	else if (view->type == I915_GTT_VIEW_REMAPPED)
-		dpt_size = ALIGN(intel_remapped_info_size(&fb->remapped_view.gtt.remapped) * 8,
+		dpt_size = ALIGN(intel_remapped_info_size(&view->remapped) * 8,
 				 XE_PAGE_SIZE);
 	else
 		/* display uses 4K tiles instead of bytes here, convert to entries.. */
-- 
2.52.0


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

* [PATCH 02/11] drm/i915: Introduce struct intel_fb_pin_params
  2026-04-16 17:44 [PATCH 00/11] drm/i915: Eliminate FB usage from low level pinning code Ville Syrjala
  2026-04-16 17:44 ` [PATCH 01/11] drm/xe/fb: Use the correct gtt view for remapped FBs Ville Syrjala
@ 2026-04-16 17:44 ` Ville Syrjala
  2026-04-17  9:40   ` Jani Nikula
  2026-04-16 17:44 ` [PATCH 03/11] drm/i915: Extract intel_fb_needs_cpu_access() Ville Syrjala
                   ` (11 subsequent siblings)
  13 siblings, 1 reply; 28+ messages in thread
From: Ville Syrjala @ 2026-04-16 17:44 UTC (permalink / raw)
  To: intel-gfx; +Cc: intel-xe

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

We need to pass a lot of information between the display driver
and the core driver to get framebuffers mapped into GGTT/DPT
correctly. Rather than passing around a swarm of integers and
boolean as function arguments, let's collect it all into a
structure (struct intel_fb_pin_params).

Start by moving the gtt view, alignment, phys_alignment,
and vtd_guard there. Going forward additional things need
to added as well (mainly various boolean flags).

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 drivers/gpu/drm/i915/display/intel_fb_pin.h   | 12 +++--
 drivers/gpu/drm/i915/display/intel_fbdev.c    | 13 +++--
 drivers/gpu/drm/i915/i915_fb_pin.c            | 54 ++++++++++---------
 drivers/gpu/drm/xe/display/xe_fb_pin.c        | 39 +++++++-------
 drivers/gpu/drm/xe/display/xe_initial_plane.c |  6 ++-
 5 files changed, 69 insertions(+), 55 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_fb_pin.h b/drivers/gpu/drm/i915/display/intel_fb_pin.h
index 2eca42b74c4a..e6271437459d 100644
--- a/drivers/gpu/drm/i915/display/intel_fb_pin.h
+++ b/drivers/gpu/drm/i915/display/intel_fb_pin.h
@@ -14,12 +14,16 @@ struct intel_plane_state;
 struct i915_gtt_view;
 struct iosys_map;
 
+struct intel_fb_pin_params {
+	const struct i915_gtt_view *view;
+	unsigned int alignment;
+	unsigned int phys_alignment;
+	unsigned int vtd_guard;
+};
+
 struct i915_vma *
 intel_fb_pin_to_ggtt(const struct drm_framebuffer *fb,
-		     const struct i915_gtt_view *view,
-		     unsigned int alignment,
-		     unsigned int phys_alignment,
-		     unsigned int vtd_guard,
+		     const struct intel_fb_pin_params *pin_params,
 		     int *out_fence_id);
 
 void intel_fb_unpin_vma(struct i915_vma *vma, int fence_id);
diff --git a/drivers/gpu/drm/i915/display/intel_fbdev.c b/drivers/gpu/drm/i915/display/intel_fbdev.c
index 1e22b3fd79ba..136fa827c8f0 100644
--- a/drivers/gpu/drm/i915/display/intel_fbdev.c
+++ b/drivers/gpu/drm/i915/display/intel_fbdev.c
@@ -264,6 +264,7 @@ int intel_fbdev_driver_fbdev_probe(struct drm_fb_helper *helper,
 {
 	struct intel_display *display = to_intel_display(helper->dev);
 	struct intel_fbdev *ifbdev = to_intel_fbdev(helper);
+	struct intel_fb_pin_params pin_params = {};
 	struct intel_framebuffer *fb = ifbdev->fb;
 	struct fb_info *info = helper->info;
 	struct ref_tracker *wakeref;
@@ -308,11 +309,13 @@ int intel_fbdev_driver_fbdev_probe(struct drm_fb_helper *helper,
 	 * This also validates that any existing fb inherited from the
 	 * BIOS is suitable for own access.
 	 */
-	vma = intel_fb_pin_to_ggtt(&fb->base, &fb->normal_view.gtt,
-				   fb->min_alignment, 0,
-				   intel_fb_view_vtd_guard(&fb->base, &fb->normal_view,
-							   DRM_MODE_ROTATE_0),
-				   NULL);
+	pin_params.view = &fb->normal_view.gtt;
+	pin_params.alignment = fb->min_alignment;
+	pin_params.vtd_guard = intel_fb_view_vtd_guard(&fb->base,
+						       &fb->normal_view,
+						       DRM_MODE_ROTATE_0);
+
+	vma = intel_fb_pin_to_ggtt(&fb->base, &pin_params, NULL);
 	if (IS_ERR(vma)) {
 		ret = PTR_ERR(vma);
 		goto out_unlock;
diff --git a/drivers/gpu/drm/i915/i915_fb_pin.c b/drivers/gpu/drm/i915/i915_fb_pin.c
index 85649bae25fb..4fe6b9859b3f 100644
--- a/drivers/gpu/drm/i915/i915_fb_pin.c
+++ b/drivers/gpu/drm/i915/i915_fb_pin.c
@@ -24,9 +24,8 @@
 
 static struct i915_vma *
 intel_fb_pin_to_dpt(const struct drm_framebuffer *fb,
-		    const struct i915_gtt_view *view,
-		    unsigned int alignment,
-		    struct intel_dpt *dpt)
+		    struct intel_dpt *dpt,
+		    const struct intel_fb_pin_params *pin_params)
 {
 	struct drm_i915_private *i915 = to_i915(fb->dev);
 	struct drm_gem_object *_obj = intel_fb_bo(fb);
@@ -74,19 +73,20 @@ intel_fb_pin_to_dpt(const struct drm_framebuffer *fb,
 		if (ret)
 			continue;
 
-		vma = i915_vma_instance(obj, vm, view);
+		vma = i915_vma_instance(obj, vm, pin_params->view);
 		if (IS_ERR(vma)) {
 			ret = PTR_ERR(vma);
 			continue;
 		}
 
-		if (i915_vma_misplaced(vma, 0, alignment, 0)) {
+		if (i915_vma_misplaced(vma, 0, pin_params->alignment, 0)) {
 			ret = i915_vma_unbind(vma);
 			if (ret)
 				continue;
 		}
 
-		ret = i915_vma_pin_ww(vma, &ww, 0, alignment, PIN_GLOBAL);
+		ret = i915_vma_pin_ww(vma, &ww, 0, pin_params->alignment,
+				      PIN_GLOBAL);
 		if (ret)
 			continue;
 	}
@@ -95,7 +95,8 @@ intel_fb_pin_to_dpt(const struct drm_framebuffer *fb,
 		goto err;
 	}
 
-	vma->display_alignment = max(vma->display_alignment, alignment);
+	vma->display_alignment = max(vma->display_alignment,
+				     pin_params->alignment);
 
 	i915_gem_object_flush_if_display(obj);
 
@@ -108,10 +109,7 @@ intel_fb_pin_to_dpt(const struct drm_framebuffer *fb,
 
 struct i915_vma *
 intel_fb_pin_to_ggtt(const struct drm_framebuffer *fb,
-		     const struct i915_gtt_view *view,
-		     unsigned int alignment,
-		     unsigned int phys_alignment,
-		     unsigned int vtd_guard,
+		     const struct intel_fb_pin_params *pin_params,
 		     int *out_fence_id)
 {
 	struct intel_display *display = to_intel_display(fb->dev);
@@ -127,7 +125,8 @@ intel_fb_pin_to_ggtt(const struct drm_framebuffer *fb,
 	if (drm_WARN_ON(&i915->drm, !i915_gem_object_is_framebuffer(obj)))
 		return ERR_PTR(-EINVAL);
 
-	if (drm_WARN_ON(&i915->drm, alignment && !is_power_of_2(alignment)))
+	if (drm_WARN_ON(&i915->drm, pin_params->alignment &&
+			!is_power_of_2(pin_params->alignment)))
 		return ERR_PTR(-EINVAL);
 
 	/*
@@ -156,8 +155,8 @@ intel_fb_pin_to_ggtt(const struct drm_framebuffer *fb,
 	i915_gem_ww_ctx_init(&ww, true);
 retry:
 	ret = i915_gem_object_lock(obj, &ww);
-	if (!ret && phys_alignment)
-		ret = i915_gem_object_attach_phys(obj, phys_alignment);
+	if (!ret && pin_params->phys_alignment)
+		ret = i915_gem_object_attach_phys(obj, pin_params->phys_alignment);
 	else if (!ret && HAS_LMEM(i915))
 		ret = i915_gem_object_migrate(obj, &ww, INTEL_REGION_LMEM_0);
 	if (!ret)
@@ -165,8 +164,10 @@ intel_fb_pin_to_ggtt(const struct drm_framebuffer *fb,
 	if (ret)
 		goto err;
 
-	vma = i915_gem_object_pin_to_display_plane(obj, &ww, alignment,
-						   vtd_guard, view, pinctl);
+	vma = i915_gem_object_pin_to_display_plane(obj, &ww,
+						   pin_params->alignment,
+						   pin_params->vtd_guard,
+						   pin_params->view, pinctl);
 	if (IS_ERR(vma)) {
 		ret = PTR_ERR(vma);
 		goto err_unpin;
@@ -269,12 +270,15 @@ int intel_plane_pin_fb(struct intel_plane_state *plane_state,
 	struct i915_vma *vma;
 
 	if (!intel_fb_uses_dpt(&fb->base)) {
+		struct intel_fb_pin_params pin_params = {
+			.view = &plane_state->view.gtt,
+			.alignment = intel_plane_fb_min_alignment(plane_state),
+			.phys_alignment = intel_plane_fb_min_phys_alignment(plane_state),
+			.vtd_guard = intel_plane_fb_vtd_guard(plane_state),
+		};
 		int fence_id = -1;
 
-		vma = intel_fb_pin_to_ggtt(&fb->base, &plane_state->view.gtt,
-					   intel_plane_fb_min_alignment(plane_state),
-					   intel_plane_fb_min_phys_alignment(plane_state),
-					   intel_plane_fb_vtd_guard(plane_state),
+		vma = intel_fb_pin_to_ggtt(&fb->base, &pin_params,
 					   intel_plane_uses_fence(plane_state) ? &fence_id : NULL);
 		if (IS_ERR(vma))
 			return PTR_ERR(vma);
@@ -282,16 +286,18 @@ int intel_plane_pin_fb(struct intel_plane_state *plane_state,
 		plane_state->ggtt_vma = vma;
 		plane_state->fence_id = fence_id;
 	} else {
-		unsigned int alignment = intel_plane_fb_min_alignment(plane_state);
+		struct intel_fb_pin_params pin_params = {
+			.view = &plane_state->view.gtt,
+			.alignment = intel_plane_fb_min_alignment(plane_state),
+		};
 
-		vma = i915_dpt_pin_to_ggtt(fb->dpt, alignment / 512);
+		vma = i915_dpt_pin_to_ggtt(fb->dpt, pin_params.alignment / 512);
 		if (IS_ERR(vma))
 			return PTR_ERR(vma);
 
 		plane_state->ggtt_vma = vma;
 
-		vma = intel_fb_pin_to_dpt(&fb->base, &plane_state->view.gtt,
-					  alignment, fb->dpt);
+		vma = intel_fb_pin_to_dpt(&fb->base, fb->dpt, &pin_params);
 		if (IS_ERR(vma)) {
 			i915_dpt_unpin_from_ggtt(fb->dpt);
 			plane_state->ggtt_vma = NULL;
diff --git a/drivers/gpu/drm/xe/display/xe_fb_pin.c b/drivers/gpu/drm/xe/display/xe_fb_pin.c
index 91e5c1052589..58cd527e1fde 100644
--- a/drivers/gpu/drm/xe/display/xe_fb_pin.c
+++ b/drivers/gpu/drm/xe/display/xe_fb_pin.c
@@ -140,14 +140,14 @@ write_dpt_remapped(struct xe_bo *bo,
 }
 
 static int __xe_pin_fb_vma_dpt(const struct intel_framebuffer *fb,
-			       const struct i915_gtt_view *view,
-			       struct i915_vma *vma,
-			       unsigned int alignment)
+			       const struct intel_fb_pin_params *pin_params,
+			       struct i915_vma *vma)
 {
 	struct xe_device *xe = to_xe_device(fb->base.dev);
 	struct xe_tile *tile0 = xe_device_get_root_tile(xe);
 	struct xe_ggtt *ggtt = tile0->mem.ggtt;
 	struct drm_gem_object *obj = intel_fb_bo(&fb->base);
+	const struct i915_gtt_view *view = pin_params->view;
 	struct xe_bo *bo = gem_to_xe_bo(obj), *dpt;
 	u32 dpt_size, size = bo->ttm.base.size;
 
@@ -168,7 +168,7 @@ static int __xe_pin_fb_vma_dpt(const struct intel_framebuffer *fb,
 						   XE_BO_FLAG_VRAM0 |
 						   XE_BO_FLAG_GGTT |
 						   XE_BO_FLAG_PAGETABLE,
-						   alignment, false);
+						   pin_params->alignment, false);
 	else
 		dpt = xe_bo_create_pin_map_at_novm(xe, tile0,
 						   dpt_size,  ~0ull,
@@ -176,7 +176,7 @@ static int __xe_pin_fb_vma_dpt(const struct intel_framebuffer *fb,
 						   XE_BO_FLAG_STOLEN |
 						   XE_BO_FLAG_GGTT |
 						   XE_BO_FLAG_PAGETABLE,
-						   alignment, false);
+						   pin_params->alignment, false);
 	if (IS_ERR(dpt))
 		dpt = xe_bo_create_pin_map_at_novm(xe, tile0,
 						   dpt_size,  ~0ull,
@@ -185,7 +185,7 @@ static int __xe_pin_fb_vma_dpt(const struct intel_framebuffer *fb,
 						   XE_BO_FLAG_GGTT |
 						   XE_BO_FLAG_PAGETABLE |
 						   XE_BO_FLAG_FORCE_WC,
-						   alignment, false);
+						   pin_params->alignment, false);
 	if (IS_ERR(dpt))
 		return PTR_ERR(dpt);
 
@@ -269,11 +269,11 @@ static void write_ggtt_rotated_node(struct xe_ggtt *ggtt, struct xe_ggtt_node *n
 }
 
 static int __xe_pin_fb_vma_ggtt(const struct intel_framebuffer *fb,
-				const struct i915_gtt_view *view,
-				struct i915_vma *vma,
-				unsigned int alignment)
+				const struct intel_fb_pin_params *pin_params,
+				struct i915_vma *vma)
 {
 	struct drm_gem_object *obj = intel_fb_bo(&fb->base);
+	const struct i915_gtt_view *view = pin_params->view;
 	struct xe_bo *bo = gem_to_xe_bo(obj);
 	struct xe_device *xe = to_xe_device(fb->base.dev);
 	struct xe_tile *tile0 = xe_device_get_root_tile(xe);
@@ -319,8 +319,7 @@ static int __xe_pin_fb_vma_ggtt(const struct intel_framebuffer *fb,
 }
 
 static struct i915_vma *__xe_pin_fb_vma(const struct intel_framebuffer *fb,
-					const struct i915_gtt_view *view,
-					unsigned int alignment)
+					const struct intel_fb_pin_params *pin_params)
 {
 	struct drm_device *dev = fb->base.dev;
 	struct xe_device *xe = to_xe_device(dev);
@@ -377,9 +376,9 @@ static struct i915_vma *__xe_pin_fb_vma(const struct intel_framebuffer *fb,
 
 	vma->bo = bo;
 	if (intel_fb_uses_dpt(&fb->base))
-		ret = __xe_pin_fb_vma_dpt(fb, view, vma, alignment);
+		ret = __xe_pin_fb_vma_dpt(fb, pin_params, vma);
 	else
-		ret = __xe_pin_fb_vma_ggtt(fb, view, vma,  alignment);
+		ret = __xe_pin_fb_vma_ggtt(fb, pin_params, vma);
 	if (ret)
 		goto err_unpin;
 
@@ -414,16 +413,13 @@ static void __xe_unpin_fb_vma(struct i915_vma *vma)
 
 struct i915_vma *
 intel_fb_pin_to_ggtt(const struct drm_framebuffer *fb,
-		     const struct i915_gtt_view *view,
-		     unsigned int alignment,
-		     unsigned int phys_alignment,
-		     unsigned int vtd_guard,
+		     const struct intel_fb_pin_params *pin_params,
 		     int *out_fence_id)
 {
 	if (out_fence_id)
 		*out_fence_id = -1;
 
-	return __xe_pin_fb_vma(to_intel_framebuffer(fb), view, alignment);
+	return __xe_pin_fb_vma(to_intel_framebuffer(fb), pin_params);
 }
 
 void intel_fb_unpin_vma(struct i915_vma *vma, int fence_id)
@@ -475,7 +471,10 @@ int intel_plane_pin_fb(struct intel_plane_state *new_plane_state,
 	struct i915_vma *vma;
 	struct intel_framebuffer *intel_fb = to_intel_framebuffer(fb);
 	struct intel_plane *plane = to_intel_plane(new_plane_state->uapi.plane);
-	unsigned int alignment = plane->min_alignment(plane, fb, 0);
+	struct intel_fb_pin_params pin_params = {
+		.view = &new_plane_state->view.gtt,
+		.alignment = plane->min_alignment(plane, fb, 0),
+	};
 
 	if (reuse_vma(new_plane_state, old_plane_state))
 		return 0;
@@ -483,7 +482,7 @@ int intel_plane_pin_fb(struct intel_plane_state *new_plane_state,
 	/* We reject creating !SCANOUT fb's, so this is weird.. */
 	drm_WARN_ON(bo->ttm.base.dev, !(bo->flags & XE_BO_FLAG_FORCE_WC));
 
-	vma = __xe_pin_fb_vma(intel_fb, &new_plane_state->view.gtt, alignment);
+	vma = __xe_pin_fb_vma(intel_fb, &pin_params);
 
 	if (IS_ERR(vma))
 		return PTR_ERR(vma);
diff --git a/drivers/gpu/drm/xe/display/xe_initial_plane.c b/drivers/gpu/drm/xe/display/xe_initial_plane.c
index 381d68c58463..4f0ad4692ed6 100644
--- a/drivers/gpu/drm/xe/display/xe_initial_plane.c
+++ b/drivers/gpu/drm/xe/display/xe_initial_plane.c
@@ -134,9 +134,11 @@ xe_initial_plane_setup(struct drm_plane_state *_plane_state,
 {
 	struct intel_plane_state *plane_state = to_intel_plane_state(_plane_state);
 	struct i915_vma *vma;
+	struct intel_fb_pin_params pin_params = {
+		.view = &plane_state->view.gtt,
+	};
 
-	vma = intel_fb_pin_to_ggtt(fb, &plane_state->view.gtt,
-				   0, 0, 0, NULL);
+	vma = intel_fb_pin_to_ggtt(fb, &pin_params, NULL);
 	if (IS_ERR(vma))
 		return PTR_ERR(vma);
 
-- 
2.52.0


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

* [PATCH 03/11] drm/i915: Extract intel_fb_needs_cpu_access()
  2026-04-16 17:44 [PATCH 00/11] drm/i915: Eliminate FB usage from low level pinning code Ville Syrjala
  2026-04-16 17:44 ` [PATCH 01/11] drm/xe/fb: Use the correct gtt view for remapped FBs Ville Syrjala
  2026-04-16 17:44 ` [PATCH 02/11] drm/i915: Introduce struct intel_fb_pin_params Ville Syrjala
@ 2026-04-16 17:44 ` Ville Syrjala
  2026-04-17  9:40   ` Jani Nikula
  2026-04-16 17:44 ` [PATCH 04/11] drm/i915: Introduce pin_params.needs_cpu_lmem_access Ville Syrjala
                   ` (10 subsequent siblings)
  13 siblings, 1 reply; 28+ messages in thread
From: Ville Syrjala @ 2026-04-16 17:44 UTC (permalink / raw)
  To: intel-gfx; +Cc: intel-xe

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

Replace the naked "does the framebuffer have a clear color
plane?" checks with a more abstract helper that simply tells
us whether we require CPU access to the framebuffer's memory.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 drivers/gpu/drm/i915/display/intel_fb.c | 5 +++++
 drivers/gpu/drm/i915/display/intel_fb.h | 1 +
 drivers/gpu/drm/i915/i915_fb_pin.c      | 2 +-
 drivers/gpu/drm/xe/display/xe_fb_pin.c  | 2 +-
 4 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_fb.c b/drivers/gpu/drm/i915/display/intel_fb.c
index c4af368deffd..cbeb39ebdb73 100644
--- a/drivers/gpu/drm/i915/display/intel_fb.c
+++ b/drivers/gpu/drm/i915/display/intel_fb.c
@@ -521,6 +521,11 @@ bool intel_fb_needs_64k_phys(u64 modifier)
 				      INTEL_PLANE_CAP_NEED64K_PHYS);
 }
 
+bool intel_fb_needs_cpu_access(const struct drm_framebuffer *fb)
+{
+	return intel_fb_rc_ccs_cc_plane(fb) >= 0;
+}
+
 /**
  * intel_fb_is_tile4_modifier: Check if a modifier is a tile4 modifier type
  * @modifier: Modifier to check
diff --git a/drivers/gpu/drm/i915/display/intel_fb.h b/drivers/gpu/drm/i915/display/intel_fb.h
index fc2c4d59bf06..0a027e2595b2 100644
--- a/drivers/gpu/drm/i915/display/intel_fb.h
+++ b/drivers/gpu/drm/i915/display/intel_fb.h
@@ -38,6 +38,7 @@ bool intel_fb_is_rc_ccs_cc_modifier(u64 modifier);
 bool intel_fb_is_mc_ccs_modifier(u64 modifier);
 bool intel_fb_needs_64k_phys(u64 modifier);
 bool intel_fb_is_tile4_modifier(u64 modifier);
+bool intel_fb_needs_cpu_access(const struct drm_framebuffer *fb);
 
 bool intel_fb_is_ccs_aux_plane(const struct drm_framebuffer *fb, int color_plane);
 int intel_fb_rc_ccs_cc_plane(const struct drm_framebuffer *fb);
diff --git a/drivers/gpu/drm/i915/i915_fb_pin.c b/drivers/gpu/drm/i915/i915_fb_pin.c
index 4fe6b9859b3f..780be25ad43b 100644
--- a/drivers/gpu/drm/i915/i915_fb_pin.c
+++ b/drivers/gpu/drm/i915/i915_fb_pin.c
@@ -61,7 +61,7 @@ intel_fb_pin_to_dpt(const struct drm_framebuffer *fb,
 			 * ensure it is always in the mappable part of lmem, if this is
 			 * a small-bar device.
 			 */
-			if (intel_fb_rc_ccs_cc_plane(fb) >= 0)
+			if (intel_fb_needs_cpu_access(fb))
 				flags &= ~I915_BO_ALLOC_GPU_ONLY;
 			ret = __i915_gem_object_migrate(obj, &ww, INTEL_REGION_LMEM_0,
 							flags);
diff --git a/drivers/gpu/drm/xe/display/xe_fb_pin.c b/drivers/gpu/drm/xe/display/xe_fb_pin.c
index 58cd527e1fde..205492639dba 100644
--- a/drivers/gpu/drm/xe/display/xe_fb_pin.c
+++ b/drivers/gpu/drm/xe/display/xe_fb_pin.c
@@ -335,7 +335,7 @@ static struct i915_vma *__xe_pin_fb_vma(const struct intel_framebuffer *fb,
 
 	refcount_set(&vma->ref, 1);
 	if (IS_DGFX(to_xe_device(bo->ttm.base.dev)) &&
-	    intel_fb_rc_ccs_cc_plane(&fb->base) >= 0 &&
+	    intel_fb_needs_cpu_access(&fb->base) &&
 	    !(bo->flags & XE_BO_FLAG_NEEDS_CPU_ACCESS)) {
 		struct xe_vram_region *vram = xe_device_get_root_tile(xe)->mem.vram;
 
-- 
2.52.0


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

* [PATCH 04/11] drm/i915: Introduce pin_params.needs_cpu_lmem_access
  2026-04-16 17:44 [PATCH 00/11] drm/i915: Eliminate FB usage from low level pinning code Ville Syrjala
                   ` (2 preceding siblings ...)
  2026-04-16 17:44 ` [PATCH 03/11] drm/i915: Extract intel_fb_needs_cpu_access() Ville Syrjala
@ 2026-04-16 17:44 ` Ville Syrjala
  2026-04-17  9:39   ` Jani Nikula
  2026-04-16 17:44 ` [PATCH 05/11] drm/i915: Extract intel_plane_needs_low_address() Ville Syrjala
                   ` (9 subsequent siblings)
  13 siblings, 1 reply; 28+ messages in thread
From: Ville Syrjala @ 2026-04-16 17:44 UTC (permalink / raw)
  To: intel-gfx; +Cc: intel-xe

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

Add a new flag pin_params.neeeds_cpu_lmem_access so that the
low level pinning code doesn't need to peek into the display
driver's framebuffer structure.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 drivers/gpu/drm/i915/display/intel_fb_pin.h | 1 +
 drivers/gpu/drm/i915/i915_fb_pin.c          | 4 +++-
 drivers/gpu/drm/xe/display/xe_fb_pin.c      | 3 ++-
 3 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_fb_pin.h b/drivers/gpu/drm/i915/display/intel_fb_pin.h
index e6271437459d..bcf5a1f46092 100644
--- a/drivers/gpu/drm/i915/display/intel_fb_pin.h
+++ b/drivers/gpu/drm/i915/display/intel_fb_pin.h
@@ -19,6 +19,7 @@ struct intel_fb_pin_params {
 	unsigned int alignment;
 	unsigned int phys_alignment;
 	unsigned int vtd_guard;
+	bool needs_cpu_lmem_access;
 };
 
 struct i915_vma *
diff --git a/drivers/gpu/drm/i915/i915_fb_pin.c b/drivers/gpu/drm/i915/i915_fb_pin.c
index 780be25ad43b..96ffc4b0d809 100644
--- a/drivers/gpu/drm/i915/i915_fb_pin.c
+++ b/drivers/gpu/drm/i915/i915_fb_pin.c
@@ -61,7 +61,7 @@ intel_fb_pin_to_dpt(const struct drm_framebuffer *fb,
 			 * ensure it is always in the mappable part of lmem, if this is
 			 * a small-bar device.
 			 */
-			if (intel_fb_needs_cpu_access(fb))
+			if (pin_params->needs_cpu_lmem_access)
 				flags &= ~I915_BO_ALLOC_GPU_ONLY;
 			ret = __i915_gem_object_migrate(obj, &ww, INTEL_REGION_LMEM_0,
 							flags);
@@ -275,6 +275,7 @@ int intel_plane_pin_fb(struct intel_plane_state *plane_state,
 			.alignment = intel_plane_fb_min_alignment(plane_state),
 			.phys_alignment = intel_plane_fb_min_phys_alignment(plane_state),
 			.vtd_guard = intel_plane_fb_vtd_guard(plane_state),
+			.needs_cpu_lmem_access = intel_fb_needs_cpu_access(&fb->base),
 		};
 		int fence_id = -1;
 
@@ -289,6 +290,7 @@ int intel_plane_pin_fb(struct intel_plane_state *plane_state,
 		struct intel_fb_pin_params pin_params = {
 			.view = &plane_state->view.gtt,
 			.alignment = intel_plane_fb_min_alignment(plane_state),
+			.needs_cpu_lmem_access = intel_fb_needs_cpu_access(&fb->base),
 		};
 
 		vma = i915_dpt_pin_to_ggtt(fb->dpt, pin_params.alignment / 512);
diff --git a/drivers/gpu/drm/xe/display/xe_fb_pin.c b/drivers/gpu/drm/xe/display/xe_fb_pin.c
index 205492639dba..a4eb06cfa769 100644
--- a/drivers/gpu/drm/xe/display/xe_fb_pin.c
+++ b/drivers/gpu/drm/xe/display/xe_fb_pin.c
@@ -335,7 +335,7 @@ static struct i915_vma *__xe_pin_fb_vma(const struct intel_framebuffer *fb,
 
 	refcount_set(&vma->ref, 1);
 	if (IS_DGFX(to_xe_device(bo->ttm.base.dev)) &&
-	    intel_fb_needs_cpu_access(&fb->base) &&
+	    pin_params->needs_cpu_lmem_access &&
 	    !(bo->flags & XE_BO_FLAG_NEEDS_CPU_ACCESS)) {
 		struct xe_vram_region *vram = xe_device_get_root_tile(xe)->mem.vram;
 
@@ -474,6 +474,7 @@ int intel_plane_pin_fb(struct intel_plane_state *new_plane_state,
 	struct intel_fb_pin_params pin_params = {
 		.view = &new_plane_state->view.gtt,
 		.alignment = plane->min_alignment(plane, fb, 0),
+		.needs_cpu_lmem_access = intel_fb_needs_cpu_access(fb),
 	};
 
 	if (reuse_vma(new_plane_state, old_plane_state))
-- 
2.52.0


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

* [PATCH 05/11] drm/i915: Extract intel_plane_needs_low_address()
  2026-04-16 17:44 [PATCH 00/11] drm/i915: Eliminate FB usage from low level pinning code Ville Syrjala
                   ` (3 preceding siblings ...)
  2026-04-16 17:44 ` [PATCH 04/11] drm/i915: Introduce pin_params.needs_cpu_lmem_access Ville Syrjala
@ 2026-04-16 17:44 ` Ville Syrjala
  2026-04-17  9:43   ` Jani Nikula
  2026-04-16 17:44 ` [PATCH 06/11] drm/i915: Introduce pin_params.needs_low_address Ville Syrjala
                   ` (8 subsequent siblings)
  13 siblings, 1 reply; 28+ messages in thread
From: Ville Syrjala @ 2026-04-16 17:44 UTC (permalink / raw)
  To: intel-gfx; +Cc: intel-xe

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

Extract the naked "gmch? -> need a low ggtt address" check into
a more descriptive helper (intel_plane_needs_low_address()).
The goal being to eliminate all display specific stuff from the
low level pinning code.

The actual implementation still abuses PIN_MAPPABLE to achieve
this goal. I'm not entire convinced that this whole thing even
needs to exist, and the original issue wasn't just caused by
some other bug. But no time to dig into it right now, so let's
keep going.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 drivers/gpu/drm/i915/display/intel_plane.c | 13 +++++++++++++
 drivers/gpu/drm/i915/display/intel_plane.h |  2 ++
 drivers/gpu/drm/i915/i915_fb_pin.c         | 11 ++---------
 3 files changed, 17 insertions(+), 9 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_plane.c b/drivers/gpu/drm/i915/display/intel_plane.c
index f15dd9e91243..f41f4c2ac320 100644
--- a/drivers/gpu/drm/i915/display/intel_plane.c
+++ b/drivers/gpu/drm/i915/display/intel_plane.c
@@ -171,6 +171,19 @@ intel_plane_destroy_state(struct drm_plane *plane,
 	kfree(plane_state);
 }
 
+bool intel_plane_needs_low_address(struct intel_display *display)
+{
+	/*
+	 * Valleyview is definitely limited to scanning out the first
+	 * 512MiB. Lets presume this behaviour was inherited from the
+	 * g4x display engine and that all earlier gen are similarly
+	 * limited. Testing suggests that it is a little more
+	 * complicated than this. For example, Cherryview appears quite
+	 * happy to scanout from anywhere within its global aperture.
+	 */
+	return HAS_GMCH(display);
+}
+
 bool intel_plane_needs_physical(struct intel_plane *plane)
 {
 	struct intel_display *display = to_intel_display(plane);
diff --git a/drivers/gpu/drm/i915/display/intel_plane.h b/drivers/gpu/drm/i915/display/intel_plane.h
index 5a8f2f3baab5..7fa7fbbb58dc 100644
--- a/drivers/gpu/drm/i915/display/intel_plane.h
+++ b/drivers/gpu/drm/i915/display/intel_plane.h
@@ -15,6 +15,7 @@ struct drm_rect;
 struct intel_atomic_state;
 struct intel_crtc;
 struct intel_crtc_state;
+struct intel_display;
 struct intel_dsb;
 struct intel_plane;
 struct intel_plane_state;
@@ -79,6 +80,7 @@ int intel_plane_check_src_coordinates(struct intel_plane_state *plane_state);
 void intel_plane_set_invisible(struct intel_crtc_state *crtc_state,
 			       struct intel_plane_state *plane_state);
 void intel_plane_helper_add(struct intel_plane *plane);
+bool intel_plane_needs_low_address(struct intel_display *display);
 bool intel_plane_needs_physical(struct intel_plane *plane);
 void intel_plane_init_cursor_vblank_work(struct intel_plane_state *old_plane_state,
 					 struct intel_plane_state *new_plane_state);
diff --git a/drivers/gpu/drm/i915/i915_fb_pin.c b/drivers/gpu/drm/i915/i915_fb_pin.c
index 96ffc4b0d809..a3e5107c12f0 100644
--- a/drivers/gpu/drm/i915/i915_fb_pin.c
+++ b/drivers/gpu/drm/i915/i915_fb_pin.c
@@ -140,16 +140,9 @@ intel_fb_pin_to_ggtt(const struct drm_framebuffer *fb,
 
 	atomic_inc(&i915->pending_fb_pin);
 
-	/*
-	 * Valleyview is definitely limited to scanning out the first
-	 * 512MiB. Lets presume this behaviour was inherited from the
-	 * g4x display engine and that all earlier gen are similarly
-	 * limited. Testing suggests that it is a little more
-	 * complicated than this. For example, Cherryview appears quite
-	 * happy to scanout from anywhere within its global aperture.
-	 */
 	pinctl = 0;
-	if (HAS_GMCH(display))
+	/* PIN_MAPPABLE limits the address to GMADR size */
+	if (intel_plane_needs_low_address(display))
 		pinctl |= PIN_MAPPABLE;
 
 	i915_gem_ww_ctx_init(&ww, true);
-- 
2.52.0


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

* [PATCH 06/11] drm/i915: Introduce pin_params.needs_low_address
  2026-04-16 17:44 [PATCH 00/11] drm/i915: Eliminate FB usage from low level pinning code Ville Syrjala
                   ` (4 preceding siblings ...)
  2026-04-16 17:44 ` [PATCH 05/11] drm/i915: Extract intel_plane_needs_low_address() Ville Syrjala
@ 2026-04-16 17:44 ` Ville Syrjala
  2026-04-17  9:48   ` Jani Nikula
  2026-04-16 17:44 ` [PATCH 07/11] drm/i915: Introduce pin_params.needs_physical Ville Syrjala
                   ` (7 subsequent siblings)
  13 siblings, 1 reply; 28+ messages in thread
From: Ville Syrjala @ 2026-04-16 17:44 UTC (permalink / raw)
  To: intel-gfx; +Cc: intel-xe

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

Add a new flag pin_params.needs_low_address to inform the pinning
code that the display needs a low ggtt address.

The goal is to eliminate all display specific stuff from
the low level pinning code (the direct intel_plane_needs_low_addres())
call in this case).

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 drivers/gpu/drm/i915/display/intel_fb_pin.h | 1 +
 drivers/gpu/drm/i915/display/intel_fbdev.c  | 2 ++
 drivers/gpu/drm/i915/i915_fb_pin.c          | 4 +++-
 3 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/display/intel_fb_pin.h b/drivers/gpu/drm/i915/display/intel_fb_pin.h
index bcf5a1f46092..cf54a96569de 100644
--- a/drivers/gpu/drm/i915/display/intel_fb_pin.h
+++ b/drivers/gpu/drm/i915/display/intel_fb_pin.h
@@ -20,6 +20,7 @@ struct intel_fb_pin_params {
 	unsigned int phys_alignment;
 	unsigned int vtd_guard;
 	bool needs_cpu_lmem_access;
+	bool needs_low_address;
 };
 
 struct i915_vma *
diff --git a/drivers/gpu/drm/i915/display/intel_fbdev.c b/drivers/gpu/drm/i915/display/intel_fbdev.c
index 136fa827c8f0..4c3e54acde81 100644
--- a/drivers/gpu/drm/i915/display/intel_fbdev.c
+++ b/drivers/gpu/drm/i915/display/intel_fbdev.c
@@ -55,6 +55,7 @@
 #include "intel_fb_pin.h"
 #include "intel_fbdev.h"
 #include "intel_frontbuffer.h"
+#include "intel_plane.h"
 
 struct intel_fbdev {
 	struct intel_framebuffer *fb;
@@ -314,6 +315,7 @@ int intel_fbdev_driver_fbdev_probe(struct drm_fb_helper *helper,
 	pin_params.vtd_guard = intel_fb_view_vtd_guard(&fb->base,
 						       &fb->normal_view,
 						       DRM_MODE_ROTATE_0);
+	pin_params.needs_low_address = intel_plane_needs_low_address(display);
 
 	vma = intel_fb_pin_to_ggtt(&fb->base, &pin_params, NULL);
 	if (IS_ERR(vma)) {
diff --git a/drivers/gpu/drm/i915/i915_fb_pin.c b/drivers/gpu/drm/i915/i915_fb_pin.c
index a3e5107c12f0..97e4cdfd2447 100644
--- a/drivers/gpu/drm/i915/i915_fb_pin.c
+++ b/drivers/gpu/drm/i915/i915_fb_pin.c
@@ -142,7 +142,7 @@ intel_fb_pin_to_ggtt(const struct drm_framebuffer *fb,
 
 	pinctl = 0;
 	/* PIN_MAPPABLE limits the address to GMADR size */
-	if (intel_plane_needs_low_address(display))
+	if (pin_params->needs_low_address)
 		pinctl |= PIN_MAPPABLE;
 
 	i915_gem_ww_ctx_init(&ww, true);
@@ -256,6 +256,7 @@ intel_plane_fb_vtd_guard(const struct intel_plane_state *plane_state)
 int intel_plane_pin_fb(struct intel_plane_state *plane_state,
 		       const struct intel_plane_state *old_plane_state)
 {
+	struct intel_display *display = to_intel_display(plane_state);
 	struct drm_i915_private *i915 = to_i915(plane_state->uapi.plane->dev);
 	struct intel_plane *plane = to_intel_plane(plane_state->uapi.plane);
 	const struct intel_framebuffer *fb =
@@ -269,6 +270,7 @@ int intel_plane_pin_fb(struct intel_plane_state *plane_state,
 			.phys_alignment = intel_plane_fb_min_phys_alignment(plane_state),
 			.vtd_guard = intel_plane_fb_vtd_guard(plane_state),
 			.needs_cpu_lmem_access = intel_fb_needs_cpu_access(&fb->base),
+			.needs_low_address = intel_plane_needs_low_address(display),
 		};
 		int fence_id = -1;
 
-- 
2.52.0


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

* [PATCH 07/11] drm/i915: Introduce pin_params.needs_physical
  2026-04-16 17:44 [PATCH 00/11] drm/i915: Eliminate FB usage from low level pinning code Ville Syrjala
                   ` (5 preceding siblings ...)
  2026-04-16 17:44 ` [PATCH 06/11] drm/i915: Introduce pin_params.needs_low_address Ville Syrjala
@ 2026-04-16 17:44 ` Ville Syrjala
  2026-04-17  9:50   ` Jani Nikula
  2026-04-16 17:44 ` [PATCH 08/11] drm/i915: Extract intel_plane_needs_fence() Ville Syrjala
                   ` (6 subsequent siblings)
  13 siblings, 1 reply; 28+ messages in thread
From: Ville Syrjala @ 2026-04-16 17:44 UTC (permalink / raw)
  To: intel-gfx; +Cc: intel-xe

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

Add a new flag pin_params.needs_physical to inform the pinning
code that the display needs a physical address and not GGTT
address.

This isn't strictly necessary as the current phys_alignment!=0
check is enough in practice. But theoretically one could have
needs_physical==true without any alignment requirements. And
having an explicit flag feels a bit less magical.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 drivers/gpu/drm/i915/display/intel_fb_pin.h | 1 +
 drivers/gpu/drm/i915/i915_fb_pin.c          | 3 ++-
 2 files changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/display/intel_fb_pin.h b/drivers/gpu/drm/i915/display/intel_fb_pin.h
index cf54a96569de..3e37e9874f50 100644
--- a/drivers/gpu/drm/i915/display/intel_fb_pin.h
+++ b/drivers/gpu/drm/i915/display/intel_fb_pin.h
@@ -21,6 +21,7 @@ struct intel_fb_pin_params {
 	unsigned int vtd_guard;
 	bool needs_cpu_lmem_access;
 	bool needs_low_address;
+	bool needs_physical;
 };
 
 struct i915_vma *
diff --git a/drivers/gpu/drm/i915/i915_fb_pin.c b/drivers/gpu/drm/i915/i915_fb_pin.c
index 97e4cdfd2447..bfe9a5342e13 100644
--- a/drivers/gpu/drm/i915/i915_fb_pin.c
+++ b/drivers/gpu/drm/i915/i915_fb_pin.c
@@ -148,7 +148,7 @@ intel_fb_pin_to_ggtt(const struct drm_framebuffer *fb,
 	i915_gem_ww_ctx_init(&ww, true);
 retry:
 	ret = i915_gem_object_lock(obj, &ww);
-	if (!ret && pin_params->phys_alignment)
+	if (!ret && pin_params->needs_physical)
 		ret = i915_gem_object_attach_phys(obj, pin_params->phys_alignment);
 	else if (!ret && HAS_LMEM(i915))
 		ret = i915_gem_object_migrate(obj, &ww, INTEL_REGION_LMEM_0);
@@ -271,6 +271,7 @@ int intel_plane_pin_fb(struct intel_plane_state *plane_state,
 			.vtd_guard = intel_plane_fb_vtd_guard(plane_state),
 			.needs_cpu_lmem_access = intel_fb_needs_cpu_access(&fb->base),
 			.needs_low_address = intel_plane_needs_low_address(display),
+			.needs_physical = intel_plane_needs_physical(plane),
 		};
 		int fence_id = -1;
 
-- 
2.52.0


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

* [PATCH 08/11] drm/i915: Extract intel_plane_needs_fence()
  2026-04-16 17:44 [PATCH 00/11] drm/i915: Eliminate FB usage from low level pinning code Ville Syrjala
                   ` (6 preceding siblings ...)
  2026-04-16 17:44 ` [PATCH 07/11] drm/i915: Introduce pin_params.needs_physical Ville Syrjala
@ 2026-04-16 17:44 ` Ville Syrjala
  2026-04-17  9:53   ` Jani Nikula
  2026-04-16 17:44 ` [PATCH 09/11] drm/i915: Introduce pin_params.needs_fence Ville Syrjala
                   ` (5 subsequent siblings)
  13 siblings, 1 reply; 28+ messages in thread
From: Ville Syrjala @ 2026-04-16 17:44 UTC (permalink / raw)
  To: intel-gfx; +Cc: intel-xe

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

Extract the naked DISPLA_VER<4 checks into a descriptive little
helper (intel_plane_needs_fence()).

And while at it document the reason why the check is what it is.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 drivers/gpu/drm/i915/display/intel_fb.c    | 2 +-
 drivers/gpu/drm/i915/display/intel_plane.c | 9 +++++++++
 drivers/gpu/drm/i915/display/intel_plane.h | 1 +
 drivers/gpu/drm/i915/i915_fb_pin.c         | 2 +-
 4 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_fb.c b/drivers/gpu/drm/i915/display/intel_fb.c
index cbeb39ebdb73..1c0859d5f829 100644
--- a/drivers/gpu/drm/i915/display/intel_fb.c
+++ b/drivers/gpu/drm/i915/display/intel_fb.c
@@ -1287,7 +1287,7 @@ bool intel_plane_uses_fence(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);
 
-	return DISPLAY_VER(display) < 4 ||
+	return intel_plane_needs_fence(display) ||
 		(plane->fbc && !plane_state->no_fbc_reason &&
 		 i915_gtt_view_is_normal(&plane_state->view.gtt));
 }
diff --git a/drivers/gpu/drm/i915/display/intel_plane.c b/drivers/gpu/drm/i915/display/intel_plane.c
index f41f4c2ac320..c2b58d3b9c23 100644
--- a/drivers/gpu/drm/i915/display/intel_plane.c
+++ b/drivers/gpu/drm/i915/display/intel_plane.c
@@ -192,6 +192,15 @@ bool intel_plane_needs_physical(struct intel_plane *plane)
 		DISPLAY_INFO(display)->cursor_needs_physical;
 }
 
+bool intel_plane_needs_fence(struct intel_display *display)
+{
+	/*
+	 * pre-i965 planes use the fence for tiled scanout.
+	 * i965+ planes have their own tiled scanout control bit.
+	 */
+	return DISPLAY_VER(display) < 4;
+}
+
 bool intel_plane_can_async_flip(struct intel_plane *plane,
 				const struct drm_format_info *info,
 				u64 modifier)
diff --git a/drivers/gpu/drm/i915/display/intel_plane.h b/drivers/gpu/drm/i915/display/intel_plane.h
index 7fa7fbbb58dc..7b5456f56f42 100644
--- a/drivers/gpu/drm/i915/display/intel_plane.h
+++ b/drivers/gpu/drm/i915/display/intel_plane.h
@@ -82,6 +82,7 @@ void intel_plane_set_invisible(struct intel_crtc_state *crtc_state,
 void intel_plane_helper_add(struct intel_plane *plane);
 bool intel_plane_needs_low_address(struct intel_display *display);
 bool intel_plane_needs_physical(struct intel_plane *plane);
+bool intel_plane_needs_fence(struct intel_display *display);
 void intel_plane_init_cursor_vblank_work(struct intel_plane_state *old_plane_state,
 					 struct intel_plane_state *new_plane_state);
 int intel_plane_add_affected(struct intel_atomic_state *state,
diff --git a/drivers/gpu/drm/i915/i915_fb_pin.c b/drivers/gpu/drm/i915/i915_fb_pin.c
index bfe9a5342e13..a8ed888183cb 100644
--- a/drivers/gpu/drm/i915/i915_fb_pin.c
+++ b/drivers/gpu/drm/i915/i915_fb_pin.c
@@ -188,7 +188,7 @@ intel_fb_pin_to_ggtt(const struct drm_framebuffer *fb,
 		 * mode that matches the user configuration.
 		 */
 		ret = i915_vma_pin_fence(vma);
-		if (ret != 0 && DISPLAY_VER(display) < 4) {
+		if (ret != 0 && intel_plane_needs_fence(display)) {
 			i915_vma_unpin(vma);
 			goto err_unpin;
 		}
-- 
2.52.0


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

* [PATCH 09/11] drm/i915: Introduce pin_params.needs_fence
  2026-04-16 17:44 [PATCH 00/11] drm/i915: Eliminate FB usage from low level pinning code Ville Syrjala
                   ` (7 preceding siblings ...)
  2026-04-16 17:44 ` [PATCH 08/11] drm/i915: Extract intel_plane_needs_fence() Ville Syrjala
@ 2026-04-16 17:44 ` Ville Syrjala
  2026-04-17  9:58   ` Jani Nikula
  2026-04-16 17:44 ` [PATCH 10/11] drm/xe: Eliminate intel_fb_uses_dpt() call from __xe_pin_fb_vma() Ville Syrjala
                   ` (4 subsequent siblings)
  13 siblings, 1 reply; 28+ messages in thread
From: Ville Syrjala @ 2026-04-16 17:44 UTC (permalink / raw)
  To: intel-gfx; +Cc: intel-xe

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

Add a new flag pin_params.needs_fencel to inform the pinning
code that the display needs a fence for tiled scanout.

The goal is to eliminate all display specific stuff from
the low level pinning code.

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

diff --git a/drivers/gpu/drm/i915/display/intel_fb_pin.h b/drivers/gpu/drm/i915/display/intel_fb_pin.h
index 3e37e9874f50..95f83bf7411f 100644
--- a/drivers/gpu/drm/i915/display/intel_fb_pin.h
+++ b/drivers/gpu/drm/i915/display/intel_fb_pin.h
@@ -22,6 +22,7 @@ struct intel_fb_pin_params {
 	bool needs_cpu_lmem_access;
 	bool needs_low_address;
 	bool needs_physical;
+	bool needs_fence;
 };
 
 struct i915_vma *
diff --git a/drivers/gpu/drm/i915/i915_fb_pin.c b/drivers/gpu/drm/i915/i915_fb_pin.c
index a8ed888183cb..5060ec8c76ca 100644
--- a/drivers/gpu/drm/i915/i915_fb_pin.c
+++ b/drivers/gpu/drm/i915/i915_fb_pin.c
@@ -112,7 +112,6 @@ intel_fb_pin_to_ggtt(const struct drm_framebuffer *fb,
 		     const struct intel_fb_pin_params *pin_params,
 		     int *out_fence_id)
 {
-	struct intel_display *display = to_intel_display(fb->dev);
 	struct drm_i915_private *i915 = to_i915(fb->dev);
 	struct drm_gem_object *_obj = intel_fb_bo(fb);
 	struct drm_i915_gem_object *obj = to_intel_bo(_obj);
@@ -188,7 +187,7 @@ intel_fb_pin_to_ggtt(const struct drm_framebuffer *fb,
 		 * mode that matches the user configuration.
 		 */
 		ret = i915_vma_pin_fence(vma);
-		if (ret != 0 && intel_plane_needs_fence(display)) {
+		if (ret != 0 && pin_params->needs_fence) {
 			i915_vma_unpin(vma);
 			goto err_unpin;
 		}
@@ -272,6 +271,7 @@ int intel_plane_pin_fb(struct intel_plane_state *plane_state,
 			.needs_cpu_lmem_access = intel_fb_needs_cpu_access(&fb->base),
 			.needs_low_address = intel_plane_needs_low_address(display),
 			.needs_physical = intel_plane_needs_physical(plane),
+			.needs_fence = intel_plane_needs_fence(display),
 		};
 		int fence_id = -1;
 
-- 
2.52.0


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

* [PATCH 10/11] drm/xe: Eliminate intel_fb_uses_dpt() call from __xe_pin_fb_vma()
  2026-04-16 17:44 [PATCH 00/11] drm/i915: Eliminate FB usage from low level pinning code Ville Syrjala
                   ` (8 preceding siblings ...)
  2026-04-16 17:44 ` [PATCH 09/11] drm/i915: Introduce pin_params.needs_fence Ville Syrjala
@ 2026-04-16 17:44 ` Ville Syrjala
  2026-04-17 10:19   ` Jani Nikula
  2026-04-16 17:44 ` [PATCH 11/11] drm/i915: Don't pass the framebuffer to low level pinning functions Ville Syrjala
                   ` (3 subsequent siblings)
  13 siblings, 1 reply; 28+ messages in thread
From: Ville Syrjala @ 2026-04-16 17:44 UTC (permalink / raw)
  To: intel-gfx; +Cc: intel-xe

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

Move the intel_fb_uses_dpt() out from __xe_pin_fb_vma() into
intel_plane_pin_fb() so the we don't any display stuff that deep
in the pinning code.

And intel_fb_pin_to_ggtt() can just say "this does not need DPT"
always since it's specifically about pinning the fb into GGTT.
The previous logic here was kinda insane with the high level code
assuming GGTT, and low level code potentially deciding otherwise.
In practice it should have been fine because intel_fb_pin_to_ggtt()
only gets used from the intiial_palne code, and there we are
not supposed to be have a framebuffer that needs DPT.

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

diff --git a/drivers/gpu/drm/xe/display/xe_fb_pin.c b/drivers/gpu/drm/xe/display/xe_fb_pin.c
index a4eb06cfa769..44562769fbc9 100644
--- a/drivers/gpu/drm/xe/display/xe_fb_pin.c
+++ b/drivers/gpu/drm/xe/display/xe_fb_pin.c
@@ -318,7 +318,7 @@ static int __xe_pin_fb_vma_ggtt(const struct intel_framebuffer *fb,
 	return ret;
 }
 
-static struct i915_vma *__xe_pin_fb_vma(const struct intel_framebuffer *fb,
+static struct i915_vma *__xe_pin_fb_vma(const struct intel_framebuffer *fb, bool is_dpt,
 					const struct intel_fb_pin_params *pin_params)
 {
 	struct drm_device *dev = fb->base.dev;
@@ -375,7 +375,7 @@ static struct i915_vma *__xe_pin_fb_vma(const struct intel_framebuffer *fb,
 		goto err;
 
 	vma->bo = bo;
-	if (intel_fb_uses_dpt(&fb->base))
+	if (is_dpt)
 		ret = __xe_pin_fb_vma_dpt(fb, pin_params, vma);
 	else
 		ret = __xe_pin_fb_vma_ggtt(fb, pin_params, vma);
@@ -419,7 +419,7 @@ intel_fb_pin_to_ggtt(const struct drm_framebuffer *fb,
 	if (out_fence_id)
 		*out_fence_id = -1;
 
-	return __xe_pin_fb_vma(to_intel_framebuffer(fb), pin_params);
+	return __xe_pin_fb_vma(to_intel_framebuffer(fb), false, pin_params);
 }
 
 void intel_fb_unpin_vma(struct i915_vma *vma, int fence_id)
@@ -483,7 +483,8 @@ int intel_plane_pin_fb(struct intel_plane_state *new_plane_state,
 	/* We reject creating !SCANOUT fb's, so this is weird.. */
 	drm_WARN_ON(bo->ttm.base.dev, !(bo->flags & XE_BO_FLAG_FORCE_WC));
 
-	vma = __xe_pin_fb_vma(intel_fb, &pin_params);
+	vma = __xe_pin_fb_vma(intel_fb, intel_fb_uses_dpt(&intel_fb->base),
+			      &pin_params);
 
 	if (IS_ERR(vma))
 		return PTR_ERR(vma);
-- 
2.52.0


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

* [PATCH 11/11] drm/i915: Don't pass the framebuffer to low level pinning functions
  2026-04-16 17:44 [PATCH 00/11] drm/i915: Eliminate FB usage from low level pinning code Ville Syrjala
                   ` (9 preceding siblings ...)
  2026-04-16 17:44 ` [PATCH 10/11] drm/xe: Eliminate intel_fb_uses_dpt() call from __xe_pin_fb_vma() Ville Syrjala
@ 2026-04-16 17:44 ` Ville Syrjala
  2026-04-17 10:25   ` Jani Nikula
  2026-04-16 19:29 ` ✓ i915.CI.BAT: success for drm/i915: Eliminate FB usage from low level pinning code Patchwork
                   ` (2 subsequent siblings)
  13 siblings, 1 reply; 28+ messages in thread
From: Ville Syrjala @ 2026-04-16 17:44 UTC (permalink / raw)
  To: intel-gfx; +Cc: intel-xe

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

Now that we have the pin_params the low level pinning code no
longer needs the entire framebuffer structure. The gem object
alone (along with the pin_params) is enough.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 drivers/gpu/drm/i915/display/intel_fb_pin.h   |  4 +--
 drivers/gpu/drm/i915/display/intel_fbdev.c    |  6 ++--
 drivers/gpu/drm/i915/i915_fb_pin.c            | 15 ++++------
 drivers/gpu/drm/xe/display/xe_fb_pin.c        | 28 ++++++++-----------
 drivers/gpu/drm/xe/display/xe_initial_plane.c |  2 +-
 5 files changed, 23 insertions(+), 32 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_fb_pin.h b/drivers/gpu/drm/i915/display/intel_fb_pin.h
index 95f83bf7411f..5825503c38ea 100644
--- a/drivers/gpu/drm/i915/display/intel_fb_pin.h
+++ b/drivers/gpu/drm/i915/display/intel_fb_pin.h
@@ -8,7 +8,7 @@
 
 #include <linux/types.h>
 
-struct drm_framebuffer;
+struct drm_gem_object;
 struct i915_vma;
 struct intel_plane_state;
 struct i915_gtt_view;
@@ -26,7 +26,7 @@ struct intel_fb_pin_params {
 };
 
 struct i915_vma *
-intel_fb_pin_to_ggtt(const struct drm_framebuffer *fb,
+intel_fb_pin_to_ggtt(struct drm_gem_object *obj,
 		     const struct intel_fb_pin_params *pin_params,
 		     int *out_fence_id);
 
diff --git a/drivers/gpu/drm/i915/display/intel_fbdev.c b/drivers/gpu/drm/i915/display/intel_fbdev.c
index 4c3e54acde81..9ab0ac49abb7 100644
--- a/drivers/gpu/drm/i915/display/intel_fbdev.c
+++ b/drivers/gpu/drm/i915/display/intel_fbdev.c
@@ -306,6 +306,8 @@ int intel_fbdev_driver_fbdev_probe(struct drm_fb_helper *helper,
 		sizes->fb_height = fb->base.height;
 	}
 
+	obj = intel_fb_bo(&fb->base);
+
 	/* Pin the GGTT vma for our access via info->screen_base.
 	 * This also validates that any existing fb inherited from the
 	 * BIOS is suitable for own access.
@@ -317,7 +319,7 @@ int intel_fbdev_driver_fbdev_probe(struct drm_fb_helper *helper,
 						       DRM_MODE_ROTATE_0);
 	pin_params.needs_low_address = intel_plane_needs_low_address(display);
 
-	vma = intel_fb_pin_to_ggtt(&fb->base, &pin_params, NULL);
+	vma = intel_fb_pin_to_ggtt(obj, &pin_params, NULL);
 	if (IS_ERR(vma)) {
 		ret = PTR_ERR(vma);
 		goto out_unlock;
@@ -328,8 +330,6 @@ int intel_fbdev_driver_fbdev_probe(struct drm_fb_helper *helper,
 
 	info->fbops = &intelfb_ops;
 
-	obj = intel_fb_bo(&fb->base);
-
 	ret = intel_bo_fbdev_fill_info(obj, info, vma);
 	if (ret)
 		goto out_unpin;
diff --git a/drivers/gpu/drm/i915/i915_fb_pin.c b/drivers/gpu/drm/i915/i915_fb_pin.c
index 5060ec8c76ca..b0e121462ca3 100644
--- a/drivers/gpu/drm/i915/i915_fb_pin.c
+++ b/drivers/gpu/drm/i915/i915_fb_pin.c
@@ -23,12 +23,10 @@
 #include "i915_vma.h"
 
 static struct i915_vma *
-intel_fb_pin_to_dpt(const struct drm_framebuffer *fb,
-		    struct intel_dpt *dpt,
+intel_fb_pin_to_dpt(struct drm_gem_object *_obj, struct intel_dpt *dpt,
 		    const struct intel_fb_pin_params *pin_params)
 {
-	struct drm_i915_private *i915 = to_i915(fb->dev);
-	struct drm_gem_object *_obj = intel_fb_bo(fb);
+	struct drm_i915_private *i915 = to_i915(_obj->dev);
 	struct drm_i915_gem_object *obj = to_intel_bo(_obj);
 	struct i915_address_space *vm = i915_dpt_to_vm(dpt);
 	struct i915_gem_ww_ctx ww;
@@ -108,12 +106,11 @@ intel_fb_pin_to_dpt(const struct drm_framebuffer *fb,
 }
 
 struct i915_vma *
-intel_fb_pin_to_ggtt(const struct drm_framebuffer *fb,
+intel_fb_pin_to_ggtt(struct drm_gem_object *_obj,
 		     const struct intel_fb_pin_params *pin_params,
 		     int *out_fence_id)
 {
-	struct drm_i915_private *i915 = to_i915(fb->dev);
-	struct drm_gem_object *_obj = intel_fb_bo(fb);
+	struct drm_i915_private *i915 = to_i915(_obj->dev);
 	struct drm_i915_gem_object *obj = to_intel_bo(_obj);
 	intel_wakeref_t wakeref;
 	struct i915_gem_ww_ctx ww;
@@ -275,7 +272,7 @@ int intel_plane_pin_fb(struct intel_plane_state *plane_state,
 		};
 		int fence_id = -1;
 
-		vma = intel_fb_pin_to_ggtt(&fb->base, &pin_params,
+		vma = intel_fb_pin_to_ggtt(intel_fb_bo(&fb->base), &pin_params,
 					   intel_plane_uses_fence(plane_state) ? &fence_id : NULL);
 		if (IS_ERR(vma))
 			return PTR_ERR(vma);
@@ -295,7 +292,7 @@ int intel_plane_pin_fb(struct intel_plane_state *plane_state,
 
 		plane_state->ggtt_vma = vma;
 
-		vma = intel_fb_pin_to_dpt(&fb->base, fb->dpt, &pin_params);
+		vma = intel_fb_pin_to_dpt(intel_fb_bo(&fb->base), fb->dpt, &pin_params);
 		if (IS_ERR(vma)) {
 			i915_dpt_unpin_from_ggtt(fb->dpt);
 			plane_state->ggtt_vma = NULL;
diff --git a/drivers/gpu/drm/xe/display/xe_fb_pin.c b/drivers/gpu/drm/xe/display/xe_fb_pin.c
index 44562769fbc9..5d7b30f62930 100644
--- a/drivers/gpu/drm/xe/display/xe_fb_pin.c
+++ b/drivers/gpu/drm/xe/display/xe_fb_pin.c
@@ -139,14 +139,13 @@ write_dpt_remapped(struct xe_bo *bo,
 	}
 }
 
-static int __xe_pin_fb_vma_dpt(const struct intel_framebuffer *fb,
+static int __xe_pin_fb_vma_dpt(struct drm_gem_object *obj,
 			       const struct intel_fb_pin_params *pin_params,
 			       struct i915_vma *vma)
 {
-	struct xe_device *xe = to_xe_device(fb->base.dev);
+	struct xe_device *xe = to_xe_device(obj->dev);
 	struct xe_tile *tile0 = xe_device_get_root_tile(xe);
 	struct xe_ggtt *ggtt = tile0->mem.ggtt;
-	struct drm_gem_object *obj = intel_fb_bo(&fb->base);
 	const struct i915_gtt_view *view = pin_params->view;
 	struct xe_bo *bo = gem_to_xe_bo(obj), *dpt;
 	u32 dpt_size, size = bo->ttm.base.size;
@@ -268,14 +267,13 @@ static void write_ggtt_rotated_node(struct xe_ggtt *ggtt, struct xe_ggtt_node *n
 				   rot_info->plane[i].dst_stride);
 }
 
-static int __xe_pin_fb_vma_ggtt(const struct intel_framebuffer *fb,
+static int __xe_pin_fb_vma_ggtt(struct drm_gem_object *obj,
 				const struct intel_fb_pin_params *pin_params,
 				struct i915_vma *vma)
 {
-	struct drm_gem_object *obj = intel_fb_bo(&fb->base);
 	const struct i915_gtt_view *view = pin_params->view;
 	struct xe_bo *bo = gem_to_xe_bo(obj);
-	struct xe_device *xe = to_xe_device(fb->base.dev);
+	struct xe_device *xe = to_xe_device(obj->dev);
 	struct xe_tile *tile0 = xe_device_get_root_tile(xe);
 	struct xe_ggtt *ggtt = tile0->mem.ggtt;
 	u64 pte, size;
@@ -318,13 +316,11 @@ static int __xe_pin_fb_vma_ggtt(const struct intel_framebuffer *fb,
 	return ret;
 }
 
-static struct i915_vma *__xe_pin_fb_vma(const struct intel_framebuffer *fb, bool is_dpt,
+static struct i915_vma *__xe_pin_fb_vma(struct drm_gem_object *obj, bool is_dpt,
 					const struct intel_fb_pin_params *pin_params)
 {
-	struct drm_device *dev = fb->base.dev;
-	struct xe_device *xe = to_xe_device(dev);
+	struct xe_device *xe = to_xe_device(obj->dev);
 	struct i915_vma *vma = kzalloc(sizeof(*vma), GFP_KERNEL);
-	struct drm_gem_object *obj = intel_fb_bo(&fb->base);
 	struct xe_bo *bo = gem_to_xe_bo(obj);
 	struct xe_validation_ctx ctx;
 	struct drm_exec exec;
@@ -376,9 +372,9 @@ static struct i915_vma *__xe_pin_fb_vma(const struct intel_framebuffer *fb, bool
 
 	vma->bo = bo;
 	if (is_dpt)
-		ret = __xe_pin_fb_vma_dpt(fb, pin_params, vma);
+		ret = __xe_pin_fb_vma_dpt(obj, pin_params, vma);
 	else
-		ret = __xe_pin_fb_vma_ggtt(fb, pin_params, vma);
+		ret = __xe_pin_fb_vma_ggtt(obj, pin_params, vma);
 	if (ret)
 		goto err_unpin;
 
@@ -412,14 +408,14 @@ static void __xe_unpin_fb_vma(struct i915_vma *vma)
 }
 
 struct i915_vma *
-intel_fb_pin_to_ggtt(const struct drm_framebuffer *fb,
+intel_fb_pin_to_ggtt(struct drm_gem_object *obj,
 		     const struct intel_fb_pin_params *pin_params,
 		     int *out_fence_id)
 {
 	if (out_fence_id)
 		*out_fence_id = -1;
 
-	return __xe_pin_fb_vma(to_intel_framebuffer(fb), false, pin_params);
+	return __xe_pin_fb_vma(obj, false, pin_params);
 }
 
 void intel_fb_unpin_vma(struct i915_vma *vma, int fence_id)
@@ -469,7 +465,6 @@ int intel_plane_pin_fb(struct intel_plane_state *new_plane_state,
 	struct drm_gem_object *obj = intel_fb_bo(fb);
 	struct xe_bo *bo = gem_to_xe_bo(obj);
 	struct i915_vma *vma;
-	struct intel_framebuffer *intel_fb = to_intel_framebuffer(fb);
 	struct intel_plane *plane = to_intel_plane(new_plane_state->uapi.plane);
 	struct intel_fb_pin_params pin_params = {
 		.view = &new_plane_state->view.gtt,
@@ -483,8 +478,7 @@ int intel_plane_pin_fb(struct intel_plane_state *new_plane_state,
 	/* We reject creating !SCANOUT fb's, so this is weird.. */
 	drm_WARN_ON(bo->ttm.base.dev, !(bo->flags & XE_BO_FLAG_FORCE_WC));
 
-	vma = __xe_pin_fb_vma(intel_fb, intel_fb_uses_dpt(&intel_fb->base),
-			      &pin_params);
+	vma = __xe_pin_fb_vma(obj, intel_fb_uses_dpt(fb), &pin_params);
 
 	if (IS_ERR(vma))
 		return PTR_ERR(vma);
diff --git a/drivers/gpu/drm/xe/display/xe_initial_plane.c b/drivers/gpu/drm/xe/display/xe_initial_plane.c
index 4f0ad4692ed6..8e3c0c4b81fe 100644
--- a/drivers/gpu/drm/xe/display/xe_initial_plane.c
+++ b/drivers/gpu/drm/xe/display/xe_initial_plane.c
@@ -138,7 +138,7 @@ xe_initial_plane_setup(struct drm_plane_state *_plane_state,
 		.view = &plane_state->view.gtt,
 	};
 
-	vma = intel_fb_pin_to_ggtt(fb, &pin_params, NULL);
+	vma = intel_fb_pin_to_ggtt(intel_fb_bo(fb), &pin_params, NULL);
 	if (IS_ERR(vma))
 		return PTR_ERR(vma);
 
-- 
2.52.0


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

* ✓ i915.CI.BAT: success for drm/i915: Eliminate FB usage from low level pinning code
  2026-04-16 17:44 [PATCH 00/11] drm/i915: Eliminate FB usage from low level pinning code Ville Syrjala
                   ` (10 preceding siblings ...)
  2026-04-16 17:44 ` [PATCH 11/11] drm/i915: Don't pass the framebuffer to low level pinning functions Ville Syrjala
@ 2026-04-16 19:29 ` Patchwork
  2026-04-21 11:15 ` ✓ i915.CI.BAT: success for drm/i915: Eliminate FB usage from low level pinning code (rev2) Patchwork
  2026-04-21 13:56 ` ✓ i915.CI.Full: " Patchwork
  13 siblings, 0 replies; 28+ messages in thread
From: Patchwork @ 2026-04-16 19:29 UTC (permalink / raw)
  To: Ville Syrjala; +Cc: intel-gfx

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

== Series Details ==

Series: drm/i915: Eliminate FB usage from low level pinning code
URL   : https://patchwork.freedesktop.org/series/165015/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_18344 -> Patchwork_165015v1
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

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

Participating hosts (42 -> 39)
------------------------------

  Missing    (3): bat-dg2-13 fi-snb-2520m bat-adls-6 

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

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

### IGT changes ###

#### Issues hit ####

  * igt@i915_selftest@live@workarounds:
    - bat-arls-6:         [PASS][1] -> [DMESG-FAIL][2] ([i915#12061]) +1 other test dmesg-fail
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18344/bat-arls-6/igt@i915_selftest@live@workarounds.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v1/bat-arls-6/igt@i915_selftest@live@workarounds.html

  
#### Possible fixes ####

  * igt@i915_selftest@live@workarounds:
    - bat-mtlp-9:         [DMESG-FAIL][3] ([i915#12061]) -> [PASS][4] +1 other test pass
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18344/bat-mtlp-9/igt@i915_selftest@live@workarounds.html
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v1/bat-mtlp-9/igt@i915_selftest@live@workarounds.html

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


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

  * Linux: CI_DRM_18344 -> Patchwork_165015v1

  CI-20190529: 20190529
  CI_DRM_18344: 9ac7dca8d82a4e6d9806ac6c991f0777338833bb @ git://anongit.freedesktop.org/gfx-ci/linux
  IGT_8862: 9b95600c4ae2cb683a8a19ad2a7c006263811a8f @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  Patchwork_165015v1: 9ac7dca8d82a4e6d9806ac6c991f0777338833bb @ git://anongit.freedesktop.org/gfx-ci/linux

== Logs ==

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

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

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

* Re: [PATCH 04/11] drm/i915: Introduce pin_params.needs_cpu_lmem_access
  2026-04-16 17:44 ` [PATCH 04/11] drm/i915: Introduce pin_params.needs_cpu_lmem_access Ville Syrjala
@ 2026-04-17  9:39   ` Jani Nikula
  2026-04-17 11:33     ` Ville Syrjälä
  0 siblings, 1 reply; 28+ messages in thread
From: Jani Nikula @ 2026-04-17  9:39 UTC (permalink / raw)
  To: Ville Syrjala, intel-gfx; +Cc: intel-xe

On Thu, 16 Apr 2026, Ville Syrjala <ville.syrjala@linux.intel.com> wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> Add a new flag pin_params.neeeds_cpu_lmem_access so that the
> low level pinning code doesn't need to peek into the display
> driver's framebuffer structure.
>
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> ---
>  drivers/gpu/drm/i915/display/intel_fb_pin.h | 1 +
>  drivers/gpu/drm/i915/i915_fb_pin.c          | 4 +++-
>  drivers/gpu/drm/xe/display/xe_fb_pin.c      | 3 ++-
>  3 files changed, 6 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_fb_pin.h b/drivers/gpu/drm/i915/display/intel_fb_pin.h
> index e6271437459d..bcf5a1f46092 100644
> --- a/drivers/gpu/drm/i915/display/intel_fb_pin.h
> +++ b/drivers/gpu/drm/i915/display/intel_fb_pin.h
> @@ -19,6 +19,7 @@ struct intel_fb_pin_params {
>  	unsigned int alignment;
>  	unsigned int phys_alignment;
>  	unsigned int vtd_guard;
> +	bool needs_cpu_lmem_access;
>  };
>  
>  struct i915_vma *
> diff --git a/drivers/gpu/drm/i915/i915_fb_pin.c b/drivers/gpu/drm/i915/i915_fb_pin.c
> index 780be25ad43b..96ffc4b0d809 100644
> --- a/drivers/gpu/drm/i915/i915_fb_pin.c
> +++ b/drivers/gpu/drm/i915/i915_fb_pin.c
> @@ -61,7 +61,7 @@ intel_fb_pin_to_dpt(const struct drm_framebuffer *fb,
>  			 * ensure it is always in the mappable part of lmem, if this is
>  			 * a small-bar device.
>  			 */
> -			if (intel_fb_needs_cpu_access(fb))
> +			if (pin_params->needs_cpu_lmem_access)
>  				flags &= ~I915_BO_ALLOC_GPU_ONLY;
>  			ret = __i915_gem_object_migrate(obj, &ww, INTEL_REGION_LMEM_0,
>  							flags);
> @@ -275,6 +275,7 @@ int intel_plane_pin_fb(struct intel_plane_state *plane_state,
>  			.alignment = intel_plane_fb_min_alignment(plane_state),
>  			.phys_alignment = intel_plane_fb_min_phys_alignment(plane_state),
>  			.vtd_guard = intel_plane_fb_vtd_guard(plane_state),
> +			.needs_cpu_lmem_access = intel_fb_needs_cpu_access(&fb->base),

IIUC this path never uses .needs_cpu_lmem_access, but you initialize it
anyway. What I find confusing is initializing it here apparently
unnecessarily, but then leaving it out on a number of other paths that
don't need it.

Other than that,

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

>  		};
>  		int fence_id = -1;
>  
> @@ -289,6 +290,7 @@ int intel_plane_pin_fb(struct intel_plane_state *plane_state,
>  		struct intel_fb_pin_params pin_params = {
>  			.view = &plane_state->view.gtt,
>  			.alignment = intel_plane_fb_min_alignment(plane_state),
> +			.needs_cpu_lmem_access = intel_fb_needs_cpu_access(&fb->base),
>  		};
>  
>  		vma = i915_dpt_pin_to_ggtt(fb->dpt, pin_params.alignment / 512);
> diff --git a/drivers/gpu/drm/xe/display/xe_fb_pin.c b/drivers/gpu/drm/xe/display/xe_fb_pin.c
> index 205492639dba..a4eb06cfa769 100644
> --- a/drivers/gpu/drm/xe/display/xe_fb_pin.c
> +++ b/drivers/gpu/drm/xe/display/xe_fb_pin.c
> @@ -335,7 +335,7 @@ static struct i915_vma *__xe_pin_fb_vma(const struct intel_framebuffer *fb,
>  
>  	refcount_set(&vma->ref, 1);
>  	if (IS_DGFX(to_xe_device(bo->ttm.base.dev)) &&
> -	    intel_fb_needs_cpu_access(&fb->base) &&
> +	    pin_params->needs_cpu_lmem_access &&
>  	    !(bo->flags & XE_BO_FLAG_NEEDS_CPU_ACCESS)) {
>  		struct xe_vram_region *vram = xe_device_get_root_tile(xe)->mem.vram;
>  
> @@ -474,6 +474,7 @@ int intel_plane_pin_fb(struct intel_plane_state *new_plane_state,
>  	struct intel_fb_pin_params pin_params = {
>  		.view = &new_plane_state->view.gtt,
>  		.alignment = plane->min_alignment(plane, fb, 0),
> +		.needs_cpu_lmem_access = intel_fb_needs_cpu_access(fb),
>  	};
>  
>  	if (reuse_vma(new_plane_state, old_plane_state))

-- 
Jani Nikula, Intel

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

* Re: [PATCH 02/11] drm/i915: Introduce struct intel_fb_pin_params
  2026-04-16 17:44 ` [PATCH 02/11] drm/i915: Introduce struct intel_fb_pin_params Ville Syrjala
@ 2026-04-17  9:40   ` Jani Nikula
  0 siblings, 0 replies; 28+ messages in thread
From: Jani Nikula @ 2026-04-17  9:40 UTC (permalink / raw)
  To: Ville Syrjala, intel-gfx; +Cc: intel-xe

On Thu, 16 Apr 2026, Ville Syrjala <ville.syrjala@linux.intel.com> wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> We need to pass a lot of information between the display driver
> and the core driver to get framebuffers mapped into GGTT/DPT
> correctly. Rather than passing around a swarm of integers and
> boolean as function arguments, let's collect it all into a
> structure (struct intel_fb_pin_params).
>
> Start by moving the gtt view, alignment, phys_alignment,
> and vtd_guard there. Going forward additional things need
> to added as well (mainly various boolean flags).

Neat.

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

>
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> ---
>  drivers/gpu/drm/i915/display/intel_fb_pin.h   | 12 +++--
>  drivers/gpu/drm/i915/display/intel_fbdev.c    | 13 +++--
>  drivers/gpu/drm/i915/i915_fb_pin.c            | 54 ++++++++++---------
>  drivers/gpu/drm/xe/display/xe_fb_pin.c        | 39 +++++++-------
>  drivers/gpu/drm/xe/display/xe_initial_plane.c |  6 ++-
>  5 files changed, 69 insertions(+), 55 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_fb_pin.h b/drivers/gpu/drm/i915/display/intel_fb_pin.h
> index 2eca42b74c4a..e6271437459d 100644
> --- a/drivers/gpu/drm/i915/display/intel_fb_pin.h
> +++ b/drivers/gpu/drm/i915/display/intel_fb_pin.h
> @@ -14,12 +14,16 @@ struct intel_plane_state;
>  struct i915_gtt_view;
>  struct iosys_map;
>  
> +struct intel_fb_pin_params {
> +	const struct i915_gtt_view *view;
> +	unsigned int alignment;
> +	unsigned int phys_alignment;
> +	unsigned int vtd_guard;
> +};
> +
>  struct i915_vma *
>  intel_fb_pin_to_ggtt(const struct drm_framebuffer *fb,
> -		     const struct i915_gtt_view *view,
> -		     unsigned int alignment,
> -		     unsigned int phys_alignment,
> -		     unsigned int vtd_guard,
> +		     const struct intel_fb_pin_params *pin_params,
>  		     int *out_fence_id);
>  
>  void intel_fb_unpin_vma(struct i915_vma *vma, int fence_id);
> diff --git a/drivers/gpu/drm/i915/display/intel_fbdev.c b/drivers/gpu/drm/i915/display/intel_fbdev.c
> index 1e22b3fd79ba..136fa827c8f0 100644
> --- a/drivers/gpu/drm/i915/display/intel_fbdev.c
> +++ b/drivers/gpu/drm/i915/display/intel_fbdev.c
> @@ -264,6 +264,7 @@ int intel_fbdev_driver_fbdev_probe(struct drm_fb_helper *helper,
>  {
>  	struct intel_display *display = to_intel_display(helper->dev);
>  	struct intel_fbdev *ifbdev = to_intel_fbdev(helper);
> +	struct intel_fb_pin_params pin_params = {};
>  	struct intel_framebuffer *fb = ifbdev->fb;
>  	struct fb_info *info = helper->info;
>  	struct ref_tracker *wakeref;
> @@ -308,11 +309,13 @@ int intel_fbdev_driver_fbdev_probe(struct drm_fb_helper *helper,
>  	 * This also validates that any existing fb inherited from the
>  	 * BIOS is suitable for own access.
>  	 */
> -	vma = intel_fb_pin_to_ggtt(&fb->base, &fb->normal_view.gtt,
> -				   fb->min_alignment, 0,
> -				   intel_fb_view_vtd_guard(&fb->base, &fb->normal_view,
> -							   DRM_MODE_ROTATE_0),
> -				   NULL);
> +	pin_params.view = &fb->normal_view.gtt;
> +	pin_params.alignment = fb->min_alignment;
> +	pin_params.vtd_guard = intel_fb_view_vtd_guard(&fb->base,
> +						       &fb->normal_view,
> +						       DRM_MODE_ROTATE_0);
> +
> +	vma = intel_fb_pin_to_ggtt(&fb->base, &pin_params, NULL);
>  	if (IS_ERR(vma)) {
>  		ret = PTR_ERR(vma);
>  		goto out_unlock;
> diff --git a/drivers/gpu/drm/i915/i915_fb_pin.c b/drivers/gpu/drm/i915/i915_fb_pin.c
> index 85649bae25fb..4fe6b9859b3f 100644
> --- a/drivers/gpu/drm/i915/i915_fb_pin.c
> +++ b/drivers/gpu/drm/i915/i915_fb_pin.c
> @@ -24,9 +24,8 @@
>  
>  static struct i915_vma *
>  intel_fb_pin_to_dpt(const struct drm_framebuffer *fb,
> -		    const struct i915_gtt_view *view,
> -		    unsigned int alignment,
> -		    struct intel_dpt *dpt)
> +		    struct intel_dpt *dpt,
> +		    const struct intel_fb_pin_params *pin_params)
>  {
>  	struct drm_i915_private *i915 = to_i915(fb->dev);
>  	struct drm_gem_object *_obj = intel_fb_bo(fb);
> @@ -74,19 +73,20 @@ intel_fb_pin_to_dpt(const struct drm_framebuffer *fb,
>  		if (ret)
>  			continue;
>  
> -		vma = i915_vma_instance(obj, vm, view);
> +		vma = i915_vma_instance(obj, vm, pin_params->view);
>  		if (IS_ERR(vma)) {
>  			ret = PTR_ERR(vma);
>  			continue;
>  		}
>  
> -		if (i915_vma_misplaced(vma, 0, alignment, 0)) {
> +		if (i915_vma_misplaced(vma, 0, pin_params->alignment, 0)) {
>  			ret = i915_vma_unbind(vma);
>  			if (ret)
>  				continue;
>  		}
>  
> -		ret = i915_vma_pin_ww(vma, &ww, 0, alignment, PIN_GLOBAL);
> +		ret = i915_vma_pin_ww(vma, &ww, 0, pin_params->alignment,
> +				      PIN_GLOBAL);
>  		if (ret)
>  			continue;
>  	}
> @@ -95,7 +95,8 @@ intel_fb_pin_to_dpt(const struct drm_framebuffer *fb,
>  		goto err;
>  	}
>  
> -	vma->display_alignment = max(vma->display_alignment, alignment);
> +	vma->display_alignment = max(vma->display_alignment,
> +				     pin_params->alignment);
>  
>  	i915_gem_object_flush_if_display(obj);
>  
> @@ -108,10 +109,7 @@ intel_fb_pin_to_dpt(const struct drm_framebuffer *fb,
>  
>  struct i915_vma *
>  intel_fb_pin_to_ggtt(const struct drm_framebuffer *fb,
> -		     const struct i915_gtt_view *view,
> -		     unsigned int alignment,
> -		     unsigned int phys_alignment,
> -		     unsigned int vtd_guard,
> +		     const struct intel_fb_pin_params *pin_params,
>  		     int *out_fence_id)
>  {
>  	struct intel_display *display = to_intel_display(fb->dev);
> @@ -127,7 +125,8 @@ intel_fb_pin_to_ggtt(const struct drm_framebuffer *fb,
>  	if (drm_WARN_ON(&i915->drm, !i915_gem_object_is_framebuffer(obj)))
>  		return ERR_PTR(-EINVAL);
>  
> -	if (drm_WARN_ON(&i915->drm, alignment && !is_power_of_2(alignment)))
> +	if (drm_WARN_ON(&i915->drm, pin_params->alignment &&
> +			!is_power_of_2(pin_params->alignment)))
>  		return ERR_PTR(-EINVAL);
>  
>  	/*
> @@ -156,8 +155,8 @@ intel_fb_pin_to_ggtt(const struct drm_framebuffer *fb,
>  	i915_gem_ww_ctx_init(&ww, true);
>  retry:
>  	ret = i915_gem_object_lock(obj, &ww);
> -	if (!ret && phys_alignment)
> -		ret = i915_gem_object_attach_phys(obj, phys_alignment);
> +	if (!ret && pin_params->phys_alignment)
> +		ret = i915_gem_object_attach_phys(obj, pin_params->phys_alignment);
>  	else if (!ret && HAS_LMEM(i915))
>  		ret = i915_gem_object_migrate(obj, &ww, INTEL_REGION_LMEM_0);
>  	if (!ret)
> @@ -165,8 +164,10 @@ intel_fb_pin_to_ggtt(const struct drm_framebuffer *fb,
>  	if (ret)
>  		goto err;
>  
> -	vma = i915_gem_object_pin_to_display_plane(obj, &ww, alignment,
> -						   vtd_guard, view, pinctl);
> +	vma = i915_gem_object_pin_to_display_plane(obj, &ww,
> +						   pin_params->alignment,
> +						   pin_params->vtd_guard,
> +						   pin_params->view, pinctl);
>  	if (IS_ERR(vma)) {
>  		ret = PTR_ERR(vma);
>  		goto err_unpin;
> @@ -269,12 +270,15 @@ int intel_plane_pin_fb(struct intel_plane_state *plane_state,
>  	struct i915_vma *vma;
>  
>  	if (!intel_fb_uses_dpt(&fb->base)) {
> +		struct intel_fb_pin_params pin_params = {
> +			.view = &plane_state->view.gtt,
> +			.alignment = intel_plane_fb_min_alignment(plane_state),
> +			.phys_alignment = intel_plane_fb_min_phys_alignment(plane_state),
> +			.vtd_guard = intel_plane_fb_vtd_guard(plane_state),
> +		};
>  		int fence_id = -1;
>  
> -		vma = intel_fb_pin_to_ggtt(&fb->base, &plane_state->view.gtt,
> -					   intel_plane_fb_min_alignment(plane_state),
> -					   intel_plane_fb_min_phys_alignment(plane_state),
> -					   intel_plane_fb_vtd_guard(plane_state),
> +		vma = intel_fb_pin_to_ggtt(&fb->base, &pin_params,
>  					   intel_plane_uses_fence(plane_state) ? &fence_id : NULL);
>  		if (IS_ERR(vma))
>  			return PTR_ERR(vma);
> @@ -282,16 +286,18 @@ int intel_plane_pin_fb(struct intel_plane_state *plane_state,
>  		plane_state->ggtt_vma = vma;
>  		plane_state->fence_id = fence_id;
>  	} else {
> -		unsigned int alignment = intel_plane_fb_min_alignment(plane_state);
> +		struct intel_fb_pin_params pin_params = {
> +			.view = &plane_state->view.gtt,
> +			.alignment = intel_plane_fb_min_alignment(plane_state),
> +		};
>  
> -		vma = i915_dpt_pin_to_ggtt(fb->dpt, alignment / 512);
> +		vma = i915_dpt_pin_to_ggtt(fb->dpt, pin_params.alignment / 512);
>  		if (IS_ERR(vma))
>  			return PTR_ERR(vma);
>  
>  		plane_state->ggtt_vma = vma;
>  
> -		vma = intel_fb_pin_to_dpt(&fb->base, &plane_state->view.gtt,
> -					  alignment, fb->dpt);
> +		vma = intel_fb_pin_to_dpt(&fb->base, fb->dpt, &pin_params);
>  		if (IS_ERR(vma)) {
>  			i915_dpt_unpin_from_ggtt(fb->dpt);
>  			plane_state->ggtt_vma = NULL;
> diff --git a/drivers/gpu/drm/xe/display/xe_fb_pin.c b/drivers/gpu/drm/xe/display/xe_fb_pin.c
> index 91e5c1052589..58cd527e1fde 100644
> --- a/drivers/gpu/drm/xe/display/xe_fb_pin.c
> +++ b/drivers/gpu/drm/xe/display/xe_fb_pin.c
> @@ -140,14 +140,14 @@ write_dpt_remapped(struct xe_bo *bo,
>  }
>  
>  static int __xe_pin_fb_vma_dpt(const struct intel_framebuffer *fb,
> -			       const struct i915_gtt_view *view,
> -			       struct i915_vma *vma,
> -			       unsigned int alignment)
> +			       const struct intel_fb_pin_params *pin_params,
> +			       struct i915_vma *vma)
>  {
>  	struct xe_device *xe = to_xe_device(fb->base.dev);
>  	struct xe_tile *tile0 = xe_device_get_root_tile(xe);
>  	struct xe_ggtt *ggtt = tile0->mem.ggtt;
>  	struct drm_gem_object *obj = intel_fb_bo(&fb->base);
> +	const struct i915_gtt_view *view = pin_params->view;
>  	struct xe_bo *bo = gem_to_xe_bo(obj), *dpt;
>  	u32 dpt_size, size = bo->ttm.base.size;
>  
> @@ -168,7 +168,7 @@ static int __xe_pin_fb_vma_dpt(const struct intel_framebuffer *fb,
>  						   XE_BO_FLAG_VRAM0 |
>  						   XE_BO_FLAG_GGTT |
>  						   XE_BO_FLAG_PAGETABLE,
> -						   alignment, false);
> +						   pin_params->alignment, false);
>  	else
>  		dpt = xe_bo_create_pin_map_at_novm(xe, tile0,
>  						   dpt_size,  ~0ull,
> @@ -176,7 +176,7 @@ static int __xe_pin_fb_vma_dpt(const struct intel_framebuffer *fb,
>  						   XE_BO_FLAG_STOLEN |
>  						   XE_BO_FLAG_GGTT |
>  						   XE_BO_FLAG_PAGETABLE,
> -						   alignment, false);
> +						   pin_params->alignment, false);
>  	if (IS_ERR(dpt))
>  		dpt = xe_bo_create_pin_map_at_novm(xe, tile0,
>  						   dpt_size,  ~0ull,
> @@ -185,7 +185,7 @@ static int __xe_pin_fb_vma_dpt(const struct intel_framebuffer *fb,
>  						   XE_BO_FLAG_GGTT |
>  						   XE_BO_FLAG_PAGETABLE |
>  						   XE_BO_FLAG_FORCE_WC,
> -						   alignment, false);
> +						   pin_params->alignment, false);
>  	if (IS_ERR(dpt))
>  		return PTR_ERR(dpt);
>  
> @@ -269,11 +269,11 @@ static void write_ggtt_rotated_node(struct xe_ggtt *ggtt, struct xe_ggtt_node *n
>  }
>  
>  static int __xe_pin_fb_vma_ggtt(const struct intel_framebuffer *fb,
> -				const struct i915_gtt_view *view,
> -				struct i915_vma *vma,
> -				unsigned int alignment)
> +				const struct intel_fb_pin_params *pin_params,
> +				struct i915_vma *vma)
>  {
>  	struct drm_gem_object *obj = intel_fb_bo(&fb->base);
> +	const struct i915_gtt_view *view = pin_params->view;
>  	struct xe_bo *bo = gem_to_xe_bo(obj);
>  	struct xe_device *xe = to_xe_device(fb->base.dev);
>  	struct xe_tile *tile0 = xe_device_get_root_tile(xe);
> @@ -319,8 +319,7 @@ static int __xe_pin_fb_vma_ggtt(const struct intel_framebuffer *fb,
>  }
>  
>  static struct i915_vma *__xe_pin_fb_vma(const struct intel_framebuffer *fb,
> -					const struct i915_gtt_view *view,
> -					unsigned int alignment)
> +					const struct intel_fb_pin_params *pin_params)
>  {
>  	struct drm_device *dev = fb->base.dev;
>  	struct xe_device *xe = to_xe_device(dev);
> @@ -377,9 +376,9 @@ static struct i915_vma *__xe_pin_fb_vma(const struct intel_framebuffer *fb,
>  
>  	vma->bo = bo;
>  	if (intel_fb_uses_dpt(&fb->base))
> -		ret = __xe_pin_fb_vma_dpt(fb, view, vma, alignment);
> +		ret = __xe_pin_fb_vma_dpt(fb, pin_params, vma);
>  	else
> -		ret = __xe_pin_fb_vma_ggtt(fb, view, vma,  alignment);
> +		ret = __xe_pin_fb_vma_ggtt(fb, pin_params, vma);
>  	if (ret)
>  		goto err_unpin;
>  
> @@ -414,16 +413,13 @@ static void __xe_unpin_fb_vma(struct i915_vma *vma)
>  
>  struct i915_vma *
>  intel_fb_pin_to_ggtt(const struct drm_framebuffer *fb,
> -		     const struct i915_gtt_view *view,
> -		     unsigned int alignment,
> -		     unsigned int phys_alignment,
> -		     unsigned int vtd_guard,
> +		     const struct intel_fb_pin_params *pin_params,
>  		     int *out_fence_id)
>  {
>  	if (out_fence_id)
>  		*out_fence_id = -1;
>  
> -	return __xe_pin_fb_vma(to_intel_framebuffer(fb), view, alignment);
> +	return __xe_pin_fb_vma(to_intel_framebuffer(fb), pin_params);
>  }
>  
>  void intel_fb_unpin_vma(struct i915_vma *vma, int fence_id)
> @@ -475,7 +471,10 @@ int intel_plane_pin_fb(struct intel_plane_state *new_plane_state,
>  	struct i915_vma *vma;
>  	struct intel_framebuffer *intel_fb = to_intel_framebuffer(fb);
>  	struct intel_plane *plane = to_intel_plane(new_plane_state->uapi.plane);
> -	unsigned int alignment = plane->min_alignment(plane, fb, 0);
> +	struct intel_fb_pin_params pin_params = {
> +		.view = &new_plane_state->view.gtt,
> +		.alignment = plane->min_alignment(plane, fb, 0),
> +	};
>  
>  	if (reuse_vma(new_plane_state, old_plane_state))
>  		return 0;
> @@ -483,7 +482,7 @@ int intel_plane_pin_fb(struct intel_plane_state *new_plane_state,
>  	/* We reject creating !SCANOUT fb's, so this is weird.. */
>  	drm_WARN_ON(bo->ttm.base.dev, !(bo->flags & XE_BO_FLAG_FORCE_WC));
>  
> -	vma = __xe_pin_fb_vma(intel_fb, &new_plane_state->view.gtt, alignment);
> +	vma = __xe_pin_fb_vma(intel_fb, &pin_params);
>  
>  	if (IS_ERR(vma))
>  		return PTR_ERR(vma);
> diff --git a/drivers/gpu/drm/xe/display/xe_initial_plane.c b/drivers/gpu/drm/xe/display/xe_initial_plane.c
> index 381d68c58463..4f0ad4692ed6 100644
> --- a/drivers/gpu/drm/xe/display/xe_initial_plane.c
> +++ b/drivers/gpu/drm/xe/display/xe_initial_plane.c
> @@ -134,9 +134,11 @@ xe_initial_plane_setup(struct drm_plane_state *_plane_state,
>  {
>  	struct intel_plane_state *plane_state = to_intel_plane_state(_plane_state);
>  	struct i915_vma *vma;
> +	struct intel_fb_pin_params pin_params = {
> +		.view = &plane_state->view.gtt,
> +	};
>  
> -	vma = intel_fb_pin_to_ggtt(fb, &plane_state->view.gtt,
> -				   0, 0, 0, NULL);
> +	vma = intel_fb_pin_to_ggtt(fb, &pin_params, NULL);
>  	if (IS_ERR(vma))
>  		return PTR_ERR(vma);

-- 
Jani Nikula, Intel

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

* Re: [PATCH 03/11] drm/i915: Extract intel_fb_needs_cpu_access()
  2026-04-16 17:44 ` [PATCH 03/11] drm/i915: Extract intel_fb_needs_cpu_access() Ville Syrjala
@ 2026-04-17  9:40   ` Jani Nikula
  0 siblings, 0 replies; 28+ messages in thread
From: Jani Nikula @ 2026-04-17  9:40 UTC (permalink / raw)
  To: Ville Syrjala, intel-gfx; +Cc: intel-xe

On Thu, 16 Apr 2026, Ville Syrjala <ville.syrjala@linux.intel.com> wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> Replace the naked "does the framebuffer have a clear color
> plane?" checks with a more abstract helper that simply tells
> us whether we require CPU access to the framebuffer's memory.
>
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>

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

> ---
>  drivers/gpu/drm/i915/display/intel_fb.c | 5 +++++
>  drivers/gpu/drm/i915/display/intel_fb.h | 1 +
>  drivers/gpu/drm/i915/i915_fb_pin.c      | 2 +-
>  drivers/gpu/drm/xe/display/xe_fb_pin.c  | 2 +-
>  4 files changed, 8 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_fb.c b/drivers/gpu/drm/i915/display/intel_fb.c
> index c4af368deffd..cbeb39ebdb73 100644
> --- a/drivers/gpu/drm/i915/display/intel_fb.c
> +++ b/drivers/gpu/drm/i915/display/intel_fb.c
> @@ -521,6 +521,11 @@ bool intel_fb_needs_64k_phys(u64 modifier)
>  				      INTEL_PLANE_CAP_NEED64K_PHYS);
>  }
>  
> +bool intel_fb_needs_cpu_access(const struct drm_framebuffer *fb)
> +{
> +	return intel_fb_rc_ccs_cc_plane(fb) >= 0;
> +}
> +
>  /**
>   * intel_fb_is_tile4_modifier: Check if a modifier is a tile4 modifier type
>   * @modifier: Modifier to check
> diff --git a/drivers/gpu/drm/i915/display/intel_fb.h b/drivers/gpu/drm/i915/display/intel_fb.h
> index fc2c4d59bf06..0a027e2595b2 100644
> --- a/drivers/gpu/drm/i915/display/intel_fb.h
> +++ b/drivers/gpu/drm/i915/display/intel_fb.h
> @@ -38,6 +38,7 @@ bool intel_fb_is_rc_ccs_cc_modifier(u64 modifier);
>  bool intel_fb_is_mc_ccs_modifier(u64 modifier);
>  bool intel_fb_needs_64k_phys(u64 modifier);
>  bool intel_fb_is_tile4_modifier(u64 modifier);
> +bool intel_fb_needs_cpu_access(const struct drm_framebuffer *fb);
>  
>  bool intel_fb_is_ccs_aux_plane(const struct drm_framebuffer *fb, int color_plane);
>  int intel_fb_rc_ccs_cc_plane(const struct drm_framebuffer *fb);
> diff --git a/drivers/gpu/drm/i915/i915_fb_pin.c b/drivers/gpu/drm/i915/i915_fb_pin.c
> index 4fe6b9859b3f..780be25ad43b 100644
> --- a/drivers/gpu/drm/i915/i915_fb_pin.c
> +++ b/drivers/gpu/drm/i915/i915_fb_pin.c
> @@ -61,7 +61,7 @@ intel_fb_pin_to_dpt(const struct drm_framebuffer *fb,
>  			 * ensure it is always in the mappable part of lmem, if this is
>  			 * a small-bar device.
>  			 */
> -			if (intel_fb_rc_ccs_cc_plane(fb) >= 0)
> +			if (intel_fb_needs_cpu_access(fb))
>  				flags &= ~I915_BO_ALLOC_GPU_ONLY;
>  			ret = __i915_gem_object_migrate(obj, &ww, INTEL_REGION_LMEM_0,
>  							flags);
> diff --git a/drivers/gpu/drm/xe/display/xe_fb_pin.c b/drivers/gpu/drm/xe/display/xe_fb_pin.c
> index 58cd527e1fde..205492639dba 100644
> --- a/drivers/gpu/drm/xe/display/xe_fb_pin.c
> +++ b/drivers/gpu/drm/xe/display/xe_fb_pin.c
> @@ -335,7 +335,7 @@ static struct i915_vma *__xe_pin_fb_vma(const struct intel_framebuffer *fb,
>  
>  	refcount_set(&vma->ref, 1);
>  	if (IS_DGFX(to_xe_device(bo->ttm.base.dev)) &&
> -	    intel_fb_rc_ccs_cc_plane(&fb->base) >= 0 &&
> +	    intel_fb_needs_cpu_access(&fb->base) &&
>  	    !(bo->flags & XE_BO_FLAG_NEEDS_CPU_ACCESS)) {
>  		struct xe_vram_region *vram = xe_device_get_root_tile(xe)->mem.vram;

-- 
Jani Nikula, Intel

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

* Re: [PATCH 05/11] drm/i915: Extract intel_plane_needs_low_address()
  2026-04-16 17:44 ` [PATCH 05/11] drm/i915: Extract intel_plane_needs_low_address() Ville Syrjala
@ 2026-04-17  9:43   ` Jani Nikula
  0 siblings, 0 replies; 28+ messages in thread
From: Jani Nikula @ 2026-04-17  9:43 UTC (permalink / raw)
  To: Ville Syrjala, intel-gfx; +Cc: intel-xe

On Thu, 16 Apr 2026, Ville Syrjala <ville.syrjala@linux.intel.com> wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> Extract the naked "gmch? -> need a low ggtt address" check into
> a more descriptive helper (intel_plane_needs_low_address()).
> The goal being to eliminate all display specific stuff from the
> low level pinning code.
>
> The actual implementation still abuses PIN_MAPPABLE to achieve
> this goal. I'm not entire convinced that this whole thing even
> needs to exist, and the original issue wasn't just caused by
> some other bug. But no time to dig into it right now, so let's
> keep going.
>
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>

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

> ---
>  drivers/gpu/drm/i915/display/intel_plane.c | 13 +++++++++++++
>  drivers/gpu/drm/i915/display/intel_plane.h |  2 ++
>  drivers/gpu/drm/i915/i915_fb_pin.c         | 11 ++---------
>  3 files changed, 17 insertions(+), 9 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_plane.c b/drivers/gpu/drm/i915/display/intel_plane.c
> index f15dd9e91243..f41f4c2ac320 100644
> --- a/drivers/gpu/drm/i915/display/intel_plane.c
> +++ b/drivers/gpu/drm/i915/display/intel_plane.c
> @@ -171,6 +171,19 @@ intel_plane_destroy_state(struct drm_plane *plane,
>  	kfree(plane_state);
>  }
>  
> +bool intel_plane_needs_low_address(struct intel_display *display)
> +{
> +	/*
> +	 * Valleyview is definitely limited to scanning out the first
> +	 * 512MiB. Lets presume this behaviour was inherited from the
> +	 * g4x display engine and that all earlier gen are similarly
> +	 * limited. Testing suggests that it is a little more
> +	 * complicated than this. For example, Cherryview appears quite
> +	 * happy to scanout from anywhere within its global aperture.
> +	 */
> +	return HAS_GMCH(display);
> +}
> +
>  bool intel_plane_needs_physical(struct intel_plane *plane)
>  {
>  	struct intel_display *display = to_intel_display(plane);
> diff --git a/drivers/gpu/drm/i915/display/intel_plane.h b/drivers/gpu/drm/i915/display/intel_plane.h
> index 5a8f2f3baab5..7fa7fbbb58dc 100644
> --- a/drivers/gpu/drm/i915/display/intel_plane.h
> +++ b/drivers/gpu/drm/i915/display/intel_plane.h
> @@ -15,6 +15,7 @@ struct drm_rect;
>  struct intel_atomic_state;
>  struct intel_crtc;
>  struct intel_crtc_state;
> +struct intel_display;
>  struct intel_dsb;
>  struct intel_plane;
>  struct intel_plane_state;
> @@ -79,6 +80,7 @@ int intel_plane_check_src_coordinates(struct intel_plane_state *plane_state);
>  void intel_plane_set_invisible(struct intel_crtc_state *crtc_state,
>  			       struct intel_plane_state *plane_state);
>  void intel_plane_helper_add(struct intel_plane *plane);
> +bool intel_plane_needs_low_address(struct intel_display *display);
>  bool intel_plane_needs_physical(struct intel_plane *plane);
>  void intel_plane_init_cursor_vblank_work(struct intel_plane_state *old_plane_state,
>  					 struct intel_plane_state *new_plane_state);
> diff --git a/drivers/gpu/drm/i915/i915_fb_pin.c b/drivers/gpu/drm/i915/i915_fb_pin.c
> index 96ffc4b0d809..a3e5107c12f0 100644
> --- a/drivers/gpu/drm/i915/i915_fb_pin.c
> +++ b/drivers/gpu/drm/i915/i915_fb_pin.c
> @@ -140,16 +140,9 @@ intel_fb_pin_to_ggtt(const struct drm_framebuffer *fb,
>  
>  	atomic_inc(&i915->pending_fb_pin);
>  
> -	/*
> -	 * Valleyview is definitely limited to scanning out the first
> -	 * 512MiB. Lets presume this behaviour was inherited from the
> -	 * g4x display engine and that all earlier gen are similarly
> -	 * limited. Testing suggests that it is a little more
> -	 * complicated than this. For example, Cherryview appears quite
> -	 * happy to scanout from anywhere within its global aperture.
> -	 */
>  	pinctl = 0;
> -	if (HAS_GMCH(display))
> +	/* PIN_MAPPABLE limits the address to GMADR size */
> +	if (intel_plane_needs_low_address(display))
>  		pinctl |= PIN_MAPPABLE;
>  
>  	i915_gem_ww_ctx_init(&ww, true);

-- 
Jani Nikula, Intel

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

* Re: [PATCH 06/11] drm/i915: Introduce pin_params.needs_low_address
  2026-04-16 17:44 ` [PATCH 06/11] drm/i915: Introduce pin_params.needs_low_address Ville Syrjala
@ 2026-04-17  9:48   ` Jani Nikula
  0 siblings, 0 replies; 28+ messages in thread
From: Jani Nikula @ 2026-04-17  9:48 UTC (permalink / raw)
  To: Ville Syrjala, intel-gfx; +Cc: intel-xe

On Thu, 16 Apr 2026, Ville Syrjala <ville.syrjala@linux.intel.com> wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> Add a new flag pin_params.needs_low_address to inform the pinning
> code that the display needs a low ggtt address.
>
> The goal is to eliminate all display specific stuff from
> the low level pinning code (the direct intel_plane_needs_low_addres())
> call in this case).

So this one initializes .needs_low_address only where needed. I guess my
main concern is that the calling code does need to know the low-level
implementation detail of when you do need to initialize it.

Regardless, I think overall this is going in the right direction.

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

>
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> ---
>  drivers/gpu/drm/i915/display/intel_fb_pin.h | 1 +
>  drivers/gpu/drm/i915/display/intel_fbdev.c  | 2 ++
>  drivers/gpu/drm/i915/i915_fb_pin.c          | 4 +++-
>  3 files changed, 6 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_fb_pin.h b/drivers/gpu/drm/i915/display/intel_fb_pin.h
> index bcf5a1f46092..cf54a96569de 100644
> --- a/drivers/gpu/drm/i915/display/intel_fb_pin.h
> +++ b/drivers/gpu/drm/i915/display/intel_fb_pin.h
> @@ -20,6 +20,7 @@ struct intel_fb_pin_params {
>  	unsigned int phys_alignment;
>  	unsigned int vtd_guard;
>  	bool needs_cpu_lmem_access;
> +	bool needs_low_address;
>  };
>  
>  struct i915_vma *
> diff --git a/drivers/gpu/drm/i915/display/intel_fbdev.c b/drivers/gpu/drm/i915/display/intel_fbdev.c
> index 136fa827c8f0..4c3e54acde81 100644
> --- a/drivers/gpu/drm/i915/display/intel_fbdev.c
> +++ b/drivers/gpu/drm/i915/display/intel_fbdev.c
> @@ -55,6 +55,7 @@
>  #include "intel_fb_pin.h"
>  #include "intel_fbdev.h"
>  #include "intel_frontbuffer.h"
> +#include "intel_plane.h"
>  
>  struct intel_fbdev {
>  	struct intel_framebuffer *fb;
> @@ -314,6 +315,7 @@ int intel_fbdev_driver_fbdev_probe(struct drm_fb_helper *helper,
>  	pin_params.vtd_guard = intel_fb_view_vtd_guard(&fb->base,
>  						       &fb->normal_view,
>  						       DRM_MODE_ROTATE_0);
> +	pin_params.needs_low_address = intel_plane_needs_low_address(display);
>  
>  	vma = intel_fb_pin_to_ggtt(&fb->base, &pin_params, NULL);
>  	if (IS_ERR(vma)) {
> diff --git a/drivers/gpu/drm/i915/i915_fb_pin.c b/drivers/gpu/drm/i915/i915_fb_pin.c
> index a3e5107c12f0..97e4cdfd2447 100644
> --- a/drivers/gpu/drm/i915/i915_fb_pin.c
> +++ b/drivers/gpu/drm/i915/i915_fb_pin.c
> @@ -142,7 +142,7 @@ intel_fb_pin_to_ggtt(const struct drm_framebuffer *fb,
>  
>  	pinctl = 0;
>  	/* PIN_MAPPABLE limits the address to GMADR size */
> -	if (intel_plane_needs_low_address(display))
> +	if (pin_params->needs_low_address)
>  		pinctl |= PIN_MAPPABLE;
>  
>  	i915_gem_ww_ctx_init(&ww, true);
> @@ -256,6 +256,7 @@ intel_plane_fb_vtd_guard(const struct intel_plane_state *plane_state)
>  int intel_plane_pin_fb(struct intel_plane_state *plane_state,
>  		       const struct intel_plane_state *old_plane_state)
>  {
> +	struct intel_display *display = to_intel_display(plane_state);
>  	struct drm_i915_private *i915 = to_i915(plane_state->uapi.plane->dev);
>  	struct intel_plane *plane = to_intel_plane(plane_state->uapi.plane);
>  	const struct intel_framebuffer *fb =
> @@ -269,6 +270,7 @@ int intel_plane_pin_fb(struct intel_plane_state *plane_state,
>  			.phys_alignment = intel_plane_fb_min_phys_alignment(plane_state),
>  			.vtd_guard = intel_plane_fb_vtd_guard(plane_state),
>  			.needs_cpu_lmem_access = intel_fb_needs_cpu_access(&fb->base),
> +			.needs_low_address = intel_plane_needs_low_address(display),
>  		};
>  		int fence_id = -1;

-- 
Jani Nikula, Intel

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

* Re: [PATCH 07/11] drm/i915: Introduce pin_params.needs_physical
  2026-04-16 17:44 ` [PATCH 07/11] drm/i915: Introduce pin_params.needs_physical Ville Syrjala
@ 2026-04-17  9:50   ` Jani Nikula
  0 siblings, 0 replies; 28+ messages in thread
From: Jani Nikula @ 2026-04-17  9:50 UTC (permalink / raw)
  To: Ville Syrjala, intel-gfx; +Cc: intel-xe

On Thu, 16 Apr 2026, Ville Syrjala <ville.syrjala@linux.intel.com> wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> Add a new flag pin_params.needs_physical to inform the pinning
> code that the display needs a physical address and not GGTT
> address.
>
> This isn't strictly necessary as the current phys_alignment!=0
> check is enough in practice. But theoretically one could have
> needs_physical==true without any alignment requirements. And
> having an explicit flag feels a bit less magical.

Agreed.

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


>
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> ---
>  drivers/gpu/drm/i915/display/intel_fb_pin.h | 1 +
>  drivers/gpu/drm/i915/i915_fb_pin.c          | 3 ++-
>  2 files changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_fb_pin.h b/drivers/gpu/drm/i915/display/intel_fb_pin.h
> index cf54a96569de..3e37e9874f50 100644
> --- a/drivers/gpu/drm/i915/display/intel_fb_pin.h
> +++ b/drivers/gpu/drm/i915/display/intel_fb_pin.h
> @@ -21,6 +21,7 @@ struct intel_fb_pin_params {
>  	unsigned int vtd_guard;
>  	bool needs_cpu_lmem_access;
>  	bool needs_low_address;
> +	bool needs_physical;
>  };
>  
>  struct i915_vma *
> diff --git a/drivers/gpu/drm/i915/i915_fb_pin.c b/drivers/gpu/drm/i915/i915_fb_pin.c
> index 97e4cdfd2447..bfe9a5342e13 100644
> --- a/drivers/gpu/drm/i915/i915_fb_pin.c
> +++ b/drivers/gpu/drm/i915/i915_fb_pin.c
> @@ -148,7 +148,7 @@ intel_fb_pin_to_ggtt(const struct drm_framebuffer *fb,
>  	i915_gem_ww_ctx_init(&ww, true);
>  retry:
>  	ret = i915_gem_object_lock(obj, &ww);
> -	if (!ret && pin_params->phys_alignment)
> +	if (!ret && pin_params->needs_physical)
>  		ret = i915_gem_object_attach_phys(obj, pin_params->phys_alignment);
>  	else if (!ret && HAS_LMEM(i915))
>  		ret = i915_gem_object_migrate(obj, &ww, INTEL_REGION_LMEM_0);
> @@ -271,6 +271,7 @@ int intel_plane_pin_fb(struct intel_plane_state *plane_state,
>  			.vtd_guard = intel_plane_fb_vtd_guard(plane_state),
>  			.needs_cpu_lmem_access = intel_fb_needs_cpu_access(&fb->base),
>  			.needs_low_address = intel_plane_needs_low_address(display),
> +			.needs_physical = intel_plane_needs_physical(plane),
>  		};
>  		int fence_id = -1;

-- 
Jani Nikula, Intel

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

* Re: [PATCH 08/11] drm/i915: Extract intel_plane_needs_fence()
  2026-04-16 17:44 ` [PATCH 08/11] drm/i915: Extract intel_plane_needs_fence() Ville Syrjala
@ 2026-04-17  9:53   ` Jani Nikula
  0 siblings, 0 replies; 28+ messages in thread
From: Jani Nikula @ 2026-04-17  9:53 UTC (permalink / raw)
  To: Ville Syrjala, intel-gfx; +Cc: intel-xe

On Thu, 16 Apr 2026, Ville Syrjala <ville.syrjala@linux.intel.com> wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> Extract the naked DISPLA_VER<4 checks into a descriptive little
> helper (intel_plane_needs_fence()).

*DISPLAY_VER

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

>
> And while at it document the reason why the check is what it is.
>
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> ---
>  drivers/gpu/drm/i915/display/intel_fb.c    | 2 +-
>  drivers/gpu/drm/i915/display/intel_plane.c | 9 +++++++++
>  drivers/gpu/drm/i915/display/intel_plane.h | 1 +
>  drivers/gpu/drm/i915/i915_fb_pin.c         | 2 +-
>  4 files changed, 12 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_fb.c b/drivers/gpu/drm/i915/display/intel_fb.c
> index cbeb39ebdb73..1c0859d5f829 100644
> --- a/drivers/gpu/drm/i915/display/intel_fb.c
> +++ b/drivers/gpu/drm/i915/display/intel_fb.c
> @@ -1287,7 +1287,7 @@ bool intel_plane_uses_fence(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);
>  
> -	return DISPLAY_VER(display) < 4 ||
> +	return intel_plane_needs_fence(display) ||
>  		(plane->fbc && !plane_state->no_fbc_reason &&
>  		 i915_gtt_view_is_normal(&plane_state->view.gtt));
>  }
> diff --git a/drivers/gpu/drm/i915/display/intel_plane.c b/drivers/gpu/drm/i915/display/intel_plane.c
> index f41f4c2ac320..c2b58d3b9c23 100644
> --- a/drivers/gpu/drm/i915/display/intel_plane.c
> +++ b/drivers/gpu/drm/i915/display/intel_plane.c
> @@ -192,6 +192,15 @@ bool intel_plane_needs_physical(struct intel_plane *plane)
>  		DISPLAY_INFO(display)->cursor_needs_physical;
>  }
>  
> +bool intel_plane_needs_fence(struct intel_display *display)
> +{
> +	/*
> +	 * pre-i965 planes use the fence for tiled scanout.
> +	 * i965+ planes have their own tiled scanout control bit.
> +	 */
> +	return DISPLAY_VER(display) < 4;
> +}
> +
>  bool intel_plane_can_async_flip(struct intel_plane *plane,
>  				const struct drm_format_info *info,
>  				u64 modifier)
> diff --git a/drivers/gpu/drm/i915/display/intel_plane.h b/drivers/gpu/drm/i915/display/intel_plane.h
> index 7fa7fbbb58dc..7b5456f56f42 100644
> --- a/drivers/gpu/drm/i915/display/intel_plane.h
> +++ b/drivers/gpu/drm/i915/display/intel_plane.h
> @@ -82,6 +82,7 @@ void intel_plane_set_invisible(struct intel_crtc_state *crtc_state,
>  void intel_plane_helper_add(struct intel_plane *plane);
>  bool intel_plane_needs_low_address(struct intel_display *display);
>  bool intel_plane_needs_physical(struct intel_plane *plane);
> +bool intel_plane_needs_fence(struct intel_display *display);
>  void intel_plane_init_cursor_vblank_work(struct intel_plane_state *old_plane_state,
>  					 struct intel_plane_state *new_plane_state);
>  int intel_plane_add_affected(struct intel_atomic_state *state,
> diff --git a/drivers/gpu/drm/i915/i915_fb_pin.c b/drivers/gpu/drm/i915/i915_fb_pin.c
> index bfe9a5342e13..a8ed888183cb 100644
> --- a/drivers/gpu/drm/i915/i915_fb_pin.c
> +++ b/drivers/gpu/drm/i915/i915_fb_pin.c
> @@ -188,7 +188,7 @@ intel_fb_pin_to_ggtt(const struct drm_framebuffer *fb,
>  		 * mode that matches the user configuration.
>  		 */
>  		ret = i915_vma_pin_fence(vma);
> -		if (ret != 0 && DISPLAY_VER(display) < 4) {
> +		if (ret != 0 && intel_plane_needs_fence(display)) {
>  			i915_vma_unpin(vma);
>  			goto err_unpin;
>  		}

-- 
Jani Nikula, Intel

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

* Re: [PATCH 09/11] drm/i915: Introduce pin_params.needs_fence
  2026-04-16 17:44 ` [PATCH 09/11] drm/i915: Introduce pin_params.needs_fence Ville Syrjala
@ 2026-04-17  9:58   ` Jani Nikula
  2026-04-17 12:25     ` Ville Syrjälä
  0 siblings, 1 reply; 28+ messages in thread
From: Jani Nikula @ 2026-04-17  9:58 UTC (permalink / raw)
  To: Ville Syrjala, intel-gfx; +Cc: intel-xe

On Thu, 16 Apr 2026, Ville Syrjala <ville.syrjala@linux.intel.com> wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> Add a new flag pin_params.needs_fencel to inform the pinning

*needs_fence

> code that the display needs a fence for tiled scanout.
>
> The goal is to eliminate all display specific stuff from
> the low level pinning code.

Again, I find it just a little magical that .needs_fence is only
initialized in certain code paths, with the implementation detail
knowledge where the member is used. E.g. in this case out_fence_id !=
NULL.

Regardless,

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


>
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> ---
>  drivers/gpu/drm/i915/display/intel_fb_pin.h | 1 +
>  drivers/gpu/drm/i915/i915_fb_pin.c          | 4 ++--
>  2 files changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_fb_pin.h b/drivers/gpu/drm/i915/display/intel_fb_pin.h
> index 3e37e9874f50..95f83bf7411f 100644
> --- a/drivers/gpu/drm/i915/display/intel_fb_pin.h
> +++ b/drivers/gpu/drm/i915/display/intel_fb_pin.h
> @@ -22,6 +22,7 @@ struct intel_fb_pin_params {
>  	bool needs_cpu_lmem_access;
>  	bool needs_low_address;
>  	bool needs_physical;
> +	bool needs_fence;
>  };
>  
>  struct i915_vma *
> diff --git a/drivers/gpu/drm/i915/i915_fb_pin.c b/drivers/gpu/drm/i915/i915_fb_pin.c
> index a8ed888183cb..5060ec8c76ca 100644
> --- a/drivers/gpu/drm/i915/i915_fb_pin.c
> +++ b/drivers/gpu/drm/i915/i915_fb_pin.c
> @@ -112,7 +112,6 @@ intel_fb_pin_to_ggtt(const struct drm_framebuffer *fb,
>  		     const struct intel_fb_pin_params *pin_params,
>  		     int *out_fence_id)
>  {
> -	struct intel_display *display = to_intel_display(fb->dev);
>  	struct drm_i915_private *i915 = to_i915(fb->dev);
>  	struct drm_gem_object *_obj = intel_fb_bo(fb);
>  	struct drm_i915_gem_object *obj = to_intel_bo(_obj);
> @@ -188,7 +187,7 @@ intel_fb_pin_to_ggtt(const struct drm_framebuffer *fb,
>  		 * mode that matches the user configuration.
>  		 */
>  		ret = i915_vma_pin_fence(vma);
> -		if (ret != 0 && intel_plane_needs_fence(display)) {
> +		if (ret != 0 && pin_params->needs_fence) {
>  			i915_vma_unpin(vma);
>  			goto err_unpin;
>  		}
> @@ -272,6 +271,7 @@ int intel_plane_pin_fb(struct intel_plane_state *plane_state,
>  			.needs_cpu_lmem_access = intel_fb_needs_cpu_access(&fb->base),
>  			.needs_low_address = intel_plane_needs_low_address(display),
>  			.needs_physical = intel_plane_needs_physical(plane),
> +			.needs_fence = intel_plane_needs_fence(display),
>  		};
>  		int fence_id = -1;

-- 
Jani Nikula, Intel

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

* Re: [PATCH 10/11] drm/xe: Eliminate intel_fb_uses_dpt() call from __xe_pin_fb_vma()
  2026-04-16 17:44 ` [PATCH 10/11] drm/xe: Eliminate intel_fb_uses_dpt() call from __xe_pin_fb_vma() Ville Syrjala
@ 2026-04-17 10:19   ` Jani Nikula
  0 siblings, 0 replies; 28+ messages in thread
From: Jani Nikula @ 2026-04-17 10:19 UTC (permalink / raw)
  To: Ville Syrjala, intel-gfx; +Cc: intel-xe

On Thu, 16 Apr 2026, Ville Syrjala <ville.syrjala@linux.intel.com> wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> Move the intel_fb_uses_dpt() out from __xe_pin_fb_vma() into
> intel_plane_pin_fb() so the we don't any display stuff that deep
> in the pinning code.

Parse error. "so that we don't have"?

> And intel_fb_pin_to_ggtt() can just say "this does not need DPT"
> always since it's specifically about pinning the fb into GGTT.
> The previous logic here was kinda insane with the high level code
> assuming GGTT, and low level code potentially deciding otherwise.
> In practice it should have been fine because intel_fb_pin_to_ggtt()
> only gets used from the intiial_palne code, and there we are
> not supposed to be have a framebuffer that needs DPT.

*initial_plane

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

>
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> ---
>  drivers/gpu/drm/xe/display/xe_fb_pin.c | 9 +++++----
>  1 file changed, 5 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/gpu/drm/xe/display/xe_fb_pin.c b/drivers/gpu/drm/xe/display/xe_fb_pin.c
> index a4eb06cfa769..44562769fbc9 100644
> --- a/drivers/gpu/drm/xe/display/xe_fb_pin.c
> +++ b/drivers/gpu/drm/xe/display/xe_fb_pin.c
> @@ -318,7 +318,7 @@ static int __xe_pin_fb_vma_ggtt(const struct intel_framebuffer *fb,
>  	return ret;
>  }
>  
> -static struct i915_vma *__xe_pin_fb_vma(const struct intel_framebuffer *fb,
> +static struct i915_vma *__xe_pin_fb_vma(const struct intel_framebuffer *fb, bool is_dpt,
>  					const struct intel_fb_pin_params *pin_params)
>  {
>  	struct drm_device *dev = fb->base.dev;
> @@ -375,7 +375,7 @@ static struct i915_vma *__xe_pin_fb_vma(const struct intel_framebuffer *fb,
>  		goto err;
>  
>  	vma->bo = bo;
> -	if (intel_fb_uses_dpt(&fb->base))
> +	if (is_dpt)
>  		ret = __xe_pin_fb_vma_dpt(fb, pin_params, vma);
>  	else
>  		ret = __xe_pin_fb_vma_ggtt(fb, pin_params, vma);
> @@ -419,7 +419,7 @@ intel_fb_pin_to_ggtt(const struct drm_framebuffer *fb,
>  	if (out_fence_id)
>  		*out_fence_id = -1;
>  
> -	return __xe_pin_fb_vma(to_intel_framebuffer(fb), pin_params);
> +	return __xe_pin_fb_vma(to_intel_framebuffer(fb), false, pin_params);
>  }
>  
>  void intel_fb_unpin_vma(struct i915_vma *vma, int fence_id)
> @@ -483,7 +483,8 @@ int intel_plane_pin_fb(struct intel_plane_state *new_plane_state,
>  	/* We reject creating !SCANOUT fb's, so this is weird.. */
>  	drm_WARN_ON(bo->ttm.base.dev, !(bo->flags & XE_BO_FLAG_FORCE_WC));
>  
> -	vma = __xe_pin_fb_vma(intel_fb, &pin_params);
> +	vma = __xe_pin_fb_vma(intel_fb, intel_fb_uses_dpt(&intel_fb->base),
> +			      &pin_params);
>  
>  	if (IS_ERR(vma))
>  		return PTR_ERR(vma);

-- 
Jani Nikula, Intel

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

* Re: [PATCH 11/11] drm/i915: Don't pass the framebuffer to low level pinning functions
  2026-04-16 17:44 ` [PATCH 11/11] drm/i915: Don't pass the framebuffer to low level pinning functions Ville Syrjala
@ 2026-04-17 10:25   ` Jani Nikula
  0 siblings, 0 replies; 28+ messages in thread
From: Jani Nikula @ 2026-04-17 10:25 UTC (permalink / raw)
  To: Ville Syrjala, intel-gfx; +Cc: intel-xe

On Thu, 16 Apr 2026, Ville Syrjala <ville.syrjala@linux.intel.com> wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> Now that we have the pin_params the low level pinning code no
> longer needs the entire framebuffer structure. The gem object
> alone (along with the pin_params) is enough.

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


> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> ---
>  drivers/gpu/drm/i915/display/intel_fb_pin.h   |  4 +--
>  drivers/gpu/drm/i915/display/intel_fbdev.c    |  6 ++--
>  drivers/gpu/drm/i915/i915_fb_pin.c            | 15 ++++------
>  drivers/gpu/drm/xe/display/xe_fb_pin.c        | 28 ++++++++-----------
>  drivers/gpu/drm/xe/display/xe_initial_plane.c |  2 +-
>  5 files changed, 23 insertions(+), 32 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_fb_pin.h b/drivers/gpu/drm/i915/display/intel_fb_pin.h
> index 95f83bf7411f..5825503c38ea 100644
> --- a/drivers/gpu/drm/i915/display/intel_fb_pin.h
> +++ b/drivers/gpu/drm/i915/display/intel_fb_pin.h
> @@ -8,7 +8,7 @@
>  
>  #include <linux/types.h>
>  
> -struct drm_framebuffer;
> +struct drm_gem_object;
>  struct i915_vma;
>  struct intel_plane_state;
>  struct i915_gtt_view;
> @@ -26,7 +26,7 @@ struct intel_fb_pin_params {
>  };
>  
>  struct i915_vma *
> -intel_fb_pin_to_ggtt(const struct drm_framebuffer *fb,
> +intel_fb_pin_to_ggtt(struct drm_gem_object *obj,
>  		     const struct intel_fb_pin_params *pin_params,
>  		     int *out_fence_id);
>  
> diff --git a/drivers/gpu/drm/i915/display/intel_fbdev.c b/drivers/gpu/drm/i915/display/intel_fbdev.c
> index 4c3e54acde81..9ab0ac49abb7 100644
> --- a/drivers/gpu/drm/i915/display/intel_fbdev.c
> +++ b/drivers/gpu/drm/i915/display/intel_fbdev.c
> @@ -306,6 +306,8 @@ int intel_fbdev_driver_fbdev_probe(struct drm_fb_helper *helper,
>  		sizes->fb_height = fb->base.height;
>  	}
>  
> +	obj = intel_fb_bo(&fb->base);
> +
>  	/* Pin the GGTT vma for our access via info->screen_base.
>  	 * This also validates that any existing fb inherited from the
>  	 * BIOS is suitable for own access.
> @@ -317,7 +319,7 @@ int intel_fbdev_driver_fbdev_probe(struct drm_fb_helper *helper,
>  						       DRM_MODE_ROTATE_0);
>  	pin_params.needs_low_address = intel_plane_needs_low_address(display);
>  
> -	vma = intel_fb_pin_to_ggtt(&fb->base, &pin_params, NULL);
> +	vma = intel_fb_pin_to_ggtt(obj, &pin_params, NULL);
>  	if (IS_ERR(vma)) {
>  		ret = PTR_ERR(vma);
>  		goto out_unlock;
> @@ -328,8 +330,6 @@ int intel_fbdev_driver_fbdev_probe(struct drm_fb_helper *helper,
>  
>  	info->fbops = &intelfb_ops;
>  
> -	obj = intel_fb_bo(&fb->base);
> -
>  	ret = intel_bo_fbdev_fill_info(obj, info, vma);
>  	if (ret)
>  		goto out_unpin;
> diff --git a/drivers/gpu/drm/i915/i915_fb_pin.c b/drivers/gpu/drm/i915/i915_fb_pin.c
> index 5060ec8c76ca..b0e121462ca3 100644
> --- a/drivers/gpu/drm/i915/i915_fb_pin.c
> +++ b/drivers/gpu/drm/i915/i915_fb_pin.c
> @@ -23,12 +23,10 @@
>  #include "i915_vma.h"
>  
>  static struct i915_vma *
> -intel_fb_pin_to_dpt(const struct drm_framebuffer *fb,
> -		    struct intel_dpt *dpt,
> +intel_fb_pin_to_dpt(struct drm_gem_object *_obj, struct intel_dpt *dpt,
>  		    const struct intel_fb_pin_params *pin_params)
>  {
> -	struct drm_i915_private *i915 = to_i915(fb->dev);
> -	struct drm_gem_object *_obj = intel_fb_bo(fb);
> +	struct drm_i915_private *i915 = to_i915(_obj->dev);
>  	struct drm_i915_gem_object *obj = to_intel_bo(_obj);
>  	struct i915_address_space *vm = i915_dpt_to_vm(dpt);
>  	struct i915_gem_ww_ctx ww;
> @@ -108,12 +106,11 @@ intel_fb_pin_to_dpt(const struct drm_framebuffer *fb,
>  }
>  
>  struct i915_vma *
> -intel_fb_pin_to_ggtt(const struct drm_framebuffer *fb,
> +intel_fb_pin_to_ggtt(struct drm_gem_object *_obj,
>  		     const struct intel_fb_pin_params *pin_params,
>  		     int *out_fence_id)
>  {
> -	struct drm_i915_private *i915 = to_i915(fb->dev);
> -	struct drm_gem_object *_obj = intel_fb_bo(fb);
> +	struct drm_i915_private *i915 = to_i915(_obj->dev);
>  	struct drm_i915_gem_object *obj = to_intel_bo(_obj);
>  	intel_wakeref_t wakeref;
>  	struct i915_gem_ww_ctx ww;
> @@ -275,7 +272,7 @@ int intel_plane_pin_fb(struct intel_plane_state *plane_state,
>  		};
>  		int fence_id = -1;
>  
> -		vma = intel_fb_pin_to_ggtt(&fb->base, &pin_params,
> +		vma = intel_fb_pin_to_ggtt(intel_fb_bo(&fb->base), &pin_params,
>  					   intel_plane_uses_fence(plane_state) ? &fence_id : NULL);
>  		if (IS_ERR(vma))
>  			return PTR_ERR(vma);
> @@ -295,7 +292,7 @@ int intel_plane_pin_fb(struct intel_plane_state *plane_state,
>  
>  		plane_state->ggtt_vma = vma;
>  
> -		vma = intel_fb_pin_to_dpt(&fb->base, fb->dpt, &pin_params);
> +		vma = intel_fb_pin_to_dpt(intel_fb_bo(&fb->base), fb->dpt, &pin_params);
>  		if (IS_ERR(vma)) {
>  			i915_dpt_unpin_from_ggtt(fb->dpt);
>  			plane_state->ggtt_vma = NULL;
> diff --git a/drivers/gpu/drm/xe/display/xe_fb_pin.c b/drivers/gpu/drm/xe/display/xe_fb_pin.c
> index 44562769fbc9..5d7b30f62930 100644
> --- a/drivers/gpu/drm/xe/display/xe_fb_pin.c
> +++ b/drivers/gpu/drm/xe/display/xe_fb_pin.c
> @@ -139,14 +139,13 @@ write_dpt_remapped(struct xe_bo *bo,
>  	}
>  }
>  
> -static int __xe_pin_fb_vma_dpt(const struct intel_framebuffer *fb,
> +static int __xe_pin_fb_vma_dpt(struct drm_gem_object *obj,
>  			       const struct intel_fb_pin_params *pin_params,
>  			       struct i915_vma *vma)
>  {
> -	struct xe_device *xe = to_xe_device(fb->base.dev);
> +	struct xe_device *xe = to_xe_device(obj->dev);
>  	struct xe_tile *tile0 = xe_device_get_root_tile(xe);
>  	struct xe_ggtt *ggtt = tile0->mem.ggtt;
> -	struct drm_gem_object *obj = intel_fb_bo(&fb->base);
>  	const struct i915_gtt_view *view = pin_params->view;
>  	struct xe_bo *bo = gem_to_xe_bo(obj), *dpt;
>  	u32 dpt_size, size = bo->ttm.base.size;
> @@ -268,14 +267,13 @@ static void write_ggtt_rotated_node(struct xe_ggtt *ggtt, struct xe_ggtt_node *n
>  				   rot_info->plane[i].dst_stride);
>  }
>  
> -static int __xe_pin_fb_vma_ggtt(const struct intel_framebuffer *fb,
> +static int __xe_pin_fb_vma_ggtt(struct drm_gem_object *obj,
>  				const struct intel_fb_pin_params *pin_params,
>  				struct i915_vma *vma)
>  {
> -	struct drm_gem_object *obj = intel_fb_bo(&fb->base);
>  	const struct i915_gtt_view *view = pin_params->view;
>  	struct xe_bo *bo = gem_to_xe_bo(obj);
> -	struct xe_device *xe = to_xe_device(fb->base.dev);
> +	struct xe_device *xe = to_xe_device(obj->dev);
>  	struct xe_tile *tile0 = xe_device_get_root_tile(xe);
>  	struct xe_ggtt *ggtt = tile0->mem.ggtt;
>  	u64 pte, size;
> @@ -318,13 +316,11 @@ static int __xe_pin_fb_vma_ggtt(const struct intel_framebuffer *fb,
>  	return ret;
>  }
>  
> -static struct i915_vma *__xe_pin_fb_vma(const struct intel_framebuffer *fb, bool is_dpt,
> +static struct i915_vma *__xe_pin_fb_vma(struct drm_gem_object *obj, bool is_dpt,
>  					const struct intel_fb_pin_params *pin_params)
>  {
> -	struct drm_device *dev = fb->base.dev;
> -	struct xe_device *xe = to_xe_device(dev);
> +	struct xe_device *xe = to_xe_device(obj->dev);
>  	struct i915_vma *vma = kzalloc(sizeof(*vma), GFP_KERNEL);
> -	struct drm_gem_object *obj = intel_fb_bo(&fb->base);
>  	struct xe_bo *bo = gem_to_xe_bo(obj);
>  	struct xe_validation_ctx ctx;
>  	struct drm_exec exec;
> @@ -376,9 +372,9 @@ static struct i915_vma *__xe_pin_fb_vma(const struct intel_framebuffer *fb, bool
>  
>  	vma->bo = bo;
>  	if (is_dpt)
> -		ret = __xe_pin_fb_vma_dpt(fb, pin_params, vma);
> +		ret = __xe_pin_fb_vma_dpt(obj, pin_params, vma);
>  	else
> -		ret = __xe_pin_fb_vma_ggtt(fb, pin_params, vma);
> +		ret = __xe_pin_fb_vma_ggtt(obj, pin_params, vma);
>  	if (ret)
>  		goto err_unpin;
>  
> @@ -412,14 +408,14 @@ static void __xe_unpin_fb_vma(struct i915_vma *vma)
>  }
>  
>  struct i915_vma *
> -intel_fb_pin_to_ggtt(const struct drm_framebuffer *fb,
> +intel_fb_pin_to_ggtt(struct drm_gem_object *obj,
>  		     const struct intel_fb_pin_params *pin_params,
>  		     int *out_fence_id)
>  {
>  	if (out_fence_id)
>  		*out_fence_id = -1;
>  
> -	return __xe_pin_fb_vma(to_intel_framebuffer(fb), false, pin_params);
> +	return __xe_pin_fb_vma(obj, false, pin_params);
>  }
>  
>  void intel_fb_unpin_vma(struct i915_vma *vma, int fence_id)
> @@ -469,7 +465,6 @@ int intel_plane_pin_fb(struct intel_plane_state *new_plane_state,
>  	struct drm_gem_object *obj = intel_fb_bo(fb);
>  	struct xe_bo *bo = gem_to_xe_bo(obj);
>  	struct i915_vma *vma;
> -	struct intel_framebuffer *intel_fb = to_intel_framebuffer(fb);
>  	struct intel_plane *plane = to_intel_plane(new_plane_state->uapi.plane);
>  	struct intel_fb_pin_params pin_params = {
>  		.view = &new_plane_state->view.gtt,
> @@ -483,8 +478,7 @@ int intel_plane_pin_fb(struct intel_plane_state *new_plane_state,
>  	/* We reject creating !SCANOUT fb's, so this is weird.. */
>  	drm_WARN_ON(bo->ttm.base.dev, !(bo->flags & XE_BO_FLAG_FORCE_WC));
>  
> -	vma = __xe_pin_fb_vma(intel_fb, intel_fb_uses_dpt(&intel_fb->base),
> -			      &pin_params);
> +	vma = __xe_pin_fb_vma(obj, intel_fb_uses_dpt(fb), &pin_params);
>  
>  	if (IS_ERR(vma))
>  		return PTR_ERR(vma);
> diff --git a/drivers/gpu/drm/xe/display/xe_initial_plane.c b/drivers/gpu/drm/xe/display/xe_initial_plane.c
> index 4f0ad4692ed6..8e3c0c4b81fe 100644
> --- a/drivers/gpu/drm/xe/display/xe_initial_plane.c
> +++ b/drivers/gpu/drm/xe/display/xe_initial_plane.c
> @@ -138,7 +138,7 @@ xe_initial_plane_setup(struct drm_plane_state *_plane_state,
>  		.view = &plane_state->view.gtt,
>  	};
>  
> -	vma = intel_fb_pin_to_ggtt(fb, &pin_params, NULL);
> +	vma = intel_fb_pin_to_ggtt(intel_fb_bo(fb), &pin_params, NULL);
>  	if (IS_ERR(vma))
>  		return PTR_ERR(vma);

-- 
Jani Nikula, Intel

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

* Re: [PATCH 04/11] drm/i915: Introduce pin_params.needs_cpu_lmem_access
  2026-04-17  9:39   ` Jani Nikula
@ 2026-04-17 11:33     ` Ville Syrjälä
  2026-04-17 16:19       ` Ville Syrjälä
  0 siblings, 1 reply; 28+ messages in thread
From: Ville Syrjälä @ 2026-04-17 11:33 UTC (permalink / raw)
  To: Jani Nikula; +Cc: intel-gfx, intel-xe

On Fri, Apr 17, 2026 at 12:39:54PM +0300, Jani Nikula wrote:
> On Thu, 16 Apr 2026, Ville Syrjala <ville.syrjala@linux.intel.com> wrote:
> > From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> >
> > Add a new flag pin_params.neeeds_cpu_lmem_access so that the
> > low level pinning code doesn't need to peek into the display
> > driver's framebuffer structure.
> >
> > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > ---
> >  drivers/gpu/drm/i915/display/intel_fb_pin.h | 1 +
> >  drivers/gpu/drm/i915/i915_fb_pin.c          | 4 +++-
> >  drivers/gpu/drm/xe/display/xe_fb_pin.c      | 3 ++-
> >  3 files changed, 6 insertions(+), 2 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/i915/display/intel_fb_pin.h b/drivers/gpu/drm/i915/display/intel_fb_pin.h
> > index e6271437459d..bcf5a1f46092 100644
> > --- a/drivers/gpu/drm/i915/display/intel_fb_pin.h
> > +++ b/drivers/gpu/drm/i915/display/intel_fb_pin.h
> > @@ -19,6 +19,7 @@ struct intel_fb_pin_params {
> >  	unsigned int alignment;
> >  	unsigned int phys_alignment;
> >  	unsigned int vtd_guard;
> > +	bool needs_cpu_lmem_access;
> >  };
> >  
> >  struct i915_vma *
> > diff --git a/drivers/gpu/drm/i915/i915_fb_pin.c b/drivers/gpu/drm/i915/i915_fb_pin.c
> > index 780be25ad43b..96ffc4b0d809 100644
> > --- a/drivers/gpu/drm/i915/i915_fb_pin.c
> > +++ b/drivers/gpu/drm/i915/i915_fb_pin.c
> > @@ -61,7 +61,7 @@ intel_fb_pin_to_dpt(const struct drm_framebuffer *fb,
> >  			 * ensure it is always in the mappable part of lmem, if this is
> >  			 * a small-bar device.
> >  			 */
> > -			if (intel_fb_needs_cpu_access(fb))
> > +			if (pin_params->needs_cpu_lmem_access)
> >  				flags &= ~I915_BO_ALLOC_GPU_ONLY;
> >  			ret = __i915_gem_object_migrate(obj, &ww, INTEL_REGION_LMEM_0,
> >  							flags);
> > @@ -275,6 +275,7 @@ int intel_plane_pin_fb(struct intel_plane_state *plane_state,
> >  			.alignment = intel_plane_fb_min_alignment(plane_state),
> >  			.phys_alignment = intel_plane_fb_min_phys_alignment(plane_state),
> >  			.vtd_guard = intel_plane_fb_vtd_guard(plane_state),
> > +			.needs_cpu_lmem_access = intel_fb_needs_cpu_access(&fb->base),
> 
> IIUC this path never uses .needs_cpu_lmem_access, but you initialize it
> anyway. What I find confusing is initializing it here apparently
> unnecessarily, but then leaving it out on a number of other paths that
> don't need it.

Hmm, yeah looks like we don't have the explicit migrate stuff
in the DPT path for some reason.

I'm sure the migration is happening though because I've used
DG2 on a small BAR system quite a bit, and page flips with clear
color work fine on i915 (unlike on xe+small BAR where it just
fails). And I remember even seeing the migration popping up in
the profiles. Now I'm wondering what might be triggering it
before the vma has been pinned...

Ideally I'd like to get rid of this whole thing and instead have
userspace put the clear color into its own separate little BO.
That way we wouldn't have to waste the precious CPU visible LMEM
on the full framebuffers. The kernel part of that is pretty trivial
and I have the patches in some branch, but sadly the Mesa side
is much more complicated. That particular onion has at least four
layers through which the extra dmabuf would need to get plumbed :(

> 
> Other than that,
> 
> Reviewed-by: Jani Nikula <jani.nikula@intel.com>
> 
> >  		};
> >  		int fence_id = -1;
> >  
> > @@ -289,6 +290,7 @@ int intel_plane_pin_fb(struct intel_plane_state *plane_state,
> >  		struct intel_fb_pin_params pin_params = {
> >  			.view = &plane_state->view.gtt,
> >  			.alignment = intel_plane_fb_min_alignment(plane_state),
> > +			.needs_cpu_lmem_access = intel_fb_needs_cpu_access(&fb->base),
> >  		};
> >  
> >  		vma = i915_dpt_pin_to_ggtt(fb->dpt, pin_params.alignment / 512);
> > diff --git a/drivers/gpu/drm/xe/display/xe_fb_pin.c b/drivers/gpu/drm/xe/display/xe_fb_pin.c
> > index 205492639dba..a4eb06cfa769 100644
> > --- a/drivers/gpu/drm/xe/display/xe_fb_pin.c
> > +++ b/drivers/gpu/drm/xe/display/xe_fb_pin.c
> > @@ -335,7 +335,7 @@ static struct i915_vma *__xe_pin_fb_vma(const struct intel_framebuffer *fb,
> >  
> >  	refcount_set(&vma->ref, 1);
> >  	if (IS_DGFX(to_xe_device(bo->ttm.base.dev)) &&
> > -	    intel_fb_needs_cpu_access(&fb->base) &&
> > +	    pin_params->needs_cpu_lmem_access &&
> >  	    !(bo->flags & XE_BO_FLAG_NEEDS_CPU_ACCESS)) {
> >  		struct xe_vram_region *vram = xe_device_get_root_tile(xe)->mem.vram;
> >  
> > @@ -474,6 +474,7 @@ int intel_plane_pin_fb(struct intel_plane_state *new_plane_state,
> >  	struct intel_fb_pin_params pin_params = {
> >  		.view = &new_plane_state->view.gtt,
> >  		.alignment = plane->min_alignment(plane, fb, 0),
> > +		.needs_cpu_lmem_access = intel_fb_needs_cpu_access(fb),
> >  	};
> >  
> >  	if (reuse_vma(new_plane_state, old_plane_state))
> 
> -- 
> Jani Nikula, Intel

-- 
Ville Syrjälä
Intel

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

* Re: [PATCH 09/11] drm/i915: Introduce pin_params.needs_fence
  2026-04-17  9:58   ` Jani Nikula
@ 2026-04-17 12:25     ` Ville Syrjälä
  0 siblings, 0 replies; 28+ messages in thread
From: Ville Syrjälä @ 2026-04-17 12:25 UTC (permalink / raw)
  To: Jani Nikula; +Cc: intel-gfx, intel-xe

On Fri, Apr 17, 2026 at 12:58:26PM +0300, Jani Nikula wrote:
> On Thu, 16 Apr 2026, Ville Syrjala <ville.syrjala@linux.intel.com> wrote:
> > From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> >
> > Add a new flag pin_params.needs_fencel to inform the pinning
> 
> *needs_fence
> 
> > code that the display needs a fence for tiled scanout.
> >
> > The goal is to eliminate all display specific stuff from
> > the low level pinning code.
> 
> Again, I find it just a little magical that .needs_fence is only
> initialized in certain code paths, with the implementation detail
> knowledge where the member is used.

I think in the end we could more or less set all the pin_params
members identically in all the codepaths. Though in the end we
should only have three codepaths (plane ggtt pin, plane dpt pin,
fbdev ggtt pin), so the xe vs. i915 differences here will just
go away with that.

> E.g. in this case out_fence_id !=
> NULL.

I suppose for that particular thing I could also add a
.uses_fence and just always require the &fence_id to be
passed in. Although I guess then I'd need to add the
fence_id tracking to to the fbdev path as well.

Hmm, I think fences might disappear on runtime suspend
so it might not really work to have a fence being tracked
for the fbdev perma-pin and expect it to survive runtime
suspend. So it may be that we never want to request a fence
in the fbdev codepath. But if the fence disappears then how
would a tiled fbdev framebuffer even work? I need to check
this...

And for the DPT path we probably shouldn't set any fence flags
(nor even have the *out_fence_id) since fence+DPT is just
nonsense.

> 
> Regardless,
> 
> Reviewed-by: Jani Nikula <jani.nikula@intel.com>
> 
> 
> >
> > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > ---
> >  drivers/gpu/drm/i915/display/intel_fb_pin.h | 1 +
> >  drivers/gpu/drm/i915/i915_fb_pin.c          | 4 ++--
> >  2 files changed, 3 insertions(+), 2 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/i915/display/intel_fb_pin.h b/drivers/gpu/drm/i915/display/intel_fb_pin.h
> > index 3e37e9874f50..95f83bf7411f 100644
> > --- a/drivers/gpu/drm/i915/display/intel_fb_pin.h
> > +++ b/drivers/gpu/drm/i915/display/intel_fb_pin.h
> > @@ -22,6 +22,7 @@ struct intel_fb_pin_params {
> >  	bool needs_cpu_lmem_access;
> >  	bool needs_low_address;
> >  	bool needs_physical;
> > +	bool needs_fence;
> >  };
> >  
> >  struct i915_vma *
> > diff --git a/drivers/gpu/drm/i915/i915_fb_pin.c b/drivers/gpu/drm/i915/i915_fb_pin.c
> > index a8ed888183cb..5060ec8c76ca 100644
> > --- a/drivers/gpu/drm/i915/i915_fb_pin.c
> > +++ b/drivers/gpu/drm/i915/i915_fb_pin.c
> > @@ -112,7 +112,6 @@ intel_fb_pin_to_ggtt(const struct drm_framebuffer *fb,
> >  		     const struct intel_fb_pin_params *pin_params,
> >  		     int *out_fence_id)
> >  {
> > -	struct intel_display *display = to_intel_display(fb->dev);
> >  	struct drm_i915_private *i915 = to_i915(fb->dev);
> >  	struct drm_gem_object *_obj = intel_fb_bo(fb);
> >  	struct drm_i915_gem_object *obj = to_intel_bo(_obj);
> > @@ -188,7 +187,7 @@ intel_fb_pin_to_ggtt(const struct drm_framebuffer *fb,
> >  		 * mode that matches the user configuration.
> >  		 */
> >  		ret = i915_vma_pin_fence(vma);
> > -		if (ret != 0 && intel_plane_needs_fence(display)) {
> > +		if (ret != 0 && pin_params->needs_fence) {
> >  			i915_vma_unpin(vma);
> >  			goto err_unpin;
> >  		}
> > @@ -272,6 +271,7 @@ int intel_plane_pin_fb(struct intel_plane_state *plane_state,
> >  			.needs_cpu_lmem_access = intel_fb_needs_cpu_access(&fb->base),
> >  			.needs_low_address = intel_plane_needs_low_address(display),
> >  			.needs_physical = intel_plane_needs_physical(plane),
> > +			.needs_fence = intel_plane_needs_fence(display),
> >  		};
> >  		int fence_id = -1;
> 
> -- 
> Jani Nikula, Intel

-- 
Ville Syrjälä
Intel

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

* Re: [PATCH 04/11] drm/i915: Introduce pin_params.needs_cpu_lmem_access
  2026-04-17 11:33     ` Ville Syrjälä
@ 2026-04-17 16:19       ` Ville Syrjälä
  0 siblings, 0 replies; 28+ messages in thread
From: Ville Syrjälä @ 2026-04-17 16:19 UTC (permalink / raw)
  To: Jani Nikula; +Cc: intel-gfx, intel-xe

On Fri, Apr 17, 2026 at 02:33:07PM +0300, Ville Syrjälä wrote:
> On Fri, Apr 17, 2026 at 12:39:54PM +0300, Jani Nikula wrote:
> > On Thu, 16 Apr 2026, Ville Syrjala <ville.syrjala@linux.intel.com> wrote:
> > > From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > >
> > > Add a new flag pin_params.neeeds_cpu_lmem_access so that the
> > > low level pinning code doesn't need to peek into the display
> > > driver's framebuffer structure.
> > >
> > > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > > ---
> > >  drivers/gpu/drm/i915/display/intel_fb_pin.h | 1 +
> > >  drivers/gpu/drm/i915/i915_fb_pin.c          | 4 +++-
> > >  drivers/gpu/drm/xe/display/xe_fb_pin.c      | 3 ++-
> > >  3 files changed, 6 insertions(+), 2 deletions(-)
> > >
> > > diff --git a/drivers/gpu/drm/i915/display/intel_fb_pin.h b/drivers/gpu/drm/i915/display/intel_fb_pin.h
> > > index e6271437459d..bcf5a1f46092 100644
> > > --- a/drivers/gpu/drm/i915/display/intel_fb_pin.h
> > > +++ b/drivers/gpu/drm/i915/display/intel_fb_pin.h
> > > @@ -19,6 +19,7 @@ struct intel_fb_pin_params {
> > >  	unsigned int alignment;
> > >  	unsigned int phys_alignment;
> > >  	unsigned int vtd_guard;
> > > +	bool needs_cpu_lmem_access;
> > >  };
> > >  
> > >  struct i915_vma *
> > > diff --git a/drivers/gpu/drm/i915/i915_fb_pin.c b/drivers/gpu/drm/i915/i915_fb_pin.c
> > > index 780be25ad43b..96ffc4b0d809 100644
> > > --- a/drivers/gpu/drm/i915/i915_fb_pin.c
> > > +++ b/drivers/gpu/drm/i915/i915_fb_pin.c
> > > @@ -61,7 +61,7 @@ intel_fb_pin_to_dpt(const struct drm_framebuffer *fb,
> > >  			 * ensure it is always in the mappable part of lmem, if this is
> > >  			 * a small-bar device.
> > >  			 */
> > > -			if (intel_fb_needs_cpu_access(fb))
> > > +			if (pin_params->needs_cpu_lmem_access)
> > >  				flags &= ~I915_BO_ALLOC_GPU_ONLY;
> > >  			ret = __i915_gem_object_migrate(obj, &ww, INTEL_REGION_LMEM_0,
> > >  							flags);
> > > @@ -275,6 +275,7 @@ int intel_plane_pin_fb(struct intel_plane_state *plane_state,
> > >  			.alignment = intel_plane_fb_min_alignment(plane_state),
> > >  			.phys_alignment = intel_plane_fb_min_phys_alignment(plane_state),
> > >  			.vtd_guard = intel_plane_fb_vtd_guard(plane_state),
> > > +			.needs_cpu_lmem_access = intel_fb_needs_cpu_access(&fb->base),
> > 
> > IIUC this path never uses .needs_cpu_lmem_access, but you initialize it
> > anyway. What I find confusing is initializing it here apparently
> > unnecessarily, but then leaving it out on a number of other paths that
> > don't need it.
> 
> Hmm, yeah looks like we don't have the explicit migrate stuff
> in the DPT path for some reason.

Doh. Misread it. It is exactly the DPT path where we have this.
And that makes sense since DG2+ require DPT for tiled buffers
and clear color is only a thing with certain tiled modifiers.
And DG1, which doesn't have DPT, also doesn't support small-BAR
operation, so the migration is never needed there.

I guess the only situation where we might need the migration
in the ggtt path is if we run DG2 with DPT disable via the
modparam. But I've never actually tried that so not sure it
even works. Should probably give it a go at some point...

-- 
Ville Syrjälä
Intel

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

* ✓ i915.CI.BAT: success for drm/i915: Eliminate FB usage from low level pinning code (rev2)
  2026-04-16 17:44 [PATCH 00/11] drm/i915: Eliminate FB usage from low level pinning code Ville Syrjala
                   ` (11 preceding siblings ...)
  2026-04-16 19:29 ` ✓ i915.CI.BAT: success for drm/i915: Eliminate FB usage from low level pinning code Patchwork
@ 2026-04-21 11:15 ` Patchwork
  2026-04-21 13:56 ` ✓ i915.CI.Full: " Patchwork
  13 siblings, 0 replies; 28+ messages in thread
From: Patchwork @ 2026-04-21 11:15 UTC (permalink / raw)
  To: Ville Syrjala; +Cc: intel-gfx

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

== Series Details ==

Series: drm/i915: Eliminate FB usage from low level pinning code (rev2)
URL   : https://patchwork.freedesktop.org/series/165015/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_18350 -> Patchwork_165015v2
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

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

Participating hosts (41 -> 40)
------------------------------

  Additional (1): fi-rkl-11600 
  Missing    (2): bat-dg2-13 fi-snb-2520m 

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

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

### IGT changes ###

#### Issues hit ####

  * igt@dmabuf@all-tests:
    - fi-rkl-11600:       NOTRUN -> [SKIP][1] ([i915#15931])
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/fi-rkl-11600/igt@dmabuf@all-tests.html

  * igt@fbdev@eof:
    - fi-rkl-11600:       NOTRUN -> [SKIP][2] ([i915#2582]) +3 other tests skip
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/fi-rkl-11600/igt@fbdev@eof.html

  * igt@fbdev@info:
    - fi-rkl-11600:       NOTRUN -> [SKIP][3] ([i915#1849] / [i915#2582])
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/fi-rkl-11600/igt@fbdev@info.html

  * igt@gem_huc_copy@huc-copy:
    - fi-rkl-11600:       NOTRUN -> [SKIP][4] ([i915#2190])
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/fi-rkl-11600/igt@gem_huc_copy@huc-copy.html

  * igt@gem_lmem_swapping@basic:
    - fi-rkl-11600:       NOTRUN -> [SKIP][5] ([i915#4613]) +3 other tests skip
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/fi-rkl-11600/igt@gem_lmem_swapping@basic.html

  * igt@gem_tiled_pread_basic@basic:
    - fi-rkl-11600:       NOTRUN -> [SKIP][6] ([i915#15656])
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/fi-rkl-11600/igt@gem_tiled_pread_basic@basic.html

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

  * igt@intel_hwmon@hwmon-read:
    - fi-rkl-11600:       NOTRUN -> [SKIP][9] ([i915#7707]) +1 other test skip
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/fi-rkl-11600/igt@intel_hwmon@hwmon-read.html

  * igt@kms_flip@basic-flip-vs-wf_vblank:
    - fi-rkl-11600:       NOTRUN -> [SKIP][10] ([i915#3637]) +3 other tests skip
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/fi-rkl-11600/igt@kms_flip@basic-flip-vs-wf_vblank.html

  * igt@kms_force_connector_basic@force-load-detect:
    - fi-rkl-11600:       NOTRUN -> [SKIP][11]
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/fi-rkl-11600/igt@kms_force_connector_basic@force-load-detect.html

  * igt@kms_frontbuffer_tracking@basic:
    - fi-rkl-11600:       NOTRUN -> [SKIP][12] ([i915#1849] / [i915#5354])
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/fi-rkl-11600/igt@kms_frontbuffer_tracking@basic.html

  * igt@kms_pipe_crc_basic@compare-crc-sanitycheck-xr24:
    - fi-rkl-11600:       NOTRUN -> [SKIP][13] ([i915#11190]) +16 other tests skip
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/fi-rkl-11600/igt@kms_pipe_crc_basic@compare-crc-sanitycheck-xr24.html

  * igt@kms_pm_backlight@basic-brightness:
    - fi-rkl-11600:       NOTRUN -> [SKIP][14] ([i915#5354])
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/fi-rkl-11600/igt@kms_pm_backlight@basic-brightness.html

  * igt@kms_psr@psr-primary-page-flip:
    - fi-rkl-11600:       NOTRUN -> [SKIP][15] ([i915#1072] / [i915#9732]) +3 other tests skip
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/fi-rkl-11600/igt@kms_psr@psr-primary-page-flip.html

  * igt@kms_setmode@basic-clone-single-crtc:
    - fi-rkl-11600:       NOTRUN -> [SKIP][16] ([i915#3555])
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/fi-rkl-11600/igt@kms_setmode@basic-clone-single-crtc.html

  * igt@prime_vgem@basic-fence-flip:
    - fi-rkl-11600:       NOTRUN -> [SKIP][17] ([i915#3708])
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/fi-rkl-11600/igt@prime_vgem@basic-fence-flip.html

  * igt@prime_vgem@basic-read:
    - fi-rkl-11600:       NOTRUN -> [SKIP][18] ([i915#3291] / [i915#3708]) +2 other tests skip
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/fi-rkl-11600/igt@prime_vgem@basic-read.html

  
#### Possible fixes ####

  * igt@i915_selftest@live@workarounds:
    - bat-dg2-14:         [DMESG-FAIL][19] ([i915#12061]) -> [PASS][20] +1 other test pass
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/bat-dg2-14/igt@i915_selftest@live@workarounds.html
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/bat-dg2-14/igt@i915_selftest@live@workarounds.html
    - bat-mtlp-9:         [DMESG-FAIL][21] ([i915#12061]) -> [PASS][22] +1 other test pass
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/bat-mtlp-9/igt@i915_selftest@live@workarounds.html
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/bat-mtlp-9/igt@i915_selftest@live@workarounds.html

  * igt@kms_pm_rpm@basic-rte:
    - bat-rpls-4:         [DMESG-WARN][23] ([i915#13400]) -> [PASS][24]
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/bat-rpls-4/igt@kms_pm_rpm@basic-rte.html
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/bat-rpls-4/igt@kms_pm_rpm@basic-rte.html

  
  [i915#1072]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1072
  [i915#11190]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11190
  [i915#12061]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12061
  [i915#13400]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13400
  [i915#15656]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15656
  [i915#15931]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15931
  [i915#1849]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1849
  [i915#2190]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2190
  [i915#2582]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2582
  [i915#3291]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3291
  [i915#3555]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3555
  [i915#3637]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3637
  [i915#3708]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3708
  [i915#4613]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4613
  [i915#5354]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5354
  [i915#7707]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7707
  [i915#9732]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9732


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

  * Linux: CI_DRM_18350 -> Patchwork_165015v2

  CI-20190529: 20190529
  CI_DRM_18350: 898b5aa235c5b269d6c745fd84270b296aa75469 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGT_8863: 5b279a8b71dc1672099205a1a9e8135c7c7fadb5 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  Patchwork_165015v2: 898b5aa235c5b269d6c745fd84270b296aa75469 @ git://anongit.freedesktop.org/gfx-ci/linux

== Logs ==

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

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

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

* ✓ i915.CI.Full: success for drm/i915: Eliminate FB usage from low level pinning code (rev2)
  2026-04-16 17:44 [PATCH 00/11] drm/i915: Eliminate FB usage from low level pinning code Ville Syrjala
                   ` (12 preceding siblings ...)
  2026-04-21 11:15 ` ✓ i915.CI.BAT: success for drm/i915: Eliminate FB usage from low level pinning code (rev2) Patchwork
@ 2026-04-21 13:56 ` Patchwork
  13 siblings, 0 replies; 28+ messages in thread
From: Patchwork @ 2026-04-21 13:56 UTC (permalink / raw)
  To: Ville Syrjala; +Cc: intel-gfx

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

== Series Details ==

Series: drm/i915: Eliminate FB usage from low level pinning code (rev2)
URL   : https://patchwork.freedesktop.org/series/165015/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_18350_full -> Patchwork_165015v2_full
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  

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

  No changes in participating hosts

New tests
---------

  New tests have been introduced between CI_DRM_18350_full and Patchwork_165015v2_full:

### New IGT tests (2) ###

  * igt@i915_pm_rps@sync_expired_merge:
    - Statuses :
    - Exec time: [None] s

  * igt@kms_plane@independent:
    - Statuses :
    - Exec time: [None] s

  

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

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

### IGT changes ###

#### Issues hit ####

  * igt@api_intel_bb@blit-reloc-keep-cache:
    - shard-rkl:          NOTRUN -> [SKIP][1] ([i915#8411])
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-8/igt@api_intel_bb@blit-reloc-keep-cache.html

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

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

  * igt@gem_ccs@suspend-resume@tile4-compressed-compfmt0-lmem0-lmem0:
    - shard-dg2:          NOTRUN -> [INCOMPLETE][4] ([i915#12392] / [i915#13356])
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-dg2-3/igt@gem_ccs@suspend-resume@tile4-compressed-compfmt0-lmem0-lmem0.html

  * igt@gem_close_race@multigpu-basic-process:
    - shard-tglu:         NOTRUN -> [SKIP][5] ([i915#7697])
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-tglu-6/igt@gem_close_race@multigpu-basic-process.html

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

  * igt@gem_create@create-ext-cpu-access-sanity-check:
    - shard-rkl:          NOTRUN -> [SKIP][7] ([i915#6335])
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-8/igt@gem_create@create-ext-cpu-access-sanity-check.html

  * igt@gem_ctx_sseu@invalid-sseu:
    - shard-dg2:          NOTRUN -> [SKIP][8] ([i915#280])
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-dg2-7/igt@gem_ctx_sseu@invalid-sseu.html

  * igt@gem_exec_balancer@bonded-true-hang:
    - shard-dg2:          NOTRUN -> [SKIP][9] ([i915#4812])
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-dg2-7/igt@gem_exec_balancer@bonded-true-hang.html

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

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

  * igt@gem_exec_capture@capture-invisible@smem0:
    - shard-rkl:          NOTRUN -> [SKIP][12] ([i915#6334]) +1 other test skip
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-8/igt@gem_exec_capture@capture-invisible@smem0.html

  * igt@gem_exec_flush@basic-batch-kernel-default-uc:
    - shard-dg2:          NOTRUN -> [SKIP][13] ([i915#3539] / [i915#4852])
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-dg2-7/igt@gem_exec_flush@basic-batch-kernel-default-uc.html

  * igt@gem_exec_reloc@basic-wc-cpu:
    - shard-dg2:          NOTRUN -> [SKIP][14] ([i915#3281]) +2 other tests skip
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-dg2-7/igt@gem_exec_reloc@basic-wc-cpu.html

  * igt@gem_exec_reloc@basic-write-read:
    - shard-rkl:          NOTRUN -> [SKIP][15] ([i915#3281]) +6 other tests skip
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-8/igt@gem_exec_reloc@basic-write-read.html

  * igt@gem_exec_schedule@reorder-wide:
    - shard-dg2:          NOTRUN -> [SKIP][16] ([i915#4537] / [i915#4812])
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-dg2-7/igt@gem_exec_schedule@reorder-wide.html

  * igt@gem_exec_suspend@basic-s0:
    - shard-dg2:          [PASS][17] -> [INCOMPLETE][18] ([i915#13356]) +1 other test incomplete
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-dg2-7/igt@gem_exec_suspend@basic-s0.html
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-dg2-4/igt@gem_exec_suspend@basic-s0.html

  * igt@gem_huc_copy@huc-copy:
    - shard-tglu-1:       NOTRUN -> [SKIP][19] ([i915#2190])
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-tglu-1/igt@gem_huc_copy@huc-copy.html

  * igt@gem_lmem_swapping@heavy-multi:
    - shard-tglu:         NOTRUN -> [SKIP][20] ([i915#4613])
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-tglu-6/igt@gem_lmem_swapping@heavy-multi.html

  * igt@gem_lmem_swapping@verify-ccs:
    - shard-rkl:          NOTRUN -> [SKIP][21] ([i915#4613]) +3 other tests skip
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-7/igt@gem_lmem_swapping@verify-ccs.html

  * igt@gem_media_vme:
    - shard-tglu-1:       NOTRUN -> [SKIP][22] ([i915#284])
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-tglu-1/igt@gem_media_vme.html

  * igt@gem_mmap_gtt@zero-extend:
    - shard-dg2:          NOTRUN -> [SKIP][23] ([i915#4077]) +4 other tests skip
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-dg2-7/igt@gem_mmap_gtt@zero-extend.html

  * igt@gem_partial_pwrite_pread@writes-after-reads:
    - shard-rkl:          NOTRUN -> [SKIP][24] ([i915#3282]) +4 other tests skip
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-3/igt@gem_partial_pwrite_pread@writes-after-reads.html

  * igt@gem_partial_pwrite_pread@writes-after-reads-display:
    - shard-dg2:          NOTRUN -> [SKIP][25] ([i915#3282]) +2 other tests skip
   [25]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-dg2-7/igt@gem_partial_pwrite_pread@writes-after-reads-display.html

  * igt@gem_pxp@hw-rejects-pxp-context:
    - shard-tglu-1:       NOTRUN -> [SKIP][26] ([i915#13398])
   [26]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-tglu-1/igt@gem_pxp@hw-rejects-pxp-context.html

  * igt@gem_pxp@verify-pxp-execution-after-suspend-resume:
    - shard-dg2:          NOTRUN -> [SKIP][27] ([i915#4270]) +2 other tests skip
   [27]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-dg2-7/igt@gem_pxp@verify-pxp-execution-after-suspend-resume.html

  * igt@gem_render_copy@y-tiled-to-vebox-x-tiled:
    - shard-dg2:          NOTRUN -> [SKIP][28] ([i915#5190] / [i915#8428])
   [28]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-dg2-7/igt@gem_render_copy@y-tiled-to-vebox-x-tiled.html

  * igt@gem_softpin@evict-snoop:
    - shard-rkl:          NOTRUN -> [SKIP][29] +12 other tests skip
   [29]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-3/igt@gem_softpin@evict-snoop.html

  * igt@gem_userptr_blits@coherency-sync:
    - shard-rkl:          NOTRUN -> [SKIP][30] ([i915#3297])
   [30]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-3/igt@gem_userptr_blits@coherency-sync.html

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

  * igt@gem_userptr_blits@map-fixed-invalidate:
    - shard-dg2:          NOTRUN -> [SKIP][32] ([i915#3297] / [i915#4880])
   [32]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-dg2-7/igt@gem_userptr_blits@map-fixed-invalidate.html

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

  * igt@gen9_exec_parse@bb-start-out:
    - shard-dg2:          NOTRUN -> [SKIP][34] ([i915#2856]) +2 other tests skip
   [34]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-dg2-7/igt@gen9_exec_parse@bb-start-out.html

  * igt@gen9_exec_parse@bb-start-param:
    - shard-tglu:         NOTRUN -> [SKIP][35] ([i915#2527] / [i915#2856])
   [35]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-tglu-6/igt@gen9_exec_parse@bb-start-param.html

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

  * igt@gen9_exec_parse@valid-registers:
    - shard-tglu-1:       NOTRUN -> [SKIP][37] ([i915#2527] / [i915#2856]) +3 other tests skip
   [37]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-tglu-1/igt@gen9_exec_parse@valid-registers.html

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

  * igt@i915_pm_rc6_residency@rc6-idle:
    - shard-tglu-1:       NOTRUN -> [SKIP][39] ([i915#14498])
   [39]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-tglu-1/igt@i915_pm_rc6_residency@rc6-idle.html

  * igt@i915_pm_rpm@system-suspend:
    - shard-glk:          NOTRUN -> [INCOMPLETE][40] ([i915#13356])
   [40]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-glk2/igt@i915_pm_rpm@system-suspend.html

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

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

  * igt@i915_suspend@basic-s3-without-i915:
    - shard-tglu:         NOTRUN -> [INCOMPLETE][43] ([i915#4817] / [i915#7443])
   [43]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-tglu-8/igt@i915_suspend@basic-s3-without-i915.html

  * igt@i915_suspend@forcewake:
    - shard-glk11:        NOTRUN -> [INCOMPLETE][44] ([i915#4817])
   [44]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-glk11/igt@i915_suspend@forcewake.html

  * igt@intel_hwmon@hwmon-read:
    - shard-rkl:          NOTRUN -> [SKIP][45] ([i915#7707])
   [45]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-8/igt@intel_hwmon@hwmon-read.html

  * igt@kms_3d@basic:
    - shard-mtlp:         [PASS][46] -> [SKIP][47] ([i915#15726])
   [46]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-mtlp-5/igt@kms_3d@basic.html
   [47]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-mtlp-1/igt@kms_3d@basic.html

  * igt@kms_atomic_transition@plane-all-modeset-transition-internal-panels:
    - shard-rkl:          NOTRUN -> [SKIP][48] ([i915#1769] / [i915#3555])
   [48]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-8/igt@kms_atomic_transition@plane-all-modeset-transition-internal-panels.html

  * igt@kms_atomic_transition@plane-toggle-modeset-transition@pipe-a-edp-1:
    - shard-mtlp:         [PASS][49] -> [FAIL][50] ([i915#5956]) +1 other test fail
   [49]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-mtlp-3/igt@kms_atomic_transition@plane-toggle-modeset-transition@pipe-a-edp-1.html
   [50]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-mtlp-2/igt@kms_atomic_transition@plane-toggle-modeset-transition@pipe-a-edp-1.html

  * igt@kms_atomic_transition@plane-toggle-modeset-transition@pipe-a-hdmi-a-3:
    - shard-dg2:          [PASS][51] -> [FAIL][52] ([i915#5956]) +3 other tests fail
   [51]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-dg2-1/igt@kms_atomic_transition@plane-toggle-modeset-transition@pipe-a-hdmi-a-3.html
   [52]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-dg2-7/igt@kms_atomic_transition@plane-toggle-modeset-transition@pipe-a-hdmi-a-3.html

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

  * igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-180-hflip:
    - shard-tglu-1:       NOTRUN -> [SKIP][54] ([i915#5286]) +3 other tests skip
   [54]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-tglu-1/igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-180-hflip.html

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

  * igt@kms_big_fb@y-tiled-addfb-size-overflow:
    - shard-dg2:          NOTRUN -> [SKIP][56] ([i915#5190]) +1 other test skip
   [56]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-dg2-7/igt@kms_big_fb@y-tiled-addfb-size-overflow.html

  * igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-0-async-flip:
    - shard-dg2:          NOTRUN -> [SKIP][57] ([i915#4538] / [i915#5190]) +4 other tests skip
   [57]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-dg2-7/igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-0-async-flip.html

  * igt@kms_ccs@bad-aux-stride-y-tiled-gen12-mc-ccs@pipe-c-hdmi-a-2:
    - shard-rkl:          NOTRUN -> [SKIP][58] ([i915#14098] / [i915#14544] / [i915#6095]) +1 other test skip
   [58]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-6/igt@kms_ccs@bad-aux-stride-y-tiled-gen12-mc-ccs@pipe-c-hdmi-a-2.html

  * igt@kms_ccs@bad-aux-stride-yf-tiled-ccs@pipe-a-hdmi-a-1:
    - shard-tglu:         NOTRUN -> [SKIP][59] ([i915#6095]) +9 other tests skip
   [59]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-tglu-6/igt@kms_ccs@bad-aux-stride-yf-tiled-ccs@pipe-a-hdmi-a-1.html

  * igt@kms_ccs@bad-pixel-format-4-tiled-mtl-mc-ccs@pipe-c-hdmi-a-1:
    - shard-rkl:          NOTRUN -> [SKIP][60] ([i915#14098] / [i915#6095]) +41 other tests skip
   [60]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-8/igt@kms_ccs@bad-pixel-format-4-tiled-mtl-mc-ccs@pipe-c-hdmi-a-1.html

  * igt@kms_ccs@bad-pixel-format-y-tiled-gen12-mc-ccs:
    - shard-dg2:          NOTRUN -> [SKIP][61] ([i915#10307] / [i915#6095]) +86 other tests skip
   [61]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-dg2-7/igt@kms_ccs@bad-pixel-format-y-tiled-gen12-mc-ccs.html

  * igt@kms_ccs@bad-rotation-90-4-tiled-dg2-mc-ccs@pipe-d-hdmi-a-3:
    - shard-dg2:          NOTRUN -> [SKIP][62] ([i915#6095]) +40 other tests skip
   [62]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-dg2-7/igt@kms_ccs@bad-rotation-90-4-tiled-dg2-mc-ccs@pipe-d-hdmi-a-3.html

  * igt@kms_ccs@bad-rotation-90-4-tiled-mtl-rc-ccs@pipe-b-hdmi-a-2:
    - shard-rkl:          NOTRUN -> [SKIP][63] ([i915#6095]) +65 other tests skip
   [63]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-3/igt@kms_ccs@bad-rotation-90-4-tiled-mtl-rc-ccs@pipe-b-hdmi-a-2.html

  * igt@kms_ccs@crc-primary-basic-4-tiled-bmg-ccs:
    - shard-rkl:          NOTRUN -> [SKIP][64] ([i915#12313]) +2 other tests skip
   [64]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-8/igt@kms_ccs@crc-primary-basic-4-tiled-bmg-ccs.html

  * igt@kms_ccs@crc-primary-basic-4-tiled-mtl-rc-ccs@pipe-c-hdmi-a-2:
    - shard-glk11:        NOTRUN -> [SKIP][65] +100 other tests skip
   [65]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-glk11/igt@kms_ccs@crc-primary-basic-4-tiled-mtl-rc-ccs@pipe-c-hdmi-a-2.html

  * igt@kms_ccs@crc-primary-rotation-180-4-tiled-mtl-mc-ccs@pipe-c-hdmi-a-2:
    - shard-glk:          NOTRUN -> [SKIP][66] +110 other tests skip
   [66]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-glk2/igt@kms_ccs@crc-primary-rotation-180-4-tiled-mtl-mc-ccs@pipe-c-hdmi-a-2.html

  * igt@kms_ccs@crc-primary-rotation-180-4-tiled-mtl-rc-ccs-cc@pipe-d-hdmi-a-1:
    - shard-dg2:          NOTRUN -> [SKIP][67] ([i915#10307] / [i915#10434] / [i915#6095]) +1 other test skip
   [67]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-dg2-4/igt@kms_ccs@crc-primary-rotation-180-4-tiled-mtl-rc-ccs-cc@pipe-d-hdmi-a-1.html

  * igt@kms_ccs@crc-primary-rotation-180-4-tiled-mtl-rc-ccs@pipe-b-hdmi-a-1:
    - shard-tglu-1:       NOTRUN -> [SKIP][68] ([i915#6095]) +44 other tests skip
   [68]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-tglu-1/igt@kms_ccs@crc-primary-rotation-180-4-tiled-mtl-rc-ccs@pipe-b-hdmi-a-1.html

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

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

  * igt@kms_ccs@missing-ccs-buffer-y-tiled-gen12-mc-ccs@pipe-a-hdmi-a-2:
    - shard-rkl:          NOTRUN -> [SKIP][71] ([i915#14544] / [i915#6095]) +3 other tests skip
   [71]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-6/igt@kms_ccs@missing-ccs-buffer-y-tiled-gen12-mc-ccs@pipe-a-hdmi-a-2.html

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

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

  * igt@kms_chamelium_edid@dp-mode-timings:
    - shard-dg2:          NOTRUN -> [SKIP][74] ([i915#11151] / [i915#7828]) +3 other tests skip
   [74]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-dg2-7/igt@kms_chamelium_edid@dp-mode-timings.html

  * igt@kms_chamelium_frames@dp-crc-fast:
    - shard-tglu-1:       NOTRUN -> [SKIP][75] ([i915#11151] / [i915#7828]) +5 other tests skip
   [75]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-tglu-1/igt@kms_chamelium_frames@dp-crc-fast.html

  * igt@kms_chamelium_frames@dp-crc-single:
    - shard-tglu:         NOTRUN -> [SKIP][76] ([i915#11151] / [i915#7828])
   [76]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-tglu-6/igt@kms_chamelium_frames@dp-crc-single.html

  * igt@kms_chamelium_frames@hdmi-crc-fast:
    - shard-rkl:          NOTRUN -> [SKIP][77] ([i915#11151] / [i915#7828]) +6 other tests skip
   [77]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-4/igt@kms_chamelium_frames@hdmi-crc-fast.html

  * igt@kms_color@deep-color:
    - shard-tglu-1:       NOTRUN -> [SKIP][78] ([i915#3555] / [i915#9979])
   [78]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-tglu-1/igt@kms_color@deep-color.html

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

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

  * igt@kms_content_protection@dp-mst-type-0:
    - shard-tglu:         NOTRUN -> [SKIP][81] ([i915#15330] / [i915#3116] / [i915#3299])
   [81]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-tglu-6/igt@kms_content_protection@dp-mst-type-0.html

  * igt@kms_content_protection@dp-mst-type-1:
    - shard-rkl:          NOTRUN -> [SKIP][82] ([i915#15330] / [i915#3116])
   [82]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-4/igt@kms_content_protection@dp-mst-type-1.html

  * igt@kms_content_protection@dp-mst-type-1-suspend-resume:
    - shard-rkl:          NOTRUN -> [SKIP][83] ([i915#15330])
   [83]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-3/igt@kms_content_protection@dp-mst-type-1-suspend-resume.html

  * igt@kms_content_protection@legacy:
    - shard-dg2:          NOTRUN -> [SKIP][84] ([i915#15865])
   [84]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-dg2-7/igt@kms_content_protection@legacy.html

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

  * igt@kms_content_protection@type1:
    - shard-rkl:          NOTRUN -> [SKIP][86] ([i915#15865]) +1 other test skip
   [86]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-7/igt@kms_content_protection@type1.html

  * igt@kms_cursor_crc@cursor-offscreen-32x10:
    - shard-rkl:          NOTRUN -> [SKIP][87] ([i915#3555]) +2 other tests skip
   [87]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-4/igt@kms_cursor_crc@cursor-offscreen-32x10.html

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

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

  * igt@kms_cursor_crc@cursor-random-32x32:
    - shard-dg2:          NOTRUN -> [SKIP][90] ([i915#3555]) +3 other tests skip
   [90]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-dg2-7/igt@kms_cursor_crc@cursor-random-32x32.html

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

  * igt@kms_cursor_crc@cursor-random-max-size:
    - shard-tglu-1:       NOTRUN -> [SKIP][92] ([i915#3555]) +3 other tests skip
   [92]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-tglu-1/igt@kms_cursor_crc@cursor-random-max-size.html

  * igt@kms_cursor_crc@cursor-sliding-128x42:
    - shard-rkl:          NOTRUN -> [FAIL][93] ([i915#13566]) +1 other test fail
   [93]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-4/igt@kms_cursor_crc@cursor-sliding-128x42.html

  * igt@kms_cursor_crc@cursor-suspend@pipe-a-hdmi-a-2:
    - shard-rkl:          [PASS][94] -> [INCOMPLETE][95] ([i915#12358] / [i915#14152]) +1 other test incomplete
   [94]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-rkl-7/igt@kms_cursor_crc@cursor-suspend@pipe-a-hdmi-a-2.html
   [95]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-6/igt@kms_cursor_crc@cursor-suspend@pipe-a-hdmi-a-2.html

  * igt@kms_cursor_legacy@2x-long-flip-vs-cursor-legacy:
    - shard-dg2:          NOTRUN -> [SKIP][96] ([i915#13046] / [i915#5354]) +2 other tests skip
   [96]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-dg2-7/igt@kms_cursor_legacy@2x-long-flip-vs-cursor-legacy.html

  * igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy:
    - shard-tglu-1:       NOTRUN -> [SKIP][97] ([i915#4103]) +2 other tests skip
   [97]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-tglu-1/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html

  * igt@kms_cursor_legacy@basic-busy-flip-before-cursor-varying-size:
    - shard-rkl:          NOTRUN -> [SKIP][98] ([i915#4103])
   [98]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-3/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-varying-size.html

  * igt@kms_cursor_legacy@modeset-atomic-cursor-hotspot:
    - shard-dg2:          NOTRUN -> [SKIP][99] ([i915#9067])
   [99]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-dg2-7/igt@kms_cursor_legacy@modeset-atomic-cursor-hotspot.html

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

  * igt@kms_display_modes@extended-mode-basic:
    - shard-rkl:          NOTRUN -> [SKIP][101] ([i915#13691])
   [101]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-3/igt@kms_display_modes@extended-mode-basic.html

  * igt@kms_dp_link_training@uhbr-mst:
    - shard-tglu-1:       NOTRUN -> [SKIP][102] ([i915#13748])
   [102]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-tglu-1/igt@kms_dp_link_training@uhbr-mst.html

  * igt@kms_dp_linktrain_fallback@dsc-fallback:
    - shard-tglu-1:       NOTRUN -> [SKIP][103] ([i915#13707])
   [103]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-tglu-1/igt@kms_dp_linktrain_fallback@dsc-fallback.html

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

  * igt@kms_dsc@dsc-with-output-formats:
    - shard-tglu-1:       NOTRUN -> [SKIP][105] ([i915#3555] / [i915#3840])
   [105]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-tglu-1/igt@kms_dsc@dsc-with-output-formats.html

  * igt@kms_fbcon_fbt@psr-suspend:
    - shard-rkl:          NOTRUN -> [SKIP][106] ([i915#3955])
   [106]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-3/igt@kms_fbcon_fbt@psr-suspend.html

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

  * igt@kms_feature_discovery@dp-mst:
    - shard-rkl:          NOTRUN -> [SKIP][108] ([i915#9337])
   [108]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-3/igt@kms_feature_discovery@dp-mst.html

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

  * igt@kms_flip@2x-flip-vs-dpms-off-vs-modeset:
    - shard-dg2:          NOTRUN -> [SKIP][110] ([i915#9934]) +4 other tests skip
   [110]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-dg2-7/igt@kms_flip@2x-flip-vs-dpms-off-vs-modeset.html

  * igt@kms_flip@2x-flip-vs-fences-interruptible:
    - shard-tglu:         NOTRUN -> [SKIP][111] ([i915#3637] / [i915#9934])
   [111]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-tglu-6/igt@kms_flip@2x-flip-vs-fences-interruptible.html

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

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

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

  * igt@kms_flip@flip-vs-fences-interruptible:
    - shard-dg2:          NOTRUN -> [SKIP][115] ([i915#8381])
   [115]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-dg2-7/igt@kms_flip@flip-vs-fences-interruptible.html

  * igt@kms_flip@flip-vs-suspend-interruptible:
    - shard-glk10:        NOTRUN -> [INCOMPLETE][116] ([i915#12745] / [i915#4839])
   [116]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-glk10/igt@kms_flip@flip-vs-suspend-interruptible.html

  * igt@kms_flip@flip-vs-suspend-interruptible@a-hdmi-a1:
    - shard-glk10:        NOTRUN -> [INCOMPLETE][117] ([i915#12745])
   [117]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-glk10/igt@kms_flip@flip-vs-suspend-interruptible@a-hdmi-a1.html

  * igt@kms_flip@plain-flip-ts-check:
    - shard-tglu:         [PASS][118] -> [FAIL][119] ([i915#14600]) +1 other test fail
   [118]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-tglu-8/igt@kms_flip@plain-flip-ts-check.html
   [119]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-tglu-2/igt@kms_flip@plain-flip-ts-check.html

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

  * igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling:
    - shard-tglu:         NOTRUN -> [SKIP][121] ([i915#15643])
   [121]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-tglu-6/igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling.html

  * igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-16bpp-4tile-downscaling:
    - shard-rkl:          NOTRUN -> [SKIP][122] ([i915#15643])
   [122]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-3/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-16bpp-4tile-downscaling.html

  * igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tiledg2rcccs-upscaling:
    - shard-dg2:          NOTRUN -> [SKIP][123] ([i915#15643]) +1 other test skip
   [123]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-dg2-7/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tiledg2rcccs-upscaling.html

  * igt@kms_frontbuffer_tracking@fbc-1p-offscreen-pri-indfb-draw-mmap-gtt:
    - shard-dg2:          NOTRUN -> [SKIP][124] ([i915#15104])
   [124]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-dg2-7/igt@kms_frontbuffer_tracking@fbc-1p-offscreen-pri-indfb-draw-mmap-gtt.html

  * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-onoff:
    - shard-dg2:          NOTRUN -> [FAIL][125] ([i915#15389] / [i915#6880])
   [125]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-dg2-7/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-onoff.html

  * igt@kms_frontbuffer_tracking@fbc-2p-primscrn-indfb-pgflip-blt:
    - shard-dg2:          NOTRUN -> [SKIP][126] ([i915#5354]) +13 other tests skip
   [126]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-dg2-7/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-indfb-pgflip-blt.html

  * igt@kms_frontbuffer_tracking@fbc-2p-primscrn-shrfb-pgflip-blt:
    - shard-tglu-1:       NOTRUN -> [SKIP][127] +41 other tests skip
   [127]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-tglu-1/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-shrfb-pgflip-blt.html

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

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-draw-blt:
    - shard-rkl:          NOTRUN -> [SKIP][129] ([i915#1825]) +23 other tests skip
   [129]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-7/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-draw-render:
    - shard-tglu:         NOTRUN -> [SKIP][130] +12 other tests skip
   [130]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-tglu-8/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-draw-render.html

  * igt@kms_frontbuffer_tracking@fbcpsr-indfb-scaledprimary:
    - shard-dg2:          NOTRUN -> [SKIP][131] ([i915#15102] / [i915#3458]) +6 other tests skip
   [131]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-dg2-7/igt@kms_frontbuffer_tracking@fbcpsr-indfb-scaledprimary.html

  * igt@kms_frontbuffer_tracking@fbcpsr-rgb101010-draw-mmap-wc:
    - shard-rkl:          NOTRUN -> [SKIP][132] ([i915#15102] / [i915#3023]) +11 other tests skip
   [132]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-3/igt@kms_frontbuffer_tracking@fbcpsr-rgb101010-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@fbcpsr-rgb101010-draw-render:
    - shard-tglu-1:       NOTRUN -> [SKIP][133] ([i915#15102]) +17 other tests skip
   [133]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-tglu-1/igt@kms_frontbuffer_tracking@fbcpsr-rgb101010-draw-render.html

  * igt@kms_frontbuffer_tracking@pipe-fbc-rte:
    - shard-rkl:          NOTRUN -> [SKIP][134] ([i915#9766])
   [134]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-3/igt@kms_frontbuffer_tracking@pipe-fbc-rte.html

  * igt@kms_frontbuffer_tracking@psr-1p-offscreen-pri-indfb-draw-render:
    - shard-dg2:          NOTRUN -> [SKIP][135] ([i915#15102])
   [135]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-dg2-7/igt@kms_frontbuffer_tracking@psr-1p-offscreen-pri-indfb-draw-render.html

  * igt@kms_frontbuffer_tracking@psr-1p-primscrn-indfb-plflip-blt:
    - shard-tglu:         NOTRUN -> [SKIP][136] ([i915#15102]) +3 other tests skip
   [136]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-tglu-6/igt@kms_frontbuffer_tracking@psr-1p-primscrn-indfb-plflip-blt.html

  * igt@kms_frontbuffer_tracking@psr-2p-primscrn-pri-shrfb-draw-mmap-gtt:
    - shard-dg2:          NOTRUN -> [SKIP][137] ([i915#8708]) +4 other tests skip
   [137]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-dg2-7/igt@kms_frontbuffer_tracking@psr-2p-primscrn-pri-shrfb-draw-mmap-gtt.html

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

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

  * igt@kms_hdr@static-toggle:
    - shard-tglu:         NOTRUN -> [SKIP][140] ([i915#3555] / [i915#8228])
   [140]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-tglu-8/igt@kms_hdr@static-toggle.html

  * igt@kms_joiner@invalid-modeset-force-big-joiner:
    - shard-rkl:          NOTRUN -> [SKIP][141] ([i915#15459])
   [141]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-3/igt@kms_joiner@invalid-modeset-force-big-joiner.html

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

  * igt@kms_pipe_crc_basic@suspend-read-crc:
    - shard-rkl:          [PASS][143] -> [INCOMPLETE][144] ([i915#12756] / [i915#13476])
   [143]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-rkl-4/igt@kms_pipe_crc_basic@suspend-read-crc.html
   [144]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-6/igt@kms_pipe_crc_basic@suspend-read-crc.html

  * igt@kms_pipe_crc_basic@suspend-read-crc@pipe-a-hdmi-a-2:
    - shard-rkl:          [PASS][145] -> [INCOMPLETE][146] ([i915#13476])
   [145]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-rkl-4/igt@kms_pipe_crc_basic@suspend-read-crc@pipe-a-hdmi-a-2.html
   [146]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-6/igt@kms_pipe_crc_basic@suspend-read-crc@pipe-a-hdmi-a-2.html

  * igt@kms_pipe_stress@stress-xrgb8888-yftiled:
    - shard-rkl:          NOTRUN -> [SKIP][147] ([i915#14712])
   [147]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-8/igt@kms_pipe_stress@stress-xrgb8888-yftiled.html

  * igt@kms_plane@pixel-format-4-tiled-dg2-mc-ccs-modifier-source-clamping:
    - shard-rkl:          NOTRUN -> [SKIP][148] ([i915#15709]) +1 other test skip
   [148]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-3/igt@kms_plane@pixel-format-4-tiled-dg2-mc-ccs-modifier-source-clamping.html

  * igt@kms_plane@pixel-format-4-tiled-mtl-rc-ccs-cc-modifier:
    - shard-dg2:          NOTRUN -> [SKIP][149] ([i915#15709]) +1 other test skip
   [149]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-dg2-7/igt@kms_plane@pixel-format-4-tiled-mtl-rc-ccs-cc-modifier.html

  * igt@kms_plane@pixel-format-4-tiled-mtl-rc-ccs-modifier-source-clamping:
    - shard-tglu-1:       NOTRUN -> [SKIP][150] ([i915#15709]) +3 other tests skip
   [150]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-tglu-1/igt@kms_plane@pixel-format-4-tiled-mtl-rc-ccs-modifier-source-clamping.html

  * igt@kms_plane@pixel-format-x-tiled-modifier@pipe-b-plane-5:
    - shard-rkl:          NOTRUN -> [SKIP][151] ([i915#15608]) +1 other test skip
   [151]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-4/igt@kms_plane@pixel-format-x-tiled-modifier@pipe-b-plane-5.html

  * igt@kms_plane@plane-panning-bottom-right-suspend@pipe-a:
    - shard-rkl:          [PASS][152] -> [INCOMPLETE][153] ([i915#14412]) +1 other test incomplete
   [152]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-rkl-2/igt@kms_plane@plane-panning-bottom-right-suspend@pipe-a.html
   [153]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-3/igt@kms_plane@plane-panning-bottom-right-suspend@pipe-a.html

  * igt@kms_plane_alpha_blend@alpha-basic:
    - shard-glk:          NOTRUN -> [FAIL][154] ([i915#12178])
   [154]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-glk2/igt@kms_plane_alpha_blend@alpha-basic.html

  * igt@kms_plane_alpha_blend@alpha-basic@pipe-a-hdmi-a-1:
    - shard-glk:          NOTRUN -> [FAIL][155] ([i915#7862]) +1 other test fail
   [155]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-glk2/igt@kms_plane_alpha_blend@alpha-basic@pipe-a-hdmi-a-1.html

  * igt@kms_plane_alpha_blend@alpha-transparent-fb:
    - shard-glk:          NOTRUN -> [FAIL][156] ([i915#10647] / [i915#12177])
   [156]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-glk9/igt@kms_plane_alpha_blend@alpha-transparent-fb.html

  * igt@kms_plane_alpha_blend@alpha-transparent-fb@pipe-a-hdmi-a-1:
    - shard-glk:          NOTRUN -> [FAIL][157] ([i915#10647]) +1 other test fail
   [157]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-glk9/igt@kms_plane_alpha_blend@alpha-transparent-fb@pipe-a-hdmi-a-1.html

  * igt@kms_plane_lowres@tiling-y:
    - shard-dg2:          NOTRUN -> [SKIP][158] ([i915#8821])
   [158]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-dg2-7/igt@kms_plane_lowres@tiling-y.html

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

  * igt@kms_plane_multiple@2x-tiling-x:
    - shard-tglu-1:       NOTRUN -> [SKIP][160] ([i915#13958])
   [160]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-tglu-1/igt@kms_plane_multiple@2x-tiling-x.html

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

  * igt@kms_plane_scaling@plane-downscale-factor-0-5-with-rotation@pipe-c:
    - shard-tglu:         NOTRUN -> [SKIP][162] ([i915#15329]) +4 other tests skip
   [162]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-tglu-6/igt@kms_plane_scaling@plane-downscale-factor-0-5-with-rotation@pipe-c.html

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

  * igt@kms_plane_scaling@plane-upscale-20x20-with-rotation@pipe-a:
    - shard-rkl:          NOTRUN -> [SKIP][164] ([i915#15329]) +3 other tests skip
   [164]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-7/igt@kms_plane_scaling@plane-upscale-20x20-with-rotation@pipe-a.html

  * igt@kms_pm_backlight@fade-with-dpms:
    - shard-tglu-1:       NOTRUN -> [SKIP][165] ([i915#9812]) +1 other test skip
   [165]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-tglu-1/igt@kms_pm_backlight@fade-with-dpms.html

  * igt@kms_pm_dc@dc6-dpms:
    - shard-rkl:          NOTRUN -> [FAIL][166] ([i915#15752])
   [166]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-4/igt@kms_pm_dc@dc6-dpms.html

  * igt@kms_pm_dc@dc6-psr:
    - shard-tglu:         NOTRUN -> [SKIP][167] ([i915#9685]) +1 other test skip
   [167]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-tglu-8/igt@kms_pm_dc@dc6-psr.html

  * igt@kms_pm_lpsp@kms-lpsp:
    - shard-glk10:        NOTRUN -> [SKIP][168] +48 other tests skip
   [168]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-glk10/igt@kms_pm_lpsp@kms-lpsp.html

  * igt@kms_pm_rpm@dpms-lpsp:
    - shard-dg2:          NOTRUN -> [SKIP][169] ([i915#15073])
   [169]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-dg2-7/igt@kms_pm_rpm@dpms-lpsp.html

  * igt@kms_pm_rpm@modeset-non-lpsp-stress-no-wait:
    - shard-rkl:          [PASS][170] -> [SKIP][171] ([i915#15073]) +1 other test skip
   [170]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-rkl-3/igt@kms_pm_rpm@modeset-non-lpsp-stress-no-wait.html
   [171]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-8/igt@kms_pm_rpm@modeset-non-lpsp-stress-no-wait.html
    - shard-dg1:          [PASS][172] -> [SKIP][173] ([i915#15073])
   [172]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-dg1-17/igt@kms_pm_rpm@modeset-non-lpsp-stress-no-wait.html
   [173]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-dg1-14/igt@kms_pm_rpm@modeset-non-lpsp-stress-no-wait.html

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

  * igt@kms_psr2_sf@fbc-pr-cursor-plane-move-continuous-sf:
    - shard-tglu:         NOTRUN -> [SKIP][175] ([i915#11520])
   [175]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-tglu-6/igt@kms_psr2_sf@fbc-pr-cursor-plane-move-continuous-sf.html

  * igt@kms_psr2_sf@fbc-pr-overlay-plane-move-continuous-sf:
    - shard-glk:          NOTRUN -> [SKIP][176] ([i915#11520]) +4 other tests skip
   [176]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-glk9/igt@kms_psr2_sf@fbc-pr-overlay-plane-move-continuous-sf.html

  * igt@kms_psr2_sf@fbc-pr-overlay-plane-update-continuous-sf:
    - shard-glk11:        NOTRUN -> [SKIP][177] ([i915#11520]) +1 other test skip
   [177]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-glk11/igt@kms_psr2_sf@fbc-pr-overlay-plane-update-continuous-sf.html

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

  * igt@kms_psr2_sf@fbc-psr2-plane-move-sf-dmg-area:
    - shard-dg2:          NOTRUN -> [SKIP][179] ([i915#11520]) +3 other tests skip
   [179]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-dg2-7/igt@kms_psr2_sf@fbc-psr2-plane-move-sf-dmg-area.html

  * igt@kms_psr2_sf@psr2-cursor-plane-update-sf:
    - shard-glk10:        NOTRUN -> [SKIP][180] ([i915#11520]) +1 other test skip
   [180]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-glk10/igt@kms_psr2_sf@psr2-cursor-plane-update-sf.html

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

  * igt@kms_psr2_su@page_flip-p010:
    - shard-tglu-1:       NOTRUN -> [SKIP][182] ([i915#9683])
   [182]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-tglu-1/igt@kms_psr2_su@page_flip-p010.html

  * igt@kms_psr2_su@page_flip-xrgb8888:
    - shard-rkl:          NOTRUN -> [SKIP][183] ([i915#9683])
   [183]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-3/igt@kms_psr2_su@page_flip-xrgb8888.html

  * igt@kms_psr@pr-cursor-blt:
    - shard-tglu:         NOTRUN -> [SKIP][184] ([i915#9732]) +1 other test skip
   [184]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-tglu-8/igt@kms_psr@pr-cursor-blt.html

  * igt@kms_psr@psr-sprite-plane-move:
    - shard-rkl:          NOTRUN -> [SKIP][185] ([i915#1072] / [i915#9732]) +17 other tests skip
   [185]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-3/igt@kms_psr@psr-sprite-plane-move.html

  * igt@kms_psr@psr2-cursor-mmap-gtt:
    - shard-tglu-1:       NOTRUN -> [SKIP][186] ([i915#9732]) +12 other tests skip
   [186]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-tglu-1/igt@kms_psr@psr2-cursor-mmap-gtt.html

  * igt@kms_psr@psr2-primary-mmap-gtt:
    - shard-dg2:          NOTRUN -> [SKIP][187] ([i915#1072] / [i915#9732]) +7 other tests skip
   [187]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-dg2-7/igt@kms_psr@psr2-primary-mmap-gtt.html

  * igt@kms_rotation_crc@multiplane-rotation:
    - shard-glk:          NOTRUN -> [INCOMPLETE][188] ([i915#15492])
   [188]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-glk2/igt@kms_rotation_crc@multiplane-rotation.html

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

  * igt@kms_rotation_crc@primary-rotation-270:
    - shard-dg2:          NOTRUN -> [SKIP][190] ([i915#12755] / [i915#15867]) +1 other test skip
   [190]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-dg2-7/igt@kms_rotation_crc@primary-rotation-270.html

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

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

  * igt@kms_vrr@flip-basic-fastset:
    - shard-tglu-1:       NOTRUN -> [SKIP][193] ([i915#9906])
   [193]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-tglu-1/igt@kms_vrr@flip-basic-fastset.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_165015v2/shard-rkl-3/igt@kms_vrr@flip-dpms.html

  * igt@kms_vrr@max-min:
    - shard-rkl:          NOTRUN -> [SKIP][195] ([i915#9906])
   [195]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-3/igt@kms_vrr@max-min.html

  * igt@perf@per-context-mode-unprivileged:
    - shard-dg2:          NOTRUN -> [SKIP][196] +2 other tests skip
   [196]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-dg2-7/igt@perf@per-context-mode-unprivileged.html

  * igt@perf_pmu@module-unload:
    - shard-tglu:         NOTRUN -> [ABORT][197] ([i915#15778])
   [197]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-tglu-6/igt@perf_pmu@module-unload.html

  * igt@sriov_basic@enable-vfs-autoprobe-on:
    - shard-dg2:          NOTRUN -> [SKIP][198] ([i915#9917])
   [198]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-dg2-7/igt@sriov_basic@enable-vfs-autoprobe-on.html

  
#### Possible fixes ####

  * igt@gem_ccs@suspend-resume@xmajor-compressed-compfmt0-smem-lmem0:
    - shard-dg2:          [INCOMPLETE][199] ([i915#12392] / [i915#13356]) -> [PASS][200]
   [199]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-dg2-4/igt@gem_ccs@suspend-resume@xmajor-compressed-compfmt0-smem-lmem0.html
   [200]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-dg2-3/igt@gem_ccs@suspend-resume@xmajor-compressed-compfmt0-smem-lmem0.html

  * igt@gem_exec_suspend@basic-s4-devices:
    - shard-dg2:          [ABORT][201] ([i915#7975]) -> [PASS][202] +1 other test pass
   [201]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-dg2-10/igt@gem_exec_suspend@basic-s4-devices.html
   [202]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-dg2-7/igt@gem_exec_suspend@basic-s4-devices.html

  * igt@gem_workarounds@suspend-resume-context:
    - shard-rkl:          [INCOMPLETE][203] ([i915#13356]) -> [PASS][204]
   [203]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-rkl-6/igt@gem_workarounds@suspend-resume-context.html
   [204]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-4/igt@gem_workarounds@suspend-resume-context.html

  * igt@i915_suspend@forcewake:
    - shard-rkl:          [INCOMPLETE][205] ([i915#4817]) -> [PASS][206]
   [205]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-rkl-6/igt@i915_suspend@forcewake.html
   [206]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-7/igt@i915_suspend@forcewake.html

  * igt@kms_flip@flip-vs-suspend:
    - shard-rkl:          [INCOMPLETE][207] ([i915#6113]) -> [PASS][208]
   [207]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-rkl-6/igt@kms_flip@flip-vs-suspend.html
   [208]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-8/igt@kms_flip@flip-vs-suspend.html

  * igt@kms_flip@plain-flip-ts-check:
    - shard-snb:          [FAIL][209] ([i915#10826]) -> [PASS][210] +1 other test pass
   [209]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-snb1/igt@kms_flip@plain-flip-ts-check.html
   [210]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-snb6/igt@kms_flip@plain-flip-ts-check.html

  * igt@kms_hdmi_inject@inject-audio:
    - shard-mtlp:         [SKIP][211] ([i915#15725]) -> [PASS][212]
   [211]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-mtlp-1/igt@kms_hdmi_inject@inject-audio.html
   [212]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-mtlp-4/igt@kms_hdmi_inject@inject-audio.html

  * igt@kms_hdr@bpc-switch:
    - shard-rkl:          [SKIP][213] ([i915#3555] / [i915#8228]) -> [PASS][214]
   [213]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-rkl-5/igt@kms_hdr@bpc-switch.html
   [214]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-6/igt@kms_hdr@bpc-switch.html

  * igt@kms_joiner@invalid-modeset-force-big-joiner:
    - shard-dg2:          [SKIP][215] ([i915#15459]) -> [PASS][216]
   [215]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-dg2-7/igt@kms_joiner@invalid-modeset-force-big-joiner.html
   [216]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-dg2-10/igt@kms_joiner@invalid-modeset-force-big-joiner.html

  * igt@kms_plane@plane-position-hole-dpms:
    - shard-dg1:          [DMESG-WARN][217] ([i915#4423]) -> [PASS][218] +1 other test pass
   [217]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-dg1-18/igt@kms_plane@plane-position-hole-dpms.html
   [218]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-dg1-17/igt@kms_plane@plane-position-hole-dpms.html

  * igt@kms_pm_lpsp@kms-lpsp:
    - shard-dg2:          [SKIP][219] ([i915#9340]) -> [PASS][220]
   [219]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-dg2-6/igt@kms_pm_lpsp@kms-lpsp.html
   [220]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-dg2-4/igt@kms_pm_lpsp@kms-lpsp.html

  * igt@kms_pm_rpm@modeset-lpsp-stress:
    - shard-rkl:          [SKIP][221] ([i915#15073]) -> [PASS][222] +3 other tests pass
   [221]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-rkl-4/igt@kms_pm_rpm@modeset-lpsp-stress.html
   [222]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-2/igt@kms_pm_rpm@modeset-lpsp-stress.html

  * igt@kms_pm_rpm@modeset-non-lpsp-stress-no-wait:
    - shard-dg2:          [SKIP][223] ([i915#15073]) -> [PASS][224]
   [223]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-dg2-4/igt@kms_pm_rpm@modeset-non-lpsp-stress-no-wait.html
   [224]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-dg2-3/igt@kms_pm_rpm@modeset-non-lpsp-stress-no-wait.html

  
#### Warnings ####

  * igt@gem_bad_reloc@negative-reloc-lut:
    - shard-rkl:          [SKIP][225] ([i915#3281]) -> [SKIP][226] ([i915#14544] / [i915#3281]) +5 other tests skip
   [225]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-rkl-5/igt@gem_bad_reloc@negative-reloc-lut.html
   [226]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-6/igt@gem_bad_reloc@negative-reloc-lut.html

  * igt@gem_ccs@block-multicopy-inplace:
    - shard-rkl:          [SKIP][227] ([i915#14544] / [i915#3555] / [i915#9323]) -> [SKIP][228] ([i915#3555] / [i915#9323])
   [227]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-rkl-6/igt@gem_ccs@block-multicopy-inplace.html
   [228]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-4/igt@gem_ccs@block-multicopy-inplace.html

  * igt@gem_ccs@ctrl-surf-copy-new-ctx:
    - shard-rkl:          [SKIP][229] ([i915#14544] / [i915#9323]) -> [SKIP][230] ([i915#9323])
   [229]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-rkl-6/igt@gem_ccs@ctrl-surf-copy-new-ctx.html
   [230]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-8/igt@gem_ccs@ctrl-surf-copy-new-ctx.html

  * igt@gem_close_race@multigpu-basic-process:
    - shard-rkl:          [SKIP][231] ([i915#7697]) -> [SKIP][232] ([i915#14544] / [i915#7697])
   [231]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-rkl-3/igt@gem_close_race@multigpu-basic-process.html
   [232]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-6/igt@gem_close_race@multigpu-basic-process.html

  * igt@gem_ctx_sseu@invalid-args:
    - shard-rkl:          [SKIP][233] ([i915#280]) -> [SKIP][234] ([i915#14544] / [i915#280])
   [233]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-rkl-5/igt@gem_ctx_sseu@invalid-args.html
   [234]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-6/igt@gem_ctx_sseu@invalid-args.html

  * igt@gem_exec_reloc@basic-gtt-cpu:
    - shard-rkl:          [SKIP][235] ([i915#14544] / [i915#3281]) -> [SKIP][236] ([i915#3281]) +6 other tests skip
   [235]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-rkl-6/igt@gem_exec_reloc@basic-gtt-cpu.html
   [236]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-7/igt@gem_exec_reloc@basic-gtt-cpu.html

  * igt@gem_lmem_swapping@basic:
    - shard-rkl:          [SKIP][237] ([i915#14544] / [i915#4613]) -> [SKIP][238] ([i915#4613])
   [237]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-rkl-6/igt@gem_lmem_swapping@basic.html
   [238]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-7/igt@gem_lmem_swapping@basic.html

  * igt@gem_lmem_swapping@massive-random:
    - shard-rkl:          [SKIP][239] ([i915#4613]) -> [SKIP][240] ([i915#14544] / [i915#4613]) +1 other test skip
   [239]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-rkl-5/igt@gem_lmem_swapping@massive-random.html
   [240]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-6/igt@gem_lmem_swapping@massive-random.html

  * igt@gem_partial_pwrite_pread@reads:
    - shard-rkl:          [SKIP][241] ([i915#3282]) -> [SKIP][242] ([i915#14544] / [i915#3282]) +1 other test skip
   [241]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-rkl-3/igt@gem_partial_pwrite_pread@reads.html
   [242]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-6/igt@gem_partial_pwrite_pread@reads.html

  * igt@gem_userptr_blits@invalid-mmap-offset-unsync:
    - shard-rkl:          [SKIP][243] ([i915#3297]) -> [SKIP][244] ([i915#14544] / [i915#3297])
   [243]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-rkl-4/igt@gem_userptr_blits@invalid-mmap-offset-unsync.html
   [244]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-6/igt@gem_userptr_blits@invalid-mmap-offset-unsync.html

  * igt@gen9_exec_parse@bb-start-param:
    - shard-rkl:          [SKIP][245] ([i915#2527]) -> [SKIP][246] ([i915#14544] / [i915#2527])
   [245]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-rkl-3/igt@gen9_exec_parse@bb-start-param.html
   [246]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-6/igt@gen9_exec_parse@bb-start-param.html

  * igt@gen9_exec_parse@shadow-peek:
    - shard-rkl:          [SKIP][247] ([i915#14544] / [i915#2527]) -> [SKIP][248] ([i915#2527]) +1 other test skip
   [247]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-rkl-6/igt@gen9_exec_parse@shadow-peek.html
   [248]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-4/igt@gen9_exec_parse@shadow-peek.html

  * igt@kms_big_fb@4-tiled-addfb-size-overflow:
    - shard-rkl:          [SKIP][249] ([i915#5286]) -> [SKIP][250] ([i915#14544] / [i915#5286]) +3 other tests skip
   [249]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-rkl-4/igt@kms_big_fb@4-tiled-addfb-size-overflow.html
   [250]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-6/igt@kms_big_fb@4-tiled-addfb-size-overflow.html

  * igt@kms_big_fb@linear-8bpp-rotate-270:
    - shard-rkl:          [SKIP][251] ([i915#3638]) -> [SKIP][252] ([i915#14544] / [i915#3638])
   [251]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-rkl-3/igt@kms_big_fb@linear-8bpp-rotate-270.html
   [252]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-6/igt@kms_big_fb@linear-8bpp-rotate-270.html

  * igt@kms_big_fb@linear-max-hw-stride-32bpp-rotate-180-hflip:
    - shard-rkl:          [SKIP][253] ([i915#14544] / [i915#3828]) -> [SKIP][254] ([i915#3828])
   [253]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-rkl-6/igt@kms_big_fb@linear-max-hw-stride-32bpp-rotate-180-hflip.html
   [254]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-8/igt@kms_big_fb@linear-max-hw-stride-32bpp-rotate-180-hflip.html

  * igt@kms_big_fb@linear-max-hw-stride-64bpp-rotate-0-hflip:
    - shard-dg1:          [SKIP][255] ([i915#3828] / [i915#4423]) -> [SKIP][256] ([i915#3828])
   [255]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-dg1-13/igt@kms_big_fb@linear-max-hw-stride-64bpp-rotate-0-hflip.html
   [256]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-dg1-15/igt@kms_big_fb@linear-max-hw-stride-64bpp-rotate-0-hflip.html

  * igt@kms_big_fb@yf-tiled-16bpp-rotate-180:
    - shard-rkl:          [SKIP][257] ([i915#14544]) -> [SKIP][258] +2 other tests skip
   [257]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-rkl-6/igt@kms_big_fb@yf-tiled-16bpp-rotate-180.html
   [258]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-4/igt@kms_big_fb@yf-tiled-16bpp-rotate-180.html

  * igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-0-hflip-async-flip:
    - shard-dg1:          [SKIP][259] ([i915#4538]) -> [SKIP][260] ([i915#4423] / [i915#4538])
   [259]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-dg1-19/igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-0-hflip-async-flip.html
   [260]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-dg1-13/igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-0-hflip-async-flip.html

  * igt@kms_ccs@bad-aux-stride-yf-tiled-ccs@pipe-b-hdmi-a-2:
    - shard-rkl:          [SKIP][261] ([i915#6095]) -> [SKIP][262] ([i915#14544] / [i915#6095]) +5 other tests skip
   [261]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-rkl-3/igt@kms_ccs@bad-aux-stride-yf-tiled-ccs@pipe-b-hdmi-a-2.html
   [262]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-6/igt@kms_ccs@bad-aux-stride-yf-tiled-ccs@pipe-b-hdmi-a-2.html

  * igt@kms_ccs@ccs-on-another-bo-yf-tiled-ccs@pipe-a-hdmi-a-2:
    - shard-rkl:          [SKIP][263] ([i915#14544] / [i915#6095]) -> [SKIP][264] ([i915#6095]) +4 other tests skip
   [263]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-rkl-6/igt@kms_ccs@ccs-on-another-bo-yf-tiled-ccs@pipe-a-hdmi-a-2.html
   [264]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-7/igt@kms_ccs@ccs-on-another-bo-yf-tiled-ccs@pipe-a-hdmi-a-2.html

  * igt@kms_ccs@ccs-on-another-bo-yf-tiled-ccs@pipe-c-hdmi-a-2:
    - shard-rkl:          [SKIP][265] ([i915#14098] / [i915#14544] / [i915#6095]) -> [SKIP][266] ([i915#14098] / [i915#6095]) +5 other tests skip
   [265]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-rkl-6/igt@kms_ccs@ccs-on-another-bo-yf-tiled-ccs@pipe-c-hdmi-a-2.html
   [266]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-7/igt@kms_ccs@ccs-on-another-bo-yf-tiled-ccs@pipe-c-hdmi-a-2.html

  * igt@kms_ccs@crc-primary-suspend-4-tiled-lnl-ccs:
    - shard-rkl:          [SKIP][267] ([i915#12805]) -> [SKIP][268] ([i915#12805] / [i915#14544])
   [267]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-rkl-5/igt@kms_ccs@crc-primary-suspend-4-tiled-lnl-ccs.html
   [268]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-6/igt@kms_ccs@crc-primary-suspend-4-tiled-lnl-ccs.html

  * igt@kms_ccs@crc-primary-suspend-y-tiled-ccs@pipe-a-hdmi-a-1:
    - shard-glk:          [INCOMPLETE][269] ([i915#14694] / [i915#15582]) -> [INCOMPLETE][270] ([i915#15582]) +1 other test incomplete
   [269]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-glk1/igt@kms_ccs@crc-primary-suspend-y-tiled-ccs@pipe-a-hdmi-a-1.html
   [270]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-glk5/igt@kms_ccs@crc-primary-suspend-y-tiled-ccs@pipe-a-hdmi-a-1.html

  * igt@kms_ccs@crc-sprite-planes-basic-y-tiled-gen12-mc-ccs@pipe-c-hdmi-a-2:
    - shard-rkl:          [SKIP][271] ([i915#14098] / [i915#6095]) -> [SKIP][272] ([i915#14098] / [i915#14544] / [i915#6095]) +7 other tests skip
   [271]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-rkl-4/igt@kms_ccs@crc-sprite-planes-basic-y-tiled-gen12-mc-ccs@pipe-c-hdmi-a-2.html
   [272]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-6/igt@kms_ccs@crc-sprite-planes-basic-y-tiled-gen12-mc-ccs@pipe-c-hdmi-a-2.html

  * igt@kms_ccs@missing-ccs-buffer-4-tiled-mtl-mc-ccs:
    - shard-dg1:          [SKIP][273] ([i915#4423] / [i915#6095]) -> [SKIP][274] ([i915#6095])
   [273]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-dg1-16/igt@kms_ccs@missing-ccs-buffer-4-tiled-mtl-mc-ccs.html
   [274]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-dg1-13/igt@kms_ccs@missing-ccs-buffer-4-tiled-mtl-mc-ccs.html

  * igt@kms_chamelium_edid@hdmi-mode-timings:
    - shard-dg1:          [SKIP][275] ([i915#11151] / [i915#7828]) -> [SKIP][276] ([i915#11151] / [i915#4423] / [i915#7828])
   [275]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-dg1-19/igt@kms_chamelium_edid@hdmi-mode-timings.html
   [276]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-dg1-13/igt@kms_chamelium_edid@hdmi-mode-timings.html

  * igt@kms_chamelium_frames@hdmi-crc-multiple:
    - shard-rkl:          [SKIP][277] ([i915#11151] / [i915#7828]) -> [SKIP][278] ([i915#11151] / [i915#14544] / [i915#7828]) +6 other tests skip
   [277]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-rkl-5/igt@kms_chamelium_frames@hdmi-crc-multiple.html
   [278]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-6/igt@kms_chamelium_frames@hdmi-crc-multiple.html

  * igt@kms_chamelium_frames@hdmi-crc-nonplanar-formats:
    - shard-rkl:          [SKIP][279] ([i915#11151] / [i915#14544] / [i915#7828]) -> [SKIP][280] ([i915#11151] / [i915#7828]) +1 other test skip
   [279]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-rkl-6/igt@kms_chamelium_frames@hdmi-crc-nonplanar-formats.html
   [280]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-7/igt@kms_chamelium_frames@hdmi-crc-nonplanar-formats.html

  * igt@kms_content_protection@dp-mst-type-0:
    - shard-rkl:          [SKIP][281] ([i915#15330] / [i915#3116]) -> [SKIP][282] ([i915#14544] / [i915#15330] / [i915#3116])
   [281]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-rkl-3/igt@kms_content_protection@dp-mst-type-0.html
   [282]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-6/igt@kms_content_protection@dp-mst-type-0.html

  * igt@kms_content_protection@mei-interface:
    - shard-rkl:          [SKIP][283] ([i915#15865]) -> [SKIP][284] ([i915#14544] / [i915#15865]) +1 other test skip
   [283]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-rkl-5/igt@kms_content_protection@mei-interface.html
   [284]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-6/igt@kms_content_protection@mei-interface.html

  * igt@kms_cursor_crc@cursor-onscreen-32x32:
    - shard-rkl:          [SKIP][285] ([i915#3555]) -> [SKIP][286] ([i915#14544] / [i915#3555]) +2 other tests skip
   [285]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-rkl-7/igt@kms_cursor_crc@cursor-onscreen-32x32.html
   [286]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-6/igt@kms_cursor_crc@cursor-onscreen-32x32.html

  * igt@kms_cursor_crc@cursor-random-512x512:
    - shard-rkl:          [SKIP][287] ([i915#13049]) -> [SKIP][288] ([i915#13049] / [i915#14544])
   [287]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-rkl-3/igt@kms_cursor_crc@cursor-random-512x512.html
   [288]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-6/igt@kms_cursor_crc@cursor-random-512x512.html

  * igt@kms_cursor_legacy@2x-flip-vs-cursor-legacy:
    - shard-rkl:          [SKIP][289] -> [SKIP][290] ([i915#14544]) +14 other tests skip
   [289]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-rkl-5/igt@kms_cursor_legacy@2x-flip-vs-cursor-legacy.html
   [290]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-6/igt@kms_cursor_legacy@2x-flip-vs-cursor-legacy.html

  * igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions:
    - shard-rkl:          [SKIP][291] ([i915#4103]) -> [SKIP][292] ([i915#14544] / [i915#4103])
   [291]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-rkl-5/igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions.html
   [292]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-6/igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions.html

  * igt@kms_dirtyfb@psr-dirtyfb-ioctl:
    - shard-rkl:          [SKIP][293] ([i915#14544] / [i915#9723]) -> [SKIP][294] ([i915#9723])
   [293]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-rkl-6/igt@kms_dirtyfb@psr-dirtyfb-ioctl.html
   [294]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-4/igt@kms_dirtyfb@psr-dirtyfb-ioctl.html

  * igt@kms_dp_link_training@non-uhbr-sst:
    - shard-rkl:          [SKIP][295] ([i915#13749] / [i915#14544]) -> [SKIP][296] ([i915#13749])
   [295]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-rkl-6/igt@kms_dp_link_training@non-uhbr-sst.html
   [296]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-7/igt@kms_dp_link_training@non-uhbr-sst.html

  * igt@kms_dsc@dsc-fractional-bpp-with-bpc:
    - shard-rkl:          [SKIP][297] ([i915#3840]) -> [SKIP][298] ([i915#14544] / [i915#3840])
   [297]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-rkl-5/igt@kms_dsc@dsc-fractional-bpp-with-bpc.html
   [298]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-6/igt@kms_dsc@dsc-fractional-bpp-with-bpc.html

  * igt@kms_dsc@dsc-with-output-formats-with-bpc:
    - shard-rkl:          [SKIP][299] ([i915#3840] / [i915#9053]) -> [SKIP][300] ([i915#14544] / [i915#3840] / [i915#9053])
   [299]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-rkl-4/igt@kms_dsc@dsc-with-output-formats-with-bpc.html
   [300]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-6/igt@kms_dsc@dsc-with-output-formats-with-bpc.html

  * igt@kms_feature_discovery@chamelium:
    - shard-rkl:          [SKIP][301] ([i915#14544] / [i915#4854]) -> [SKIP][302] ([i915#4854])
   [301]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-rkl-6/igt@kms_feature_discovery@chamelium.html
   [302]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-7/igt@kms_feature_discovery@chamelium.html

  * igt@kms_flip@2x-flip-vs-panning-vs-hang:
    - shard-rkl:          [SKIP][303] ([i915#9934]) -> [SKIP][304] ([i915#14544] / [i915#9934]) +5 other tests skip
   [303]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-rkl-4/igt@kms_flip@2x-flip-vs-panning-vs-hang.html
   [304]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-6/igt@kms_flip@2x-flip-vs-panning-vs-hang.html

  * igt@kms_flip@2x-flip-vs-suspend-interruptible:
    - shard-glk:          [INCOMPLETE][305] ([i915#12745] / [i915#4839]) -> [INCOMPLETE][306] ([i915#12314] / [i915#12745] / [i915#4839])
   [305]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-glk9/igt@kms_flip@2x-flip-vs-suspend-interruptible.html
   [306]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-glk8/igt@kms_flip@2x-flip-vs-suspend-interruptible.html

  * igt@kms_flip@2x-flip-vs-suspend-interruptible@ac-hdmi-a1-hdmi-a2:
    - shard-glk:          [INCOMPLETE][307] ([i915#12745]) -> [INCOMPLETE][308] ([i915#12314] / [i915#12745])
   [307]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-glk9/igt@kms_flip@2x-flip-vs-suspend-interruptible@ac-hdmi-a1-hdmi-a2.html
   [308]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-glk8/igt@kms_flip@2x-flip-vs-suspend-interruptible@ac-hdmi-a1-hdmi-a2.html

  * igt@kms_flip@2x-wf_vblank-ts-check-interruptible:
    - shard-rkl:          [SKIP][309] ([i915#14544] / [i915#9934]) -> [SKIP][310] ([i915#9934]) +1 other test skip
   [309]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-rkl-6/igt@kms_flip@2x-wf_vblank-ts-check-interruptible.html
   [310]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-7/igt@kms_flip@2x-wf_vblank-ts-check-interruptible.html

  * igt@kms_flip@flip-vs-suspend:
    - shard-glk:          [INCOMPLETE][311] ([i915#12745] / [i915#4839] / [i915#6113]) -> [INCOMPLETE][312] ([i915#12745] / [i915#4839])
   [311]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-glk3/igt@kms_flip@flip-vs-suspend.html
   [312]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-glk4/igt@kms_flip@flip-vs-suspend.html

  * igt@kms_flip@flip-vs-suspend@a-hdmi-a1:
    - shard-glk:          [INCOMPLETE][313] ([i915#12745] / [i915#6113]) -> [INCOMPLETE][314] ([i915#12745])
   [313]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-glk3/igt@kms_flip@flip-vs-suspend@a-hdmi-a1.html
   [314]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-glk4/igt@kms_flip@flip-vs-suspend@a-hdmi-a1.html

  * igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-32bpp-yftile-upscaling:
    - shard-rkl:          [SKIP][315] ([i915#15643]) -> [SKIP][316] ([i915#14544] / [i915#15643]) +2 other tests skip
   [315]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-rkl-5/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-32bpp-yftile-upscaling.html
   [316]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-6/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-32bpp-yftile-upscaling.html

  * igt@kms_frontbuffer_tracking@fbc-2p-primscrn-pri-shrfb-draw-mmap-wc:
    - shard-dg1:          [SKIP][317] ([i915#4423] / [i915#8708]) -> [SKIP][318] ([i915#8708])
   [317]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-dg1-16/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-pri-shrfb-draw-mmap-wc.html
   [318]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-dg1-13/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-pri-shrfb-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@fbcpsr-1p-offscreen-pri-indfb-draw-mmap-cpu:
    - shard-rkl:          [SKIP][319] ([i915#15102]) -> [SKIP][320] ([i915#14544] / [i915#15102])
   [319]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-rkl-4/igt@kms_frontbuffer_tracking@fbcpsr-1p-offscreen-pri-indfb-draw-mmap-cpu.html
   [320]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-6/igt@kms_frontbuffer_tracking@fbcpsr-1p-offscreen-pri-indfb-draw-mmap-cpu.html

  * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-indfb-draw-mmap-cpu:
    - shard-dg2:          [SKIP][321] ([i915#15102] / [i915#3458]) -> [SKIP][322] ([i915#10433] / [i915#15102] / [i915#3458])
   [321]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-dg2-5/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-indfb-draw-mmap-cpu.html
   [322]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-dg2-4/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-indfb-draw-mmap-cpu.html

  * igt@kms_frontbuffer_tracking@fbcpsr-1p-rte:
    - shard-rkl:          [SKIP][323] ([i915#14544] / [i915#15102] / [i915#3023]) -> [SKIP][324] ([i915#15102] / [i915#3023]) +5 other tests skip
   [323]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-rkl-6/igt@kms_frontbuffer_tracking@fbcpsr-1p-rte.html
   [324]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-7/igt@kms_frontbuffer_tracking@fbcpsr-1p-rte.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-shrfb-pgflip-blt:
    - shard-rkl:          [SKIP][325] ([i915#1825]) -> [SKIP][326] ([i915#14544] / [i915#1825]) +20 other tests skip
   [325]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-rkl-5/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-shrfb-pgflip-blt.html
   [326]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-6/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-shrfb-pgflip-blt.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-onoff:
    - shard-dg1:          [SKIP][327] ([i915#4423]) -> [SKIP][328]
   [327]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-dg1-16/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-onoff.html
   [328]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-dg1-13/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-onoff.html

  * igt@kms_frontbuffer_tracking@fbcpsr-rgb565-draw-render:
    - shard-dg2:          [SKIP][329] ([i915#10433] / [i915#15102] / [i915#3458]) -> [SKIP][330] ([i915#15102] / [i915#3458])
   [329]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-dg2-4/igt@kms_frontbuffer_tracking@fbcpsr-rgb565-draw-render.html
   [330]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-dg2-3/igt@kms_frontbuffer_tracking@fbcpsr-rgb565-draw-render.html

  * igt@kms_frontbuffer_tracking@psr-1p-primscrn-indfb-plflip-blt:
    - shard-rkl:          [SKIP][331] ([i915#15102] / [i915#3023]) -> [SKIP][332] ([i915#14544] / [i915#15102] / [i915#3023]) +10 other tests skip
   [331]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-rkl-3/igt@kms_frontbuffer_tracking@psr-1p-primscrn-indfb-plflip-blt.html
   [332]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-6/igt@kms_frontbuffer_tracking@psr-1p-primscrn-indfb-plflip-blt.html

  * igt@kms_frontbuffer_tracking@psr-2p-scndscrn-indfb-msflip-blt:
    - shard-rkl:          [SKIP][333] ([i915#14544] / [i915#1825]) -> [SKIP][334] ([i915#1825]) +13 other tests skip
   [333]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-rkl-6/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-indfb-msflip-blt.html
   [334]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-7/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-indfb-msflip-blt.html

  * igt@kms_hdr@brightness-with-hdr:
    - shard-rkl:          [SKIP][335] ([i915#12713]) -> [SKIP][336] ([i915#13331] / [i915#14544])
   [335]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-rkl-7/igt@kms_hdr@brightness-with-hdr.html
   [336]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-6/igt@kms_hdr@brightness-with-hdr.html
    - shard-dg1:          [SKIP][337] ([i915#12713]) -> [SKIP][338] ([i915#1187] / [i915#12713])
   [337]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-dg1-16/igt@kms_hdr@brightness-with-hdr.html
   [338]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-dg1-13/igt@kms_hdr@brightness-with-hdr.html

  * igt@kms_joiner@basic-big-joiner:
    - shard-rkl:          [SKIP][339] ([i915#15460]) -> [SKIP][340] ([i915#14544] / [i915#15460])
   [339]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-rkl-5/igt@kms_joiner@basic-big-joiner.html
   [340]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-6/igt@kms_joiner@basic-big-joiner.html

  * igt@kms_plane@pixel-format-4-tiled-mtl-rc-ccs-cc-modifier-source-clamping@pipe-a-plane-0:
    - shard-mtlp:         [DMESG-WARN][341] ([i915#13562]) -> [ABORT][342] ([i915#13562])
   [341]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-mtlp-2/igt@kms_plane@pixel-format-4-tiled-mtl-rc-ccs-cc-modifier-source-clamping@pipe-a-plane-0.html
   [342]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-mtlp-6/igt@kms_plane@pixel-format-4-tiled-mtl-rc-ccs-cc-modifier-source-clamping@pipe-a-plane-0.html

  * igt@kms_plane@pixel-format-y-tiled-ccs-modifier:
    - shard-rkl:          [SKIP][343] ([i915#15709]) -> [SKIP][344] ([i915#14544] / [i915#15709]) +1 other test skip
   [343]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-rkl-5/igt@kms_plane@pixel-format-y-tiled-ccs-modifier.html
   [344]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-6/igt@kms_plane@pixel-format-y-tiled-ccs-modifier.html

  * igt@kms_plane_multiple@2x-tiling-none:
    - shard-rkl:          [SKIP][345] ([i915#13958]) -> [SKIP][346] ([i915#13958] / [i915#14544])
   [345]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-rkl-3/igt@kms_plane_multiple@2x-tiling-none.html
   [346]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-6/igt@kms_plane_multiple@2x-tiling-none.html

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

  * igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-rotation:
    - shard-rkl:          [SKIP][349] ([i915#15329] / [i915#3555]) -> [SKIP][350] ([i915#14544] / [i915#15329] / [i915#3555])
   [349]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-rkl-4/igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-rotation.html
   [350]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-6/igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-rotation.html

  * igt@kms_pm_backlight@brightness-with-dpms:
    - shard-rkl:          [SKIP][351] ([i915#12343]) -> [SKIP][352] ([i915#12343] / [i915#14544])
   [351]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-rkl-4/igt@kms_pm_backlight@brightness-with-dpms.html
   [352]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-6/igt@kms_pm_backlight@brightness-with-dpms.html

  * igt@kms_pm_dc@dc5-psr:
    - shard-rkl:          [SKIP][353] ([i915#9685]) -> [SKIP][354] ([i915#14544] / [i915#9685])
   [353]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-rkl-3/igt@kms_pm_dc@dc5-psr.html
   [354]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-6/igt@kms_pm_dc@dc5-psr.html

  * igt@kms_pm_dc@dc9-dpms:
    - shard-rkl:          [SKIP][355] ([i915#15739]) -> [SKIP][356] ([i915#14544] / [i915#15739])
   [355]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-rkl-5/igt@kms_pm_dc@dc9-dpms.html
   [356]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-6/igt@kms_pm_dc@dc9-dpms.html

  * igt@kms_pm_lpsp@kms-lpsp:
    - shard-dg1:          [SKIP][357] ([i915#9340]) -> [SKIP][358] ([i915#3828])
   [357]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-dg1-13/igt@kms_pm_lpsp@kms-lpsp.html
   [358]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-dg1-15/igt@kms_pm_lpsp@kms-lpsp.html

  * igt@kms_pm_rpm@dpms-lpsp:
    - shard-rkl:          [SKIP][359] ([i915#15073]) -> [SKIP][360] ([i915#14544] / [i915#15073])
   [359]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-rkl-7/igt@kms_pm_rpm@dpms-lpsp.html
   [360]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-6/igt@kms_pm_rpm@dpms-lpsp.html

  * igt@kms_prime@d3hot:
    - shard-rkl:          [SKIP][361] ([i915#6524]) -> [SKIP][362] ([i915#14544] / [i915#6524])
   [361]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-rkl-4/igt@kms_prime@d3hot.html
   [362]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-6/igt@kms_prime@d3hot.html

  * igt@kms_psr2_sf@fbc-pr-primary-plane-update-sf-dmg-area:
    - shard-rkl:          [SKIP][363] ([i915#11520]) -> [SKIP][364] ([i915#11520] / [i915#14544]) +3 other tests skip
   [363]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-rkl-5/igt@kms_psr2_sf@fbc-pr-primary-plane-update-sf-dmg-area.html
   [364]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-6/igt@kms_psr2_sf@fbc-pr-primary-plane-update-sf-dmg-area.html

  * igt@kms_psr2_sf@fbc-psr2-cursor-plane-move-continuous-exceed-sf:
    - shard-rkl:          [SKIP][365] ([i915#11520] / [i915#14544]) -> [SKIP][366] ([i915#11520])
   [365]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-rkl-6/igt@kms_psr2_sf@fbc-psr2-cursor-plane-move-continuous-exceed-sf.html
   [366]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-4/igt@kms_psr2_sf@fbc-psr2-cursor-plane-move-continuous-exceed-sf.html

  * igt@kms_psr@psr-cursor-mmap-cpu:
    - shard-rkl:          [SKIP][367] ([i915#1072] / [i915#14544] / [i915#9732]) -> [SKIP][368] ([i915#1072] / [i915#9732]) +4 other tests skip
   [367]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-rkl-6/igt@kms_psr@psr-cursor-mmap-cpu.html
   [368]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-4/igt@kms_psr@psr-cursor-mmap-cpu.html

  * igt@kms_psr@psr2-cursor-blt:
    - shard-rkl:          [SKIP][369] ([i915#1072] / [i915#9732]) -> [SKIP][370] ([i915#1072] / [i915#14544] / [i915#9732]) +11 other tests skip
   [369]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-rkl-4/igt@kms_psr@psr2-cursor-blt.html
   [370]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-6/igt@kms_psr@psr2-cursor-blt.html

  * igt@kms_psr@psr2-primary-page-flip:
    - shard-dg1:          [SKIP][371] ([i915#1072] / [i915#4423] / [i915#9732]) -> [SKIP][372] ([i915#1072] / [i915#9732])
   [371]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-dg1-18/igt@kms_psr@psr2-primary-page-flip.html
   [372]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-dg1-17/igt@kms_psr@psr2-primary-page-flip.html

  * igt@kms_rotation_crc@primary-4-tiled-reflect-x-180:
    - shard-rkl:          [SKIP][373] ([i915#5289]) -> [SKIP][374] ([i915#14544] / [i915#5289])
   [373]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-rkl-3/igt@kms_rotation_crc@primary-4-tiled-reflect-x-180.html
   [374]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-6/igt@kms_rotation_crc@primary-4-tiled-reflect-x-180.html

  * igt@kms_rotation_crc@primary-yf-tiled-reflect-x-270:
    - shard-dg2:          [SKIP][375] ([i915#12755] / [i915#15867] / [i915#5190]) -> [SKIP][376] ([i915#15867] / [i915#5190])
   [375]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-dg2-7/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-270.html
   [376]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-dg2-10/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-270.html

  * igt@kms_vrr@seamless-rr-switch-vrr:
    - shard-rkl:          [SKIP][377] ([i915#9906]) -> [SKIP][378] ([i915#14544] / [i915#9906])
   [377]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18350/shard-rkl-5/igt@kms_vrr@seamless-rr-switch-vrr.html
   [378]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_165015v2/shard-rkl-6/igt@kms_vrr@seamless-rr-switch-vrr.html

  
  [i915#10307]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10307
  [i915#10433]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10433
  [i915#10434]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10434
  [i915#10647]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10647
  [i915#1072]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1072
  [i915#10826]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10826
  [i915#11151]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11151
  [i915#11520]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11520
  [i915#11681]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11681
  [i915#1187]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1187
  [i915#12177]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12177
  [i915#12178]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12178
  [i915#12313]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12313
  [i915#12314]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12314
  [i915#12343]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12343
  [i915#12358]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12358
  [i915#12392]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12392
  [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#12805]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12805
  [i915#13008]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13008
  [i915#13046]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13046
  [i915#13049]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13049
  [i915#13331]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13331
  [i915#13356]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13356
  [i915#13398]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13398
  [i915#13476]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13476
  [i915#13562]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13562
  [i915#13566]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13566
  [i915#13691]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13691
  [i915#13707]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13707
  [i915#13748]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13748
  [i915#13749]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13749
  [i915#13958]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13958
  [i915#14098]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14098
  [i915#14152]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14152
  [i915#14412]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14412
  [i915#14498]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14498
  [i915#14544]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14544
  [i915#14600]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14600
  [i915#14694]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14694
  [i915#14712]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14712
  [i915#15073]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15073
  [i915#15102]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15102
  [i915#15104]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15104
  [i915#15243]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15243
  [i915#15329]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15329
  [i915#15330]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15330
  [i915#15389]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15389
  [i915#15459]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15459
  [i915#15460]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15460
  [i915#15492]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15492
  [i915#15582]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15582
  [i915#15608]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15608
  [i915#15643]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15643
  [i915#15709]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15709
  [i915#15725]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15725
  [i915#15726]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15726
  [i915#15739]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15739
  [i915#15752]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15752
  [i915#15778]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15778
  [i915#15865]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15865
  [i915#15867]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15867
  [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#2190]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2190
  [i915#2527]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2527
  [i915#280]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/280
  [i915#284]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/284
  [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#3299]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3299
  [i915#3458]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3458
  [i915#3539]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3539
  [i915#3555]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3555
  [i915#3637]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3637
  [i915#3638]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3638
  [i915#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#3955]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3955
  [i915#4077]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4077
  [i915#4103]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4103
  [i915#4270]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4270
  [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#4852]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4852
  [i915#4854]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4854
  [i915#4880]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4880
  [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#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#6245]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6245
  [i915#6301]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6301
  [i915#6334]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6334
  [i915#6335]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6335
  [i915#6524]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6524
  [i915#6621]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6621
  [i915#6880]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6880
  [i915#7443]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7443
  [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#7862]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7862
  [i915#7975]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7975
  [i915#8228]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8228
  [i915#8381]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8381
  [i915#8399]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8399
  [i915#8411]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8411
  [i915#8428]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8428
  [i915#8708]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8708
  [i915#8821]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8821
  [i915#9053]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9053
  [i915#9067]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9067
  [i915#9323]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9323
  [i915#9337]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9337
  [i915#9340]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9340
  [i915#9683]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9683
  [i915#9685]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9685
  [i915#9723]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9723
  [i915#9732]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9732
  [i915#9766]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9766
  [i915#9812]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9812
  [i915#9906]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9906
  [i915#9917]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9917
  [i915#9934]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9934
  [i915#9979]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9979


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

  * Linux: CI_DRM_18350 -> Patchwork_165015v2

  CI-20190529: 20190529
  CI_DRM_18350: 898b5aa235c5b269d6c745fd84270b296aa75469 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGT_8863: 5b279a8b71dc1672099205a1a9e8135c7c7fadb5 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  Patchwork_165015v2: 898b5aa235c5b269d6c745fd84270b296aa75469 @ 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_165015v2/index.html

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

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

end of thread, other threads:[~2026-04-21 13:56 UTC | newest]

Thread overview: 28+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-04-16 17:44 [PATCH 00/11] drm/i915: Eliminate FB usage from low level pinning code Ville Syrjala
2026-04-16 17:44 ` [PATCH 01/11] drm/xe/fb: Use the correct gtt view for remapped FBs Ville Syrjala
2026-04-16 17:44 ` [PATCH 02/11] drm/i915: Introduce struct intel_fb_pin_params Ville Syrjala
2026-04-17  9:40   ` Jani Nikula
2026-04-16 17:44 ` [PATCH 03/11] drm/i915: Extract intel_fb_needs_cpu_access() Ville Syrjala
2026-04-17  9:40   ` Jani Nikula
2026-04-16 17:44 ` [PATCH 04/11] drm/i915: Introduce pin_params.needs_cpu_lmem_access Ville Syrjala
2026-04-17  9:39   ` Jani Nikula
2026-04-17 11:33     ` Ville Syrjälä
2026-04-17 16:19       ` Ville Syrjälä
2026-04-16 17:44 ` [PATCH 05/11] drm/i915: Extract intel_plane_needs_low_address() Ville Syrjala
2026-04-17  9:43   ` Jani Nikula
2026-04-16 17:44 ` [PATCH 06/11] drm/i915: Introduce pin_params.needs_low_address Ville Syrjala
2026-04-17  9:48   ` Jani Nikula
2026-04-16 17:44 ` [PATCH 07/11] drm/i915: Introduce pin_params.needs_physical Ville Syrjala
2026-04-17  9:50   ` Jani Nikula
2026-04-16 17:44 ` [PATCH 08/11] drm/i915: Extract intel_plane_needs_fence() Ville Syrjala
2026-04-17  9:53   ` Jani Nikula
2026-04-16 17:44 ` [PATCH 09/11] drm/i915: Introduce pin_params.needs_fence Ville Syrjala
2026-04-17  9:58   ` Jani Nikula
2026-04-17 12:25     ` Ville Syrjälä
2026-04-16 17:44 ` [PATCH 10/11] drm/xe: Eliminate intel_fb_uses_dpt() call from __xe_pin_fb_vma() Ville Syrjala
2026-04-17 10:19   ` Jani Nikula
2026-04-16 17:44 ` [PATCH 11/11] drm/i915: Don't pass the framebuffer to low level pinning functions Ville Syrjala
2026-04-17 10:25   ` Jani Nikula
2026-04-16 19:29 ` ✓ i915.CI.BAT: success for drm/i915: Eliminate FB usage from low level pinning code Patchwork
2026-04-21 11:15 ` ✓ i915.CI.BAT: success for drm/i915: Eliminate FB usage from low level pinning code (rev2) Patchwork
2026-04-21 13:56 ` ✓ i915.CI.Full: " Patchwork

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