intel-gfx.lists.freedesktop.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 4/9] drm/xe: Defer irq init until after xe_display_init_noaccel
  2024-11-05 12:18 [PATCH 1/9] drm/xe: Remove double pageflip Maarten Lankhorst
@ 2024-11-05 12:18 ` Maarten Lankhorst
  0 siblings, 0 replies; 28+ messages in thread
From: Maarten Lankhorst @ 2024-11-05 12:18 UTC (permalink / raw)
  To: intel-xe; +Cc: intel-gfx, Maarten Lankhorst

Technically, I believe this means that xe_display_init_noirq and
xe_display_init_noaccel can be merged together now.

Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
---
 drivers/gpu/drm/xe/xe_device.c | 12 ++++--------
 drivers/gpu/drm/xe/xe_tile.c   |  7 +++++++
 2 files changed, 11 insertions(+), 8 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/xe_device.c
index cef782f244e1a..b9948b2dc8d1d 100644
--- a/drivers/gpu/drm/xe/xe_device.c
+++ b/drivers/gpu/drm/xe/xe_device.c
@@ -41,7 +41,6 @@
 #include "xe_hw_engine_group.h"
 #include "xe_hwmon.h"
 #include "xe_irq.h"
-#include "xe_memirq.h"
 #include "xe_mmio.h"
 #include "xe_module.h"
 #include "xe_observation.h"
@@ -673,9 +672,6 @@ int xe_device_probe(struct xe_device *xe)
 		err = xe_ggtt_init_early(tile->mem.ggtt);
 		if (err)
 			return err;
-		err = xe_memirq_init(&tile->memirq);
-		if (err)
-			return err;
 	}
 
 	for_each_gt(gt, xe, id) {
@@ -695,10 +691,6 @@ int xe_device_probe(struct xe_device *xe)
 	if (err)
 		return err;
 
-	err = xe_irq_install(xe);
-	if (err)
-		goto err;
-
 	err = probe_has_flat_ccs(xe);
 	if (err)
 		goto err;
@@ -736,6 +728,10 @@ int xe_device_probe(struct xe_device *xe)
 			goto err;
 	}
 
+	err = xe_irq_install(xe);
+	if (err)
+		goto err;
+
 	for_each_gt(gt, xe, id) {
 		last_gt = id;
 
diff --git a/drivers/gpu/drm/xe/xe_tile.c b/drivers/gpu/drm/xe/xe_tile.c
index 2825553b568f7..d07c1fba793ca 100644
--- a/drivers/gpu/drm/xe/xe_tile.c
+++ b/drivers/gpu/drm/xe/xe_tile.c
@@ -10,6 +10,7 @@
 #include "xe_device.h"
 #include "xe_ggtt.h"
 #include "xe_gt.h"
+#include "xe_memirq.h"
 #include "xe_migrate.h"
 #include "xe_pcode.h"
 #include "xe_sa.h"
@@ -179,6 +180,12 @@ int xe_tile_init_noalloc(struct xe_tile *tile)
 
 int xe_tile_init(struct xe_tile *tile)
 {
+	int err;
+
+	err = xe_memirq_init(&tile->memirq);
+	if (err)
+		return err;
+
 	tile->mem.kernel_bb_pool = xe_sa_bo_manager_init(tile, SZ_1M, 16);
 	if (IS_ERR(tile->mem.kernel_bb_pool))
 		return PTR_ERR(tile->mem.kernel_bb_pool);
-- 
2.45.2


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

* [PATCH 1/9] drm/xe: Remove double pageflip
@ 2024-11-07 10:01 Maarten Lankhorst
  2024-11-07 10:01 ` [PATCH 2/9] drm/xe/display: Add intel_plane_initial_vblank_wait Maarten Lankhorst
                   ` (11 more replies)
  0 siblings, 12 replies; 28+ messages in thread
From: Maarten Lankhorst @ 2024-11-07 10:01 UTC (permalink / raw)
  To: intel-xe
  Cc: intel-gfx, Maarten Lankhorst, Ville Syrjälä,
	Vinod Govindapillai, Lucas De Marchi, Maarten, Lankhorst, dev

This is already handled below by fixup_initial_plane_config.

Fixes: a8153627520a ("drm/i915: Try to relocate the BIOS fb to the start of ggtt")
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Vinod Govindapillai <vinod.govindapillai@intel.com>
Reviewed-by: Lucas De Marchi <lucas.demarchi@intel.com>
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20241105121857.17389-1-maarten.lankhorst@linux.intel.com
Signed-off-by: Maarten Lankhorst,,, <dev@lankhorst.se>
---
 drivers/gpu/drm/xe/display/xe_plane_initial.c | 10 ----------
 1 file changed, 10 deletions(-)

diff --git a/drivers/gpu/drm/xe/display/xe_plane_initial.c b/drivers/gpu/drm/xe/display/xe_plane_initial.c
index 8c113463a3d55..668f544a7ac80 100644
--- a/drivers/gpu/drm/xe/display/xe_plane_initial.c
+++ b/drivers/gpu/drm/xe/display/xe_plane_initial.c
@@ -194,8 +194,6 @@ intel_find_initial_plane_obj(struct intel_crtc *crtc,
 		to_intel_plane(crtc->base.primary);
 	struct intel_plane_state *plane_state =
 		to_intel_plane_state(plane->base.state);
-	struct intel_crtc_state *crtc_state =
-		to_intel_crtc_state(crtc->base.state);
 	struct drm_framebuffer *fb;
 	struct i915_vma *vma;
 
@@ -241,14 +239,6 @@ intel_find_initial_plane_obj(struct intel_crtc *crtc,
 	atomic_or(plane->frontbuffer_bit, &to_intel_frontbuffer(fb)->bits);
 
 	plane_config->vma = vma;
-
-	/*
-	 * Flip to the newly created mapping ASAP, so we can re-use the
-	 * first part of GGTT for WOPCM, prevent flickering, and prevent
-	 * the lookup of sysmem scratch pages.
-	 */
-	plane->check_plane(crtc_state, plane_state);
-	plane->async_flip(NULL, plane, crtc_state, plane_state, true);
 	return;
 
 nofb:
-- 
2.45.2


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

* [PATCH 2/9] drm/xe/display: Add intel_plane_initial_vblank_wait
  2024-11-07 10:01 [PATCH 1/9] drm/xe: Remove double pageflip Maarten Lankhorst
@ 2024-11-07 10:01 ` Maarten Lankhorst
  2024-11-07 11:36   ` [PATCH] " Maarten Lankhorst
  2024-11-07 10:01 ` [PATCH 3/9] drm/xe: Move suballocator init to after display init Maarten Lankhorst
                   ` (10 subsequent siblings)
  11 siblings, 1 reply; 28+ messages in thread
From: Maarten Lankhorst @ 2024-11-07 10:01 UTC (permalink / raw)
  To: intel-xe; +Cc: intel-gfx, Maarten Lankhorst, Maarten, Lankhorst, dev

We're changing the driver to have no interrupts during early init for
Xe, so we poll the PIPE_FRMSTMSMP counter instead.

Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20241105121857.17389-2-maarten.lankhorst@linux.intel.com
Signed-off-by: Maarten Lankhorst,,, <dev@lankhorst.se>
---
 drivers/gpu/drm/i915/display/intel_display.c  |  6 +++---
 .../drm/i915/display/intel_plane_initial.c    |  9 ++++++++-
 .../drm/i915/display/intel_plane_initial.h    |  1 +
 drivers/gpu/drm/xe/display/xe_plane_initial.c | 19 ++++++++++++++++++-
 4 files changed, 30 insertions(+), 5 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index d7f92dc56d1e9..7bd6da2bb36f7 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -795,7 +795,7 @@ void intel_plane_disable_noatomic(struct intel_crtc *crtc,
 	if ((crtc_state->active_planes & ~BIT(PLANE_CURSOR)) == 0 &&
 	    hsw_ips_disable(crtc_state)) {
 		crtc_state->ips_enabled = false;
-		intel_crtc_wait_for_next_vblank(crtc);
+		intel_plane_initial_vblank_wait(plane);
 	}
 
 	/*
@@ -809,7 +809,7 @@ void intel_plane_disable_noatomic(struct intel_crtc *crtc,
 	 */
 	if (HAS_GMCH(dev_priv) &&
 	    intel_set_memory_cxsr(dev_priv, false))
-		intel_crtc_wait_for_next_vblank(crtc);
+		intel_plane_initial_vblank_wait(plane);
 
 	/*
 	 * Gen2 reports pipe underruns whenever all planes are disabled.
@@ -819,7 +819,7 @@ void intel_plane_disable_noatomic(struct intel_crtc *crtc,
 		intel_set_cpu_fifo_underrun_reporting(dev_priv, crtc->pipe, false);
 
 	intel_plane_disable_arm(NULL, plane, crtc_state);
-	intel_crtc_wait_for_next_vblank(crtc);
+	intel_plane_initial_vblank_wait(plane);
 }
 
 unsigned int
diff --git a/drivers/gpu/drm/i915/display/intel_plane_initial.c b/drivers/gpu/drm/i915/display/intel_plane_initial.c
index 62401f6a04e4f..77eb2b763be5e 100644
--- a/drivers/gpu/drm/i915/display/intel_plane_initial.c
+++ b/drivers/gpu/drm/i915/display/intel_plane_initial.c
@@ -14,6 +14,13 @@
 #include "intel_frontbuffer.h"
 #include "intel_plane_initial.h"
 
+void intel_plane_initial_vblank_wait(struct intel_plane *plane)
+{
+	struct intel_crtc *crtc = intel_crtc_for_pipe(to_intel_display(plane->base.dev), plane->pipe);
+
+	intel_crtc_wait_for_next_vblank(crtc);
+}
+
 static bool
 intel_reuse_initial_plane_obj(struct intel_crtc *this,
 			      const struct intel_initial_plane_config plane_configs[],
@@ -438,7 +445,7 @@ void intel_initial_plane_config(struct drm_i915_private *i915)
 		intel_find_initial_plane_obj(crtc, plane_configs);
 
 		if (i915->display.funcs.display->fixup_initial_plane_config(crtc, plane_config))
-			intel_crtc_wait_for_next_vblank(crtc);
+			intel_plane_initial_vblank_wait(to_intel_plane(crtc->base.primary));
 
 		plane_config_fini(plane_config);
 	}
diff --git a/drivers/gpu/drm/i915/display/intel_plane_initial.h b/drivers/gpu/drm/i915/display/intel_plane_initial.h
index 64ab95239cd45..3ba20b9e2355f 100644
--- a/drivers/gpu/drm/i915/display/intel_plane_initial.h
+++ b/drivers/gpu/drm/i915/display/intel_plane_initial.h
@@ -8,6 +8,7 @@
 
 struct drm_i915_private;
 
+void intel_plane_initial_vblank_wait(struct intel_plane *plane);
 void intel_initial_plane_config(struct drm_i915_private *i915);
 
 #endif
diff --git a/drivers/gpu/drm/xe/display/xe_plane_initial.c b/drivers/gpu/drm/xe/display/xe_plane_initial.c
index 668f544a7ac80..9252cfeef0a1f 100644
--- a/drivers/gpu/drm/xe/display/xe_plane_initial.c
+++ b/drivers/gpu/drm/xe/display/xe_plane_initial.c
@@ -8,7 +8,9 @@
 
 #include "regs/xe_gtt_defs.h"
 #include "xe_ggtt.h"
+#include "xe_mmio.h"
 
+#include "i915_reg.h"
 #include "intel_atomic_plane.h"
 #include "intel_crtc.h"
 #include "intel_display.h"
@@ -22,6 +24,21 @@
 
 #include <generated/xe_wa_oob.h>
 
+void intel_plane_initial_vblank_wait(struct intel_plane *plane)
+{
+	/* Early xe has no irq */
+	struct xe_device *xe = to_xe_device(plane->base.dev);
+	struct xe_reg pipe_frmtmstmp = XE_REG(i915_mmio_reg_offset(PIPE_FRMTMSTMP(plane->pipe)));
+	u32 timestamp;
+	int ret;
+
+	timestamp = xe_mmio_read32(xe_root_tile_mmio(xe), pipe_frmtmstmp);
+
+	ret = xe_mmio_wait32_not(xe_root_tile_mmio(xe), pipe_frmtmstmp, ~0U, timestamp, 40000U, &timestamp, false);
+	if (ret < 0)
+		drm_warn(&xe->drm, "waiting for early vblank failed with %i\n", ret);
+}
+
 static bool
 intel_reuse_initial_plane_obj(struct intel_crtc *this,
 			      const struct intel_initial_plane_config plane_configs[],
@@ -293,7 +310,7 @@ void intel_initial_plane_config(struct drm_i915_private *i915)
 		intel_find_initial_plane_obj(crtc, plane_configs);
 
 		if (i915->display.funcs.display->fixup_initial_plane_config(crtc, plane_config))
-			intel_crtc_wait_for_next_vblank(crtc);
+			intel_plane_initial_vblank_wait(to_intel_plane(crtc->base.primary));
 
 		plane_config_fini(plane_config);
 	}
-- 
2.45.2


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

* [PATCH 3/9] drm/xe: Move suballocator init to after display init
  2024-11-07 10:01 [PATCH 1/9] drm/xe: Remove double pageflip Maarten Lankhorst
  2024-11-07 10:01 ` [PATCH 2/9] drm/xe/display: Add intel_plane_initial_vblank_wait Maarten Lankhorst
@ 2024-11-07 10:01 ` Maarten Lankhorst
  2024-11-12 18:18   ` Rodrigo Vivi
  2024-11-07 10:01 ` [PATCH 4/9] drm/xe: Defer irq init until after xe_display_init_noaccel Maarten Lankhorst
                   ` (9 subsequent siblings)
  11 siblings, 1 reply; 28+ messages in thread
From: Maarten Lankhorst @ 2024-11-07 10:01 UTC (permalink / raw)
  To: intel-xe; +Cc: intel-gfx, Maarten Lankhorst, Maarten, Lankhorst, dev

No allocations should be done before we have had a chance to preserve
the display fb.

Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20241105121857.17389-3-maarten.lankhorst@linux.intel.com
Signed-off-by: Maarten Lankhorst,,, <dev@lankhorst.se>
---
 drivers/gpu/drm/xe/xe_device.c |  6 ++++++
 drivers/gpu/drm/xe/xe_tile.c   | 12 ++++++++----
 drivers/gpu/drm/xe/xe_tile.h   |  1 +
 3 files changed, 15 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/xe_device.c
index a0d29d5cb7b70..cef782f244e1a 100644
--- a/drivers/gpu/drm/xe/xe_device.c
+++ b/drivers/gpu/drm/xe/xe_device.c
@@ -730,6 +730,12 @@ int xe_device_probe(struct xe_device *xe)
 	if (err)
 		goto err;
 
+	for_each_tile(tile, xe, id) {
+		err = xe_tile_init(tile);
+		if (err)
+			goto err;
+	}
+
 	for_each_gt(gt, xe, id) {
 		last_gt = id;
 
diff --git a/drivers/gpu/drm/xe/xe_tile.c b/drivers/gpu/drm/xe/xe_tile.c
index 07cf7cfe4abd5..2825553b568f7 100644
--- a/drivers/gpu/drm/xe/xe_tile.c
+++ b/drivers/gpu/drm/xe/xe_tile.c
@@ -170,10 +170,6 @@ int xe_tile_init_noalloc(struct xe_tile *tile)
 	if (err)
 		return err;
 
-	tile->mem.kernel_bb_pool = xe_sa_bo_manager_init(tile, SZ_1M, 16);
-	if (IS_ERR(tile->mem.kernel_bb_pool))
-		return PTR_ERR(tile->mem.kernel_bb_pool);
-
 	xe_wa_apply_tile_workarounds(tile);
 
 	err = xe_tile_sysfs_init(tile);
@@ -181,6 +177,14 @@ int xe_tile_init_noalloc(struct xe_tile *tile)
 	return 0;
 }
 
+int xe_tile_init(struct xe_tile *tile)
+{
+	tile->mem.kernel_bb_pool = xe_sa_bo_manager_init(tile, SZ_1M, 16);
+	if (IS_ERR(tile->mem.kernel_bb_pool))
+		return PTR_ERR(tile->mem.kernel_bb_pool);
+
+	return 0;
+}
 void xe_tile_migrate_wait(struct xe_tile *tile)
 {
 	xe_migrate_wait(tile->migrate);
diff --git a/drivers/gpu/drm/xe/xe_tile.h b/drivers/gpu/drm/xe/xe_tile.h
index 1c9e42ade6b05..eb939316d55b0 100644
--- a/drivers/gpu/drm/xe/xe_tile.h
+++ b/drivers/gpu/drm/xe/xe_tile.h
@@ -12,6 +12,7 @@ struct xe_tile;
 
 int xe_tile_init_early(struct xe_tile *tile, struct xe_device *xe, u8 id);
 int xe_tile_init_noalloc(struct xe_tile *tile);
+int xe_tile_init(struct xe_tile *tile);
 
 void xe_tile_migrate_wait(struct xe_tile *tile);
 
-- 
2.45.2


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

* [PATCH 4/9] drm/xe: Defer irq init until after xe_display_init_noaccel
  2024-11-07 10:01 [PATCH 1/9] drm/xe: Remove double pageflip Maarten Lankhorst
  2024-11-07 10:01 ` [PATCH 2/9] drm/xe/display: Add intel_plane_initial_vblank_wait Maarten Lankhorst
  2024-11-07 10:01 ` [PATCH 3/9] drm/xe: Move suballocator init to after display init Maarten Lankhorst
@ 2024-11-07 10:01 ` Maarten Lankhorst
  2024-11-12 18:21   ` Rodrigo Vivi
  2024-11-07 10:01 ` [PATCH 5/9] drm/xe/display: Use a single early init call for display Maarten Lankhorst
                   ` (8 subsequent siblings)
  11 siblings, 1 reply; 28+ messages in thread
From: Maarten Lankhorst @ 2024-11-07 10:01 UTC (permalink / raw)
  To: intel-xe; +Cc: intel-gfx, Maarten Lankhorst, Maarten, Lankhorst, dev

Technically, I believe this means that xe_display_init_noirq and
xe_display_init_noaccel can be merged together now.

Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20241105121857.17389-4-maarten.lankhorst@linux.intel.com
Signed-off-by: Maarten Lankhorst,,, <dev@lankhorst.se>
---
 drivers/gpu/drm/xe/xe_device.c | 12 ++++--------
 drivers/gpu/drm/xe/xe_tile.c   |  7 +++++++
 2 files changed, 11 insertions(+), 8 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/xe_device.c
index cef782f244e1a..b9948b2dc8d1d 100644
--- a/drivers/gpu/drm/xe/xe_device.c
+++ b/drivers/gpu/drm/xe/xe_device.c
@@ -41,7 +41,6 @@
 #include "xe_hw_engine_group.h"
 #include "xe_hwmon.h"
 #include "xe_irq.h"
-#include "xe_memirq.h"
 #include "xe_mmio.h"
 #include "xe_module.h"
 #include "xe_observation.h"
@@ -673,9 +672,6 @@ int xe_device_probe(struct xe_device *xe)
 		err = xe_ggtt_init_early(tile->mem.ggtt);
 		if (err)
 			return err;
-		err = xe_memirq_init(&tile->memirq);
-		if (err)
-			return err;
 	}
 
 	for_each_gt(gt, xe, id) {
@@ -695,10 +691,6 @@ int xe_device_probe(struct xe_device *xe)
 	if (err)
 		return err;
 
-	err = xe_irq_install(xe);
-	if (err)
-		goto err;
-
 	err = probe_has_flat_ccs(xe);
 	if (err)
 		goto err;
@@ -736,6 +728,10 @@ int xe_device_probe(struct xe_device *xe)
 			goto err;
 	}
 
+	err = xe_irq_install(xe);
+	if (err)
+		goto err;
+
 	for_each_gt(gt, xe, id) {
 		last_gt = id;
 
diff --git a/drivers/gpu/drm/xe/xe_tile.c b/drivers/gpu/drm/xe/xe_tile.c
index 2825553b568f7..d07c1fba793ca 100644
--- a/drivers/gpu/drm/xe/xe_tile.c
+++ b/drivers/gpu/drm/xe/xe_tile.c
@@ -10,6 +10,7 @@
 #include "xe_device.h"
 #include "xe_ggtt.h"
 #include "xe_gt.h"
+#include "xe_memirq.h"
 #include "xe_migrate.h"
 #include "xe_pcode.h"
 #include "xe_sa.h"
@@ -179,6 +180,12 @@ int xe_tile_init_noalloc(struct xe_tile *tile)
 
 int xe_tile_init(struct xe_tile *tile)
 {
+	int err;
+
+	err = xe_memirq_init(&tile->memirq);
+	if (err)
+		return err;
+
 	tile->mem.kernel_bb_pool = xe_sa_bo_manager_init(tile, SZ_1M, 16);
 	if (IS_ERR(tile->mem.kernel_bb_pool))
 		return PTR_ERR(tile->mem.kernel_bb_pool);
-- 
2.45.2


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

* [PATCH 5/9] drm/xe/display: Use a single early init call for display
  2024-11-07 10:01 [PATCH 1/9] drm/xe: Remove double pageflip Maarten Lankhorst
                   ` (2 preceding siblings ...)
  2024-11-07 10:01 ` [PATCH 4/9] drm/xe: Defer irq init until after xe_display_init_noaccel Maarten Lankhorst
@ 2024-11-07 10:01 ` Maarten Lankhorst
  2024-11-12 18:39   ` Rodrigo Vivi
  2024-11-07 10:01 ` [PATCH 6/9] drm/xe/sriov: Move VF bootstrap and query_config to vf_guc_init Maarten Lankhorst
                   ` (7 subsequent siblings)
  11 siblings, 1 reply; 28+ messages in thread
From: Maarten Lankhorst @ 2024-11-07 10:01 UTC (permalink / raw)
  To: intel-xe; +Cc: intel-gfx, Maarten Lankhorst, Maarten, Lankhorst, dev

Instead of 3 different calls, it should be safe to unify to a single
call now. This makes the init sequence cleaner, and display less
tangled.

Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20241105121857.17389-5-maarten.lankhorst@linux.intel.com
Signed-off-by: Maarten Lankhorst,,, <dev@lankhorst.se>
---
 drivers/gpu/drm/xe/display/xe_display.c | 72 +++++++------------------
 drivers/gpu/drm/xe/display/xe_display.h |  8 +--
 drivers/gpu/drm/xe/xe_device.c          | 10 +---
 3 files changed, 23 insertions(+), 67 deletions(-)

diff --git a/drivers/gpu/drm/xe/display/xe_display.c b/drivers/gpu/drm/xe/display/xe_display.c
index b5502f335f531..a9ce4f561e7aa 100644
--- a/drivers/gpu/drm/xe/display/xe_display.c
+++ b/drivers/gpu/drm/xe/display/xe_display.c
@@ -100,31 +100,7 @@ int xe_display_create(struct xe_device *xe)
 	return drmm_add_action_or_reset(&xe->drm, display_destroy, NULL);
 }
 
-static void xe_display_fini_nommio(struct drm_device *dev, void *dummy)
-{
-	struct xe_device *xe = to_xe_device(dev);
-
-	if (!xe->info.probe_display)
-		return;
-
-	intel_power_domains_cleanup(xe);
-}
-
-int xe_display_init_nommio(struct xe_device *xe)
-{
-	if (!xe->info.probe_display)
-		return 0;
-
-	/* Fake uncore lock */
-	spin_lock_init(&xe->uncore.lock);
-
-	/* This must be called before any calls to HAS_PCH_* */
-	intel_detect_pch(xe);
-
-	return drmm_add_action_or_reset(&xe->drm, xe_display_fini_nommio, xe);
-}
-
-static void xe_display_fini_noirq(void *arg)
+static void xe_display_fini_early(void *arg)
 {
 	struct xe_device *xe = arg;
 	struct intel_display *display = &xe->display;
@@ -132,11 +108,13 @@ static void xe_display_fini_noirq(void *arg)
 	if (!xe->info.probe_display)
 		return;
 
+	intel_display_driver_remove_nogem(xe);
 	intel_display_driver_remove_noirq(xe);
 	intel_opregion_cleanup(display);
+	intel_power_domains_cleanup(xe);
 }
 
-int xe_display_init_noirq(struct xe_device *xe)
+int xe_display_init_early(struct xe_device *xe)
 {
 	struct intel_display *display = &xe->display;
 	int err;
@@ -144,6 +122,12 @@ int xe_display_init_noirq(struct xe_device *xe)
 	if (!xe->info.probe_display)
 		return 0;
 
+	/* Fake uncore lock */
+	spin_lock_init(&xe->uncore.lock);
+
+	/* This must be called before any calls to HAS_PCH_* */
+	intel_detect_pch(xe);
+
 	intel_display_driver_early_probe(xe);
 
 	/* Early display init.. */
@@ -160,36 +144,20 @@ int xe_display_init_noirq(struct xe_device *xe)
 	intel_display_device_info_runtime_init(xe);
 
 	err = intel_display_driver_probe_noirq(xe);
-	if (err) {
-		intel_opregion_cleanup(display);
-		return err;
-	}
-
-	return devm_add_action_or_reset(xe->drm.dev, xe_display_fini_noirq, xe);
-}
-
-static void xe_display_fini_noaccel(void *arg)
-{
-	struct xe_device *xe = arg;
-
-	if (!xe->info.probe_display)
-		return;
-
-	intel_display_driver_remove_nogem(xe);
-}
-
-int xe_display_init_noaccel(struct xe_device *xe)
-{
-	int err;
-
-	if (!xe->info.probe_display)
-		return 0;
+	if (err)
+		goto err_opregion;
 
 	err = intel_display_driver_probe_nogem(xe);
 	if (err)
-		return err;
+		goto err_noirq;
 
-	return devm_add_action_or_reset(xe->drm.dev, xe_display_fini_noaccel, xe);
+	return devm_add_action_or_reset(xe->drm.dev, xe_display_fini_early, xe);
+err_noirq:
+	intel_display_driver_remove_noirq(xe);
+	intel_power_domains_cleanup(xe);
+err_opregion:
+	intel_opregion_cleanup(display);
+	return err;
 }
 
 int xe_display_init(struct xe_device *xe)
diff --git a/drivers/gpu/drm/xe/display/xe_display.h b/drivers/gpu/drm/xe/display/xe_display.h
index 17afa537aee50..255cffa328160 100644
--- a/drivers/gpu/drm/xe/display/xe_display.h
+++ b/drivers/gpu/drm/xe/display/xe_display.h
@@ -20,9 +20,7 @@ int xe_display_create(struct xe_device *xe);
 
 int xe_display_probe(struct xe_device *xe);
 
-int xe_display_init_nommio(struct xe_device *xe);
-int xe_display_init_noirq(struct xe_device *xe);
-int xe_display_init_noaccel(struct xe_device *xe);
+int xe_display_init_early(struct xe_device *xe);
 int xe_display_init(struct xe_device *xe);
 void xe_display_fini(struct xe_device *xe);
 
@@ -53,9 +51,7 @@ static inline int xe_display_create(struct xe_device *xe) { return 0; }
 
 static inline int xe_display_probe(struct xe_device *xe) { return 0; }
 
-static inline int xe_display_init_nommio(struct xe_device *xe) { return 0; }
-static inline int xe_display_init_noirq(struct xe_device *xe) { return 0; }
-static inline int xe_display_init_noaccel(struct xe_device *xe) { return 0; }
+static inline int xe_display_init_early(struct xe_device *xe) { return 0; }
 static inline int xe_display_init(struct xe_device *xe) { return 0; }
 static inline void xe_display_fini(struct xe_device *xe) {}
 
diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/xe_device.c
index b9948b2dc8d1d..f1147ebeeff31 100644
--- a/drivers/gpu/drm/xe/xe_device.c
+++ b/drivers/gpu/drm/xe/xe_device.c
@@ -632,10 +632,6 @@ int xe_device_probe(struct xe_device *xe)
 		return err;
 
 	xe->info.mem_region_mask = 1;
-	err = xe_display_init_nommio(xe);
-	if (err)
-		return err;
-
 	err = xe_set_dma_info(xe);
 	if (err)
 		return err;
@@ -687,10 +683,6 @@ int xe_device_probe(struct xe_device *xe)
 	if (err)
 		return err;
 
-	err = xe_display_init_noirq(xe);
-	if (err)
-		return err;
-
 	err = probe_has_flat_ccs(xe);
 	if (err)
 		goto err;
@@ -718,7 +710,7 @@ int xe_device_probe(struct xe_device *xe)
 	 * This is the reason the first allocation needs to be done
 	 * inside display.
 	 */
-	err = xe_display_init_noaccel(xe);
+	err = xe_display_init_early(xe);
 	if (err)
 		goto err;
 
-- 
2.45.2


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

* [PATCH 6/9] drm/xe/sriov: Move VF bootstrap and query_config to vf_guc_init
  2024-11-07 10:01 [PATCH 1/9] drm/xe: Remove double pageflip Maarten Lankhorst
                   ` (3 preceding siblings ...)
  2024-11-07 10:01 ` [PATCH 5/9] drm/xe/display: Use a single early init call for display Maarten Lankhorst
@ 2024-11-07 10:01 ` Maarten Lankhorst
  2024-11-14 16:09   ` Rodrigo Vivi
  2024-11-07 10:01 ` [PATCH 7/9] drm/xe: Simplify GuC early initialisation Maarten Lankhorst
                   ` (6 subsequent siblings)
  11 siblings, 1 reply; 28+ messages in thread
From: Maarten Lankhorst @ 2024-11-07 10:01 UTC (permalink / raw)
  To: intel-xe; +Cc: intel-gfx, Maarten Lankhorst, Maarten, Lankhorst, dev

We want to split up GUC init to an alloc and noalloc part to keep the
init path the same for VF and !VF as much as possible.

Everything in vf_guc_init should be done as early as possible, otherwise
VRAM probing becomes impossible.

Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20241105121857.17389-6-maarten.lankhorst@linux.intel.com
Signed-off-by: Maarten Lankhorst,,, <dev@lankhorst.se>
---
 drivers/gpu/drm/xe/xe_gt_sriov_vf.c |  1 -
 drivers/gpu/drm/xe/xe_guc.c         | 17 +++++++++--------
 2 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_vf.c b/drivers/gpu/drm/xe/xe_gt_sriov_vf.c
index cca5d57328021..997438047a037 100644
--- a/drivers/gpu/drm/xe/xe_gt_sriov_vf.c
+++ b/drivers/gpu/drm/xe/xe_gt_sriov_vf.c
@@ -948,7 +948,6 @@ u32 xe_gt_sriov_vf_read32(struct xe_gt *gt, struct xe_reg reg)
 	struct vf_runtime_reg *rr;
 
 	xe_gt_assert(gt, IS_SRIOV_VF(gt_to_xe(gt)));
-	xe_gt_assert(gt, gt->sriov.vf.pf_version.major);
 	xe_gt_assert(gt, !reg.vf);
 
 	if (reg.addr == GMD_ID.addr) {
diff --git a/drivers/gpu/drm/xe/xe_guc.c b/drivers/gpu/drm/xe/xe_guc.c
index 7224593c9ce9b..5a050a5379911 100644
--- a/drivers/gpu/drm/xe/xe_guc.c
+++ b/drivers/gpu/drm/xe/xe_guc.c
@@ -301,6 +301,7 @@ static int xe_guc_realloc_post_hwconfig(struct xe_guc *guc)
 
 static int vf_guc_init(struct xe_guc *guc)
 {
+	struct xe_gt *gt = guc_to_gt(guc);
 	int err;
 
 	xe_guc_comm_init_early(guc);
@@ -313,6 +314,14 @@ static int vf_guc_init(struct xe_guc *guc)
 	if (err)
 		return err;
 
+	err = xe_gt_sriov_vf_bootstrap(gt);
+	if (err)
+		return err;
+
+	err = xe_gt_sriov_vf_query_config(gt);
+	if (err)
+		return err;
+
 	return 0;
 }
 
@@ -753,14 +762,6 @@ static int vf_guc_min_load_for_hwconfig(struct xe_guc *guc)
 	struct xe_gt *gt = guc_to_gt(guc);
 	int ret;
 
-	ret = xe_gt_sriov_vf_bootstrap(gt);
-	if (ret)
-		return ret;
-
-	ret = xe_gt_sriov_vf_query_config(gt);
-	if (ret)
-		return ret;
-
 	ret = xe_guc_hwconfig_init(guc);
 	if (ret)
 		return ret;
-- 
2.45.2


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

* [PATCH 7/9] drm/xe: Simplify GuC early initialisation
  2024-11-07 10:01 [PATCH 1/9] drm/xe: Remove double pageflip Maarten Lankhorst
                   ` (4 preceding siblings ...)
  2024-11-07 10:01 ` [PATCH 6/9] drm/xe/sriov: Move VF bootstrap and query_config to vf_guc_init Maarten Lankhorst
@ 2024-11-07 10:01 ` Maarten Lankhorst
  2024-11-07 10:01 ` [PATCH 8/9] drm/xe: Make it possible to read instance0 MCR registers after xe_gt_mcr_init_early Maarten Lankhorst
                   ` (5 subsequent siblings)
  11 siblings, 0 replies; 28+ messages in thread
From: Maarten Lankhorst @ 2024-11-07 10:01 UTC (permalink / raw)
  To: intel-xe; +Cc: intel-gfx, Maarten Lankhorst, Maarten, Lankhorst, dev

Add a 2-stage GuC init. An early one for everything that is needed
for VF, and a full one that loads GuC and is allowed to do allocations.

Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20241105121857.17389-7-maarten.lankhorst@linux.intel.com
Signed-off-by: Maarten Lankhorst,,, <dev@lankhorst.se>
---
 drivers/gpu/drm/xe/tests/xe_guc_relay_test.c |  2 +-
 drivers/gpu/drm/xe/xe_device.c               | 16 ------
 drivers/gpu/drm/xe/xe_gt.c                   |  9 +++-
 drivers/gpu/drm/xe/xe_guc.c                  | 51 ++++++++++++--------
 drivers/gpu/drm/xe/xe_guc.h                  |  1 +
 drivers/gpu/drm/xe/xe_guc_ct.c               | 28 +++++++----
 drivers/gpu/drm/xe/xe_guc_ct.h               |  1 +
 drivers/gpu/drm/xe/xe_guc_relay.c            |  6 +--
 drivers/gpu/drm/xe/xe_guc_relay.h            |  2 +-
 drivers/gpu/drm/xe/xe_huc.h                  |  1 +
 drivers/gpu/drm/xe/xe_uc.c                   | 21 ++++++++
 drivers/gpu/drm/xe/xe_uc.h                   |  1 +
 12 files changed, 88 insertions(+), 51 deletions(-)

diff --git a/drivers/gpu/drm/xe/tests/xe_guc_relay_test.c b/drivers/gpu/drm/xe/tests/xe_guc_relay_test.c
index 13701451b9235..b951d55ef1b32 100644
--- a/drivers/gpu/drm/xe/tests/xe_guc_relay_test.c
+++ b/drivers/gpu/drm/xe/tests/xe_guc_relay_test.c
@@ -42,7 +42,7 @@ static int relay_test_init(struct kunit *test)
 	kunit_activate_static_stub(test, relay_get_totalvfs,
 				   replacement_relay_get_totalvfs);
 
-	KUNIT_ASSERT_EQ(test, xe_guc_relay_init(relay), 0);
+	KUNIT_ASSERT_EQ(test, xe_guc_relay_init_noalloc(relay), 0);
 	KUNIT_EXPECT_TRUE(test, relay_is_ready(relay));
 	relay->last_rid = TEST_RID - 1;
 
diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/xe_device.c
index f1147ebeeff31..5dafd48d5478b 100644
--- a/drivers/gpu/drm/xe/xe_device.c
+++ b/drivers/gpu/drm/xe/xe_device.c
@@ -646,25 +646,9 @@ int xe_device_probe(struct xe_device *xe)
 		err = xe_gt_init_early(gt);
 		if (err)
 			return err;
-
-		/*
-		 * Only after this point can GT-specific MMIO operations
-		 * (including things like communication with the GuC)
-		 * be performed.
-		 */
-		xe_gt_mmio_init(gt);
 	}
 
 	for_each_tile(tile, xe, id) {
-		if (IS_SRIOV_VF(xe)) {
-			xe_guc_comm_init_early(&tile->primary_gt->uc.guc);
-			err = xe_gt_sriov_vf_bootstrap(tile->primary_gt);
-			if (err)
-				return err;
-			err = xe_gt_sriov_vf_query_config(tile->primary_gt);
-			if (err)
-				return err;
-		}
 		err = xe_ggtt_init_early(tile->mem.ggtt);
 		if (err)
 			return err;
diff --git a/drivers/gpu/drm/xe/xe_gt.c b/drivers/gpu/drm/xe/xe_gt.c
index d6744be01a687..dc6901255dc91 100644
--- a/drivers/gpu/drm/xe/xe_gt.c
+++ b/drivers/gpu/drm/xe/xe_gt.c
@@ -387,7 +387,14 @@ int xe_gt_init_early(struct xe_gt *gt)
 	xe_force_wake_init_gt(gt, gt_to_fw(gt));
 	spin_lock_init(&gt->global_invl_lock);
 
-	return 0;
+	/*
+	 * Only after this point can GT-specific MMIO operations
+	 * (including things like communication with the GuC)
+	 * be performed.
+	 */
+	xe_gt_mmio_init(gt);
+
+	return xe_uc_init_noalloc(&gt->uc);
 }
 
 static void dump_pat_on_error(struct xe_gt *gt)
diff --git a/drivers/gpu/drm/xe/xe_guc.c b/drivers/gpu/drm/xe/xe_guc.c
index 5a050a5379911..4814e2fe6eb1d 100644
--- a/drivers/gpu/drm/xe/xe_guc.c
+++ b/drivers/gpu/drm/xe/xe_guc.c
@@ -299,21 +299,11 @@ static int xe_guc_realloc_post_hwconfig(struct xe_guc *guc)
 	return 0;
 }
 
-static int vf_guc_init(struct xe_guc *guc)
+static int vf_guc_init_noalloc(struct xe_guc *guc)
 {
 	struct xe_gt *gt = guc_to_gt(guc);
 	int err;
 
-	xe_guc_comm_init_early(guc);
-
-	err = xe_guc_ct_init(&guc->ct);
-	if (err)
-		return err;
-
-	err = xe_guc_relay_init(&guc->relay);
-	if (err)
-		return err;
-
 	err = xe_gt_sriov_vf_bootstrap(gt);
 	if (err)
 		return err;
@@ -325,6 +315,35 @@ static int vf_guc_init(struct xe_guc *guc)
 	return 0;
 }
 
+int xe_guc_init_noalloc(struct xe_guc *guc)
+{
+	struct xe_device *xe = guc_to_xe(guc);
+	struct xe_gt *gt = guc_to_gt(guc);
+	int ret;
+
+	xe_guc_comm_init_early(guc);
+
+	ret = xe_guc_ct_init_noalloc(&guc->ct);
+	if (ret)
+		goto out;
+
+	ret = xe_guc_relay_init_noalloc(&guc->relay);
+	if (ret)
+		goto out;
+
+	if (IS_SRIOV_VF(xe)) {
+		ret = vf_guc_init_noalloc(guc);
+		if (ret)
+			goto out;
+	}
+
+	return 0;
+
+out:
+	xe_gt_err(gt, "GuC init failed with %pe\n", ERR_PTR(ret));
+	return ret;
+}
+
 int xe_guc_init(struct xe_guc *guc)
 {
 	struct xe_device *xe = guc_to_xe(guc);
@@ -334,13 +353,13 @@ int xe_guc_init(struct xe_guc *guc)
 	guc->fw.type = XE_UC_FW_TYPE_GUC;
 	ret = xe_uc_fw_init(&guc->fw);
 	if (ret)
-		goto out;
+		return ret;
 
 	if (!xe_uc_fw_is_enabled(&guc->fw))
 		return 0;
 
 	if (IS_SRIOV_VF(xe)) {
-		ret = vf_guc_init(guc);
+		ret = xe_guc_ct_init(&guc->ct);
 		if (ret)
 			goto out;
 		return 0;
@@ -362,10 +381,6 @@ int xe_guc_init(struct xe_guc *guc)
 	if (ret)
 		goto out;
 
-	ret = xe_guc_relay_init(&guc->relay);
-	if (ret)
-		goto out;
-
 	xe_uc_fw_change_status(&guc->fw, XE_UC_FIRMWARE_LOADABLE);
 
 	ret = devm_add_action_or_reset(xe->drm.dev, guc_fini_hw, guc);
@@ -374,8 +389,6 @@ int xe_guc_init(struct xe_guc *guc)
 
 	guc_init_params(guc);
 
-	xe_guc_comm_init_early(guc);
-
 	return 0;
 
 out:
diff --git a/drivers/gpu/drm/xe/xe_guc.h b/drivers/gpu/drm/xe/xe_guc.h
index 58338be445585..965bf72912009 100644
--- a/drivers/gpu/drm/xe/xe_guc.h
+++ b/drivers/gpu/drm/xe/xe_guc.h
@@ -26,6 +26,7 @@
 struct drm_printer;
 
 void xe_guc_comm_init_early(struct xe_guc *guc);
+int xe_guc_init_noalloc(struct xe_guc *guc);
 int xe_guc_init(struct xe_guc *guc);
 int xe_guc_init_post_hwconfig(struct xe_guc *guc);
 int xe_guc_post_load_init(struct xe_guc *guc);
diff --git a/drivers/gpu/drm/xe/xe_guc_ct.c b/drivers/gpu/drm/xe/xe_guc_ct.c
index 550eeed43903b..614e53cbaf802 100644
--- a/drivers/gpu/drm/xe/xe_guc_ct.c
+++ b/drivers/gpu/drm/xe/xe_guc_ct.c
@@ -203,12 +203,10 @@ static void primelockdep(struct xe_guc_ct *ct)
 	fs_reclaim_release(GFP_KERNEL);
 }
 
-int xe_guc_ct_init(struct xe_guc_ct *ct)
+int xe_guc_ct_init_noalloc(struct xe_guc_ct *ct)
 {
 	struct xe_device *xe = ct_to_xe(ct);
 	struct xe_gt *gt = ct_to_gt(ct);
-	struct xe_tile *tile = gt_to_tile(gt);
-	struct xe_bo *bo;
 	int err;
 
 	xe_gt_assert(gt, !(guc_ct_size() % PAGE_SIZE));
@@ -234,6 +232,23 @@ int xe_guc_ct_init(struct xe_guc_ct *ct)
 
 	primelockdep(ct);
 
+	err = drmm_add_action_or_reset(&xe->drm, guc_ct_fini, ct);
+	if (err)
+		return err;
+
+	xe_gt_assert(gt, ct->state == XE_GUC_CT_STATE_NOT_INITIALIZED);
+	ct->state = XE_GUC_CT_STATE_DISABLED;
+	return 0;
+}
+ALLOW_ERROR_INJECTION(xe_guc_ct_init_noalloc, ERRNO); /* See xe_pci_probe() */
+
+int xe_guc_ct_init(struct xe_guc_ct *ct)
+{
+	struct xe_device *xe = ct_to_xe(ct);
+	struct xe_gt *gt = ct_to_gt(ct);
+	struct xe_tile *tile = gt_to_tile(gt);
+	struct xe_bo *bo;
+
 	bo = xe_managed_bo_create_pin_map(xe, tile, guc_ct_size(),
 					  XE_BO_FLAG_SYSTEM |
 					  XE_BO_FLAG_GGTT |
@@ -242,13 +257,6 @@ int xe_guc_ct_init(struct xe_guc_ct *ct)
 		return PTR_ERR(bo);
 
 	ct->bo = bo;
-
-	err = drmm_add_action_or_reset(&xe->drm, guc_ct_fini, ct);
-	if (err)
-		return err;
-
-	xe_gt_assert(gt, ct->state == XE_GUC_CT_STATE_NOT_INITIALIZED);
-	ct->state = XE_GUC_CT_STATE_DISABLED;
 	return 0;
 }
 ALLOW_ERROR_INJECTION(xe_guc_ct_init, ERRNO); /* See xe_pci_probe() */
diff --git a/drivers/gpu/drm/xe/xe_guc_ct.h b/drivers/gpu/drm/xe/xe_guc_ct.h
index 82c4ae458dda3..9f28fc135890d 100644
--- a/drivers/gpu/drm/xe/xe_guc_ct.h
+++ b/drivers/gpu/drm/xe/xe_guc_ct.h
@@ -11,6 +11,7 @@
 struct drm_printer;
 struct xe_device;
 
+int xe_guc_ct_init_noalloc(struct xe_guc_ct *ct);
 int xe_guc_ct_init(struct xe_guc_ct *ct);
 int xe_guc_ct_enable(struct xe_guc_ct *ct);
 void xe_guc_ct_disable(struct xe_guc_ct *ct);
diff --git a/drivers/gpu/drm/xe/xe_guc_relay.c b/drivers/gpu/drm/xe/xe_guc_relay.c
index 8f62de026724c..b778d0e0253de 100644
--- a/drivers/gpu/drm/xe/xe_guc_relay.c
+++ b/drivers/gpu/drm/xe/xe_guc_relay.c
@@ -322,7 +322,7 @@ static void __fini_relay(struct drm_device *drm, void *arg)
 }
 
 /**
- * xe_guc_relay_init - Initialize a &xe_guc_relay
+ * xe_guc_relay_init_noalloc - Initialize a &xe_guc_relay
  * @relay: the &xe_guc_relay to initialize
  *
  * Initialize remaining members of &xe_guc_relay that may depend
@@ -330,7 +330,7 @@ static void __fini_relay(struct drm_device *drm, void *arg)
  *
  * Return: 0 on success or a negative error code on failure.
  */
-int xe_guc_relay_init(struct xe_guc_relay *relay)
+int xe_guc_relay_init_noalloc(struct xe_guc_relay *relay)
 {
 	const int XE_RELAY_MEMPOOL_MIN_NUM = 1;
 	struct xe_device *xe = relay_to_xe(relay);
@@ -356,7 +356,7 @@ int xe_guc_relay_init(struct xe_guc_relay *relay)
 
 	return drmm_add_action_or_reset(&xe->drm, __fini_relay, relay);
 }
-ALLOW_ERROR_INJECTION(xe_guc_relay_init, ERRNO); /* See xe_pci_probe() */
+ALLOW_ERROR_INJECTION(xe_guc_relay_init_noalloc, ERRNO); /* See xe_pci_probe() */
 
 static u32 to_relay_error(int err)
 {
diff --git a/drivers/gpu/drm/xe/xe_guc_relay.h b/drivers/gpu/drm/xe/xe_guc_relay.h
index 385429aa188ab..e0afff4542cfc 100644
--- a/drivers/gpu/drm/xe/xe_guc_relay.h
+++ b/drivers/gpu/drm/xe/xe_guc_relay.h
@@ -11,7 +11,7 @@
 
 struct xe_guc_relay;
 
-int xe_guc_relay_init(struct xe_guc_relay *relay);
+int xe_guc_relay_init_noalloc(struct xe_guc_relay *relay);
 
 int xe_guc_relay_send_to_pf(struct xe_guc_relay *relay,
 			    const u32 *msg, u32 len, u32 *buf, u32 buf_size);
diff --git a/drivers/gpu/drm/xe/xe_huc.h b/drivers/gpu/drm/xe/xe_huc.h
index fa1c45e704432..bc6f93028c2b6 100644
--- a/drivers/gpu/drm/xe/xe_huc.h
+++ b/drivers/gpu/drm/xe/xe_huc.h
@@ -17,6 +17,7 @@ enum xe_huc_auth_types {
 	XE_HUC_AUTH_TYPES_COUNT
 };
 
+int xe_huc_init_noalloc(struct xe_huc *huc);
 int xe_huc_init(struct xe_huc *huc);
 int xe_huc_init_post_hwconfig(struct xe_huc *huc);
 int xe_huc_upload(struct xe_huc *huc);
diff --git a/drivers/gpu/drm/xe/xe_uc.c b/drivers/gpu/drm/xe/xe_uc.c
index 0d073a9987c2e..45d0c2f26754c 100644
--- a/drivers/gpu/drm/xe/xe_uc.c
+++ b/drivers/gpu/drm/xe/xe_uc.c
@@ -32,6 +32,27 @@ uc_to_xe(struct xe_uc *uc)
 }
 
 /* Should be called once at driver load only */
+int xe_uc_init_noalloc(struct xe_uc *uc)
+{
+	int ret;
+
+	/*
+	 * We call the GuC/HuC/GSC init functions even if GuC submission is off
+	 * to correctly move our tracking of the FW state to "disabled".
+	 */
+	ret = xe_guc_init_noalloc(&uc->guc);
+	if (ret)
+		goto err;
+
+	/* HuC and GSC have no early dependencies and can be completely initialised during full xe_uc_init(). */
+
+	return 0;
+
+err:
+	xe_gt_err(uc_to_gt(uc), "Failed to early initialize uC (%pe)\n", ERR_PTR(ret));
+	return ret;
+}
+
 int xe_uc_init(struct xe_uc *uc)
 {
 	int ret;
diff --git a/drivers/gpu/drm/xe/xe_uc.h b/drivers/gpu/drm/xe/xe_uc.h
index 506517c113339..650e95585b4ba 100644
--- a/drivers/gpu/drm/xe/xe_uc.h
+++ b/drivers/gpu/drm/xe/xe_uc.h
@@ -8,6 +8,7 @@
 
 struct xe_uc;
 
+int xe_uc_init_noalloc(struct xe_uc *uc);
 int xe_uc_init(struct xe_uc *uc);
 int xe_uc_init_hwconfig(struct xe_uc *uc);
 int xe_uc_init_post_hwconfig(struct xe_uc *uc);
-- 
2.45.2


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

* [PATCH 8/9] drm/xe: Make it possible to read instance0 MCR registers after xe_gt_mcr_init_early
  2024-11-07 10:01 [PATCH 1/9] drm/xe: Remove double pageflip Maarten Lankhorst
                   ` (5 preceding siblings ...)
  2024-11-07 10:01 ` [PATCH 7/9] drm/xe: Simplify GuC early initialisation Maarten Lankhorst
@ 2024-11-07 10:01 ` Maarten Lankhorst
  2024-11-07 10:01 ` [PATCH 9/9] drm/xe: Split init of xe_gt_init_hwconfig to xe_gt_init and *_early Maarten Lankhorst
                   ` (4 subsequent siblings)
  11 siblings, 0 replies; 28+ messages in thread
From: Maarten Lankhorst @ 2024-11-07 10:01 UTC (permalink / raw)
  To: intel-xe; +Cc: intel-gfx, Maarten Lankhorst, Maarten, Lankhorst, dev

After mcr_init_early, we need to be able to do VRAM and CCS probing
without hwconfig probe. Fortunately the relevant registers are all
instance 0, which fortunately means no dependencies on further initialisation
is required.

Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20241105121857.17389-8-maarten.lankhorst@linux.intel.com
Signed-off-by: Maarten Lankhorst,,, <dev@lankhorst.se>
---
 drivers/gpu/drm/xe/xe_gt_mcr.c   | 47 ++++++++++++++++++--------------
 drivers/gpu/drm/xe/xe_gt_types.h |  2 ++
 2 files changed, 29 insertions(+), 20 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_gt_mcr.c b/drivers/gpu/drm/xe/xe_gt_mcr.c
index 5013d674e17da..4b23c96290046 100644
--- a/drivers/gpu/drm/xe/xe_gt_mcr.c
+++ b/drivers/gpu/drm/xe/xe_gt_mcr.c
@@ -413,12 +413,6 @@ static void init_steering_sqidi_psmi(struct xe_gt *gt)
 	gt->steering[SQIDI_PSMI].instance_target = select & 0x1;
 }
 
-static void init_steering_inst0(struct xe_gt *gt)
-{
-	gt->steering[INSTANCE0].group_target = 0;	/* unused */
-	gt->steering[INSTANCE0].instance_target = 0;	/* unused */
-}
-
 static const struct {
 	const char *name;
 	void (*init)(struct xe_gt *gt);
@@ -429,7 +423,7 @@ static const struct {
 	[DSS] =		{ "DSS",	init_steering_dss },
 	[OADDRM] =	{ "OADDRM / GPMXMT", init_steering_oaddrm },
 	[SQIDI_PSMI] =  { "SQIDI_PSMI", init_steering_sqidi_psmi },
-	[INSTANCE0] =	{ "INSTANCE 0",	init_steering_inst0 },
+	[INSTANCE0] =	{ "INSTANCE 0",	NULL },
 	[IMPLICIT_STEERING] = { "IMPLICIT", NULL },
 };
 
@@ -439,25 +433,17 @@ static const struct {
  *
  * Perform early software only initialization of the MCR lock to allow
  * the synchronization on accessing the STEER_SEMAPHORE register and
- * use the xe_gt_mcr_multicast_write() function.
+ * use the xe_gt_mcr_multicast_write() function, plus the minimum
+ * safe MCR registers required for VRAM/CCS probing.
  */
 void xe_gt_mcr_init_early(struct xe_gt *gt)
 {
+	struct xe_device *xe = gt_to_xe(gt);
+
 	BUILD_BUG_ON(IMPLICIT_STEERING + 1 != NUM_STEERING_TYPES);
 	BUILD_BUG_ON(ARRAY_SIZE(xe_steering_types) != NUM_STEERING_TYPES);
 
 	spin_lock_init(&gt->mcr_lock);
-}
-
-/**
- * xe_gt_mcr_init - Normal initialization of the MCR support
- * @gt: GT structure
- *
- * Perform normal initialization of the MCR for all usages.
- */
-void xe_gt_mcr_init(struct xe_gt *gt)
-{
-	struct xe_device *xe = gt_to_xe(gt);
 
 	if (IS_SRIOV_VF(xe))
 		return;
@@ -498,10 +484,27 @@ void xe_gt_mcr_init(struct xe_gt *gt)
 		}
 	}
 
+	/* Mark instance 0 as initialised, we need this early for VRAM and CCS probe. */
+	gt->steering[INSTANCE0].initialised = true;
+}
+
+/**
+ * xe_gt_mcr_init - Normal initialization of the MCR support
+ * @gt: GT structure
+ *
+ * Perform normal initialization of the MCR for all usages.
+ */
+void xe_gt_mcr_init(struct xe_gt *gt)
+{
+	if (IS_SRIOV_VF(gt_to_xe(gt)))
+		return;
+
 	/* Select non-terminated steering target for each type */
-	for (int i = 0; i < NUM_STEERING_TYPES; i++)
+	for (int i = 0; i < NUM_STEERING_TYPES; i++) {
+		gt->steering[i].initialised = true;
 		if (gt->steering[i].ranges && xe_steering_types[i].init)
 			xe_steering_types[i].init(gt);
+	}
 }
 
 /**
@@ -563,6 +566,10 @@ static bool xe_gt_mcr_get_nonterminated_steering(struct xe_gt *gt,
 
 		for (int i = 0; gt->steering[type].ranges[i].end > 0; i++) {
 			if (xe_mmio_in_range(&gt->mmio, &gt->steering[type].ranges[i], reg)) {
+				drm_WARN(&gt_to_xe(gt)->drm, !gt->steering[type].initialised,
+					 "Uninitialised usage of MCR register %s/%#x\n",
+					 xe_steering_types[type].name, reg.addr);
+
 				*group = gt->steering[type].group_target;
 				*instance = gt->steering[type].instance_target;
 				return true;
diff --git a/drivers/gpu/drm/xe/xe_gt_types.h b/drivers/gpu/drm/xe/xe_gt_types.h
index a287b98ee70b4..4254665366ffe 100644
--- a/drivers/gpu/drm/xe/xe_gt_types.h
+++ b/drivers/gpu/drm/xe/xe_gt_types.h
@@ -375,6 +375,8 @@ struct xe_gt {
 		u16 group_target;
 		/** @steering.instance_target: instance to steer accesses to */
 		u16 instance_target;
+		/** @steering.initialised: Whether this steering range is initialised */
+		bool initialised;
 	} steering[NUM_STEERING_TYPES];
 
 	/**
-- 
2.45.2


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

* [PATCH 9/9] drm/xe: Split init of xe_gt_init_hwconfig to xe_gt_init and *_early
  2024-11-07 10:01 [PATCH 1/9] drm/xe: Remove double pageflip Maarten Lankhorst
                   ` (6 preceding siblings ...)
  2024-11-07 10:01 ` [PATCH 8/9] drm/xe: Make it possible to read instance0 MCR registers after xe_gt_mcr_init_early Maarten Lankhorst
@ 2024-11-07 10:01 ` Maarten Lankhorst
  2024-11-07 10:16 ` ✗ Fi.CI.BUILD: failure for series starting with [1/9] drm/xe: Remove double pageflip Patchwork
                   ` (3 subsequent siblings)
  11 siblings, 0 replies; 28+ messages in thread
From: Maarten Lankhorst @ 2024-11-07 10:01 UTC (permalink / raw)
  To: intel-xe; +Cc: intel-gfx, Maarten Lankhorst, Maarten, Lankhorst, dev

Now that we added the separate step of initialising GUC in
xe_gt_init_early, it should be ok to initialise the minimum during early
init, and the rest after allocations are allowed.

Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20241105121857.17389-9-maarten.lankhorst@linux.intel.com
Signed-off-by: Maarten Lankhorst,,, <dev@lankhorst.se>
---
 drivers/gpu/drm/xe/xe_device.c |  6 ----
 drivers/gpu/drm/xe/xe_gt.c     | 66 +++++++++++++++++-----------------
 drivers/gpu/drm/xe/xe_gt.h     |  1 -
 3 files changed, 32 insertions(+), 41 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/xe_device.c
index 5dafd48d5478b..e11acd5475867 100644
--- a/drivers/gpu/drm/xe/xe_device.c
+++ b/drivers/gpu/drm/xe/xe_device.c
@@ -654,12 +654,6 @@ int xe_device_probe(struct xe_device *xe)
 			return err;
 	}
 
-	for_each_gt(gt, xe, id) {
-		err = xe_gt_init_hwconfig(gt);
-		if (err)
-			return err;
-	}
-
 	err = xe_devcoredump_init(xe);
 	if (err)
 		return err;
diff --git a/drivers/gpu/drm/xe/xe_gt.c b/drivers/gpu/drm/xe/xe_gt.c
index dc6901255dc91..a6154d1bad9f0 100644
--- a/drivers/gpu/drm/xe/xe_gt.c
+++ b/drivers/gpu/drm/xe/xe_gt.c
@@ -364,6 +364,21 @@ int xe_gt_record_default_lrcs(struct xe_gt *gt)
 	return err;
 }
 
+static int gt_init_mcr(struct xe_gt *gt)
+{
+	unsigned int fw_ref;
+
+	fw_ref = xe_force_wake_get(gt_to_fw(gt), XE_FW_GT);
+	if (!fw_ref)
+		return -ETIMEDOUT;
+
+	xe_gt_mcr_init_early(gt);
+	xe_pat_init(gt);
+
+	xe_force_wake_put(gt_to_fw(gt), fw_ref);
+	return 0;
+}
+
 int xe_gt_init_early(struct xe_gt *gt)
 {
 	int err;
@@ -394,7 +409,11 @@ int xe_gt_init_early(struct xe_gt *gt)
 	 */
 	xe_gt_mmio_init(gt);
 
-	return xe_uc_init_noalloc(&gt->uc);
+	err = xe_uc_init_noalloc(&gt->uc);
+	if (err)
+		return err;
+
+	return gt_init_mcr(gt);
 }
 
 static void dump_pat_on_error(struct xe_gt *gt)
@@ -419,6 +438,18 @@ static int gt_fw_domain_init(struct xe_gt *gt)
 		goto err_hw_fence_irq;
 	}
 
+	err = xe_uc_init(&gt->uc);
+	if (err)
+		goto err_force_wake;
+
+	err = xe_uc_init_hwconfig(&gt->uc);
+	if (err)
+		goto err_force_wake;
+
+	xe_gt_topology_init(gt);
+	xe_gt_mcr_init(gt);
+	xe_gt_enable_host_l2_vram(gt);
+
 	if (!xe_gt_is_media_type(gt)) {
 		err = xe_ggtt_init(gt_to_tile(gt)->mem.ggtt);
 		if (err)
@@ -550,39 +581,6 @@ static int all_fw_domain_init(struct xe_gt *gt)
 	return err;
 }
 
-/*
- * Initialize enough GT to be able to load GuC in order to obtain hwconfig and
- * enable CTB communication.
- */
-int xe_gt_init_hwconfig(struct xe_gt *gt)
-{
-	unsigned int fw_ref;
-	int err;
-
-	fw_ref = xe_force_wake_get(gt_to_fw(gt), XE_FW_GT);
-	if (!fw_ref)
-		return -ETIMEDOUT;
-
-	xe_gt_mcr_init_early(gt);
-	xe_pat_init(gt);
-
-	err = xe_uc_init(&gt->uc);
-	if (err)
-		goto out_fw;
-
-	err = xe_uc_init_hwconfig(&gt->uc);
-	if (err)
-		goto out_fw;
-
-	xe_gt_topology_init(gt);
-	xe_gt_mcr_init(gt);
-	xe_gt_enable_host_l2_vram(gt);
-
-out_fw:
-	xe_force_wake_put(gt_to_fw(gt), fw_ref);
-	return err;
-}
-
 int xe_gt_init(struct xe_gt *gt)
 {
 	int err;
diff --git a/drivers/gpu/drm/xe/xe_gt.h b/drivers/gpu/drm/xe/xe_gt.h
index 82b9b7f82fcab..0c026cc91ffe9 100644
--- a/drivers/gpu/drm/xe/xe_gt.h
+++ b/drivers/gpu/drm/xe/xe_gt.h
@@ -28,7 +28,6 @@ static inline bool xe_fault_inject_gt_reset(void)
 }
 
 struct xe_gt *xe_gt_alloc(struct xe_tile *tile);
-int xe_gt_init_hwconfig(struct xe_gt *gt);
 int xe_gt_init_early(struct xe_gt *gt);
 int xe_gt_init(struct xe_gt *gt);
 void xe_gt_mmio_init(struct xe_gt *gt);
-- 
2.45.2


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

* ✗ Fi.CI.BUILD: failure for series starting with [1/9] drm/xe: Remove double pageflip
  2024-11-07 10:01 [PATCH 1/9] drm/xe: Remove double pageflip Maarten Lankhorst
                   ` (7 preceding siblings ...)
  2024-11-07 10:01 ` [PATCH 9/9] drm/xe: Split init of xe_gt_init_hwconfig to xe_gt_init and *_early Maarten Lankhorst
@ 2024-11-07 10:16 ` Patchwork
  2024-11-07 12:23 ` ✓ Fi.CI.BAT: success for series starting with [1/9] drm/xe: Remove double pageflip (rev2) Patchwork
                   ` (2 subsequent siblings)
  11 siblings, 0 replies; 28+ messages in thread
From: Patchwork @ 2024-11-07 10:16 UTC (permalink / raw)
  To: Maarten Lankhorst; +Cc: intel-gfx

== Series Details ==

Series: series starting with [1/9] drm/xe: Remove double pageflip
URL   : https://patchwork.freedesktop.org/series/141046/
State : failure

== Summary ==

Error: make failed
  CALL    scripts/checksyscalls.sh
  DESCEND objtool
  INSTALL libsubcmd_headers
  LD [M]  drivers/gpu/drm/i915/i915.o
  LD [M]  drivers/gpu/drm/i915/kvmgt.o
  HDRTEST drivers/gpu/drm/i915/display/intel_plane_initial.h
In file included from <command-line>:
./drivers/gpu/drm/i915/display/intel_plane_initial.h:11:45: error: ‘struct intel_plane’ declared inside parameter list will not be visible outside of this definition or declaration [-Werror]
   11 | void intel_plane_initial_vblank_wait(struct intel_plane *plane);
      |                                             ^~~~~~~~~~~
cc1: all warnings being treated as errors
make[6]: *** [drivers/gpu/drm/i915/Makefile:424: drivers/gpu/drm/i915/display/intel_plane_initial.hdrtest] Error 1
make[5]: *** [scripts/Makefile.build:478: drivers/gpu/drm/i915] Error 2
make[4]: *** [scripts/Makefile.build:478: drivers/gpu/drm] Error 2
make[3]: *** [scripts/Makefile.build:478: drivers/gpu] Error 2
make[2]: *** [scripts/Makefile.build:478: drivers] Error 2
make[1]: *** [/home/kbuild2/kernel/Makefile:1936: .] Error 2
make: *** [Makefile:224: __sub-make] Error 2
Build failed, no error log produced



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

* [PATCH] drm/xe/display: Add intel_plane_initial_vblank_wait
  2024-11-07 10:01 ` [PATCH 2/9] drm/xe/display: Add intel_plane_initial_vblank_wait Maarten Lankhorst
@ 2024-11-07 11:36   ` Maarten Lankhorst
  2024-11-07 12:21     ` Ville Syrjälä
  0 siblings, 1 reply; 28+ messages in thread
From: Maarten Lankhorst @ 2024-11-07 11:36 UTC (permalink / raw)
  To: intel-xe; +Cc: intel-gfx, Maarten Lankhorst, Maarten, Lankhorst, dev

We're changing the driver to have no interrupts during early init for
Xe, so we poll the PIPE_FRMSTMSMP counter instead.

Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20241105121857.17389-2-maarten.lankhorst@linux.intel.com
Signed-off-by: Maarten Lankhorst,,, <dev@lankhorst.se>
---
 drivers/gpu/drm/i915/display/intel_display.c  |  6 +++---
 .../drm/i915/display/intel_plane_initial.c    |  9 ++++++++-
 .../drm/i915/display/intel_plane_initial.h    |  2 ++
 drivers/gpu/drm/xe/display/xe_plane_initial.c | 19 ++++++++++++++++++-
 4 files changed, 31 insertions(+), 5 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index d7f92dc56d1e9..7bd6da2bb36f7 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -795,7 +795,7 @@ void intel_plane_disable_noatomic(struct intel_crtc *crtc,
 	if ((crtc_state->active_planes & ~BIT(PLANE_CURSOR)) == 0 &&
 	    hsw_ips_disable(crtc_state)) {
 		crtc_state->ips_enabled = false;
-		intel_crtc_wait_for_next_vblank(crtc);
+		intel_plane_initial_vblank_wait(plane);
 	}
 
 	/*
@@ -809,7 +809,7 @@ void intel_plane_disable_noatomic(struct intel_crtc *crtc,
 	 */
 	if (HAS_GMCH(dev_priv) &&
 	    intel_set_memory_cxsr(dev_priv, false))
-		intel_crtc_wait_for_next_vblank(crtc);
+		intel_plane_initial_vblank_wait(plane);
 
 	/*
 	 * Gen2 reports pipe underruns whenever all planes are disabled.
@@ -819,7 +819,7 @@ void intel_plane_disable_noatomic(struct intel_crtc *crtc,
 		intel_set_cpu_fifo_underrun_reporting(dev_priv, crtc->pipe, false);
 
 	intel_plane_disable_arm(NULL, plane, crtc_state);
-	intel_crtc_wait_for_next_vblank(crtc);
+	intel_plane_initial_vblank_wait(plane);
 }
 
 unsigned int
diff --git a/drivers/gpu/drm/i915/display/intel_plane_initial.c b/drivers/gpu/drm/i915/display/intel_plane_initial.c
index 62401f6a04e4f..77eb2b763be5e 100644
--- a/drivers/gpu/drm/i915/display/intel_plane_initial.c
+++ b/drivers/gpu/drm/i915/display/intel_plane_initial.c
@@ -14,6 +14,13 @@
 #include "intel_frontbuffer.h"
 #include "intel_plane_initial.h"
 
+void intel_plane_initial_vblank_wait(struct intel_plane *plane)
+{
+	struct intel_crtc *crtc = intel_crtc_for_pipe(to_intel_display(plane->base.dev), plane->pipe);
+
+	intel_crtc_wait_for_next_vblank(crtc);
+}
+
 static bool
 intel_reuse_initial_plane_obj(struct intel_crtc *this,
 			      const struct intel_initial_plane_config plane_configs[],
@@ -438,7 +445,7 @@ void intel_initial_plane_config(struct drm_i915_private *i915)
 		intel_find_initial_plane_obj(crtc, plane_configs);
 
 		if (i915->display.funcs.display->fixup_initial_plane_config(crtc, plane_config))
-			intel_crtc_wait_for_next_vblank(crtc);
+			intel_plane_initial_vblank_wait(to_intel_plane(crtc->base.primary));
 
 		plane_config_fini(plane_config);
 	}
diff --git a/drivers/gpu/drm/i915/display/intel_plane_initial.h b/drivers/gpu/drm/i915/display/intel_plane_initial.h
index 64ab95239cd45..149b1bf1bc1f8 100644
--- a/drivers/gpu/drm/i915/display/intel_plane_initial.h
+++ b/drivers/gpu/drm/i915/display/intel_plane_initial.h
@@ -7,7 +7,9 @@
 #define __INTEL_PLANE_INITIAL_H__
 
 struct drm_i915_private;
+struct intel_plane;
 
+void intel_plane_initial_vblank_wait(struct intel_plane *plane);
 void intel_initial_plane_config(struct drm_i915_private *i915);
 
 #endif
diff --git a/drivers/gpu/drm/xe/display/xe_plane_initial.c b/drivers/gpu/drm/xe/display/xe_plane_initial.c
index 668f544a7ac80..9252cfeef0a1f 100644
--- a/drivers/gpu/drm/xe/display/xe_plane_initial.c
+++ b/drivers/gpu/drm/xe/display/xe_plane_initial.c
@@ -8,7 +8,9 @@
 
 #include "regs/xe_gtt_defs.h"
 #include "xe_ggtt.h"
+#include "xe_mmio.h"
 
+#include "i915_reg.h"
 #include "intel_atomic_plane.h"
 #include "intel_crtc.h"
 #include "intel_display.h"
@@ -22,6 +24,21 @@
 
 #include <generated/xe_wa_oob.h>
 
+void intel_plane_initial_vblank_wait(struct intel_plane *plane)
+{
+	/* Early xe has no irq */
+	struct xe_device *xe = to_xe_device(plane->base.dev);
+	struct xe_reg pipe_frmtmstmp = XE_REG(i915_mmio_reg_offset(PIPE_FRMTMSTMP(plane->pipe)));
+	u32 timestamp;
+	int ret;
+
+	timestamp = xe_mmio_read32(xe_root_tile_mmio(xe), pipe_frmtmstmp);
+
+	ret = xe_mmio_wait32_not(xe_root_tile_mmio(xe), pipe_frmtmstmp, ~0U, timestamp, 40000U, &timestamp, false);
+	if (ret < 0)
+		drm_warn(&xe->drm, "waiting for early vblank failed with %i\n", ret);
+}
+
 static bool
 intel_reuse_initial_plane_obj(struct intel_crtc *this,
 			      const struct intel_initial_plane_config plane_configs[],
@@ -293,7 +310,7 @@ void intel_initial_plane_config(struct drm_i915_private *i915)
 		intel_find_initial_plane_obj(crtc, plane_configs);
 
 		if (i915->display.funcs.display->fixup_initial_plane_config(crtc, plane_config))
-			intel_crtc_wait_for_next_vblank(crtc);
+			intel_plane_initial_vblank_wait(to_intel_plane(crtc->base.primary));
 
 		plane_config_fini(plane_config);
 	}
-- 
2.45.2


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

* Re: [PATCH] drm/xe/display: Add intel_plane_initial_vblank_wait
  2024-11-07 11:36   ` [PATCH] " Maarten Lankhorst
@ 2024-11-07 12:21     ` Ville Syrjälä
  2024-11-07 17:45       ` Maarten Lankhorst
  0 siblings, 1 reply; 28+ messages in thread
From: Ville Syrjälä @ 2024-11-07 12:21 UTC (permalink / raw)
  To: Maarten Lankhorst; +Cc: intel-xe, intel-gfx, Maarten, Lankhorst, dev

On Thu, Nov 07, 2024 at 12:36:17PM +0100, Maarten Lankhorst wrote:
> We're changing the driver to have no interrupts during early init for
> Xe, so we poll the PIPE_FRMSTMSMP counter instead.
> 
> Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> Link: https://patchwork.freedesktop.org/patch/msgid/20241105121857.17389-2-maarten.lankhorst@linux.intel.com
> Signed-off-by: Maarten Lankhorst,,, <dev@lankhorst.se>
> ---
>  drivers/gpu/drm/i915/display/intel_display.c  |  6 +++---
>  .../drm/i915/display/intel_plane_initial.c    |  9 ++++++++-
>  .../drm/i915/display/intel_plane_initial.h    |  2 ++
>  drivers/gpu/drm/xe/display/xe_plane_initial.c | 19 ++++++++++++++++++-
>  4 files changed, 31 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
> index d7f92dc56d1e9..7bd6da2bb36f7 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.c
> +++ b/drivers/gpu/drm/i915/display/intel_display.c
> @@ -795,7 +795,7 @@ void intel_plane_disable_noatomic(struct intel_crtc *crtc,
>  	if ((crtc_state->active_planes & ~BIT(PLANE_CURSOR)) == 0 &&
>  	    hsw_ips_disable(crtc_state)) {
>  		crtc_state->ips_enabled = false;
> -		intel_crtc_wait_for_next_vblank(crtc);
> +		intel_plane_initial_vblank_wait(plane);
>  	}
>  
>  	/*
> @@ -809,7 +809,7 @@ void intel_plane_disable_noatomic(struct intel_crtc *crtc,
>  	 */
>  	if (HAS_GMCH(dev_priv) &&
>  	    intel_set_memory_cxsr(dev_priv, false))
> -		intel_crtc_wait_for_next_vblank(crtc);
> +		intel_plane_initial_vblank_wait(plane);
>  
>  	/*
>  	 * Gen2 reports pipe underruns whenever all planes are disabled.
> @@ -819,7 +819,7 @@ void intel_plane_disable_noatomic(struct intel_crtc *crtc,
>  		intel_set_cpu_fifo_underrun_reporting(dev_priv, crtc->pipe, false);
>  
>  	intel_plane_disable_arm(NULL, plane, crtc_state);
> -	intel_crtc_wait_for_next_vblank(crtc);
> +	intel_plane_initial_vblank_wait(plane);
>  }
>  
>  unsigned int
> diff --git a/drivers/gpu/drm/i915/display/intel_plane_initial.c b/drivers/gpu/drm/i915/display/intel_plane_initial.c
> index 62401f6a04e4f..77eb2b763be5e 100644
> --- a/drivers/gpu/drm/i915/display/intel_plane_initial.c
> +++ b/drivers/gpu/drm/i915/display/intel_plane_initial.c
> @@ -14,6 +14,13 @@
>  #include "intel_frontbuffer.h"
>  #include "intel_plane_initial.h"
>  
> +void intel_plane_initial_vblank_wait(struct intel_plane *plane)
> +{
> +	struct intel_crtc *crtc = intel_crtc_for_pipe(to_intel_display(plane->base.dev), plane->pipe);
> +
> +	intel_crtc_wait_for_next_vblank(crtc);
> +}
> +
>  static bool
>  intel_reuse_initial_plane_obj(struct intel_crtc *this,
>  			      const struct intel_initial_plane_config plane_configs[],
> @@ -438,7 +445,7 @@ void intel_initial_plane_config(struct drm_i915_private *i915)
>  		intel_find_initial_plane_obj(crtc, plane_configs);
>  
>  		if (i915->display.funcs.display->fixup_initial_plane_config(crtc, plane_config))
> -			intel_crtc_wait_for_next_vblank(crtc);
> +			intel_plane_initial_vblank_wait(to_intel_plane(crtc->base.primary));
>  
>  		plane_config_fini(plane_config);
>  	}
> diff --git a/drivers/gpu/drm/i915/display/intel_plane_initial.h b/drivers/gpu/drm/i915/display/intel_plane_initial.h
> index 64ab95239cd45..149b1bf1bc1f8 100644
> --- a/drivers/gpu/drm/i915/display/intel_plane_initial.h
> +++ b/drivers/gpu/drm/i915/display/intel_plane_initial.h
> @@ -7,7 +7,9 @@
>  #define __INTEL_PLANE_INITIAL_H__
>  
>  struct drm_i915_private;
> +struct intel_plane;
>  
> +void intel_plane_initial_vblank_wait(struct intel_plane *plane);
>  void intel_initial_plane_config(struct drm_i915_private *i915);
>  
>  #endif
> diff --git a/drivers/gpu/drm/xe/display/xe_plane_initial.c b/drivers/gpu/drm/xe/display/xe_plane_initial.c
> index 668f544a7ac80..9252cfeef0a1f 100644
> --- a/drivers/gpu/drm/xe/display/xe_plane_initial.c
> +++ b/drivers/gpu/drm/xe/display/xe_plane_initial.c
> @@ -8,7 +8,9 @@
>  
>  #include "regs/xe_gtt_defs.h"
>  #include "xe_ggtt.h"
> +#include "xe_mmio.h"
>  
> +#include "i915_reg.h"
>  #include "intel_atomic_plane.h"
>  #include "intel_crtc.h"
>  #include "intel_display.h"
> @@ -22,6 +24,21 @@
>  
>  #include <generated/xe_wa_oob.h>
>  
> +void intel_plane_initial_vblank_wait(struct intel_plane *plane)
> +{
> +	/* Early xe has no irq */
> +	struct xe_device *xe = to_xe_device(plane->base.dev);
> +	struct xe_reg pipe_frmtmstmp = XE_REG(i915_mmio_reg_offset(PIPE_FRMTMSTMP(plane->pipe)));
> +	u32 timestamp;
> +	int ret;
> +
> +	timestamp = xe_mmio_read32(xe_root_tile_mmio(xe), pipe_frmtmstmp);
> +
> +	ret = xe_mmio_wait32_not(xe_root_tile_mmio(xe), pipe_frmtmstmp, ~0U, timestamp, 40000U, &timestamp, false);
> +	if (ret < 0)
> +		drm_warn(&xe->drm, "waiting for early vblank failed with %i\n", ret);

Why did you change to this from the earlier SURFLIVE approach?

> +}
> +
>  static bool
>  intel_reuse_initial_plane_obj(struct intel_crtc *this,
>  			      const struct intel_initial_plane_config plane_configs[],
> @@ -293,7 +310,7 @@ void intel_initial_plane_config(struct drm_i915_private *i915)
>  		intel_find_initial_plane_obj(crtc, plane_configs);
>  
>  		if (i915->display.funcs.display->fixup_initial_plane_config(crtc, plane_config))
> -			intel_crtc_wait_for_next_vblank(crtc);
> +			intel_plane_initial_vblank_wait(to_intel_plane(crtc->base.primary));
>  
>  		plane_config_fini(plane_config);
>  	}
> -- 
> 2.45.2

-- 
Ville Syrjälä
Intel

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

* ✓ Fi.CI.BAT: success for series starting with [1/9] drm/xe: Remove double pageflip (rev2)
  2024-11-07 10:01 [PATCH 1/9] drm/xe: Remove double pageflip Maarten Lankhorst
                   ` (8 preceding siblings ...)
  2024-11-07 10:16 ` ✗ Fi.CI.BUILD: failure for series starting with [1/9] drm/xe: Remove double pageflip Patchwork
@ 2024-11-07 12:23 ` Patchwork
  2024-11-07 12:23 ` ✗ Fi.CI.SPARSE: warning " Patchwork
  2024-11-07 13:57 ` ✗ Fi.CI.IGT: failure " Patchwork
  11 siblings, 0 replies; 28+ messages in thread
From: Patchwork @ 2024-11-07 12:23 UTC (permalink / raw)
  To: Maarten Lankhorst; +Cc: intel-gfx

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

== Series Details ==

Series: series starting with [1/9] drm/xe: Remove double pageflip (rev2)
URL   : https://patchwork.freedesktop.org/series/141046/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_15649 -> Patchwork_141046v2
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

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

Participating hosts (45 -> 42)
------------------------------

  Missing    (3): bat-arls-2 bat-arls-1 fi-snb-2520m 

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

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

### IGT changes ###

#### Issues hit ####

  * igt@i915_selftest@live@workarounds:
    - bat-mtlp-6:         [PASS][1] -> [ABORT][2] ([i915#12061]) +1 other test abort
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/bat-mtlp-6/igt@i915_selftest@live@workarounds.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/bat-mtlp-6/igt@i915_selftest@live@workarounds.html

  
#### Possible fixes ####

  * igt@i915_selftest@live:
    - bat-arlh-3:         [ABORT][3] ([i915#10341]) -> [PASS][4]
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/bat-arlh-3/igt@i915_selftest@live.html
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/bat-arlh-3/igt@i915_selftest@live.html

  * igt@i915_selftest@live@workarounds:
    - bat-arlh-3:         [ABORT][5] ([i915#12061]) -> [PASS][6]
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/bat-arlh-3/igt@i915_selftest@live@workarounds.html
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/bat-arlh-3/igt@i915_selftest@live@workarounds.html

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


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

  * Linux: CI_DRM_15649 -> Patchwork_141046v2

  CI-20190529: 20190529
  CI_DRM_15649: 6f358787ded211657532e2ee4df2e446b03d860f @ git://anongit.freedesktop.org/gfx-ci/linux
  IGT_8100: 84e42580f918da926481fd2fb37be01451d6ee9a @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  Patchwork_141046v2: 6f358787ded211657532e2ee4df2e446b03d860f @ git://anongit.freedesktop.org/gfx-ci/linux

== Logs ==

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

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

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

* ✗ Fi.CI.SPARSE: warning for series starting with [1/9] drm/xe: Remove double pageflip (rev2)
  2024-11-07 10:01 [PATCH 1/9] drm/xe: Remove double pageflip Maarten Lankhorst
                   ` (9 preceding siblings ...)
  2024-11-07 12:23 ` ✓ Fi.CI.BAT: success for series starting with [1/9] drm/xe: Remove double pageflip (rev2) Patchwork
@ 2024-11-07 12:23 ` Patchwork
  2024-11-07 13:57 ` ✗ Fi.CI.IGT: failure " Patchwork
  11 siblings, 0 replies; 28+ messages in thread
From: Patchwork @ 2024-11-07 12:23 UTC (permalink / raw)
  To: Maarten Lankhorst; +Cc: intel-gfx

== Series Details ==

Series: series starting with [1/9] drm/xe: Remove double pageflip (rev2)
URL   : https://patchwork.freedesktop.org/series/141046/
State : warning

== Summary ==

Error: dim sparse failed
Sparse version: v0.6.2
Fast mode used, each commit won't be checked separately.



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

* ✗ Fi.CI.IGT: failure for series starting with [1/9] drm/xe: Remove double pageflip (rev2)
  2024-11-07 10:01 [PATCH 1/9] drm/xe: Remove double pageflip Maarten Lankhorst
                   ` (10 preceding siblings ...)
  2024-11-07 12:23 ` ✗ Fi.CI.SPARSE: warning " Patchwork
@ 2024-11-07 13:57 ` Patchwork
  11 siblings, 0 replies; 28+ messages in thread
From: Patchwork @ 2024-11-07 13:57 UTC (permalink / raw)
  To: Maarten Lankhorst; +Cc: intel-gfx

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

== Series Details ==

Series: series starting with [1/9] drm/xe: Remove double pageflip (rev2)
URL   : https://patchwork.freedesktop.org/series/141046/
State : failure

== Summary ==

CI Bug Log - changes from CI_DRM_15649_full -> Patchwork_141046v2_full
====================================================

Summary
-------

  **FAILURE**

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

  

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

  No changes in participating hosts

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

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

### IGT changes ###

#### Possible regressions ####

  * igt@debugfs_test@sysfs:
    - shard-dg1:          [PASS][1] -> [FAIL][2] +40 other tests fail
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-dg1-19/igt@debugfs_test@sysfs.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg1-14/igt@debugfs_test@sysfs.html

  * igt@kms_flip@2x-flip-vs-wf_vblank-interruptible@ac-hdmi-a1-hdmi-a2:
    - shard-glk:          ([PASS][3], [PASS][4]) -> [FAIL][5]
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-glk1/igt@kms_flip@2x-flip-vs-wf_vblank-interruptible@ac-hdmi-a1-hdmi-a2.html
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-glk6/igt@kms_flip@2x-flip-vs-wf_vblank-interruptible@ac-hdmi-a1-hdmi-a2.html
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-glk3/igt@kms_flip@2x-flip-vs-wf_vblank-interruptible@ac-hdmi-a1-hdmi-a2.html

  * igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-shrfb-draw-pwrite:
    - shard-dg1:          NOTRUN -> [INCOMPLETE][6]
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg1-14/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-shrfb-draw-pwrite.html

  * igt@syncobj_wait@single-wait-all-submitted:
    - shard-dg1:          NOTRUN -> [FAIL][7] +15 other tests fail
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg1-14/igt@syncobj_wait@single-wait-all-submitted.html

  
#### Warnings ####

  * igt@gem_close_race@multigpu-basic-process:
    - shard-dg1:          [SKIP][8] ([i915#7697]) -> [FAIL][9]
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-dg1-19/igt@gem_close_race@multigpu-basic-process.html
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg1-14/igt@gem_close_race@multigpu-basic-process.html

  * igt@gem_exec_fair@basic-throttle:
    - shard-dg1:          [SKIP][10] ([i915#3539]) -> [FAIL][11]
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-dg1-19/igt@gem_exec_fair@basic-throttle.html
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg1-14/igt@gem_exec_fair@basic-throttle.html

  * igt@gem_exec_flush@basic-batch-kernel-default-wb:
    - shard-dg1:          [SKIP][12] ([i915#3539] / [i915#4852]) -> [FAIL][13]
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-dg1-19/igt@gem_exec_flush@basic-batch-kernel-default-wb.html
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg1-14/igt@gem_exec_flush@basic-batch-kernel-default-wb.html

  * igt@gem_mmap@bad-object:
    - shard-dg1:          [SKIP][14] ([i915#4083]) -> [FAIL][15]
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-dg1-19/igt@gem_mmap@bad-object.html
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg1-14/igt@gem_mmap@bad-object.html

  * igt@gem_mmap_gtt@big-copy-odd:
    - shard-dg1:          [SKIP][16] ([i915#4077]) -> [FAIL][17] +1 other test fail
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-dg1-19/igt@gem_mmap_gtt@big-copy-odd.html
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg1-14/igt@gem_mmap_gtt@big-copy-odd.html

  * igt@gem_pxp@regular-baseline-src-copy-readible:
    - shard-dg1:          [SKIP][18] ([i915#4270]) -> [FAIL][19]
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-dg1-19/igt@gem_pxp@regular-baseline-src-copy-readible.html
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg1-14/igt@gem_pxp@regular-baseline-src-copy-readible.html

  * igt@gem_readwrite@beyond-eob:
    - shard-dg1:          [SKIP][20] ([i915#3282]) -> [FAIL][21]
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-dg1-19/igt@gem_readwrite@beyond-eob.html
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg1-14/igt@gem_readwrite@beyond-eob.html

  * igt@i915_selftest@mock:
    - shard-dg1:          [DMESG-WARN][22] ([i915#9311]) -> [FAIL][23]
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-dg1-19/igt@i915_selftest@mock.html
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg1-14/igt@i915_selftest@mock.html

  * igt@kms_big_fb@4-tiled-64bpp-rotate-90:
    - shard-dg1:          [SKIP][24] ([i915#4538] / [i915#5286]) -> [FAIL][25]
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-dg1-19/igt@kms_big_fb@4-tiled-64bpp-rotate-90.html
   [25]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg1-14/igt@kms_big_fb@4-tiled-64bpp-rotate-90.html

  * igt@kms_big_fb@y-tiled-64bpp-rotate-270:
    - shard-dg1:          [SKIP][26] ([i915#3638]) -> [FAIL][27] +1 other test fail
   [26]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-dg1-19/igt@kms_big_fb@y-tiled-64bpp-rotate-270.html
   [27]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg1-14/igt@kms_big_fb@y-tiled-64bpp-rotate-270.html

  * igt@kms_big_fb@yf-tiled-32bpp-rotate-270:
    - shard-dg1:          [SKIP][28] ([i915#4538]) -> [FAIL][29]
   [28]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-dg1-19/igt@kms_big_fb@yf-tiled-32bpp-rotate-270.html
   [29]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg1-14/igt@kms_big_fb@yf-tiled-32bpp-rotate-270.html

  * igt@kms_ccs@crc-primary-rotation-180-4-tiled-dg2-rc-ccs-cc:
    - shard-dg1:          [SKIP][30] ([i915#6095]) -> [FAIL][31] +1 other test fail
   [30]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-dg1-19/igt@kms_ccs@crc-primary-rotation-180-4-tiled-dg2-rc-ccs-cc.html
   [31]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg1-14/igt@kms_ccs@crc-primary-rotation-180-4-tiled-dg2-rc-ccs-cc.html

  * igt@kms_ccs@crc-sprite-planes-basic-4-tiled-bmg-ccs:
    - shard-dg1:          [SKIP][32] ([i915#12313]) -> [FAIL][33]
   [32]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-dg1-19/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-bmg-ccs.html
   [33]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg1-14/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-bmg-ccs.html

  * igt@kms_chamelium_frames@dp-crc-single:
    - shard-dg1:          [SKIP][34] ([i915#7828]) -> [FAIL][35]
   [34]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-dg1-19/igt@kms_chamelium_frames@dp-crc-single.html
   [35]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg1-14/igt@kms_chamelium_frames@dp-crc-single.html

  * igt@kms_content_protection@dp-mst-lic-type-0:
    - shard-dg1:          [SKIP][36] ([i915#3299]) -> [FAIL][37]
   [36]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-dg1-19/igt@kms_content_protection@dp-mst-lic-type-0.html
   [37]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg1-14/igt@kms_content_protection@dp-mst-lic-type-0.html

  * igt@kms_content_protection@srm:
    - shard-dg1:          [SKIP][38] ([i915#7116]) -> [FAIL][39]
   [38]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-dg1-19/igt@kms_content_protection@srm.html
   [39]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg1-14/igt@kms_content_protection@srm.html

  * igt@kms_cursor_crc@cursor-onscreen-32x32:
    - shard-dg1:          [SKIP][40] ([i915#3555]) -> [FAIL][41] +1 other test fail
   [40]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-dg1-19/igt@kms_cursor_crc@cursor-onscreen-32x32.html
   [41]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg1-14/igt@kms_cursor_crc@cursor-onscreen-32x32.html

  * igt@kms_cursor_crc@cursor-sliding-512x512:
    - shard-dg1:          [SKIP][42] ([i915#11453] / [i915#3359]) -> [FAIL][43]
   [42]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-dg1-19/igt@kms_cursor_crc@cursor-sliding-512x512.html
   [43]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg1-14/igt@kms_cursor_crc@cursor-sliding-512x512.html

  * igt@kms_cursor_legacy@cursorb-vs-flipb-atomic:
    - shard-dg1:          [SKIP][44] -> [FAIL][45] +6 other tests fail
   [44]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-dg1-19/igt@kms_cursor_legacy@cursorb-vs-flipb-atomic.html
   [45]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg1-14/igt@kms_cursor_legacy@cursorb-vs-flipb-atomic.html

  * igt@kms_cursor_legacy@short-busy-flip-before-cursor-toggle:
    - shard-dg1:          [SKIP][46] ([i915#4103] / [i915#4213]) -> [FAIL][47]
   [46]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-dg1-19/igt@kms_cursor_legacy@short-busy-flip-before-cursor-toggle.html
   [47]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg1-14/igt@kms_cursor_legacy@short-busy-flip-before-cursor-toggle.html

  * igt@kms_dsc@dsc-with-output-formats:
    - shard-dg1:          [SKIP][48] ([i915#3555] / [i915#3840]) -> [FAIL][49]
   [48]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-dg1-19/igt@kms_dsc@dsc-with-output-formats.html
   [49]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg1-14/igt@kms_dsc@dsc-with-output-formats.html

  * igt@kms_flip@2x-flip-vs-panning-vs-hang:
    - shard-dg1:          [SKIP][50] ([i915#9934]) -> [FAIL][51]
   [50]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-dg1-19/igt@kms_flip@2x-flip-vs-panning-vs-hang.html
   [51]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg1-14/igt@kms_flip@2x-flip-vs-panning-vs-hang.html

  * igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-32bpp-yftile-upscaling:
    - shard-dg1:          [SKIP][52] ([i915#2672] / [i915#3555]) -> [FAIL][53] +1 other test fail
   [52]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-dg1-19/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-32bpp-yftile-upscaling.html
   [53]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg1-14/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-32bpp-yftile-upscaling.html

  * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-shrfb-draw-mmap-cpu:
    - shard-dg1:          [SKIP][54] ([i915#3458]) -> [FAIL][55] +3 other tests fail
   [54]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-dg1-19/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-shrfb-draw-mmap-cpu.html
   [55]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg1-14/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-shrfb-draw-mmap-cpu.html

  * igt@kms_frontbuffer_tracking@psr-2p-primscrn-pri-indfb-draw-mmap-wc:
    - shard-dg1:          [SKIP][56] ([i915#8708]) -> [FAIL][57] +5 other tests fail
   [56]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-dg1-19/igt@kms_frontbuffer_tracking@psr-2p-primscrn-pri-indfb-draw-mmap-wc.html
   [57]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg1-14/igt@kms_frontbuffer_tracking@psr-2p-primscrn-pri-indfb-draw-mmap-wc.html

  * igt@kms_plane_scaling@plane-upscale-20x20-with-rotation:
    - shard-dg1:          [SKIP][58] ([i915#12247]) -> [FAIL][59]
   [58]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-dg1-19/igt@kms_plane_scaling@plane-upscale-20x20-with-rotation.html
   [59]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg1-14/igt@kms_plane_scaling@plane-upscale-20x20-with-rotation.html

  * igt@kms_pm_rpm@modeset-lpsp-stress-no-wait:
    - shard-dg1:          [SKIP][60] ([i915#9519]) -> [FAIL][61]
   [60]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-dg1-19/igt@kms_pm_rpm@modeset-lpsp-stress-no-wait.html
   [61]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg1-14/igt@kms_pm_rpm@modeset-lpsp-stress-no-wait.html

  * igt@kms_psr2_sf@pr-overlay-plane-move-continuous-exceed-sf:
    - shard-dg1:          [SKIP][62] ([i915#11520]) -> [FAIL][63]
   [62]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-dg1-19/igt@kms_psr2_sf@pr-overlay-plane-move-continuous-exceed-sf.html
   [63]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg1-14/igt@kms_psr2_sf@pr-overlay-plane-move-continuous-exceed-sf.html

  * igt@kms_psr@fbc-pr-sprite-plane-move:
    - shard-dg1:          [SKIP][64] ([i915#1072] / [i915#9732]) -> [FAIL][65] +2 other tests fail
   [64]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-dg1-19/igt@kms_psr@fbc-pr-sprite-plane-move.html
   [65]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg1-14/igt@kms_psr@fbc-pr-sprite-plane-move.html

  * igt@prime_vgem@basic-fence-read:
    - shard-dg1:          [SKIP][66] ([i915#3708]) -> [FAIL][67]
   [66]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-dg1-19/igt@prime_vgem@basic-fence-read.html
   [67]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg1-14/igt@prime_vgem@basic-fence-read.html

  
#### Suppressed ####

  The following results come from untrusted machines, tests, or statuses.
  They do not affect the overall result.

  * igt@kms_rotation_crc@bad-tiling:
    - {shard-dg2-9}:      NOTRUN -> [SKIP][68]
   [68]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg2-9/igt@kms_rotation_crc@bad-tiling.html

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

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

### IGT changes ###

#### Issues hit ####

  * igt@api_intel_bb@object-reloc-keep-cache:
    - shard-dg1:          NOTRUN -> [SKIP][69] ([i915#8411])
   [69]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg1-18/igt@api_intel_bb@object-reloc-keep-cache.html

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

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

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

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

  * igt@gem_ctx_engines@invalid-engines:
    - shard-mtlp:         [PASS][74] -> [FAIL][75] ([i915#12031])
   [74]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-mtlp-4/igt@gem_ctx_engines@invalid-engines.html
   [75]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-mtlp-8/igt@gem_ctx_engines@invalid-engines.html

  * igt@gem_exec_capture@capture@vecs0-lmem0:
    - shard-dg2:          NOTRUN -> [FAIL][76] ([i915#11965] / [i915#12558]) +2 other tests fail
   [76]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg2-1/igt@gem_exec_capture@capture@vecs0-lmem0.html

  * igt@gem_exec_capture@capture@vecs1-smem:
    - shard-dg2:          NOTRUN -> [FAIL][77] ([i915#11965]) +1 other test fail
   [77]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg2-1/igt@gem_exec_capture@capture@vecs1-smem.html

  * igt@gem_exec_fair@basic-deadline:
    - shard-rkl:          [PASS][78] -> [FAIL][79] ([i915#2846])
   [78]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-rkl-1/igt@gem_exec_fair@basic-deadline.html
   [79]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-rkl-5/igt@gem_exec_fair@basic-deadline.html

  * igt@gem_exec_fair@basic-pace-share:
    - shard-dg2:          NOTRUN -> [SKIP][80] ([i915#3539] / [i915#4852])
   [80]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg2-10/igt@gem_exec_fair@basic-pace-share.html

  * igt@gem_exec_fair@basic-pace-share@rcs0:
    - shard-glk:          ([PASS][81], [PASS][82]) -> [FAIL][83] ([i915#2842]) +1 other test fail
   [81]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-glk2/igt@gem_exec_fair@basic-pace-share@rcs0.html
   [82]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-glk4/igt@gem_exec_fair@basic-pace-share@rcs0.html
   [83]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-glk6/igt@gem_exec_fair@basic-pace-share@rcs0.html

  * igt@gem_exec_fair@basic-pace@vecs0:
    - shard-rkl:          [PASS][84] -> [FAIL][85] ([i915#2842])
   [84]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-rkl-1/igt@gem_exec_fair@basic-pace@vecs0.html
   [85]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-rkl-4/igt@gem_exec_fair@basic-pace@vecs0.html
    - shard-tglu-1:       NOTRUN -> [FAIL][86] ([i915#2842]) +7 other tests fail
   [86]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-tglu-1/igt@gem_exec_fair@basic-pace@vecs0.html

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

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

  * igt@gem_exec_reloc@basic-write-cpu-active:
    - shard-dg1:          NOTRUN -> [SKIP][89] ([i915#3281]) +3 other tests skip
   [89]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg1-14/igt@gem_exec_reloc@basic-write-cpu-active.html

  * igt@gem_exec_reloc@basic-write-cpu-noreloc:
    - shard-mtlp:         NOTRUN -> [SKIP][90] ([i915#3281])
   [90]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-mtlp-6/igt@gem_exec_reloc@basic-write-cpu-noreloc.html

  * igt@gem_exec_suspend@basic-s4-devices:
    - shard-dg2:          [PASS][91] -> [ABORT][92] ([i915#7975] / [i915#8213]) +1 other test abort
   [91]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-dg2-11/igt@gem_exec_suspend@basic-s4-devices.html
   [92]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg2-2/igt@gem_exec_suspend@basic-s4-devices.html

  * igt@gem_fence_thrash@bo-write-verify-y:
    - shard-dg2:          NOTRUN -> [SKIP][93] ([i915#4860]) +1 other test skip
   [93]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg2-10/igt@gem_fence_thrash@bo-write-verify-y.html

  * igt@gem_lmem_swapping@verify-ccs:
    - shard-tglu:         NOTRUN -> [SKIP][94] ([i915#4613])
   [94]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-tglu-7/igt@gem_lmem_swapping@verify-ccs.html

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

  * igt@gem_media_fill@media-fill:
    - shard-dg2:          NOTRUN -> [SKIP][96] ([i915#8289])
   [96]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg2-1/igt@gem_media_fill@media-fill.html

  * igt@gem_mmap@basic-small-bo:
    - shard-dg2:          NOTRUN -> [SKIP][97] ([i915#4083]) +3 other tests skip
   [97]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg2-10/igt@gem_mmap@basic-small-bo.html

  * igt@gem_mmap_gtt@basic-read-write-distinct:
    - shard-dg2:          NOTRUN -> [SKIP][98] ([i915#4077]) +4 other tests skip
   [98]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg2-1/igt@gem_mmap_gtt@basic-read-write-distinct.html

  * igt@gem_mmap_gtt@basic-small-bo-tiledx:
    - shard-mtlp:         NOTRUN -> [SKIP][99] ([i915#4077])
   [99]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-mtlp-7/igt@gem_mmap_gtt@basic-small-bo-tiledx.html

  * igt@gem_mmap_wc@write-prefaulted:
    - shard-mtlp:         NOTRUN -> [SKIP][100] ([i915#4083])
   [100]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-mtlp-7/igt@gem_mmap_wc@write-prefaulted.html

  * igt@gem_partial_pwrite_pread@writes-after-reads:
    - shard-dg1:          NOTRUN -> [SKIP][101] ([i915#3282])
   [101]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg1-14/igt@gem_partial_pwrite_pread@writes-after-reads.html
    - shard-mtlp:         NOTRUN -> [SKIP][102] ([i915#3282])
   [102]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-mtlp-6/igt@gem_partial_pwrite_pread@writes-after-reads.html

  * igt@gem_pwrite@basic-random:
    - shard-dg2:          NOTRUN -> [SKIP][103] ([i915#3282]) +3 other tests skip
   [103]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg2-10/igt@gem_pwrite@basic-random.html

  * igt@gem_pxp@display-protected-crc:
    - shard-tglu:         NOTRUN -> [SKIP][104] ([i915#4270]) +1 other test skip
   [104]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-tglu-7/igt@gem_pxp@display-protected-crc.html

  * igt@gem_pxp@reject-modify-context-protection-off-3:
    - shard-dg2:          NOTRUN -> [SKIP][105] ([i915#4270])
   [105]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg2-1/igt@gem_pxp@reject-modify-context-protection-off-3.html

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

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

  * igt@gem_userptr_blits@dmabuf-sync:
    - shard-tglu-1:       NOTRUN -> [SKIP][108] ([i915#3297] / [i915#3323])
   [108]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-tglu-1/igt@gem_userptr_blits@dmabuf-sync.html

  * igt@gem_userptr_blits@map-fixed-invalidate-overlap:
    - shard-dg1:          NOTRUN -> [SKIP][109] ([i915#3297] / [i915#4880])
   [109]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg1-18/igt@gem_userptr_blits@map-fixed-invalidate-overlap.html

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

  * igt@gen9_exec_parse@bb-oversize:
    - shard-tglu:         NOTRUN -> [SKIP][111] ([i915#2527] / [i915#2856]) +2 other tests skip
   [111]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-tglu-7/igt@gen9_exec_parse@bb-oversize.html

  * igt@gen9_exec_parse@bb-secure:
    - shard-dg2:          NOTRUN -> [SKIP][112] ([i915#2856])
   [112]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg2-10/igt@gen9_exec_parse@bb-secure.html

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

  * igt@i915_pm_freq_api@freq-suspend@gt0:
    - shard-dg2:          NOTRUN -> [INCOMPLETE][114] ([i915#12455]) +1 other test incomplete
   [114]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg2-10/igt@i915_pm_freq_api@freq-suspend@gt0.html

  * igt@i915_pm_rpm@system-suspend-devices:
    - shard-snb:          NOTRUN -> [SKIP][115] +29 other tests skip
   [115]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-snb7/igt@i915_pm_rpm@system-suspend-devices.html

  * igt@i915_pm_rps@min-max-config-loaded:
    - shard-dg2:          NOTRUN -> [SKIP][116] ([i915#11681] / [i915#6621])
   [116]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg2-10/igt@i915_pm_rps@min-max-config-loaded.html

  * igt@i915_pm_sseu@full-enable:
    - shard-mtlp:         NOTRUN -> [SKIP][117] ([i915#8437])
   [117]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-mtlp-3/igt@i915_pm_sseu@full-enable.html

  * igt@kms_async_flips@async-flip-with-page-flip-events@pipe-b-hdmi-a-2-y-rc-ccs-cc:
    - shard-rkl:          NOTRUN -> [SKIP][118] ([i915#8709]) +3 other tests skip
   [118]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-rkl-3/igt@kms_async_flips@async-flip-with-page-flip-events@pipe-b-hdmi-a-2-y-rc-ccs-cc.html

  * igt@kms_async_flips@async-flip-with-page-flip-events@pipe-b-hdmi-a-4-y-rc-ccs:
    - shard-dg1:          NOTRUN -> [SKIP][119] ([i915#8709]) +7 other tests skip
   [119]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg1-18/igt@kms_async_flips@async-flip-with-page-flip-events@pipe-b-hdmi-a-4-y-rc-ccs.html

  * igt@kms_atomic_transition@plane-toggle-modeset-transition@pipe-a-edp-1:
    - shard-mtlp:         [PASS][120] -> [FAIL][121] ([i915#11808] / [i915#5956]) +3 other tests fail
   [120]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-mtlp-1/igt@kms_atomic_transition@plane-toggle-modeset-transition@pipe-a-edp-1.html
   [121]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-mtlp-4/igt@kms_atomic_transition@plane-toggle-modeset-transition@pipe-a-edp-1.html

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

  * igt@kms_big_fb@4-tiled-8bpp-rotate-180:
    - shard-tglu:         NOTRUN -> [SKIP][123] ([i915#5286]) +1 other test skip
   [123]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-tglu-7/igt@kms_big_fb@4-tiled-8bpp-rotate-180.html

  * igt@kms_big_fb@yf-tiled-16bpp-rotate-90:
    - shard-dg2:          NOTRUN -> [SKIP][124] ([i915#4538] / [i915#5190]) +6 other tests skip
   [124]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg2-1/igt@kms_big_fb@yf-tiled-16bpp-rotate-90.html

  * igt@kms_big_fb@yf-tiled-addfb-size-offset-overflow:
    - shard-tglu-1:       NOTRUN -> [SKIP][125] +41 other tests skip
   [125]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-tglu-1/igt@kms_big_fb@yf-tiled-addfb-size-offset-overflow.html

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

  * igt@kms_ccs@bad-aux-stride-4-tiled-mtl-mc-ccs@pipe-a-hdmi-a-4:
    - shard-dg1:          NOTRUN -> [SKIP][127] ([i915#6095]) +160 other tests skip
   [127]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg1-19/igt@kms_ccs@bad-aux-stride-4-tiled-mtl-mc-ccs@pipe-a-hdmi-a-4.html

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

  * igt@kms_ccs@bad-rotation-90-y-tiled-gen12-mc-ccs@pipe-b-hdmi-a-2:
    - shard-dg2:          NOTRUN -> [SKIP][129] ([i915#10307] / [i915#6095]) +139 other tests skip
   [129]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg2-11/igt@kms_ccs@bad-rotation-90-y-tiled-gen12-mc-ccs@pipe-b-hdmi-a-2.html

  * igt@kms_ccs@crc-primary-basic-4-tiled-dg2-rc-ccs@pipe-b-hdmi-a-1:
    - shard-tglu:         NOTRUN -> [SKIP][130] ([i915#6095]) +29 other tests skip
   [130]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-tglu-7/igt@kms_ccs@crc-primary-basic-4-tiled-dg2-rc-ccs@pipe-b-hdmi-a-1.html

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

  * igt@kms_ccs@missing-ccs-buffer-y-tiled-ccs@pipe-d-hdmi-a-1:
    - shard-dg2:          NOTRUN -> [SKIP][132] ([i915#10307] / [i915#10434] / [i915#6095]) +1 other test skip
   [132]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg2-8/igt@kms_ccs@missing-ccs-buffer-y-tiled-ccs@pipe-d-hdmi-a-1.html

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

  * igt@kms_cdclk@mode-transition@pipe-b-hdmi-a-2:
    - shard-dg2:          NOTRUN -> [SKIP][134] ([i915#7213]) +3 other tests skip
   [134]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg2-11/igt@kms_cdclk@mode-transition@pipe-b-hdmi-a-2.html

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

  * igt@kms_chamelium_audio@dp-audio:
    - shard-tglu:         NOTRUN -> [SKIP][136] ([i915#7828]) +6 other tests skip
   [136]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-tglu-7/igt@kms_chamelium_audio@dp-audio.html

  * igt@kms_chamelium_color@ctm-green-to-red:
    - shard-dg2:          NOTRUN -> [SKIP][137] +5 other tests skip
   [137]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg2-10/igt@kms_chamelium_color@ctm-green-to-red.html

  * igt@kms_chamelium_edid@dp-edid-resolution-list:
    - shard-dg1:          NOTRUN -> [SKIP][138] ([i915#7828])
   [138]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg1-19/igt@kms_chamelium_edid@dp-edid-resolution-list.html

  * igt@kms_chamelium_edid@hdmi-edid-read:
    - shard-tglu-1:       NOTRUN -> [SKIP][139] ([i915#7828]) +3 other tests skip
   [139]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-tglu-1/igt@kms_chamelium_edid@hdmi-edid-read.html

  * igt@kms_chamelium_frames@hdmi-cmp-planar-formats:
    - shard-dg2:          NOTRUN -> [SKIP][140] ([i915#7828]) +2 other tests skip
   [140]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg2-10/igt@kms_chamelium_frames@hdmi-cmp-planar-formats.html

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

  * igt@kms_cursor_crc@cursor-offscreen-32x10:
    - shard-dg2:          NOTRUN -> [SKIP][142] ([i915#3555])
   [142]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg2-1/igt@kms_cursor_crc@cursor-offscreen-32x10.html

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

  * igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions:
    - shard-tglu:         NOTRUN -> [SKIP][144] ([i915#4103])
   [144]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-tglu-7/igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions.html

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

  * igt@kms_display_modes@extended-mode-basic:
    - shard-tglu:         NOTRUN -> [SKIP][146] ([i915#3555])
   [146]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-tglu-7/igt@kms_display_modes@extended-mode-basic.html

  * igt@kms_dsc@dsc-fractional-bpp:
    - shard-dg2:          NOTRUN -> [SKIP][147] ([i915#3840] / [i915#9688])
   [147]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg2-1/igt@kms_dsc@dsc-fractional-bpp.html

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

  * igt@kms_fbcon_fbt@psr:
    - shard-tglu:         NOTRUN -> [SKIP][149] ([i915#3469])
   [149]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-tglu-7/igt@kms_fbcon_fbt@psr.html

  * igt@kms_fbcon_fbt@psr-suspend:
    - shard-dg2:          NOTRUN -> [SKIP][150] ([i915#3469])
   [150]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg2-1/igt@kms_fbcon_fbt@psr-suspend.html

  * igt@kms_fence_pin_leak:
    - shard-dg2:          NOTRUN -> [SKIP][151] ([i915#4881])
   [151]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg2-1/igt@kms_fence_pin_leak.html

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

  * igt@kms_flip@2x-flip-vs-suspend:
    - shard-dg1:          NOTRUN -> [SKIP][153] ([i915#9934])
   [153]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg1-18/igt@kms_flip@2x-flip-vs-suspend.html

  * igt@kms_flip@2x-flip-vs-wf_vblank-interruptible:
    - shard-glk:          ([PASS][154], [PASS][155]) -> [FAIL][156] ([i915#12674])
   [154]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-glk6/igt@kms_flip@2x-flip-vs-wf_vblank-interruptible.html
   [155]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-glk1/igt@kms_flip@2x-flip-vs-wf_vblank-interruptible.html
   [156]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-glk3/igt@kms_flip@2x-flip-vs-wf_vblank-interruptible.html

  * igt@kms_flip@2x-flip-vs-wf_vblank-interruptible@bc-hdmi-a1-hdmi-a2:
    - shard-glk:          ([PASS][157], [PASS][158]) -> [FAIL][159] ([i915#12431])
   [157]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-glk6/igt@kms_flip@2x-flip-vs-wf_vblank-interruptible@bc-hdmi-a1-hdmi-a2.html
   [158]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-glk1/igt@kms_flip@2x-flip-vs-wf_vblank-interruptible@bc-hdmi-a1-hdmi-a2.html
   [159]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-glk3/igt@kms_flip@2x-flip-vs-wf_vblank-interruptible@bc-hdmi-a1-hdmi-a2.html

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

  * igt@kms_flip@2x-wf_vblank-ts-check:
    - shard-snb:          [PASS][161] -> [FAIL][162] ([i915#2122]) +5 other tests fail
   [161]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-snb7/igt@kms_flip@2x-wf_vblank-ts-check.html
   [162]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-snb7/igt@kms_flip@2x-wf_vblank-ts-check.html

  * igt@kms_flip@flip-vs-blocking-wf-vblank:
    - shard-dg1:          [PASS][163] -> [FAIL][164] ([i915#11989] / [i915#12517] / [i915#2122])
   [163]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-dg1-14/igt@kms_flip@flip-vs-blocking-wf-vblank.html
   [164]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg1-16/igt@kms_flip@flip-vs-blocking-wf-vblank.html

  * igt@kms_flip@flip-vs-blocking-wf-vblank@a-hdmi-a1:
    - shard-glk:          ([PASS][165], [PASS][166]) -> [FAIL][167] ([i915#2122]) +1 other test fail
   [165]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-glk1/igt@kms_flip@flip-vs-blocking-wf-vblank@a-hdmi-a1.html
   [166]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-glk9/igt@kms_flip@flip-vs-blocking-wf-vblank@a-hdmi-a1.html
   [167]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-glk7/igt@kms_flip@flip-vs-blocking-wf-vblank@a-hdmi-a1.html

  * igt@kms_flip@flip-vs-blocking-wf-vblank@a-hdmi-a4:
    - shard-dg1:          [PASS][168] -> [FAIL][169] ([i915#2122]) +1 other test fail
   [168]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-dg1-14/igt@kms_flip@flip-vs-blocking-wf-vblank@a-hdmi-a4.html
   [169]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg1-16/igt@kms_flip@flip-vs-blocking-wf-vblank@a-hdmi-a4.html

  * igt@kms_flip@flip-vs-blocking-wf-vblank@b-hdmi-a1:
    - shard-rkl:          NOTRUN -> [FAIL][170] ([i915#2122]) +1 other test fail
   [170]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-rkl-2/igt@kms_flip@flip-vs-blocking-wf-vblank@b-hdmi-a1.html

  * igt@kms_flip@flip-vs-suspend:
    - shard-dg1:          NOTRUN -> [INCOMPLETE][171] ([i915#4839] / [i915#6113])
   [171]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg1-18/igt@kms_flip@flip-vs-suspend.html

  * igt@kms_flip@flip-vs-suspend@c-hdmi-a4:
    - shard-dg1:          NOTRUN -> [INCOMPLETE][172] ([i915#6113])
   [172]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg1-18/igt@kms_flip@flip-vs-suspend@c-hdmi-a4.html

  * igt@kms_flip@plain-flip-ts-check:
    - shard-dg2:          [PASS][173] -> [FAIL][174] ([i915#2122]) +1 other test fail
   [173]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-dg2-8/igt@kms_flip@plain-flip-ts-check.html
   [174]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg2-5/igt@kms_flip@plain-flip-ts-check.html

  * igt@kms_flip@wf_vblank-ts-check:
    - shard-mtlp:         [PASS][175] -> [FAIL][176] ([i915#11989] / [i915#2122])
   [175]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-mtlp-7/igt@kms_flip@wf_vblank-ts-check.html
   [176]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-mtlp-1/igt@kms_flip@wf_vblank-ts-check.html

  * igt@kms_flip@wf_vblank-ts-check@a-hdmi-a2:
    - shard-dg2:          NOTRUN -> [FAIL][177] ([i915#2122]) +1 other test fail
   [177]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg2-11/igt@kms_flip@wf_vblank-ts-check@a-hdmi-a2.html

  * igt@kms_flip@wf_vblank-ts-check@c-edp1:
    - shard-mtlp:         [PASS][178] -> [FAIL][179] ([i915#2122]) +2 other tests fail
   [178]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-mtlp-7/igt@kms_flip@wf_vblank-ts-check@c-edp1.html
   [179]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-mtlp-1/igt@kms_flip@wf_vblank-ts-check@c-edp1.html

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

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

  * igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling:
    - shard-dg2:          NOTRUN -> [SKIP][182] ([i915#2672] / [i915#3555] / [i915#5190])
   [182]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg2-1/igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling.html

  * igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling@pipe-a-valid-mode:
    - shard-dg2:          NOTRUN -> [SKIP][183] ([i915#2672])
   [183]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg2-1/igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling@pipe-a-valid-mode.html

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

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

  * igt@kms_frontbuffer_tracking@fbc-2p-primscrn-shrfb-pgflip-blt:
    - shard-snb:          [PASS][186] -> [SKIP][187]
   [186]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-snb2/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-shrfb-pgflip-blt.html
   [187]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-snb5/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-shrfb-pgflip-blt.html

  * igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-draw-pwrite:
    - shard-dg1:          NOTRUN -> [SKIP][188] +3 other tests skip
   [188]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg1-19/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-draw-pwrite.html

  * igt@kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-indfb-draw-pwrite:
    - shard-dg1:          NOTRUN -> [SKIP][189] ([i915#3458]) +1 other test skip
   [189]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg1-18/igt@kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-indfb-draw-pwrite.html

  * igt@kms_frontbuffer_tracking@fbcpsr-1p-pri-indfb-multidraw:
    - shard-glk:          NOTRUN -> [SKIP][190] +1 other test skip
   [190]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-glk3/igt@kms_frontbuffer_tracking@fbcpsr-1p-pri-indfb-multidraw.html

  * igt@kms_frontbuffer_tracking@fbcpsr-rgb565-draw-render:
    - shard-dg2:          NOTRUN -> [SKIP][191] ([i915#3458]) +3 other tests skip
   [191]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg2-1/igt@kms_frontbuffer_tracking@fbcpsr-rgb565-draw-render.html

  * igt@kms_frontbuffer_tracking@psr-1p-offscren-pri-indfb-draw-mmap-cpu:
    - shard-tglu:         NOTRUN -> [SKIP][192] +35 other tests skip
   [192]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-tglu-7/igt@kms_frontbuffer_tracking@psr-1p-offscren-pri-indfb-draw-mmap-cpu.html

  * igt@kms_frontbuffer_tracking@psr-2p-primscrn-cur-indfb-draw-render:
    - shard-mtlp:         NOTRUN -> [SKIP][193] ([i915#1825]) +1 other test skip
   [193]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-mtlp-7/igt@kms_frontbuffer_tracking@psr-2p-primscrn-cur-indfb-draw-render.html

  * igt@kms_frontbuffer_tracking@psr-2p-primscrn-pri-shrfb-draw-mmap-wc:
    - shard-dg1:          NOTRUN -> [SKIP][194] ([i915#8708])
   [194]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg1-14/igt@kms_frontbuffer_tracking@psr-2p-primscrn-pri-shrfb-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@psr-2p-scndscrn-cur-indfb-move:
    - shard-dg2:          NOTRUN -> [SKIP][195] ([i915#5354]) +14 other tests skip
   [195]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg2-1/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-cur-indfb-move.html

  * igt@kms_frontbuffer_tracking@psr-farfromfence-mmap-gtt:
    - shard-dg2:          NOTRUN -> [SKIP][196] ([i915#8708]) +6 other tests skip
   [196]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg2-1/igt@kms_frontbuffer_tracking@psr-farfromfence-mmap-gtt.html

  * igt@kms_hdr@bpc-switch:
    - shard-dg2:          [PASS][197] -> [SKIP][198] ([i915#3555] / [i915#8228])
   [197]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-dg2-10/igt@kms_hdr@bpc-switch.html
   [198]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg2-11/igt@kms_hdr@bpc-switch.html
    - shard-tglu:         NOTRUN -> [SKIP][199] ([i915#3555] / [i915#8228])
   [199]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-tglu-7/igt@kms_hdr@bpc-switch.html

  * igt@kms_hdr@bpc-switch-dpms:
    - shard-dg2:          NOTRUN -> [SKIP][200] ([i915#3555] / [i915#8228])
   [200]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg2-1/igt@kms_hdr@bpc-switch-dpms.html

  * igt@kms_hdr@invalid-metadata-sizes:
    - shard-tglu-1:       NOTRUN -> [SKIP][201] ([i915#3555] / [i915#8228]) +1 other test skip
   [201]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-tglu-1/igt@kms_hdr@invalid-metadata-sizes.html

  * igt@kms_joiner@basic-ultra-joiner:
    - shard-tglu:         NOTRUN -> [SKIP][202] ([i915#12339])
   [202]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-tglu-7/igt@kms_joiner@basic-ultra-joiner.html

  * igt@kms_joiner@invalid-modeset-force-big-joiner:
    - shard-tglu-1:       NOTRUN -> [SKIP][203] ([i915#12388])
   [203]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-tglu-1/igt@kms_joiner@invalid-modeset-force-big-joiner.html

  * igt@kms_multipipe_modeset@basic-max-pipe-crc-check:
    - shard-dg2:          NOTRUN -> [SKIP][204] ([i915#4816])
   [204]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg2-10/igt@kms_multipipe_modeset@basic-max-pipe-crc-check.html

  * igt@kms_plane_scaling@intel-max-src-size@pipe-a-hdmi-a-1:
    - shard-tglu:         NOTRUN -> [FAIL][205] ([i915#8292]) +1 other test fail
   [205]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-tglu-7/igt@kms_plane_scaling@intel-max-src-size@pipe-a-hdmi-a-1.html

  * igt@kms_plane_scaling@plane-downscale-factor-0-25-with-rotation@pipe-c:
    - shard-tglu:         NOTRUN -> [SKIP][206] ([i915#12247]) +13 other tests skip
   [206]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-tglu-7/igt@kms_plane_scaling@plane-downscale-factor-0-25-with-rotation@pipe-c.html

  * igt@kms_plane_scaling@plane-upscale-factor-0-25-with-rotation@pipe-d:
    - shard-tglu-1:       NOTRUN -> [SKIP][207] ([i915#12247]) +9 other tests skip
   [207]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-tglu-1/igt@kms_plane_scaling@plane-upscale-factor-0-25-with-rotation@pipe-d.html

  * igt@kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-25:
    - shard-tglu:         NOTRUN -> [SKIP][208] ([i915#12247] / [i915#6953])
   [208]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-tglu-7/igt@kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-25.html

  * igt@kms_pm_backlight@bad-brightness:
    - shard-tglu-1:       NOTRUN -> [SKIP][209] ([i915#9812])
   [209]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-tglu-1/igt@kms_pm_backlight@bad-brightness.html

  * igt@kms_pm_dc@dc5-psr:
    - shard-dg2:          NOTRUN -> [SKIP][210] ([i915#9685]) +1 other test skip
   [210]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg2-10/igt@kms_pm_dc@dc5-psr.html

  * igt@kms_pm_dc@dc6-dpms:
    - shard-tglu:         [PASS][211] -> [FAIL][212] ([i915#9295])
   [211]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-tglu-2/igt@kms_pm_dc@dc6-dpms.html
   [212]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-tglu-7/igt@kms_pm_dc@dc6-dpms.html

  * igt@kms_pm_dc@dc9-dpms:
    - shard-tglu:         NOTRUN -> [SKIP][213] ([i915#4281])
   [213]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-tglu-7/igt@kms_pm_dc@dc9-dpms.html

  * igt@kms_pm_rpm@dpms-mode-unset-lpsp:
    - shard-dg2:          [PASS][214] -> [SKIP][215] ([i915#9519])
   [214]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-dg2-8/igt@kms_pm_rpm@dpms-mode-unset-lpsp.html
   [215]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg2-5/igt@kms_pm_rpm@dpms-mode-unset-lpsp.html

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

  * igt@kms_pm_rpm@modeset-non-lpsp-stress:
    - shard-rkl:          [PASS][217] -> [SKIP][218] ([i915#9519]) +1 other test skip
   [217]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-rkl-3/igt@kms_pm_rpm@modeset-non-lpsp-stress.html
   [218]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-rkl-2/igt@kms_pm_rpm@modeset-non-lpsp-stress.html

  * igt@kms_pm_rpm@system-suspend-modeset:
    - shard-dg1:          [PASS][219] -> [DMESG-WARN][220] ([i915#4423])
   [219]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-dg1-17/igt@kms_pm_rpm@system-suspend-modeset.html
   [220]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg1-12/igt@kms_pm_rpm@system-suspend-modeset.html

  * igt@kms_psr2_sf@fbc-pr-cursor-plane-move-continuous-exceed-sf:
    - shard-snb:          NOTRUN -> [SKIP][221] ([i915#11520]) +1 other test skip
   [221]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-snb7/igt@kms_psr2_sf@fbc-pr-cursor-plane-move-continuous-exceed-sf.html

  * igt@kms_psr2_sf@fbc-pr-overlay-plane-move-continuous-exceed-fully-sf:
    - shard-tglu:         NOTRUN -> [SKIP][222] ([i915#11520]) +3 other tests skip
   [222]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-tglu-7/igt@kms_psr2_sf@fbc-pr-overlay-plane-move-continuous-exceed-fully-sf.html

  * igt@kms_psr2_sf@fbc-pr-plane-move-sf-dmg-area:
    - shard-dg1:          NOTRUN -> [SKIP][223] ([i915#11520])
   [223]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg1-13/igt@kms_psr2_sf@fbc-pr-plane-move-sf-dmg-area.html

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

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

  * igt@kms_psr2_su@frontbuffer-xrgb8888:
    - shard-tglu:         NOTRUN -> [SKIP][226] ([i915#9683])
   [226]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-tglu-7/igt@kms_psr2_su@frontbuffer-xrgb8888.html

  * igt@kms_psr2_su@page_flip-nv12:
    - shard-mtlp:         NOTRUN -> [SKIP][227] ([i915#4348])
   [227]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-mtlp-1/igt@kms_psr2_su@page_flip-nv12.html

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

  * igt@kms_psr@fbc-psr-cursor-mmap-cpu@edp-1:
    - shard-mtlp:         NOTRUN -> [SKIP][229] ([i915#9688]) +1 other test skip
   [229]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-mtlp-6/igt@kms_psr@fbc-psr-cursor-mmap-cpu@edp-1.html

  * igt@kms_psr@fbc-psr2-cursor-mmap-cpu:
    - shard-dg1:          NOTRUN -> [SKIP][230] ([i915#1072] / [i915#9732]) +3 other tests skip
   [230]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg1-14/igt@kms_psr@fbc-psr2-cursor-mmap-cpu.html

  * igt@kms_psr@pr-sprite-plane-onoff:
    - shard-tglu:         NOTRUN -> [SKIP][231] ([i915#9732]) +9 other tests skip
   [231]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-tglu-7/igt@kms_psr@pr-sprite-plane-onoff.html

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

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

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

  * igt@kms_rotation_crc@primary-x-tiled-reflect-x-180:
    - shard-dg1:          [PASS][235] -> [FAIL][236] ([i915#11859])
   [235]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-dg1-19/igt@kms_rotation_crc@primary-x-tiled-reflect-x-180.html
   [236]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg1-14/igt@kms_rotation_crc@primary-x-tiled-reflect-x-180.html

  * igt@kms_rotation_crc@primary-y-tiled-reflect-x-180:
    - shard-dg2:          NOTRUN -> [SKIP][237] ([i915#5190])
   [237]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg2-10/igt@kms_rotation_crc@primary-y-tiled-reflect-x-180.html

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

  * igt@kms_scaling_modes@scaling-mode-center:
    - shard-tglu-1:       NOTRUN -> [SKIP][239] ([i915#3555]) +3 other tests skip
   [239]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-tglu-1/igt@kms_scaling_modes@scaling-mode-center.html

  * igt@kms_vrr@negative-basic:
    - shard-dg2:          NOTRUN -> [SKIP][240] ([i915#3555] / [i915#9906])
   [240]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg2-1/igt@kms_vrr@negative-basic.html

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

  * igt@prime_vgem@fence-read-hang:
    - shard-dg2:          NOTRUN -> [SKIP][242] ([i915#3708])
   [242]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg2-1/igt@prime_vgem@fence-read-hang.html

  * igt@sriov_basic@enable-vfs-autoprobe-on:
    - shard-tglu:         NOTRUN -> [SKIP][243] ([i915#9917]) +1 other test skip
   [243]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-tglu-7/igt@sriov_basic@enable-vfs-autoprobe-on.html

  
#### Possible fixes ####

  * igt@gem_ctx_engines@invalid-engines:
    - shard-glk:          ([FAIL][244], [FAIL][245]) ([i915#12031]) -> [PASS][246]
   [244]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-glk9/igt@gem_ctx_engines@invalid-engines.html
   [245]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-glk2/igt@gem_ctx_engines@invalid-engines.html
   [246]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-glk7/igt@gem_ctx_engines@invalid-engines.html

  * igt@gem_eio@kms:
    - shard-dg2:          [FAIL][247] ([i915#5784]) -> [PASS][248]
   [247]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-dg2-1/igt@gem_eio@kms.html
   [248]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg2-4/igt@gem_eio@kms.html

  * igt@gem_exec_fair@basic-pace-share@rcs0:
    - shard-tglu:         [FAIL][249] ([i915#2842]) -> [PASS][250] +1 other test pass
   [249]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-tglu-3/igt@gem_exec_fair@basic-pace-share@rcs0.html
   [250]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-tglu-4/igt@gem_exec_fair@basic-pace-share@rcs0.html

  * igt@gem_exec_fair@basic-throttle:
    - shard-rkl:          [FAIL][251] ([i915#2842]) -> [PASS][252] +2 other tests pass
   [251]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-rkl-7/igt@gem_exec_fair@basic-throttle.html
   [252]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-rkl-4/igt@gem_exec_fair@basic-throttle.html

  * igt@gen9_exec_parse@allowed-single:
    - shard-glk:          ([ABORT][253], [PASS][254]) ([i915#5566]) -> [PASS][255]
   [253]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-glk8/igt@gen9_exec_parse@allowed-single.html
   [254]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-glk4/igt@gen9_exec_parse@allowed-single.html
   [255]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-glk2/igt@gen9_exec_parse@allowed-single.html

  * igt@i915_module_load@reload-with-fault-injection:
    - shard-snb:          [ABORT][256] ([i915#9820]) -> [PASS][257]
   [256]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-snb2/igt@i915_module_load@reload-with-fault-injection.html
   [257]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-snb7/igt@i915_module_load@reload-with-fault-injection.html

  * igt@i915_pm_rpm@system-suspend-execbuf:
    - shard-dg1:          [DMESG-WARN][258] ([i915#4423]) -> [PASS][259] +1 other test pass
   [258]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-dg1-13/igt@i915_pm_rpm@system-suspend-execbuf.html
   [259]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg1-18/igt@i915_pm_rpm@system-suspend-execbuf.html

  * igt@i915_power@sanity:
    - shard-mtlp:         [SKIP][260] ([i915#7984]) -> [PASS][261]
   [260]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-mtlp-6/igt@i915_power@sanity.html
   [261]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-mtlp-5/igt@i915_power@sanity.html

  * igt@kms_atomic_transition@modeset-transition-nonblocking:
    - shard-glk:          ([PASS][262], [FAIL][263]) ([i915#12177]) -> [PASS][264]
   [262]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-glk9/igt@kms_atomic_transition@modeset-transition-nonblocking.html
   [263]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-glk8/igt@kms_atomic_transition@modeset-transition-nonblocking.html
   [264]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-glk2/igt@kms_atomic_transition@modeset-transition-nonblocking.html

  * igt@kms_atomic_transition@modeset-transition-nonblocking@2x-outputs:
    - shard-glk:          ([PASS][265], [FAIL][266]) ([i915#11859]) -> [PASS][267]
   [265]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-glk9/igt@kms_atomic_transition@modeset-transition-nonblocking@2x-outputs.html
   [266]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-glk8/igt@kms_atomic_transition@modeset-transition-nonblocking@2x-outputs.html
   [267]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-glk2/igt@kms_atomic_transition@modeset-transition-nonblocking@2x-outputs.html

  * igt@kms_flip@blocking-wf_vblank@b-hdmi-a1:
    - shard-tglu:         [FAIL][268] ([i915#2122]) -> [PASS][269] +5 other tests pass
   [268]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-tglu-3/igt@kms_flip@blocking-wf_vblank@b-hdmi-a1.html
   [269]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-tglu-4/igt@kms_flip@blocking-wf_vblank@b-hdmi-a1.html

  * igt@kms_flip@flip-vs-blocking-wf-vblank:
    - shard-dg2:          [FAIL][270] ([i915#2122]) -> [PASS][271]
   [270]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-dg2-4/igt@kms_flip@flip-vs-blocking-wf-vblank.html
   [271]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg2-2/igt@kms_flip@flip-vs-blocking-wf-vblank.html

  * igt@kms_flip@flip-vs-blocking-wf-vblank@c-hdmi-a1:
    - shard-glk:          ([PASS][272], [FAIL][273]) ([i915#2122]) -> [PASS][274] +4 other tests pass
   [272]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-glk1/igt@kms_flip@flip-vs-blocking-wf-vblank@c-hdmi-a1.html
   [273]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-glk9/igt@kms_flip@flip-vs-blocking-wf-vblank@c-hdmi-a1.html
   [274]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-glk7/igt@kms_flip@flip-vs-blocking-wf-vblank@c-hdmi-a1.html

  * igt@kms_flip@flip-vs-expired-vblank-interruptible@a-hdmi-a2:
    - shard-glk:          ([FAIL][275], [PASS][276]) ([i915#79]) -> [PASS][277] +1 other test pass
   [275]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-glk4/igt@kms_flip@flip-vs-expired-vblank-interruptible@a-hdmi-a2.html
   [276]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-glk2/igt@kms_flip@flip-vs-expired-vblank-interruptible@a-hdmi-a2.html
   [277]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-glk4/igt@kms_flip@flip-vs-expired-vblank-interruptible@a-hdmi-a2.html

  * igt@kms_flip@flip-vs-suspend@a-hdmi-a2:
    - shard-glk:          ([INCOMPLETE][278], [PASS][279]) ([i915#4839]) -> [PASS][280]
   [278]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-glk5/igt@kms_flip@flip-vs-suspend@a-hdmi-a2.html
   [279]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-glk1/igt@kms_flip@flip-vs-suspend@a-hdmi-a2.html
   [280]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-glk7/igt@kms_flip@flip-vs-suspend@a-hdmi-a2.html

  * igt@kms_flip@flip-vs-suspend@b-edp1:
    - shard-mtlp:         [INCOMPLETE][281] ([i915#6113]) -> [PASS][282] +1 other test pass
   [281]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-mtlp-6/igt@kms_flip@flip-vs-suspend@b-edp1.html
   [282]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-mtlp-3/igt@kms_flip@flip-vs-suspend@b-edp1.html

  * igt@kms_flip@flip-vs-suspend@b-hdmi-a1:
    - shard-snb:          [INCOMPLETE][283] ([i915#4839]) -> [PASS][284] +1 other test pass
   [283]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-snb1/igt@kms_flip@flip-vs-suspend@b-hdmi-a1.html
   [284]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-snb2/igt@kms_flip@flip-vs-suspend@b-hdmi-a1.html

  * igt@kms_frontbuffer_tracking@fbc-2p-primscrn-pri-shrfb-draw-mmap-wc:
    - shard-snb:          [SKIP][285] -> [PASS][286]
   [285]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-snb7/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-pri-shrfb-draw-mmap-wc.html
   [286]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-snb7/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-pri-shrfb-draw-mmap-wc.html

  * igt@kms_pm_rpm@dpms-lpsp:
    - shard-rkl:          [SKIP][287] ([i915#9519]) -> [PASS][288]
   [287]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-rkl-3/igt@kms_pm_rpm@dpms-lpsp.html
   [288]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-rkl-2/igt@kms_pm_rpm@dpms-lpsp.html

  * igt@kms_pm_rpm@modeset-non-lpsp:
    - shard-dg2:          [SKIP][289] ([i915#9519]) -> [PASS][290] +1 other test pass
   [289]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-dg2-8/igt@kms_pm_rpm@modeset-non-lpsp.html
   [290]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg2-5/igt@kms_pm_rpm@modeset-non-lpsp.html

  
#### Warnings ####

  * igt@kms_big_fb@4-tiled-32bpp-rotate-270:
    - shard-dg1:          [SKIP][291] ([i915#4423] / [i915#4538] / [i915#5286]) -> [SKIP][292] ([i915#4538] / [i915#5286])
   [291]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-dg1-13/igt@kms_big_fb@4-tiled-32bpp-rotate-270.html
   [292]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg1-18/igt@kms_big_fb@4-tiled-32bpp-rotate-270.html

  * igt@kms_big_fb@yf-tiled-addfb-size-offset-overflow:
    - shard-dg1:          [SKIP][293] ([i915#4423]) -> [SKIP][294] +1 other test skip
   [293]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-dg1-13/igt@kms_big_fb@yf-tiled-addfb-size-offset-overflow.html
   [294]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg1-18/igt@kms_big_fb@yf-tiled-addfb-size-offset-overflow.html

  * igt@kms_content_protection@lic-type-0:
    - shard-dg2:          [TIMEOUT][295] ([i915#7173]) -> [SKIP][296] ([i915#9424])
   [295]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-dg2-10/igt@kms_content_protection@lic-type-0.html
   [296]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg2-7/igt@kms_content_protection@lic-type-0.html

  * igt@kms_content_protection@mei-interface:
    - shard-dg1:          [SKIP][297] ([i915#9433]) -> [SKIP][298] ([i915#9424])
   [297]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-dg1-12/igt@kms_content_protection@mei-interface.html
   [298]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg1-19/igt@kms_content_protection@mei-interface.html

  * igt@kms_flip@flip-vs-blocking-wf-vblank@b-hdmi-a1:
    - shard-glk:          ([FAIL][299], [PASS][300]) ([i915#2122]) -> [FAIL][301] ([i915#2122]) +3 other tests fail
   [299]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-glk9/igt@kms_flip@flip-vs-blocking-wf-vblank@b-hdmi-a1.html
   [300]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-glk1/igt@kms_flip@flip-vs-blocking-wf-vblank@b-hdmi-a1.html
   [301]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-glk7/igt@kms_flip@flip-vs-blocking-wf-vblank@b-hdmi-a1.html

  * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-cur-indfb-move:
    - shard-dg2:          [SKIP][302] ([i915#3458]) -> [SKIP][303] ([i915#10433] / [i915#3458])
   [302]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-dg2-1/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-cur-indfb-move.html
   [303]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg2-4/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-cur-indfb-move.html

  * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-render:
    - shard-dg1:          [SKIP][304] ([i915#3458] / [i915#4423]) -> [SKIP][305] ([i915#3458])
   [304]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-dg1-14/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-render.html
   [305]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg1-16/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-render.html

  * igt@kms_frontbuffer_tracking@psr-1p-primscrn-shrfb-plflip-blt:
    - shard-dg2:          [SKIP][306] ([i915#10433] / [i915#3458]) -> [SKIP][307] ([i915#3458]) +3 other tests skip
   [306]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-dg2-4/igt@kms_frontbuffer_tracking@psr-1p-primscrn-shrfb-plflip-blt.html
   [307]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg2-8/igt@kms_frontbuffer_tracking@psr-1p-primscrn-shrfb-plflip-blt.html

  * igt@kms_hdr@brightness-with-hdr:
    - shard-mtlp:         [SKIP][308] ([i915#12713]) -> [SKIP][309] ([i915#1187] / [i915#12713])
   [308]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-mtlp-8/igt@kms_hdr@brightness-with-hdr.html
   [309]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-mtlp-1/igt@kms_hdr@brightness-with-hdr.html

  * igt@kms_multipipe_modeset@basic-max-pipe-crc-check:
    - shard-rkl:          [SKIP][310] ([i915#4816]) -> [SKIP][311] ([i915#4070] / [i915#4816])
   [310]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-rkl-4/igt@kms_multipipe_modeset@basic-max-pipe-crc-check.html
   [311]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-rkl-2/igt@kms_multipipe_modeset@basic-max-pipe-crc-check.html

  * igt@kms_plane_scaling@intel-max-src-size:
    - shard-dg2:          [FAIL][312] ([i915#8292]) -> [SKIP][313] ([i915#6953] / [i915#9423])
   [312]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-dg2-10/igt@kms_plane_scaling@intel-max-src-size.html
   [313]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg2-11/igt@kms_plane_scaling@intel-max-src-size.html

  * igt@kms_pm_rpm@pm-tiling:
    - shard-dg1:          [SKIP][314] ([i915#4077] / [i915#4423]) -> [SKIP][315] ([i915#4077])
   [314]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-dg1-18/igt@kms_pm_rpm@pm-tiling.html
   [315]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg1-13/igt@kms_pm_rpm@pm-tiling.html

  * igt@kms_psr@fbc-psr-primary-page-flip:
    - shard-dg1:          [SKIP][316] ([i915#1072] / [i915#4423] / [i915#9732]) -> [SKIP][317] ([i915#1072] / [i915#9732])
   [316]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-dg1-13/igt@kms_psr@fbc-psr-primary-page-flip.html
   [317]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg1-18/igt@kms_psr@fbc-psr-primary-page-flip.html

  * igt@kms_tiled_display@basic-test-pattern:
    - shard-glk:          ([FAIL][318], [SKIP][319]) ([i915#10959]) -> [FAIL][320] ([i915#10959])
   [318]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-glk9/igt@kms_tiled_display@basic-test-pattern.html
   [319]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-glk8/igt@kms_tiled_display@basic-test-pattern.html
   [320]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-glk2/igt@kms_tiled_display@basic-test-pattern.html

  * igt@perf@non-zero-reason@0-rcs0:
    - shard-dg2:          [FAIL][321] ([i915#9100]) -> [FAIL][322] ([i915#7484]) +1 other test fail
   [321]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15649/shard-dg2-2/igt@perf@non-zero-reason@0-rcs0.html
   [322]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_141046v2/shard-dg2-1/igt@perf@non-zero-reason@0-rcs0.html

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

  [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#1072]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1072
  [i915#10959]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10959
  [i915#11078]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11078
  [i915#11453]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11453
  [i915#11520]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11520
  [i915#11681]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11681
  [i915#11808]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11808
  [i915#11859]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11859
  [i915#1187]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1187
  [i915#11965]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11965
  [i915#11989]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11989
  [i915#12031]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12031
  [i915#12177]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12177
  [i915#12247]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12247
  [i915#12313]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12313
  [i915#12339]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12339
  [i915#12388]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12388
  [i915#12431]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12431
  [i915#12455]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12455
  [i915#12517]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12517
  [i915#12558]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12558
  [i915#12564]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12564
  [i915#12674]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12674
  [i915#12701]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12701
  [i915#12713]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12713
  [i915#1825]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1825
  [i915#2122]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2122
  [i915#2527]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2527
  [i915#2587]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2587
  [i915#2672]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2672
  [i915#280]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/280
  [i915#2842]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2842
  [i915#2846]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2846
  [i915#2856]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2856
  [i915#3116]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3116
  [i915#3281]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3281
  [i915#3282]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3282
  [i915#3291]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3291
  [i915#3297]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3297
  [i915#3299]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3299
  [i915#3323]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3323
  [i915#3359]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3359
  [i915#3458]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3458
  [i915#3469]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3469
  [i915#3539]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3539
  [i915#3555]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3555
  [i915#3637]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3637
  [i915#3638]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3638
  [i915#3708]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3708
  [i915#3840]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3840
  [i915#4070]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4070
  [i915#4077]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4077
  [i915#4079]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4079
  [i915#4083]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4083
  [i915#4087]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4087
  [i915#4103]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4103
  [i915#4213]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4213
  [i915#4270]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4270
  [i915#4281]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4281
  [i915#4348]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4348
  [i915#4423]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4423
  [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#4816]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4816
  [i915#4818]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4818
  [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#4860]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4860
  [i915#4880]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4880
  [i915#4881]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4881
  [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#5566]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5566
  [i915#5784]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5784
  [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#658]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/658
  [i915#6621]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6621
  [i915#6953]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6953
  [i915#7116]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7116
  [i915#7173]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7173
  [i915#7213]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7213
  [i915#7484]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7484
  [i915#7697]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7697
  [i915#7828]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7828
  [i915#79]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/79
  [i915#7975]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7975
  [i915#7984]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7984
  [i915#8213]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8213
  [i915#8228]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8228
  [i915#8289]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8289
  [i915#8292]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8292
  [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#8437]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8437
  [i915#8555]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8555
  [i915#8562]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8562
  [i915#8588]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8588
  [i915#8623]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8623
  [i915#8708]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8708
  [i915#8709]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8709
  [i915#9100]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9100
  [i915#9295]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9295
  [i915#9311]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9311
  [i915#9423]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9423
  [i915#9424]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9424
  [i915#9433]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9433
  [i915#9519]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9519
  [i915#9683]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9683
  [i915#9685]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9685
  [i915#9688]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9688
  [i915#9732]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9732
  [i915#9781]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9781
  [i915#9812]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9812
  [i915#9820]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9820
  [i915#9906]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9906
  [i915#9917]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9917
  [i915#9934]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9934


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

  * Linux: CI_DRM_15649 -> Patchwork_141046v2

  CI-20190529: 20190529
  CI_DRM_15649: 6f358787ded211657532e2ee4df2e446b03d860f @ git://anongit.freedesktop.org/gfx-ci/linux
  IGT_8100: 84e42580f918da926481fd2fb37be01451d6ee9a @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  Patchwork_141046v2: 6f358787ded211657532e2ee4df2e446b03d860f @ 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_141046v2/index.html

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

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

* Re: [PATCH] drm/xe/display: Add intel_plane_initial_vblank_wait
  2024-11-07 12:21     ` Ville Syrjälä
@ 2024-11-07 17:45       ` Maarten Lankhorst
  0 siblings, 0 replies; 28+ messages in thread
From: Maarten Lankhorst @ 2024-11-07 17:45 UTC (permalink / raw)
  To: Ville Syrjälä; +Cc: intel-xe, intel-gfx, Maarten, Lankhorst, dev

Hey,

Den 2024-11-07 kl. 13:21, skrev Ville Syrjälä:
> On Thu, Nov 07, 2024 at 12:36:17PM +0100, Maarten Lankhorst wrote:
>> We're changing the driver to have no interrupts during early init for
>> Xe, so we poll the PIPE_FRMSTMSMP counter instead.
>>
>> Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
>> Link: https://patchwork.freedesktop.org/patch/msgid/20241105121857.17389-2-maarten.lankhorst@linux.intel.com
>> Signed-off-by: Maarten Lankhorst,,, <dev@lankhorst.se>
>> ---
>>  drivers/gpu/drm/i915/display/intel_display.c  |  6 +++---
>>  .../drm/i915/display/intel_plane_initial.c    |  9 ++++++++-
>>  .../drm/i915/display/intel_plane_initial.h    |  2 ++
>>  drivers/gpu/drm/xe/display/xe_plane_initial.c | 19 ++++++++++++++++++-
>>  4 files changed, 31 insertions(+), 5 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
>> index d7f92dc56d1e9..7bd6da2bb36f7 100644
>> --- a/drivers/gpu/drm/i915/display/intel_display.c
>> +++ b/drivers/gpu/drm/i915/display/intel_display.c
>> @@ -795,7 +795,7 @@ void intel_plane_disable_noatomic(struct intel_crtc *crtc,
>>  	if ((crtc_state->active_planes & ~BIT(PLANE_CURSOR)) == 0 &&
>>  	    hsw_ips_disable(crtc_state)) {
>>  		crtc_state->ips_enabled = false;
>> -		intel_crtc_wait_for_next_vblank(crtc);
>> +		intel_plane_initial_vblank_wait(plane);
>>  	}
>>  
>>  	/*
>> @@ -809,7 +809,7 @@ void intel_plane_disable_noatomic(struct intel_crtc *crtc,
>>  	 */
>>  	if (HAS_GMCH(dev_priv) &&
>>  	    intel_set_memory_cxsr(dev_priv, false))
>> -		intel_crtc_wait_for_next_vblank(crtc);
>> +		intel_plane_initial_vblank_wait(plane);
>>  
>>  	/*
>>  	 * Gen2 reports pipe underruns whenever all planes are disabled.
>> @@ -819,7 +819,7 @@ void intel_plane_disable_noatomic(struct intel_crtc *crtc,
>>  		intel_set_cpu_fifo_underrun_reporting(dev_priv, crtc->pipe, false);
>>  
>>  	intel_plane_disable_arm(NULL, plane, crtc_state);
>> -	intel_crtc_wait_for_next_vblank(crtc);
>> +	intel_plane_initial_vblank_wait(plane);
>>  }
>>  
>>  unsigned int
>> diff --git a/drivers/gpu/drm/i915/display/intel_plane_initial.c b/drivers/gpu/drm/i915/display/intel_plane_initial.c
>> index 62401f6a04e4f..77eb2b763be5e 100644
>> --- a/drivers/gpu/drm/i915/display/intel_plane_initial.c
>> +++ b/drivers/gpu/drm/i915/display/intel_plane_initial.c
>> @@ -14,6 +14,13 @@
>>  #include "intel_frontbuffer.h"
>>  #include "intel_plane_initial.h"
>>  
>> +void intel_plane_initial_vblank_wait(struct intel_plane *plane)
>> +{
>> +	struct intel_crtc *crtc = intel_crtc_for_pipe(to_intel_display(plane->base.dev), plane->pipe);
>> +
>> +	intel_crtc_wait_for_next_vblank(crtc);
>> +}
>> +
>>  static bool
>>  intel_reuse_initial_plane_obj(struct intel_crtc *this,
>>  			      const struct intel_initial_plane_config plane_configs[],
>> @@ -438,7 +445,7 @@ void intel_initial_plane_config(struct drm_i915_private *i915)
>>  		intel_find_initial_plane_obj(crtc, plane_configs);
>>  
>>  		if (i915->display.funcs.display->fixup_initial_plane_config(crtc, plane_config))
>> -			intel_crtc_wait_for_next_vblank(crtc);
>> +			intel_plane_initial_vblank_wait(to_intel_plane(crtc->base.primary));
>>  
>>  		plane_config_fini(plane_config);
>>  	}
>> diff --git a/drivers/gpu/drm/i915/display/intel_plane_initial.h b/drivers/gpu/drm/i915/display/intel_plane_initial.h
>> index 64ab95239cd45..149b1bf1bc1f8 100644
>> --- a/drivers/gpu/drm/i915/display/intel_plane_initial.h
>> +++ b/drivers/gpu/drm/i915/display/intel_plane_initial.h
>> @@ -7,7 +7,9 @@
>>  #define __INTEL_PLANE_INITIAL_H__
>>  
>>  struct drm_i915_private;
>> +struct intel_plane;
>>  
>> +void intel_plane_initial_vblank_wait(struct intel_plane *plane);
>>  void intel_initial_plane_config(struct drm_i915_private *i915);
>>  
>>  #endif
>> diff --git a/drivers/gpu/drm/xe/display/xe_plane_initial.c b/drivers/gpu/drm/xe/display/xe_plane_initial.c
>> index 668f544a7ac80..9252cfeef0a1f 100644
>> --- a/drivers/gpu/drm/xe/display/xe_plane_initial.c
>> +++ b/drivers/gpu/drm/xe/display/xe_plane_initial.c
>> @@ -8,7 +8,9 @@
>>  
>>  #include "regs/xe_gtt_defs.h"
>>  #include "xe_ggtt.h"
>> +#include "xe_mmio.h"
>>  
>> +#include "i915_reg.h"
>>  #include "intel_atomic_plane.h"
>>  #include "intel_crtc.h"
>>  #include "intel_display.h"
>> @@ -22,6 +24,21 @@
>>  
>>  #include <generated/xe_wa_oob.h>
>>  
>> +void intel_plane_initial_vblank_wait(struct intel_plane *plane)
>> +{
>> +	/* Early xe has no irq */
>> +	struct xe_device *xe = to_xe_device(plane->base.dev);
>> +	struct xe_reg pipe_frmtmstmp = XE_REG(i915_mmio_reg_offset(PIPE_FRMTMSTMP(plane->pipe)));
>> +	u32 timestamp;
>> +	int ret;
>> +
>> +	timestamp = xe_mmio_read32(xe_root_tile_mmio(xe), pipe_frmtmstmp);
>> +
>> +	ret = xe_mmio_wait32_not(xe_root_tile_mmio(xe), pipe_frmtmstmp, ~0U, timestamp, 40000U, &timestamp, false);
>> +	if (ret < 0)
>> +		drm_warn(&xe->drm, "waiting for early vblank failed with %i\n", ret);
> 
> Why did you change to this from the earlier SURFLIVE approach?This works correctly when calling disable_plane too. When I tested on lunarlake, this gave me an issue.
When failing to construct initial fb, intel_plane_disable_noatomic() is called,
and then calls drm_crtc_wait_one_vblank if not fixed like above.

SURFLIVE works great for the specific case of flipping, not that great for disabling. :)

Cheers,
~Maarten 

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

* Re: [PATCH 3/9] drm/xe: Move suballocator init to after display init
  2024-11-07 10:01 ` [PATCH 3/9] drm/xe: Move suballocator init to after display init Maarten Lankhorst
@ 2024-11-12 18:18   ` Rodrigo Vivi
  0 siblings, 0 replies; 28+ messages in thread
From: Rodrigo Vivi @ 2024-11-12 18:18 UTC (permalink / raw)
  To: Maarten Lankhorst; +Cc: intel-xe, intel-gfx, Maarten, Lankhorst, dev

On Thu, Nov 07, 2024 at 11:01:34AM +0100, Maarten Lankhorst wrote:
> No allocations should be done before we have had a chance to preserve
> the display fb.
> 
> Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> Link: https://patchwork.freedesktop.org/patch/msgid/20241105121857.17389-3-maarten.lankhorst@linux.intel.com
> Signed-off-by: Maarten Lankhorst,,, <dev@lankhorst.se>

extra commas in  your signature?!

so, the patch looks correct to me. As Lucas had pointed out already the
xe_tile_init_noalloc shouldn't do any alloc as the name and its doc says.

But please add the Fixes tag and the new function documentation as Lucas
had already requested:
https://lore.kernel.org/intel-xe/66lrio7qieuvevgzkdsmgjt46swaxzxgvdnnch6w472uzjdsu4@xvn7pvrfpiih/

with that, feel free to use

Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>

> ---
>  drivers/gpu/drm/xe/xe_device.c |  6 ++++++
>  drivers/gpu/drm/xe/xe_tile.c   | 12 ++++++++----
>  drivers/gpu/drm/xe/xe_tile.h   |  1 +
>  3 files changed, 15 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/xe_device.c
> index a0d29d5cb7b70..cef782f244e1a 100644
> --- a/drivers/gpu/drm/xe/xe_device.c
> +++ b/drivers/gpu/drm/xe/xe_device.c
> @@ -730,6 +730,12 @@ int xe_device_probe(struct xe_device *xe)
>  	if (err)
>  		goto err;
>  
> +	for_each_tile(tile, xe, id) {
> +		err = xe_tile_init(tile);
> +		if (err)
> +			goto err;
> +	}
> +
>  	for_each_gt(gt, xe, id) {
>  		last_gt = id;
>  
> diff --git a/drivers/gpu/drm/xe/xe_tile.c b/drivers/gpu/drm/xe/xe_tile.c
> index 07cf7cfe4abd5..2825553b568f7 100644
> --- a/drivers/gpu/drm/xe/xe_tile.c
> +++ b/drivers/gpu/drm/xe/xe_tile.c
> @@ -170,10 +170,6 @@ int xe_tile_init_noalloc(struct xe_tile *tile)
>  	if (err)
>  		return err;
>  
> -	tile->mem.kernel_bb_pool = xe_sa_bo_manager_init(tile, SZ_1M, 16);
> -	if (IS_ERR(tile->mem.kernel_bb_pool))
> -		return PTR_ERR(tile->mem.kernel_bb_pool);
> -
>  	xe_wa_apply_tile_workarounds(tile);
>  
>  	err = xe_tile_sysfs_init(tile);
> @@ -181,6 +177,14 @@ int xe_tile_init_noalloc(struct xe_tile *tile)
>  	return 0;
>  }
>  
> +int xe_tile_init(struct xe_tile *tile)
> +{
> +	tile->mem.kernel_bb_pool = xe_sa_bo_manager_init(tile, SZ_1M, 16);
> +	if (IS_ERR(tile->mem.kernel_bb_pool))
> +		return PTR_ERR(tile->mem.kernel_bb_pool);
> +
> +	return 0;
> +}
>  void xe_tile_migrate_wait(struct xe_tile *tile)
>  {
>  	xe_migrate_wait(tile->migrate);
> diff --git a/drivers/gpu/drm/xe/xe_tile.h b/drivers/gpu/drm/xe/xe_tile.h
> index 1c9e42ade6b05..eb939316d55b0 100644
> --- a/drivers/gpu/drm/xe/xe_tile.h
> +++ b/drivers/gpu/drm/xe/xe_tile.h
> @@ -12,6 +12,7 @@ struct xe_tile;
>  
>  int xe_tile_init_early(struct xe_tile *tile, struct xe_device *xe, u8 id);
>  int xe_tile_init_noalloc(struct xe_tile *tile);
> +int xe_tile_init(struct xe_tile *tile);
>  
>  void xe_tile_migrate_wait(struct xe_tile *tile);
>  
> -- 
> 2.45.2
> 

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

* Re: [PATCH 4/9] drm/xe: Defer irq init until after xe_display_init_noaccel
  2024-11-07 10:01 ` [PATCH 4/9] drm/xe: Defer irq init until after xe_display_init_noaccel Maarten Lankhorst
@ 2024-11-12 18:21   ` Rodrigo Vivi
  0 siblings, 0 replies; 28+ messages in thread
From: Rodrigo Vivi @ 2024-11-12 18:21 UTC (permalink / raw)
  To: Maarten Lankhorst; +Cc: intel-xe, intel-gfx, Maarten, Lankhorst, dev

On Thu, Nov 07, 2024 at 11:01:35AM +0100, Maarten Lankhorst wrote:
> Technically, I believe this means that xe_display_init_noirq and
> xe_display_init_noaccel can be merged together now.

Please use the commit message to explain what you are doing and why
instead of telling what could be done next.

> 
> Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> Link: https://patchwork.freedesktop.org/patch/msgid/20241105121857.17389-4-maarten.lankhorst@linux.intel.com
> Signed-off-by: Maarten Lankhorst,,, <dev@lankhorst.se>

same extra commas in your signature...

> ---
>  drivers/gpu/drm/xe/xe_device.c | 12 ++++--------
>  drivers/gpu/drm/xe/xe_tile.c   |  7 +++++++
>  2 files changed, 11 insertions(+), 8 deletions(-)
> 
> diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/xe_device.c
> index cef782f244e1a..b9948b2dc8d1d 100644
> --- a/drivers/gpu/drm/xe/xe_device.c
> +++ b/drivers/gpu/drm/xe/xe_device.c
> @@ -41,7 +41,6 @@
>  #include "xe_hw_engine_group.h"
>  #include "xe_hwmon.h"
>  #include "xe_irq.h"
> -#include "xe_memirq.h"
>  #include "xe_mmio.h"
>  #include "xe_module.h"
>  #include "xe_observation.h"
> @@ -673,9 +672,6 @@ int xe_device_probe(struct xe_device *xe)
>  		err = xe_ggtt_init_early(tile->mem.ggtt);
>  		if (err)
>  			return err;
> -		err = xe_memirq_init(&tile->memirq);
> -		if (err)
> -			return err;
>  	}
>  
>  	for_each_gt(gt, xe, id) {
> @@ -695,10 +691,6 @@ int xe_device_probe(struct xe_device *xe)
>  	if (err)
>  		return err;
>  
> -	err = xe_irq_install(xe);
> -	if (err)
> -		goto err;
> -
>  	err = probe_has_flat_ccs(xe);
>  	if (err)
>  		goto err;
> @@ -736,6 +728,10 @@ int xe_device_probe(struct xe_device *xe)
>  			goto err;
>  	}
>  
> +	err = xe_irq_install(xe);
> +	if (err)
> +		goto err;
> +
>  	for_each_gt(gt, xe, id) {
>  		last_gt = id;
>  
> diff --git a/drivers/gpu/drm/xe/xe_tile.c b/drivers/gpu/drm/xe/xe_tile.c
> index 2825553b568f7..d07c1fba793ca 100644
> --- a/drivers/gpu/drm/xe/xe_tile.c
> +++ b/drivers/gpu/drm/xe/xe_tile.c
> @@ -10,6 +10,7 @@
>  #include "xe_device.h"
>  #include "xe_ggtt.h"
>  #include "xe_gt.h"
> +#include "xe_memirq.h"
>  #include "xe_migrate.h"
>  #include "xe_pcode.h"
>  #include "xe_sa.h"
> @@ -179,6 +180,12 @@ int xe_tile_init_noalloc(struct xe_tile *tile)
>  
>  int xe_tile_init(struct xe_tile *tile)
>  {
> +	int err;
> +
> +	err = xe_memirq_init(&tile->memirq);
> +	if (err)
> +		return err;
> +
>  	tile->mem.kernel_bb_pool = xe_sa_bo_manager_init(tile, SZ_1M, 16);
>  	if (IS_ERR(tile->mem.kernel_bb_pool))
>  		return PTR_ERR(tile->mem.kernel_bb_pool);
> -- 
> 2.45.2
> 

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

* Re: [PATCH 5/9] drm/xe/display: Use a single early init call for display
  2024-11-07 10:01 ` [PATCH 5/9] drm/xe/display: Use a single early init call for display Maarten Lankhorst
@ 2024-11-12 18:39   ` Rodrigo Vivi
  2024-11-13 10:30     ` Maarten Lankhorst
  0 siblings, 1 reply; 28+ messages in thread
From: Rodrigo Vivi @ 2024-11-12 18:39 UTC (permalink / raw)
  To: Maarten Lankhorst; +Cc: intel-xe, intel-gfx, Maarten, Lankhorst, dev

On Thu, Nov 07, 2024 at 11:01:36AM +0100, Maarten Lankhorst wrote:
> Instead of 3 different calls, it should be safe to unify to a single
> call now. This makes the init sequence cleaner, and display less
> tangled.
> 
> Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> Link: https://patchwork.freedesktop.org/patch/msgid/20241105121857.17389-5-maarten.lankhorst@linux.intel.com
> Signed-off-by: Maarten Lankhorst,,, <dev@lankhorst.se>
> ---
>  drivers/gpu/drm/xe/display/xe_display.c | 72 +++++++------------------
>  drivers/gpu/drm/xe/display/xe_display.h |  8 +--
>  drivers/gpu/drm/xe/xe_device.c          | 10 +---
>  3 files changed, 23 insertions(+), 67 deletions(-)
> 
> diff --git a/drivers/gpu/drm/xe/display/xe_display.c b/drivers/gpu/drm/xe/display/xe_display.c
> index b5502f335f531..a9ce4f561e7aa 100644
> --- a/drivers/gpu/drm/xe/display/xe_display.c
> +++ b/drivers/gpu/drm/xe/display/xe_display.c

we should make every function in this file only a wrap to the i915
side with the 	if (!xe->info.probe_display) being the only thing
extra in here... so we consolidate the display side in a way
that we could later really split the display to a separate driver.

I have the feeling that this patch takes display to the other direction...

> @@ -100,31 +100,7 @@ int xe_display_create(struct xe_device *xe)
>  	return drmm_add_action_or_reset(&xe->drm, display_destroy, NULL);
>  }
>  
> -static void xe_display_fini_nommio(struct drm_device *dev, void *dummy)
> -{
> -	struct xe_device *xe = to_xe_device(dev);
> -
> -	if (!xe->info.probe_display)
> -		return;
> -
> -	intel_power_domains_cleanup(xe);
> -}
> -
> -int xe_display_init_nommio(struct xe_device *xe)
> -{
> -	if (!xe->info.probe_display)
> -		return 0;
> -
> -	/* Fake uncore lock */
> -	spin_lock_init(&xe->uncore.lock);
> -
> -	/* This must be called before any calls to HAS_PCH_* */
> -	intel_detect_pch(xe);
> -
> -	return drmm_add_action_or_reset(&xe->drm, xe_display_fini_nommio, xe);
> -}
> -
> -static void xe_display_fini_noirq(void *arg)
> +static void xe_display_fini_early(void *arg)
>  {
>  	struct xe_device *xe = arg;
>  	struct intel_display *display = &xe->display;
> @@ -132,11 +108,13 @@ static void xe_display_fini_noirq(void *arg)
>  	if (!xe->info.probe_display)
>  		return;
>  
> +	intel_display_driver_remove_nogem(xe);
>  	intel_display_driver_remove_noirq(xe);
>  	intel_opregion_cleanup(display);
> +	intel_power_domains_cleanup(xe);
>  }
>  
> -int xe_display_init_noirq(struct xe_device *xe)
> +int xe_display_init_early(struct xe_device *xe)
>  {
>  	struct intel_display *display = &xe->display;
>  	int err;
> @@ -144,6 +122,12 @@ int xe_display_init_noirq(struct xe_device *xe)
>  	if (!xe->info.probe_display)
>  		return 0;
>  
> +	/* Fake uncore lock */
> +	spin_lock_init(&xe->uncore.lock);
> +
> +	/* This must be called before any calls to HAS_PCH_* */
> +	intel_detect_pch(xe);
> +
>  	intel_display_driver_early_probe(xe);
>  
>  	/* Early display init.. */
> @@ -160,36 +144,20 @@ int xe_display_init_noirq(struct xe_device *xe)
>  	intel_display_device_info_runtime_init(xe);
>  
>  	err = intel_display_driver_probe_noirq(xe);
> -	if (err) {
> -		intel_opregion_cleanup(display);
> -		return err;
> -	}
> -
> -	return devm_add_action_or_reset(xe->drm.dev, xe_display_fini_noirq, xe);
> -}
> -
> -static void xe_display_fini_noaccel(void *arg)
> -{
> -	struct xe_device *xe = arg;
> -
> -	if (!xe->info.probe_display)
> -		return;
> -
> -	intel_display_driver_remove_nogem(xe);
> -}
> -
> -int xe_display_init_noaccel(struct xe_device *xe)
> -{
> -	int err;
> -
> -	if (!xe->info.probe_display)
> -		return 0;
> +	if (err)
> +		goto err_opregion;
>  
>  	err = intel_display_driver_probe_nogem(xe);
>  	if (err)
> -		return err;
> +		goto err_noirq;
>  
> -	return devm_add_action_or_reset(xe->drm.dev, xe_display_fini_noaccel, xe);
> +	return devm_add_action_or_reset(xe->drm.dev, xe_display_fini_early, xe);
> +err_noirq:
> +	intel_display_driver_remove_noirq(xe);
> +	intel_power_domains_cleanup(xe);
> +err_opregion:
> +	intel_opregion_cleanup(display);
> +	return err;
>  }
>  
>  int xe_display_init(struct xe_device *xe)
> diff --git a/drivers/gpu/drm/xe/display/xe_display.h b/drivers/gpu/drm/xe/display/xe_display.h
> index 17afa537aee50..255cffa328160 100644
> --- a/drivers/gpu/drm/xe/display/xe_display.h
> +++ b/drivers/gpu/drm/xe/display/xe_display.h
> @@ -20,9 +20,7 @@ int xe_display_create(struct xe_device *xe);
>  
>  int xe_display_probe(struct xe_device *xe);
>  
> -int xe_display_init_nommio(struct xe_device *xe);
> -int xe_display_init_noirq(struct xe_device *xe);
> -int xe_display_init_noaccel(struct xe_device *xe);
> +int xe_display_init_early(struct xe_device *xe);
>  int xe_display_init(struct xe_device *xe);
>  void xe_display_fini(struct xe_device *xe);
>  
> @@ -53,9 +51,7 @@ static inline int xe_display_create(struct xe_device *xe) { return 0; }
>  
>  static inline int xe_display_probe(struct xe_device *xe) { return 0; }
>  
> -static inline int xe_display_init_nommio(struct xe_device *xe) { return 0; }
> -static inline int xe_display_init_noirq(struct xe_device *xe) { return 0; }
> -static inline int xe_display_init_noaccel(struct xe_device *xe) { return 0; }
> +static inline int xe_display_init_early(struct xe_device *xe) { return 0; }
>  static inline int xe_display_init(struct xe_device *xe) { return 0; }
>  static inline void xe_display_fini(struct xe_device *xe) {}
>  
> diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/xe_device.c
> index b9948b2dc8d1d..f1147ebeeff31 100644
> --- a/drivers/gpu/drm/xe/xe_device.c
> +++ b/drivers/gpu/drm/xe/xe_device.c
> @@ -632,10 +632,6 @@ int xe_device_probe(struct xe_device *xe)
>  		return err;
>  
>  	xe->info.mem_region_mask = 1;
> -	err = xe_display_init_nommio(xe);
> -	if (err)
> -		return err;
> -
>  	err = xe_set_dma_info(xe);
>  	if (err)
>  		return err;
> @@ -687,10 +683,6 @@ int xe_device_probe(struct xe_device *xe)
>  	if (err)
>  		return err;
>  
> -	err = xe_display_init_noirq(xe);
> -	if (err)
> -		return err;
> -
>  	err = probe_has_flat_ccs(xe);
>  	if (err)
>  		goto err;
> @@ -718,7 +710,7 @@ int xe_device_probe(struct xe_device *xe)
>  	 * This is the reason the first allocation needs to be done
>  	 * inside display.
>  	 */
> -	err = xe_display_init_noaccel(xe);
> +	err = xe_display_init_early(xe);
>  	if (err)
>  		goto err;
>  
> -- 
> 2.45.2
> 

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

* Re: [PATCH 5/9] drm/xe/display: Use a single early init call for display
  2024-11-12 18:39   ` Rodrigo Vivi
@ 2024-11-13 10:30     ` Maarten Lankhorst
  2024-11-14 16:05       ` Rodrigo Vivi
  0 siblings, 1 reply; 28+ messages in thread
From: Maarten Lankhorst @ 2024-11-13 10:30 UTC (permalink / raw)
  To: Rodrigo Vivi, Maarten Lankhorst; +Cc: intel-xe, intel-gfx

Hey,

Den 2024-11-12 kl. 19:39, skrev Rodrigo Vivi:
> On Thu, Nov 07, 2024 at 11:01:36AM +0100, Maarten Lankhorst wrote:
>> Instead of 3 different calls, it should be safe to unify to a single
>> call now. This makes the init sequence cleaner, and display less
>> tangled.
>>
>> Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
>> Link: https://patchwork.freedesktop.org/patch/msgid/20241105121857.17389-5-maarten.lankhorst@linux.intel.com
>> Signed-off-by: Maarten Lankhorst,,, <dev@lankhorst.se>
>> ---
>>   drivers/gpu/drm/xe/display/xe_display.c | 72 +++++++------------------
>>   drivers/gpu/drm/xe/display/xe_display.h |  8 +--
>>   drivers/gpu/drm/xe/xe_device.c          | 10 +---
>>   3 files changed, 23 insertions(+), 67 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/xe/display/xe_display.c b/drivers/gpu/drm/xe/display/xe_display.c
>> index b5502f335f531..a9ce4f561e7aa 100644
>> --- a/drivers/gpu/drm/xe/display/xe_display.c
>> +++ b/drivers/gpu/drm/xe/display/xe_display.c
> 
> we should make every function in this file only a wrap to the i915
> side with the 	if (!xe->info.probe_display) being the only thing
> extra in here... so we consolidate the display side in a way
> that we could later really split the display to a separate driver.
> 
> I have the feeling that this patch takes display to the other direction...
> 
It should not matter much. I believe i915 had more split because of 
display being more connected to hardware. In Xe the display is from the 
start a separate driver or module on the chip , so we can do the 
different init calls in one go, as there are no interrupts
calling into the display driver yet.

So in Xe we can do a 2-stage init of display, xe_display_init_early 
which initialises everything required before enabling interrupts, 
completed with the takeover of the initial FB, and xe_display_init() for 
the normal init sequence that has to run afterwards.

Because of memirq's performing allocations by design, we really have to 
run the FB handover code without interrupts anyway.

I believe the same thing could be done on i915 on BDW+, but might be 
harder on legacy platforms.

Cheers,
~Maarten

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

* Re: [PATCH 5/9] drm/xe/display: Use a single early init call for display
  2024-11-13 10:30     ` Maarten Lankhorst
@ 2024-11-14 16:05       ` Rodrigo Vivi
  0 siblings, 0 replies; 28+ messages in thread
From: Rodrigo Vivi @ 2024-11-14 16:05 UTC (permalink / raw)
  To: Maarten Lankhorst; +Cc: Maarten Lankhorst, intel-xe, intel-gfx

On Wed, Nov 13, 2024 at 11:30:36AM +0100, Maarten Lankhorst wrote:
> Hey,
> 
> Den 2024-11-12 kl. 19:39, skrev Rodrigo Vivi:
> > On Thu, Nov 07, 2024 at 11:01:36AM +0100, Maarten Lankhorst wrote:
> > > Instead of 3 different calls, it should be safe to unify to a single
> > > call now. This makes the init sequence cleaner, and display less
> > > tangled.
> > > 
> > > Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> > > Link: https://patchwork.freedesktop.org/patch/msgid/20241105121857.17389-5-maarten.lankhorst@linux.intel.com
> > > Signed-off-by: Maarten Lankhorst,,, <dev@lankhorst.se>
> > > ---
> > >   drivers/gpu/drm/xe/display/xe_display.c | 72 +++++++------------------
> > >   drivers/gpu/drm/xe/display/xe_display.h |  8 +--
> > >   drivers/gpu/drm/xe/xe_device.c          | 10 +---
> > >   3 files changed, 23 insertions(+), 67 deletions(-)
> > > 
> > > diff --git a/drivers/gpu/drm/xe/display/xe_display.c b/drivers/gpu/drm/xe/display/xe_display.c
> > > index b5502f335f531..a9ce4f561e7aa 100644
> > > --- a/drivers/gpu/drm/xe/display/xe_display.c
> > > +++ b/drivers/gpu/drm/xe/display/xe_display.c
> > 
> > we should make every function in this file only a wrap to the i915
> > side with the 	if (!xe->info.probe_display) being the only thing
> > extra in here... so we consolidate the display side in a way
> > that we could later really split the display to a separate driver.
> > 
> > I have the feeling that this patch takes display to the other direction...
> > 
> It should not matter much. I believe i915 had more split because of display
> being more connected to hardware. In Xe the display is from the start a
> separate driver or module on the chip , so we can do the different init
> calls in one go, as there are no interrupts
> calling into the display driver yet.
> 
> So in Xe we can do a 2-stage init of display, xe_display_init_early which
> initialises everything required before enabling interrupts, completed with
> the takeover of the initial FB, and xe_display_init() for the normal init
> sequence that has to run afterwards.
> 
> Because of memirq's performing allocations by design, we really have to run
> the FB handover code without interrupts anyway.
> 
> I believe the same thing could be done on i915 on BDW+, but might be harder
> on legacy platforms.

Okay... it shouldn't matter much indeed. Fix your signed off by and
feel free to use
Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>


> 
> Cheers,
> ~Maarten

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

* Re: [PATCH 6/9] drm/xe/sriov: Move VF bootstrap and query_config to vf_guc_init
  2024-11-07 10:01 ` [PATCH 6/9] drm/xe/sriov: Move VF bootstrap and query_config to vf_guc_init Maarten Lankhorst
@ 2024-11-14 16:09   ` Rodrigo Vivi
  2024-11-15 14:21     ` Maarten Lankhorst
  0 siblings, 1 reply; 28+ messages in thread
From: Rodrigo Vivi @ 2024-11-14 16:09 UTC (permalink / raw)
  To: Maarten Lankhorst, Michal Wajdeczko
  Cc: intel-xe, intel-gfx, Maarten, Lankhorst, dev

On Thu, Nov 07, 2024 at 11:01:37AM +0100, Maarten Lankhorst wrote:
> We want to split up GUC init to an alloc and noalloc part to keep the
> init path the same for VF and !VF as much as possible.
> 
> Everything in vf_guc_init should be done as early as possible, otherwise
> VRAM probing becomes impossible.
> 
> Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> Link: https://patchwork.freedesktop.org/patch/msgid/20241105121857.17389-6-maarten.lankhorst@linux.intel.com
> Signed-off-by: Maarten Lankhorst,,, <dev@lankhorst.se>
> ---
>  drivers/gpu/drm/xe/xe_gt_sriov_vf.c |  1 -
>  drivers/gpu/drm/xe/xe_guc.c         | 17 +++++++++--------
>  2 files changed, 9 insertions(+), 9 deletions(-)
> 
> diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_vf.c b/drivers/gpu/drm/xe/xe_gt_sriov_vf.c
> index cca5d57328021..997438047a037 100644
> --- a/drivers/gpu/drm/xe/xe_gt_sriov_vf.c
> +++ b/drivers/gpu/drm/xe/xe_gt_sriov_vf.c
> @@ -948,7 +948,6 @@ u32 xe_gt_sriov_vf_read32(struct xe_gt *gt, struct xe_reg reg)
>  	struct vf_runtime_reg *rr;
>  
>  	xe_gt_assert(gt, IS_SRIOV_VF(gt_to_xe(gt)));
> -	xe_gt_assert(gt, gt->sriov.vf.pf_version.major);
>  	xe_gt_assert(gt, !reg.vf);
>  
>  	if (reg.addr == GMD_ID.addr) {
> diff --git a/drivers/gpu/drm/xe/xe_guc.c b/drivers/gpu/drm/xe/xe_guc.c
> index 7224593c9ce9b..5a050a5379911 100644
> --- a/drivers/gpu/drm/xe/xe_guc.c
> +++ b/drivers/gpu/drm/xe/xe_guc.c
> @@ -301,6 +301,7 @@ static int xe_guc_realloc_post_hwconfig(struct xe_guc *guc)
>  
>  static int vf_guc_init(struct xe_guc *guc)
>  {
> +	struct xe_gt *gt = guc_to_gt(guc);
>  	int err;
>  
>  	xe_guc_comm_init_early(guc);
> @@ -313,6 +314,14 @@ static int vf_guc_init(struct xe_guc *guc)
>  	if (err)
>  		return err;
>  
> +	err = xe_gt_sriov_vf_bootstrap(gt);
> +	if (err)
> +		return err;
> +
> +	err = xe_gt_sriov_vf_query_config(gt);
> +	if (err)
> +		return err;
> +
>  	return 0;
>  }
>  
> @@ -753,14 +762,6 @@ static int vf_guc_min_load_for_hwconfig(struct xe_guc *guc)

Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>

as I believe there was a good reason for these functions to be called this early.


>  	struct xe_gt *gt = guc_to_gt(guc);
>  	int ret;
>  
> -	ret = xe_gt_sriov_vf_bootstrap(gt);
> -	if (ret)
> -		return ret;
> -
> -	ret = xe_gt_sriov_vf_query_config(gt);
> -	if (ret)
> -		return ret;
> -
>  	ret = xe_guc_hwconfig_init(guc);
>  	if (ret)
>  		return ret;
> -- 
> 2.45.2
> 

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

* Re: [PATCH 6/9] drm/xe/sriov: Move VF bootstrap and query_config to vf_guc_init
  2024-11-14 16:09   ` Rodrigo Vivi
@ 2024-11-15 14:21     ` Maarten Lankhorst
  2024-11-15 19:06       ` Rodrigo Vivi
  0 siblings, 1 reply; 28+ messages in thread
From: Maarten Lankhorst @ 2024-11-15 14:21 UTC (permalink / raw)
  To: Rodrigo Vivi, Maarten Lankhorst, Michal Wajdeczko
  Cc: intel-xe, intel-gfx, dev

Hey,

Den 2024-11-14 kl. 17:09, skrev Rodrigo Vivi:
> On Thu, Nov 07, 2024 at 11:01:37AM +0100, Maarten Lankhorst wrote:
>> We want to split up GUC init to an alloc and noalloc part to keep the
>> init path the same for VF and !VF as much as possible.
>>
>> Everything in vf_guc_init should be done as early as possible, otherwise
>> VRAM probing becomes impossible.
>>
>> Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
>> Link: https://patchwork.freedesktop.org/patch/msgid/20241105121857.17389-6-maarten.lankhorst@linux.intel.com
>> Signed-off-by: Maarten Lankhorst,,, <dev@lankhorst.se>
>> ---
>>  drivers/gpu/drm/xe/xe_gt_sriov_vf.c |  1 -
>>  drivers/gpu/drm/xe/xe_guc.c         | 17 +++++++++--------
>>  2 files changed, 9 insertions(+), 9 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_vf.c b/drivers/gpu/drm/xe/xe_gt_sriov_vf.c
>> index cca5d57328021..997438047a037 100644
>> --- a/drivers/gpu/drm/xe/xe_gt_sriov_vf.c
>> +++ b/drivers/gpu/drm/xe/xe_gt_sriov_vf.c
>> @@ -948,7 +948,6 @@ u32 xe_gt_sriov_vf_read32(struct xe_gt *gt, struct xe_reg reg)
>>  	struct vf_runtime_reg *rr;
>>  
>>  	xe_gt_assert(gt, IS_SRIOV_VF(gt_to_xe(gt)));
>> -	xe_gt_assert(gt, gt->sriov.vf.pf_version.major);
>>  	xe_gt_assert(gt, !reg.vf);
>>  
>>  	if (reg.addr == GMD_ID.addr) {
>> diff --git a/drivers/gpu/drm/xe/xe_guc.c b/drivers/gpu/drm/xe/xe_guc.c
>> index 7224593c9ce9b..5a050a5379911 100644
>> --- a/drivers/gpu/drm/xe/xe_guc.c
>> +++ b/drivers/gpu/drm/xe/xe_guc.c
>> @@ -301,6 +301,7 @@ static int xe_guc_realloc_post_hwconfig(struct xe_guc *guc)
>>  
>>  static int vf_guc_init(struct xe_guc *guc)
>>  {
>> +	struct xe_gt *gt = guc_to_gt(guc);
>>  	int err;
>>  
>>  	xe_guc_comm_init_early(guc);
>> @@ -313,6 +314,14 @@ static int vf_guc_init(struct xe_guc *guc)
>>  	if (err)
>>  		return err;
>>  
>> +	err = xe_gt_sriov_vf_bootstrap(gt);
>> +	if (err)
>> +		return err;
>> +
>> +	err = xe_gt_sriov_vf_query_config(gt);
>> +	if (err)
>> +		return err;
>> +
>>  	return 0;
>>  }
>>  
>> @@ -753,14 +762,6 @@ static int vf_guc_min_load_for_hwconfig(struct xe_guc *guc)
> Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
>
> as I believe there was a good reason for these functions to be called this early.

This is in fact called slightly earlier than before. It's now called in xe_uc_init instead of xe_uc_init_hwconfig. :-)

Cheers,

~Maarten


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

* Re: [PATCH 6/9] drm/xe/sriov: Move VF bootstrap and query_config to vf_guc_init
  2024-11-15 14:21     ` Maarten Lankhorst
@ 2024-11-15 19:06       ` Rodrigo Vivi
  2024-11-15 19:50         ` Maarten Lankhorst
  0 siblings, 1 reply; 28+ messages in thread
From: Rodrigo Vivi @ 2024-11-15 19:06 UTC (permalink / raw)
  To: Maarten Lankhorst
  Cc: Maarten Lankhorst, Michal Wajdeczko, intel-xe, intel-gfx, dev

On Fri, Nov 15, 2024 at 03:21:43PM +0100, Maarten Lankhorst wrote:
> Hey,
> 
> Den 2024-11-14 kl. 17:09, skrev Rodrigo Vivi:
> > On Thu, Nov 07, 2024 at 11:01:37AM +0100, Maarten Lankhorst wrote:
> >> We want to split up GUC init to an alloc and noalloc part to keep the
> >> init path the same for VF and !VF as much as possible.
> >>
> >> Everything in vf_guc_init should be done as early as possible, otherwise
> >> VRAM probing becomes impossible.
> >>
> >> Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> >> Link: https://patchwork.freedesktop.org/patch/msgid/20241105121857.17389-6-maarten.lankhorst@linux.intel.com
> >> Signed-off-by: Maarten Lankhorst,,, <dev@lankhorst.se>
> >> ---
> >>  drivers/gpu/drm/xe/xe_gt_sriov_vf.c |  1 -
> >>  drivers/gpu/drm/xe/xe_guc.c         | 17 +++++++++--------
> >>  2 files changed, 9 insertions(+), 9 deletions(-)
> >>
> >> diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_vf.c b/drivers/gpu/drm/xe/xe_gt_sriov_vf.c
> >> index cca5d57328021..997438047a037 100644
> >> --- a/drivers/gpu/drm/xe/xe_gt_sriov_vf.c
> >> +++ b/drivers/gpu/drm/xe/xe_gt_sriov_vf.c
> >> @@ -948,7 +948,6 @@ u32 xe_gt_sriov_vf_read32(struct xe_gt *gt, struct xe_reg reg)
> >>  	struct vf_runtime_reg *rr;
> >>  
> >>  	xe_gt_assert(gt, IS_SRIOV_VF(gt_to_xe(gt)));
> >> -	xe_gt_assert(gt, gt->sriov.vf.pf_version.major);
> >>  	xe_gt_assert(gt, !reg.vf);
> >>  
> >>  	if (reg.addr == GMD_ID.addr) {
> >> diff --git a/drivers/gpu/drm/xe/xe_guc.c b/drivers/gpu/drm/xe/xe_guc.c
> >> index 7224593c9ce9b..5a050a5379911 100644
> >> --- a/drivers/gpu/drm/xe/xe_guc.c
> >> +++ b/drivers/gpu/drm/xe/xe_guc.c
> >> @@ -301,6 +301,7 @@ static int xe_guc_realloc_post_hwconfig(struct xe_guc *guc)
> >>  
> >>  static int vf_guc_init(struct xe_guc *guc)
> >>  {
> >> +	struct xe_gt *gt = guc_to_gt(guc);
> >>  	int err;
> >>  
> >>  	xe_guc_comm_init_early(guc);
> >> @@ -313,6 +314,14 @@ static int vf_guc_init(struct xe_guc *guc)
> >>  	if (err)
> >>  		return err;
> >>  
> >> +	err = xe_gt_sriov_vf_bootstrap(gt);
> >> +	if (err)
> >> +		return err;
> >> +
> >> +	err = xe_gt_sriov_vf_query_config(gt);
> >> +	if (err)
> >> +		return err;
> >> +
> >>  	return 0;
> >>  }
> >>  
> >> @@ -753,14 +762,6 @@ static int vf_guc_min_load_for_hwconfig(struct xe_guc *guc)
> > Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
> >
> > as I believe there was a good reason for these functions to be called this early.
> 
> This is in fact called slightly earlier than before. It's now called in xe_uc_init instead of xe_uc_init_hwconfig. :-)

Oh! Indeed! one step earlier actually... that name min_for_hwconfig got me confused, I'm sorry.

The only difference that I see now is that this functions are not avoided anymore if xe.force_execlist=1...

We should probably add some skips inside the function? I know I know we likely have many other bugs
if using force_execlists, but let's at least try to avoid introducing more cases...

> 
> Cheers,
> 
> ~Maarten
> 

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

* Re: [PATCH 6/9] drm/xe/sriov: Move VF bootstrap and query_config to vf_guc_init
  2024-11-15 19:06       ` Rodrigo Vivi
@ 2024-11-15 19:50         ` Maarten Lankhorst
  2024-11-15 20:02           ` Rodrigo Vivi
  0 siblings, 1 reply; 28+ messages in thread
From: Maarten Lankhorst @ 2024-11-15 19:50 UTC (permalink / raw)
  To: Rodrigo Vivi, Maarten Lankhorst
  Cc: Maarten Lankhorst, Michal Wajdeczko, intel-xe, intel-gfx

Hey,

Den 2024-11-15 kl. 20:06, skrev Rodrigo Vivi:
> On Fri, Nov 15, 2024 at 03:21:43PM +0100, Maarten Lankhorst wrote:
>> Hey,
>>
>> Den 2024-11-14 kl. 17:09, skrev Rodrigo Vivi:
>>> On Thu, Nov 07, 2024 at 11:01:37AM +0100, Maarten Lankhorst wrote:
>>>> We want to split up GUC init to an alloc and noalloc part to keep the
>>>> init path the same for VF and !VF as much as possible.
>>>>
>>>> Everything in vf_guc_init should be done as early as possible, otherwise
>>>> VRAM probing becomes impossible.
>>>>
>>>> Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
>>>> Link: https://patchwork.freedesktop.org/patch/msgid/20241105121857.17389-6-maarten.lankhorst@linux.intel.com
>>>> Signed-off-by: Maarten Lankhorst,,, <dev@lankhorst.se>
>>>> ---
>>>>   drivers/gpu/drm/xe/xe_gt_sriov_vf.c |  1 -
>>>>   drivers/gpu/drm/xe/xe_guc.c         | 17 +++++++++--------
>>>>   2 files changed, 9 insertions(+), 9 deletions(-)
>>>>
>>>> diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_vf.c b/drivers/gpu/drm/xe/xe_gt_sriov_vf.c
>>>> index cca5d57328021..997438047a037 100644
>>>> --- a/drivers/gpu/drm/xe/xe_gt_sriov_vf.c
>>>> +++ b/drivers/gpu/drm/xe/xe_gt_sriov_vf.c
>>>> @@ -948,7 +948,6 @@ u32 xe_gt_sriov_vf_read32(struct xe_gt *gt, struct xe_reg reg)
>>>>   	struct vf_runtime_reg *rr;
>>>>   
>>>>   	xe_gt_assert(gt, IS_SRIOV_VF(gt_to_xe(gt)));
>>>> -	xe_gt_assert(gt, gt->sriov.vf.pf_version.major);
>>>>   	xe_gt_assert(gt, !reg.vf);
>>>>   
>>>>   	if (reg.addr == GMD_ID.addr) {
>>>> diff --git a/drivers/gpu/drm/xe/xe_guc.c b/drivers/gpu/drm/xe/xe_guc.c
>>>> index 7224593c9ce9b..5a050a5379911 100644
>>>> --- a/drivers/gpu/drm/xe/xe_guc.c
>>>> +++ b/drivers/gpu/drm/xe/xe_guc.c
>>>> @@ -301,6 +301,7 @@ static int xe_guc_realloc_post_hwconfig(struct xe_guc *guc)
>>>>   
>>>>   static int vf_guc_init(struct xe_guc *guc)
>>>>   {
>>>> +	struct xe_gt *gt = guc_to_gt(guc);
>>>>   	int err;
>>>>   
>>>>   	xe_guc_comm_init_early(guc);
>>>> @@ -313,6 +314,14 @@ static int vf_guc_init(struct xe_guc *guc)
>>>>   	if (err)
>>>>   		return err;
>>>>   
>>>> +	err = xe_gt_sriov_vf_bootstrap(gt);
>>>> +	if (err)
>>>> +		return err;
>>>> +
>>>> +	err = xe_gt_sriov_vf_query_config(gt);
>>>> +	if (err)
>>>> +		return err;
>>>> +
>>>>   	return 0;
>>>>   }
>>>>   
>>>> @@ -753,14 +762,6 @@ static int vf_guc_min_load_for_hwconfig(struct xe_guc *guc)
>>> Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
>>>
>>> as I believe there was a good reason for these functions to be called this early.
>>
>> This is in fact called slightly earlier than before. It's now called in xe_uc_init instead of xe_uc_init_hwconfig. :-)
> 
> Oh! Indeed! one step earlier actually... that name min_for_hwconfig got me confused, I'm sorry.
> 
> The only difference that I see now is that this functions are not avoided anymore if xe.force_execlist=1...
> 
> We should probably add some skips inside the function? I know I know we likely have many other bugs
> if using force_execlists, but let's at least try to avoid introducing more cases...

I don't think it's even possible to use execists in VF mode. :-)

Cheers,
~Maarten

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

* Re: [PATCH 6/9] drm/xe/sriov: Move VF bootstrap and query_config to vf_guc_init
  2024-11-15 19:50         ` Maarten Lankhorst
@ 2024-11-15 20:02           ` Rodrigo Vivi
  2024-11-15 20:51             ` Maarten Lankhorst
  0 siblings, 1 reply; 28+ messages in thread
From: Rodrigo Vivi @ 2024-11-15 20:02 UTC (permalink / raw)
  To: Maarten Lankhorst
  Cc: Maarten Lankhorst, Maarten Lankhorst, Michal Wajdeczko, intel-xe,
	intel-gfx

On Fri, Nov 15, 2024 at 08:50:01PM +0100, Maarten Lankhorst wrote:
> Hey,
> 
> Den 2024-11-15 kl. 20:06, skrev Rodrigo Vivi:
> > On Fri, Nov 15, 2024 at 03:21:43PM +0100, Maarten Lankhorst wrote:
> > > Hey,
> > > 
> > > Den 2024-11-14 kl. 17:09, skrev Rodrigo Vivi:
> > > > On Thu, Nov 07, 2024 at 11:01:37AM +0100, Maarten Lankhorst wrote:
> > > > > We want to split up GUC init to an alloc and noalloc part to keep the
> > > > > init path the same for VF and !VF as much as possible.
> > > > > 
> > > > > Everything in vf_guc_init should be done as early as possible, otherwise
> > > > > VRAM probing becomes impossible.
> > > > > 
> > > > > Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> > > > > Link: https://patchwork.freedesktop.org/patch/msgid/20241105121857.17389-6-maarten.lankhorst@linux.intel.com
> > > > > Signed-off-by: Maarten Lankhorst,,, <dev@lankhorst.se>
> > > > > ---
> > > > >   drivers/gpu/drm/xe/xe_gt_sriov_vf.c |  1 -
> > > > >   drivers/gpu/drm/xe/xe_guc.c         | 17 +++++++++--------
> > > > >   2 files changed, 9 insertions(+), 9 deletions(-)
> > > > > 
> > > > > diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_vf.c b/drivers/gpu/drm/xe/xe_gt_sriov_vf.c
> > > > > index cca5d57328021..997438047a037 100644
> > > > > --- a/drivers/gpu/drm/xe/xe_gt_sriov_vf.c
> > > > > +++ b/drivers/gpu/drm/xe/xe_gt_sriov_vf.c
> > > > > @@ -948,7 +948,6 @@ u32 xe_gt_sriov_vf_read32(struct xe_gt *gt, struct xe_reg reg)
> > > > >   	struct vf_runtime_reg *rr;
> > > > >   	xe_gt_assert(gt, IS_SRIOV_VF(gt_to_xe(gt)));
> > > > > -	xe_gt_assert(gt, gt->sriov.vf.pf_version.major);
> > > > >   	xe_gt_assert(gt, !reg.vf);
> > > > >   	if (reg.addr == GMD_ID.addr) {
> > > > > diff --git a/drivers/gpu/drm/xe/xe_guc.c b/drivers/gpu/drm/xe/xe_guc.c
> > > > > index 7224593c9ce9b..5a050a5379911 100644
> > > > > --- a/drivers/gpu/drm/xe/xe_guc.c
> > > > > +++ b/drivers/gpu/drm/xe/xe_guc.c
> > > > > @@ -301,6 +301,7 @@ static int xe_guc_realloc_post_hwconfig(struct xe_guc *guc)
> > > > >   static int vf_guc_init(struct xe_guc *guc)
> > > > >   {
> > > > > +	struct xe_gt *gt = guc_to_gt(guc);
> > > > >   	int err;
> > > > >   	xe_guc_comm_init_early(guc);
> > > > > @@ -313,6 +314,14 @@ static int vf_guc_init(struct xe_guc *guc)
> > > > >   	if (err)
> > > > >   		return err;
> > > > > +	err = xe_gt_sriov_vf_bootstrap(gt);
> > > > > +	if (err)
> > > > > +		return err;
> > > > > +
> > > > > +	err = xe_gt_sriov_vf_query_config(gt);
> > > > > +	if (err)
> > > > > +		return err;
> > > > > +
> > > > >   	return 0;
> > > > >   }
> > > > > @@ -753,14 +762,6 @@ static int vf_guc_min_load_for_hwconfig(struct xe_guc *guc)
> > > > Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
> > > > 
> > > > as I believe there was a good reason for these functions to be called this early.
> > > 
> > > This is in fact called slightly earlier than before. It's now called in xe_uc_init instead of xe_uc_init_hwconfig. :-)
> > 
> > Oh! Indeed! one step earlier actually... that name min_for_hwconfig got me confused, I'm sorry.
> > 
> > The only difference that I see now is that this functions are not avoided anymore if xe.force_execlist=1...
> > 
> > We should probably add some skips inside the function? I know I know we likely have many other bugs
> > if using force_execlists, but let's at least try to avoid introducing more cases...
> 
> I don't think it's even possible to use execists in VF mode. :-)

yeap, it is not... this is why we should ensure these functions are not called, liked
they were not called before this patch...

> 
> Cheers,
> ~Maarten

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

* Re: [PATCH 6/9] drm/xe/sriov: Move VF bootstrap and query_config to vf_guc_init
  2024-11-15 20:02           ` Rodrigo Vivi
@ 2024-11-15 20:51             ` Maarten Lankhorst
  0 siblings, 0 replies; 28+ messages in thread
From: Maarten Lankhorst @ 2024-11-15 20:51 UTC (permalink / raw)
  To: Rodrigo Vivi
  Cc: Maarten Lankhorst, Maarten Lankhorst, Michal Wajdeczko, intel-xe,
	intel-gfx



Den 2024-11-15 kl. 21:02, skrev Rodrigo Vivi:
> On Fri, Nov 15, 2024 at 08:50:01PM +0100, Maarten Lankhorst wrote:
>> Hey,
>>
>> Den 2024-11-15 kl. 20:06, skrev Rodrigo Vivi:
>>> On Fri, Nov 15, 2024 at 03:21:43PM +0100, Maarten Lankhorst wrote:
>>>> Hey,
>>>>
>>>> Den 2024-11-14 kl. 17:09, skrev Rodrigo Vivi:
>>>>> On Thu, Nov 07, 2024 at 11:01:37AM +0100, Maarten Lankhorst wrote:
>>>>>> We want to split up GUC init to an alloc and noalloc part to keep the
>>>>>> init path the same for VF and !VF as much as possible.
>>>>>>
>>>>>> Everything in vf_guc_init should be done as early as possible, otherwise
>>>>>> VRAM probing becomes impossible.
>>>>>>
>>>>>> Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
>>>>>> Link: https://patchwork.freedesktop.org/patch/msgid/20241105121857.17389-6-maarten.lankhorst@linux.intel.com
>>>>>> Signed-off-by: Maarten Lankhorst,,, <dev@lankhorst.se>
>>>>>> ---
>>>>>>    drivers/gpu/drm/xe/xe_gt_sriov_vf.c |  1 -
>>>>>>    drivers/gpu/drm/xe/xe_guc.c         | 17 +++++++++--------
>>>>>>    2 files changed, 9 insertions(+), 9 deletions(-)
>>>>>>
>>>>>> diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_vf.c b/drivers/gpu/drm/xe/xe_gt_sriov_vf.c
>>>>>> index cca5d57328021..997438047a037 100644
>>>>>> --- a/drivers/gpu/drm/xe/xe_gt_sriov_vf.c
>>>>>> +++ b/drivers/gpu/drm/xe/xe_gt_sriov_vf.c
>>>>>> @@ -948,7 +948,6 @@ u32 xe_gt_sriov_vf_read32(struct xe_gt *gt, struct xe_reg reg)
>>>>>>    	struct vf_runtime_reg *rr;
>>>>>>    	xe_gt_assert(gt, IS_SRIOV_VF(gt_to_xe(gt)));
>>>>>> -	xe_gt_assert(gt, gt->sriov.vf.pf_version.major);
>>>>>>    	xe_gt_assert(gt, !reg.vf);
>>>>>>    	if (reg.addr == GMD_ID.addr) {
>>>>>> diff --git a/drivers/gpu/drm/xe/xe_guc.c b/drivers/gpu/drm/xe/xe_guc.c
>>>>>> index 7224593c9ce9b..5a050a5379911 100644
>>>>>> --- a/drivers/gpu/drm/xe/xe_guc.c
>>>>>> +++ b/drivers/gpu/drm/xe/xe_guc.c
>>>>>> @@ -301,6 +301,7 @@ static int xe_guc_realloc_post_hwconfig(struct xe_guc *guc)
>>>>>>    static int vf_guc_init(struct xe_guc *guc)
>>>>>>    {
>>>>>> +	struct xe_gt *gt = guc_to_gt(guc);
>>>>>>    	int err;
>>>>>>    	xe_guc_comm_init_early(guc);
>>>>>> @@ -313,6 +314,14 @@ static int vf_guc_init(struct xe_guc *guc)
>>>>>>    	if (err)
>>>>>>    		return err;
>>>>>> +	err = xe_gt_sriov_vf_bootstrap(gt);
>>>>>> +	if (err)
>>>>>> +		return err;
>>>>>> +
>>>>>> +	err = xe_gt_sriov_vf_query_config(gt);
>>>>>> +	if (err)
>>>>>> +		return err;
>>>>>> +
>>>>>>    	return 0;
>>>>>>    }
>>>>>> @@ -753,14 +762,6 @@ static int vf_guc_min_load_for_hwconfig(struct xe_guc *guc)
>>>>> Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
>>>>>
>>>>> as I believe there was a good reason for these functions to be called this early.
>>>>
>>>> This is in fact called slightly earlier than before. It's now called in xe_uc_init instead of xe_uc_init_hwconfig. :-)
>>>
>>> Oh! Indeed! one step earlier actually... that name min_for_hwconfig got me confused, I'm sorry.
>>>
>>> The only difference that I see now is that this functions are not avoided anymore if xe.force_execlist=1...
>>>
>>> We should probably add some skips inside the function? I know I know we likely have many other bugs
>>> if using force_execlists, but let's at least try to avoid introducing more cases...
>>
>> I don't think it's even possible to use execists in VF mode. :-)
> 
> yeap, it is not... this is why we should ensure these functions are not called, liked
> they were not called before this patch...
Why are we even here with execlists in VF mode? This is insane..

Should refuse to load as soon as VF mode is detected.

Cheers,
~Maarten

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

end of thread, other threads:[~2024-11-15 20:51 UTC | newest]

Thread overview: 28+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-11-07 10:01 [PATCH 1/9] drm/xe: Remove double pageflip Maarten Lankhorst
2024-11-07 10:01 ` [PATCH 2/9] drm/xe/display: Add intel_plane_initial_vblank_wait Maarten Lankhorst
2024-11-07 11:36   ` [PATCH] " Maarten Lankhorst
2024-11-07 12:21     ` Ville Syrjälä
2024-11-07 17:45       ` Maarten Lankhorst
2024-11-07 10:01 ` [PATCH 3/9] drm/xe: Move suballocator init to after display init Maarten Lankhorst
2024-11-12 18:18   ` Rodrigo Vivi
2024-11-07 10:01 ` [PATCH 4/9] drm/xe: Defer irq init until after xe_display_init_noaccel Maarten Lankhorst
2024-11-12 18:21   ` Rodrigo Vivi
2024-11-07 10:01 ` [PATCH 5/9] drm/xe/display: Use a single early init call for display Maarten Lankhorst
2024-11-12 18:39   ` Rodrigo Vivi
2024-11-13 10:30     ` Maarten Lankhorst
2024-11-14 16:05       ` Rodrigo Vivi
2024-11-07 10:01 ` [PATCH 6/9] drm/xe/sriov: Move VF bootstrap and query_config to vf_guc_init Maarten Lankhorst
2024-11-14 16:09   ` Rodrigo Vivi
2024-11-15 14:21     ` Maarten Lankhorst
2024-11-15 19:06       ` Rodrigo Vivi
2024-11-15 19:50         ` Maarten Lankhorst
2024-11-15 20:02           ` Rodrigo Vivi
2024-11-15 20:51             ` Maarten Lankhorst
2024-11-07 10:01 ` [PATCH 7/9] drm/xe: Simplify GuC early initialisation Maarten Lankhorst
2024-11-07 10:01 ` [PATCH 8/9] drm/xe: Make it possible to read instance0 MCR registers after xe_gt_mcr_init_early Maarten Lankhorst
2024-11-07 10:01 ` [PATCH 9/9] drm/xe: Split init of xe_gt_init_hwconfig to xe_gt_init and *_early Maarten Lankhorst
2024-11-07 10:16 ` ✗ Fi.CI.BUILD: failure for series starting with [1/9] drm/xe: Remove double pageflip Patchwork
2024-11-07 12:23 ` ✓ Fi.CI.BAT: success for series starting with [1/9] drm/xe: Remove double pageflip (rev2) Patchwork
2024-11-07 12:23 ` ✗ Fi.CI.SPARSE: warning " Patchwork
2024-11-07 13:57 ` ✗ Fi.CI.IGT: failure " Patchwork
  -- strict thread matches above, loose matches on Subject: below --
2024-11-05 12:18 [PATCH 1/9] drm/xe: Remove double pageflip Maarten Lankhorst
2024-11-05 12:18 ` [PATCH 4/9] drm/xe: Defer irq init until after xe_display_init_noaccel Maarten Lankhorst

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