Intel-XE Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/8] drm/{i915, xe}: Make unclaimed mmio detection lockless and enable it for xe
@ 2026-11-13 13:43 Ville Syrjala
  2026-11-13 13:43 ` [PATCH 1/8] drm/i915/de: Uninline intel_de_{read,write}_fw() Ville Syrjala
                   ` (11 more replies)
  0 siblings, 12 replies; 19+ messages in thread
From: Ville Syrjala @ 2026-11-13 13:43 UTC (permalink / raw)
  To: intel-gfx; +Cc: intel-xe

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

Make the unclaimed mmio detection lockless (albeit somewhat
more racy), and enable it for xe. Also make TGL+ lockless on
i915 (already was so on xe).

And I tossed in the deinlining of intel_de_{read,write}_fw()
as well because the bloat has been bothering me for a while.

Ville Syrjälä (8):
  drm/i915/de: Uninline intel_de_{read,write}_fw()
  drm/i915/de: Pimp the intel_de_{read,write}_fw() docs
  drm/i915/de: Flatten the unclaimed mmio code
  drm/i915/de: Make mmio_debug lockless
  drm/i915/de: Optimize the mmio_debug checks in intel_de_{read,write}()
  drm/i915/de: Make display registers unlocked for TGL+ on i915
  drm/xe: Enable unclaimed register detection on xe
  drm/i915/de: Nuke driver_is_i915()

 drivers/gpu/drm/i915/Kconfig.debug            |   2 +-
 drivers/gpu/drm/i915/display/intel_de.c       | 220 +++++++++++-------
 drivers/gpu/drm/i915/display/intel_de.h       |  40 ++--
 .../gpu/drm/i915/display/intel_display_core.h |   7 +-
 .../drm/i915/display/intel_display_params.c   |   4 +-
 .../drm/i915/display/intel_display_params.h   |   2 +-
 6 files changed, 152 insertions(+), 123 deletions(-)

-- 
2.56.0


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

* [PATCH 1/8] drm/i915/de: Uninline intel_de_{read,write}_fw()
  2026-11-13 13:43 [PATCH 0/8] drm/{i915, xe}: Make unclaimed mmio detection lockless and enable it for xe Ville Syrjala
@ 2026-11-13 13:43 ` Ville Syrjala
  2026-11-13 14:11   ` Jani Nikula
  2026-11-13 13:43 ` [PATCH 2/8] drm/i915/de: Pimp the intel_de_{read,write}_fw() docs Ville Syrjala
                   ` (10 subsequent siblings)
  11 siblings, 1 reply; 19+ messages in thread
From: Ville Syrjala @ 2026-11-13 13:43 UTC (permalink / raw)
  To: intel-gfx; +Cc: intel-xe

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

One might think that inlining intel_de_{read,write}_fw() would
be a good idea for performance reasons, and if these were just
the raw readl()/writel() then that would be true. But they
also contain the tracepoint, which actually translates to
surprising amount of code. The register accessors are used in
so many places that the extra code really adds up.

So making these non-inline functions seems like the better
choice here. This also lets the compiler again combine the
dsb vs. not branches from multiple back to back
intel_de_write_dsb() calls into a single branch. The
inlined tracepoint bloated the code so much that the
compiler generally just gave up on that, emitting funkier
code as a result.

I do want the inline versions inside intel_de.c to keep
the overhead minimal inside the vfuncs. gcc refuses to
inline any of these on its own for whatever reason.

Note that for xe we are now doing two function calls for
each of these since xe_mmio_{read,write}32() are also real
non-inline functions. But once we get rid of the uncore
stuff completely xe will again lose the second level of
function calls.

This shrinks the final i915.ko by 800 KiB without lockdep,
and 1200 KiB with lockdep enabled.

bloat-o-meter highlights:
add/remove: 25/34 grow/shrink: 30/150 up/down: 208667/-253907 (-45240)
Function                                     old     new   delta
...
do_gmbus_xfer                               2342    1392    -950
skl_write_plane_wm                          2199    1212    -987
skl_plane_update_arm                        1997     976   -1021
ilk_update_pipe_csc                         1752     723   -1029
i9xx_plane_update_arm                       1670     621   -1049
chv_load_luts                               2043     912   -1131
vlv_atomic_update_fifo                      2177     895   -1282
icl_color_commit_noarm                      2329     931   -1398
g4x_sprite_update_arm                       2138     737   -1401
ilk_read_pipe_csc                           1807     337   -1470
icl_read_csc                                1987     439   -1548
ivb_sprite_update_arm                       2324     730   -1594
i9xx_cursor_update_arm                      4513    2817   -1696
gen8_de_irq_handler                         5037    2816   -2221
vlv_sprite_update_arm                       4627    1225   -3402
icl_plane_update_noarm                      7885    3143   -4742
Total: Before=39595300, After=39550060, chg -0.11%

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

diff --git a/drivers/gpu/drm/i915/display/intel_de.c b/drivers/gpu/drm/i915/display/intel_de.c
index 9ca5b27eb768..8a94f3f1d3ee 100644
--- a/drivers/gpu/drm/i915/display/intel_de.c
+++ b/drivers/gpu/drm/i915/display/intel_de.c
@@ -10,6 +10,13 @@
 #include "intel_de.h"
 #include "intel_display_regs.h"
 #include "intel_display_rpm.h"
+#include "intel_uncore.h"
+#include "intel_uncore_trace.h"
+
+static inline struct intel_uncore *__to_uncore(struct intel_display *display)
+{
+	return display->mmio.uncore;
+}
 
 static int intel_de_wait_for_register(struct intel_display *display,
 				      intel_reg_t reg, u32 mask, u32 value,
@@ -165,11 +172,39 @@ u16 intel_de_read16(struct intel_display *display, intel_reg_t reg)
 	return intel_uncore_read16(__to_uncore(display), reg);
 }
 
+static __always_inline u32
+__intel_de_read_fw(struct intel_display *display, intel_reg_t reg)
+{
+	u32 val;
+
+	val = intel_uncore_read_fw(__to_uncore(display), reg);
+	trace_i915_reg_rw(false, reg, val, sizeof(val), true);
+
+	return val;
+}
+
+static __always_inline void
+__intel_de_write_fw(struct intel_display *display, intel_reg_t reg, u32 val)
+{
+	trace_i915_reg_rw(true, reg, val, sizeof(val), true);
+	intel_uncore_write_fw(__to_uncore(display), reg, val);
+}
+
+u32 intel_de_read_fw(struct intel_display *display, intel_reg_t reg)
+{
+	return __intel_de_read_fw(display, reg);
+}
+
+void intel_de_write_fw(struct intel_display *display, intel_reg_t reg, u32 val)
+{
+	__intel_de_write_fw(display, reg, val);
+}
+
 static bool hsw_check_for_unclaimed_mmio(struct intel_display *display)
 {
 	u32 dbg;
 
-	dbg = intel_de_read_fw(display, FPGA_DBG);
+	dbg = __intel_de_read_fw(display, FPGA_DBG);
 	if (likely(!(dbg & FPGA_DBG_RM_NOCLAIM)))
 		return false;
 
@@ -189,7 +224,7 @@ static bool hsw_check_for_unclaimed_mmio(struct intel_display *display)
 		drm_err(display->drm,
 			"Lost access to MMIO BAR; all registers now read back as 0xFFFFFFFF!\n");
 
-	intel_de_write_fw(display, FPGA_DBG, FPGA_DBG_RM_NOCLAIM);
+	__intel_de_write_fw(display, FPGA_DBG, FPGA_DBG_RM_NOCLAIM);
 
 	return true;
 }
@@ -198,11 +233,11 @@ static bool vlv_check_for_unclaimed_mmio(struct intel_display *display)
 {
 	u32 cer;
 
-	cer = intel_de_read_fw(display, CLAIM_ER);
+	cer = __intel_de_read_fw(display, CLAIM_ER);
 	if (likely(!(cer & (CLAIM_ER_OVERFLOW | CLAIM_ER_CTR_MASK))))
 		return false;
 
-	intel_de_write_fw(display, CLAIM_ER, CLAIM_ER_CLR);
+	__intel_de_write_fw(display, CLAIM_ER, CLAIM_ER_CLR);
 
 	return true;
 }
@@ -348,7 +383,7 @@ __intel_de_read(struct intel_display *display, intel_reg_t reg,
 	__mmio_lock_pre(display, &irqflags, mmio_flags);
 	__mmio_unclaimed_pre(display, reg, false, mmio_flags);
 
-	val = intel_de_read_fw(display, reg);
+	val = __intel_de_read_fw(display, reg);
 
 	__mmio_unclaimed_post(display, reg, false, mmio_flags);
 	__mmio_lock_post(display, irqflags, mmio_flags);
@@ -369,7 +404,7 @@ __intel_de_write(struct intel_display *display, intel_reg_t reg, u32 val,
 	__mmio_lock_pre(display, &irqflags, mmio_flags);
 	__mmio_unclaimed_pre(display, reg, true, mmio_flags);
 
-	intel_de_write_fw(display, reg, val);
+	__intel_de_write_fw(display, reg, val);
 
 	__mmio_unclaimed_post(display, reg, true, mmio_flags);
 	__mmio_lock_post(display, irqflags, mmio_flags);
diff --git a/drivers/gpu/drm/i915/display/intel_de.h b/drivers/gpu/drm/i915/display/intel_de.h
index 310f81edc09d..a6dcb91b36f2 100644
--- a/drivers/gpu/drm/i915/display/intel_de.h
+++ b/drivers/gpu/drm/i915/display/intel_de.h
@@ -8,8 +8,6 @@
 
 #include "intel_display_core.h"
 #include "intel_dsb.h"
-#include "intel_uncore.h"
-#include "intel_uncore_trace.h"
 
 struct intel_mmio_funcs {
 	u32 (*read)(struct intel_display *display, intel_reg_t reg);
@@ -17,11 +15,6 @@ struct intel_mmio_funcs {
 	bool (*check_for_unclaimed_mmio)(struct intel_display *display);
 };
 
-static inline struct intel_uncore *__to_uncore(struct intel_display *display)
-{
-	return display->mmio.uncore;
-}
-
 void intel_de_init(struct intel_display *display);
 bool intel_de_unclaimed_mmio_detected(struct intel_display *display);
 bool intel_de_arm_unclaimed_mmio_detection(struct intel_display *display);
@@ -101,23 +94,8 @@ int intel_de_wait_for_clear_ms(struct intel_display *display, intel_reg_t reg,
  * therefore generally be serialised, by either the dev_priv->uncore.lock or
  * a more localised lock guarding all access to that bank of registers.
  */
-static inline u32
-intel_de_read_fw(struct intel_display *display, intel_reg_t reg)
-{
-	u32 val;
-
-	val = intel_uncore_read_fw(__to_uncore(display), reg);
-	trace_i915_reg_rw(false, reg, val, sizeof(val), true);
-
-	return val;
-}
-
-static inline void
-intel_de_write_fw(struct intel_display *display, intel_reg_t reg, u32 val)
-{
-	trace_i915_reg_rw(true, reg, val, sizeof(val), true);
-	intel_uncore_write_fw(__to_uncore(display), reg, val);
-}
+u32 intel_de_read_fw(struct intel_display *display, intel_reg_t reg);
+void intel_de_write_fw(struct intel_display *display, intel_reg_t reg, u32 val);
 
 static inline u32
 intel_de_rmw_fw(struct intel_display *display, intel_reg_t reg, u32 clear, u32 set)
-- 
2.56.0


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

* [PATCH 2/8] drm/i915/de: Pimp the intel_de_{read,write}_fw() docs
  2026-11-13 13:43 [PATCH 0/8] drm/{i915, xe}: Make unclaimed mmio detection lockless and enable it for xe Ville Syrjala
  2026-11-13 13:43 ` [PATCH 1/8] drm/i915/de: Uninline intel_de_{read,write}_fw() Ville Syrjala
@ 2026-11-13 13:43 ` Ville Syrjala
  2026-11-13 14:12   ` [PATCH 2/8] drm/i915/de: Pimp the intel_de_{read, write}_fw() docs Jani Nikula
  2026-11-13 13:43 ` [PATCH 3/8] drm/i915/de: Flatten the unclaimed mmio code Ville Syrjala
                   ` (9 subsequent siblings)
  11 siblings, 1 reply; 19+ messages in thread
From: Ville Syrjala @ 2026-11-13 13:43 UTC (permalink / raw)
  To: intel-gfx; +Cc: intel-xe

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

Include a bit more guidance on when to use or not use
intel_de_{read,write}_fw(), and what the extra caveats
are.

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

diff --git a/drivers/gpu/drm/i915/display/intel_de.h b/drivers/gpu/drm/i915/display/intel_de.h
index a6dcb91b36f2..2c469a2d6a20 100644
--- a/drivers/gpu/drm/i915/display/intel_de.h
+++ b/drivers/gpu/drm/i915/display/intel_de.h
@@ -87,12 +87,19 @@ int intel_de_wait_for_clear_ms(struct intel_display *display, intel_reg_t reg,
 			       u32 mask, unsigned int timeout_ms);
 
 /*
- * Unlocked mmio-accessors, think carefully before using these.
+ * Unlocked mmio-accessors, think carefully before using these. Generally only
+ * highly performance sensitive code should use these (eg. vblank evade critical
+ * section, or interrupt handlers).
  *
  * Certain architectures will die if the same cacheline is concurrently accessed
- * by different clients (e.g. on Ivybridge). Access to registers should
- * therefore generally be serialised, by either the dev_priv->uncore.lock or
+ * by different clients (e.g. on Ivybridge/Haswell). Access to registers should
+ * therefore generally be serialised, by either the display->mmio.lock or
  * a more localised lock guarding all access to that bank of registers.
+ *
+ * DMC wakelock will not be taken by these. It must be done manually,
+ * if needed.
+ *
+ * These will also skip the mmio_debug unclaimed register detection.
  */
 u32 intel_de_read_fw(struct intel_display *display, intel_reg_t reg);
 void intel_de_write_fw(struct intel_display *display, intel_reg_t reg, u32 val);
-- 
2.56.0


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

* [PATCH 3/8] drm/i915/de: Flatten the unclaimed mmio code
  2026-11-13 13:43 [PATCH 0/8] drm/{i915, xe}: Make unclaimed mmio detection lockless and enable it for xe Ville Syrjala
  2026-11-13 13:43 ` [PATCH 1/8] drm/i915/de: Uninline intel_de_{read,write}_fw() Ville Syrjala
  2026-11-13 13:43 ` [PATCH 2/8] drm/i915/de: Pimp the intel_de_{read,write}_fw() docs Ville Syrjala
@ 2026-11-13 13:43 ` Ville Syrjala
  2026-11-13 14:25   ` Jani Nikula
  2026-11-13 13:43 ` [PATCH 4/8] drm/i915/de: Make mmio_debug lockless Ville Syrjala
                   ` (8 subsequent siblings)
  11 siblings, 1 reply; 19+ messages in thread
From: Ville Syrjala @ 2026-11-13 13:43 UTC (permalink / raw)
  To: intel-gfx; +Cc: intel-xe

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

The unclaimed register access code is nested a few
too many levels to my linking in places. Flatten it
all out to make it a bit nicer.

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

diff --git a/drivers/gpu/drm/i915/display/intel_de.c b/drivers/gpu/drm/i915/display/intel_de.c
index 8a94f3f1d3ee..06d91570bee2 100644
--- a/drivers/gpu/drm/i915/display/intel_de.c
+++ b/drivers/gpu/drm/i915/display/intel_de.c
@@ -250,11 +250,13 @@ static void check_unclaimed_mmio_pre(struct intel_display *display,
 	if (!display->params.mmio_debug)
 		return;
 
-	if (display->mmio.funcs->check_for_unclaimed_mmio(display))
-		drm_dbg_kms(display->drm,
-			    "Unclaimed access detected before %s register 0x%x\n",
-			    write ? "write to" : "read from",
-			    i915_mmio_reg_offset(reg));
+	if (!display->mmio.funcs->check_for_unclaimed_mmio(display))
+		return;
+
+	drm_dbg_kms(display->drm,
+		    "Unclaimed access detected before %s register 0x%x\n",
+		    write ? "write to" : "read from",
+		    i915_mmio_reg_offset(reg));
 }
 
 static void check_unclaimed_mmio_post(struct intel_display *display,
@@ -265,13 +267,16 @@ static void check_unclaimed_mmio_post(struct intel_display *display,
 	if (!display->params.mmio_debug)
 		return;
 
-	if (drm_WARN(display->drm,
-		     display->mmio.funcs->check_for_unclaimed_mmio(display),
-		     "Unclaimed %s register 0x%x\n",
-		     write ? "write to" : "read from",
-		     i915_mmio_reg_offset(reg)))
-		/* Only report the first N failures */
-		display->params.mmio_debug--;
+	if (!display->mmio.funcs->check_for_unclaimed_mmio(display))
+		return;
+
+	drm_WARN(display->drm, true,
+		 "Unclaimed %s register 0x%x\n",
+		 write ? "write to" : "read from",
+		 i915_mmio_reg_offset(reg));
+
+	/* Only report the first N failures */
+	display->params.mmio_debug--;
 }
 
 bool intel_de_unclaimed_mmio_detected(struct intel_display *display)
@@ -300,18 +305,20 @@ bool intel_de_arm_unclaimed_mmio_detection(struct intel_display *display)
 	if (display->mmio.unclaimed_mmio_check <= 0)
 		goto out;
 
-	if (display->mmio.funcs->check_for_unclaimed_mmio(display)) {
-		if (!display->params.mmio_debug) {
-			drm_dbg_kms(display->drm,
-				    "Unclaimed register detected, "
-				    "enabling oneshot unclaimed register reporting. "
-				    "Please use i915.mmio_debug=N for more information.\n");
-			display->params.mmio_debug++;
-		}
-		display->mmio.unclaimed_mmio_check--;
-		ret = true;
+	if (!display->mmio.funcs->check_for_unclaimed_mmio(display))
+		goto out;
+
+	if (!display->params.mmio_debug) {
+		drm_dbg_kms(display->drm,
+			    "Unclaimed register detected, "
+			    "enabling oneshot unclaimed register reporting. "
+			    "Please use i915.mmio_debug=N for more information.\n");
+		display->params.mmio_debug++;
 	}
 
+	display->mmio.unclaimed_mmio_check--;
+	ret = true;
+
 out:
 	spin_unlock_irq(&display->mmio.lock);
 
-- 
2.56.0


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

* [PATCH 4/8] drm/i915/de: Make mmio_debug lockless
  2026-11-13 13:43 [PATCH 0/8] drm/{i915, xe}: Make unclaimed mmio detection lockless and enable it for xe Ville Syrjala
                   ` (2 preceding siblings ...)
  2026-11-13 13:43 ` [PATCH 3/8] drm/i915/de: Flatten the unclaimed mmio code Ville Syrjala
@ 2026-11-13 13:43 ` Ville Syrjala
  2026-11-13 16:30   ` Ville Syrjälä
  2026-11-13 13:43 ` [PATCH 5/8] drm/i915/de: Optimize the mmio_debug checks in intel_de_{read, write}() Ville Syrjala
                   ` (7 subsequent siblings)
  11 siblings, 1 reply; 19+ messages in thread
From: Ville Syrjala @ 2026-11-13 13:43 UTC (permalink / raw)
  To: intel-gfx; +Cc: intel-xe

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

Currently we protect the mmio_debug state using mmio.lock.
We can't just drop the locks or we risk the read-modify-writes
to the modparam to get out of whack. But if we get rid of the
read-modify-writes and just switch to simple booleans all
we need are loads and stores which are naturally atomic.

This is of course racy, but quite harmlessly so. Perhaps the
worst thing that can happen is that we mistake which register
caused the unclaimed access, but that can already happen since
we use the completely lockless intel_de_{read,write}_fw() in
many places. And a pair of threads getting a bit confused
about the state of the booleans should also be harmless. Perhaps
we end up doing a few extra unclaimed mmio debug checks while the
first thread is already about to disable the thing. No big deal.

And for good measure, let's annotate the booleans with
READ_ONCE()/WRITE_ONCE() to highlight the lockless nature,
though I don't think we need those for correctness.

With the booleans we do lose the capability to set mmio_debug
to a specific value, and then automagically disable it once
that many unclaimed register accesses have been detected.
With the boolean it's mmio_debug all the time or none of
the time. Not sure if anyone actually used that feature
anyway, so doesn't seem like a big loss to me.

I do want to preserve the oneshot detection thing automagically
armed by intel_de_arm_unclaimed_mmio_detection(). So we need a
second boolean for that.

And the third boolean will be mmio.unclaimed_mmio_check. That
was already effectively a boolean, but still being adjusted
with rmw.

The FPGA_DBG/CLAIM_ER accesses done from the read/write vfuncs
will still be conditionally protected by the mmio.lock, based
on mmio_flags. But the accesses from intel_de_unclaimed_mmio_detected()
and intel_de_arm_unclaimed_mmio_detection() need another
solution. For that I'm just adding another boolean into the
mmio funcs that tells us whether the lock should be taken
there or not. Calls to these functions are exceedingly rare
so no need to come up with any clever solution here.

Note that the modparam will now refuse any non-0/1 value, so
if anyone has left this enabled accidentally the module will
fail to load. But reminding people to turn this off in
production is probably a good thing :P

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 drivers/gpu/drm/i915/Kconfig.debug            |  2 +-
 drivers/gpu/drm/i915/display/intel_de.c       | 58 +++++++++----------
 drivers/gpu/drm/i915/display/intel_de.h       |  1 +
 .../gpu/drm/i915/display/intel_display_core.h |  7 +--
 .../drm/i915/display/intel_display_params.c   |  4 +-
 .../drm/i915/display/intel_display_params.h   |  2 +-
 6 files changed, 34 insertions(+), 40 deletions(-)

diff --git a/drivers/gpu/drm/i915/Kconfig.debug b/drivers/gpu/drm/i915/Kconfig.debug
index dc43dcfbadb6..6a020adc43ee 100644
--- a/drivers/gpu/drm/i915/Kconfig.debug
+++ b/drivers/gpu/drm/i915/Kconfig.debug
@@ -76,7 +76,7 @@ config DRM_I915_DEBUG_MMIO
 	help
 	  By default, always enables the extra sanity checks (extra register
 	  reads) around every mmio (register) access that will slow the system
-	  down. This sets the default value of i915.mmio_debug to -1 and can
+	  down. This sets the default value of i915.mmio_debug to Y and can
 	  be overridden at module load.
 
 	  Recommended for driver developers only.
diff --git a/drivers/gpu/drm/i915/display/intel_de.c b/drivers/gpu/drm/i915/display/intel_de.c
index 06d91570bee2..5a74cf173cb8 100644
--- a/drivers/gpu/drm/i915/display/intel_de.c
+++ b/drivers/gpu/drm/i915/display/intel_de.c
@@ -242,12 +242,16 @@ static bool vlv_check_for_unclaimed_mmio(struct intel_display *display)
 	return true;
 }
 
+static bool mmio_debug_is_enabled(struct intel_display *display)
+{
+	return READ_ONCE(display->params.mmio_debug) ||
+		READ_ONCE(display->mmio.mmio_debug_oneshot);
+}
+
 static void check_unclaimed_mmio_pre(struct intel_display *display,
 				     intel_reg_t reg, bool write)
 {
-	lockdep_assert_held(&display->mmio.lock);
-
-	if (!display->params.mmio_debug)
+	if (!mmio_debug_is_enabled(display))
 		return;
 
 	if (!display->mmio.funcs->check_for_unclaimed_mmio(display))
@@ -262,9 +266,7 @@ static void check_unclaimed_mmio_pre(struct intel_display *display,
 static void check_unclaimed_mmio_post(struct intel_display *display,
 				      intel_reg_t reg, bool write)
 {
-	lockdep_assert_held(&display->mmio.lock);
-
-	if (!display->params.mmio_debug)
+	if (!mmio_debug_is_enabled(display))
 		return;
 
 	if (!display->mmio.funcs->check_for_unclaimed_mmio(display))
@@ -275,8 +277,7 @@ static void check_unclaimed_mmio_post(struct intel_display *display,
 		 write ? "write to" : "read from",
 		 i915_mmio_reg_offset(reg));
 
-	/* Only report the first N failures */
-	display->params.mmio_debug--;
+	WRITE_ONCE(display->mmio.mmio_debug_oneshot, false);
 }
 
 bool intel_de_unclaimed_mmio_detected(struct intel_display *display)
@@ -286,43 +287,36 @@ bool intel_de_unclaimed_mmio_detected(struct intel_display *display)
 	if (!display->mmio.funcs->check_for_unclaimed_mmio)
 		return false;
 
-	spin_lock_irq(&display->mmio.lock);
-	ret = display->mmio.funcs->check_for_unclaimed_mmio(display);
-	spin_unlock_irq(&display->mmio.lock);
+	if (display->mmio.funcs->check_for_unclaimed_mmio_needs_lock) {
+		spin_lock_irq(&display->mmio.lock);
+		ret = display->mmio.funcs->check_for_unclaimed_mmio(display);
+		spin_unlock_irq(&display->mmio.lock);
+	} else {
+		ret = display->mmio.funcs->check_for_unclaimed_mmio(display);
+	}
 
 	return ret;
 }
 
 bool intel_de_arm_unclaimed_mmio_detection(struct intel_display *display)
 {
-	bool ret = false;
-
-	if (!display->mmio.funcs->check_for_unclaimed_mmio)
+	if (!READ_ONCE(display->mmio.unclaimed_mmio_check))
 		return false;
 
-	spin_lock_irq(&display->mmio.lock);
-
-	if (display->mmio.unclaimed_mmio_check <= 0)
-		goto out;
-
-	if (!display->mmio.funcs->check_for_unclaimed_mmio(display))
-		goto out;
+	if (!intel_de_unclaimed_mmio_detected(display))
+		return false;
 
-	if (!display->params.mmio_debug) {
+	if (!READ_ONCE(display->params.mmio_debug)) {
 		drm_dbg_kms(display->drm,
 			    "Unclaimed register detected, "
 			    "enabling oneshot unclaimed register reporting. "
-			    "Please use i915.mmio_debug=N for more information.\n");
-		display->params.mmio_debug++;
+			    "Please use i915.mmio_debug=Y for more information.\n");
+		WRITE_ONCE(display->mmio.mmio_debug_oneshot, true);
 	}
 
-	display->mmio.unclaimed_mmio_check--;
-	ret = true;
+	WRITE_ONCE(display->mmio.unclaimed_mmio_check, false);
 
-out:
-	spin_unlock_irq(&display->mmio.lock);
-
-	return ret;
+	return true;
 }
 
 #define __MMIO_WAKELOCK		BIT(0)
@@ -474,12 +468,14 @@ static const struct intel_mmio_funcs hsw_mmio_funcs = {
 	.read = hsw_mmio_read,
 	.write = hsw_mmio_write,
 	.check_for_unclaimed_mmio = hsw_check_for_unclaimed_mmio,
+	.check_for_unclaimed_mmio_needs_lock = true,
 };
 
 static const struct intel_mmio_funcs vlv_mmio_funcs = {
 	.read = hsw_mmio_read,
 	.write = hsw_mmio_write,
 	.check_for_unclaimed_mmio = vlv_check_for_unclaimed_mmio,
+	.check_for_unclaimed_mmio_needs_lock = true,
 };
 
 #define LNL_MMIO_FLAGS __MMIO_WAKELOCK
@@ -539,7 +535,7 @@ void intel_de_init(struct intel_display *display)
 	}
 
 	if (display->mmio.funcs->check_for_unclaimed_mmio)
-		display->mmio.unclaimed_mmio_check = 1;
+		WRITE_ONCE(display->mmio.unclaimed_mmio_check, true);
 
 	/* clear out unclaimed reg detection bit someone else left behind */
 	if (intel_de_unclaimed_mmio_detected(display))
diff --git a/drivers/gpu/drm/i915/display/intel_de.h b/drivers/gpu/drm/i915/display/intel_de.h
index 2c469a2d6a20..cbf44975dced 100644
--- a/drivers/gpu/drm/i915/display/intel_de.h
+++ b/drivers/gpu/drm/i915/display/intel_de.h
@@ -13,6 +13,7 @@ struct intel_mmio_funcs {
 	u32 (*read)(struct intel_display *display, intel_reg_t reg);
 	void (*write)(struct intel_display *display, intel_reg_t reg, u32 val);
 	bool (*check_for_unclaimed_mmio)(struct intel_display *display);
+	bool check_for_unclaimed_mmio_needs_lock;
 };
 
 void intel_de_init(struct intel_display *display);
diff --git a/drivers/gpu/drm/i915/display/intel_display_core.h b/drivers/gpu/drm/i915/display/intel_display_core.h
index d68ecc19b8a8..92a3ce4247b1 100644
--- a/drivers/gpu/drm/i915/display/intel_display_core.h
+++ b/drivers/gpu/drm/i915/display/intel_display_core.h
@@ -539,17 +539,14 @@ struct intel_display {
 		 * serializes all display register accesses done
 		 * using intel_de_{read,write}(), but not those
 		 * done using intel_de_{read,write}_fw().
-		 *
-		 * The lock also protects mmio.unclaimed_mmio_check
-		 * and read-modify-write of display->params.mmio_debug.
 		 */
 		spinlock_t lock;
 
 		struct intel_uncore *uncore;
 		const struct intel_mmio_funcs *funcs;
 
-		/* protected by mmio.lock */
-		int unclaimed_mmio_check;
+		bool mmio_debug_oneshot;
+		bool unclaimed_mmio_check;
 	} mmio;
 
 	struct {
diff --git a/drivers/gpu/drm/i915/display/intel_display_params.c b/drivers/gpu/drm/i915/display/intel_display_params.c
index ace3081461de..7ef974861c8e 100644
--- a/drivers/gpu/drm/i915/display/intel_display_params.c
+++ b/drivers/gpu/drm/i915/display/intel_display_params.c
@@ -143,8 +143,8 @@ intel_display_param_named_unsafe(enable_dmc_wl, int, 0400,
 	"(-1=use per-chip default, 0=disabled, 1=enabled, 2=match any register, 3=always locked) "
 	"Default: -1");
 
-intel_display_param_named(mmio_debug, int, 0400,
-	"Enable the MMIO debug code for the first N failures (default: off). "
+intel_display_param_named(mmio_debug, bool, 0400,
+	"Enable MMIO debug code (default: false). "
 	"This may negatively affect performance.");
 
 __maybe_unused
diff --git a/drivers/gpu/drm/i915/display/intel_display_params.h b/drivers/gpu/drm/i915/display/intel_display_params.h
index bcbca95318d6..f6b9c294840c 100644
--- a/drivers/gpu/drm/i915/display/intel_display_params.h
+++ b/drivers/gpu/drm/i915/display/intel_display_params.h
@@ -51,7 +51,7 @@ struct drm_printer;
 	param(bool, psr_safest_params, false, 0400) \
 	param(bool, enable_psr2_sel_fetch, true, 0400) \
 	param(int, enable_dmc_wl, -1, 0400) \
-	param(int, mmio_debug, -IS_ENABLED(CONFIG_DRM_I915_DEBUG_MMIO), 0600) \
+	param(bool, mmio_debug, IS_ENABLED(CONFIG_DRM_I915_DEBUG_MMIO), 0600) \
 	/*
 	 * Debugfs-only knob (per-device): no matching module_param is registered
 	 * in intel_display_params.c on purpose. Runtime-toggle via debugfs.
-- 
2.56.0


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

* [PATCH 5/8] drm/i915/de: Optimize the mmio_debug checks in intel_de_{read, write}()
  2026-11-13 13:43 [PATCH 0/8] drm/{i915, xe}: Make unclaimed mmio detection lockless and enable it for xe Ville Syrjala
                   ` (3 preceding siblings ...)
  2026-11-13 13:43 ` [PATCH 4/8] drm/i915/de: Make mmio_debug lockless Ville Syrjala
@ 2026-11-13 13:43 ` Ville Syrjala
  2026-11-13 13:43 ` [PATCH 6/8] drm/i915/de: Make display registers unlocked for TGL+ on i915 Ville Syrjala
                   ` (6 subsequent siblings)
  11 siblings, 0 replies; 19+ messages in thread
From: Ville Syrjala @ 2026-11-13 13:43 UTC (permalink / raw)
  To: intel-gfx; +Cc: intel-xe

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

Currently we do the "is mmio_debug enabled?" check from
the non-inlined check_unclaimed_mmio_{pre,post}(). That means
we pay for two extra function calls for every register access
even when mmio_debug is disabled.

Inline the checks into the actual intel_de_{read,write}() to
avoid the pointless overhead. We have to hand hold the compiler
a bit (by using a bitwise OR instead of logical OR) or else
it'll emit a separate branch for each boolean.

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

diff --git a/drivers/gpu/drm/i915/display/intel_de.c b/drivers/gpu/drm/i915/display/intel_de.c
index 5a74cf173cb8..81fd1569bb65 100644
--- a/drivers/gpu/drm/i915/display/intel_de.c
+++ b/drivers/gpu/drm/i915/display/intel_de.c
@@ -242,18 +242,9 @@ static bool vlv_check_for_unclaimed_mmio(struct intel_display *display)
 	return true;
 }
 
-static bool mmio_debug_is_enabled(struct intel_display *display)
-{
-	return READ_ONCE(display->params.mmio_debug) ||
-		READ_ONCE(display->mmio.mmio_debug_oneshot);
-}
-
 static void check_unclaimed_mmio_pre(struct intel_display *display,
 				     intel_reg_t reg, bool write)
 {
-	if (!mmio_debug_is_enabled(display))
-		return;
-
 	if (!display->mmio.funcs->check_for_unclaimed_mmio(display))
 		return;
 
@@ -266,9 +257,6 @@ static void check_unclaimed_mmio_pre(struct intel_display *display,
 static void check_unclaimed_mmio_post(struct intel_display *display,
 				      intel_reg_t reg, bool write)
 {
-	if (!mmio_debug_is_enabled(display))
-		return;
-
 	if (!display->mmio.funcs->check_for_unclaimed_mmio(display))
 		return;
 
@@ -355,19 +343,29 @@ __mmio_lock_post(struct intel_display *display, unsigned long irqflags,
 		spin_unlock_irqrestore(&display->mmio.lock, irqflags);
 }
 
+static __always_inline bool
+__mmio_debug_is_enabled(struct intel_display *display)
+{
+	/* with || gcc emits two branches for this */
+	return unlikely(READ_ONCE(display->params.mmio_debug) |
+			READ_ONCE(display->mmio.mmio_debug_oneshot));
+}
+
 static __always_inline void
 __mmio_unclaimed_pre(struct intel_display *display, intel_reg_t reg,
-		     const bool write, const unsigned int mmio_flags)
+		     const bool write, const bool mmio_debug_is_enabled,
+		     const unsigned int mmio_flags)
 {
-	if (mmio_flags & __MMIO_UNCLAIMED)
+	if (mmio_flags & __MMIO_UNCLAIMED && mmio_debug_is_enabled)
 		check_unclaimed_mmio_pre(display, reg, write);
 }
 
 static __always_inline void
 __mmio_unclaimed_post(struct intel_display *display, intel_reg_t reg,
-		      const bool write, const unsigned int mmio_flags)
+		      const bool write, const bool mmio_debug_is_enabled,
+		      const unsigned int mmio_flags)
 {
-	if (mmio_flags & __MMIO_UNCLAIMED)
+	if (mmio_flags & __MMIO_UNCLAIMED && mmio_debug_is_enabled)
 		check_unclaimed_mmio_post(display, reg, write);
 }
 
@@ -375,6 +373,7 @@ static __always_inline u32
 __intel_de_read(struct intel_display *display, intel_reg_t reg,
 		const unsigned int mmio_flags)
 {
+	const bool mmio_debug_is_enabled = __mmio_debug_is_enabled(display);
 	unsigned long irqflags;
 	u32 val;
 
@@ -382,11 +381,13 @@ __intel_de_read(struct intel_display *display, intel_reg_t reg,
 
 	__mmio_wakelock_pre(display, reg, mmio_flags);
 	__mmio_lock_pre(display, &irqflags, mmio_flags);
-	__mmio_unclaimed_pre(display, reg, false, mmio_flags);
+	__mmio_unclaimed_pre(display, reg, false,
+			     mmio_debug_is_enabled, mmio_flags);
 
 	val = __intel_de_read_fw(display, reg);
 
-	__mmio_unclaimed_post(display, reg, false, mmio_flags);
+	__mmio_unclaimed_post(display, reg, false,
+			      mmio_debug_is_enabled, mmio_flags);
 	__mmio_lock_post(display, irqflags, mmio_flags);
 	__mmio_wakelock_post(display, reg, mmio_flags);
 
@@ -397,17 +398,20 @@ static __always_inline void
 __intel_de_write(struct intel_display *display, intel_reg_t reg, u32 val,
 		 const unsigned int mmio_flags)
 {
+	const bool mmio_debug_is_enabled = __mmio_debug_is_enabled(display);
 	unsigned long irqflags;
 
 	assert_display_rpm_held(display);
 
 	__mmio_wakelock_pre(display, reg, mmio_flags);
 	__mmio_lock_pre(display, &irqflags, mmio_flags);
-	__mmio_unclaimed_pre(display, reg, true, mmio_flags);
+	__mmio_unclaimed_pre(display, reg, true,
+			     mmio_debug_is_enabled, mmio_flags);
 
 	__intel_de_write_fw(display, reg, val);
 
-	__mmio_unclaimed_post(display, reg, true, mmio_flags);
+	__mmio_unclaimed_post(display, reg, true,
+			      mmio_debug_is_enabled, mmio_flags);
 	__mmio_lock_post(display, irqflags, mmio_flags);
 	__mmio_wakelock_post(display, reg, mmio_flags);
 }
-- 
2.56.0


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

* [PATCH 6/8] drm/i915/de: Make display registers unlocked for TGL+ on i915
  2026-11-13 13:43 [PATCH 0/8] drm/{i915, xe}: Make unclaimed mmio detection lockless and enable it for xe Ville Syrjala
                   ` (4 preceding siblings ...)
  2026-11-13 13:43 ` [PATCH 5/8] drm/i915/de: Optimize the mmio_debug checks in intel_de_{read, write}() Ville Syrjala
@ 2026-11-13 13:43 ` Ville Syrjala
  2026-11-13 13:43 ` [PATCH 7/8] drm/xe: Enable unclaimed register detection on xe Ville Syrjala
                   ` (5 subsequent siblings)
  11 siblings, 0 replies; 19+ messages in thread
From: Ville Syrjala @ 2026-11-13 13:43 UTC (permalink / raw)
  To: intel-gfx; +Cc: intel-xe

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

Now that the unclaimed register detection should survive
without the lock there should be no reason to use the lock
on most platforms.

Start by weaning TGL+ off the lock. Since some people have
been using the (lockless) xe driver on TGL/etc. it should
be fairly well established that serializing all register
accesses is not needed on these platforms.

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

diff --git a/drivers/gpu/drm/i915/display/intel_de.c b/drivers/gpu/drm/i915/display/intel_de.c
index 81fd1569bb65..9e2f6ce0ff7e 100644
--- a/drivers/gpu/drm/i915/display/intel_de.c
+++ b/drivers/gpu/drm/i915/display/intel_de.c
@@ -482,6 +482,26 @@ static const struct intel_mmio_funcs vlv_mmio_funcs = {
 	.check_for_unclaimed_mmio_needs_lock = true,
 };
 
+#define TGL_MMIO_FLAGS __MMIO_UNCLAIMED
+
+static u32 tgl_mmio_read(struct intel_display *display, intel_reg_t reg)
+{
+	return __intel_de_read(display, reg, TGL_MMIO_FLAGS);
+}
+
+static void tgl_mmio_write(struct intel_display *display, intel_reg_t reg, u32 val)
+{
+	__intel_de_write(display, reg, val, TGL_MMIO_FLAGS);
+}
+
+#undef TGL_MMIO_FLAGS
+
+static const struct intel_mmio_funcs tgl_mmio_funcs = {
+	.read = tgl_mmio_read,
+	.write = tgl_mmio_write,
+	.check_for_unclaimed_mmio = hsw_check_for_unclaimed_mmio,
+};
+
 #define LNL_MMIO_FLAGS __MMIO_WAKELOCK
 
 static u32 lnl_mmio_read(struct intel_display *display, intel_reg_t reg)
@@ -522,8 +542,10 @@ void intel_de_init(struct intel_display *display)
 	 * rid of driver_is_i915().
 	 */
 	if (driver_is_i915()) {
-		if (DISPLAY_VER(display) >= 9 ||
-		    display->platform.broadwell || display->platform.haswell)
+		if (DISPLAY_VER(display) >= 12)
+			display->mmio.funcs = &tgl_mmio_funcs;
+		else if (DISPLAY_VER(display) >= 9 ||
+			 display->platform.broadwell || display->platform.haswell)
 			display->mmio.funcs = &hsw_mmio_funcs;
 		else if (display->platform.valleyview || display->platform.cherryview)
 			display->mmio.funcs = &vlv_mmio_funcs;
-- 
2.56.0


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

* [PATCH 7/8] drm/xe: Enable unclaimed register detection on xe
  2026-11-13 13:43 [PATCH 0/8] drm/{i915, xe}: Make unclaimed mmio detection lockless and enable it for xe Ville Syrjala
                   ` (5 preceding siblings ...)
  2026-11-13 13:43 ` [PATCH 6/8] drm/i915/de: Make display registers unlocked for TGL+ on i915 Ville Syrjala
@ 2026-11-13 13:43 ` Ville Syrjala
  2026-11-13 13:43 ` [PATCH 8/8] drm/i915/de: Nuke driver_is_i915() Ville Syrjala
                   ` (4 subsequent siblings)
  11 siblings, 0 replies; 19+ messages in thread
From: Ville Syrjala @ 2026-11-13 13:43 UTC (permalink / raw)
  To: intel-gfx; +Cc: intel-xe

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

Now that the unclaimed register detection code no longer relies
on the lock we can enable it on xe, without bringing the lock
along for the ride.

xe only supports TGL+ class hardware, so that's all we have
to care about here.

Note that mmio is hideously expensive on all MTL+ systems, and
enabling mmio_debug on will make it worse due to all the extra
FPGA_DBG reads. But during development/testing it can be a very
useful tool.

One weird thing here is that the default value for the modparam
still comes from i915's CONFIG_DRM_I915_DEBUG_MMIO. So xe will
only get the modparam turned on by default if i915 is also
included in the build.

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

diff --git a/drivers/gpu/drm/i915/display/intel_de.c b/drivers/gpu/drm/i915/display/intel_de.c
index 9e2f6ce0ff7e..9399db0d8e1b 100644
--- a/drivers/gpu/drm/i915/display/intel_de.c
+++ b/drivers/gpu/drm/i915/display/intel_de.c
@@ -502,7 +502,7 @@ static const struct intel_mmio_funcs tgl_mmio_funcs = {
 	.check_for_unclaimed_mmio = hsw_check_for_unclaimed_mmio,
 };
 
-#define LNL_MMIO_FLAGS __MMIO_WAKELOCK
+#define LNL_MMIO_FLAGS (__MMIO_WAKELOCK | __MMIO_UNCLAIMED)
 
 static u32 lnl_mmio_read(struct intel_display *display, intel_reg_t reg)
 {
@@ -519,6 +519,7 @@ static void lnl_mmio_write(struct intel_display *display, intel_reg_t reg, u32 v
 static const struct intel_mmio_funcs lnl_mmio_funcs = {
 	.read = lnl_mmio_read,
 	.write = lnl_mmio_write,
+	.check_for_unclaimed_mmio = hsw_check_for_unclaimed_mmio,
 };
 
 static bool driver_is_i915(void)
@@ -557,7 +558,7 @@ void intel_de_init(struct intel_display *display)
 		if (DISPLAY_VER(display) >= 20)
 			display->mmio.funcs = &lnl_mmio_funcs;
 		else
-			display->mmio.funcs = &i9xx_mmio_funcs;
+			display->mmio.funcs = &tgl_mmio_funcs;
 	}
 
 	if (display->mmio.funcs->check_for_unclaimed_mmio)
-- 
2.56.0


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

* [PATCH 8/8] drm/i915/de: Nuke driver_is_i915()
  2026-11-13 13:43 [PATCH 0/8] drm/{i915, xe}: Make unclaimed mmio detection lockless and enable it for xe Ville Syrjala
                   ` (6 preceding siblings ...)
  2026-11-13 13:43 ` [PATCH 7/8] drm/xe: Enable unclaimed register detection on xe Ville Syrjala
@ 2026-11-13 13:43 ` Ville Syrjala
  2026-11-13 14:33 ` ✗ CI.checkpatch: warning for drm/{i915, xe}: Make unclaimed mmio detection lockless and enable it for xe Patchwork
                   ` (3 subsequent siblings)
  11 siblings, 0 replies; 19+ messages in thread
From: Ville Syrjala @ 2026-11-13 13:43 UTC (permalink / raw)
  To: intel-gfx; +Cc: intel-xe

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

Now that both i915 and xe use the same mmio funcs for
TGL+ we can unify the intel_de_init() if-ladders for
the two drivers and get rid of driver_is_i915().

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

diff --git a/drivers/gpu/drm/i915/display/intel_de.c b/drivers/gpu/drm/i915/display/intel_de.c
index 9399db0d8e1b..3a8ee5141fdd 100644
--- a/drivers/gpu/drm/i915/display/intel_de.c
+++ b/drivers/gpu/drm/i915/display/intel_de.c
@@ -522,44 +522,25 @@ static const struct intel_mmio_funcs lnl_mmio_funcs = {
 	.check_for_unclaimed_mmio = hsw_check_for_unclaimed_mmio,
 };
 
-static bool driver_is_i915(void)
-{
-#ifdef I915
-	return true;
-#else
-	return false;
-#endif
-}
-
 void intel_de_init(struct intel_display *display)
 {
 	display->mmio.uncore = to_intel_uncore(display->drm);
 
 	spin_lock_init(&display->mmio.lock);
 
-	/*
-	 * TODO: enable unclaimed register detection
-	 * (ideally without the lock) for xe and get
-	 * rid of driver_is_i915().
-	 */
-	if (driver_is_i915()) {
-		if (DISPLAY_VER(display) >= 12)
-			display->mmio.funcs = &tgl_mmio_funcs;
-		else if (DISPLAY_VER(display) >= 9 ||
-			 display->platform.broadwell || display->platform.haswell)
-			display->mmio.funcs = &hsw_mmio_funcs;
-		else if (display->platform.valleyview || display->platform.cherryview)
-			display->mmio.funcs = &vlv_mmio_funcs;
-		else if (DISPLAY_VER(display) >= 6)
-			display->mmio.funcs = &snb_mmio_funcs;
-		else
-			display->mmio.funcs = &i9xx_mmio_funcs;
-	} else {
-		if (DISPLAY_VER(display) >= 20)
-			display->mmio.funcs = &lnl_mmio_funcs;
-		else
-			display->mmio.funcs = &tgl_mmio_funcs;
-	}
+	if (DISPLAY_VER(display) >= 20)
+		display->mmio.funcs = &lnl_mmio_funcs;
+	else if (DISPLAY_VER(display) >= 12)
+		display->mmio.funcs = &tgl_mmio_funcs;
+	else if (DISPLAY_VER(display) >= 9 ||
+		 display->platform.broadwell || display->platform.haswell)
+		display->mmio.funcs = &hsw_mmio_funcs;
+	else if (display->platform.valleyview || display->platform.cherryview)
+		display->mmio.funcs = &vlv_mmio_funcs;
+	else if (DISPLAY_VER(display) >= 6)
+		display->mmio.funcs = &snb_mmio_funcs;
+	else
+		display->mmio.funcs = &i9xx_mmio_funcs;
 
 	if (display->mmio.funcs->check_for_unclaimed_mmio)
 		WRITE_ONCE(display->mmio.unclaimed_mmio_check, true);
-- 
2.56.0


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

* Re: [PATCH 1/8] drm/i915/de: Uninline intel_de_{read,write}_fw()
  2026-11-13 13:43 ` [PATCH 1/8] drm/i915/de: Uninline intel_de_{read,write}_fw() Ville Syrjala
@ 2026-11-13 14:11   ` Jani Nikula
  0 siblings, 0 replies; 19+ messages in thread
From: Jani Nikula @ 2026-11-13 14:11 UTC (permalink / raw)
  To: Ville Syrjala, intel-gfx; +Cc: intel-xe

On Fri, 13 Nov 2026, Ville Syrjala <ville.syrjala@linux.intel.com> wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> One might think that inlining intel_de_{read,write}_fw() would
> be a good idea for performance reasons, and if these were just
> the raw readl()/writel() then that would be true. But they
> also contain the tracepoint, which actually translates to
> surprising amount of code. The register accessors are used in
> so many places that the extra code really adds up.
>
> So making these non-inline functions seems like the better
> choice here. This also lets the compiler again combine the
> dsb vs. not branches from multiple back to back
> intel_de_write_dsb() calls into a single branch. The
> inlined tracepoint bloated the code so much that the
> compiler generally just gave up on that, emitting funkier
> code as a result.
>
> I do want the inline versions inside intel_de.c to keep
> the overhead minimal inside the vfuncs. gcc refuses to
> inline any of these on its own for whatever reason.
>
> Note that for xe we are now doing two function calls for
> each of these since xe_mmio_{read,write}32() are also real
> non-inline functions. But once we get rid of the uncore
> stuff completely xe will again lose the second level of
> function calls.
>
> This shrinks the final i915.ko by 800 KiB without lockdep,
> and 1200 KiB with lockdep enabled.
>
> bloat-o-meter highlights:
> add/remove: 25/34 grow/shrink: 30/150 up/down: 208667/-253907 (-45240)
> Function                                     old     new   delta
> ...
> do_gmbus_xfer                               2342    1392    -950
> skl_write_plane_wm                          2199    1212    -987
> skl_plane_update_arm                        1997     976   -1021
> ilk_update_pipe_csc                         1752     723   -1029
> i9xx_plane_update_arm                       1670     621   -1049
> chv_load_luts                               2043     912   -1131
> vlv_atomic_update_fifo                      2177     895   -1282
> icl_color_commit_noarm                      2329     931   -1398
> g4x_sprite_update_arm                       2138     737   -1401
> ilk_read_pipe_csc                           1807     337   -1470
> icl_read_csc                                1987     439   -1548
> ivb_sprite_update_arm                       2324     730   -1594
> i9xx_cursor_update_arm                      4513    2817   -1696
> gen8_de_irq_handler                         5037    2816   -2221
> vlv_sprite_update_arm                       4627    1225   -3402
> icl_plane_update_noarm                      7885    3143   -4742
> Total: Before=39595300, After=39550060, chg -0.11%
>
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>

Wow.

This just reaffirms my belief that (non-trivial) static inlines should
generally be based on more than a gut feeling, erring on the side of
non-inlined regular functions if there's no evidence to the contrary.

Dunno if we should have a comment about the __always_inlines, *shrug*.

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

> ---
>  drivers/gpu/drm/i915/display/intel_de.c | 47 +++++++++++++++++++++----
>  drivers/gpu/drm/i915/display/intel_de.h | 26 ++------------
>  2 files changed, 43 insertions(+), 30 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_de.c b/drivers/gpu/drm/i915/display/intel_de.c
> index 9ca5b27eb768..8a94f3f1d3ee 100644
> --- a/drivers/gpu/drm/i915/display/intel_de.c
> +++ b/drivers/gpu/drm/i915/display/intel_de.c
> @@ -10,6 +10,13 @@
>  #include "intel_de.h"
>  #include "intel_display_regs.h"
>  #include "intel_display_rpm.h"
> +#include "intel_uncore.h"
> +#include "intel_uncore_trace.h"
> +
> +static inline struct intel_uncore *__to_uncore(struct intel_display *display)
> +{
> +	return display->mmio.uncore;
> +}
>  
>  static int intel_de_wait_for_register(struct intel_display *display,
>  				      intel_reg_t reg, u32 mask, u32 value,
> @@ -165,11 +172,39 @@ u16 intel_de_read16(struct intel_display *display, intel_reg_t reg)
>  	return intel_uncore_read16(__to_uncore(display), reg);
>  }
>  
> +static __always_inline u32
> +__intel_de_read_fw(struct intel_display *display, intel_reg_t reg)
> +{
> +	u32 val;
> +
> +	val = intel_uncore_read_fw(__to_uncore(display), reg);
> +	trace_i915_reg_rw(false, reg, val, sizeof(val), true);
> +
> +	return val;
> +}
> +
> +static __always_inline void
> +__intel_de_write_fw(struct intel_display *display, intel_reg_t reg, u32 val)
> +{
> +	trace_i915_reg_rw(true, reg, val, sizeof(val), true);
> +	intel_uncore_write_fw(__to_uncore(display), reg, val);
> +}
> +
> +u32 intel_de_read_fw(struct intel_display *display, intel_reg_t reg)
> +{
> +	return __intel_de_read_fw(display, reg);
> +}
> +
> +void intel_de_write_fw(struct intel_display *display, intel_reg_t reg, u32 val)
> +{
> +	__intel_de_write_fw(display, reg, val);
> +}
> +
>  static bool hsw_check_for_unclaimed_mmio(struct intel_display *display)
>  {
>  	u32 dbg;
>  
> -	dbg = intel_de_read_fw(display, FPGA_DBG);
> +	dbg = __intel_de_read_fw(display, FPGA_DBG);
>  	if (likely(!(dbg & FPGA_DBG_RM_NOCLAIM)))
>  		return false;
>  
> @@ -189,7 +224,7 @@ static bool hsw_check_for_unclaimed_mmio(struct intel_display *display)
>  		drm_err(display->drm,
>  			"Lost access to MMIO BAR; all registers now read back as 0xFFFFFFFF!\n");
>  
> -	intel_de_write_fw(display, FPGA_DBG, FPGA_DBG_RM_NOCLAIM);
> +	__intel_de_write_fw(display, FPGA_DBG, FPGA_DBG_RM_NOCLAIM);
>  
>  	return true;
>  }
> @@ -198,11 +233,11 @@ static bool vlv_check_for_unclaimed_mmio(struct intel_display *display)
>  {
>  	u32 cer;
>  
> -	cer = intel_de_read_fw(display, CLAIM_ER);
> +	cer = __intel_de_read_fw(display, CLAIM_ER);
>  	if (likely(!(cer & (CLAIM_ER_OVERFLOW | CLAIM_ER_CTR_MASK))))
>  		return false;
>  
> -	intel_de_write_fw(display, CLAIM_ER, CLAIM_ER_CLR);
> +	__intel_de_write_fw(display, CLAIM_ER, CLAIM_ER_CLR);
>  
>  	return true;
>  }
> @@ -348,7 +383,7 @@ __intel_de_read(struct intel_display *display, intel_reg_t reg,
>  	__mmio_lock_pre(display, &irqflags, mmio_flags);
>  	__mmio_unclaimed_pre(display, reg, false, mmio_flags);
>  
> -	val = intel_de_read_fw(display, reg);
> +	val = __intel_de_read_fw(display, reg);
>  
>  	__mmio_unclaimed_post(display, reg, false, mmio_flags);
>  	__mmio_lock_post(display, irqflags, mmio_flags);
> @@ -369,7 +404,7 @@ __intel_de_write(struct intel_display *display, intel_reg_t reg, u32 val,
>  	__mmio_lock_pre(display, &irqflags, mmio_flags);
>  	__mmio_unclaimed_pre(display, reg, true, mmio_flags);
>  
> -	intel_de_write_fw(display, reg, val);
> +	__intel_de_write_fw(display, reg, val);
>  
>  	__mmio_unclaimed_post(display, reg, true, mmio_flags);
>  	__mmio_lock_post(display, irqflags, mmio_flags);
> diff --git a/drivers/gpu/drm/i915/display/intel_de.h b/drivers/gpu/drm/i915/display/intel_de.h
> index 310f81edc09d..a6dcb91b36f2 100644
> --- a/drivers/gpu/drm/i915/display/intel_de.h
> +++ b/drivers/gpu/drm/i915/display/intel_de.h
> @@ -8,8 +8,6 @@
>  
>  #include "intel_display_core.h"
>  #include "intel_dsb.h"
> -#include "intel_uncore.h"
> -#include "intel_uncore_trace.h"
>  
>  struct intel_mmio_funcs {
>  	u32 (*read)(struct intel_display *display, intel_reg_t reg);
> @@ -17,11 +15,6 @@ struct intel_mmio_funcs {
>  	bool (*check_for_unclaimed_mmio)(struct intel_display *display);
>  };
>  
> -static inline struct intel_uncore *__to_uncore(struct intel_display *display)
> -{
> -	return display->mmio.uncore;
> -}
> -
>  void intel_de_init(struct intel_display *display);
>  bool intel_de_unclaimed_mmio_detected(struct intel_display *display);
>  bool intel_de_arm_unclaimed_mmio_detection(struct intel_display *display);
> @@ -101,23 +94,8 @@ int intel_de_wait_for_clear_ms(struct intel_display *display, intel_reg_t reg,
>   * therefore generally be serialised, by either the dev_priv->uncore.lock or
>   * a more localised lock guarding all access to that bank of registers.
>   */
> -static inline u32
> -intel_de_read_fw(struct intel_display *display, intel_reg_t reg)
> -{
> -	u32 val;
> -
> -	val = intel_uncore_read_fw(__to_uncore(display), reg);
> -	trace_i915_reg_rw(false, reg, val, sizeof(val), true);
> -
> -	return val;
> -}
> -
> -static inline void
> -intel_de_write_fw(struct intel_display *display, intel_reg_t reg, u32 val)
> -{
> -	trace_i915_reg_rw(true, reg, val, sizeof(val), true);
> -	intel_uncore_write_fw(__to_uncore(display), reg, val);
> -}
> +u32 intel_de_read_fw(struct intel_display *display, intel_reg_t reg);
> +void intel_de_write_fw(struct intel_display *display, intel_reg_t reg, u32 val);
>  
>  static inline u32
>  intel_de_rmw_fw(struct intel_display *display, intel_reg_t reg, u32 clear, u32 set)

-- 
Jani Nikula, Intel

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

* Re: [PATCH 2/8] drm/i915/de: Pimp the intel_de_{read, write}_fw() docs
  2026-11-13 13:43 ` [PATCH 2/8] drm/i915/de: Pimp the intel_de_{read,write}_fw() docs Ville Syrjala
@ 2026-11-13 14:12   ` Jani Nikula
  2026-11-13 14:31     ` Ville Syrjälä
  0 siblings, 1 reply; 19+ messages in thread
From: Jani Nikula @ 2026-11-13 14:12 UTC (permalink / raw)
  To: Ville Syrjala, intel-gfx; +Cc: intel-xe

On Fri, 13 Nov 2026, Ville Syrjala <ville.syrjala@linux.intel.com> wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> Include a bit more guidance on when to use or not use
> intel_de_{read,write}_fw(), and what the extra caveats
> are.
>
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> ---
>  drivers/gpu/drm/i915/display/intel_de.h | 13 ++++++++++---
>  1 file changed, 10 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_de.h b/drivers/gpu/drm/i915/display/intel_de.h
> index a6dcb91b36f2..2c469a2d6a20 100644
> --- a/drivers/gpu/drm/i915/display/intel_de.h
> +++ b/drivers/gpu/drm/i915/display/intel_de.h
> @@ -87,12 +87,19 @@ int intel_de_wait_for_clear_ms(struct intel_display *display, intel_reg_t reg,
>  			       u32 mask, unsigned int timeout_ms);
>  
>  /*
> - * Unlocked mmio-accessors, think carefully before using these.
> + * Unlocked mmio-accessors, think carefully before using these. Generally only
> + * highly performance sensitive code should use these (eg. vblank evade critical
> + * section, or interrupt handlers).
>   *
>   * Certain architectures will die if the same cacheline is concurrently accessed
> - * by different clients (e.g. on Ivybridge). Access to registers should
> - * therefore generally be serialised, by either the dev_priv->uncore.lock or
> + * by different clients (e.g. on Ivybridge/Haswell). Access to registers should
> + * therefore generally be serialised, by either the display->mmio.lock or
>   * a more localised lock guarding all access to that bank of registers.
> + *
> + * DMC wakelock will not be taken by these. It must be done manually,
> + * if needed.

Is there anything we could mention here about what "if needed" really
means?

Regardless,

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


> + *
> + * These will also skip the mmio_debug unclaimed register detection.
>   */
>  u32 intel_de_read_fw(struct intel_display *display, intel_reg_t reg);
>  void intel_de_write_fw(struct intel_display *display, intel_reg_t reg, u32 val);

-- 
Jani Nikula, Intel

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

* Re: [PATCH 3/8] drm/i915/de: Flatten the unclaimed mmio code
  2026-11-13 13:43 ` [PATCH 3/8] drm/i915/de: Flatten the unclaimed mmio code Ville Syrjala
@ 2026-11-13 14:25   ` Jani Nikula
  0 siblings, 0 replies; 19+ messages in thread
From: Jani Nikula @ 2026-11-13 14:25 UTC (permalink / raw)
  To: Ville Syrjala, intel-gfx; +Cc: intel-xe

On Fri, 13 Nov 2026, Ville Syrjala <ville.syrjala@linux.intel.com> wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> The unclaimed register access code is nested a few
> too many levels to my linking in places. Flatten it
> all out to make it a bit nicer.
>
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>

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

> ---
>  drivers/gpu/drm/i915/display/intel_de.c | 51 ++++++++++++++-----------
>  1 file changed, 29 insertions(+), 22 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_de.c b/drivers/gpu/drm/i915/display/intel_de.c
> index 8a94f3f1d3ee..06d91570bee2 100644
> --- a/drivers/gpu/drm/i915/display/intel_de.c
> +++ b/drivers/gpu/drm/i915/display/intel_de.c
> @@ -250,11 +250,13 @@ static void check_unclaimed_mmio_pre(struct intel_display *display,
>  	if (!display->params.mmio_debug)
>  		return;
>  
> -	if (display->mmio.funcs->check_for_unclaimed_mmio(display))
> -		drm_dbg_kms(display->drm,
> -			    "Unclaimed access detected before %s register 0x%x\n",
> -			    write ? "write to" : "read from",
> -			    i915_mmio_reg_offset(reg));
> +	if (!display->mmio.funcs->check_for_unclaimed_mmio(display))
> +		return;
> +
> +	drm_dbg_kms(display->drm,
> +		    "Unclaimed access detected before %s register 0x%x\n",
> +		    write ? "write to" : "read from",
> +		    i915_mmio_reg_offset(reg));
>  }
>  
>  static void check_unclaimed_mmio_post(struct intel_display *display,
> @@ -265,13 +267,16 @@ static void check_unclaimed_mmio_post(struct intel_display *display,
>  	if (!display->params.mmio_debug)
>  		return;
>  
> -	if (drm_WARN(display->drm,
> -		     display->mmio.funcs->check_for_unclaimed_mmio(display),
> -		     "Unclaimed %s register 0x%x\n",
> -		     write ? "write to" : "read from",
> -		     i915_mmio_reg_offset(reg)))
> -		/* Only report the first N failures */
> -		display->params.mmio_debug--;
> +	if (!display->mmio.funcs->check_for_unclaimed_mmio(display))
> +		return;
> +
> +	drm_WARN(display->drm, true,
> +		 "Unclaimed %s register 0x%x\n",
> +		 write ? "write to" : "read from",
> +		 i915_mmio_reg_offset(reg));
> +
> +	/* Only report the first N failures */
> +	display->params.mmio_debug--;
>  }
>  
>  bool intel_de_unclaimed_mmio_detected(struct intel_display *display)
> @@ -300,18 +305,20 @@ bool intel_de_arm_unclaimed_mmio_detection(struct intel_display *display)
>  	if (display->mmio.unclaimed_mmio_check <= 0)
>  		goto out;
>  
> -	if (display->mmio.funcs->check_for_unclaimed_mmio(display)) {
> -		if (!display->params.mmio_debug) {
> -			drm_dbg_kms(display->drm,
> -				    "Unclaimed register detected, "
> -				    "enabling oneshot unclaimed register reporting. "
> -				    "Please use i915.mmio_debug=N for more information.\n");
> -			display->params.mmio_debug++;
> -		}
> -		display->mmio.unclaimed_mmio_check--;
> -		ret = true;
> +	if (!display->mmio.funcs->check_for_unclaimed_mmio(display))
> +		goto out;
> +
> +	if (!display->params.mmio_debug) {
> +		drm_dbg_kms(display->drm,
> +			    "Unclaimed register detected, "
> +			    "enabling oneshot unclaimed register reporting. "
> +			    "Please use i915.mmio_debug=N for more information.\n");
> +		display->params.mmio_debug++;
>  	}
>  
> +	display->mmio.unclaimed_mmio_check--;
> +	ret = true;
> +
>  out:
>  	spin_unlock_irq(&display->mmio.lock);

-- 
Jani Nikula, Intel

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

* Re: [PATCH 2/8] drm/i915/de: Pimp the intel_de_{read, write}_fw() docs
  2026-11-13 14:12   ` [PATCH 2/8] drm/i915/de: Pimp the intel_de_{read, write}_fw() docs Jani Nikula
@ 2026-11-13 14:31     ` Ville Syrjälä
  0 siblings, 0 replies; 19+ messages in thread
From: Ville Syrjälä @ 2026-11-13 14:31 UTC (permalink / raw)
  To: Jani Nikula; +Cc: intel-gfx, intel-xe

On Fri, Nov 13, 2026 at 04:12:51PM +0200, Jani Nikula wrote:
> On Fri, 13 Nov 2026, Ville Syrjala <ville.syrjala@linux.intel.com> wrote:
> > From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> >
> > Include a bit more guidance on when to use or not use
> > intel_de_{read,write}_fw(), and what the extra caveats
> > are.
> >
> > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > ---
> >  drivers/gpu/drm/i915/display/intel_de.h | 13 ++++++++++---
> >  1 file changed, 10 insertions(+), 3 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/i915/display/intel_de.h b/drivers/gpu/drm/i915/display/intel_de.h
> > index a6dcb91b36f2..2c469a2d6a20 100644
> > --- a/drivers/gpu/drm/i915/display/intel_de.h
> > +++ b/drivers/gpu/drm/i915/display/intel_de.h
> > @@ -87,12 +87,19 @@ int intel_de_wait_for_clear_ms(struct intel_display *display, intel_reg_t reg,
> >  			       u32 mask, unsigned int timeout_ms);
> >  
> >  /*
> > - * Unlocked mmio-accessors, think carefully before using these.
> > + * Unlocked mmio-accessors, think carefully before using these. Generally only
> > + * highly performance sensitive code should use these (eg. vblank evade critical
> > + * section, or interrupt handlers).
> >   *
> >   * Certain architectures will die if the same cacheline is concurrently accessed
> > - * by different clients (e.g. on Ivybridge). Access to registers should
> > - * therefore generally be serialised, by either the dev_priv->uncore.lock or
> > + * by different clients (e.g. on Ivybridge/Haswell). Access to registers should
> > + * therefore generally be serialised, by either the display->mmio.lock or
> >   * a more localised lock guarding all access to that bank of registers.
> > + *
> > + * DMC wakelock will not be taken by these. It must be done manually,
> > + * if needed.
> 
> Is there anything we could mention here about what "if needed" really
> means?

"See intel_dmc_wl.c which registers need the wakelock."
?

> 
> Regardless,
> 
> Reviewed-by: Jani Nikula <jani.nikula@intel.com>
> 
> 
> > + *
> > + * These will also skip the mmio_debug unclaimed register detection.
> >   */
> >  u32 intel_de_read_fw(struct intel_display *display, intel_reg_t reg);
> >  void intel_de_write_fw(struct intel_display *display, intel_reg_t reg, u32 val);
> 
> -- 
> Jani Nikula, Intel

-- 
Ville Syrjälä
Intel

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

* ✗ CI.checkpatch: warning for drm/{i915, xe}: Make unclaimed mmio detection lockless and enable it for xe
  2026-11-13 13:43 [PATCH 0/8] drm/{i915, xe}: Make unclaimed mmio detection lockless and enable it for xe Ville Syrjala
                   ` (7 preceding siblings ...)
  2026-11-13 13:43 ` [PATCH 8/8] drm/i915/de: Nuke driver_is_i915() Ville Syrjala
@ 2026-11-13 14:33 ` Patchwork
  2026-11-13 14:35 ` ✓ CI.KUnit: success " Patchwork
                   ` (2 subsequent siblings)
  11 siblings, 0 replies; 19+ messages in thread
From: Patchwork @ 2026-11-13 14:33 UTC (permalink / raw)
  To: Ville Syrjälä; +Cc: intel-xe

== Series Details ==

Series: drm/{i915, xe}: Make unclaimed mmio detection lockless and enable it for xe
URL   : https://patchwork.freedesktop.org/series/178490/
State : warning

== Summary ==

+ KERNEL=/kernel
+ git clone https://gitlab.freedesktop.org/drm/maintainer-tools mt
Cloning into 'mt'...
warning: redirecting to https://gitlab.freedesktop.org/drm/maintainer-tools.git/
+ git -C mt rev-list -n1 origin/master
3009867cd31863246e4afc138520a7a8bd37bb11
+ cd /kernel
+ git config --global --add safe.directory /kernel
+ git log -n1
commit a24f10132fa884d9be314ea3457ce9410cfccfe5
Author: Ville Syrjälä <ville.syrjala@linux.intel.com>
Date:   Fri Nov 13 15:43:55 2026 +0200

    drm/i915/de: Nuke driver_is_i915()
    
    Now that both i915 and xe use the same mmio funcs for
    TGL+ we can unify the intel_de_init() if-ladders for
    the two drivers and get rid of driver_is_i915().
    
    Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
+ /mt/dim checkpatch d41695c479e8bb24eb941e5ba916e42784af6f4d drm-intel
63524d796f40 drm/i915/de: Uninline intel_de_{read,write}_fw()
23efbb3fa2f0 drm/i915/de: Pimp the intel_de_{read,write}_fw() docs
891c09358a99 drm/i915/de: Flatten the unclaimed mmio code
767ab8939b87 drm/i915/de: Make mmio_debug lockless
-:247: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#247: FILE: drivers/gpu/drm/i915/display/intel_display_params.c:147:
+intel_display_param_named(mmio_debug, bool, 0400,
+	"Enable MMIO debug code (default: false). "

total: 0 errors, 0 warnings, 1 checks, 170 lines checked
3b5ef1a0c476 drm/i915/de: Optimize the mmio_debug checks in intel_de_{read, write}()
a7f0bbe9c98a drm/i915/de: Make display registers unlocked for TGL+ on i915
ca74c8469e68 drm/xe: Enable unclaimed register detection on xe
a24f10132fa8 drm/i915/de: Nuke driver_is_i915()



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

* ✓ CI.KUnit: success for drm/{i915, xe}: Make unclaimed mmio detection lockless and enable it for xe
  2026-11-13 13:43 [PATCH 0/8] drm/{i915, xe}: Make unclaimed mmio detection lockless and enable it for xe Ville Syrjala
                   ` (8 preceding siblings ...)
  2026-11-13 14:33 ` ✗ CI.checkpatch: warning for drm/{i915, xe}: Make unclaimed mmio detection lockless and enable it for xe Patchwork
@ 2026-11-13 14:35 ` Patchwork
  2026-11-13 14:52 ` ✗ CI.checksparse: warning " Patchwork
  2026-11-13 15:07 ` ✗ Xe.CI.BAT: failure " Patchwork
  11 siblings, 0 replies; 19+ messages in thread
From: Patchwork @ 2026-11-13 14:35 UTC (permalink / raw)
  To: Ville Syrjälä; +Cc: intel-xe

== Series Details ==

Series: drm/{i915, xe}: Make unclaimed mmio detection lockless and enable it for xe
URL   : https://patchwork.freedesktop.org/series/178490/
State : success

== Summary ==

+ trap cleanup EXIT
+ kunitconfigs=('/kernel/drivers/gpu/tests/.kunitconfig' '/kernel/drivers/gpu/drm/xe/.kunitconfig' '/kernel/drivers/gpu/drm/tests/.kunitconfig' '/kernel/drivers/gpu/drm/ttm/tests/.kunitconfig' '/kernel/drivers/dma-buf/.kunitconfig')
+ for kcfg in "${kunitconfigs[@]}"
+ [[ ! -f /kernel/drivers/gpu/tests/.kunitconfig ]]
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/tests/.kunitconfig
[14:33:44] Configuring KUnit Kernel ...
Generating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[14:33:49] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48
[14:34:09] Starting KUnit Kernel (1/1)...
[14:34:09] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[14:34:09] ================= gpu_buddy (15 subtests) ==================
[14:34:09] [PASSED] gpu_test_buddy_alloc_limit
[14:34:09] [PASSED] gpu_test_buddy_alloc_optimistic
[14:34:09] [PASSED] gpu_test_buddy_alloc_pessimistic
[14:34:09] [PASSED] gpu_test_buddy_alloc_pathological
[14:34:09] [PASSED] gpu_test_buddy_alloc_contiguous
[14:34:09] [PASSED] gpu_test_buddy_alloc_clear
[14:34:09] [PASSED] gpu_test_buddy_alloc_range
[14:34:09] [PASSED] gpu_test_buddy_alloc_range_bias
[14:34:10] [PASSED] gpu_test_buddy_alloc_range_clear_guard
[14:34:11] [PASSED] gpu_test_buddy_fragmentation_performance
[14:34:11] [PASSED] gpu_test_buddy_dirty_tracker_performance
[14:34:11] [PASSED] gpu_test_buddy_alloc_exceeds_max_order
[14:34:11] [PASSED] gpu_test_buddy_offset_aligned_allocation
[14:34:11] [PASSED] gpu_test_buddy_subtree_offset_alignment_stress
[14:34:11] [PASSED] gpu_test_buddy_addr_to_block
[14:34:11] ==================== [PASSED] gpu_buddy ====================
[14:34:11] ============================================================
[14:34:11] Testing complete. Ran 15 tests: passed: 15
[14:34:11] Elapsed time: 27.532s total, 5.114s configuring, 20.501s building, 1.878s running

+ for kcfg in "${kunitconfigs[@]}"
+ [[ ! -f /kernel/drivers/gpu/drm/xe/.kunitconfig ]]
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/xe/.kunitconfig
[14:34:11] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[14:34:14] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48
[14:34:52] Starting KUnit Kernel (1/1)...
[14:34:52] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[14:34:53] ================== guc_buf (11 subtests) ===================
[14:34:53] [PASSED] test_smallest
[14:34:53] [PASSED] test_largest
[14:34:53] [PASSED] test_granular
[14:34:53] [PASSED] test_unique
[14:34:53] [PASSED] test_overlap
[14:34:53] [PASSED] test_reusable
[14:34:53] [PASSED] test_too_big
[14:34:53] [PASSED] test_flush
[14:34:53] [PASSED] test_lookup
[14:34:53] [PASSED] test_data
[14:34:53] [PASSED] test_class
[14:34:53] ===================== [PASSED] guc_buf =====================
[14:34:53] =================== guc_dbm (7 subtests) ===================
[14:34:53] [PASSED] test_empty
[14:34:53] [PASSED] test_default
[14:34:53] ======================== test_size  ========================
[14:34:53] [PASSED] 4
[14:34:53] [PASSED] 8
[14:34:53] [PASSED] 32
[14:34:53] [PASSED] 256
[14:34:53] ==================== [PASSED] test_size ====================
[14:34:53] ======================= test_reuse  ========================
[14:34:53] [PASSED] 4
[14:34:53] [PASSED] 8
[14:34:53] [PASSED] 32
[14:34:53] [PASSED] 256
[14:34:53] =================== [PASSED] test_reuse ====================
[14:34:53] =================== test_range_overlap  ====================
[14:34:53] [PASSED] 4
[14:34:53] [PASSED] 8
[14:34:53] [PASSED] 32
[14:34:53] [PASSED] 256
[14:34:53] =============== [PASSED] test_range_overlap ================
[14:34:53] =================== test_range_compact  ====================
[14:34:53] [PASSED] 4
[14:34:53] [PASSED] 8
[14:34:53] [PASSED] 32
[14:34:53] [PASSED] 256
[14:34:53] =============== [PASSED] test_range_compact ================
[14:34:53] ==================== test_range_spare  =====================
[14:34:53] [PASSED] 4
[14:34:53] [PASSED] 8
[14:34:53] [PASSED] 32
[14:34:53] [PASSED] 256
[14:34:53] ================ [PASSED] test_range_spare =================
[14:34:53] ===================== [PASSED] guc_dbm =====================
[14:34:53] ================== guc_idm (22 subtests) ===================
[14:34:53] [PASSED] bad_init
[14:34:53] [PASSED] no_init
[14:34:53] [PASSED] init_fini
[14:34:53] [PASSED] check_init_small
[14:34:53] [PASSED] check_init_shared
[14:34:53] [PASSED] check_used
[14:34:53] [PASSED] check_quota
[14:34:53] [PASSED] check_all
[14:34:53] [PASSED] check_limits
[14:34:53] [PASSED] check_overlap
[14:34:53] [PASSED] check_overlap_alloc
[14:34:53] [PASSED] check_overlap_release
[14:34:53] [PASSED] check_overlap_partial_init
[14:34:53] [PASSED] check_overlap_partial_shared_range_blocking
[14:34:53] [PASSED] check_used_usable
[14:34:53] [PASSED] check_used_shareable
[14:34:53] [PASSED] check_used_mixed
[14:34:53] [PASSED] check_release_usable_range
[14:34:53] [PASSED] check_release_shareable_range
[14:34:53] [PASSED] check_split_boundaries
[14:34:53] [PASSED] check_shareable_spare
[14:34:53] [PASSED] check_shareable_spare_fragmented_tail
[14:34:53] ===================== [PASSED] guc_idm =====================
[14:34:53] ============== guc_klv_helpers (13 subtests) ===============
[14:34:53] [PASSED] test_count
[14:34:53] [PASSED] test_encode_u32
[14:34:53] [PASSED] test_encode_u64
[14:34:53] [PASSED] test_encode_string
[14:34:53] [PASSED] test_encode_object_raw
[14:34:53] [PASSED] test_encode_object_klv
[14:34:53] [PASSED] test_encode_object_nested
[14:34:53] [PASSED] test_encode_object_basic
[14:34:53] ===================== test_decode_u16  =====================
[14:34:53] [PASSED] empty
[14:34:53] [PASSED] valid
[14:34:53] [PASSED] max
[14:34:53] [PASSED] big
[14:34:53] [PASSED] long
[14:34:53] ================= [PASSED] test_decode_u16 =================
[14:34:53] ===================== test_decode_u32  =====================
[14:34:53] [PASSED] empty
[14:34:53] [PASSED] valid
[14:34:53] [PASSED] max
[14:34:53] [PASSED] long
[14:34:53] ================= [PASSED] test_decode_u32 =================
[14:34:53] ===================== test_decode_u64  =====================
[14:34:53] [PASSED] empty
[14:34:53] [PASSED] short
[14:34:53] [PASSED] valid
[14:34:53] [PASSED] max
[14:34:53] [PASSED] long
[14:34:53] ================= [PASSED] test_decode_u64 =================
[14:34:53] ===================== test_decode_str  =====================
[14:34:53] [PASSED] empty
[14:34:53] [PASSED] one
[14:34:53] [PASSED] one_trash
[14:34:53] [PASSED] two
[14:34:53] [PASSED] two_trash
[14:34:53] [PASSED] three
[14:34:53] [PASSED] dword
[14:34:53] [PASSED] four
[14:34:53] [PASSED] five
[14:34:53] [PASSED] six
[14:34:53] [PASSED] seven
[14:34:53] [PASSED] qword
[14:34:53] ================= [PASSED] test_decode_str =================
[14:34:53] [PASSED] test_print
[14:34:53] ================= [PASSED] guc_klv_helpers =================
[14:34:53] =================== xe_log (4 subtests) ====================
[14:34:53] [PASSED] demo_cper
[14:34:53] [PASSED] demo_dmesg
[14:34:53] ======================= test_dmesg  ========================
[14:34:53] [PASSED] test_fatal
[14:34:53] [PASSED] test_fatal_tile
[14:34:53] [PASSED] test_fatal_gt
[14:34:53] [PASSED] test_fatal_comp
[14:34:53] [PASSED] test_fatal_comp_tile
[14:34:53] [PASSED] test_fatal_comp_gt
[14:34:53] [PASSED] test_fatal_all
[14:34:53] [PASSED] test_recoverable
[14:34:53] [PASSED] test_recoverable_tile
[14:34:53] [PASSED] test_recoverable_gt
[14:34:53] [PASSED] test_recoverable_comp
[14:34:53] [PASSED] test_recoverable_comp_tile
[14:34:53] [PASSED] test_recoverable_comp_gt
[14:34:53] [PASSED] test_recoverable_all
[14:34:53] [PASSED] test_info
[14:34:53] [PASSED] test_info_tile
[14:34:53] [PASSED] test_info_gt
[14:34:53] [PASSED] test_info_err
[14:34:53] [PASSED] test_info_comp
[14:34:53] [PASSED] test_info_comp_tile
[14:34:53] [PASSED] test_info_comp_gt
[14:34:53] [PASSED] test_info_all
[14:34:53] [PASSED] test_hw_fatal
[14:34:53] [PASSED] test_hw_recoverable
[14:34:53] [PASSED] test_hw_corrected
[14:34:53] [PASSED] test_hw_informational
[14:34:53] =================== [PASSED] test_dmesg ====================
[14:34:53] ====================== test_invalid  =======================
[14:34:53] [SKIPPED] no-component no-location no-warn (requires CONFIG_DRM_XE_DEBUG)
[14:34:53] [SKIPPED] reserved location (requires CONFIG_DRM_XE_DEBUG)
[14:34:53] [SKIPPED] unknown location (requires CONFIG_DRM_XE_DEBUG)
[14:34:53] [SKIPPED] nonzero-device-id location (requires CONFIG_DRM_XE_DEBUG)
[14:34:53] [SKIPPED] invalid-tile-id location (requires CONFIG_DRM_XE_DEBUG)
[14:34:53] [SKIPPED] invalid-gt-id location (requires CONFIG_DRM_XE_DEBUG)
[14:34:53] [SKIPPED] unknown component class (requires CONFIG_DRM_XE_DEBUG)
[14:34:53] [SKIPPED] unknown system component (requires CONFIG_DRM_XE_DEBUG)
[14:34:53] [SKIPPED] unknown hardware component (requires CONFIG_DRM_XE_DEBUG)
[14:34:53] [SKIPPED] unknown component and location (requires CONFIG_DRM_XE_DEBUG)
[14:34:53] ================== [SKIPPED] test_invalid ==================
[14:34:53] ===================== [PASSED] xe_log ======================
[14:34:53] ================== no_relay (3 subtests) ===================
[14:34:53] [PASSED] xe_drops_guc2pf_if_not_ready
[14:34:53] [PASSED] xe_drops_guc2vf_if_not_ready
[14:34:53] [PASSED] xe_rejects_send_if_not_ready
[14:34:53] ==================== [PASSED] no_relay =====================
[14:34:53] ================== pf_relay (14 subtests) ==================
[14:34:53] [PASSED] pf_rejects_guc2pf_too_short
[14:34:53] [PASSED] pf_rejects_guc2pf_too_long
[14:34:53] [PASSED] pf_rejects_guc2pf_no_payload
[14:34:53] [PASSED] pf_fails_no_payload
[14:34:53] [PASSED] pf_fails_bad_origin
[14:34:53] [PASSED] pf_fails_bad_type
[14:34:53] [PASSED] pf_txn_reports_error
[14:34:53] [PASSED] pf_txn_sends_pf2guc
[14:34:53] [PASSED] pf_sends_pf2guc
[14:34:53] [SKIPPED] pf_loopback_nop (requires CONFIG_DRM_XE_DEBUG_SRIOV)
[14:34:53] [SKIPPED] pf_loopback_echo (requires CONFIG_DRM_XE_DEBUG_SRIOV)
[14:34:53] [SKIPPED] pf_loopback_fail (requires CONFIG_DRM_XE_DEBUG_SRIOV)
[14:34:53] [SKIPPED] pf_loopback_busy (requires CONFIG_DRM_XE_DEBUG_SRIOV)
[14:34:53] [SKIPPED] pf_loopback_retry (requires CONFIG_DRM_XE_DEBUG_SRIOV)
[14:34:53] ==================== [PASSED] pf_relay =====================
[14:34:53] ================== vf_relay (3 subtests) ===================
[14:34:53] [PASSED] vf_rejects_guc2vf_too_short
[14:34:53] [PASSED] vf_rejects_guc2vf_too_long
[14:34:53] [PASSED] vf_rejects_guc2vf_no_payload
[14:34:53] ==================== [PASSED] vf_relay =====================
[14:34:53] ================ pf_gt_config (9 subtests) =================
[14:34:53] [PASSED] fair_contexts_1vf
[14:34:53] [PASSED] fair_doorbells_1vf
[14:34:53] [PASSED] fair_ggtt_1vf
[14:34:53] ====================== fair_vram_1vf  ======================
[14:34:53] [PASSED] 3.50 GiB
[14:34:53] [PASSED] 11.5 GiB
[14:34:53] [PASSED] 15.5 GiB
[14:34:53] [PASSED] 31.5 GiB
[14:34:53] [PASSED] 63.5 GiB
[14:34:53] [PASSED] 1.91 GiB
[14:34:53] ================== [PASSED] fair_vram_1vf ==================
[14:34:53] ================ fair_vram_1vf_admin_only  =================
[14:34:53] [PASSED] 3.50 GiB
[14:34:53] [PASSED] 11.5 GiB
[14:34:53] [PASSED] 15.5 GiB
[14:34:53] [PASSED] 31.5 GiB
[14:34:53] [PASSED] 63.5 GiB
[14:34:53] [PASSED] 1.91 GiB
[14:34:53] ============ [PASSED] fair_vram_1vf_admin_only =============
[14:34:53] ====================== fair_contexts  ======================
[14:34:53] [PASSED] 1 VF
[14:34:53] [PASSED] 2 VFs
[14:34:53] [PASSED] 3 VFs
[14:34:53] [PASSED] 4 VFs
[14:34:53] [PASSED] 5 VFs
[14:34:53] [PASSED] 6 VFs
[14:34:53] [PASSED] 7 VFs
[14:34:53] [PASSED] 8 VFs
[14:34:53] [PASSED] 9 VFs
[14:34:53] [PASSED] 10 VFs
[14:34:53] [PASSED] 11 VFs
[14:34:53] [PASSED] 12 VFs
[14:34:53] [PASSED] 13 VFs
[14:34:53] [PASSED] 14 VFs
[14:34:53] [PASSED] 15 VFs
[14:34:53] [PASSED] 16 VFs
[14:34:53] [PASSED] 17 VFs
[14:34:53] [PASSED] 18 VFs
[14:34:53] [PASSED] 19 VFs
[14:34:53] [PASSED] 20 VFs
[14:34:53] [PASSED] 21 VFs
[14:34:53] [PASSED] 22 VFs
[14:34:53] [PASSED] 23 VFs
[14:34:53] [PASSED] 24 VFs
[14:34:53] [PASSED] 25 VFs
[14:34:53] [PASSED] 26 VFs
[14:34:53] [PASSED] 27 VFs
[14:34:53] [PASSED] 28 VFs
[14:34:53] [PASSED] 29 VFs
[14:34:53] [PASSED] 30 VFs
[14:34:53] [PASSED] 31 VFs
[14:34:53] [PASSED] 32 VFs
[14:34:53] [PASSED] 33 VFs
[14:34:53] [PASSED] 34 VFs
[14:34:53] [PASSED] 35 VFs
[14:34:53] [PASSED] 36 VFs
[14:34:53] [PASSED] 37 VFs
[14:34:53] [PASSED] 38 VFs
[14:34:53] [PASSED] 39 VFs
[14:34:53] [PASSED] 40 VFs
[14:34:53] [PASSED] 41 VFs
[14:34:53] [PASSED] 42 VFs
[14:34:53] [PASSED] 43 VFs
[14:34:53] [PASSED] 44 VFs
[14:34:53] [PASSED] 45 VFs
[14:34:53] [PASSED] 46 VFs
[14:34:53] [PASSED] 47 VFs
[14:34:53] [PASSED] 48 VFs
[14:34:53] [PASSED] 49 VFs
[14:34:53] [PASSED] 50 VFs
[14:34:53] [PASSED] 51 VFs
[14:34:53] [PASSED] 52 VFs
[14:34:53] [PASSED] 53 VFs
[14:34:53] [PASSED] 54 VFs
[14:34:53] [PASSED] 55 VFs
[14:34:53] [PASSED] 56 VFs
[14:34:53] [PASSED] 57 VFs
[14:34:53] [PASSED] 58 VFs
[14:34:53] [PASSED] 59 VFs
[14:34:53] [PASSED] 60 VFs
[14:34:53] [PASSED] 61 VFs
[14:34:53] [PASSED] 62 VFs
[14:34:53] [PASSED] 63 VFs
[14:34:53] ================== [PASSED] fair_contexts ==================
[14:34:53] ===================== fair_doorbells  ======================
[14:34:53] [PASSED] 1 VF
[14:34:53] [PASSED] 2 VFs
[14:34:53] [PASSED] 3 VFs
[14:34:53] [PASSED] 4 VFs
[14:34:53] [PASSED] 5 VFs
[14:34:53] [PASSED] 6 VFs
[14:34:53] [PASSED] 7 VFs
[14:34:53] [PASSED] 8 VFs
[14:34:53] [PASSED] 9 VFs
[14:34:53] [PASSED] 10 VFs
[14:34:53] [PASSED] 11 VFs
[14:34:53] [PASSED] 12 VFs
[14:34:53] [PASSED] 13 VFs
[14:34:53] [PASSED] 14 VFs
[14:34:53] [PASSED] 15 VFs
[14:34:53] [PASSED] 16 VFs
[14:34:53] [PASSED] 17 VFs
[14:34:53] [PASSED] 18 VFs
[14:34:53] [PASSED] 19 VFs
[14:34:53] [PASSED] 20 VFs
[14:34:53] [PASSED] 21 VFs
[14:34:53] [PASSED] 22 VFs
[14:34:53] [PASSED] 23 VFs
[14:34:53] [PASSED] 24 VFs
[14:34:53] [PASSED] 25 VFs
[14:34:53] [PASSED] 26 VFs
[14:34:53] [PASSED] 27 VFs
[14:34:53] [PASSED] 28 VFs
[14:34:53] [PASSED] 29 VFs
[14:34:53] [PASSED] 30 VFs
[14:34:53] [PASSED] 31 VFs
[14:34:53] [PASSED] 32 VFs
[14:34:53] [PASSED] 33 VFs
[14:34:53] [PASSED] 34 VFs
[14:34:53] [PASSED] 35 VFs
[14:34:53] [PASSED] 36 VFs
[14:34:53] [PASSED] 37 VFs
[14:34:53] [PASSED] 38 VFs
[14:34:53] [PASSED] 39 VFs
[14:34:53] [PASSED] 40 VFs
[14:34:53] [PASSED] 41 VFs
[14:34:53] [PASSED] 42 VFs
[14:34:53] [PASSED] 43 VFs
[14:34:53] [PASSED] 44 VFs
[14:34:53] [PASSED] 45 VFs
[14:34:53] [PASSED] 46 VFs
[14:34:53] [PASSED] 47 VFs
[14:34:53] [PASSED] 48 VFs
[14:34:53] [PASSED] 49 VFs
[14:34:53] [PASSED] 50 VFs
[14:34:53] [PASSED] 51 VFs
[14:34:53] [PASSED] 52 VFs
[14:34:53] [PASSED] 53 VFs
[14:34:53] [PASSED] 54 VFs
[14:34:53] [PASSED] 55 VFs
[14:34:53] [PASSED] 56 VFs
[14:34:53] [PASSED] 57 VFs
[14:34:53] [PASSED] 58 VFs
[14:34:53] [PASSED] 59 VFs
[14:34:53] [PASSED] 60 VFs
[14:34:53] [PASSED] 61 VFs
[14:34:53] [PASSED] 62 VFs
[14:34:53] [PASSED] 63 VFs
[14:34:53] ================= [PASSED] fair_doorbells ==================
[14:34:53] ======================== fair_ggtt  ========================
[14:34:53] [PASSED] 1 VF
[14:34:53] [PASSED] 2 VFs
[14:34:53] [PASSED] 3 VFs
[14:34:53] [PASSED] 4 VFs
[14:34:53] [PASSED] 5 VFs
[14:34:53] [PASSED] 6 VFs
[14:34:53] [PASSED] 7 VFs
[14:34:53] [PASSED] 8 VFs
[14:34:53] [PASSED] 9 VFs
[14:34:53] [PASSED] 10 VFs
[14:34:53] [PASSED] 11 VFs
[14:34:53] [PASSED] 12 VFs
[14:34:53] [PASSED] 13 VFs
[14:34:53] [PASSED] 14 VFs
[14:34:53] [PASSED] 15 VFs
[14:34:53] [PASSED] 16 VFs
[14:34:53] [PASSED] 17 VFs
[14:34:53] [PASSED] 18 VFs
[14:34:53] [PASSED] 19 VFs
[14:34:53] [PASSED] 20 VFs
[14:34:53] [PASSED] 21 VFs
[14:34:53] [PASSED] 22 VFs
[14:34:53] [PASSED] 23 VFs
[14:34:53] [PASSED] 24 VFs
[14:34:53] [PASSED] 25 VFs
[14:34:53] [PASSED] 26 VFs
[14:34:53] [PASSED] 27 VFs
[14:34:53] [PASSED] 28 VFs
[14:34:53] [PASSED] 29 VFs
[14:34:53] [PASSED] 30 VFs
[14:34:53] [PASSED] 31 VFs
[14:34:53] [PASSED] 32 VFs
[14:34:53] [PASSED] 33 VFs
[14:34:53] [PASSED] 34 VFs
[14:34:53] [PASSED] 35 VFs
[14:34:53] [PASSED] 36 VFs
[14:34:53] [PASSED] 37 VFs
[14:34:53] [PASSED] 38 VFs
[14:34:53] [PASSED] 39 VFs
[14:34:53] [PASSED] 40 VFs
[14:34:53] [PASSED] 41 VFs
[14:34:53] [PASSED] 42 VFs
[14:34:53] [PASSED] 43 VFs
[14:34:53] [PASSED] 44 VFs
[14:34:53] [PASSED] 45 VFs
[14:34:53] [PASSED] 46 VFs
[14:34:53] [PASSED] 47 VFs
[14:34:53] [PASSED] 48 VFs
[14:34:53] [PASSED] 49 VFs
[14:34:53] [PASSED] 50 VFs
[14:34:53] [PASSED] 51 VFs
[14:34:53] [PASSED] 52 VFs
[14:34:53] [PASSED] 53 VFs
[14:34:53] [PASSED] 54 VFs
[14:34:53] [PASSED] 55 VFs
[14:34:53] [PASSED] 56 VFs
[14:34:53] [PASSED] 57 VFs
[14:34:53] [PASSED] 58 VFs
[14:34:53] [PASSED] 59 VFs
[14:34:53] [PASSED] 60 VFs
[14:34:53] [PASSED] 61 VFs
[14:34:53] [PASSED] 62 VFs
[14:34:53] [PASSED] 63 VFs
[14:34:53] ==================== [PASSED] fair_ggtt ====================
[14:34:53] ======================== fair_vram  ========================
[14:34:53] [PASSED] 1 VF
[14:34:53] [PASSED] 2 VFs
[14:34:53] [PASSED] 3 VFs
[14:34:53] [PASSED] 4 VFs
[14:34:53] [PASSED] 5 VFs
[14:34:53] [PASSED] 6 VFs
[14:34:53] [PASSED] 7 VFs
[14:34:53] [PASSED] 8 VFs
[14:34:53] [PASSED] 9 VFs
[14:34:53] [PASSED] 10 VFs
[14:34:53] [PASSED] 11 VFs
[14:34:53] [PASSED] 12 VFs
[14:34:53] [PASSED] 13 VFs
[14:34:53] [PASSED] 14 VFs
[14:34:53] [PASSED] 15 VFs
[14:34:53] [PASSED] 16 VFs
[14:34:53] [PASSED] 17 VFs
[14:34:53] [PASSED] 18 VFs
[14:34:53] [PASSED] 19 VFs
[14:34:53] [PASSED] 20 VFs
[14:34:53] [PASSED] 21 VFs
[14:34:53] [PASSED] 22 VFs
[14:34:53] [PASSED] 23 VFs
[14:34:53] [PASSED] 24 VFs
[14:34:53] [PASSED] 25 VFs
[14:34:53] [PASSED] 26 VFs
[14:34:53] [PASSED] 27 VFs
[14:34:53] [PASSED] 28 VFs
[14:34:53] [PASSED] 29 VFs
[14:34:53] [PASSED] 30 VFs
[14:34:53] [PASSED] 31 VFs
[14:34:53] [PASSED] 32 VFs
[14:34:53] [PASSED] 33 VFs
[14:34:53] [PASSED] 34 VFs
[14:34:53] [PASSED] 35 VFs
[14:34:53] [PASSED] 36 VFs
[14:34:53] [PASSED] 37 VFs
[14:34:53] [PASSED] 38 VFs
[14:34:53] [PASSED] 39 VFs
[14:34:53] [PASSED] 40 VFs
[14:34:53] [PASSED] 41 VFs
[14:34:53] [PASSED] 42 VFs
[14:34:53] [PASSED] 43 VFs
[14:34:53] [PASSED] 44 VFs
[14:34:53] [PASSED] 45 VFs
[14:34:53] [PASSED] 46 VFs
[14:34:53] [PASSED] 47 VFs
[14:34:53] [PASSED] 48 VFs
[14:34:53] [PASSED] 49 VFs
[14:34:53] [PASSED] 50 VFs
[14:34:53] [PASSED] 51 VFs
[14:34:53] [PASSED] 52 VFs
[14:34:53] [PASSED] 53 VFs
[14:34:53] [PASSED] 54 VFs
[14:34:53] [PASSED] 55 VFs
[14:34:53] [PASSED] 56 VFs
[14:34:53] [PASSED] 57 VFs
[14:34:53] [PASSED] 58 VFs
[14:34:53] [PASSED] 59 VFs
[14:34:53] [PASSED] 60 VFs
[14:34:53] [PASSED] 61 VFs
[14:34:53] [PASSED] 62 VFs
[14:34:53] [PASSED] 63 VFs
[14:34:53] ==================== [PASSED] fair_vram ====================
[14:34:53] ================== [PASSED] pf_gt_config ===================
[14:34:53] ===================== lmtt (1 subtest) =====================
[14:34:53] ======================== test_ops  =========================
[14:34:53] [PASSED] 2-level
[14:34:53] [PASSED] multi-level
[14:34:53] ==================== [PASSED] test_ops =====================
[14:34:53] ====================== [PASSED] lmtt =======================
[14:34:53] ================= sriov_packet (1 subtest) =================
[14:34:53] [PASSED] test_descriptor_init
[14:34:53] ================== [PASSED] sriov_packet ===================
[14:34:53] ================= pf_service (11 subtests) =================
[14:34:53] [PASSED] pf_negotiate_any
[14:34:53] [PASSED] pf_negotiate_base_match
[14:34:53] [PASSED] pf_negotiate_base_newer
[14:34:53] [PASSED] pf_negotiate_base_next
[14:34:53] [SKIPPED] pf_negotiate_base_older (no older minor)
[14:34:53] [PASSED] pf_negotiate_base_prev
[14:34:53] [PASSED] pf_negotiate_latest_match
[14:34:53] [PASSED] pf_negotiate_latest_newer
[14:34:53] [PASSED] pf_negotiate_latest_next
[14:34:53] [SKIPPED] pf_negotiate_latest_older (no older minor)
[14:34:53] [SKIPPED] pf_negotiate_latest_prev (no prev major)
[14:34:53] =================== [PASSED] pf_service ====================
[14:34:53] ================= xe_guc_g2g (2 subtests) ==================
[14:34:53] ============== xe_live_guc_g2g_kunit_default  ==============
[14:34:53] ========= [SKIPPED] xe_live_guc_g2g_kunit_default ==========
[14:34:53] ============== xe_live_guc_g2g_kunit_allmem  ===============
[14:34:53] ========== [SKIPPED] xe_live_guc_g2g_kunit_allmem ==========
[14:34:53] =================== [SKIPPED] xe_guc_g2g ===================
[14:34:53] =================== xe_mocs (2 subtests) ===================
[14:34:53] ================ xe_live_mocs_kernel_kunit  ================
[14:34:53] =========== [SKIPPED] xe_live_mocs_kernel_kunit ============
[14:34:53] ================ xe_live_mocs_reset_kunit  =================
[14:34:53] ============ [SKIPPED] xe_live_mocs_reset_kunit ============
[14:34:53] ==================== [SKIPPED] xe_mocs =====================
[14:34:53] ================= xe_migrate (3 subtests) ==================
[14:34:53] ================= xe_migrate_sanity_kunit  =================
[14:34:53] ============ [SKIPPED] xe_migrate_sanity_kunit =============
[14:34:53] ================== xe_validate_ccs_kunit  ==================
[14:34:53] ============= [SKIPPED] xe_validate_ccs_kunit ==============
[14:34:53] ============= xe_migrate_access_memory_kunit  ==============
[14:34:53] ========= [SKIPPED] xe_migrate_access_memory_kunit =========
[14:34:53] =================== [SKIPPED] xe_migrate ===================
[14:34:53] ================== xe_dma_buf (1 subtest) ==================
[14:34:53] ==================== xe_dma_buf_kunit  =====================
[14:34:53] ================ [SKIPPED] xe_dma_buf_kunit ================
[14:34:53] =================== [SKIPPED] xe_dma_buf ===================
[14:34:53] ================= xe_bo_shrink (1 subtest) =================
[14:34:53] =================== xe_bo_shrink_kunit  ====================
[14:34:53] =============== [SKIPPED] xe_bo_shrink_kunit ===============
[14:34:53] ================== [SKIPPED] xe_bo_shrink ==================
[14:34:53] ==================== xe_bo (2 subtests) ====================
[14:34:53] ================== xe_ccs_migrate_kunit  ===================
[14:34:53] ============== [SKIPPED] xe_ccs_migrate_kunit ==============
[14:34:53] ==================== xe_bo_evict_kunit  ====================
[14:34:53] =============== [SKIPPED] xe_bo_evict_kunit ================
[14:34:53] ===================== [SKIPPED] xe_bo ======================
[14:34:53] =================== xe_any (9 subtests) ====================
[14:34:53] [PASSED] test_to_xe
[14:34:53] [PASSED] test_to_dev
[14:34:53] [PASSED] test_to_pdev
[14:34:53] [PASSED] test_to_drm
[14:34:53] [PASSED] test_if_pdev
[14:34:53] [PASSED] test_if_xe
[14:34:53] [PASSED] test_if_tile
[14:34:53] [PASSED] test_if_gt
[14:34:53] [PASSED] test_to_id
[14:34:53] ===================== [PASSED] xe_any ======================
[14:34:53] ==================== args (13 subtests) ====================
[14:34:53] [PASSED] count_args_test
[14:34:53] [PASSED] call_args_example
[14:34:53] [PASSED] call_args_test
[14:34:53] [PASSED] drop_first_arg_example
[14:34:53] [PASSED] drop_first_arg_test
[14:34:53] [PASSED] first_arg_example
[14:34:53] [PASSED] first_arg_test
[14:34:53] [PASSED] last_arg_example
[14:34:53] [PASSED] last_arg_test
[14:34:53] [PASSED] pick_arg_example
[14:34:53] [PASSED] if_args_example
[14:34:53] [PASSED] if_args_test
[14:34:53] [PASSED] sep_comma_example
[14:34:53] ====================== [PASSED] args =======================
[14:34:53] =================== xe_pci (3 subtests) ====================
[14:34:53] ==================== check_graphics_ip  ====================
[14:34:53] [PASSED] 12.00 Xe_LP
[14:34:53] [PASSED] 12.10 Xe_LP+
[14:34:53] [PASSED] 12.55 Xe_HPG
[14:34:53] [PASSED] 12.60 Xe_HPC
[14:34:53] [PASSED] 12.70 Xe_LPG
[14:34:53] [PASSED] 12.71 Xe_LPG
[14:34:53] [PASSED] 12.74 Xe_LPG+
[14:34:53] [PASSED] 20.01 Xe2_HPG
[14:34:53] [PASSED] 20.02 Xe2_HPG
[14:34:53] [PASSED] 20.04 Xe2_LPG
[14:34:53] [PASSED] 30.00 Xe3_LPG
[14:34:53] [PASSED] 30.01 Xe3_LPG
[14:34:53] [PASSED] 30.03 Xe3_LPG
[14:34:53] [PASSED] 30.04 Xe3_LPG
[14:34:53] [PASSED] 30.05 Xe3_LPG
[14:34:53] [PASSED] 35.10 Xe3p_LPG
[14:34:53] [PASSED] 35.11 Xe3p_XPC
[14:34:53] ================ [PASSED] check_graphics_ip ================
[14:34:53] ===================== check_media_ip  ======================
[14:34:53] [PASSED] 12.00 Xe_M
[14:34:53] [PASSED] 12.55 Xe_HPM
[14:34:53] [PASSED] 13.00 Xe_LPM+
[14:34:53] [PASSED] 13.01 Xe2_HPM
[14:34:53] [PASSED] 20.00 Xe2_LPM
[14:34:53] [PASSED] 30.00 Xe3_LPM
[14:34:53] [PASSED] 30.02 Xe3_LPM
[14:34:53] [PASSED] 35.00 Xe3p_LPM
[14:34:53] [PASSED] 35.03 Xe3p_HPM
[14:34:53] ================= [PASSED] check_media_ip ==================
[14:34:53] =================== check_platform_desc  ===================
[14:34:53] [PASSED] 0x9A60 (TIGERLAKE)
[14:34:53] [PASSED] 0x9A68 (TIGERLAKE)
[14:34:53] [PASSED] 0x9A70 (TIGERLAKE)
[14:34:53] [PASSED] 0x9A40 (TIGERLAKE)
[14:34:53] [PASSED] 0x9A49 (TIGERLAKE)
[14:34:53] [PASSED] 0x9A59 (TIGERLAKE)
[14:34:53] [PASSED] 0x9A78 (TIGERLAKE)
[14:34:53] [PASSED] 0x9AC0 (TIGERLAKE)
[14:34:53] [PASSED] 0x9AC9 (TIGERLAKE)
[14:34:53] [PASSED] 0x9AD9 (TIGERLAKE)
[14:34:53] [PASSED] 0x9AF8 (TIGERLAKE)
[14:34:53] [PASSED] 0x4C80 (ROCKETLAKE)
[14:34:53] [PASSED] 0x4C8A (ROCKETLAKE)
[14:34:53] [PASSED] 0x4C8B (ROCKETLAKE)
[14:34:53] [PASSED] 0x4C8C (ROCKETLAKE)
[14:34:53] [PASSED] 0x4C90 (ROCKETLAKE)
[14:34:53] [PASSED] 0x4C9A (ROCKETLAKE)
[14:34:53] [PASSED] 0x4680 (ALDERLAKE_S)
[14:34:53] [PASSED] 0x4682 (ALDERLAKE_S)
[14:34:53] [PASSED] 0x4688 (ALDERLAKE_S)
[14:34:53] [PASSED] 0x468A (ALDERLAKE_S)
[14:34:53] [PASSED] 0x468B (ALDERLAKE_S)
[14:34:53] [PASSED] 0x4690 (ALDERLAKE_S)
[14:34:53] [PASSED] 0x4692 (ALDERLAKE_S)
[14:34:53] [PASSED] 0x4693 (ALDERLAKE_S)
[14:34:53] [PASSED] 0x46A0 (ALDERLAKE_P)
[14:34:53] [PASSED] 0x46A1 (ALDERLAKE_P)
[14:34:53] [PASSED] 0x46A2 (ALDERLAKE_P)
[14:34:53] [PASSED] 0x46A3 (ALDERLAKE_P)
[14:34:53] [PASSED] 0x46A6 (ALDERLAKE_P)
[14:34:53] [PASSED] 0x46A8 (ALDERLAKE_P)
[14:34:53] [PASSED] 0x46AA (ALDERLAKE_P)
[14:34:53] [PASSED] 0x462A (ALDERLAKE_P)
[14:34:53] [PASSED] 0x4626 (ALDERLAKE_P)
[14:34:53] [PASSED] 0x4628 (ALDERLAKE_P)
[14:34:53] [PASSED] 0x46B0 (ALDERLAKE_P)
[14:34:53] [PASSED] 0x46B1 (ALDERLAKE_P)
[14:34:53] [PASSED] 0x46B2 (ALDERLAKE_P)
[14:34:53] [PASSED] 0x46B3 (ALDERLAKE_P)
[14:34:53] [PASSED] 0x46C0 (ALDERLAKE_P)
[14:34:53] [PASSED] 0x46C1 (ALDERLAKE_P)
[14:34:53] [PASSED] 0x46C2 (ALDERLAKE_P)
[14:34:53] [PASSED] 0x46C3 (ALDERLAKE_P)
[14:34:53] [PASSED] 0x46D0 (ALDERLAKE_N)
[14:34:53] [PASSED] 0x46D1 (ALDERLAKE_N)
[14:34:53] [PASSED] 0x46D2 (ALDERLAKE_N)
[14:34:53] [PASSED] 0x46D3 (ALDERLAKE_N)
[14:34:53] [PASSED] 0x46D4 (ALDERLAKE_N)
[14:34:53] [PASSED] 0xA721 (ALDERLAKE_P)
[14:34:53] [PASSED] 0xA7A1 (ALDERLAKE_P)
[14:34:53] [PASSED] 0xA7A9 (ALDERLAKE_P)
[14:34:53] [PASSED] 0xA7AC (ALDERLAKE_P)
[14:34:53] [PASSED] 0xA7AD (ALDERLAKE_P)
[14:34:53] [PASSED] 0xA720 (ALDERLAKE_P)
[14:34:53] [PASSED] 0xA7A0 (ALDERLAKE_P)
[14:34:53] [PASSED] 0xA7A8 (ALDERLAKE_P)
[14:34:53] [PASSED] 0xA7AA (ALDERLAKE_P)
[14:34:53] [PASSED] 0xA7AB (ALDERLAKE_P)
[14:34:53] [PASSED] 0xA780 (ALDERLAKE_S)
[14:34:53] [PASSED] 0xA781 (ALDERLAKE_S)
[14:34:53] [PASSED] 0xA782 (ALDERLAKE_S)
[14:34:53] [PASSED] 0xA783 (ALDERLAKE_S)
[14:34:53] [PASSED] 0xA788 (ALDERLAKE_S)
[14:34:53] [PASSED] 0xA789 (ALDERLAKE_S)
[14:34:53] [PASSED] 0xA78A (ALDERLAKE_S)
[14:34:53] [PASSED] 0xA78B (ALDERLAKE_S)
[14:34:53] [PASSED] 0x4905 (DG1)
[14:34:53] [PASSED] 0x4906 (DG1)
[14:34:53] [PASSED] 0x4907 (DG1)
[14:34:53] [PASSED] 0x4908 (DG1)
[14:34:53] [PASSED] 0x4909 (DG1)
[14:34:53] [PASSED] 0x56C0 (DG2)
[14:34:53] [PASSED] 0x56C2 (DG2)
[14:34:53] [PASSED] 0x56C1 (DG2)
[14:34:53] [PASSED] 0x7D51 (METEORLAKE)
[14:34:53] [PASSED] 0x7DD1 (METEORLAKE)
[14:34:53] [PASSED] 0x7D41 (METEORLAKE)
[14:34:53] [PASSED] 0x7D67 (METEORLAKE)
[14:34:53] [PASSED] 0xB640 (METEORLAKE)
[14:34:53] [PASSED] 0x56A0 (DG2)
[14:34:53] [PASSED] 0x56A1 (DG2)
[14:34:53] [PASSED] 0x56A2 (DG2)
[14:34:53] [PASSED] 0x56BE (DG2)
[14:34:53] [PASSED] 0x56BF (DG2)
[14:34:53] [PASSED] 0x5690 (DG2)
[14:34:53] [PASSED] 0x5691 (DG2)
[14:34:53] [PASSED] 0x5692 (DG2)
[14:34:53] [PASSED] 0x56A5 (DG2)
[14:34:53] [PASSED] 0x56A6 (DG2)
[14:34:53] [PASSED] 0x56B0 (DG2)
[14:34:53] [PASSED] 0x56B1 (DG2)
[14:34:53] [PASSED] 0x56BA (DG2)
[14:34:53] [PASSED] 0x56BB (DG2)
[14:34:53] [PASSED] 0x56BC (DG2)
[14:34:53] [PASSED] 0x56BD (DG2)
[14:34:53] [PASSED] 0x5693 (DG2)
[14:34:53] [PASSED] 0x5694 (DG2)
[14:34:53] [PASSED] 0x5695 (DG2)
[14:34:53] [PASSED] 0x56A3 (DG2)
[14:34:53] [PASSED] 0x56A4 (DG2)
[14:34:53] [PASSED] 0x56B2 (DG2)
[14:34:53] [PASSED] 0x56B3 (DG2)
[14:34:53] [PASSED] 0x5696 (DG2)
[14:34:53] [PASSED] 0x5697 (DG2)
[14:34:53] [PASSED] 0xB69 (PVC)
[14:34:53] [PASSED] 0xB6E (PVC)
[14:34:53] [PASSED] 0xBD4 (PVC)
[14:34:53] [PASSED] 0xBD5 (PVC)
[14:34:53] [PASSED] 0xBD6 (PVC)
[14:34:53] [PASSED] 0xBD7 (PVC)
[14:34:53] [PASSED] 0xBD8 (PVC)
[14:34:53] [PASSED] 0xBD9 (PVC)
[14:34:53] [PASSED] 0xBDA (PVC)
[14:34:53] [PASSED] 0xBDB (PVC)
[14:34:53] [PASSED] 0xBE0 (PVC)
[14:34:53] [PASSED] 0xBE1 (PVC)
[14:34:53] [PASSED] 0xBE5 (PVC)
[14:34:53] [PASSED] 0x7D40 (METEORLAKE)
[14:34:53] [PASSED] 0x7D45 (METEORLAKE)
[14:34:53] [PASSED] 0x7D55 (METEORLAKE)
[14:34:53] [PASSED] 0x7D60 (METEORLAKE)
[14:34:53] [PASSED] 0x7DD5 (METEORLAKE)
[14:34:53] [PASSED] 0x6420 (LUNARLAKE)
[14:34:53] [PASSED] 0x64A0 (LUNARLAKE)
[14:34:53] [PASSED] 0x64B0 (LUNARLAKE)
[14:34:53] [PASSED] 0xE202 (BATTLEMAGE)
[14:34:53] [PASSED] 0xE209 (BATTLEMAGE)
[14:34:53] [PASSED] 0xE20B (BATTLEMAGE)
[14:34:53] [PASSED] 0xE20C (BATTLEMAGE)
[14:34:53] [PASSED] 0xE20D (BATTLEMAGE)
[14:34:53] [PASSED] 0xE210 (BATTLEMAGE)
[14:34:53] [PASSED] 0xE211 (BATTLEMAGE)
[14:34:53] [PASSED] 0xE212 (BATTLEMAGE)
[14:34:53] [PASSED] 0xE216 (BATTLEMAGE)
[14:34:53] [PASSED] 0xE220 (BATTLEMAGE)
[14:34:53] [PASSED] 0xE221 (BATTLEMAGE)
[14:34:53] [PASSED] 0xE222 (BATTLEMAGE)
[14:34:53] [PASSED] 0xE223 (BATTLEMAGE)
[14:34:53] [PASSED] 0xB080 (PANTHERLAKE)
[14:34:53] [PASSED] 0xB081 (PANTHERLAKE)
[14:34:53] [PASSED] 0xB082 (PANTHERLAKE)
[14:34:53] [PASSED] 0xB083 (PANTHERLAKE)
[14:34:53] [PASSED] 0xB084 (PANTHERLAKE)
[14:34:53] [PASSED] 0xB085 (PANTHERLAKE)
[14:34:53] [PASSED] 0xB086 (PANTHERLAKE)
[14:34:53] [PASSED] 0xB087 (PANTHERLAKE)
[14:34:53] [PASSED] 0xB08F (PANTHERLAKE)
[14:34:53] [PASSED] 0xB090 (PANTHERLAKE)
[14:34:53] [PASSED] 0xB0A0 (PANTHERLAKE)
[14:34:53] [PASSED] 0xB0A1 (PANTHERLAKE)
[14:34:53] [PASSED] 0xB0B0 (PANTHERLAKE)
[14:34:53] [PASSED] 0xFD80 (PANTHERLAKE)
[14:34:53] [PASSED] 0xFD81 (PANTHERLAKE)
[14:34:53] [PASSED] 0xD740 (NOVALAKE_S)
[14:34:53] [PASSED] 0xD741 (NOVALAKE_S)
[14:34:53] [PASSED] 0xD742 (NOVALAKE_S)
[14:34:53] [PASSED] 0xD743 (NOVALAKE_S)
[14:34:53] [PASSED] 0xD745 (NOVALAKE_S)
[14:34:53] [PASSED] 0xD74A (NOVALAKE_S)
[14:34:53] [PASSED] 0xD74B (NOVALAKE_S)
[14:34:53] [PASSED] 0x674C (CRESCENTISLAND)
[14:34:53] [PASSED] 0x674D (CRESCENTISLAND)
[14:34:53] [PASSED] 0x674E (CRESCENTISLAND)
[14:34:53] [PASSED] 0x674F (CRESCENTISLAND)
[14:34:53] [PASSED] 0x6750 (CRESCENTISLAND)
[14:34:53] [PASSED] 0x6751 (CRESCENTISLAND)
[14:34:53] [PASSED] 0x6752 (CRESCENTISLAND)
[14:34:53] [PASSED] 0xD750 (NOVALAKE_P)
[14:34:53] [PASSED] 0xD751 (NOVALAKE_P)
[14:34:53] [PASSED] 0xD752 (NOVALAKE_P)
[14:34:53] [PASSED] 0xD753 (NOVALAKE_P)
[14:34:53] [PASSED] 0xD754 (NOVALAKE_P)
[14:34:53] [PASSED] 0xD755 (NOVALAKE_P)
[14:34:53] [PASSED] 0xD756 (NOVALAKE_P)
[14:34:53] [PASSED] 0xD757 (NOVALAKE_P)
[14:34:53] [PASSED] 0xD75F (NOVALAKE_P)
[14:34:53] =============== [PASSED] check_platform_desc ===============
[14:34:53] ===================== [PASSED] xe_pci ======================
[14:34:53] ============= xe_rtp_tables_test (5 subtests) ==============
[14:34:53] ================== xe_rtp_table_gt_test  ===================
[14:34:53] [PASSED] gt_was/14011060649
[14:34:53] [PASSED] gt_was/14011059788
[14:34:53] [PASSED] gt_was/14015795083
[14:34:53] [PASSED] gt_was/16021867713
[14:34:53] [PASSED] gt_was/14019449301
[14:34:53] [PASSED] gt_was/16028005424
[14:34:53] [PASSED] gt_was/14026578760
[14:34:53] [PASSED] gt_was/1409420604
[14:34:53] [PASSED] gt_was/1408615072
[14:34:53] [PASSED] gt_was/22010523718
[14:34:53] [PASSED] gt_was/14011006942
[14:34:53] [PASSED] gt_was/14014830051
[14:34:53] [PASSED] gt_was/18018781329
[14:34:53] [PASSED] gt_was/1509235366
[14:34:53] [PASSED] gt_was/18018781329
[14:34:53] [PASSED] gt_was/16016694945
[14:34:53] [PASSED] gt_was/14018575942
[14:34:53] [PASSED] gt_was/22016670082
[14:34:53] [PASSED] gt_was/22016670082
[14:34:53] [PASSED] gt_was/14017421178
[14:34:53] [PASSED] gt_was/16025250150
[14:34:53] [PASSED] gt_was/14021871409
[14:34:53] [PASSED] gt_was/16021865536
[14:34:53] [PASSED] gt_was/14021486841
[14:34:53] [PASSED] gt_was/14025160223
[14:34:53] [PASSED] gt_was/14026144927, 16029437861, 14026127056
[14:34:53] [PASSED] gt_was/14025635424
[14:34:53] [PASSED] gt_was/16028005424
[14:34:53] ============== [PASSED] xe_rtp_table_gt_test ===============
[14:34:53] ================== xe_rtp_table_gt_test  ===================
[14:34:53] [PASSED] gt_tunings/Tuning: Blend Fill Caching Optimization Disable
[14:34:53] [PASSED] gt_tunings/Tuning: 32B Access Enable
[14:34:53] [PASSED] gt_tunings/Tuning: L3 cache
[14:34:53] [PASSED] gt_tunings/Tuning: L3 cache - media
[14:34:53] [PASSED] gt_tunings/Tuning: Compression Overfetch
[14:34:53] [PASSED] gt_tunings/Tuning: Compression Overfetch - media
[14:34:53] [PASSED] gt_tunings/Tuning: Enable compressible partial write overfetch in L3
[14:34:53] [PASSED] gt_tunings/Tuning: Enable compressible partial write overfetch in L3 - media
[14:34:53] [PASSED] gt_tunings/Tuning: L2 Overfetch Compressible Only
[14:34:53] [PASSED] gt_tunings/Tuning: L2 Overfetch Compressible Only - media
[14:34:53] [PASSED] gt_tunings/Tuning: Stateless compression control
[14:34:53] [PASSED] gt_tunings/Tuning: Stateless compression control - media
[14:34:53] [PASSED] gt_tunings/Tuning: L3 RW flush all Cache
[14:34:53] [PASSED] gt_tunings/Tuning: L3 RW flush all cache - media
[14:34:53] [PASSED] gt_tunings/Tuning: Set STLB Bank Hash Mode to 4KB
[14:34:53] [PASSED] gt_tunings/Tuning: Force All Non-Compressible Memory Reads to be 256B Overfetches
[14:34:53] ============== [PASSED] xe_rtp_table_gt_test ===============
[14:34:53] ================== xe_rtp_table_oob_test  ==================
[14:34:53] [PASSED] oob_was/1607983814
[14:34:53] [PASSED] oob_was/16010904313
[14:34:53] [PASSED] oob_was/18022495364
[14:34:53] [PASSED] oob_was/22012773006
[14:34:53] [PASSED] oob_was/14014475959
[14:34:53] [PASSED] oob_was/22011391025
[14:34:53] [PASSED] oob_was/22012727170
[14:34:53] [PASSED] oob_was/22012727685
[14:34:53] [PASSED] oob_was/22016596838
[14:34:53] [PASSED] oob_was/18020744125
[14:34:53] [PASSED] oob_was/1409600907
[14:34:53] [PASSED] oob_was/22014953428
[14:34:53] [PASSED] oob_was/16017236439
[14:34:53] [PASSED] oob_was/14019821291
[14:34:53] [PASSED] oob_was/14015076503
[14:34:53] [PASSED] oob_was/22016122933
[14:34:53] [PASSED] oob_was/14018913170
[14:34:53] [PASSED] oob_was/14018094691
[14:34:53] [PASSED] oob_was/18024947630
[14:34:53] [PASSED] oob_was/16022287689
[14:34:53] [PASSED] oob_was/13011645652
[14:34:53] [PASSED] oob_was/14022293748
[14:34:53] [PASSED] oob_was/22019794406
[14:34:53] [PASSED] oob_was/22019338487
[14:34:53] [PASSED] oob_was/16023588340
[14:34:53] [PASSED] oob_was/14019789679
[14:34:53] [PASSED] oob_was/14022866841
[14:34:53] [PASSED] oob_was/16021333562
[14:34:53] [PASSED] oob_was/14016712196
[14:34:53] [PASSED] oob_was/14015568240
[14:34:53] [PASSED] oob_was/18013179988
[14:34:53] [PASSED] oob_was/1508761755
[14:34:53] [PASSED] oob_was/16023105232
[14:34:53] [PASSED] oob_was/16026508708
[14:34:53] [PASSED] oob_was/14020001231
[14:34:53] [PASSED] oob_was/16023683509
[14:34:53] [PASSED] oob_was/14025515070
[14:34:53] [PASSED] oob_was/15015404425_disable
[14:34:53] [PASSED] oob_was/16026007364
[14:34:53] [PASSED] oob_was/14020316580
[14:34:53] [PASSED] oob_was/14025883347
[14:34:53] [PASSED] oob_was/16029380221
[14:34:53] [PASSED] oob_was/22022079272
[14:34:53] [PASSED] oob_was/16029897822
[14:34:53] [PASSED] oob_was/14026539277
[14:34:53] [PASSED] oob_was/14027054324
[14:34:53] [PASSED] oob_was/14025941587
[14:34:53] [PASSED] oob_was/16030224309
[14:34:53] [PASSED] oob_was/14028709524
[14:34:53] [PASSED] oob_was/14028250015
[14:34:53] [PASSED] oob_was/16031259911
[14:34:53] ============== [PASSED] xe_rtp_table_oob_test ==============
[14:34:53] ================ xe_rtp_table_dev_oob_test  ================
[14:34:53] [PASSED] device_oob_was/22010954014
[14:34:53] [PASSED] device_oob_was/15015404425
[14:34:53] [PASSED] device_oob_was/22019338487_display
[14:34:53] [PASSED] device_oob_was/14022085890
[14:34:53] [PASSED] device_oob_was/14026633728
[14:34:53] [PASSED] device_oob_was/14026746987
[14:34:53] [PASSED] device_oob_was/14026779378
[14:34:53] [PASSED] device_oob_was/14028586678
[14:34:53] [PASSED] device_oob_was/14028434957
[14:34:53] ============ [PASSED] xe_rtp_table_dev_oob_test ============
[14:34:53] ========== xe_rtp_table_missing_upper_bound_test  ==========
[14:34:53] [PASSED] register_whitelist/WaAllowPMDepthAndInvocationCountAccessFromUMD, 1408556865
[14:34:53] [PASSED] register_whitelist/1508744258, 14012131227, 1808121037
[14:34:53] [PASSED] register_whitelist/1806527549
[14:34:53] [PASSED] register_whitelist/allow_read_ctx_timestamp
[14:34:53] [PASSED] register_whitelist/allow_read_queue_timestamp
[14:34:53] [PASSED] register_whitelist/16014440446
[14:34:53] [PASSED] register_whitelist/16017236439
[14:34:53] [PASSED] register_whitelist/16020183090
[14:34:53] [PASSED] register_whitelist/14024997852
[14:34:53] [PASSED] register_whitelist/14024997852
[14:34:53] ====== [PASSED] xe_rtp_table_missing_upper_bound_test ======
[14:34:53] =============== [PASSED] xe_rtp_tables_test ================
[14:34:53] =================== xe_rtp (3 subtests) ====================
[14:34:53] =================== xe_rtp_rules_tests  ====================
[14:34:53] [PASSED] no
[14:34:53] [PASSED] yes
[14:34:53] [PASSED] no-and-no
[14:34:53] [PASSED] no-and-yes
[14:34:53] [PASSED] yes-and-no
[14:34:53] [PASSED] yes-and-yes
[14:34:53] [PASSED] no-or-no
[14:34:53] [PASSED] no-or-yes
[14:34:53] [PASSED] yes-or-no
[14:34:53] [PASSED] yes-or-yes
[14:34:53] [PASSED] no-yes-or-yes-no
[14:34:53] [PASSED] no-yes-or-yes-yes
[14:34:53] [PASSED] yes-yes-or-no-yes
[14:34:53] [PASSED] yes-yes-or-yes-yes
[14:34:53] [PASSED] no-no-or-yes-or-no
[14:34:53] [PASSED] or
[14:34:53] [PASSED] or-yes
[14:34:53] [PASSED] or-no
[14:34:53] [PASSED] yes-or
[14:34:53] [PASSED] no-or
[14:34:53] [PASSED] no-or-or-yes
[14:34:53] [PASSED] yes-or-or-no
[14:34:53] [PASSED] no-or-or-no
[14:34:53] [PASSED] missing-context-engine-class
[14:34:53] [PASSED] missing-context-engine-class-or-yes
[14:34:53] [PASSED] missing-context-engine-class-or-or-yes
[14:34:53] =============== [PASSED] xe_rtp_rules_tests ================
[14:34:53] =============== xe_rtp_process_to_sr_tests  ================
[14:34:53] [PASSED] coalesce-same-reg
[14:34:53] [PASSED] coalesce-same-reg-literal-and-func
[14:34:53] [PASSED] no-match-no-add
[14:34:53] [PASSED] two-regs-two-entries
[14:34:53] [PASSED] clr-one-set-other
[14:34:53] [PASSED] set-field
[14:34:53] [PASSED] conflict-duplicate
[14:34:53] [PASSED] conflict-not-disjoint
[14:34:53] [PASSED] conflict-not-disjoint-literal-and-func
[14:34:53] [PASSED] conflict-reg-type
[14:34:53] [PASSED] bad-mcr-reg-forced-to-regular
[14:34:53] [PASSED] bad-regular-reg-forced-to-mcr
[14:34:53] =========== [PASSED] xe_rtp_process_to_sr_tests ============
[14:34:53] ================== xe_rtp_process_tests  ===================
[14:34:53] [PASSED] active1
[14:34:53] [PASSED] active2
[14:34:53] [PASSED] active-inactive
[14:34:53] [PASSED] inactive-active
[14:34:53] [PASSED] inactive-active-inactive
[14:34:53] [PASSED] inactive-inactive-inactive
[14:34:53] ============== [PASSED] xe_rtp_process_tests ===============
[14:34:53] ===================== [PASSED] xe_rtp ======================
[14:34:53] ==================== xe_wa (1 subtest) =====================
[14:34:53] ======================== xe_wa_gt  =========================
[14:34:53] [PASSED] TIGERLAKE B0
[14:34:53] [PASSED] DG1 A0
[14:34:53] [PASSED] DG1 B0
[14:34:53] [PASSED] ALDERLAKE_S A0
[14:34:53] [PASSED] ALDERLAKE_S B0
[14:34:53] [PASSED] ALDERLAKE_S C0
[14:34:53] [PASSED] ALDERLAKE_S D0
[14:34:53] [PASSED] ALDERLAKE_P A0
[14:34:53] [PASSED] ALDERLAKE_P B0
[14:34:53] [PASSED] ALDERLAKE_P C0
[14:34:53] [PASSED] ALDERLAKE_S RPLS D0
[14:34:53] [PASSED] ALDERLAKE_P RPLU E0
[14:34:53] [PASSED] DG2 G10 C0
[14:34:53] [PASSED] DG2 G11 B1
[14:34:53] [PASSED] DG2 G12 A1
[14:34:53] [PASSED] METEORLAKE 12.70(Xe_LPG) A0 13.00(Xe_LPM+) A0
[14:34:53] [PASSED] METEORLAKE 12.71(Xe_LPG) A0 13.00(Xe_LPM+) A0
[14:34:53] [PASSED] METEORLAKE 12.74(Xe_LPG+) A0 13.00(Xe_LPM+) A0
[14:34:53] [PASSED] LUNARLAKE 20.04(Xe2_LPG) A0 20.00(Xe2_LPM) A0
[14:34:53] [PASSED] LUNARLAKE 20.04(Xe2_LPG) B0 20.00(Xe2_LPM) A0
[14:34:53] [PASSED] BATTLEMAGE 20.01(Xe2_HPG) A0 13.01(Xe2_HPM) A1
[14:34:53] [PASSED] PANTHERLAKE 30.00(Xe3_LPG) A0 30.00(Xe3_LPM) A0
[14:34:53] ==================== [PASSED] xe_wa_gt =====================
[14:34:53] ====================== [PASSED] xe_wa ======================
[14:34:53] ============================================================
[14:34:53] Testing complete. Ran 844 tests: passed: 815, skipped: 29
[14:34:53] Elapsed time: 41.686s total, 2.537s configuring, 38.382s building, 0.711s running

+ for kcfg in "${kunitconfigs[@]}"
+ [[ ! -f /kernel/drivers/gpu/drm/tests/.kunitconfig ]]
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/tests/.kunitconfig
[14:34:53] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[14:34:56] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48
[14:35:21] Starting KUnit Kernel (1/1)...
[14:35:21] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[14:35:21] ============ drm_test_pick_cmdline (2 subtests) ============
[14:35:21] [PASSED] drm_test_pick_cmdline_res_1920_1080_60
[14:35:21] =============== drm_test_pick_cmdline_named  ===============
[14:35:21] [PASSED] NTSC
[14:35:21] [PASSED] NTSC-J
[14:35:21] [PASSED] PAL
[14:35:21] [PASSED] PAL-M
[14:35:21] =========== [PASSED] drm_test_pick_cmdline_named ===========
[14:35:21] ============== [PASSED] drm_test_pick_cmdline ==============
[14:35:21] == drm_test_atomic_get_connector_for_encoder (1 subtest) ===
[14:35:21] [PASSED] drm_test_drm_atomic_get_connector_for_encoder
[14:35:21] ==== [PASSED] drm_test_atomic_get_connector_for_encoder ====
[14:35:21] =========== drm_validate_clone_mode (2 subtests) ===========
[14:35:21] ============== drm_test_check_in_clone_mode  ===============
[14:35:21] [PASSED] in_clone_mode
[14:35:21] [PASSED] not_in_clone_mode
[14:35:21] ========== [PASSED] drm_test_check_in_clone_mode ===========
[14:35:21] =============== drm_test_check_valid_clones  ===============
[14:35:21] [PASSED] not_in_clone_mode
[14:35:21] [PASSED] valid_clone
[14:35:21] [PASSED] invalid_clone
[14:35:21] =========== [PASSED] drm_test_check_valid_clones ===========
[14:35:21] ============= [PASSED] drm_validate_clone_mode =============
[14:35:21] ============= drm_validate_modeset (1 subtest) =============
[14:35:21] [PASSED] drm_test_check_connector_changed_modeset
[14:35:21] ============== [PASSED] drm_validate_modeset ===============
[14:35:21] ====== drm_test_bridge_get_current_state (1 subtest) =======
[14:35:21] [PASSED] drm_test_drm_bridge_get_current_state_atomic
[14:35:21] ======== [PASSED] drm_test_bridge_get_current_state ========
[14:35:21] ====== drm_test_bridge_helper_reset_crtc (3 subtests) ======
[14:35:21] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic
[14:35:21] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic_disabled
[14:35:21] [PASSED] drm_test_drm_bridge_helper_hdmi_output_bus_fmts
[14:35:21] ======== [PASSED] drm_test_bridge_helper_reset_crtc ========
[14:35:21] ============== drm_bridge_alloc (2 subtests) ===============
[14:35:21] [PASSED] drm_test_drm_bridge_alloc_basic
[14:35:21] [PASSED] drm_test_drm_bridge_alloc_get_put
[14:35:21] ================ [PASSED] drm_bridge_alloc =================
[14:35:21] ============= drm_bridge_bus_fmt (5 subtests) ==============
[14:35:21] [PASSED] drm_test_bridge_rgb_yuv_rgb
[14:35:21] [PASSED] drm_test_bridge_must_convert_to_yuv444
[14:35:21] [PASSED] drm_test_bridge_hdmi_auto_rgb
[14:35:21] [PASSED] drm_test_bridge_auto_first
[14:35:21] [PASSED] drm_test_bridge_rgb_yuv_no_path
[14:35:21] =============== [PASSED] drm_bridge_bus_fmt ================
[14:35:21] ============= drm_cmdline_parser (40 subtests) =============
[14:35:21] [PASSED] drm_test_cmdline_force_d_only
[14:35:21] [PASSED] drm_test_cmdline_force_D_only_dvi
[14:35:21] [PASSED] drm_test_cmdline_force_D_only_hdmi
[14:35:21] [PASSED] drm_test_cmdline_force_D_only_not_digital
[14:35:21] [PASSED] drm_test_cmdline_force_e_only
[14:35:21] [PASSED] drm_test_cmdline_res
[14:35:21] [PASSED] drm_test_cmdline_res_vesa
[14:35:21] [PASSED] drm_test_cmdline_res_vesa_rblank
[14:35:21] [PASSED] drm_test_cmdline_res_rblank
[14:35:21] [PASSED] drm_test_cmdline_res_bpp
[14:35:21] [PASSED] drm_test_cmdline_res_refresh
[14:35:21] [PASSED] drm_test_cmdline_res_bpp_refresh
[14:35:21] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced
[14:35:21] [PASSED] drm_test_cmdline_res_bpp_refresh_margins
[14:35:21] [PASSED] drm_test_cmdline_res_bpp_refresh_force_off
[14:35:21] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on
[14:35:21] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_analog
[14:35:21] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_digital
[14:35:21] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced_margins_force_on
[14:35:21] [PASSED] drm_test_cmdline_res_margins_force_on
[14:35:21] [PASSED] drm_test_cmdline_res_vesa_margins
[14:35:21] [PASSED] drm_test_cmdline_name
[14:35:21] [PASSED] drm_test_cmdline_name_bpp
[14:35:21] [PASSED] drm_test_cmdline_name_option
[14:35:21] [PASSED] drm_test_cmdline_name_bpp_option
[14:35:21] [PASSED] drm_test_cmdline_rotate_0
[14:35:21] [PASSED] drm_test_cmdline_rotate_90
[14:35:21] [PASSED] drm_test_cmdline_rotate_180
[14:35:21] [PASSED] drm_test_cmdline_rotate_270
[14:35:21] [PASSED] drm_test_cmdline_hmirror
[14:35:21] [PASSED] drm_test_cmdline_vmirror
[14:35:21] [PASSED] drm_test_cmdline_margin_options
[14:35:21] [PASSED] drm_test_cmdline_multiple_options
[14:35:21] [PASSED] drm_test_cmdline_bpp_extra_and_option
[14:35:21] [PASSED] drm_test_cmdline_extra_and_option
[14:35:21] [PASSED] drm_test_cmdline_freestanding_options
[14:35:21] [PASSED] drm_test_cmdline_freestanding_force_e_and_options
[14:35:21] [PASSED] drm_test_cmdline_panel_orientation
[14:35:21] ================ drm_test_cmdline_invalid  =================
[14:35:21] [PASSED] margin_only
[14:35:21] [PASSED] interlace_only
[14:35:21] [PASSED] res_missing_x
[14:35:21] [PASSED] res_missing_y
[14:35:21] [PASSED] res_bad_y
[14:35:21] [PASSED] res_missing_y_bpp
[14:35:21] [PASSED] res_bad_bpp
[14:35:21] [PASSED] res_bad_refresh
[14:35:21] [PASSED] res_bpp_refresh_force_on_off
[14:35:21] [PASSED] res_invalid_mode
[14:35:21] [PASSED] res_bpp_wrong_place_mode
[14:35:21] [PASSED] name_bpp_refresh
[14:35:21] [PASSED] name_refresh
[14:35:21] [PASSED] name_refresh_wrong_mode
[14:35:21] [PASSED] name_refresh_invalid_mode
[14:35:21] [PASSED] rotate_multiple
[14:35:21] [PASSED] rotate_invalid_val
[14:35:21] [PASSED] rotate_truncated
[14:35:21] [PASSED] invalid_option
[14:35:21] [PASSED] invalid_tv_option
[14:35:21] [PASSED] truncated_tv_option
[14:35:21] ============ [PASSED] drm_test_cmdline_invalid =============
[14:35:21] =============== drm_test_cmdline_tv_options  ===============
[14:35:21] [PASSED] NTSC
[14:35:21] [PASSED] NTSC_443
[14:35:21] [PASSED] NTSC_J
[14:35:21] [PASSED] PAL
[14:35:21] [PASSED] PAL_M
[14:35:21] [PASSED] PAL_N
[14:35:21] [PASSED] SECAM
[14:35:21] [PASSED] MONO_525
[14:35:21] [PASSED] MONO_625
[14:35:21] =========== [PASSED] drm_test_cmdline_tv_options ===========
[14:35:21] =============== [PASSED] drm_cmdline_parser ================
[14:35:21] ========== drmm_connector_hdmi_init (20 subtests) ==========
[14:35:21] [PASSED] drm_test_connector_hdmi_init_valid
[14:35:21] [PASSED] drm_test_connector_hdmi_init_bpc_8
[14:35:21] [PASSED] drm_test_connector_hdmi_init_bpc_10
[14:35:21] [PASSED] drm_test_connector_hdmi_init_bpc_12
[14:35:21] [PASSED] drm_test_connector_hdmi_init_bpc_invalid
[14:35:21] [PASSED] drm_test_connector_hdmi_init_bpc_null
[14:35:21] [PASSED] drm_test_connector_hdmi_init_formats_empty
[14:35:21] [PASSED] drm_test_connector_hdmi_init_formats_no_rgb
[14:35:21] === drm_test_connector_hdmi_init_formats_yuv420_allowed  ===
[14:35:21] [PASSED] supported_formats=0x9 yuv420_allowed=1
[14:35:21] [PASSED] supported_formats=0x9 yuv420_allowed=0
[14:35:21] [PASSED] supported_formats=0x5 yuv420_allowed=1
[14:35:21] [PASSED] supported_formats=0x5 yuv420_allowed=0
[14:35:21] === [PASSED] drm_test_connector_hdmi_init_formats_yuv420_allowed ===
[14:35:21] [PASSED] drm_test_connector_hdmi_init_null_ddc
[14:35:21] [PASSED] drm_test_connector_hdmi_init_null_product
[14:35:21] [PASSED] drm_test_connector_hdmi_init_null_vendor
[14:35:21] [PASSED] drm_test_connector_hdmi_init_product_length_exact
[14:35:21] [PASSED] drm_test_connector_hdmi_init_product_length_too_long
[14:35:21] [PASSED] drm_test_connector_hdmi_init_product_valid
[14:35:21] [PASSED] drm_test_connector_hdmi_init_vendor_length_exact
[14:35:21] [PASSED] drm_test_connector_hdmi_init_vendor_length_too_long
[14:35:21] [PASSED] drm_test_connector_hdmi_init_vendor_valid
[14:35:21] ========= drm_test_connector_hdmi_init_type_valid  =========
[14:35:21] [PASSED] HDMI-A
[14:35:21] [PASSED] HDMI-B
[14:35:21] ===== [PASSED] drm_test_connector_hdmi_init_type_valid =====
[14:35:21] ======== drm_test_connector_hdmi_init_type_invalid  ========
[14:35:21] [PASSED] Unknown
[14:35:21] [PASSED] VGA
[14:35:21] [PASSED] DVI-I
[14:35:21] [PASSED] DVI-D
[14:35:21] [PASSED] DVI-A
[14:35:21] [PASSED] Composite
[14:35:21] [PASSED] SVIDEO
[14:35:21] [PASSED] LVDS
[14:35:21] [PASSED] Component
[14:35:21] [PASSED] DIN
[14:35:21] [PASSED] DP
[14:35:21] [PASSED] TV
[14:35:21] [PASSED] eDP
[14:35:21] [PASSED] Virtual
[14:35:21] [PASSED] DSI
[14:35:21] [PASSED] DPI
[14:35:21] [PASSED] Writeback
[14:35:21] [PASSED] SPI
[14:35:21] [PASSED] USB
[14:35:21] ==== [PASSED] drm_test_connector_hdmi_init_type_invalid ====
[14:35:21] ============ [PASSED] drmm_connector_hdmi_init =============
[14:35:21] ============= drmm_connector_init (3 subtests) =============
[14:35:21] [PASSED] drm_test_drmm_connector_init
[14:35:21] [PASSED] drm_test_drmm_connector_init_null_ddc
[14:35:21] ========= drm_test_drmm_connector_init_type_valid  =========
[14:35:21] [PASSED] Unknown
[14:35:21] [PASSED] VGA
[14:35:21] [PASSED] DVI-I
[14:35:21] [PASSED] DVI-D
[14:35:21] [PASSED] DVI-A
[14:35:21] [PASSED] Composite
[14:35:21] [PASSED] SVIDEO
[14:35:21] [PASSED] LVDS
[14:35:21] [PASSED] Component
[14:35:21] [PASSED] DIN
[14:35:21] [PASSED] DP
[14:35:21] [PASSED] HDMI-A
[14:35:21] [PASSED] HDMI-B
[14:35:21] [PASSED] TV
[14:35:21] [PASSED] eDP
[14:35:21] [PASSED] Virtual
[14:35:21] [PASSED] DSI
[14:35:21] [PASSED] DPI
[14:35:21] [PASSED] Writeback
[14:35:21] [PASSED] SPI
[14:35:21] [PASSED] USB
[14:35:21] ===== [PASSED] drm_test_drmm_connector_init_type_valid =====
[14:35:21] =============== [PASSED] drmm_connector_init ===============
[14:35:21] ========= drm_connector_dynamic_init (6 subtests) ==========
[14:35:21] [PASSED] drm_test_drm_connector_dynamic_init
[14:35:21] [PASSED] drm_test_drm_connector_dynamic_init_null_ddc
[14:35:21] [PASSED] drm_test_drm_connector_dynamic_init_not_added
[14:35:21] [PASSED] drm_test_drm_connector_dynamic_init_properties
[14:35:21] ===== drm_test_drm_connector_dynamic_init_type_valid  ======
[14:35:21] [PASSED] Unknown
[14:35:21] [PASSED] VGA
[14:35:21] [PASSED] DVI-I
[14:35:21] [PASSED] DVI-D
[14:35:21] [PASSED] DVI-A
[14:35:21] [PASSED] Composite
[14:35:21] [PASSED] SVIDEO
[14:35:21] [PASSED] LVDS
[14:35:21] [PASSED] Component
[14:35:21] [PASSED] DIN
[14:35:21] [PASSED] DP
[14:35:21] [PASSED] HDMI-A
[14:35:21] [PASSED] HDMI-B
[14:35:21] [PASSED] TV
[14:35:21] [PASSED] eDP
[14:35:21] [PASSED] Virtual
[14:35:21] [PASSED] DSI
[14:35:21] [PASSED] DPI
[14:35:21] [PASSED] Writeback
[14:35:21] [PASSED] SPI
[14:35:21] [PASSED] USB
[14:35:21] = [PASSED] drm_test_drm_connector_dynamic_init_type_valid ==
[14:35:21] ======== drm_test_drm_connector_dynamic_init_name  =========
[14:35:21] [PASSED] Unknown
[14:35:21] [PASSED] VGA
[14:35:21] [PASSED] DVI-I
[14:35:21] [PASSED] DVI-D
[14:35:21] [PASSED] DVI-A
[14:35:21] [PASSED] Composite
[14:35:21] [PASSED] SVIDEO
[14:35:21] [PASSED] LVDS
[14:35:21] [PASSED] Component
[14:35:21] [PASSED] DIN
[14:35:21] [PASSED] DP
[14:35:21] [PASSED] HDMI-A
[14:35:21] [PASSED] HDMI-B
[14:35:21] [PASSED] TV
[14:35:21] [PASSED] eDP
[14:35:21] [PASSED] Virtual
[14:35:21] [PASSED] DSI
[14:35:21] [PASSED] DPI
[14:35:21] [PASSED] Writeback
[14:35:21] [PASSED] SPI
[14:35:21] [PASSED] USB
[14:35:21] ==== [PASSED] drm_test_drm_connector_dynamic_init_name =====
[14:35:21] =========== [PASSED] drm_connector_dynamic_init ============
[14:35:21] ==== drm_connector_dynamic_register_early (4 subtests) =====
[14:35:21] [PASSED] drm_test_drm_connector_dynamic_register_early_on_list
[14:35:21] [PASSED] drm_test_drm_connector_dynamic_register_early_defer
[14:35:21] [PASSED] drm_test_drm_connector_dynamic_register_early_no_init
[14:35:21] [PASSED] drm_test_drm_connector_dynamic_register_early_no_mode_object
[14:35:21] ====== [PASSED] drm_connector_dynamic_register_early =======
[14:35:21] ======= drm_connector_dynamic_register (7 subtests) ========
[14:35:21] [PASSED] drm_test_drm_connector_dynamic_register_on_list
[14:35:21] [PASSED] drm_test_drm_connector_dynamic_register_no_defer
[14:35:21] [PASSED] drm_test_drm_connector_dynamic_register_no_init
[14:35:21] [PASSED] drm_test_drm_connector_dynamic_register_mode_object
[14:35:21] [PASSED] drm_test_drm_connector_dynamic_register_sysfs
[14:35:21] [PASSED] drm_test_drm_connector_dynamic_register_sysfs_name
[14:35:21] [PASSED] drm_test_drm_connector_dynamic_register_debugfs
[14:35:21] ========= [PASSED] drm_connector_dynamic_register ==========
[14:35:21] = drm_connector_attach_broadcast_rgb_property (2 subtests) =
[14:35:21] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property
[14:35:21] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property_hdmi_connector
[14:35:21] === [PASSED] drm_connector_attach_broadcast_rgb_property ===
[14:35:21] ========== drm_get_tv_mode_from_name (2 subtests) ==========
[14:35:21] ========== drm_test_get_tv_mode_from_name_valid  ===========
[14:35:21] [PASSED] NTSC
[14:35:21] [PASSED] NTSC-443
[14:35:21] [PASSED] NTSC-J
[14:35:21] [PASSED] PAL
[14:35:21] [PASSED] PAL-M
[14:35:21] [PASSED] PAL-N
[14:35:21] [PASSED] SECAM
[14:35:21] [PASSED] Mono
[14:35:21] ====== [PASSED] drm_test_get_tv_mode_from_name_valid =======
[14:35:21] [PASSED] drm_test_get_tv_mode_from_name_truncated
[14:35:21] ============ [PASSED] drm_get_tv_mode_from_name ============
[14:35:21] = drm_test_connector_hdmi_compute_mode_clock (12 subtests) =
[14:35:21] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb
[14:35:21] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc
[14:35:21] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc_vic_1
[14:35:21] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc
[14:35:21] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc_vic_1
[14:35:21] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_double
[14:35:21] = drm_test_connector_hdmi_compute_mode_clock_yuv420_valid  =
[14:35:21] [PASSED] VIC 96
[14:35:21] [PASSED] VIC 97
[14:35:21] [PASSED] VIC 101
[14:35:21] [PASSED] VIC 102
[14:35:21] [PASSED] VIC 106
[14:35:21] [PASSED] VIC 107
[14:35:21] === [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_valid ===
[14:35:21] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_10_bpc
[14:35:21] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_12_bpc
[14:35:21] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_8_bpc
[14:35:21] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_10_bpc
[14:35:21] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_12_bpc
[14:35:21] === [PASSED] drm_test_connector_hdmi_compute_mode_clock ====
[14:35:21] == drm_hdmi_connector_get_broadcast_rgb_name (2 subtests) ==
[14:35:21] === drm_test_drm_hdmi_connector_get_broadcast_rgb_name  ====
[14:35:21] [PASSED] Automatic
[14:35:21] [PASSED] Full
[14:35:21] [PASSED] Limited 16:235
[14:35:21] === [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name ===
[14:35:21] [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name_invalid
[14:35:21] ==== [PASSED] drm_hdmi_connector_get_broadcast_rgb_name ====
[14:35:21] == drm_hdmi_connector_get_output_format_name (2 subtests) ==
[14:35:21] === drm_test_drm_hdmi_connector_get_output_format_name  ====
[14:35:21] [PASSED] RGB
[14:35:21] [PASSED] YUV 4:2:0
[14:35:21] [PASSED] YUV 4:2:2
[14:35:21] [PASSED] YUV 4:4:4
[14:35:21] === [PASSED] drm_test_drm_hdmi_connector_get_output_format_name ===
[14:35:21] [PASSED] drm_test_drm_hdmi_connector_get_output_format_name_invalid
[14:35:21] ==== [PASSED] drm_hdmi_connector_get_output_format_name ====
[14:35:21] ============= drm_damage_helper (21 subtests) ==============
[14:35:21] [PASSED] drm_test_damage_iter_no_damage
[14:35:21] [PASSED] drm_test_damage_iter_no_damage_fractional_src
[14:35:21] [PASSED] drm_test_damage_iter_no_damage_src_moved
[14:35:21] [PASSED] drm_test_damage_iter_no_damage_fractional_src_moved
[14:35:21] [PASSED] drm_test_damage_iter_no_damage_not_visible
[14:35:21] [PASSED] drm_test_damage_iter_no_damage_no_crtc
[14:35:21] [PASSED] drm_test_damage_iter_no_damage_no_fb
[14:35:21] [PASSED] drm_test_damage_iter_simple_damage
[14:35:21] [PASSED] drm_test_damage_iter_single_damage
[14:35:21] [PASSED] drm_test_damage_iter_single_damage_intersect_src
[14:35:21] [PASSED] drm_test_damage_iter_single_damage_outside_src
[14:35:21] [PASSED] drm_test_damage_iter_single_damage_fractional_src
[14:35:21] [PASSED] drm_test_damage_iter_single_damage_intersect_fractional_src
[14:35:21] [PASSED] drm_test_damage_iter_single_damage_outside_fractional_src
[14:35:21] [PASSED] drm_test_damage_iter_single_damage_src_moved
[14:35:21] [PASSED] drm_test_damage_iter_single_damage_fractional_src_moved
[14:35:21] [PASSED] drm_test_damage_iter_damage
[14:35:21] [PASSED] drm_test_damage_iter_damage_one_intersect
[14:35:21] [PASSED] drm_test_damage_iter_damage_one_outside
[14:35:21] [PASSED] drm_test_damage_iter_damage_src_moved
[14:35:21] [PASSED] drm_test_damage_iter_damage_not_visible
[14:35:21] ================ [PASSED] drm_damage_helper ================
[14:35:21] ============== drm_dp_mst_helper (3 subtests) ==============
[14:35:21] ============== drm_test_dp_mst_calc_pbn_mode  ==============
[14:35:21] [PASSED] Clock 154000 BPP 30 DSC disabled
[14:35:21] [PASSED] Clock 234000 BPP 30 DSC disabled
[14:35:21] [PASSED] Clock 297000 BPP 24 DSC disabled
[14:35:21] [PASSED] Clock 332880 BPP 24 DSC enabled
[14:35:21] [PASSED] Clock 324540 BPP 24 DSC enabled
[14:35:21] ========== [PASSED] drm_test_dp_mst_calc_pbn_mode ==========
[14:35:21] ============== drm_test_dp_mst_calc_pbn_div  ===============
[14:35:21] [PASSED] Link rate 2000000 lane count 4
[14:35:21] [PASSED] Link rate 2000000 lane count 2
[14:35:21] [PASSED] Link rate 2000000 lane count 1
[14:35:21] [PASSED] Link rate 1350000 lane count 4
[14:35:21] [PASSED] Link rate 1350000 lane count 2
[14:35:21] [PASSED] Link rate 1350000 lane count 1
[14:35:21] [PASSED] Link rate 1000000 lane count 4
[14:35:21] [PASSED] Link rate 1000000 lane count 2
[14:35:21] [PASSED] Link rate 1000000 lane count 1
[14:35:21] [PASSED] Link rate 810000 lane count 4
[14:35:21] [PASSED] Link rate 810000 lane count 2
[14:35:21] [PASSED] Link rate 810000 lane count 1
[14:35:21] [PASSED] Link rate 540000 lane count 4
[14:35:21] [PASSED] Link rate 540000 lane count 2
[14:35:21] [PASSED] Link rate 540000 lane count 1
[14:35:21] [PASSED] Link rate 270000 lane count 4
[14:35:21] [PASSED] Link rate 270000 lane count 2
[14:35:21] [PASSED] Link rate 270000 lane count 1
[14:35:21] [PASSED] Link rate 162000 lane count 4
[14:35:21] [PASSED] Link rate 162000 lane count 2
[14:35:21] [PASSED] Link rate 162000 lane count 1
[14:35:21] ========== [PASSED] drm_test_dp_mst_calc_pbn_div ===========
[14:35:21] ========= drm_test_dp_mst_sideband_msg_req_decode  =========
[14:35:21] [PASSED] DP_ENUM_PATH_RESOURCES with port number
[14:35:21] [PASSED] DP_POWER_UP_PHY with port number
[14:35:21] [PASSED] DP_POWER_DOWN_PHY with port number
[14:35:21] [PASSED] DP_ALLOCATE_PAYLOAD with SDP stream sinks
[14:35:21] [PASSED] DP_ALLOCATE_PAYLOAD with port number
[14:35:21] [PASSED] DP_ALLOCATE_PAYLOAD with VCPI
[14:35:21] [PASSED] DP_ALLOCATE_PAYLOAD with PBN
[14:35:21] [PASSED] DP_QUERY_PAYLOAD with port number
[14:35:21] [PASSED] DP_QUERY_PAYLOAD with VCPI
[14:35:21] [PASSED] DP_REMOTE_DPCD_READ with port number
[14:35:21] [PASSED] DP_REMOTE_DPCD_READ with DPCD address
[14:35:21] [PASSED] DP_REMOTE_DPCD_READ with max number of bytes
[14:35:21] [PASSED] DP_REMOTE_DPCD_WRITE with port number
[14:35:21] [PASSED] DP_REMOTE_DPCD_WRITE with DPCD address
[14:35:21] [PASSED] DP_REMOTE_DPCD_WRITE with data array
[14:35:21] [PASSED] DP_REMOTE_I2C_READ with port number
[14:35:21] [PASSED] DP_REMOTE_I2C_READ with I2C device ID
[14:35:21] [PASSED] DP_REMOTE_I2C_READ with transactions array
[14:35:21] [PASSED] DP_REMOTE_I2C_WRITE with port number
[14:35:21] [PASSED] DP_REMOTE_I2C_WRITE with I2C device ID
[14:35:21] [PASSED] DP_REMOTE_I2C_WRITE with data array
[14:35:21] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream ID
[14:35:21] [PASSED] DP_QUERY_STREAM_ENC_STATUS with client ID
[14:35:21] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream event
[14:35:21] [PASSED] DP_QUERY_STREAM_ENC_STATUS with valid stream event
[14:35:21] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream behavior
[14:35:21] [PASSED] DP_QUERY_STREAM_ENC_STATUS with a valid stream behavior
[14:35:21] ===== [PASSED] drm_test_dp_mst_sideband_msg_req_decode =====
[14:35:21] ================ [PASSED] drm_dp_mst_helper ================
[14:35:21] ================== drm_exec (7 subtests) ===================
[14:35:21] [PASSED] sanitycheck
[14:35:21] [PASSED] test_lock
[14:35:21] [PASSED] test_lock_unlock
[14:35:21] [PASSED] test_duplicates
[14:35:21] [PASSED] test_prepare
[14:35:21] [PASSED] test_prepare_array
[14:35:21] [PASSED] test_multiple_loops
[14:35:21] ==================== [PASSED] drm_exec =====================
[14:35:21] =========== drm_format_helper_test (17 subtests) ===========
[14:35:21] ============== drm_test_fb_xrgb8888_to_gray8  ==============
[14:35:21] [PASSED] single_pixel_source_buffer
[14:35:21] [PASSED] single_pixel_clip_rectangle
[14:35:21] [PASSED] well_known_colors
[14:35:21] [PASSED] destination_pitch
[14:35:21] ========== [PASSED] drm_test_fb_xrgb8888_to_gray8 ==========
[14:35:21] ============= drm_test_fb_xrgb8888_to_rgb332  ==============
[14:35:21] [PASSED] single_pixel_source_buffer
[14:35:21] [PASSED] single_pixel_clip_rectangle
[14:35:21] [PASSED] well_known_colors
[14:35:21] [PASSED] destination_pitch
[14:35:21] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb332 ==========
[14:35:21] ============= drm_test_fb_xrgb8888_to_rgb565  ==============
[14:35:21] [PASSED] single_pixel_source_buffer
[14:35:21] [PASSED] single_pixel_clip_rectangle
[14:35:21] [PASSED] well_known_colors
[14:35:21] [PASSED] destination_pitch
[14:35:21] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb565 ==========
[14:35:21] ============ drm_test_fb_xrgb8888_to_xrgb1555  =============
[14:35:21] [PASSED] single_pixel_source_buffer
[14:35:21] [PASSED] single_pixel_clip_rectangle
[14:35:21] [PASSED] well_known_colors
[14:35:21] [PASSED] destination_pitch
[14:35:21] ======== [PASSED] drm_test_fb_xrgb8888_to_xrgb1555 =========
[14:35:21] ============ drm_test_fb_xrgb8888_to_argb1555  =============
[14:35:21] [PASSED] single_pixel_source_buffer
[14:35:21] [PASSED] single_pixel_clip_rectangle
[14:35:21] [PASSED] well_known_colors
[14:35:21] [PASSED] destination_pitch
[14:35:21] ======== [PASSED] drm_test_fb_xrgb8888_to_argb1555 =========
[14:35:21] ============ drm_test_fb_xrgb8888_to_rgba5551  =============
[14:35:21] [PASSED] single_pixel_source_buffer
[14:35:21] [PASSED] single_pixel_clip_rectangle
[14:35:21] [PASSED] well_known_colors
[14:35:21] [PASSED] destination_pitch
[14:35:21] ======== [PASSED] drm_test_fb_xrgb8888_to_rgba5551 =========
[14:35:21] ============= drm_test_fb_xrgb8888_to_rgb888  ==============
[14:35:21] [PASSED] single_pixel_source_buffer
[14:35:21] [PASSED] single_pixel_clip_rectangle
[14:35:21] [PASSED] well_known_colors
[14:35:21] [PASSED] destination_pitch
[14:35:21] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb888 ==========
[14:35:21] ============= drm_test_fb_xrgb8888_to_bgr888  ==============
[14:35:21] [PASSED] single_pixel_source_buffer
[14:35:21] [PASSED] single_pixel_clip_rectangle
[14:35:21] [PASSED] well_known_colors
[14:35:21] [PASSED] destination_pitch
[14:35:21] ========= [PASSED] drm_test_fb_xrgb8888_to_bgr888 ==========
[14:35:21] ============ drm_test_fb_xrgb8888_to_argb8888  =============
[14:35:21] [PASSED] single_pixel_source_buffer
[14:35:21] [PASSED] single_pixel_clip_rectangle
[14:35:21] [PASSED] well_known_colors
[14:35:21] [PASSED] destination_pitch
[14:35:21] ======== [PASSED] drm_test_fb_xrgb8888_to_argb8888 =========
[14:35:21] =========== drm_test_fb_xrgb8888_to_xrgb2101010  ===========
[14:35:21] [PASSED] single_pixel_source_buffer
[14:35:21] [PASSED] single_pixel_clip_rectangle
[14:35:21] [PASSED] well_known_colors
[14:35:21] [PASSED] destination_pitch
[14:35:21] ======= [PASSED] drm_test_fb_xrgb8888_to_xrgb2101010 =======
[14:35:21] =========== drm_test_fb_xrgb8888_to_argb2101010  ===========
[14:35:21] [PASSED] single_pixel_source_buffer
[14:35:21] [PASSED] single_pixel_clip_rectangle
[14:35:21] [PASSED] well_known_colors
[14:35:21] [PASSED] destination_pitch
[14:35:21] ======= [PASSED] drm_test_fb_xrgb8888_to_argb2101010 =======
[14:35:21] ============== drm_test_fb_xrgb8888_to_mono  ===============
[14:35:21] [PASSED] single_pixel_source_buffer
[14:35:21] [PASSED] single_pixel_clip_rectangle
[14:35:21] [PASSED] well_known_colors
[14:35:21] [PASSED] destination_pitch
[14:35:21] ========== [PASSED] drm_test_fb_xrgb8888_to_mono ===========
[14:35:21] ==================== drm_test_fb_swab  =====================
[14:35:21] [PASSED] single_pixel_source_buffer
[14:35:21] [PASSED] single_pixel_clip_rectangle
[14:35:21] [PASSED] well_known_colors
[14:35:21] [PASSED] destination_pitch
[14:35:21] ================ [PASSED] drm_test_fb_swab =================
[14:35:21] ============ drm_test_fb_xrgb8888_to_xbgr8888  =============
[14:35:21] [PASSED] single_pixel_source_buffer
[14:35:21] [PASSED] single_pixel_clip_rectangle
[14:35:21] [PASSED] well_known_colors
[14:35:21] [PASSED] destination_pitch
[14:35:21] ======== [PASSED] drm_test_fb_xrgb8888_to_xbgr8888 =========
[14:35:21] ============ drm_test_fb_xrgb8888_to_abgr8888  =============
[14:35:21] [PASSED] single_pixel_source_buffer
[14:35:21] [PASSED] single_pixel_clip_rectangle
[14:35:21] [PASSED] well_known_colors
[14:35:21] [PASSED] destination_pitch
[14:35:21] ======== [PASSED] drm_test_fb_xrgb8888_to_abgr8888 =========
[14:35:21] ================= drm_test_fb_clip_offset  =================
[14:35:21] [PASSED] pass through
[14:35:21] [PASSED] horizontal offset
[14:35:21] [PASSED] vertical offset
[14:35:21] [PASSED] horizontal and vertical offset
[14:35:21] [PASSED] horizontal offset (custom pitch)
[14:35:21] [PASSED] vertical offset (custom pitch)
[14:35:21] [PASSED] horizontal and vertical offset (custom pitch)
[14:35:21] ============= [PASSED] drm_test_fb_clip_offset =============
[14:35:21] =================== drm_test_fb_memcpy  ====================
[14:35:21] [PASSED] single_pixel_source_buffer: XR24 little-endian (0x34325258)
[14:35:21] [PASSED] single_pixel_source_buffer: XRA8 little-endian (0x38415258)
[14:35:21] [PASSED] single_pixel_source_buffer: YU24 little-endian (0x34325559)
[14:35:21] [PASSED] single_pixel_clip_rectangle: XB24 little-endian (0x34324258)
[14:35:21] [PASSED] single_pixel_clip_rectangle: XRA8 little-endian (0x38415258)
[14:35:21] [PASSED] single_pixel_clip_rectangle: YU24 little-endian (0x34325559)
[14:35:21] [PASSED] well_known_colors: XB24 little-endian (0x34324258)
[14:35:21] [PASSED] well_known_colors: XRA8 little-endian (0x38415258)
[14:35:21] [PASSED] well_known_colors: YU24 little-endian (0x34325559)
[14:35:21] [PASSED] destination_pitch: XB24 little-endian (0x34324258)
[14:35:21] [PASSED] destination_pitch: XRA8 little-endian (0x38415258)
[14:35:21] [PASSED] destination_pitch: YU24 little-endian (0x34325559)
[14:35:21] =============== [PASSED] drm_test_fb_memcpy ================
[14:35:21] ============= [PASSED] drm_format_helper_test ==============
[14:35:21] ================= drm_format (18 subtests) =================
[14:35:21] [PASSED] drm_test_format_block_width_invalid
[14:35:21] [PASSED] drm_test_format_block_width_one_plane
[14:35:21] [PASSED] drm_test_format_block_width_two_plane
[14:35:21] [PASSED] drm_test_format_block_width_three_plane
[14:35:21] [PASSED] drm_test_format_block_width_tiled
[14:35:21] [PASSED] drm_test_format_block_height_invalid
[14:35:21] [PASSED] drm_test_format_block_height_one_plane
[14:35:21] [PASSED] drm_test_format_block_height_two_plane
[14:35:21] [PASSED] drm_test_format_block_height_three_plane
[14:35:21] [PASSED] drm_test_format_block_height_tiled
[14:35:21] [PASSED] drm_test_format_min_pitch_invalid
[14:35:21] [PASSED] drm_test_format_min_pitch_one_plane_8bpp
[14:35:21] [PASSED] drm_test_format_min_pitch_one_plane_16bpp
[14:35:21] [PASSED] drm_test_format_min_pitch_one_plane_24bpp
[14:35:21] [PASSED] drm_test_format_min_pitch_one_plane_32bpp
[14:35:21] [PASSED] drm_test_format_min_pitch_two_plane
[14:35:21] [PASSED] drm_test_format_min_pitch_three_plane_8bpp
[14:35:21] [PASSED] drm_test_format_min_pitch_tiled
[14:35:21] =================== [PASSED] drm_format ====================
[14:35:21] ============== drm_framebuffer (10 subtests) ===============
[14:35:21] ========== drm_test_framebuffer_check_src_coords  ==========
[14:35:21] [PASSED] Success: source fits into fb
[14:35:21] [PASSED] Fail: overflowing fb with x-axis coordinate
[14:35:21] [PASSED] Fail: overflowing fb with y-axis coordinate
[14:35:21] [PASSED] Fail: overflowing fb with source width
[14:35:21] [PASSED] Fail: overflowing fb with source height
[14:35:21] ====== [PASSED] drm_test_framebuffer_check_src_coords ======
[14:35:21] [PASSED] drm_test_framebuffer_cleanup
[14:35:21] =============== drm_test_framebuffer_create  ===============
[14:35:21] [PASSED] ABGR8888 normal sizes
[14:35:21] [PASSED] ABGR8888 max sizes
[14:35:21] [PASSED] ABGR8888 pitch greater than min required
[14:35:21] [PASSED] ABGR8888 pitch less than min required
[14:35:21] [PASSED] ABGR8888 Invalid width
[14:35:21] [PASSED] ABGR8888 Invalid buffer handle
[14:35:21] [PASSED] No pixel format
[14:35:21] [PASSED] ABGR8888 Width 0
[14:35:21] [PASSED] ABGR8888 Height 0
[14:35:21] [PASSED] ABGR8888 Out of bound height * pitch combination
[14:35:21] [PASSED] ABGR8888 Large buffer offset
[14:35:21] [PASSED] ABGR8888 Buffer offset for inexistent plane
[14:35:21] [PASSED] ABGR8888 Invalid flag
[14:35:21] [PASSED] ABGR8888 Set DRM_MODE_FB_MODIFIERS without modifiers
[14:35:21] [PASSED] ABGR8888 Valid buffer modifier
[14:35:21] [PASSED] ABGR8888 Invalid buffer modifier(DRM_FORMAT_MOD_SAMSUNG_64_32_TILE)
[14:35:21] [PASSED] ABGR8888 Extra pitches without DRM_MODE_FB_MODIFIERS
[14:35:21] [PASSED] ABGR8888 Extra pitches with DRM_MODE_FB_MODIFIERS
[14:35:21] [PASSED] NV12 Normal sizes
[14:35:21] [PASSED] NV12 Max sizes
[14:35:21] [PASSED] NV12 Invalid pitch
[14:35:21] [PASSED] NV12 Invalid modifier/missing DRM_MODE_FB_MODIFIERS flag
[14:35:21] [PASSED] NV12 different  modifier per-plane
[14:35:21] [PASSED] NV12 with DRM_FORMAT_MOD_SAMSUNG_64_32_TILE
[14:35:21] [PASSED] NV12 Valid modifiers without DRM_MODE_FB_MODIFIERS
[14:35:21] [PASSED] NV12 Modifier for inexistent plane
[14:35:21] [PASSED] NV12 Handle for inexistent plane
[14:35:21] [PASSED] NV12 Handle for inexistent plane without DRM_MODE_FB_MODIFIERS
[14:35:21] [PASSED] YVU420 DRM_MODE_FB_MODIFIERS set without modifier
[14:35:21] [PASSED] YVU420 Normal sizes
[14:35:21] [PASSED] YVU420 Max sizes
[14:35:21] [PASSED] YVU420 Invalid pitch
[14:35:21] [PASSED] YVU420 Different pitches
[14:35:21] [PASSED] YVU420 Different buffer offsets/pitches
[14:35:21] [PASSED] YVU420 Modifier set just for plane 0, without DRM_MODE_FB_MODIFIERS
[14:35:21] [PASSED] YVU420 Modifier set just for planes 0, 1, without DRM_MODE_FB_MODIFIERS
[14:35:21] [PASSED] YVU420 Modifier set just for plane 0, 1, with DRM_MODE_FB_MODIFIERS
[14:35:21] [PASSED] YVU420 Valid modifier
[14:35:21] [PASSED] YVU420 Different modifiers per plane
[14:35:21] [PASSED] YVU420 Modifier for inexistent plane
[14:35:21] [PASSED] YUV420_10BIT Invalid modifier(DRM_FORMAT_MOD_LINEAR)
[14:35:21] [PASSED] X0L2 Normal sizes
[14:35:21] [PASSED] X0L2 Max sizes
[14:35:21] [PASSED] X0L2 Invalid pitch
[14:35:21] [PASSED] X0L2 Pitch greater than minimum required
[14:35:21] [PASSED] X0L2 Handle for inexistent plane
[14:35:21] [PASSED] X0L2 Offset for inexistent plane, without DRM_MODE_FB_MODIFIERS set
[14:35:21] [PASSED] X0L2 Modifier without DRM_MODE_FB_MODIFIERS set
[14:35:21] [PASSED] X0L2 Valid modifier
[14:35:21] [PASSED] X0L2 Modifier for inexistent plane
[14:35:21] =========== [PASSED] drm_test_framebuffer_create ===========
[14:35:21] [PASSED] drm_test_framebuffer_free
[14:35:21] [PASSED] drm_test_framebuffer_init
[14:35:21] [PASSED] drm_test_framebuffer_init_bad_format
[14:35:21] [PASSED] drm_test_framebuffer_init_dev_mismatch
[14:35:21] [PASSED] drm_test_framebuffer_lookup
[14:35:21] [PASSED] drm_test_framebuffer_lookup_inexistent
[14:35:21] [PASSED] drm_test_framebuffer_modifiers_not_supported
[14:35:21] ================= [PASSED] drm_framebuffer =================
[14:35:21] ================ drm_gem_shmem (8 subtests) ================
[14:35:21] [PASSED] drm_gem_shmem_test_obj_create
[14:35:21] [PASSED] drm_gem_shmem_test_obj_create_private
[14:35:21] [PASSED] drm_gem_shmem_test_pin_pages
[14:35:21] [PASSED] drm_gem_shmem_test_vmap
[14:35:21] [PASSED] drm_gem_shmem_test_get_sg_table
[14:35:21] [PASSED] drm_gem_shmem_test_get_pages_sgt
[14:35:21] [PASSED] drm_gem_shmem_test_madvise
[14:35:21] [PASSED] drm_gem_shmem_test_purge
[14:35:21] ================== [PASSED] drm_gem_shmem ==================
[14:35:21] === drm_atomic_helper_connector_hdmi_check (29 subtests) ===
[14:35:21] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode
[14:35:21] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode_vic_1
[14:35:21] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode
[14:35:21] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode_vic_1
[14:35:21] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode
[14:35:21] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode_vic_1
[14:35:21] ====== drm_test_check_broadcast_rgb_cea_mode_yuv420  =======
[14:35:21] [PASSED] Automatic
[14:35:21] [PASSED] Full
[14:35:21] [PASSED] Limited 16:235
[14:35:21] == [PASSED] drm_test_check_broadcast_rgb_cea_mode_yuv420 ===
[14:35:21] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_changed
[14:35:21] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_not_changed
[14:35:21] [PASSED] drm_test_check_disable_connector
[14:35:21] [PASSED] drm_test_check_hdmi_funcs_reject_rate
[14:35:21] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_rgb
[14:35:21] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_yuv420
[14:35:21] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv422
[14:35:21] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv420
[14:35:21] [PASSED] drm_test_check_driver_unsupported_fallback_yuv420
[14:35:21] [PASSED] drm_test_check_output_bpc_crtc_mode_changed
[14:35:21] [PASSED] drm_test_check_output_bpc_crtc_mode_not_changed
[14:35:21] [PASSED] drm_test_check_output_bpc_dvi
[14:35:21] [PASSED] drm_test_check_output_bpc_format_vic_1
[14:35:21] [PASSED] drm_test_check_output_bpc_format_display_8bpc_only
[14:35:21] [PASSED] drm_test_check_output_bpc_format_display_rgb_only
[14:35:21] [PASSED] drm_test_check_output_bpc_format_driver_8bpc_only
[14:35:21] [PASSED] drm_test_check_output_bpc_format_driver_rgb_only
[14:35:21] [PASSED] drm_test_check_tmds_char_rate_rgb_8bpc
[14:35:21] [PASSED] drm_test_check_tmds_char_rate_rgb_10bpc
[14:35:21] [PASSED] drm_test_check_tmds_char_rate_rgb_12bpc
[14:35:21] ============ drm_test_check_hdmi_color_format  =============
[14:35:21] [PASSED] AUTO -> RGB
[14:35:21] [PASSED] YCBCR422 -> YUV422
[14:35:21] [PASSED] YCBCR420 -> YUV420
[14:35:21] [PASSED] YCBCR444 -> YUV444
[14:35:21] [PASSED] RGB -> RGB
[14:35:21] ======== [PASSED] drm_test_check_hdmi_color_format =========
[14:35:21] ======== drm_test_check_hdmi_color_format_420_only  ========
[14:35:21] [PASSED] RGB should fail
[14:35:21] [PASSED] YUV444 should fail
[14:35:21] [PASSED] YUV422 should fail
[14:35:21] [PASSED] YUV420 should work
[14:35:21] ==== [PASSED] drm_test_check_hdmi_color_format_420_only ====
[14:35:21] ===== [PASSED] drm_atomic_helper_connector_hdmi_check ======
[14:35:21] === drm_atomic_helper_connector_hdmi_reset (6 subtests) ====
[14:35:21] [PASSED] drm_test_check_broadcast_rgb_value
[14:35:21] [PASSED] drm_test_check_bpc_8_value
[14:35:21] [PASSED] drm_test_check_bpc_10_value
[14:35:21] [PASSED] drm_test_check_bpc_12_value
[14:35:21] [PASSED] drm_test_check_format_value
[14:35:21] [PASSED] drm_test_check_tmds_char_value
[14:35:21] ===== [PASSED] drm_atomic_helper_connector_hdmi_reset ======
[14:35:21] = drm_atomic_helper_connector_hdmi_mode_valid (7 subtests) =
[14:35:21] [PASSED] drm_test_check_mode_valid
[14:35:21] [PASSED] drm_test_check_mode_valid_reject
[14:35:21] [PASSED] drm_test_check_mode_valid_reject_rate
[14:35:21] [PASSED] drm_test_check_mode_valid_reject_max_clock
[14:35:21] [PASSED] drm_test_check_mode_valid_yuv420_only_max_clock
[14:35:21] [PASSED] drm_test_check_mode_valid_reject_yuv420_only_connector
[14:35:21] [PASSED] drm_test_check_mode_valid_accept_yuv420_also_connector_rgb
[14:35:21] === [PASSED] drm_atomic_helper_connector_hdmi_mode_valid ===
[14:35:21] = drm_atomic_helper_connector_hdmi_infoframes (5 subtests) =
[14:35:21] [PASSED] drm_test_check_infoframes
[14:35:21] [PASSED] drm_test_check_reject_avi_infoframe
[14:35:21] [PASSED] drm_test_check_reject_hdr_infoframe_bpc_8
[14:35:21] [PASSED] drm_test_check_reject_hdr_infoframe_bpc_10
[14:35:21] [PASSED] drm_test_check_reject_audio_infoframe
[14:35:21] === [PASSED] drm_atomic_helper_connector_hdmi_infoframes ===
[14:35:21] ================= drm_managed (2 subtests) =================
[14:35:21] [PASSED] drm_test_managed_release_action
[14:35:21] [PASSED] drm_test_managed_run_action
[14:35:21] =================== [PASSED] drm_managed ===================
[14:35:21] =================== drm_mm (6 subtests) ====================
[14:35:21] [PASSED] drm_test_mm_init
[14:35:21] [PASSED] drm_test_mm_debug
[14:35:21] [PASSED] drm_test_mm_align32
[14:35:21] [PASSED] drm_test_mm_align64
[14:35:21] [PASSED] drm_test_mm_lowest
[14:35:21] [PASSED] drm_test_mm_highest
[14:35:21] ===================== [PASSED] drm_mm ======================
[14:35:21] ============= drm_modes_analog_tv (5 subtests) =============
[14:35:21] [PASSED] drm_test_modes_analog_tv_mono_576i
[14:35:21] [PASSED] drm_test_modes_analog_tv_ntsc_480i
[14:35:21] [PASSED] drm_test_modes_analog_tv_ntsc_480i_inlined
[14:35:21] [PASSED] drm_test_modes_analog_tv_pal_576i
[14:35:21] [PASSED] drm_test_modes_analog_tv_pal_576i_inlined
[14:35:21] =============== [PASSED] drm_modes_analog_tv ===============
[14:35:21] ============== drm_panic_helper (3 subtests) ===============
[14:35:21] ============= drm_test_panic_screen_user_map  ==============
[14:35:21] [PASSED] Panic screen user, mode: 1024 x 768 	XR24 little-endian (0x34325258)
[14:35:21] [PASSED] Panic screen user, mode: 494 x 494 	XR24 little-endian (0x34325258)
[14:35:21] [PASSED] Panic screen user, mode: 1920 x 1080 	XR24 little-endian (0x34325258)
[14:35:21] [PASSED] Panic screen user, mode: 1024 x 768 	RG16 little-endian (0x36314752)
[14:35:21] [PASSED] Panic screen user, mode: 1024 x 768 	RG24 little-endian (0x34324752)
[14:35:21] [PASSED] Panic screen kmsg, mode: 1024 x 768 	XR24 little-endian (0x34325258)
[14:35:21] [PASSED] Panic screen kmsg, mode: 494 x 494 	XR24 little-endian (0x34325258)
[14:35:21] [PASSED] Panic screen kmsg, mode: 1920 x 1080 	XR24 little-endian (0x34325258)
[14:35:21] [PASSED] Panic screen kmsg, mode: 1024 x 768 	RG16 little-endian (0x36314752)
[14:35:21] [PASSED] Panic screen kmsg, mode: 1024 x 768 	RG24 little-endian (0x34324752)
[14:35:21] ========= [PASSED] drm_test_panic_screen_user_map ==========
[14:35:21] ============= drm_test_panic_screen_user_page  =============
[14:35:21] [PASSED] Panic screen user, mode: 1024 x 768 	XR24 little-endian (0x34325258)
[14:35:21] [PASSED] Panic screen user, mode: 494 x 494 	XR24 little-endian (0x34325258)
[14:35:21] [PASSED] Panic screen user, mode: 1920 x 1080 	XR24 little-endian (0x34325258)
[14:35:21] [PASSED] Panic screen user, mode: 1024 x 768 	RG16 little-endian (0x36314752)
[14:35:21] [PASSED] Panic screen user, mode: 1024 x 768 	RG24 little-endian (0x34324752)
[14:35:21] [PASSED] Panic screen kmsg, mode: 1024 x 768 	XR24 little-endian (0x34325258)
[14:35:21] [PASSED] Panic screen kmsg, mode: 494 x 494 	XR24 little-endian (0x34325258)
[14:35:21] [PASSED] Panic screen kmsg, mode: 1920 x 1080 	XR24 little-endian (0x34325258)
[14:35:21] [PASSED] Panic screen kmsg, mode: 1024 x 768 	RG16 little-endian (0x36314752)
[14:35:21] [PASSED] Panic screen kmsg, mode: 1024 x 768 	RG24 little-endian (0x34324752)
[14:35:21] ========= [PASSED] drm_test_panic_screen_user_page =========
[14:35:21] ========== drm_test_panic_screen_user_set_pixel  ===========
[14:35:21] [PASSED] Panic screen user, mode: 1024 x 768 	XR24 little-endian (0x34325258)
[14:35:21] [PASSED] Panic screen user, mode: 494 x 494 	XR24 little-endian (0x34325258)
[14:35:21] [PASSED] Panic screen user, mode: 1920 x 1080 	XR24 little-endian (0x34325258)
[14:35:21] [PASSED] Panic screen user, mode: 1024 x 768 	RG16 little-endian (0x36314752)
[14:35:21] [PASSED] Panic screen user, mode: 1024 x 768 	RG24 little-endian (0x34324752)
[14:35:21] [PASSED] Panic screen kmsg, mode: 1024 x 768 	XR24 little-endian (0x34325258)
[14:35:21] [PASSED] Panic screen kmsg, mode: 494 x 494 	XR24 little-endian (0x34325258)
[14:35:21] [PASSED] Panic screen kmsg, mode: 1920 x 1080 	XR24 little-endian (0x34325258)
[14:35:21] [PASSED] Panic screen kmsg, mode: 1024 x 768 	RG16 little-endian (0x36314752)
[14:35:21] [PASSED] Panic screen kmsg, mode: 1024 x 768 	RG24 little-endian (0x34324752)
[14:35:21] ====== [PASSED] drm_test_panic_screen_user_set_pixel =======
[14:35:21] ================ [PASSED] drm_panic_helper =================
[14:35:21] ============== drm_plane_helper (2 subtests) ===============
[14:35:21] =============== drm_test_check_plane_state  ================
[14:35:21] [PASSED] clipping_simple
[14:35:21] [PASSED] clipping_rotate_reflect
[14:35:21] [PASSED] positioning_simple
[14:35:21] [PASSED] upscaling
[14:35:21] [PASSED] downscaling
[14:35:21] [PASSED] rounding1
[14:35:21] [PASSED] rounding2
[14:35:21] [PASSED] rounding3
[14:35:21] [PASSED] rounding4
[14:35:21] =========== [PASSED] drm_test_check_plane_state ============
[14:35:21] =========== drm_test_check_invalid_plane_state  ============
[14:35:21] [PASSED] positioning_invalid
[14:35:21] [PASSED] upscaling_invalid
[14:35:21] [PASSED] downscaling_invalid
[14:35:21] ======= [PASSED] drm_test_check_invalid_plane_state ========
[14:35:21] ================ [PASSED] drm_plane_helper =================
[14:35:21] ====== drm_connector_helper_tv_get_modes (1 subtest) =======
[14:35:21] ====== drm_test_connector_helper_tv_get_modes_check  =======
[14:35:21] [PASSED] None
[14:35:21] [PASSED] PAL
[14:35:21] [PASSED] NTSC
[14:35:21] [PASSED] Both, NTSC Default
[14:35:21] [PASSED] Both, PAL Default
[14:35:21] [PASSED] Both, NTSC Default, with PAL on command-line
[14:35:21] [PASSED] Both, PAL Default, with NTSC on command-line
[14:35:21] == [PASSED] drm_test_connector_helper_tv_get_modes_check ===
[14:35:21] ======== [PASSED] drm_connector_helper_tv_get_modes ========
[14:35:21] ================== drm_rect (9 subtests) ===================
[14:35:21] [PASSED] drm_test_rect_clip_scaled_div_by_zero
[14:35:21] [PASSED] drm_test_rect_clip_scaled_not_clipped
[14:35:21] [PASSED] drm_test_rect_clip_scaled_clipped
[14:35:21] [PASSED] drm_test_rect_clip_scaled_signed_vs_unsigned
[14:35:21] ================= drm_test_rect_intersect  =================
[14:35:21] [PASSED] top-left x bottom-right: 2x2+1+1 x 2x2+0+0
[14:35:21] [PASSED] top-right x bottom-left: 2x2+0+0 x 2x2+1-1
[14:35:21] [PASSED] bottom-left x top-right: 2x2+1-1 x 2x2+0+0
[14:35:21] [PASSED] bottom-right x top-left: 2x2+0+0 x 2x2+1+1
[14:35:21] [PASSED] right x left: 2x1+0+0 x 3x1+1+0
[14:35:21] [PASSED] left x right: 3x1+1+0 x 2x1+0+0
[14:35:21] [PASSED] up x bottom: 1x2+0+0 x 1x3+0-1
[14:35:21] [PASSED] bottom x up: 1x3+0-1 x 1x2+0+0
[14:35:21] [PASSED] touching corner: 1x1+0+0 x 2x2+1+1
[14:35:21] [PASSED] touching side: 1x1+0+0 x 1x1+1+0
[14:35:21] [PASSED] equal rects: 2x2+0+0 x 2x2+0+0
[14:35:21] [PASSED] inside another: 2x2+0+0 x 1x1+1+1
[14:35:21] [PASSED] far away: 1x1+0+0 x 1x1+3+6
[14:35:21] [PASSED] points intersecting: 0x0+5+10 x 0x0+5+10
[14:35:21] [PASSED] points not intersecting: 0x0+0+0 x 0x0+5+10
[14:35:21] ============= [PASSED] drm_test_rect_intersect =============
[14:35:21] ================ drm_test_rect_calc_hscale  ================
[14:35:21] [PASSED] normal use
[14:35:21] [PASSED] out of max range
[14:35:21] [PASSED] out of min range
[14:35:21] [PASSED] zero dst
[14:35:21] [PASSED] negative src
[14:35:21] [PASSED] negative dst
[14:35:21] ============ [PASSED] drm_test_rect_calc_hscale ============
[14:35:21] ================ drm_test_rect_calc_vscale  ================
[14:35:21] [PASSED] normal use
[14:35:21] [PASSED] out of max range
[14:35:21] [PASSED] out of min range
[14:35:21] [PASSED] zero dst
[14:35:21] [PASSED] negative src
[14:35:21] [PASSED] negative dst
[14:35:21] ============ [PASSED] drm_test_rect_calc_vscale ============
[14:35:21] ================== drm_test_rect_rotate  ===================
[14:35:21] [PASSED] reflect-x
[14:35:21] [PASSED] reflect-y
[14:35:21] [PASSED] rotate-0
[14:35:21] [PASSED] rotate-90
[14:35:21] [PASSED] rotate-180
[14:35:21] [PASSED] rotate-270
[14:35:21] ============== [PASSED] drm_test_rect_rotate ===============
[14:35:21] ================ drm_test_rect_rotate_inv  =================
[14:35:21] [PASSED] reflect-x
[14:35:21] [PASSED] reflect-y
[14:35:21] [PASSED] rotate-0
[14:35:21] [PASSED] rotate-90
[14:35:21] [PASSED] rotate-180
[14:35:21] [PASSED] rotate-270
[14:35:21] ============ [PASSED] drm_test_rect_rotate_inv =============
[14:35:21] ==================== [PASSED] drm_rect =====================
[14:35:21] ============ drm_sysfb_modeset_test (1 subtest) ============
[14:35:21] ============ drm_test_sysfb_build_fourcc_list  =============
[14:35:21] [PASSED] no native formats
[14:35:21] [PASSED] XRGB8888 as native format
[14:35:21] [PASSED] remove duplicates
[14:35:21] [PASSED] convert alpha formats
[14:35:21] [PASSED] random formats
[14:35:21] ======== [PASSED] drm_test_sysfb_build_fourcc_list =========
[14:35:21] ============= [PASSED] drm_sysfb_modeset_test ==============
[14:35:21] ================== drm_fixp (2 subtests) ===================
[14:35:21] [PASSED] drm_test_int2fixp
[14:35:21] [PASSED] drm_test_sm2fixp
[14:35:21] ==================== [PASSED] drm_fixp =====================
[14:35:21] ============================================================
[14:35:21] Testing complete. Ran 667 tests: passed: 667
[14:35:21] Elapsed time: 27.959s total, 2.529s configuring, 24.964s building, 0.445s running

+ for kcfg in "${kunitconfigs[@]}"
+ [[ ! -f /kernel/drivers/gpu/drm/ttm/tests/.kunitconfig ]]
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/ttm/tests/.kunitconfig
[14:35:21] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[14:35:24] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48
[14:35:34] Starting KUnit Kernel (1/1)...
[14:35:34] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[14:35:34] ================= ttm_device (5 subtests) ==================
[14:35:34] [PASSED] ttm_device_init_basic
[14:35:34] [PASSED] ttm_device_init_multiple
[14:35:34] [PASSED] ttm_device_fini_basic
[14:35:34] [PASSED] ttm_device_init_no_vma_man
[14:35:34] ================== ttm_device_init_pools  ==================
[14:35:34] [PASSED] No DMA allocations, no DMA32 required
[14:35:34] [PASSED] DMA allocations, DMA32 required
[14:35:34] [PASSED] No DMA allocations, DMA32 required
[14:35:34] [PASSED] DMA allocations, no DMA32 required
[14:35:34] ============== [PASSED] ttm_device_init_pools ==============
[14:35:34] =================== [PASSED] ttm_device ====================
[14:35:34] ================== ttm_pool (8 subtests) ===================
[14:35:34] ================== ttm_pool_alloc_basic  ===================
[14:35:34] [PASSED] One page
[14:35:34] [PASSED] More than one page
[14:35:34] [PASSED] Above the allocation limit
[14:35:34] [PASSED] One page, with coherent DMA mappings enabled
[14:35:34] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[14:35:34] ============== [PASSED] ttm_pool_alloc_basic ===============
[14:35:34] ============== ttm_pool_alloc_basic_dma_addr  ==============
[14:35:34] [PASSED] One page
[14:35:34] [PASSED] More than one page
[14:35:34] [PASSED] Above the allocation limit
[14:35:34] [PASSED] One page, with coherent DMA mappings enabled
[14:35:34] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[14:35:34] ========== [PASSED] ttm_pool_alloc_basic_dma_addr ==========
[14:35:34] [PASSED] ttm_pool_alloc_order_caching_match
[14:35:34] [PASSED] ttm_pool_alloc_caching_mismatch
[14:35:34] [PASSED] ttm_pool_alloc_order_mismatch
[14:35:34] [PASSED] ttm_pool_free_dma_alloc
[14:35:34] [PASSED] ttm_pool_free_no_dma_alloc
[14:35:34] [PASSED] ttm_pool_fini_basic
[14:35:34] ==================== [PASSED] ttm_pool =====================
[14:35:34] ================ ttm_resource (8 subtests) =================
[14:35:34] ================= ttm_resource_init_basic  =================
[14:35:34] [PASSED] Init resource in TTM_PL_SYSTEM
[14:35:34] [PASSED] Init resource in TTM_PL_VRAM
[14:35:34] [PASSED] Init resource in a private placement
[14:35:34] [PASSED] Init resource in TTM_PL_SYSTEM, set placement flags
[14:35:34] ============= [PASSED] ttm_resource_init_basic =============
[14:35:34] [PASSED] ttm_resource_init_pinned
[14:35:34] [PASSED] ttm_resource_fini_basic
[14:35:34] [PASSED] ttm_resource_manager_init_basic
[14:35:34] [PASSED] ttm_resource_manager_usage_basic
[14:35:34] [PASSED] ttm_resource_manager_set_used_basic
[14:35:34] [PASSED] ttm_sys_man_alloc_basic
[14:35:34] [PASSED] ttm_sys_man_free_basic
[14:35:34] ================== [PASSED] ttm_resource ===================
[14:35:34] =================== ttm_tt (15 subtests) ===================
[14:35:34] ==================== ttm_tt_init_basic  ====================
[14:35:34] [PASSED] Page-aligned size
[14:35:34] [PASSED] Extra pages requested
[14:35:34] ================ [PASSED] ttm_tt_init_basic ================
[14:35:34] [PASSED] ttm_tt_init_misaligned
[14:35:34] [PASSED] ttm_tt_fini_basic
[14:35:34] [PASSED] ttm_tt_fini_sg
[14:35:34] [PASSED] ttm_tt_fini_shmem
[14:35:34] [PASSED] ttm_tt_create_basic
[14:35:34] [PASSED] ttm_tt_create_invalid_bo_type
[14:35:34] [PASSED] ttm_tt_create_ttm_exists
[14:35:34] [PASSED] ttm_tt_create_failed
[14:35:34] [PASSED] ttm_tt_destroy_basic
[14:35:34] [PASSED] ttm_tt_populate_null_ttm
[14:35:34] [PASSED] ttm_tt_populate_populated_ttm
[14:35:34] [PASSED] ttm_tt_unpopulate_basic
[14:35:34] [PASSED] ttm_tt_unpopulate_empty_ttm
[14:35:34] [PASSED] ttm_tt_swapin_basic
[14:35:34] ===================== [PASSED] ttm_tt ======================
[14:35:34] =================== ttm_bo (14 subtests) ===================
[14:35:34] =========== ttm_bo_reserve_optimistic_no_ticket  ===========
[14:35:34] [PASSED] Cannot be interrupted and sleeps
[14:35:34] [PASSED] Cannot be interrupted, locks straight away
[14:35:34] [PASSED] Can be interrupted, sleeps
[14:35:34] ======= [PASSED] ttm_bo_reserve_optimistic_no_ticket =======
[14:35:34] [PASSED] ttm_bo_reserve_locked_no_sleep
[14:35:34] [PASSED] ttm_bo_reserve_no_wait_ticket
[14:35:34] [PASSED] ttm_bo_reserve_double_resv
[14:35:34] [PASSED] ttm_bo_reserve_interrupted
[14:35:34] [PASSED] ttm_bo_reserve_deadlock
[14:35:34] [PASSED] ttm_bo_unreserve_basic
[14:35:34] [PASSED] ttm_bo_unreserve_pinned
[14:35:34] [PASSED] ttm_bo_unreserve_bulk
[14:35:34] [PASSED] ttm_bo_fini_basic
[14:35:34] [PASSED] ttm_bo_fini_shared_resv
[14:35:34] [PASSED] ttm_bo_pin_basic
[14:35:34] [PASSED] ttm_bo_pin_unpin_resource
[14:35:34] [PASSED] ttm_bo_multiple_pin_one_unpin
[14:35:34] ===================== [PASSED] ttm_bo ======================
[14:35:34] ============== ttm_bo_validate (22 subtests) ===============
[14:35:34] ============== ttm_bo_init_reserved_sys_man  ===============
[14:35:34] [PASSED] Buffer object for userspace
[14:35:34] [PASSED] Kernel buffer object
[14:35:34] [PASSED] Shared buffer object
[14:35:34] ========== [PASSED] ttm_bo_init_reserved_sys_man ===========
[14:35:34] ============== ttm_bo_init_reserved_mock_man  ==============
[14:35:34] [PASSED] Buffer object for userspace
[14:35:34] [PASSED] Kernel buffer object
[14:35:34] [PASSED] Shared buffer object
[14:35:34] ========== [PASSED] ttm_bo_init_reserved_mock_man ==========
[14:35:34] [PASSED] ttm_bo_init_reserved_resv
[14:35:34] ================== ttm_bo_validate_basic  ==================
[14:35:34] [PASSED] Buffer object for userspace
[14:35:34] [PASSED] Kernel buffer object
[14:35:34] [PASSED] Shared buffer object
[14:35:34] ============== [PASSED] ttm_bo_validate_basic ==============
[14:35:34] [PASSED] ttm_bo_validate_invalid_placement
[14:35:34] ============= ttm_bo_validate_same_placement  ==============
[14:35:34] [PASSED] System manager
[14:35:34] [PASSED] VRAM manager
[14:35:34] ========= [PASSED] ttm_bo_validate_same_placement ==========
[14:35:34] [PASSED] ttm_bo_validate_failed_alloc
[14:35:34] [PASSED] ttm_bo_validate_pinned
[14:35:34] [PASSED] ttm_bo_validate_busy_placement
[14:35:34] ================ ttm_bo_validate_multihop  =================
[14:35:34] [PASSED] Buffer object for userspace
[14:35:34] [PASSED] Kernel buffer object
[14:35:34] [PASSED] Shared buffer object
[14:35:34] ============ [PASSED] ttm_bo_validate_multihop =============
[14:35:34] ========== ttm_bo_validate_no_placement_signaled  ==========
[14:35:34] [PASSED] Buffer object in system domain, no page vector
[14:35:34] [PASSED] Buffer object in system domain with an existing page vector
[14:35:34] ====== [PASSED] ttm_bo_validate_no_placement_signaled ======
[14:35:34] ======== ttm_bo_validate_no_placement_not_signaled  ========
[14:35:34] [PASSED] Buffer object for userspace
[14:35:34] [PASSED] Kernel buffer object
[14:35:34] [PASSED] Shared buffer object
[14:35:34] ==== [PASSED] ttm_bo_validate_no_placement_not_signaled ====
[14:35:34] [PASSED] ttm_bo_validate_move_fence_signaled
[14:35:34] ========= ttm_bo_validate_move_fence_not_signaled  =========
[14:35:34] [PASSED] Waits for GPU
[14:35:34] [PASSED] Tries to lock straight away
[14:35:34] ===== [PASSED] ttm_bo_validate_move_fence_not_signaled =====
[14:35:34] [PASSED] ttm_bo_validate_swapout
[14:35:34] [PASSED] ttm_bo_validate_happy_evict
[14:35:34] [PASSED] ttm_bo_validate_all_pinned_evict
[14:35:34] [PASSED] ttm_bo_validate_allowed_only_evict
[14:35:34] [PASSED] ttm_bo_validate_deleted_evict
[14:35:34] [PASSED] ttm_bo_validate_busy_domain_evict
[14:35:34] [PASSED] ttm_bo_validate_evict_gutting
[14:35:34] [PASSED] ttm_bo_validate_recrusive_evict
[14:35:34] ================= [PASSED] ttm_bo_validate =================
[14:35:34] ============================================================
[14:35:34] Testing complete. Ran 102 tests: passed: 102
[14:35:34] Elapsed time: 12.781s total, 2.480s configuring, 10.087s building, 0.186s running

+ for kcfg in "${kunitconfigs[@]}"
+ [[ ! -f /kernel/drivers/dma-buf/.kunitconfig ]]
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/dma-buf/.kunitconfig
[14:35:34] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[14:35:37] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48
[14:35:46] Starting KUnit Kernel (1/1)...
[14:35:46] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[14:35:46] =============== dma-buf-fence (12 subtests) ================
[14:35:46] [PASSED] test_sanitycheck
[14:35:46] [PASSED] test_signaling
[14:35:46] [PASSED] test_add_callback
[14:35:46] [PASSED] test_late_add_callback
[14:35:46] [PASSED] test_rm_callback
[14:35:46] [PASSED] test_late_rm_callback
[14:35:46] [PASSED] test_status
[14:35:46] [PASSED] test_error
[14:35:46] [PASSED] test_wait
[14:35:46] [PASSED] test_wait_timeout
[14:35:46] [PASSED] test_stub
[14:35:46] [SKIPPED] test_race_signal_callback (requires at least 2 CPUs)
[14:35:46] ================== [PASSED] dma-buf-fence ==================
[14:35:46] ============ dma-buf-fence-chain (11 subtests) =============
[14:35:46] [PASSED] test_sanitycheck
[14:35:46] [PASSED] test_find_seqno
[14:35:46] [PASSED] test_find_signaled
[14:35:46] [PASSED] test_find_out_of_order
[14:35:51] [PASSED] test_find_gap
[14:35:51] [PASSED] test_find_race
[14:35:51] [PASSED] test_signal_forward
[14:35:51] [PASSED] test_signal_backward
[14:35:51] [PASSED] test_wait_forward
[14:35:51] [PASSED] test_wait_backward
[14:35:51] [PASSED] test_wait_random
[14:35:51] =============== [PASSED] dma-buf-fence-chain ===============
[14:35:51] ============ dma-buf-fence-unwrap (11 subtests) ============
[14:35:51] [PASSED] test_sanitycheck
[14:35:51] [PASSED] test_unwrap_array
[14:35:51] [PASSED] test_unwrap_chain
[14:35:51] [PASSED] test_unwrap_chain_array
[14:35:51] [PASSED] test_unwrap_merge
[14:35:51] [PASSED] test_unwrap_merge_duplicate
[14:35:51] [PASSED] test_unwrap_merge_seqno
[14:35:51] [PASSED] test_unwrap_merge_order
[14:35:51] [PASSED] test_unwrap_merge_complex
[14:35:51] [PASSED] test_unwrap_merge_complex_seqno
[14:35:51] [PASSED] test_dedup_empty
[14:35:51] ============== [PASSED] dma-buf-fence-unwrap ===============
[14:35:51] ================ dma-buf-resv (5 subtests) =================
[14:35:51] [PASSED] test_sanitycheck
[14:35:51] ===================== test_signaling  ======================
[14:35:51] [PASSED] kernel
[14:35:51] [PASSED] write
[14:35:51] [PASSED] read
[14:35:51] [PASSED] bookkeep
[14:35:51] ================= [PASSED] test_signaling ==================
[14:35:51] ====================== test_for_each  ======================
[14:35:51] [PASSED] kernel
[14:35:51] [PASSED] write
[14:35:51] [PASSED] read
[14:35:51] [PASSED] bookkeep
[14:35:51] ================== [PASSED] test_for_each ==================
[14:35:51] ================= test_for_each_unlocked  ==================
[14:35:51] [PASSED] kernel
[14:35:51] [PASSED] write
[14:35:51] [PASSED] read
[14:35:51] [PASSED] bookkeep
[14:35:51] ============= [PASSED] test_for_each_unlocked ==============
[14:35:51] ===================== test_get_fences  =====================
[14:35:51] [PASSED] kernel
[14:35:51] [PASSED] write
[14:35:51] [PASSED] read
[14:35:51] [PASSED] bookkeep
[14:35:51] ================= [PASSED] test_get_fences =================
[14:35:51] ================== [PASSED] dma-buf-resv ===================
[14:35:51] ============================================================
[14:35:51] Testing complete. Ran 51 tests: passed: 50, skipped: 1
[14:35:51] Elapsed time: 16.569s total, 2.516s configuring, 8.782s building, 5.260s running

+ cleanup
++ stat -c %u:%g /kernel
+ chown -R 1003:1003 /kernel



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

* ✗ CI.checksparse: warning for drm/{i915, xe}: Make unclaimed mmio detection lockless and enable it for xe
  2026-11-13 13:43 [PATCH 0/8] drm/{i915, xe}: Make unclaimed mmio detection lockless and enable it for xe Ville Syrjala
                   ` (9 preceding siblings ...)
  2026-11-13 14:35 ` ✓ CI.KUnit: success " Patchwork
@ 2026-11-13 14:52 ` Patchwork
  2026-11-13 15:07 ` ✗ Xe.CI.BAT: failure " Patchwork
  11 siblings, 0 replies; 19+ messages in thread
From: Patchwork @ 2026-11-13 14:52 UTC (permalink / raw)
  To: Ville Syrjälä; +Cc: intel-xe

== Series Details ==

Series: drm/{i915, xe}: Make unclaimed mmio detection lockless and enable it for xe
URL   : https://patchwork.freedesktop.org/series/178490/
State : warning

== Summary ==

+ trap cleanup EXIT
+ KERNEL=/kernel
+ MT=/root/linux/maintainer-tools
+ git clone https://gitlab.freedesktop.org/drm/maintainer-tools /root/linux/maintainer-tools
Cloning into '/root/linux/maintainer-tools'...
warning: redirecting to https://gitlab.freedesktop.org/drm/maintainer-tools.git/
+ make -C /root/linux/maintainer-tools
make: Entering directory '/root/linux/maintainer-tools'
cc -O2 -g -Wextra -o remap-log remap-log.c
make: Leaving directory '/root/linux/maintainer-tools'
+ cd /kernel
+ git config --global --add safe.directory /kernel
+ /root/linux/maintainer-tools/dim sparse --fast d41695c479e8bb24eb941e5ba916e42784af6f4d
Sparse version: 0.6.4 (Ubuntu: 0.6.4-4ubuntu3)
Fast mode used, each commit won't be checked separately.
+/kernel/Makefile:1292: C=1 specified, but sparse is not available or not up to date

+ cleanup
++ stat -c %u:%g /kernel
+ chown -R 1003:1003 /kernel



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

* ✗ Xe.CI.BAT: failure for drm/{i915, xe}: Make unclaimed mmio detection lockless and enable it for xe
  2026-11-13 13:43 [PATCH 0/8] drm/{i915, xe}: Make unclaimed mmio detection lockless and enable it for xe Ville Syrjala
                   ` (10 preceding siblings ...)
  2026-11-13 14:52 ` ✗ CI.checksparse: warning " Patchwork
@ 2026-11-13 15:07 ` Patchwork
  2026-11-13 16:41   ` Ville Syrjälä
  11 siblings, 1 reply; 19+ messages in thread
From: Patchwork @ 2026-11-13 15:07 UTC (permalink / raw)
  To: Ville Syrjälä; +Cc: intel-xe

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

== Series Details ==

Series: drm/{i915, xe}: Make unclaimed mmio detection lockless and enable it for xe
URL   : https://patchwork.freedesktop.org/series/178490/
State : failure

== Summary ==

CI Bug Log - changes from xe-6136-d41695c479e8bb24eb941e5ba916e42784af6f4d_BAT -> xe-pw-178490v1_BAT
====================================================

Summary
-------

  **FAILURE**

  Serious unknown changes coming with xe-pw-178490v1_BAT absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in xe-pw-178490v1_BAT, 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 (13 -> 13)
------------------------------

  No changes in participating hosts

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

  Here are the unknown changes that may have been introduced in xe-pw-178490v1_BAT:

### IGT changes ###

#### Possible regressions ####

  * igt@kms_flip@basic-flip-vs-dpms@c-edp1:
    - bat-ptl-2:          [PASS][1] -> [ABORT][2] +1 other test abort
   [1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-6136-d41695c479e8bb24eb941e5ba916e42784af6f4d/bat-ptl-2/igt@kms_flip@basic-flip-vs-dpms@c-edp1.html
   [2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178490v1/bat-ptl-2/igt@kms_flip@basic-flip-vs-dpms@c-edp1.html
    - bat-lnl-1:          [PASS][3] -> [ABORT][4] +1 other test abort
   [3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-6136-d41695c479e8bb24eb941e5ba916e42784af6f4d/bat-lnl-1/igt@kms_flip@basic-flip-vs-dpms@c-edp1.html
   [4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178490v1/bat-lnl-1/igt@kms_flip@basic-flip-vs-dpms@c-edp1.html

  * igt@kms_flip@basic-flip-vs-dpms@d-edp1:
    - bat-ptl-2:          [PASS][5] -> [DMESG-WARN][6]
   [5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-6136-d41695c479e8bb24eb941e5ba916e42784af6f4d/bat-ptl-2/igt@kms_flip@basic-flip-vs-dpms@d-edp1.html
   [6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178490v1/bat-ptl-2/igt@kms_flip@basic-flip-vs-dpms@d-edp1.html

  * igt@kms_force_connector_basic@force-connector-state:
    - bat-wcl-2:          [PASS][7] -> [ABORT][8]
   [7]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-6136-d41695c479e8bb24eb941e5ba916e42784af6f4d/bat-wcl-2/igt@kms_force_connector_basic@force-connector-state.html
   [8]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178490v1/bat-wcl-2/igt@kms_force_connector_basic@force-connector-state.html

  * igt@kms_force_connector_basic@prune-stale-modes:
    - bat-bmg-2:          [PASS][9] -> [ABORT][10]
   [9]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-6136-d41695c479e8bb24eb941e5ba916e42784af6f4d/bat-bmg-2/igt@kms_force_connector_basic@prune-stale-modes.html
   [10]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178490v1/bat-bmg-2/igt@kms_force_connector_basic@prune-stale-modes.html

  * igt@xe_module_load@load:
    - bat-wcl-1:          [PASS][11] -> [ABORT][12]
   [11]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-6136-d41695c479e8bb24eb941e5ba916e42784af6f4d/bat-wcl-1/igt@xe_module_load@load.html
   [12]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178490v1/bat-wcl-1/igt@xe_module_load@load.html

  * igt@xe_query@multigpu-query-topology-l3-bank-mask:
    - bat-bmg-3:          [PASS][13] -> [ABORT][14]
   [13]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-6136-d41695c479e8bb24eb941e5ba916e42784af6f4d/bat-bmg-3/igt@xe_query@multigpu-query-topology-l3-bank-mask.html
   [14]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178490v1/bat-bmg-3/igt@xe_query@multigpu-query-topology-l3-bank-mask.html

  


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

  * IGT: IGT_9190 -> IGT_9191
  * Linux: xe-6136-d41695c479e8bb24eb941e5ba916e42784af6f4d -> xe-pw-178490v1

  IGT_9190: 9190
  IGT_9191: 9191
  xe-6136-d41695c479e8bb24eb941e5ba916e42784af6f4d: d41695c479e8bb24eb941e5ba916e42784af6f4d
  xe-pw-178490v1: 178490v1

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178490v1/index.html

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

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

* Re: [PATCH 4/8] drm/i915/de: Make mmio_debug lockless
  2026-11-13 13:43 ` [PATCH 4/8] drm/i915/de: Make mmio_debug lockless Ville Syrjala
@ 2026-11-13 16:30   ` Ville Syrjälä
  0 siblings, 0 replies; 19+ messages in thread
From: Ville Syrjälä @ 2026-11-13 16:30 UTC (permalink / raw)
  To: intel-gfx; +Cc: intel-xe

On Fri, Nov 13, 2026 at 03:43:51PM +0200, Ville Syrjala wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> 
> Currently we protect the mmio_debug state using mmio.lock.
> We can't just drop the locks or we risk the read-modify-writes
> to the modparam to get out of whack. But if we get rid of the
> read-modify-writes and just switch to simple booleans all
> we need are loads and stores which are naturally atomic.
> 
> This is of course racy, but quite harmlessly so. Perhaps the
> worst thing that can happen is that we mistake which register
> caused the unclaimed access, but that can already happen since
> we use the completely lockless intel_de_{read,write}_fw() in
> many places. And a pair of threads getting a bit confused
> about the state of the booleans should also be harmless. Perhaps
> we end up doing a few extra unclaimed mmio debug checks while the
> first thread is already about to disable the thing. No big deal.
> 
> And for good measure, let's annotate the booleans with
> READ_ONCE()/WRITE_ONCE() to highlight the lockless nature,
> though I don't think we need those for correctness.
> 
> With the booleans we do lose the capability to set mmio_debug
> to a specific value, and then automagically disable it once
> that many unclaimed register accesses have been detected.
> With the boolean it's mmio_debug all the time or none of
> the time. Not sure if anyone actually used that feature
> anyway, so doesn't seem like a big loss to me.
> 
> I do want to preserve the oneshot detection thing automagically
> armed by intel_de_arm_unclaimed_mmio_detection(). So we need a
> second boolean for that.
> 
> And the third boolean will be mmio.unclaimed_mmio_check. That
> was already effectively a boolean, but still being adjusted
> with rmw.
> 
> The FPGA_DBG/CLAIM_ER accesses done from the read/write vfuncs
> will still be conditionally protected by the mmio.lock, based
> on mmio_flags. But the accesses from intel_de_unclaimed_mmio_detected()
> and intel_de_arm_unclaimed_mmio_detection() need another
> solution. For that I'm just adding another boolean into the
> mmio funcs that tells us whether the lock should be taken
> there or not. Calls to these functions are exceedingly rare
> so no need to come up with any clever solution here.
> 
> Note that the modparam will now refuse any non-0/1 value, so
> if anyone has left this enabled accidentally the module will
> fail to load. But reminding people to turn this off in
> production is probably a good thing :P

Argh. Apparently igt uses the modparam for some reason. But it
only sets it to -1, which is the default w/ the debug .config
anyway. I guess it might make sense for people running the
w/o all the debug knobs enabled in .config...

> 
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> ---
>  drivers/gpu/drm/i915/Kconfig.debug            |  2 +-
>  drivers/gpu/drm/i915/display/intel_de.c       | 58 +++++++++----------
>  drivers/gpu/drm/i915/display/intel_de.h       |  1 +
>  .../gpu/drm/i915/display/intel_display_core.h |  7 +--
>  .../drm/i915/display/intel_display_params.c   |  4 +-
>  .../drm/i915/display/intel_display_params.h   |  2 +-
>  6 files changed, 34 insertions(+), 40 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/Kconfig.debug b/drivers/gpu/drm/i915/Kconfig.debug
> index dc43dcfbadb6..6a020adc43ee 100644
> --- a/drivers/gpu/drm/i915/Kconfig.debug
> +++ b/drivers/gpu/drm/i915/Kconfig.debug
> @@ -76,7 +76,7 @@ config DRM_I915_DEBUG_MMIO
>  	help
>  	  By default, always enables the extra sanity checks (extra register
>  	  reads) around every mmio (register) access that will slow the system
> -	  down. This sets the default value of i915.mmio_debug to -1 and can
> +	  down. This sets the default value of i915.mmio_debug to Y and can
>  	  be overridden at module load.
>  
>  	  Recommended for driver developers only.
> diff --git a/drivers/gpu/drm/i915/display/intel_de.c b/drivers/gpu/drm/i915/display/intel_de.c
> index 06d91570bee2..5a74cf173cb8 100644
> --- a/drivers/gpu/drm/i915/display/intel_de.c
> +++ b/drivers/gpu/drm/i915/display/intel_de.c
> @@ -242,12 +242,16 @@ static bool vlv_check_for_unclaimed_mmio(struct intel_display *display)
>  	return true;
>  }
>  
> +static bool mmio_debug_is_enabled(struct intel_display *display)
> +{
> +	return READ_ONCE(display->params.mmio_debug) ||
> +		READ_ONCE(display->mmio.mmio_debug_oneshot);
> +}
> +
>  static void check_unclaimed_mmio_pre(struct intel_display *display,
>  				     intel_reg_t reg, bool write)
>  {
> -	lockdep_assert_held(&display->mmio.lock);
> -
> -	if (!display->params.mmio_debug)
> +	if (!mmio_debug_is_enabled(display))
>  		return;
>  
>  	if (!display->mmio.funcs->check_for_unclaimed_mmio(display))
> @@ -262,9 +266,7 @@ static void check_unclaimed_mmio_pre(struct intel_display *display,
>  static void check_unclaimed_mmio_post(struct intel_display *display,
>  				      intel_reg_t reg, bool write)
>  {
> -	lockdep_assert_held(&display->mmio.lock);
> -
> -	if (!display->params.mmio_debug)
> +	if (!mmio_debug_is_enabled(display))
>  		return;
>  
>  	if (!display->mmio.funcs->check_for_unclaimed_mmio(display))
> @@ -275,8 +277,7 @@ static void check_unclaimed_mmio_post(struct intel_display *display,
>  		 write ? "write to" : "read from",
>  		 i915_mmio_reg_offset(reg));
>  
> -	/* Only report the first N failures */
> -	display->params.mmio_debug--;
> +	WRITE_ONCE(display->mmio.mmio_debug_oneshot, false);
>  }
>  
>  bool intel_de_unclaimed_mmio_detected(struct intel_display *display)
> @@ -286,43 +287,36 @@ bool intel_de_unclaimed_mmio_detected(struct intel_display *display)
>  	if (!display->mmio.funcs->check_for_unclaimed_mmio)
>  		return false;
>  
> -	spin_lock_irq(&display->mmio.lock);
> -	ret = display->mmio.funcs->check_for_unclaimed_mmio(display);
> -	spin_unlock_irq(&display->mmio.lock);
> +	if (display->mmio.funcs->check_for_unclaimed_mmio_needs_lock) {
> +		spin_lock_irq(&display->mmio.lock);
> +		ret = display->mmio.funcs->check_for_unclaimed_mmio(display);
> +		spin_unlock_irq(&display->mmio.lock);
> +	} else {
> +		ret = display->mmio.funcs->check_for_unclaimed_mmio(display);
> +	}
>  
>  	return ret;
>  }
>  
>  bool intel_de_arm_unclaimed_mmio_detection(struct intel_display *display)
>  {
> -	bool ret = false;
> -
> -	if (!display->mmio.funcs->check_for_unclaimed_mmio)
> +	if (!READ_ONCE(display->mmio.unclaimed_mmio_check))
>  		return false;
>  
> -	spin_lock_irq(&display->mmio.lock);
> -
> -	if (display->mmio.unclaimed_mmio_check <= 0)
> -		goto out;
> -
> -	if (!display->mmio.funcs->check_for_unclaimed_mmio(display))
> -		goto out;
> +	if (!intel_de_unclaimed_mmio_detected(display))
> +		return false;
>  
> -	if (!display->params.mmio_debug) {
> +	if (!READ_ONCE(display->params.mmio_debug)) {
>  		drm_dbg_kms(display->drm,
>  			    "Unclaimed register detected, "
>  			    "enabling oneshot unclaimed register reporting. "
> -			    "Please use i915.mmio_debug=N for more information.\n");
> -		display->params.mmio_debug++;
> +			    "Please use i915.mmio_debug=Y for more information.\n");
> +		WRITE_ONCE(display->mmio.mmio_debug_oneshot, true);
>  	}
>  
> -	display->mmio.unclaimed_mmio_check--;
> -	ret = true;
> +	WRITE_ONCE(display->mmio.unclaimed_mmio_check, false);
>  
> -out:
> -	spin_unlock_irq(&display->mmio.lock);
> -
> -	return ret;
> +	return true;
>  }
>  
>  #define __MMIO_WAKELOCK		BIT(0)
> @@ -474,12 +468,14 @@ static const struct intel_mmio_funcs hsw_mmio_funcs = {
>  	.read = hsw_mmio_read,
>  	.write = hsw_mmio_write,
>  	.check_for_unclaimed_mmio = hsw_check_for_unclaimed_mmio,
> +	.check_for_unclaimed_mmio_needs_lock = true,
>  };
>  
>  static const struct intel_mmio_funcs vlv_mmio_funcs = {
>  	.read = hsw_mmio_read,
>  	.write = hsw_mmio_write,
>  	.check_for_unclaimed_mmio = vlv_check_for_unclaimed_mmio,
> +	.check_for_unclaimed_mmio_needs_lock = true,
>  };
>  
>  #define LNL_MMIO_FLAGS __MMIO_WAKELOCK
> @@ -539,7 +535,7 @@ void intel_de_init(struct intel_display *display)
>  	}
>  
>  	if (display->mmio.funcs->check_for_unclaimed_mmio)
> -		display->mmio.unclaimed_mmio_check = 1;
> +		WRITE_ONCE(display->mmio.unclaimed_mmio_check, true);
>  
>  	/* clear out unclaimed reg detection bit someone else left behind */
>  	if (intel_de_unclaimed_mmio_detected(display))
> diff --git a/drivers/gpu/drm/i915/display/intel_de.h b/drivers/gpu/drm/i915/display/intel_de.h
> index 2c469a2d6a20..cbf44975dced 100644
> --- a/drivers/gpu/drm/i915/display/intel_de.h
> +++ b/drivers/gpu/drm/i915/display/intel_de.h
> @@ -13,6 +13,7 @@ struct intel_mmio_funcs {
>  	u32 (*read)(struct intel_display *display, intel_reg_t reg);
>  	void (*write)(struct intel_display *display, intel_reg_t reg, u32 val);
>  	bool (*check_for_unclaimed_mmio)(struct intel_display *display);
> +	bool check_for_unclaimed_mmio_needs_lock;
>  };
>  
>  void intel_de_init(struct intel_display *display);
> diff --git a/drivers/gpu/drm/i915/display/intel_display_core.h b/drivers/gpu/drm/i915/display/intel_display_core.h
> index d68ecc19b8a8..92a3ce4247b1 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_core.h
> +++ b/drivers/gpu/drm/i915/display/intel_display_core.h
> @@ -539,17 +539,14 @@ struct intel_display {
>  		 * serializes all display register accesses done
>  		 * using intel_de_{read,write}(), but not those
>  		 * done using intel_de_{read,write}_fw().
> -		 *
> -		 * The lock also protects mmio.unclaimed_mmio_check
> -		 * and read-modify-write of display->params.mmio_debug.
>  		 */
>  		spinlock_t lock;
>  
>  		struct intel_uncore *uncore;
>  		const struct intel_mmio_funcs *funcs;
>  
> -		/* protected by mmio.lock */
> -		int unclaimed_mmio_check;
> +		bool mmio_debug_oneshot;
> +		bool unclaimed_mmio_check;
>  	} mmio;
>  
>  	struct {
> diff --git a/drivers/gpu/drm/i915/display/intel_display_params.c b/drivers/gpu/drm/i915/display/intel_display_params.c
> index ace3081461de..7ef974861c8e 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_params.c
> +++ b/drivers/gpu/drm/i915/display/intel_display_params.c
> @@ -143,8 +143,8 @@ intel_display_param_named_unsafe(enable_dmc_wl, int, 0400,
>  	"(-1=use per-chip default, 0=disabled, 1=enabled, 2=match any register, 3=always locked) "
>  	"Default: -1");
>  
> -intel_display_param_named(mmio_debug, int, 0400,
> -	"Enable the MMIO debug code for the first N failures (default: off). "
> +intel_display_param_named(mmio_debug, bool, 0400,
> +	"Enable MMIO debug code (default: false). "
>  	"This may negatively affect performance.");
>  
>  __maybe_unused
> diff --git a/drivers/gpu/drm/i915/display/intel_display_params.h b/drivers/gpu/drm/i915/display/intel_display_params.h
> index bcbca95318d6..f6b9c294840c 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_params.h
> +++ b/drivers/gpu/drm/i915/display/intel_display_params.h
> @@ -51,7 +51,7 @@ struct drm_printer;
>  	param(bool, psr_safest_params, false, 0400) \
>  	param(bool, enable_psr2_sel_fetch, true, 0400) \
>  	param(int, enable_dmc_wl, -1, 0400) \
> -	param(int, mmio_debug, -IS_ENABLED(CONFIG_DRM_I915_DEBUG_MMIO), 0600) \
> +	param(bool, mmio_debug, IS_ENABLED(CONFIG_DRM_I915_DEBUG_MMIO), 0600) \
>  	/*
>  	 * Debugfs-only knob (per-device): no matching module_param is registered
>  	 * in intel_display_params.c on purpose. Runtime-toggle via debugfs.
> -- 
> 2.56.0

-- 
Ville Syrjälä
Intel

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

* Re: ✗ Xe.CI.BAT: failure for drm/{i915, xe}: Make unclaimed mmio detection lockless and enable it for xe
  2026-11-13 15:07 ` ✗ Xe.CI.BAT: failure " Patchwork
@ 2026-11-13 16:41   ` Ville Syrjälä
  0 siblings, 0 replies; 19+ messages in thread
From: Ville Syrjälä @ 2026-11-13 16:41 UTC (permalink / raw)
  To: intel-xe
  Cc: intel-gfx, Ankit Nautiyal, Uma Shankar, Jouni Högander,
	Animesh Manna

On Fri, Nov 13, 2026 at 03:07:31PM -0000, Patchwork wrote:
> == Series Details ==
> 
> Series: drm/{i915, xe}: Make unclaimed mmio detection lockless and enable it for xe
> URL   : https://patchwork.freedesktop.org/series/178490/
> State : failure
> 
> == Summary ==
> 
> CI Bug Log - changes from xe-6136-d41695c479e8bb24eb941e5ba916e42784af6f4d_BAT -> xe-pw-178490v1_BAT
> ====================================================
> 
> Summary
> -------
> 
>   **FAILURE**
> 
>   Serious unknown changes coming with xe-pw-178490v1_BAT absolutely need to be
>   verified manually.
>   
>   If you think the reported changes have nothing to do with the changes
>   introduced in xe-pw-178490v1_BAT, 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 (13 -> 13)
> ------------------------------
> 
>   No changes in participating hosts
> 
> Possible new issues
> -------------------
> 
>   Here are the unknown changes that may have been introduced in xe-pw-178490v1_BAT:
> 
> ### IGT changes ###
> 
> #### Possible regressions ####
> 
>   * igt@kms_flip@basic-flip-vs-dpms@c-edp1:
>     - bat-ptl-2:          [PASS][1] -> [ABORT][2] +1 other test abort
>    [1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-6136-d41695c479e8bb24eb941e5ba916e42784af6f4d/bat-ptl-2/igt@kms_flip@basic-flip-vs-dpms@c-edp1.html
>    [2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178490v1/bat-ptl-2/igt@kms_flip@basic-flip-vs-dpms@c-edp1.html

xe is very borked. Looks like intel_alpm_disable() is one main culprit:

<7> [78.666940] xe 0000:00:02.0: [drm:intel_psr_disable_locked [xe]] Disabling PSR1
<6> [78.673547] ------------[ cut here ]------------
<4> [78.673558] xe 0000:00:02.0: [drm] Unclaimed read from register 0x62950
<4> [78.673565] WARNING: drivers/gpu/drm/i915/display/intel_de.c:263 at check_unclaimed_mmio_post+0x77/0xb0 [xe], CPU#2: kms_flip/1657
<4> [78.673992] Modules linked in: snd_hda_codec_intelhdmi snd_hda_codec_hdmi xe drm_gpuvm drm_gpusvm_helper drm_buddy gpu_sched drm_ttm_helper ttm drm_suballoc_helper drm_exec drm_display_helper cec rc_core drm_kunit_helpers kunit i2c_algo_bit hid_sensor_custom overlay hid_sensor_hub hid_generic intel_ishtp_hid hid intel_rapl_msr intel_uncore_frequency intel_uncore_frequency_common x86_pkg_temp_thermal intel_powerclamp cmdlinepart spi_nor coretemp mtd mei_gsc_proxy snd_hda_intel snd_intel_dspcfg snd_hda_codec ucsi_acpi typec_ucsi typec snd_hda_core wmi_bmof kvm_intel snd_hwdep snd_pcm kvm r8169 irqbypass snd_timer binfmt_misc aesni_intel gf128mul i2c_i801 snd intel_cstate spi_intel_pci intel_skl_int3472_tps68470 tps68470_regulator i2c_mux realtek i2c_smbus spi_intel e1000e soundcore clk_tps68470 video mei_me phy_package phylink idma64 mei intel_pmc_core int3403_thermal nls_iso8859_1 processor_thermal_device_pci processor_thermal_device processor_thermal_wt_hint platform_temperature_control pmt_telemetry
<4> [78.674373]  processor_thermal_soc_slider pmt_discovery pmt_class processor_thermal_rfim acpi_tad intel_skl_int3472_discrete wmi intel_hid processor_thermal_rapl intel_pmc_ssram_telemetry intel_rapl_common int3400_thermal sparse_keymap pinctrl_intel_platform intel_pmc_pwrm_telemetry acpi_thermal_rel acpi_pad intel_skl_int3472_common intel_ish_ipc processor_thermal_wt_req processor_thermal_power_floor intel_vpu intel_ishtp thunderbolt processor_thermal_mbox igen6_edac int340x_thermal_zone intel_vsec dm_multipath msr nvme_fabrics fuse fsdev_dax efi_pstore autofs4
<4> [78.674512] CPU: 2 UID: 0 PID: 1657 Comm: kms_flip Tainted: G S   U  W           7.4.0-rc2-lgci-xe-xe-pw-178490v1-debug+ #1 PREEMPT(lazy) 
<4> [78.674524] Tainted: [S]=CPU_OUT_OF_SPEC, [U]=USER, [W]=WARN
<4> [78.674530] Hardware name: Intel Corporation Panther Lake Client Platform/PTL-UH LP5 T3 RVP1, BIOS PTLPFWI1.R00.3514.D01.2512291130 12/29/2025
<4> [78.674536] RIP: 0010:check_unclaimed_mmio_post+0x80/0xb0 [xe]
<4> [78.674917] Code: 48 85 ff 74 04 48 8b 7f 08 4c 8b 77 50 4d 85 f6 74 3e e8 73 67 2e e1 48 89 c6 48 8d 3d 69 bd 21 00 45 89 e0 4c 89 e9 4c 89 f2 <67> 48 0f b9 3a c6 83 38 07 00 00 00 5b 41 5c 41 5d 41 5e 5d 31 c0
<4> [78.674924] RSP: 0018:ffffc9000bea7498 EFLAGS: 00010246
<4> [78.674934] RAX: ffffffffa1420138 RBX: ffff88812c48a000 RCX: ffffffffa1427a46
<4> [78.674940] RDX: ffff8881067ecf10 RSI: ffffffffa1420138 RDI: ffffffffa120c820
<4> [78.674944] RBP: ffffc9000bea74b8 R08: 0000000000062950 R09: 0000000000000000
<4> [78.674950] R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000062950
<4> [78.674955] R13: ffffffffa1427a46 R14: ffff8881067ecf10 R15: 0000000000000000
<4> [78.674960] FS:  0000766c5546a2c0(0000) GS:ffff8884e5d42000(0000) knlGS:0000000000000000
<4> [78.674966] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
<4> [78.674972] CR2: 00007546fc3dbb68 CR3: 0000000129117004 CR4: 0000000108f72ef0
<4> [78.674977] PKRU: 55555554
<4> [78.674982] Call Trace:
<4> [78.674987]  <TASK>
<4> [78.675000]  lnl_mmio_read+0xd1/0xe0 [xe]
<4> [78.675406]  intel_alpm_disable+0xad/0x120 [xe]
<4> [78.675829]  intel_ddi_disable+0x15a/0x230 [xe]
<4> [78.676215]  intel_encoders_disable+0x9c/0xd0 [xe]
<4> [78.676557]  hsw_crtc_disable+0x5b/0x160 [xe]

Cc:ing some people.

>     - bat-lnl-1:          [PASS][3] -> [ABORT][4] +1 other test abort
>    [3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-6136-d41695c479e8bb24eb941e5ba916e42784af6f4d/bat-lnl-1/igt@kms_flip@basic-flip-vs-dpms@c-edp1.html
>    [4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178490v1/bat-lnl-1/igt@kms_flip@basic-flip-vs-dpms@c-edp1.html
> 
>   * igt@kms_flip@basic-flip-vs-dpms@d-edp1:
>     - bat-ptl-2:          [PASS][5] -> [DMESG-WARN][6]
>    [5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-6136-d41695c479e8bb24eb941e5ba916e42784af6f4d/bat-ptl-2/igt@kms_flip@basic-flip-vs-dpms@d-edp1.html
>    [6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178490v1/bat-ptl-2/igt@kms_flip@basic-flip-vs-dpms@d-edp1.html
> 
>   * igt@kms_force_connector_basic@force-connector-state:
>     - bat-wcl-2:          [PASS][7] -> [ABORT][8]
>    [7]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-6136-d41695c479e8bb24eb941e5ba916e42784af6f4d/bat-wcl-2/igt@kms_force_connector_basic@force-connector-state.html
>    [8]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178490v1/bat-wcl-2/igt@kms_force_connector_basic@force-connector-state.html
> 
>   * igt@kms_force_connector_basic@prune-stale-modes:
>     - bat-bmg-2:          [PASS][9] -> [ABORT][10]
>    [9]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-6136-d41695c479e8bb24eb941e5ba916e42784af6f4d/bat-bmg-2/igt@kms_force_connector_basic@prune-stale-modes.html
>    [10]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178490v1/bat-bmg-2/igt@kms_force_connector_basic@prune-stale-modes.html
> 
>   * igt@xe_module_load@load:
>     - bat-wcl-1:          [PASS][11] -> [ABORT][12]
>    [11]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-6136-d41695c479e8bb24eb941e5ba916e42784af6f4d/bat-wcl-1/igt@xe_module_load@load.html
>    [12]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178490v1/bat-wcl-1/igt@xe_module_load@load.html
> 
>   * igt@xe_query@multigpu-query-topology-l3-bank-mask:
>     - bat-bmg-3:          [PASS][13] -> [ABORT][14]
>    [13]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-6136-d41695c479e8bb24eb941e5ba916e42784af6f4d/bat-bmg-3/igt@xe_query@multigpu-query-topology-l3-bank-mask.html
>    [14]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178490v1/bat-bmg-3/igt@xe_query@multigpu-query-topology-l3-bank-mask.html
> 
>   
> 
> 
> Build changes
> -------------
> 
>   * IGT: IGT_9190 -> IGT_9191
>   * Linux: xe-6136-d41695c479e8bb24eb941e5ba916e42784af6f4d -> xe-pw-178490v1
> 
>   IGT_9190: 9190
>   IGT_9191: 9191
>   xe-6136-d41695c479e8bb24eb941e5ba916e42784af6f4d: d41695c479e8bb24eb941e5ba916e42784af6f4d
>   xe-pw-178490v1: 178490v1
> 
> == Logs ==
> 
> For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-178490v1/index.html

-- 
Ville Syrjälä
Intel

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

end of thread, other threads:[~2026-11-13 16:41 UTC | newest]

Thread overview: 19+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-11-13 13:43 [PATCH 0/8] drm/{i915, xe}: Make unclaimed mmio detection lockless and enable it for xe Ville Syrjala
2026-11-13 13:43 ` [PATCH 1/8] drm/i915/de: Uninline intel_de_{read,write}_fw() Ville Syrjala
2026-11-13 14:11   ` Jani Nikula
2026-11-13 13:43 ` [PATCH 2/8] drm/i915/de: Pimp the intel_de_{read,write}_fw() docs Ville Syrjala
2026-11-13 14:12   ` [PATCH 2/8] drm/i915/de: Pimp the intel_de_{read, write}_fw() docs Jani Nikula
2026-11-13 14:31     ` Ville Syrjälä
2026-11-13 13:43 ` [PATCH 3/8] drm/i915/de: Flatten the unclaimed mmio code Ville Syrjala
2026-11-13 14:25   ` Jani Nikula
2026-11-13 13:43 ` [PATCH 4/8] drm/i915/de: Make mmio_debug lockless Ville Syrjala
2026-11-13 16:30   ` Ville Syrjälä
2026-11-13 13:43 ` [PATCH 5/8] drm/i915/de: Optimize the mmio_debug checks in intel_de_{read, write}() Ville Syrjala
2026-11-13 13:43 ` [PATCH 6/8] drm/i915/de: Make display registers unlocked for TGL+ on i915 Ville Syrjala
2026-11-13 13:43 ` [PATCH 7/8] drm/xe: Enable unclaimed register detection on xe Ville Syrjala
2026-11-13 13:43 ` [PATCH 8/8] drm/i915/de: Nuke driver_is_i915() Ville Syrjala
2026-11-13 14:33 ` ✗ CI.checkpatch: warning for drm/{i915, xe}: Make unclaimed mmio detection lockless and enable it for xe Patchwork
2026-11-13 14:35 ` ✓ CI.KUnit: success " Patchwork
2026-11-13 14:52 ` ✗ CI.checksparse: warning " Patchwork
2026-11-13 15:07 ` ✗ Xe.CI.BAT: failure " Patchwork
2026-11-13 16:41   ` Ville Syrjälä

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