public inbox for intel-xe@lists.freedesktop.org
 help / color / mirror / Atom feed
* [PATCH 0/2] drm/i915: Make sure CRTC vs. pipe reordering is safe
@ 2026-04-08 15:57 Ville Syrjala
  2026-04-08 15:57 ` [PATCH 1/2] drm/i915/joiner: Make joiner "nomodeset" state copy independent of pipe order Ville Syrjala
                   ` (7 more replies)
  0 siblings, 8 replies; 12+ messages in thread
From: Ville Syrjala @ 2026-04-08 15:57 UTC (permalink / raw)
  To: intel-gfx; +Cc: intel-xe, Jani Nikula

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

Couple of things to make sure we can safely reorder
CRTCs vs. pipes.

I have another idea to make the joiner modeset and nomodeset
state copy paths a bit more alike still, but that's a bigger
change and clearly not backport material. The simple version
here we might be able to backport if necessary.

Cc: Jani Nikula <jani.nikula@intel.com>

Ville Syrjälä (2):
  drm/i915/joiner: Make joiner "nomodeset" state copy independent of
    pipe order
  drm/i915: Walk crtcs in pipe order

 drivers/gpu/drm/i915/display/intel_crtc.c     | 20 +++++
 drivers/gpu/drm/i915/display/intel_display.c  | 20 ++---
 drivers/gpu/drm/i915/display/intel_display.h  | 90 ++++++++-----------
 .../gpu/drm/i915/display/intel_display_core.h |  3 +
 .../drm/i915/display/intel_display_driver.c   |  1 +
 .../drm/i915/display/intel_display_types.h    |  1 +
 drivers/gpu/drm/xe/display/xe_display.c       |  1 +
 7 files changed, 69 insertions(+), 67 deletions(-)

-- 
2.52.0


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

* [PATCH 1/2] drm/i915/joiner: Make joiner "nomodeset" state copy independent of pipe order
  2026-04-08 15:57 [PATCH 0/2] drm/i915: Make sure CRTC vs. pipe reordering is safe Ville Syrjala
@ 2026-04-08 15:57 ` Ville Syrjala
  2026-04-08 16:46   ` Jani Nikula
  2026-04-08 15:57 ` [PATCH 2/2] drm/i915: Walk crtcs in " Ville Syrjala
                   ` (6 subsequent siblings)
  7 siblings, 1 reply; 12+ messages in thread
From: Ville Syrjala @ 2026-04-08 15:57 UTC (permalink / raw)
  To: intel-gfx; +Cc: intel-xe, Jani Nikula

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

Currently the joiner primary->secondary hw state copy still happens from
the main compute_config loop alongside the primary uapi->hw state copy.
The primary uapi->hw state copy must therefore happen first, or else
we'll end up copying stale junk into the secondary.

We have a WARN in intel_atomic_check_joiner() to make sure the CRTCs
will be walked in the correct order. The plan is to reoder the CRTCs,
which would mess up the order, unless we also adjust the iterators
to keep the pipe order. The actual plan is to do both, so technically
we should be able to just remove the WARN and call it a day.

But relying on the iteration order like this is fragile and confusing,
so let's move the "nomodeset" joiner state copy into the later loop
where the "modeset" state copy is also done. The first loop having
completely finished, we are guaranteed to have up to date hw state
on the primary when we do the copy to the secondary.

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

diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index 58a654ca0d20..674a4ece6d0f 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -5914,17 +5914,6 @@ static int intel_atomic_check_joiner(struct intel_atomic_state *state,
 			return -EINVAL;
 		}
 
-		/*
-		 * The state copy logic assumes the primary crtc gets processed
-		 * before the secondary crtc during the main compute_config loop.
-		 * This works because the crtcs are created in pipe order,
-		 * and the hardware requires primary pipe < secondary pipe as well.
-		 * Should that change we need to rethink the logic.
-		 */
-		if (WARN_ON(drm_crtc_index(&primary_crtc->base) >
-			    drm_crtc_index(&secondary_crtc->base)))
-			return -EINVAL;
-
 		drm_dbg_kms(display->drm,
 			    "[CRTC:%d:%s] Used as secondary for joiner primary [CRTC:%d:%s]\n",
 			    secondary_crtc->base.base.id, secondary_crtc->base.name,
@@ -6302,9 +6291,7 @@ static int intel_atomic_check_config(struct intel_atomic_state *state,
 
 	for_each_new_intel_crtc_in_state(state, crtc, new_crtc_state, i) {
 		if (!intel_crtc_needs_modeset(new_crtc_state)) {
-			if (intel_crtc_is_joiner_secondary(new_crtc_state))
-				copy_joiner_crtc_state_nomodeset(state, crtc);
-			else
+			if (!intel_crtc_is_joiner_secondary(new_crtc_state))
 				intel_crtc_copy_uapi_to_hw_state_nomodeset(state, crtc);
 			continue;
 		}
@@ -6439,8 +6426,11 @@ int intel_atomic_check(struct drm_device *dev,
 		goto fail;
 
 	for_each_new_intel_crtc_in_state(state, crtc, new_crtc_state, i) {
-		if (!intel_crtc_needs_modeset(new_crtc_state))
+		if (!intel_crtc_needs_modeset(new_crtc_state)) {
+			if (intel_crtc_is_joiner_secondary(new_crtc_state))
+				copy_joiner_crtc_state_nomodeset(state, crtc);
 			continue;
+		}
 
 		if (intel_crtc_is_joiner_secondary(new_crtc_state)) {
 			drm_WARN_ON(display->drm, new_crtc_state->uapi.enable);
-- 
2.52.0


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

* [PATCH 2/2] drm/i915: Walk crtcs in pipe order
  2026-04-08 15:57 [PATCH 0/2] drm/i915: Make sure CRTC vs. pipe reordering is safe Ville Syrjala
  2026-04-08 15:57 ` [PATCH 1/2] drm/i915/joiner: Make joiner "nomodeset" state copy independent of pipe order Ville Syrjala
@ 2026-04-08 15:57 ` Ville Syrjala
  2026-04-08 16:04 ` ✗ CI.checkpatch: warning for drm/i915: Make sure CRTC vs. pipe reordering is safe Patchwork
                   ` (5 subsequent siblings)
  7 siblings, 0 replies; 12+ messages in thread
From: Ville Syrjala @ 2026-04-08 15:57 UTC (permalink / raw)
  To: intel-gfx; +Cc: intel-xe, Jani Nikula

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

Currently our crtcs are registered in pipe order, and thus
all the for_intel_crtc*() iterators walk the crtcs in pipe
order. There are a bunch of places that more or less depend
on that. Eg. during plane updates and such we want joined
pipes to be processed back-to-back to give a better chance
of an atomic update across the whole set.

When we start to register crtcs in a different order we don't
want to change the order in which the pipes get handled.
Decouple the for_each_intel_crtc*() iterators from the crtc
registration order by using a separate list which will be
sorted by the pipe rather than the crtc index.

We could probably use a simple array or something, but that
would require some kind of extra iterator variable for the
macros, and thus would require a lot more changes. Using
a linked list keeps the fallout minimal. We can look at
using a more optimal data structure later.

I also added this extra junk to the atomic state iterators:
"(__i) = drm_crtc_index(&(crtc)->base), (void)(__i)"
even though the macro itself no longer needs the "__i" iterator.
This in case the "__i" is used by the caller, and to
avoid compiler warnings if it's completely unused now.

v2: Flip the pipe comparison (Jani)

Reviewed-by: Jani Nikula <jani.nikula@intel.com>
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 drivers/gpu/drm/i915/display/intel_crtc.c     | 20 +++++
 drivers/gpu/drm/i915/display/intel_display.h  | 90 ++++++++-----------
 .../gpu/drm/i915/display/intel_display_core.h |  3 +
 .../drm/i915/display/intel_display_driver.c   |  1 +
 .../drm/i915/display/intel_display_types.h    |  1 +
 drivers/gpu/drm/xe/display/xe_display.c       |  1 +
 6 files changed, 64 insertions(+), 52 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_crtc.c b/drivers/gpu/drm/i915/display/intel_crtc.c
index b8189cd5d864..c88a6810c49f 100644
--- a/drivers/gpu/drm/i915/display/intel_crtc.c
+++ b/drivers/gpu/drm/i915/display/intel_crtc.c
@@ -209,6 +209,8 @@ static struct intel_crtc *intel_crtc_alloc(void)
 	crtc->base.state = &crtc_state->uapi;
 	crtc->config = crtc_state;
 
+	INIT_LIST_HEAD(&crtc->pipe_head);
+
 	return crtc;
 }
 
@@ -222,6 +224,8 @@ static void intel_crtc_destroy(struct drm_crtc *_crtc)
 {
 	struct intel_crtc *crtc = to_intel_crtc(_crtc);
 
+	list_del(&crtc->pipe_head);
+
 	cpu_latency_qos_remove_request(&crtc->vblank_pm_qos);
 
 	drm_crtc_cleanup(&crtc->base);
@@ -308,6 +312,20 @@ static const struct drm_crtc_funcs i8xx_crtc_funcs = {
 	.get_vblank_timestamp = intel_crtc_get_vblank_timestamp,
 };
 
+static void add_crtc_to_pipe_list(struct intel_display *display, struct intel_crtc *crtc)
+{
+	struct intel_crtc *iter;
+
+	list_for_each_entry(iter, &display->pipe_list, pipe_head) {
+		if (crtc->pipe < iter->pipe) {
+			list_add_tail(&crtc->pipe_head, &iter->pipe_head);
+			return;
+		}
+	}
+
+	list_add_tail(&crtc->pipe_head, &display->pipe_list);
+}
+
 static int __intel_crtc_init(struct intel_display *display, enum pipe pipe)
 {
 	struct intel_plane *primary, *cursor;
@@ -398,6 +416,8 @@ static int __intel_crtc_init(struct intel_display *display, enum pipe pipe)
 	if (HAS_CASF(display) && crtc->num_scalers >= 2)
 		drm_crtc_create_sharpness_strength_property(&crtc->base);
 
+	add_crtc_to_pipe_list(display, crtc);
+
 	return 0;
 
 fail:
diff --git a/drivers/gpu/drm/i915/display/intel_display.h b/drivers/gpu/drm/i915/display/intel_display.h
index 552a59d19e0f..1e76a455d7c4 100644
--- a/drivers/gpu/drm/i915/display/intel_display.h
+++ b/drivers/gpu/drm/i915/display/intel_display.h
@@ -212,22 +212,23 @@ enum phy_fia {
 			    base.head)					\
 		for_each_if((intel_plane)->pipe == (intel_crtc)->pipe)
 
-#define for_each_intel_crtc(dev, intel_crtc)				\
-	list_for_each_entry(intel_crtc,					\
-			    &(dev)->mode_config.crtc_list,		\
-			    base.head)
+#define for_each_intel_crtc(dev, crtc) \
+	list_for_each_entry((crtc), \
+			    &to_intel_display(dev)->pipe_list, \
+			    pipe_head)
 
-#define for_each_intel_crtc_in_pipe_mask(dev, intel_crtc, pipe_mask)	\
-	list_for_each_entry(intel_crtc,					\
-			    &(dev)->mode_config.crtc_list,		\
-			    base.head)					\
-		for_each_if((pipe_mask) & BIT(intel_crtc->pipe))
+#define for_each_intel_crtc_reverse(dev, crtc) \
+	list_for_each_entry_reverse((crtc), \
+				    &to_intel_display(dev)->pipe_list, \
+				    pipe_head)
 
-#define for_each_intel_crtc_in_pipe_mask_reverse(dev, intel_crtc, pipe_mask)	\
-	list_for_each_entry_reverse((intel_crtc),				\
-				    &(dev)->mode_config.crtc_list,		\
-				    base.head)					\
-		for_each_if((pipe_mask) & BIT((intel_crtc)->pipe))
+#define for_each_intel_crtc_in_pipe_mask(dev, crtc, pipe_mask) \
+	for_each_intel_crtc((dev), (crtc)) \
+		for_each_if((pipe_mask) & BIT((crtc)->pipe))
+
+#define for_each_intel_crtc_in_pipe_mask_reverse(dev, crtc, pipe_mask) \
+	for_each_intel_crtc_reverse((dev), (crtc)) \
+		for_each_if((pipe_mask) & BIT((crtc)->pipe))
 
 #define for_each_intel_encoder(dev, intel_encoder)		\
 	list_for_each_entry(intel_encoder,			\
@@ -269,14 +270,6 @@ enum phy_fia {
 	     (__i)++) \
 		for_each_if(plane)
 
-#define for_each_old_intel_crtc_in_state(__state, crtc, old_crtc_state, __i) \
-	for ((__i) = 0; \
-	     (__i) < (__state)->base.dev->mode_config.num_crtc && \
-		     ((crtc) = to_intel_crtc((__state)->base.crtcs[__i].ptr), \
-		      (old_crtc_state) = to_intel_crtc_state((__state)->base.crtcs[__i].old_state), 1); \
-	     (__i)++) \
-		for_each_if(crtc)
-
 #define for_each_new_intel_plane_in_state(__state, plane, new_plane_state, __i) \
 	for ((__i) = 0; \
 	     (__i) < (__state)->base.dev->mode_config.num_total_plane && \
@@ -285,22 +278,6 @@ enum phy_fia {
 	     (__i)++) \
 		for_each_if(plane)
 
-#define for_each_new_intel_crtc_in_state(__state, crtc, new_crtc_state, __i) \
-	for ((__i) = 0; \
-	     (__i) < (__state)->base.dev->mode_config.num_crtc && \
-		     ((crtc) = to_intel_crtc((__state)->base.crtcs[__i].ptr), \
-		      (new_crtc_state) = to_intel_crtc_state((__state)->base.crtcs[__i].new_state), 1); \
-	     (__i)++) \
-		for_each_if(crtc)
-
-#define for_each_new_intel_crtc_in_state_reverse(__state, crtc, new_crtc_state, __i) \
-	for ((__i) = (__state)->base.dev->mode_config.num_crtc - 1; \
-	     (__i) >= 0  && \
-	     ((crtc) = to_intel_crtc((__state)->base.crtcs[__i].ptr), \
-	      (new_crtc_state) = to_intel_crtc_state((__state)->base.crtcs[__i].new_state), 1); \
-	     (__i)--) \
-		for_each_if(crtc)
-
 #define for_each_oldnew_intel_plane_in_state(__state, plane, old_plane_state, new_plane_state, __i) \
 	for ((__i) = 0; \
 	     (__i) < (__state)->base.dev->mode_config.num_total_plane && \
@@ -310,23 +287,32 @@ enum phy_fia {
 	     (__i)++) \
 		for_each_if(plane)
 
+#define for_each_old_intel_crtc_in_state(__state, crtc, old_crtc_state, __i) \
+	for_each_intel_crtc((__state)->base.dev, (crtc)) \
+		for_each_if(((__i) = drm_crtc_index(&(crtc)->base), (void)(__i), \
+			     (old_crtc_state) = intel_atomic_get_old_crtc_state((__state), (crtc))))
+
+#define for_each_new_intel_crtc_in_state(__state, crtc, new_crtc_state, __i) \
+	for_each_intel_crtc((__state)->base.dev, (crtc)) \
+		for_each_if(((__i) = drm_crtc_index(&(crtc)->base), (void)(__i), \
+			     (new_crtc_state) = intel_atomic_get_new_crtc_state((__state), (crtc))))
+
+#define for_each_new_intel_crtc_in_state_reverse(__state, crtc, new_crtc_state, __i) \
+	for_each_intel_crtc_reverse((__state)->base.dev, (crtc)) \
+		for_each_if(((__i) = drm_crtc_index(&(crtc)->base), (void)(__i), \
+			     (new_crtc_state) = intel_atomic_get_new_crtc_state((__state), (crtc))))
+
 #define for_each_oldnew_intel_crtc_in_state(__state, crtc, old_crtc_state, new_crtc_state, __i) \
-	for ((__i) = 0; \
-	     (__i) < (__state)->base.dev->mode_config.num_crtc && \
-		     ((crtc) = to_intel_crtc((__state)->base.crtcs[__i].ptr), \
-		      (old_crtc_state) = to_intel_crtc_state((__state)->base.crtcs[__i].old_state), \
-		      (new_crtc_state) = to_intel_crtc_state((__state)->base.crtcs[__i].new_state), 1); \
-	     (__i)++) \
-		for_each_if(crtc)
+	for_each_intel_crtc((__state)->base.dev, (crtc)) \
+		for_each_if(((__i) = drm_crtc_index(&(crtc)->base), (void)(__i), \
+			     (old_crtc_state) = intel_atomic_get_old_crtc_state((__state), (crtc)), \
+			     (new_crtc_state) = intel_atomic_get_new_crtc_state((__state), (crtc))))
 
 #define for_each_oldnew_intel_crtc_in_state_reverse(__state, crtc, old_crtc_state, new_crtc_state, __i) \
-	for ((__i) = (__state)->base.dev->mode_config.num_crtc - 1; \
-	     (__i) >= 0  && \
-	     ((crtc) = to_intel_crtc((__state)->base.crtcs[__i].ptr), \
-	      (old_crtc_state) = to_intel_crtc_state((__state)->base.crtcs[__i].old_state), \
-	      (new_crtc_state) = to_intel_crtc_state((__state)->base.crtcs[__i].new_state), 1); \
-	     (__i)--) \
-		for_each_if(crtc)
+	for_each_intel_crtc_reverse((__state)->base.dev, (crtc)) \
+		for_each_if(((__i) = drm_crtc_index(&(crtc)->base), (void)(__i), \
+			     (old_crtc_state) = intel_atomic_get_old_crtc_state((__state), (crtc)), \
+			     (new_crtc_state) = intel_atomic_get_new_crtc_state((__state), (crtc))))
 
 #define intel_atomic_crtc_state_for_each_plane_state( \
 		  plane, plane_state, \
diff --git a/drivers/gpu/drm/i915/display/intel_display_core.h b/drivers/gpu/drm/i915/display/intel_display_core.h
index d708d322aa85..d9baca2d5aaf 100644
--- a/drivers/gpu/drm/i915/display/intel_display_core.h
+++ b/drivers/gpu/drm/i915/display/intel_display_core.h
@@ -294,6 +294,9 @@ struct intel_display {
 	/* Parent, or core, driver functions exposed to display */
 	const struct intel_display_parent_interface *parent;
 
+	/* list of all intel_crtcs sorted by pipe */
+	struct list_head pipe_list;
+
 	/* Display functions */
 	struct {
 		/* Top level crtc-ish functions */
diff --git a/drivers/gpu/drm/i915/display/intel_display_driver.c b/drivers/gpu/drm/i915/display/intel_display_driver.c
index 23bfecc983e8..9c2f7ad6c7b7 100644
--- a/drivers/gpu/drm/i915/display/intel_display_driver.c
+++ b/drivers/gpu/drm/i915/display/intel_display_driver.c
@@ -117,6 +117,7 @@ static void intel_mode_config_init(struct intel_display *display)
 
 	drm_mode_config_init(display->drm);
 	INIT_LIST_HEAD(&display->global.obj_list);
+	INIT_LIST_HEAD(&display->pipe_list);
 
 	mode_config->min_width = 0;
 	mode_config->min_height = 0;
diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h b/drivers/gpu/drm/i915/display/intel_display_types.h
index ca2581fb7bbd..ee076106be85 100644
--- a/drivers/gpu/drm/i915/display/intel_display_types.h
+++ b/drivers/gpu/drm/i915/display/intel_display_types.h
@@ -1485,6 +1485,7 @@ struct intel_flipq {
 
 struct intel_crtc {
 	struct drm_crtc base;
+	struct list_head pipe_head;
 	enum pipe pipe;
 	/*
 	 * Whether the crtc and the connected output pipeline is active. Implies
diff --git a/drivers/gpu/drm/xe/display/xe_display.c b/drivers/gpu/drm/xe/display/xe_display.c
index a0a4ddf3bb46..00dfa68af29a 100644
--- a/drivers/gpu/drm/xe/display/xe_display.c
+++ b/drivers/gpu/drm/xe/display/xe_display.c
@@ -21,6 +21,7 @@
 #include "intel_audio.h"
 #include "intel_bw.h"
 #include "intel_display.h"
+#include "intel_display_core.h"
 #include "intel_display_device.h"
 #include "intel_display_driver.h"
 #include "intel_display_irq.h"
-- 
2.52.0


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

* ✗ CI.checkpatch: warning for drm/i915: Make sure CRTC vs. pipe reordering is safe
  2026-04-08 15:57 [PATCH 0/2] drm/i915: Make sure CRTC vs. pipe reordering is safe Ville Syrjala
  2026-04-08 15:57 ` [PATCH 1/2] drm/i915/joiner: Make joiner "nomodeset" state copy independent of pipe order Ville Syrjala
  2026-04-08 15:57 ` [PATCH 2/2] drm/i915: Walk crtcs in " Ville Syrjala
@ 2026-04-08 16:04 ` Patchwork
  2026-04-08 16:05 ` ✗ CI.KUnit: failure " Patchwork
                   ` (4 subsequent siblings)
  7 siblings, 0 replies; 12+ messages in thread
From: Patchwork @ 2026-04-08 16:04 UTC (permalink / raw)
  To: Ville Syrjala; +Cc: intel-xe

== Series Details ==

Series: drm/i915: Make sure CRTC vs. pipe reordering is safe
URL   : https://patchwork.freedesktop.org/series/164557/
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
1f57ba1afceae32108bd24770069f764d940a0e4
+ cd /kernel
+ git config --global --add safe.directory /kernel
+ git log -n1
commit 0f49fc4203c81749f9ac6ff690aa9fa65526b98f
Author: Ville Syrjälä <ville.syrjala@linux.intel.com>
Date:   Wed Apr 8 18:57:44 2026 +0300

    drm/i915: Walk crtcs in pipe order
    
    Currently our crtcs are registered in pipe order, and thus
    all the for_intel_crtc*() iterators walk the crtcs in pipe
    order. There are a bunch of places that more or less depend
    on that. Eg. during plane updates and such we want joined
    pipes to be processed back-to-back to give a better chance
    of an atomic update across the whole set.
    
    When we start to register crtcs in a different order we don't
    want to change the order in which the pipes get handled.
    Decouple the for_each_intel_crtc*() iterators from the crtc
    registration order by using a separate list which will be
    sorted by the pipe rather than the crtc index.
    
    We could probably use a simple array or something, but that
    would require some kind of extra iterator variable for the
    macros, and thus would require a lot more changes. Using
    a linked list keeps the fallout minimal. We can look at
    using a more optimal data structure later.
    
    I also added this extra junk to the atomic state iterators:
    "(__i) = drm_crtc_index(&(crtc)->base), (void)(__i)"
    even though the macro itself no longer needs the "__i" iterator.
    This in case the "__i" is used by the caller, and to
    avoid compiler warnings if it's completely unused now.
    
    v2: Flip the pipe comparison (Jani)
    
    Reviewed-by: Jani Nikula <jani.nikula@intel.com>
    Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
+ /mt/dim checkpatch f074368a55893ee121ba2920497b6c25e265d190 drm-intel
452ef075f37d drm/i915/joiner: Make joiner "nomodeset" state copy independent of pipe order
0f49fc4203c8 drm/i915: Walk crtcs in pipe order
-:118: ERROR:COMPLEX_MACRO: Macros with complex values should be enclosed in parentheses
#118: FILE: drivers/gpu/drm/i915/display/intel_display.h:225:
+#define for_each_intel_crtc_in_pipe_mask(dev, crtc, pipe_mask) \
+	for_each_intel_crtc((dev), (crtc)) \
+		for_each_if((pipe_mask) & BIT((crtc)->pipe))

BUT SEE:

   do {} while (0) advice is over-stated in a few situations:

   The more obvious case is macros, like MODULE_PARM_DESC, invoked at
   file-scope, where C disallows code (it must be in functions).  See
   $exceptions if you have one to add by name.

   More troublesome is declarative macros used at top of new scope,
   like DECLARE_PER_CPU.  These might just compile with a do-while-0
   wrapper, but would be incorrect.  Most of these are handled by
   detecting struct,union,etc declaration primitives in $exceptions.

   Theres also macros called inside an if (block), which "return" an
   expression.  These cannot do-while, and need a ({}) wrapper.

   Enjoy this qualification while we work to improve our heuristics.

-:118: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'crtc' - possible side-effects?
#118: FILE: drivers/gpu/drm/i915/display/intel_display.h:225:
+#define for_each_intel_crtc_in_pipe_mask(dev, crtc, pipe_mask) \
+	for_each_intel_crtc((dev), (crtc)) \
+		for_each_if((pipe_mask) & BIT((crtc)->pipe))

-:127: ERROR:COMPLEX_MACRO: Macros with complex values should be enclosed in parentheses
#127: FILE: drivers/gpu/drm/i915/display/intel_display.h:229:
+#define for_each_intel_crtc_in_pipe_mask_reverse(dev, crtc, pipe_mask) \
+	for_each_intel_crtc_reverse((dev), (crtc)) \
+		for_each_if((pipe_mask) & BIT((crtc)->pipe))

BUT SEE:

   do {} while (0) advice is over-stated in a few situations:

   The more obvious case is macros, like MODULE_PARM_DESC, invoked at
   file-scope, where C disallows code (it must be in functions).  See
   $exceptions if you have one to add by name.

   More troublesome is declarative macros used at top of new scope,
   like DECLARE_PER_CPU.  These might just compile with a do-while-0
   wrapper, but would be incorrect.  Most of these are handled by
   detecting struct,union,etc declaration primitives in $exceptions.

   Theres also macros called inside an if (block), which "return" an
   expression.  These cannot do-while, and need a ({}) wrapper.

   Enjoy this qualification while we work to improve our heuristics.

-:127: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'crtc' - possible side-effects?
#127: FILE: drivers/gpu/drm/i915/display/intel_display.h:229:
+#define for_each_intel_crtc_in_pipe_mask_reverse(dev, crtc, pipe_mask) \
+	for_each_intel_crtc_reverse((dev), (crtc)) \
+		for_each_if((pipe_mask) & BIT((crtc)->pipe))

-:175: ERROR:COMPLEX_MACRO: Macros with complex values should be enclosed in parentheses
#175: FILE: drivers/gpu/drm/i915/display/intel_display.h:290:
+#define for_each_old_intel_crtc_in_state(__state, crtc, old_crtc_state, __i) \
+	for_each_intel_crtc((__state)->base.dev, (crtc)) \
+		for_each_if(((__i) = drm_crtc_index(&(crtc)->base), (void)(__i), \
+			     (old_crtc_state) = intel_atomic_get_old_crtc_state((__state), (crtc))))

BUT SEE:

   do {} while (0) advice is over-stated in a few situations:

   The more obvious case is macros, like MODULE_PARM_DESC, invoked at
   file-scope, where C disallows code (it must be in functions).  See
   $exceptions if you have one to add by name.

   More troublesome is declarative macros used at top of new scope,
   like DECLARE_PER_CPU.  These might just compile with a do-while-0
   wrapper, but would be incorrect.  Most of these are handled by
   detecting struct,union,etc declaration primitives in $exceptions.

   Theres also macros called inside an if (block), which "return" an
   expression.  These cannot do-while, and need a ({}) wrapper.

   Enjoy this qualification while we work to improve our heuristics.

-:175: CHECK:MACRO_ARG_REUSE: Macro argument reuse '__state' - possible side-effects?
#175: FILE: drivers/gpu/drm/i915/display/intel_display.h:290:
+#define for_each_old_intel_crtc_in_state(__state, crtc, old_crtc_state, __i) \
+	for_each_intel_crtc((__state)->base.dev, (crtc)) \
+		for_each_if(((__i) = drm_crtc_index(&(crtc)->base), (void)(__i), \
+			     (old_crtc_state) = intel_atomic_get_old_crtc_state((__state), (crtc))))

-:175: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'crtc' - possible side-effects?
#175: FILE: drivers/gpu/drm/i915/display/intel_display.h:290:
+#define for_each_old_intel_crtc_in_state(__state, crtc, old_crtc_state, __i) \
+	for_each_intel_crtc((__state)->base.dev, (crtc)) \
+		for_each_if(((__i) = drm_crtc_index(&(crtc)->base), (void)(__i), \
+			     (old_crtc_state) = intel_atomic_get_old_crtc_state((__state), (crtc))))

-:175: CHECK:MACRO_ARG_REUSE: Macro argument reuse '__i' - possible side-effects?
#175: FILE: drivers/gpu/drm/i915/display/intel_display.h:290:
+#define for_each_old_intel_crtc_in_state(__state, crtc, old_crtc_state, __i) \
+	for_each_intel_crtc((__state)->base.dev, (crtc)) \
+		for_each_if(((__i) = drm_crtc_index(&(crtc)->base), (void)(__i), \
+			     (old_crtc_state) = intel_atomic_get_old_crtc_state((__state), (crtc))))

-:180: ERROR:COMPLEX_MACRO: Macros with complex values should be enclosed in parentheses
#180: FILE: drivers/gpu/drm/i915/display/intel_display.h:295:
+#define for_each_new_intel_crtc_in_state(__state, crtc, new_crtc_state, __i) \
+	for_each_intel_crtc((__state)->base.dev, (crtc)) \
+		for_each_if(((__i) = drm_crtc_index(&(crtc)->base), (void)(__i), \
+			     (new_crtc_state) = intel_atomic_get_new_crtc_state((__state), (crtc))))

BUT SEE:

   do {} while (0) advice is over-stated in a few situations:

   The more obvious case is macros, like MODULE_PARM_DESC, invoked at
   file-scope, where C disallows code (it must be in functions).  See
   $exceptions if you have one to add by name.

   More troublesome is declarative macros used at top of new scope,
   like DECLARE_PER_CPU.  These might just compile with a do-while-0
   wrapper, but would be incorrect.  Most of these are handled by
   detecting struct,union,etc declaration primitives in $exceptions.

   Theres also macros called inside an if (block), which "return" an
   expression.  These cannot do-while, and need a ({}) wrapper.

   Enjoy this qualification while we work to improve our heuristics.

-:180: CHECK:MACRO_ARG_REUSE: Macro argument reuse '__state' - possible side-effects?
#180: FILE: drivers/gpu/drm/i915/display/intel_display.h:295:
+#define for_each_new_intel_crtc_in_state(__state, crtc, new_crtc_state, __i) \
+	for_each_intel_crtc((__state)->base.dev, (crtc)) \
+		for_each_if(((__i) = drm_crtc_index(&(crtc)->base), (void)(__i), \
+			     (new_crtc_state) = intel_atomic_get_new_crtc_state((__state), (crtc))))

-:180: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'crtc' - possible side-effects?
#180: FILE: drivers/gpu/drm/i915/display/intel_display.h:295:
+#define for_each_new_intel_crtc_in_state(__state, crtc, new_crtc_state, __i) \
+	for_each_intel_crtc((__state)->base.dev, (crtc)) \
+		for_each_if(((__i) = drm_crtc_index(&(crtc)->base), (void)(__i), \
+			     (new_crtc_state) = intel_atomic_get_new_crtc_state((__state), (crtc))))

-:180: CHECK:MACRO_ARG_REUSE: Macro argument reuse '__i' - possible side-effects?
#180: FILE: drivers/gpu/drm/i915/display/intel_display.h:295:
+#define for_each_new_intel_crtc_in_state(__state, crtc, new_crtc_state, __i) \
+	for_each_intel_crtc((__state)->base.dev, (crtc)) \
+		for_each_if(((__i) = drm_crtc_index(&(crtc)->base), (void)(__i), \
+			     (new_crtc_state) = intel_atomic_get_new_crtc_state((__state), (crtc))))

-:185: ERROR:COMPLEX_MACRO: Macros with complex values should be enclosed in parentheses
#185: FILE: drivers/gpu/drm/i915/display/intel_display.h:300:
+#define for_each_new_intel_crtc_in_state_reverse(__state, crtc, new_crtc_state, __i) \
+	for_each_intel_crtc_reverse((__state)->base.dev, (crtc)) \
+		for_each_if(((__i) = drm_crtc_index(&(crtc)->base), (void)(__i), \
+			     (new_crtc_state) = intel_atomic_get_new_crtc_state((__state), (crtc))))

BUT SEE:

   do {} while (0) advice is over-stated in a few situations:

   The more obvious case is macros, like MODULE_PARM_DESC, invoked at
   file-scope, where C disallows code (it must be in functions).  See
   $exceptions if you have one to add by name.

   More troublesome is declarative macros used at top of new scope,
   like DECLARE_PER_CPU.  These might just compile with a do-while-0
   wrapper, but would be incorrect.  Most of these are handled by
   detecting struct,union,etc declaration primitives in $exceptions.

   Theres also macros called inside an if (block), which "return" an
   expression.  These cannot do-while, and need a ({}) wrapper.

   Enjoy this qualification while we work to improve our heuristics.

-:185: CHECK:MACRO_ARG_REUSE: Macro argument reuse '__state' - possible side-effects?
#185: FILE: drivers/gpu/drm/i915/display/intel_display.h:300:
+#define for_each_new_intel_crtc_in_state_reverse(__state, crtc, new_crtc_state, __i) \
+	for_each_intel_crtc_reverse((__state)->base.dev, (crtc)) \
+		for_each_if(((__i) = drm_crtc_index(&(crtc)->base), (void)(__i), \
+			     (new_crtc_state) = intel_atomic_get_new_crtc_state((__state), (crtc))))

-:185: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'crtc' - possible side-effects?
#185: FILE: drivers/gpu/drm/i915/display/intel_display.h:300:
+#define for_each_new_intel_crtc_in_state_reverse(__state, crtc, new_crtc_state, __i) \
+	for_each_intel_crtc_reverse((__state)->base.dev, (crtc)) \
+		for_each_if(((__i) = drm_crtc_index(&(crtc)->base), (void)(__i), \
+			     (new_crtc_state) = intel_atomic_get_new_crtc_state((__state), (crtc))))

-:185: CHECK:MACRO_ARG_REUSE: Macro argument reuse '__i' - possible side-effects?
#185: FILE: drivers/gpu/drm/i915/display/intel_display.h:300:
+#define for_each_new_intel_crtc_in_state_reverse(__state, crtc, new_crtc_state, __i) \
+	for_each_intel_crtc_reverse((__state)->base.dev, (crtc)) \
+		for_each_if(((__i) = drm_crtc_index(&(crtc)->base), (void)(__i), \
+			     (new_crtc_state) = intel_atomic_get_new_crtc_state((__state), (crtc))))

-:200: WARNING:LONG_LINE: line length of 101 exceeds 100 columns
#200: FILE: drivers/gpu/drm/i915/display/intel_display.h:308:
+			     (old_crtc_state) = intel_atomic_get_old_crtc_state((__state), (crtc)), \

-:213: WARNING:LONG_LINE: line length of 101 exceeds 100 columns
#213: FILE: drivers/gpu/drm/i915/display/intel_display.h:314:
+			     (old_crtc_state) = intel_atomic_get_old_crtc_state((__state), (crtc)), \

total: 5 errors, 2 warnings, 11 checks, 193 lines checked



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

* ✗ CI.KUnit: failure for drm/i915: Make sure CRTC vs. pipe reordering is safe
  2026-04-08 15:57 [PATCH 0/2] drm/i915: Make sure CRTC vs. pipe reordering is safe Ville Syrjala
                   ` (2 preceding siblings ...)
  2026-04-08 16:04 ` ✗ CI.checkpatch: warning for drm/i915: Make sure CRTC vs. pipe reordering is safe Patchwork
@ 2026-04-08 16:05 ` Patchwork
  2026-04-10  8:37 ` ✗ CI.checkpatch: warning for drm/i915: Make sure CRTC vs. pipe reordering is safe (rev2) Patchwork
                   ` (3 subsequent siblings)
  7 siblings, 0 replies; 12+ messages in thread
From: Patchwork @ 2026-04-08 16:05 UTC (permalink / raw)
  To: Ville Syrjala; +Cc: intel-xe

== Series Details ==

Series: drm/i915: Make sure CRTC vs. pipe reordering is safe
URL   : https://patchwork.freedesktop.org/series/164557/
State : failure

== Summary ==

+ trap cleanup EXIT
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/xe/.kunitconfig
[16:04:04] Configuring KUnit Kernel ...
Generating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[16:04:08] 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
[16:04:39] Starting KUnit Kernel (1/1)...
[16:04:39] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[16:04:39] ================== guc_buf (11 subtests) ===================
[16:04:39] [PASSED] test_smallest
[16:04:39] [PASSED] test_largest
[16:04:39] [PASSED] test_granular
[16:04:39] [PASSED] test_unique
[16:04:39] [PASSED] test_overlap
[16:04:39] [PASSED] test_reusable
[16:04:39] [PASSED] test_too_big
[16:04:39] [PASSED] test_flush
[16:04:39] [PASSED] test_lookup
[16:04:39] [PASSED] test_data
[16:04:39] [PASSED] test_class
[16:04:39] ===================== [PASSED] guc_buf =====================
[16:04:39] =================== guc_dbm (7 subtests) ===================
[16:04:39] [PASSED] test_empty
[16:04:39] [PASSED] test_default
[16:04:39] ======================== test_size  ========================
[16:04:39] [PASSED] 4
[16:04:39] [PASSED] 8
[16:04:39] [PASSED] 32
[16:04:39] [PASSED] 256
[16:04:39] ==================== [PASSED] test_size ====================
[16:04:39] ======================= test_reuse  ========================
[16:04:39] [PASSED] 4
[16:04:39] [PASSED] 8
[16:04:39] [PASSED] 32
[16:04:39] [PASSED] 256
[16:04:39] =================== [PASSED] test_reuse ====================
[16:04:39] =================== test_range_overlap  ====================
[16:04:39] [PASSED] 4
[16:04:39] [PASSED] 8
[16:04:39] [PASSED] 32
[16:04:39] [PASSED] 256
[16:04:39] =============== [PASSED] test_range_overlap ================
[16:04:39] =================== test_range_compact  ====================
[16:04:39] [PASSED] 4
[16:04:39] [PASSED] 8
[16:04:39] [PASSED] 32
[16:04:39] [PASSED] 256
[16:04:39] =============== [PASSED] test_range_compact ================
[16:04:39] ==================== test_range_spare  =====================
[16:04:39] [PASSED] 4
[16:04:39] [PASSED] 8
[16:04:39] [PASSED] 32
[16:04:39] [PASSED] 256
[16:04:39] ================ [PASSED] test_range_spare =================
[16:04:39] ===================== [PASSED] guc_dbm =====================
[16:04:39] =================== guc_idm (6 subtests) ===================
[16:04:39] [PASSED] bad_init
[16:04:39] [PASSED] no_init
[16:04:39] [PASSED] init_fini
[16:04:39] [PASSED] check_used
[16:04:39] [PASSED] check_quota
[16:04:39] [PASSED] check_all
[16:04:39] ===================== [PASSED] guc_idm =====================
[16:04:39] ================== no_relay (3 subtests) ===================
[16:04:39] [PASSED] xe_drops_guc2pf_if_not_ready
[16:04:39] [PASSED] xe_drops_guc2vf_if_not_ready
[16:04:39] [PASSED] xe_rejects_send_if_not_ready
[16:04:39] ==================== [PASSED] no_relay =====================
[16:04:39] ================== pf_relay (14 subtests) ==================
[16:04:39] [PASSED] pf_rejects_guc2pf_too_short
[16:04:39] [PASSED] pf_rejects_guc2pf_too_long
[16:04:39] [PASSED] pf_rejects_guc2pf_no_payload
[16:04:39] [PASSED] pf_fails_no_payload
[16:04:39] [PASSED] pf_fails_bad_origin
[16:04:39] [PASSED] pf_fails_bad_type
[16:04:39] [PASSED] pf_txn_reports_error
[16:04:39] [PASSED] pf_txn_sends_pf2guc
[16:04:39] [PASSED] pf_sends_pf2guc
[16:04:39] [SKIPPED] pf_loopback_nop
[16:04:39] [SKIPPED] pf_loopback_echo
[16:04:39] [SKIPPED] pf_loopback_fail
[16:04:39] [SKIPPED] pf_loopback_busy
[16:04:39] [SKIPPED] pf_loopback_retry
[16:04:39] ==================== [PASSED] pf_relay =====================
[16:04:39] ================== vf_relay (3 subtests) ===================
[16:04:39] [PASSED] vf_rejects_guc2vf_too_short
[16:04:39] [PASSED] vf_rejects_guc2vf_too_long
[16:04:39] [PASSED] vf_rejects_guc2vf_no_payload
[16:04:39] ==================== [PASSED] vf_relay =====================
[16:04:39] ================ pf_gt_config (9 subtests) =================
[16:04:39] [PASSED] fair_contexts_1vf
[16:04:39] [PASSED] fair_doorbells_1vf
[16:04:39] [PASSED] fair_ggtt_1vf
[16:04:39] ====================== fair_vram_1vf  ======================
[16:04:39] [PASSED] 3.50 GiB
[16:04:39] [PASSED] 11.5 GiB
[16:04:39] [PASSED] 15.5 GiB
[16:04:39] [PASSED] 31.5 GiB
[16:04:39] [PASSED] 63.5 GiB
[16:04:39] [PASSED] 1.91 GiB
[16:04:39] ================== [PASSED] fair_vram_1vf ==================
[16:04:39] ================ fair_vram_1vf_admin_only  =================
[16:04:39] [PASSED] 3.50 GiB
[16:04:39] [PASSED] 11.5 GiB
[16:04:39] [PASSED] 15.5 GiB
[16:04:39] [PASSED] 31.5 GiB
[16:04:39] [PASSED] 63.5 GiB
[16:04:39] [PASSED] 1.91 GiB
[16:04:39] ============ [PASSED] fair_vram_1vf_admin_only =============
[16:04:39] ====================== fair_contexts  ======================
[16:04:39] [PASSED] 1 VF
[16:04:39] [PASSED] 2 VFs
[16:04:39] [PASSED] 3 VFs
[16:04:39] [PASSED] 4 VFs
[16:04:39] [PASSED] 5 VFs
[16:04:39] [PASSED] 6 VFs
[16:04:39] [PASSED] 7 VFs
[16:04:39] [PASSED] 8 VFs
[16:04:39] [PASSED] 9 VFs
[16:04:39] [PASSED] 10 VFs
[16:04:39] [PASSED] 11 VFs
[16:04:39] [PASSED] 12 VFs
[16:04:39] [PASSED] 13 VFs
[16:04:39] [PASSED] 14 VFs
[16:04:39] [PASSED] 15 VFs
[16:04:39] [PASSED] 16 VFs
[16:04:39] [PASSED] 17 VFs
[16:04:39] [PASSED] 18 VFs
[16:04:39] [PASSED] 19 VFs
[16:04:39] [PASSED] 20 VFs
[16:04:39] [PASSED] 21 VFs
[16:04:39] [PASSED] 22 VFs
[16:04:39] [PASSED] 23 VFs
[16:04:39] [PASSED] 24 VFs
[16:04:39] [PASSED] 25 VFs
[16:04:39] [PASSED] 26 VFs
[16:04:39] [PASSED] 27 VFs
[16:04:39] [PASSED] 28 VFs
[16:04:39] [PASSED] 29 VFs
[16:04:39] [PASSED] 30 VFs
[16:04:39] [PASSED] 31 VFs
[16:04:39] [PASSED] 32 VFs
[16:04:39] [PASSED] 33 VFs
[16:04:39] [PASSED] 34 VFs
[16:04:39] [PASSED] 35 VFs
[16:04:39] [PASSED] 36 VFs
[16:04:39] [PASSED] 37 VFs
[16:04:39] [PASSED] 38 VFs
[16:04:39] [PASSED] 39 VFs
[16:04:39] [PASSED] 40 VFs
[16:04:39] [PASSED] 41 VFs
[16:04:39] [PASSED] 42 VFs
[16:04:39] [PASSED] 43 VFs
[16:04:39] [PASSED] 44 VFs
[16:04:39] [PASSED] 45 VFs
[16:04:39] [PASSED] 46 VFs
[16:04:39] [PASSED] 47 VFs
[16:04:39] [PASSED] 48 VFs
[16:04:39] [PASSED] 49 VFs
[16:04:39] [PASSED] 50 VFs
[16:04:39] [PASSED] 51 VFs
[16:04:39] [PASSED] 52 VFs
[16:04:39] [PASSED] 53 VFs
[16:04:39] [PASSED] 54 VFs
[16:04:39] [PASSED] 55 VFs
[16:04:39] [PASSED] 56 VFs
[16:04:39] [PASSED] 57 VFs
[16:04:39] [PASSED] 58 VFs
[16:04:39] [PASSED] 59 VFs
[16:04:39] [PASSED] 60 VFs
[16:04:39] [PASSED] 61 VFs
[16:04:39] [PASSED] 62 VFs
[16:04:39] [PASSED] 63 VFs
[16:04:39] ================== [PASSED] fair_contexts ==================
[16:04:39] ===================== fair_doorbells  ======================
[16:04:39] [PASSED] 1 VF
[16:04:39] [PASSED] 2 VFs
[16:04:39] [PASSED] 3 VFs
[16:04:39] [PASSED] 4 VFs
[16:04:39] [PASSED] 5 VFs
[16:04:39] [PASSED] 6 VFs
[16:04:39] [PASSED] 7 VFs
[16:04:39] [PASSED] 8 VFs
[16:04:39] [PASSED] 9 VFs
[16:04:39] [PASSED] 10 VFs
[16:04:39] [PASSED] 11 VFs
[16:04:39] [PASSED] 12 VFs
[16:04:39] [PASSED] 13 VFs
[16:04:39] [PASSED] 14 VFs
[16:04:39] [PASSED] 15 VFs
[16:04:39] [PASSED] 16 VFs
[16:04:39] [PASSED] 17 VFs
[16:04:39] [PASSED] 18 VFs
[16:04:39] [PASSED] 19 VFs
[16:04:39] [PASSED] 20 VFs
[16:04:39] [PASSED] 21 VFs
[16:04:39] [PASSED] 22 VFs
[16:04:39] [PASSED] 23 VFs
[16:04:39] [PASSED] 24 VFs
[16:04:39] [PASSED] 25 VFs
[16:04:39] [PASSED] 26 VFs
[16:04:39] [PASSED] 27 VFs
[16:04:39] [PASSED] 28 VFs
[16:04:39] [PASSED] 29 VFs
[16:04:39] [PASSED] 30 VFs
[16:04:39] [PASSED] 31 VFs
[16:04:39] [PASSED] 32 VFs
[16:04:39] [PASSED] 33 VFs
[16:04:39] [PASSED] 34 VFs
[16:04:39] [PASSED] 35 VFs
[16:04:39] [PASSED] 36 VFs
[16:04:39] [PASSED] 37 VFs
[16:04:39] [PASSED] 38 VFs
[16:04:39] [PASSED] 39 VFs
[16:04:39] [PASSED] 40 VFs
[16:04:39] [PASSED] 41 VFs
[16:04:39] [PASSED] 42 VFs
[16:04:39] [PASSED] 43 VFs
[16:04:39] [PASSED] 44 VFs
[16:04:39] [PASSED] 45 VFs
[16:04:39] [PASSED] 46 VFs
[16:04:39] [PASSED] 47 VFs
[16:04:39] [PASSED] 48 VFs
[16:04:39] [PASSED] 49 VFs
[16:04:39] [PASSED] 50 VFs
[16:04:39] [PASSED] 51 VFs
[16:04:39] [PASSED] 52 VFs
[16:04:39] [PASSED] 53 VFs
[16:04:39] [PASSED] 54 VFs
[16:04:39] [PASSED] 55 VFs
[16:04:39] [PASSED] 56 VFs
[16:04:39] [PASSED] 57 VFs
[16:04:39] [PASSED] 58 VFs
[16:04:39] [PASSED] 59 VFs
[16:04:39] [PASSED] 60 VFs
[16:04:39] [PASSED] 61 VFs
[16:04:39] [PASSED] 62 VFs
[16:04:39] [PASSED] 63 VFs
[16:04:39] ================= [PASSED] fair_doorbells ==================
[16:04:39] ======================== fair_ggtt  ========================
[16:04:39] [PASSED] 1 VF
[16:04:39] [PASSED] 2 VFs
[16:04:39] [PASSED] 3 VFs
[16:04:39] [PASSED] 4 VFs
[16:04:39] [PASSED] 5 VFs
[16:04:39] [PASSED] 6 VFs
[16:04:39] [PASSED] 7 VFs
[16:04:39] [PASSED] 8 VFs
[16:04:39] [PASSED] 9 VFs
[16:04:39] [PASSED] 10 VFs
[16:04:40] [PASSED] 11 VFs
[16:04:40] [PASSED] 12 VFs
[16:04:40] [PASSED] 13 VFs
[16:04:40] [PASSED] 14 VFs
[16:04:40] [PASSED] 15 VFs
[16:04:40] [PASSED] 16 VFs
[16:04:40] [PASSED] 17 VFs
[16:04:40] [PASSED] 18 VFs
[16:04:40] [PASSED] 19 VFs
[16:04:40] [PASSED] 20 VFs
[16:04:40] [PASSED] 21 VFs
[16:04:40] [PASSED] 22 VFs
[16:04:40] [PASSED] 23 VFs
[16:04:40] [PASSED] 24 VFs
[16:04:40] [PASSED] 25 VFs
[16:04:40] [PASSED] 26 VFs
[16:04:40] [PASSED] 27 VFs
[16:04:40] [PASSED] 28 VFs
[16:04:40] [PASSED] 29 VFs
[16:04:40] [PASSED] 30 VFs
[16:04:40] [PASSED] 31 VFs
[16:04:40] [PASSED] 32 VFs
[16:04:40] [PASSED] 33 VFs
[16:04:40] [PASSED] 34 VFs
[16:04:40] [PASSED] 35 VFs
[16:04:40] [PASSED] 36 VFs
[16:04:40] [PASSED] 37 VFs
[16:04:40] [PASSED] 38 VFs
[16:04:40] [PASSED] 39 VFs
[16:04:40] [PASSED] 40 VFs
[16:04:40] [PASSED] 41 VFs
[16:04:40] [PASSED] 42 VFs
[16:04:40] [PASSED] 43 VFs
[16:04:40] [PASSED] 44 VFs
[16:04:40] [PASSED] 45 VFs
[16:04:40] [PASSED] 46 VFs
[16:04:40] [PASSED] 47 VFs
[16:04:40] [PASSED] 48 VFs
[16:04:40] [PASSED] 49 VFs
[16:04:40] [PASSED] 50 VFs
[16:04:40] [PASSED] 51 VFs
[16:04:40] [PASSED] 52 VFs
[16:04:40] [PASSED] 53 VFs
[16:04:40] [PASSED] 54 VFs
[16:04:40] [PASSED] 55 VFs
[16:04:40] [PASSED] 56 VFs
[16:04:40] [PASSED] 57 VFs
[16:04:40] [PASSED] 58 VFs
[16:04:40] [PASSED] 59 VFs
[16:04:40] [PASSED] 60 VFs
[16:04:40] [PASSED] 61 VFs
[16:04:40] [PASSED] 62 VFs
[16:04:40] [PASSED] 63 VFs
[16:04:40] ==================== [PASSED] fair_ggtt ====================
[16:04:40] ======================== fair_vram  ========================
[16:04:40] [PASSED] 1 VF
[16:04:40] [PASSED] 2 VFs
[16:04:40] [PASSED] 3 VFs
[16:04:40] [PASSED] 4 VFs
[16:04:40] [PASSED] 5 VFs
[16:04:40] [PASSED] 6 VFs
[16:04:40] [PASSED] 7 VFs
[16:04:40] [PASSED] 8 VFs
[16:04:40] [PASSED] 9 VFs
[16:04:40] [PASSED] 10 VFs
[16:04:40] [PASSED] 11 VFs
[16:04:40] [PASSED] 12 VFs
[16:04:40] [PASSED] 13 VFs
[16:04:40] [PASSED] 14 VFs
[16:04:40] [PASSED] 15 VFs
[16:04:40] [PASSED] 16 VFs
[16:04:40] [PASSED] 17 VFs
[16:04:40] [PASSED] 18 VFs
[16:04:40] [PASSED] 19 VFs
[16:04:40] [PASSED] 20 VFs
[16:04:40] [PASSED] 21 VFs
[16:04:40] [PASSED] 22 VFs
[16:04:40] [PASSED] 23 VFs
[16:04:40] [PASSED] 24 VFs
[16:04:40] [PASSED] 25 VFs
[16:04:40] [PASSED] 26 VFs
[16:04:40] [PASSED] 27 VFs
[16:04:40] [PASSED] 28 VFs
[16:04:40] [PASSED] 29 VFs
[16:04:40] [PASSED] 30 VFs
[16:04:40] [PASSED] 31 VFs
[16:04:40] [PASSED] 32 VFs
[16:04:40] [PASSED] 33 VFs
[16:04:40] [PASSED] 34 VFs
[16:04:40] [PASSED] 35 VFs
[16:04:40] [PASSED] 36 VFs
[16:04:40] [PASSED] 37 VFs
[16:04:40] [PASSED] 38 VFs
[16:04:40] [PASSED] 39 VFs
[16:04:40] [PASSED] 40 VFs
[16:04:40] [PASSED] 41 VFs
[16:04:40] [PASSED] 42 VFs
[16:04:40] [PASSED] 43 VFs
[16:04:40] [PASSED] 44 VFs
[16:04:40] [PASSED] 45 VFs
[16:04:40] [PASSED] 46 VFs
[16:04:40] [PASSED] 47 VFs
[16:04:40] [PASSED] 48 VFs
[16:04:40] [PASSED] 49 VFs
[16:04:40] [PASSED] 50 VFs
[16:04:40] [PASSED] 51 VFs
[16:04:40] [PASSED] 52 VFs
[16:04:40] [PASSED] 53 VFs
[16:04:40] [PASSED] 54 VFs
[16:04:40] [PASSED] 55 VFs
[16:04:40] [PASSED] 56 VFs
[16:04:40] [PASSED] 57 VFs
[16:04:40] [PASSED] 58 VFs
[16:04:40] [PASSED] 59 VFs
[16:04:40] [PASSED] 60 VFs
[16:04:40] [PASSED] 61 VFs
[16:04:40] [PASSED] 62 VFs
[16:04:40] [PASSED] 63 VFs
[16:04:40] ==================== [PASSED] fair_vram ====================
[16:04:40] ================== [PASSED] pf_gt_config ===================
[16:04:40] ===================== lmtt (1 subtest) =====================
[16:04:40] ======================== test_ops  =========================
[16:04:40] [PASSED] 2-level
[16:04:40] [PASSED] multi-level
[16:04:40] ==================== [PASSED] test_ops =====================
[16:04:40] ====================== [PASSED] lmtt =======================
[16:04:40] ================= pf_service (11 subtests) =================
[16:04:40] [PASSED] pf_negotiate_any
[16:04:40] [PASSED] pf_negotiate_base_match
[16:04:40] [PASSED] pf_negotiate_base_newer
[16:04:40] [PASSED] pf_negotiate_base_next
[16:04:40] [SKIPPED] pf_negotiate_base_older
[16:04:40] [PASSED] pf_negotiate_base_prev
[16:04:40] [PASSED] pf_negotiate_latest_match
[16:04:40] [PASSED] pf_negotiate_latest_newer
[16:04:40] [PASSED] pf_negotiate_latest_next
[16:04:40] [SKIPPED] pf_negotiate_latest_older
[16:04:40] [SKIPPED] pf_negotiate_latest_prev
[16:04:40] =================== [PASSED] pf_service ====================
[16:04:40] ================= xe_guc_g2g (2 subtests) ==================
[16:04:40] ============== xe_live_guc_g2g_kunit_default  ==============
[16:04:40] ========= [SKIPPED] xe_live_guc_g2g_kunit_default ==========
[16:04:40] ============== xe_live_guc_g2g_kunit_allmem  ===============
[16:04:40] ========== [SKIPPED] xe_live_guc_g2g_kunit_allmem ==========
[16:04:40] =================== [SKIPPED] xe_guc_g2g ===================
[16:04:40] =================== xe_mocs (2 subtests) ===================
[16:04:40] ================ xe_live_mocs_kernel_kunit  ================
[16:04:40] =========== [SKIPPED] xe_live_mocs_kernel_kunit ============
[16:04:40] ================ xe_live_mocs_reset_kunit  =================
[16:04:40] ============ [SKIPPED] xe_live_mocs_reset_kunit ============
[16:04:40] ==================== [SKIPPED] xe_mocs =====================
[16:04:40] ================= xe_migrate (2 subtests) ==================
[16:04:40] ================= xe_migrate_sanity_kunit  =================
[16:04:40] ============ [SKIPPED] xe_migrate_sanity_kunit =============
[16:04:40] ================== xe_validate_ccs_kunit  ==================
[16:04:40] ============= [SKIPPED] xe_validate_ccs_kunit ==============
[16:04:40] =================== [SKIPPED] xe_migrate ===================
[16:04:40] ================== xe_dma_buf (1 subtest) ==================
[16:04:40] ==================== xe_dma_buf_kunit  =====================
[16:04:40] ================ [SKIPPED] xe_dma_buf_kunit ================
[16:04:40] =================== [SKIPPED] xe_dma_buf ===================
[16:04:40] ================= xe_bo_shrink (1 subtest) =================
[16:04:40] =================== xe_bo_shrink_kunit  ====================
[16:04:40] =============== [SKIPPED] xe_bo_shrink_kunit ===============
[16:04:40] ================== [SKIPPED] xe_bo_shrink ==================
[16:04:40] ==================== xe_bo (2 subtests) ====================
[16:04:40] ================== xe_ccs_migrate_kunit  ===================
[16:04:40] ============== [SKIPPED] xe_ccs_migrate_kunit ==============
[16:04:40] ==================== xe_bo_evict_kunit  ====================
[16:04:40] =============== [SKIPPED] xe_bo_evict_kunit ================
[16:04:40] ===================== [SKIPPED] xe_bo ======================
[16:04:40] ==================== args (13 subtests) ====================
[16:04:40] [PASSED] count_args_test
[16:04:40] [PASSED] call_args_example
[16:04:40] [PASSED] call_args_test
[16:04:40] [PASSED] drop_first_arg_example
[16:04:40] [PASSED] drop_first_arg_test
[16:04:40] [PASSED] first_arg_example
[16:04:40] [PASSED] first_arg_test
[16:04:40] [PASSED] last_arg_example
[16:04:40] [PASSED] last_arg_test
[16:04:40] [PASSED] pick_arg_example
[16:04:40] [PASSED] if_args_example
[16:04:40] [PASSED] if_args_test
[16:04:40] [PASSED] sep_comma_example
[16:04:40] ====================== [PASSED] args =======================
[16:04:40] =================== xe_pci (3 subtests) ====================
[16:04:40] ==================== check_graphics_ip  ====================
[16:04:40] [PASSED] 12.00 Xe_LP
[16:04:40] [PASSED] 12.10 Xe_LP+
[16:04:40] [PASSED] 12.55 Xe_HPG
[16:04:40] [PASSED] 12.60 Xe_HPC
[16:04:40] [PASSED] 12.70 Xe_LPG
[16:04:40] [PASSED] 12.71 Xe_LPG
[16:04:40] [PASSED] 12.74 Xe_LPG+
[16:04:40] [PASSED] 20.01 Xe2_HPG
[16:04:40] [PASSED] 20.02 Xe2_HPG
[16:04:40] [PASSED] 20.04 Xe2_LPG
[16:04:40] [PASSED] 30.00 Xe3_LPG
[16:04:40] [PASSED] 30.01 Xe3_LPG
[16:04:40] [PASSED] 30.03 Xe3_LPG
[16:04:40] [PASSED] 30.04 Xe3_LPG
[16:04:40] [PASSED] 30.05 Xe3_LPG
[16:04:40] [PASSED] 35.10 Xe3p_LPG
[16:04:40] [PASSED] 35.11 Xe3p_XPC
[16:04:40] ================ [PASSED] check_graphics_ip ================
[16:04:40] ===================== check_media_ip  ======================
[16:04:40] [PASSED] 12.00 Xe_M
[16:04:40] [PASSED] 12.55 Xe_HPM
[16:04:40] [PASSED] 13.00 Xe_LPM+
[16:04:40] [PASSED] 13.01 Xe2_HPM
[16:04:40] [PASSED] 20.00 Xe2_LPM
[16:04:40] [PASSED] 30.00 Xe3_LPM
[16:04:40] [PASSED] 30.02 Xe3_LPM
[16:04:40] [PASSED] 35.00 Xe3p_LPM
[16:04:40] [PASSED] 35.03 Xe3p_HPM
[16:04:40] ================= [PASSED] check_media_ip ==================
[16:04:40] =================== check_platform_desc  ===================
[16:04:40] [PASSED] 0x9A60 (TIGERLAKE)
[16:04:40] [PASSED] 0x9A68 (TIGERLAKE)
[16:04:40] [PASSED] 0x9A70 (TIGERLAKE)
[16:04:40] [PASSED] 0x9A40 (TIGERLAKE)
[16:04:40] [PASSED] 0x9A49 (TIGERLAKE)
[16:04:40] [PASSED] 0x9A59 (TIGERLAKE)
[16:04:40] [PASSED] 0x9A78 (TIGERLAKE)
[16:04:40] [PASSED] 0x9AC0 (TIGERLAKE)
[16:04:40] [PASSED] 0x9AC9 (TIGERLAKE)
[16:04:40] [PASSED] 0x9AD9 (TIGERLAKE)
[16:04:40] [PASSED] 0x9AF8 (TIGERLAKE)
[16:04:40] [PASSED] 0x4C80 (ROCKETLAKE)
[16:04:40] [PASSED] 0x4C8A (ROCKETLAKE)
[16:04:40] [PASSED] 0x4C8B (ROCKETLAKE)
[16:04:40] [PASSED] 0x4C8C (ROCKETLAKE)
[16:04:40] [PASSED] 0x4C90 (ROCKETLAKE)
[16:04:40] [PASSED] 0x4C9A (ROCKETLAKE)
[16:04:40] [PASSED] 0x4680 (ALDERLAKE_S)
[16:04:40] [PASSED] 0x4682 (ALDERLAKE_S)
[16:04:40] [PASSED] 0x4688 (ALDERLAKE_S)
[16:04:40] [PASSED] 0x468A (ALDERLAKE_S)
[16:04:40] [PASSED] 0x468B (ALDERLAKE_S)
[16:04:40] [PASSED] 0x4690 (ALDERLAKE_S)
[16:04:40] [PASSED] 0x4692 (ALDERLAKE_S)
[16:04:40] [PASSED] 0x4693 (ALDERLAKE_S)
[16:04:40] [PASSED] 0x46A0 (ALDERLAKE_P)
[16:04:40] [PASSED] 0x46A1 (ALDERLAKE_P)
[16:04:40] [PASSED] 0x46A2 (ALDERLAKE_P)
[16:04:40] [PASSED] 0x46A3 (ALDERLAKE_P)
[16:04:40] [PASSED] 0x46A6 (ALDERLAKE_P)
[16:04:40] [PASSED] 0x46A8 (ALDERLAKE_P)
[16:04:40] [PASSED] 0x46AA (ALDERLAKE_P)
[16:04:40] [PASSED] 0x462A (ALDERLAKE_P)
[16:04:40] [PASSED] 0x4626 (ALDERLAKE_P)
[16:04:40] [PASSED] 0x4628 (ALDERLAKE_P)
[16:04:40] [PASSED] 0x46B0 (ALDERLAKE_P)
[16:04:40] [PASSED] 0x46B1 (ALDERLAKE_P)
[16:04:40] [PASSED] 0x46B2 (ALDERLAKE_P)
[16:04:40] [PASSED] 0x46B3 (ALDERLAKE_P)
[16:04:40] [PASSED] 0x46C0 (ALDERLAKE_P)
[16:04:40] [PASSED] 0x46C1 (ALDERLAKE_P)
[16:04:40] [PASSED] 0x46C2 (ALDERLAKE_P)
[16:04:40] [PASSED] 0x46C3 (ALDERLAKE_P)
[16:04:40] [PASSED] 0x46D0 (ALDERLAKE_N)
[16:04:40] [PASSED] 0x46D1 (ALDERLAKE_N)
[16:04:40] [PASSED] 0x46D2 (ALDERLAKE_N)
[16:04:40] [PASSED] 0x46D3 (ALDERLAKE_N)
[16:04:40] [PASSED] 0x46D4 (ALDERLAKE_N)
[16:04:40] [PASSED] 0xA721 (ALDERLAKE_P)
[16:04:40] [PASSED] 0xA7A1 (ALDERLAKE_P)
[16:04:40] [PASSED] 0xA7A9 (ALDERLAKE_P)
[16:04:40] [PASSED] 0xA7AC (ALDERLAKE_P)
[16:04:40] [PASSED] 0xA7AD (ALDERLAKE_P)
[16:04:40] [PASSED] 0xA720 (ALDERLAKE_P)
[16:04:40] [PASSED] 0xA7A0 (ALDERLAKE_P)
[16:04:40] [PASSED] 0xA7A8 (ALDERLAKE_P)
[16:04:40] [PASSED] 0xA7AA (ALDERLAKE_P)
[16:04:40] [PASSED] 0xA7AB (ALDERLAKE_P)
[16:04:40] [PASSED] 0xA780 (ALDERLAKE_S)
[16:04:40] [PASSED] 0xA781 (ALDERLAKE_S)
[16:04:40] [PASSED] 0xA782 (ALDERLAKE_S)
[16:04:40] [PASSED] 0xA783 (ALDERLAKE_S)
[16:04:40] [PASSED] 0xA788 (ALDERLAKE_S)
[16:04:40] [PASSED] 0xA789 (ALDERLAKE_S)
[16:04:40] [PASSED] 0xA78A (ALDERLAKE_S)
[16:04:40] [PASSED] 0xA78B (ALDERLAKE_S)
[16:04:40] [PASSED] 0x4905 (DG1)
[16:04:40] [PASSED] 0x4906 (DG1)
[16:04:40] [PASSED] 0x4907 (DG1)
[16:04:40] [PASSED] 0x4908 (DG1)
[16:04:40] [PASSED] 0x4909 (DG1)
[16:04:40] [PASSED] 0x56C0 (DG2)
[16:04:40] [PASSED] 0x56C2 (DG2)
[16:04:40] [PASSED] 0x56C1 (DG2)
[16:04:40] [PASSED] 0x7D51 (METEORLAKE)
[16:04:40] [PASSED] 0x7DD1 (METEORLAKE)
[16:04:40] [PASSED] 0x7D41 (METEORLAKE)
[16:04:40] [PASSED] 0x7D67 (METEORLAKE)
[16:04:40] [PASSED] 0xB640 (METEORLAKE)
[16:04:40] [PASSED] 0x56A0 (DG2)
[16:04:40] [PASSED] 0x56A1 (DG2)
[16:04:40] [PASSED] 0x56A2 (DG2)
[16:04:40] [PASSED] 0x56BE (DG2)
[16:04:40] [PASSED] 0x56BF (DG2)
[16:04:40] [PASSED] 0x5690 (DG2)
[16:04:40] [PASSED] 0x5691 (DG2)
[16:04:40] [PASSED] 0x5692 (DG2)
[16:04:40] [PASSED] 0x56A5 (DG2)
[16:04:40] [PASSED] 0x56A6 (DG2)
[16:04:40] [PASSED] 0x56B0 (DG2)
[16:04:40] [PASSED] 0x56B1 (DG2)
[16:04:40] [PASSED] 0x56BA (DG2)
[16:04:40] [PASSED] 0x56BB (DG2)
[16:04:40] [PASSED] 0x56BC (DG2)
[16:04:40] [PASSED] 0x56BD (DG2)
[16:04:40] [PASSED] 0x5693 (DG2)
[16:04:40] [PASSED] 0x5694 (DG2)
[16:04:40] [PASSED] 0x5695 (DG2)
[16:04:40] [PASSED] 0x56A3 (DG2)
[16:04:40] [PASSED] 0x56A4 (DG2)
[16:04:40] [PASSED] 0x56B2 (DG2)
[16:04:40] [PASSED] 0x56B3 (DG2)
[16:04:40] [PASSED] 0x5696 (DG2)
[16:04:40] [PASSED] 0x5697 (DG2)
[16:04:40] [PASSED] 0xB69 (PVC)
[16:04:40] [PASSED] 0xB6E (PVC)
[16:04:40] [PASSED] 0xBD4 (PVC)
[16:04:40] [PASSED] 0xBD5 (PVC)
[16:04:40] [PASSED] 0xBD6 (PVC)
[16:04:40] [PASSED] 0xBD7 (PVC)
[16:04:40] [PASSED] 0xBD8 (PVC)
[16:04:40] [PASSED] 0xBD9 (PVC)
[16:04:40] [PASSED] 0xBDA (PVC)
[16:04:40] [PASSED] 0xBDB (PVC)
[16:04:40] [PASSED] 0xBE0 (PVC)
[16:04:40] [PASSED] 0xBE1 (PVC)
[16:04:40] [PASSED] 0xBE5 (PVC)
[16:04:40] [PASSED] 0x7D40 (METEORLAKE)
[16:04:40] [PASSED] 0x7D45 (METEORLAKE)
[16:04:40] [PASSED] 0x7D55 (METEORLAKE)
[16:04:40] [PASSED] 0x7D60 (METEORLAKE)
[16:04:40] [PASSED] 0x7DD5 (METEORLAKE)
[16:04:40] [PASSED] 0x6420 (LUNARLAKE)
[16:04:40] [PASSED] 0x64A0 (LUNARLAKE)
[16:04:40] [PASSED] 0x64B0 (LUNARLAKE)
[16:04:40] [PASSED] 0xE202 (BATTLEMAGE)
[16:04:40] [PASSED] 0xE209 (BATTLEMAGE)
[16:04:40] [PASSED] 0xE20B (BATTLEMAGE)
[16:04:40] [PASSED] 0xE20C (BATTLEMAGE)
[16:04:40] [PASSED] 0xE20D (BATTLEMAGE)
[16:04:40] [PASSED] 0xE210 (BATTLEMAGE)
[16:04:40] [PASSED] 0xE211 (BATTLEMAGE)
[16:04:40] [PASSED] 0xE212 (BATTLEMAGE)
[16:04:40] [PASSED] 0xE216 (BATTLEMAGE)
[16:04:40] [PASSED] 0xE220 (BATTLEMAGE)
[16:04:40] [PASSED] 0xE221 (BATTLEMAGE)
[16:04:40] [PASSED] 0xE222 (BATTLEMAGE)
[16:04:40] [PASSED] 0xE223 (BATTLEMAGE)
[16:04:40] [PASSED] 0xB080 (PANTHERLAKE)
[16:04:40] [PASSED] 0xB081 (PANTHERLAKE)
[16:04:40] [PASSED] 0xB082 (PANTHERLAKE)
[16:04:40] [PASSED] 0xB083 (PANTHERLAKE)
[16:04:40] [PASSED] 0xB084 (PANTHERLAKE)
[16:04:40] [PASSED] 0xB085 (PANTHERLAKE)
[16:04:40] [PASSED] 0xB086 (PANTHERLAKE)
[16:04:40] [PASSED] 0xB087 (PANTHERLAKE)
[16:04:40] [PASSED] 0xB08F (PANTHERLAKE)
[16:04:40] [PASSED] 0xB090 (PANTHERLAKE)
[16:04:40] [PASSED] 0xB0A0 (PANTHERLAKE)
[16:04:40] [PASSED] 0xB0B0 (PANTHERLAKE)
[16:04:40] [PASSED] 0xFD80 (PANTHERLAKE)
[16:04:40] [PASSED] 0xFD81 (PANTHERLAKE)
[16:04:40] [PASSED] 0xD740 (NOVALAKE_S)
[16:04:40] [PASSED] 0xD741 (NOVALAKE_S)
[16:04:40] [PASSED] 0xD742 (NOVALAKE_S)
[16:04:40] [PASSED] 0xD743 (NOVALAKE_S)
[16:04:40] [PASSED] 0xD744 (NOVALAKE_S)
[16:04:40] [PASSED] 0xD745 (NOVALAKE_S)
[16:04:40] [PASSED] 0x674C (CRESCENTISLAND)
[16:04:40] [PASSED] 0xD750 (NOVALAKE_P)
[16:04:40] [PASSED] 0xD751 (NOVALAKE_P)
[16:04:40] [PASSED] 0xD752 (NOVALAKE_P)
[16:04:40] [PASSED] 0xD753 (NOVALAKE_P)
[16:04:40] [PASSED] 0xD754 (NOVALAKE_P)
[16:04:40] [PASSED] 0xD755 (NOVALAKE_P)
[16:04:40] [PASSED] 0xD756 (NOVALAKE_P)
[16:04:40] [PASSED] 0xD757 (NOVALAKE_P)
[16:04:40] [PASSED] 0xD75F (NOVALAKE_P)
[16:04:40] =============== [PASSED] check_platform_desc ===============
[16:04:40] ===================== [PASSED] xe_pci ======================
[16:04:40] =================== xe_rtp (2 subtests) ====================
[16:04:40] =============== xe_rtp_process_to_sr_tests  ================
[16:04:40] [PASSED] coalesce-same-reg
[16:04:40] [PASSED] no-match-no-add
[16:04:40] [PASSED] match-or
[16:04:40] [PASSED] match-or-xfail
[16:04:40] [PASSED] no-match-no-add-multiple-rules
[16:04:40] [PASSED] two-regs-two-entries
[16:04:40] [PASSED] clr-one-set-other
[16:04:40] [PASSED] set-field
[16:04:40] [PASSED] conflict-duplicate
stty: 'standard input': Inappropriate ioctl for device
[16:04:40] [PASSED] conflict-not-disjoint
[16:04:40] [PASSED] conflict-reg-type
[16:04:40] =========== [PASSED] xe_rtp_process_to_sr_tests ============
[16:04:40] ================== xe_rtp_process_tests  ===================
[16:04:40] [PASSED] active1
[16:04:40] [PASSED] active2
[16:04:40] [PASSED] active-inactive
[16:04:40] [PASSED] inactive-active
[16:04:40] [PASSED] inactive-1st_or_active-inactive
[16:04:40] [PASSED] inactive-2nd_or_active-inactive
[16:04:40] [PASSED] inactive-last_or_active-inactive
[16:04:40] [PASSED] inactive-no_or_active-inactive
[16:04:40] ============== [PASSED] xe_rtp_process_tests ===============
[16:04:40] ===================== [PASSED] xe_rtp ======================
[16:04:40] ==================== xe_wa (1 subtest) =====================
[16:04:40] ======================== xe_wa_gt  =========================
[16:04:40] [PASSED] TIGERLAKE B0
[16:04:40] [PASSED] DG1 A0
[16:04:40] [PASSED] DG1 B0
[16:04:40] [PASSED] ALDERLAKE_S A0
[16:04:40] [PASSED] ALDERLAKE_S B0
[16:04:40] [PASSED] ALDERLAKE_S C0
[16:04:40] [PASSED] ALDERLAKE_S D0
[16:04:40] [PASSED] ALDERLAKE_P A0
[16:04:40] [PASSED] ALDERLAKE_P B0
[16:04:40] [PASSED] ALDERLAKE_P C0
[16:04:40] [PASSED] ALDERLAKE_S RPLS D0
[16:04:40] [PASSED] ALDERLAKE_P RPLU E0
[16:04:40] [PASSED] DG2 G10 C0
[16:04:40] [PASSED] DG2 G11 B1
[16:04:40] [PASSED] DG2 G12 A1
[16:04:40] [PASSED] METEORLAKE 12.70(Xe_LPG) A0 13.00(Xe_LPM+) A0
[16:04:40] [PASSED] METEORLAKE 12.71(Xe_LPG) A0 13.00(Xe_LPM+) A0
[16:04:40] [PASSED] METEORLAKE 12.74(Xe_LPG+) A0 13.00(Xe_LPM+) A0
[16:04:40] [PASSED] LUNARLAKE 20.04(Xe2_LPG) A0 20.00(Xe2_LPM) A0
[16:04:40] [PASSED] LUNARLAKE 20.04(Xe2_LPG) B0 20.00(Xe2_LPM) A0
[16:04:40] [PASSED] BATTLEMAGE 20.01(Xe2_HPG) A0 13.01(Xe2_HPM) A1
[16:04:40] [PASSED] PANTHERLAKE 30.00(Xe3_LPG) A0 30.00(Xe3_LPM) A0
[16:04:40] ==================== [PASSED] xe_wa_gt =====================
[16:04:40] ====================== [PASSED] xe_wa ======================
[16:04:40] ============================================================
[16:04:40] Testing complete. Ran 597 tests: passed: 579, skipped: 18
[16:04:40] Elapsed time: 36.121s total, 4.301s configuring, 31.253s building, 0.557s running

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

+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/ttm/tests/.kunitconfig
stty: 'standard input': Inappropriate ioctl for device
[16:05:06] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[16:05:08] 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
[16:05:18] Starting KUnit Kernel (1/1)...
[16:05:18] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[16:05:18] ================= ttm_device (5 subtests) ==================
[16:05:18] [PASSED] ttm_device_init_basic
[16:05:18] [PASSED] ttm_device_init_multiple
[16:05:18] [PASSED] ttm_device_fini_basic
[16:05:18] [PASSED] ttm_device_init_no_vma_man
[16:05:18] ================== ttm_device_init_pools  ==================
[16:05:18] [PASSED] No DMA allocations, no DMA32 required
[16:05:18] # ttm_device_init_pools: ASSERTION FAILED at drivers/gpu/drm/ttm/tests/ttm_device_test.c:178
[16:05:18] Expected !list_lru_count(&pt.pages) to be false, but is true
[16:05:18] [FAILED] DMA allocations, DMA32 required
[16:05:18] [PASSED] No DMA allocations, DMA32 required
[16:05:18]     # ttm_device_init_pools: ASSERTION FAILED at drivers/gpu/drm/ttm/tests/ttm_device_test.c:178
[16:05:18]     Expected !list_lru_count(&pt.pages) to be false, but is true
[16:05:18] ------------[ cut here ]------------
[16:05:18] WARNING: lib/refcount.c:28 at devres_release_all+0xaa/0x100, CPU#0: kunit_try_catch/46
[16:05:18] refcount_t: underflow; use-after-free.
[16:05:18] CPU: 0 UID: 0 PID: 46 Comm: kunit_try_catch Tainted: G        W        N  7.0.0-rc7-g0f49fc4203c8 #3 VOLUNTARY
[16:05:18] Tainted: [W]=WARN, [N]=TEST
[16:05:18] Stack:
[16:05:18]  6044ed8b 00000000 00000000 00000001
[16:05:18]  ffffff00 6044ed8b 6032367a 00000009
[16:05:18]  0000001c 60043e88 6002381c d40cbd40
[16:05:18] Call Trace:
[16:05:18]  [<6032367a>] ? devres_release_all+0xaa/0x100
[16:05:18]  [<60043e88>] ? dump_stack_lvl+0x5e/0x7a
[16:05:18]  [<6002381c>] ? _printk+0x0/0x65
[16:05:18]  [<6001f09f>] ? __warn.cold+0x79/0x11f
[16:05:18]  [<6001f1d9>] ? warn_slowpath_fmt+0x94/0xa1
[16:05:18]  [<601ef1a0>] ? kernfs_free_rcu+0x0/0x70
[16:05:18]  [<60052e36>] ? um_set_signals+0x36/0x60
[16:05:18]  [<600c5a42>] ? call_rcu+0x52/0x90
[16:05:18]  [<6001f145>] ? warn_slowpath_fmt+0x0/0xa1
[16:05:18]  [<60147f50>] ? kfree+0x0/0x250
[16:05:18]  [<6032367a>] ? devres_release_all+0xaa/0x100
[16:05:18]  [<60396bb0>] ? mutex_unlock+0x0/0x30
[16:05:18]  [<6031c3c0>] ? bus_notify+0x0/0x60
[16:05:18]  [<60396bb0>] ? mutex_unlock+0x0/0x30
[16:05:18]  [<60398620>] ? mutex_lock+0x0/0x40
[16:05:18]  [<6031ca24>] ? device_unbind_cleanup+0x14/0xb0
[16:05:18]  [<6031e1f6>] ? device_release_driver_internal+0x256/0x2b0
[16:05:18]  [<60372210>] ? kobject_put+0x0/0x150
[16:05:18]  [<601f3d40>] ? sysfs_remove_file_ns+0x0/0x20
[16:05:18]  [<6031c00f>] ? bus_remove_device+0x10f/0x1a0
[16:05:18]  [<601f3d40>] ? sysfs_remove_file_ns+0x0/0x20
[16:05:18]  [<601f17b8>] ? kernfs_remove_by_name_ns+0x98/0x130
[16:05:18]  [<60315a8c>] ? device_del+0x1bc/0x600
[16:05:18]  [<60052e00>] ? um_set_signals+0x0/0x60
[16:05:18]  [<6025b2a0>] ? device_unregister_wrapper+0x0/0x10
[16:05:18]  [<60052e00>] ? um_set_signals+0x0/0x60
[16:05:18]  [<60315ee4>] ? device_unregister+0x14/0x40
[16:05:18]  [<60257e66>] ? kunit_release_action+0xf6/0x170
[16:05:18]  [<60257d70>] ? kunit_release_action+0x0/0x170
[16:05:18]  [<6025b2e2>] ? kunit_device_unregister+0x32/0x80
[16:05:18]  [<60259890>] ? kunit_generic_run_threadfn_adapter+0x0/0x30
[16:05:18]  [<6025748e>] ? kunit_try_run_case_cleanup+0x2e/0x40
[16:05:18]  [<602598a6>] ? kunit_generic_run_threadfn_adapter+0x16/0x30
[16:05:18]  [<60081e36>] ? kthread+0xe6/0x150
[16:05:18]  [<60046435>] ? new_thread_handler+0x45/0x60
[16:05:18] ---[ end trace 0000000000000000 ]---
[16:05:18] [FAILED] DMA allocations, no DMA32 required
[16:05:18] # ttm_device_init_pools: pass:2 fail:2 skip:0 total:4
[16:05:18] ============== [FAILED] ttm_device_init_pools ==============
[16:05:18]     # module: ttm_device_test
[16:05:18] # ttm_device: pass:4 fail:1 skip:0 total:5
[16:05:18] # Totals: pass:6 fail:2 skip:0 total:8
[16:05:18] =================== [FAILED] ttm_device ====================
[16:05:18] ================== ttm_pool (8 subtests) ===================
[16:05:18] ================== ttm_pool_alloc_basic  ===================
[16:05:18] [PASSED] One page
[16:05:18] [PASSED] More than one page
[16:05:18] [PASSED] Above the allocation limit
[16:05:18] [PASSED] One page, with coherent DMA mappings enabled
[16:05:18] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[16:05:18] ============== [PASSED] ttm_pool_alloc_basic ===============
[16:05:18] ============== ttm_pool_alloc_basic_dma_addr  ==============
[16:05:18] [PASSED] One page
[16:05:18] [PASSED] More than one page
[16:05:18] [PASSED] Above the allocation limit
[16:05:18] [PASSED] One page, with coherent DMA mappings enabled
[16:05:18] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[16:05:18] ========== [PASSED] ttm_pool_alloc_basic_dma_addr ==========
[16:05:18] [PASSED] ttm_pool_alloc_order_caching_match
[16:05:18] [PASSED] ttm_pool_alloc_caching_mismatch
[16:05:18] [PASSED] ttm_pool_alloc_order_mismatch
[16:05:18] [PASSED] ttm_pool_free_dma_alloc
[16:05:18] [ERROR] Test: ttm_pool: missing expected subtest!
[16:05:18] 
[16:05:18] Pid: 75, comm: kunit_try_catch Tainted: G        W        N  7.0.0-rc7-g0f49fc4203c8
[16:05:18] RIP: 0033:list_lru_count_node+0xe/0x20
[16:05:18] RSP: 00000000d40cbed8  EFLAGS: 00010246
[16:05:18] RAX: 0000000000000000 RBX: 00000000d4003c90 RCX: 000000009424c7d8
[16:05:18] RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000094086880
[16:05:18] RBP: 0000000094086800 R08: 00000000d2c06c28 R09: 0000000094050c80
[16:05:18] R10: 0000000000000000 R11: 0000000000000000 R12: 0000000094050c80
[16:05:18] R13: 0000000060440770 R14: 000000006010eb50 R15: 0000000094086880
[16:05:18] Kernel panic - not syncing: Segfault with no mm
[16:05:18] [CRASHED] 
[16:05:18] [ERROR] Test: ttm_pool: missing expected subtest!
[16:05:18] [CRASHED] 
[16:05:18] [ERROR] Test: ttm_pool: missing subtest result line!
[16:05:18] # module: ttm_pool_test
[16:05:18] ==================== [CRASHED] ttm_pool ====================
[16:05:18] [ERROR] Test: main: missing expected subtest!
[16:05:18] [CRASHED] 
[16:05:18] [ERROR] Test: main: missing expected subtest!
[16:05:18] [CRASHED] 
[16:05:18] [ERROR] Test: main: missing expected subtest!
[16:05:18] [CRASHED] 
[16:05:18] [ERROR] Test: main: missing expected subtest!
[16:05:18] [CRASHED] 
[16:05:18] ============================================================
[16:05:18] Testing complete. Ran 28 tests: passed: 20, failed: 2, crashed: 6, errors: 7
The kernel seems to have crashed; you can decode the stack traces with:
$ scripts/decode_stacktrace.sh .kunit/vmlinux .kunit < .kunit/test.log | tee .kunit/decoded.log | /kernel/tools/testing/kunit/kunit.py parse
[16:05:18] Elapsed time: 11.487s total, 1.670s configuring, 9.552s building, 0.266s running

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



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

* Re: [PATCH 1/2] drm/i915/joiner: Make joiner "nomodeset" state copy independent of pipe order
  2026-04-08 15:57 ` [PATCH 1/2] drm/i915/joiner: Make joiner "nomodeset" state copy independent of pipe order Ville Syrjala
@ 2026-04-08 16:46   ` Jani Nikula
  2026-04-13  7:27     ` Jani Nikula
  0 siblings, 1 reply; 12+ messages in thread
From: Jani Nikula @ 2026-04-08 16:46 UTC (permalink / raw)
  To: Ville Syrjala, intel-gfx; +Cc: intel-xe

On Wed, 08 Apr 2026, Ville Syrjala <ville.syrjala@linux.intel.com> wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> Currently the joiner primary->secondary hw state copy still happens from
> the main compute_config loop alongside the primary uapi->hw state copy.
> The primary uapi->hw state copy must therefore happen first, or else
> we'll end up copying stale junk into the secondary.
>
> We have a WARN in intel_atomic_check_joiner() to make sure the CRTCs
> will be walked in the correct order. The plan is to reoder the CRTCs,
> which would mess up the order, unless we also adjust the iterators
> to keep the pipe order. The actual plan is to do both, so technically
> we should be able to just remove the WARN and call it a day.
>
> But relying on the iteration order like this is fragile and confusing,
> so let's move the "nomodeset" joiner state copy into the later loop
> where the "modeset" state copy is also done. The first loop having
> completely finished, we are guaranteed to have up to date hw state
> on the primary when we do the copy to the secondary.

I find the number of loops in the forest of intel_atomic_check*
functions confusing too. But this looks like progress.

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

I'm wondering about merging this, along with the pipe reordering, to a
topic branch that could be merged to drm-next at Dave's discretion,
instead of cherry-picks which might be a bit cumbersome for patches this
size. So please hold off on merging while I figure this out.


>
> Cc: Jani Nikula <jani.nikula@intel.com>
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> ---
>  drivers/gpu/drm/i915/display/intel_display.c | 20 +++++---------------
>  1 file changed, 5 insertions(+), 15 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
> index 58a654ca0d20..674a4ece6d0f 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.c
> +++ b/drivers/gpu/drm/i915/display/intel_display.c
> @@ -5914,17 +5914,6 @@ static int intel_atomic_check_joiner(struct intel_atomic_state *state,
>  			return -EINVAL;
>  		}
>  
> -		/*
> -		 * The state copy logic assumes the primary crtc gets processed
> -		 * before the secondary crtc during the main compute_config loop.
> -		 * This works because the crtcs are created in pipe order,
> -		 * and the hardware requires primary pipe < secondary pipe as well.
> -		 * Should that change we need to rethink the logic.
> -		 */
> -		if (WARN_ON(drm_crtc_index(&primary_crtc->base) >
> -			    drm_crtc_index(&secondary_crtc->base)))
> -			return -EINVAL;
> -
>  		drm_dbg_kms(display->drm,
>  			    "[CRTC:%d:%s] Used as secondary for joiner primary [CRTC:%d:%s]\n",
>  			    secondary_crtc->base.base.id, secondary_crtc->base.name,
> @@ -6302,9 +6291,7 @@ static int intel_atomic_check_config(struct intel_atomic_state *state,
>  
>  	for_each_new_intel_crtc_in_state(state, crtc, new_crtc_state, i) {
>  		if (!intel_crtc_needs_modeset(new_crtc_state)) {
> -			if (intel_crtc_is_joiner_secondary(new_crtc_state))
> -				copy_joiner_crtc_state_nomodeset(state, crtc);
> -			else
> +			if (!intel_crtc_is_joiner_secondary(new_crtc_state))
>  				intel_crtc_copy_uapi_to_hw_state_nomodeset(state, crtc);
>  			continue;
>  		}
> @@ -6439,8 +6426,11 @@ int intel_atomic_check(struct drm_device *dev,
>  		goto fail;
>  
>  	for_each_new_intel_crtc_in_state(state, crtc, new_crtc_state, i) {
> -		if (!intel_crtc_needs_modeset(new_crtc_state))
> +		if (!intel_crtc_needs_modeset(new_crtc_state)) {
> +			if (intel_crtc_is_joiner_secondary(new_crtc_state))
> +				copy_joiner_crtc_state_nomodeset(state, crtc);
>  			continue;
> +		}
>  
>  		if (intel_crtc_is_joiner_secondary(new_crtc_state)) {
>  			drm_WARN_ON(display->drm, new_crtc_state->uapi.enable);

-- 
Jani Nikula, Intel

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

* ✗ CI.checkpatch: warning for drm/i915: Make sure CRTC vs. pipe reordering is safe (rev2)
  2026-04-08 15:57 [PATCH 0/2] drm/i915: Make sure CRTC vs. pipe reordering is safe Ville Syrjala
                   ` (3 preceding siblings ...)
  2026-04-08 16:05 ` ✗ CI.KUnit: failure " Patchwork
@ 2026-04-10  8:37 ` Patchwork
  2026-04-10  8:39 ` ✓ CI.KUnit: success " Patchwork
                   ` (2 subsequent siblings)
  7 siblings, 0 replies; 12+ messages in thread
From: Patchwork @ 2026-04-10  8:37 UTC (permalink / raw)
  To: Ville Syrjälä; +Cc: intel-xe

== Series Details ==

Series: drm/i915: Make sure CRTC vs. pipe reordering is safe (rev2)
URL   : https://patchwork.freedesktop.org/series/164557/
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
1f57ba1afceae32108bd24770069f764d940a0e4
+ cd /kernel
+ git config --global --add safe.directory /kernel
+ git log -n1
commit 0e15a80c5f1ec9b5d0c0b8d18f9a4c04734bea73
Author: Ville Syrjälä <ville.syrjala@linux.intel.com>
Date:   Wed Apr 8 18:57:44 2026 +0300

    drm/i915: Walk crtcs in pipe order
    
    Currently our crtcs are registered in pipe order, and thus
    all the for_intel_crtc*() iterators walk the crtcs in pipe
    order. There are a bunch of places that more or less depend
    on that. Eg. during plane updates and such we want joined
    pipes to be processed back-to-back to give a better chance
    of an atomic update across the whole set.
    
    When we start to register crtcs in a different order we don't
    want to change the order in which the pipes get handled.
    Decouple the for_each_intel_crtc*() iterators from the crtc
    registration order by using a separate list which will be
    sorted by the pipe rather than the crtc index.
    
    We could probably use a simple array or something, but that
    would require some kind of extra iterator variable for the
    macros, and thus would require a lot more changes. Using
    a linked list keeps the fallout minimal. We can look at
    using a more optimal data structure later.
    
    I also added this extra junk to the atomic state iterators:
    "(__i) = drm_crtc_index(&(crtc)->base), (void)(__i)"
    even though the macro itself no longer needs the "__i" iterator.
    This in case the "__i" is used by the caller, and to
    avoid compiler warnings if it's completely unused now.
    
    v2: Flip the pipe comparison (Jani)
    
    Reviewed-by: Jani Nikula <jani.nikula@intel.com>
    Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
+ /mt/dim checkpatch c73a9719bdd06f85d527faab6fec3dca75f8dd1e drm-intel
f4c544ba1f78 drm/i915/joiner: Make joiner "nomodeset" state copy independent of pipe order
0e15a80c5f1e drm/i915: Walk crtcs in pipe order
-:118: ERROR:COMPLEX_MACRO: Macros with complex values should be enclosed in parentheses
#118: FILE: drivers/gpu/drm/i915/display/intel_display.h:225:
+#define for_each_intel_crtc_in_pipe_mask(dev, crtc, pipe_mask) \
+	for_each_intel_crtc((dev), (crtc)) \
+		for_each_if((pipe_mask) & BIT((crtc)->pipe))

BUT SEE:

   do {} while (0) advice is over-stated in a few situations:

   The more obvious case is macros, like MODULE_PARM_DESC, invoked at
   file-scope, where C disallows code (it must be in functions).  See
   $exceptions if you have one to add by name.

   More troublesome is declarative macros used at top of new scope,
   like DECLARE_PER_CPU.  These might just compile with a do-while-0
   wrapper, but would be incorrect.  Most of these are handled by
   detecting struct,union,etc declaration primitives in $exceptions.

   Theres also macros called inside an if (block), which "return" an
   expression.  These cannot do-while, and need a ({}) wrapper.

   Enjoy this qualification while we work to improve our heuristics.

-:118: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'crtc' - possible side-effects?
#118: FILE: drivers/gpu/drm/i915/display/intel_display.h:225:
+#define for_each_intel_crtc_in_pipe_mask(dev, crtc, pipe_mask) \
+	for_each_intel_crtc((dev), (crtc)) \
+		for_each_if((pipe_mask) & BIT((crtc)->pipe))

-:127: ERROR:COMPLEX_MACRO: Macros with complex values should be enclosed in parentheses
#127: FILE: drivers/gpu/drm/i915/display/intel_display.h:229:
+#define for_each_intel_crtc_in_pipe_mask_reverse(dev, crtc, pipe_mask) \
+	for_each_intel_crtc_reverse((dev), (crtc)) \
+		for_each_if((pipe_mask) & BIT((crtc)->pipe))

BUT SEE:

   do {} while (0) advice is over-stated in a few situations:

   The more obvious case is macros, like MODULE_PARM_DESC, invoked at
   file-scope, where C disallows code (it must be in functions).  See
   $exceptions if you have one to add by name.

   More troublesome is declarative macros used at top of new scope,
   like DECLARE_PER_CPU.  These might just compile with a do-while-0
   wrapper, but would be incorrect.  Most of these are handled by
   detecting struct,union,etc declaration primitives in $exceptions.

   Theres also macros called inside an if (block), which "return" an
   expression.  These cannot do-while, and need a ({}) wrapper.

   Enjoy this qualification while we work to improve our heuristics.

-:127: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'crtc' - possible side-effects?
#127: FILE: drivers/gpu/drm/i915/display/intel_display.h:229:
+#define for_each_intel_crtc_in_pipe_mask_reverse(dev, crtc, pipe_mask) \
+	for_each_intel_crtc_reverse((dev), (crtc)) \
+		for_each_if((pipe_mask) & BIT((crtc)->pipe))

-:175: ERROR:COMPLEX_MACRO: Macros with complex values should be enclosed in parentheses
#175: FILE: drivers/gpu/drm/i915/display/intel_display.h:290:
+#define for_each_old_intel_crtc_in_state(__state, crtc, old_crtc_state, __i) \
+	for_each_intel_crtc((__state)->base.dev, (crtc)) \
+		for_each_if(((__i) = drm_crtc_index(&(crtc)->base), (void)(__i), \
+			     (old_crtc_state) = intel_atomic_get_old_crtc_state((__state), (crtc))))

BUT SEE:

   do {} while (0) advice is over-stated in a few situations:

   The more obvious case is macros, like MODULE_PARM_DESC, invoked at
   file-scope, where C disallows code (it must be in functions).  See
   $exceptions if you have one to add by name.

   More troublesome is declarative macros used at top of new scope,
   like DECLARE_PER_CPU.  These might just compile with a do-while-0
   wrapper, but would be incorrect.  Most of these are handled by
   detecting struct,union,etc declaration primitives in $exceptions.

   Theres also macros called inside an if (block), which "return" an
   expression.  These cannot do-while, and need a ({}) wrapper.

   Enjoy this qualification while we work to improve our heuristics.

-:175: CHECK:MACRO_ARG_REUSE: Macro argument reuse '__state' - possible side-effects?
#175: FILE: drivers/gpu/drm/i915/display/intel_display.h:290:
+#define for_each_old_intel_crtc_in_state(__state, crtc, old_crtc_state, __i) \
+	for_each_intel_crtc((__state)->base.dev, (crtc)) \
+		for_each_if(((__i) = drm_crtc_index(&(crtc)->base), (void)(__i), \
+			     (old_crtc_state) = intel_atomic_get_old_crtc_state((__state), (crtc))))

-:175: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'crtc' - possible side-effects?
#175: FILE: drivers/gpu/drm/i915/display/intel_display.h:290:
+#define for_each_old_intel_crtc_in_state(__state, crtc, old_crtc_state, __i) \
+	for_each_intel_crtc((__state)->base.dev, (crtc)) \
+		for_each_if(((__i) = drm_crtc_index(&(crtc)->base), (void)(__i), \
+			     (old_crtc_state) = intel_atomic_get_old_crtc_state((__state), (crtc))))

-:175: CHECK:MACRO_ARG_REUSE: Macro argument reuse '__i' - possible side-effects?
#175: FILE: drivers/gpu/drm/i915/display/intel_display.h:290:
+#define for_each_old_intel_crtc_in_state(__state, crtc, old_crtc_state, __i) \
+	for_each_intel_crtc((__state)->base.dev, (crtc)) \
+		for_each_if(((__i) = drm_crtc_index(&(crtc)->base), (void)(__i), \
+			     (old_crtc_state) = intel_atomic_get_old_crtc_state((__state), (crtc))))

-:180: ERROR:COMPLEX_MACRO: Macros with complex values should be enclosed in parentheses
#180: FILE: drivers/gpu/drm/i915/display/intel_display.h:295:
+#define for_each_new_intel_crtc_in_state(__state, crtc, new_crtc_state, __i) \
+	for_each_intel_crtc((__state)->base.dev, (crtc)) \
+		for_each_if(((__i) = drm_crtc_index(&(crtc)->base), (void)(__i), \
+			     (new_crtc_state) = intel_atomic_get_new_crtc_state((__state), (crtc))))

BUT SEE:

   do {} while (0) advice is over-stated in a few situations:

   The more obvious case is macros, like MODULE_PARM_DESC, invoked at
   file-scope, where C disallows code (it must be in functions).  See
   $exceptions if you have one to add by name.

   More troublesome is declarative macros used at top of new scope,
   like DECLARE_PER_CPU.  These might just compile with a do-while-0
   wrapper, but would be incorrect.  Most of these are handled by
   detecting struct,union,etc declaration primitives in $exceptions.

   Theres also macros called inside an if (block), which "return" an
   expression.  These cannot do-while, and need a ({}) wrapper.

   Enjoy this qualification while we work to improve our heuristics.

-:180: CHECK:MACRO_ARG_REUSE: Macro argument reuse '__state' - possible side-effects?
#180: FILE: drivers/gpu/drm/i915/display/intel_display.h:295:
+#define for_each_new_intel_crtc_in_state(__state, crtc, new_crtc_state, __i) \
+	for_each_intel_crtc((__state)->base.dev, (crtc)) \
+		for_each_if(((__i) = drm_crtc_index(&(crtc)->base), (void)(__i), \
+			     (new_crtc_state) = intel_atomic_get_new_crtc_state((__state), (crtc))))

-:180: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'crtc' - possible side-effects?
#180: FILE: drivers/gpu/drm/i915/display/intel_display.h:295:
+#define for_each_new_intel_crtc_in_state(__state, crtc, new_crtc_state, __i) \
+	for_each_intel_crtc((__state)->base.dev, (crtc)) \
+		for_each_if(((__i) = drm_crtc_index(&(crtc)->base), (void)(__i), \
+			     (new_crtc_state) = intel_atomic_get_new_crtc_state((__state), (crtc))))

-:180: CHECK:MACRO_ARG_REUSE: Macro argument reuse '__i' - possible side-effects?
#180: FILE: drivers/gpu/drm/i915/display/intel_display.h:295:
+#define for_each_new_intel_crtc_in_state(__state, crtc, new_crtc_state, __i) \
+	for_each_intel_crtc((__state)->base.dev, (crtc)) \
+		for_each_if(((__i) = drm_crtc_index(&(crtc)->base), (void)(__i), \
+			     (new_crtc_state) = intel_atomic_get_new_crtc_state((__state), (crtc))))

-:185: ERROR:COMPLEX_MACRO: Macros with complex values should be enclosed in parentheses
#185: FILE: drivers/gpu/drm/i915/display/intel_display.h:300:
+#define for_each_new_intel_crtc_in_state_reverse(__state, crtc, new_crtc_state, __i) \
+	for_each_intel_crtc_reverse((__state)->base.dev, (crtc)) \
+		for_each_if(((__i) = drm_crtc_index(&(crtc)->base), (void)(__i), \
+			     (new_crtc_state) = intel_atomic_get_new_crtc_state((__state), (crtc))))

BUT SEE:

   do {} while (0) advice is over-stated in a few situations:

   The more obvious case is macros, like MODULE_PARM_DESC, invoked at
   file-scope, where C disallows code (it must be in functions).  See
   $exceptions if you have one to add by name.

   More troublesome is declarative macros used at top of new scope,
   like DECLARE_PER_CPU.  These might just compile with a do-while-0
   wrapper, but would be incorrect.  Most of these are handled by
   detecting struct,union,etc declaration primitives in $exceptions.

   Theres also macros called inside an if (block), which "return" an
   expression.  These cannot do-while, and need a ({}) wrapper.

   Enjoy this qualification while we work to improve our heuristics.

-:185: CHECK:MACRO_ARG_REUSE: Macro argument reuse '__state' - possible side-effects?
#185: FILE: drivers/gpu/drm/i915/display/intel_display.h:300:
+#define for_each_new_intel_crtc_in_state_reverse(__state, crtc, new_crtc_state, __i) \
+	for_each_intel_crtc_reverse((__state)->base.dev, (crtc)) \
+		for_each_if(((__i) = drm_crtc_index(&(crtc)->base), (void)(__i), \
+			     (new_crtc_state) = intel_atomic_get_new_crtc_state((__state), (crtc))))

-:185: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'crtc' - possible side-effects?
#185: FILE: drivers/gpu/drm/i915/display/intel_display.h:300:
+#define for_each_new_intel_crtc_in_state_reverse(__state, crtc, new_crtc_state, __i) \
+	for_each_intel_crtc_reverse((__state)->base.dev, (crtc)) \
+		for_each_if(((__i) = drm_crtc_index(&(crtc)->base), (void)(__i), \
+			     (new_crtc_state) = intel_atomic_get_new_crtc_state((__state), (crtc))))

-:185: CHECK:MACRO_ARG_REUSE: Macro argument reuse '__i' - possible side-effects?
#185: FILE: drivers/gpu/drm/i915/display/intel_display.h:300:
+#define for_each_new_intel_crtc_in_state_reverse(__state, crtc, new_crtc_state, __i) \
+	for_each_intel_crtc_reverse((__state)->base.dev, (crtc)) \
+		for_each_if(((__i) = drm_crtc_index(&(crtc)->base), (void)(__i), \
+			     (new_crtc_state) = intel_atomic_get_new_crtc_state((__state), (crtc))))

-:200: WARNING:LONG_LINE: line length of 101 exceeds 100 columns
#200: FILE: drivers/gpu/drm/i915/display/intel_display.h:308:
+			     (old_crtc_state) = intel_atomic_get_old_crtc_state((__state), (crtc)), \

-:213: WARNING:LONG_LINE: line length of 101 exceeds 100 columns
#213: FILE: drivers/gpu/drm/i915/display/intel_display.h:314:
+			     (old_crtc_state) = intel_atomic_get_old_crtc_state((__state), (crtc)), \

total: 5 errors, 2 warnings, 11 checks, 193 lines checked



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

* ✓ CI.KUnit: success for drm/i915: Make sure CRTC vs. pipe reordering is safe (rev2)
  2026-04-08 15:57 [PATCH 0/2] drm/i915: Make sure CRTC vs. pipe reordering is safe Ville Syrjala
                   ` (4 preceding siblings ...)
  2026-04-10  8:37 ` ✗ CI.checkpatch: warning for drm/i915: Make sure CRTC vs. pipe reordering is safe (rev2) Patchwork
@ 2026-04-10  8:39 ` Patchwork
  2026-04-10  9:18 ` ✓ Xe.CI.BAT: " Patchwork
  2026-04-10 15:55 ` ✗ Xe.CI.FULL: failure " Patchwork
  7 siblings, 0 replies; 12+ messages in thread
From: Patchwork @ 2026-04-10  8:39 UTC (permalink / raw)
  To: Ville Syrjälä; +Cc: intel-xe

== Series Details ==

Series: drm/i915: Make sure CRTC vs. pipe reordering is safe (rev2)
URL   : https://patchwork.freedesktop.org/series/164557/
State : success

== Summary ==

+ trap cleanup EXIT
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/xe/.kunitconfig
[08:37:55] Configuring KUnit Kernel ...
Generating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[08:37:59] 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
[08:38:31] Starting KUnit Kernel (1/1)...
[08:38:31] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[08:38:31] ================== guc_buf (11 subtests) ===================
[08:38:31] [PASSED] test_smallest
[08:38:31] [PASSED] test_largest
[08:38:31] [PASSED] test_granular
[08:38:31] [PASSED] test_unique
[08:38:31] [PASSED] test_overlap
[08:38:31] [PASSED] test_reusable
[08:38:31] [PASSED] test_too_big
[08:38:31] [PASSED] test_flush
[08:38:31] [PASSED] test_lookup
[08:38:31] [PASSED] test_data
[08:38:31] [PASSED] test_class
[08:38:31] ===================== [PASSED] guc_buf =====================
[08:38:31] =================== guc_dbm (7 subtests) ===================
[08:38:31] [PASSED] test_empty
[08:38:31] [PASSED] test_default
[08:38:31] ======================== test_size  ========================
[08:38:31] [PASSED] 4
[08:38:31] [PASSED] 8
[08:38:31] [PASSED] 32
[08:38:31] [PASSED] 256
[08:38:31] ==================== [PASSED] test_size ====================
[08:38:31] ======================= test_reuse  ========================
[08:38:31] [PASSED] 4
[08:38:31] [PASSED] 8
[08:38:31] [PASSED] 32
[08:38:31] [PASSED] 256
[08:38:31] =================== [PASSED] test_reuse ====================
[08:38:31] =================== test_range_overlap  ====================
[08:38:31] [PASSED] 4
[08:38:31] [PASSED] 8
[08:38:31] [PASSED] 32
[08:38:31] [PASSED] 256
[08:38:31] =============== [PASSED] test_range_overlap ================
[08:38:31] =================== test_range_compact  ====================
[08:38:31] [PASSED] 4
[08:38:31] [PASSED] 8
[08:38:31] [PASSED] 32
[08:38:31] [PASSED] 256
[08:38:31] =============== [PASSED] test_range_compact ================
[08:38:31] ==================== test_range_spare  =====================
[08:38:31] [PASSED] 4
[08:38:31] [PASSED] 8
[08:38:31] [PASSED] 32
[08:38:31] [PASSED] 256
[08:38:31] ================ [PASSED] test_range_spare =================
[08:38:31] ===================== [PASSED] guc_dbm =====================
[08:38:31] =================== guc_idm (6 subtests) ===================
[08:38:31] [PASSED] bad_init
[08:38:31] [PASSED] no_init
[08:38:31] [PASSED] init_fini
[08:38:31] [PASSED] check_used
[08:38:31] [PASSED] check_quota
[08:38:31] [PASSED] check_all
[08:38:31] ===================== [PASSED] guc_idm =====================
[08:38:31] ================== no_relay (3 subtests) ===================
[08:38:31] [PASSED] xe_drops_guc2pf_if_not_ready
[08:38:31] [PASSED] xe_drops_guc2vf_if_not_ready
[08:38:31] [PASSED] xe_rejects_send_if_not_ready
[08:38:31] ==================== [PASSED] no_relay =====================
[08:38:31] ================== pf_relay (14 subtests) ==================
[08:38:31] [PASSED] pf_rejects_guc2pf_too_short
[08:38:31] [PASSED] pf_rejects_guc2pf_too_long
[08:38:31] [PASSED] pf_rejects_guc2pf_no_payload
[08:38:31] [PASSED] pf_fails_no_payload
[08:38:31] [PASSED] pf_fails_bad_origin
[08:38:31] [PASSED] pf_fails_bad_type
[08:38:31] [PASSED] pf_txn_reports_error
[08:38:31] [PASSED] pf_txn_sends_pf2guc
[08:38:31] [PASSED] pf_sends_pf2guc
[08:38:31] [SKIPPED] pf_loopback_nop
[08:38:31] [SKIPPED] pf_loopback_echo
[08:38:31] [SKIPPED] pf_loopback_fail
[08:38:31] [SKIPPED] pf_loopback_busy
[08:38:31] [SKIPPED] pf_loopback_retry
[08:38:31] ==================== [PASSED] pf_relay =====================
[08:38:31] ================== vf_relay (3 subtests) ===================
[08:38:31] [PASSED] vf_rejects_guc2vf_too_short
[08:38:31] [PASSED] vf_rejects_guc2vf_too_long
[08:38:31] [PASSED] vf_rejects_guc2vf_no_payload
[08:38:31] ==================== [PASSED] vf_relay =====================
[08:38:31] ================ pf_gt_config (9 subtests) =================
[08:38:31] [PASSED] fair_contexts_1vf
[08:38:31] [PASSED] fair_doorbells_1vf
[08:38:31] [PASSED] fair_ggtt_1vf
[08:38:31] ====================== fair_vram_1vf  ======================
[08:38:31] [PASSED] 3.50 GiB
[08:38:31] [PASSED] 11.5 GiB
[08:38:31] [PASSED] 15.5 GiB
[08:38:31] [PASSED] 31.5 GiB
[08:38:31] [PASSED] 63.5 GiB
[08:38:31] [PASSED] 1.91 GiB
[08:38:31] ================== [PASSED] fair_vram_1vf ==================
[08:38:31] ================ fair_vram_1vf_admin_only  =================
[08:38:31] [PASSED] 3.50 GiB
[08:38:31] [PASSED] 11.5 GiB
[08:38:31] [PASSED] 15.5 GiB
[08:38:31] [PASSED] 31.5 GiB
[08:38:31] [PASSED] 63.5 GiB
[08:38:31] [PASSED] 1.91 GiB
[08:38:31] ============ [PASSED] fair_vram_1vf_admin_only =============
[08:38:31] ====================== fair_contexts  ======================
[08:38:31] [PASSED] 1 VF
[08:38:31] [PASSED] 2 VFs
[08:38:31] [PASSED] 3 VFs
[08:38:31] [PASSED] 4 VFs
[08:38:31] [PASSED] 5 VFs
[08:38:31] [PASSED] 6 VFs
[08:38:31] [PASSED] 7 VFs
[08:38:31] [PASSED] 8 VFs
[08:38:31] [PASSED] 9 VFs
[08:38:31] [PASSED] 10 VFs
[08:38:31] [PASSED] 11 VFs
[08:38:31] [PASSED] 12 VFs
[08:38:31] [PASSED] 13 VFs
[08:38:31] [PASSED] 14 VFs
[08:38:31] [PASSED] 15 VFs
[08:38:31] [PASSED] 16 VFs
[08:38:31] [PASSED] 17 VFs
[08:38:31] [PASSED] 18 VFs
[08:38:31] [PASSED] 19 VFs
[08:38:31] [PASSED] 20 VFs
[08:38:31] [PASSED] 21 VFs
[08:38:31] [PASSED] 22 VFs
[08:38:31] [PASSED] 23 VFs
[08:38:31] [PASSED] 24 VFs
[08:38:31] [PASSED] 25 VFs
[08:38:31] [PASSED] 26 VFs
[08:38:31] [PASSED] 27 VFs
[08:38:31] [PASSED] 28 VFs
[08:38:31] [PASSED] 29 VFs
[08:38:31] [PASSED] 30 VFs
[08:38:31] [PASSED] 31 VFs
[08:38:31] [PASSED] 32 VFs
[08:38:31] [PASSED] 33 VFs
[08:38:31] [PASSED] 34 VFs
[08:38:31] [PASSED] 35 VFs
[08:38:31] [PASSED] 36 VFs
[08:38:31] [PASSED] 37 VFs
[08:38:31] [PASSED] 38 VFs
[08:38:31] [PASSED] 39 VFs
[08:38:31] [PASSED] 40 VFs
[08:38:31] [PASSED] 41 VFs
[08:38:31] [PASSED] 42 VFs
[08:38:31] [PASSED] 43 VFs
[08:38:31] [PASSED] 44 VFs
[08:38:31] [PASSED] 45 VFs
[08:38:31] [PASSED] 46 VFs
[08:38:31] [PASSED] 47 VFs
[08:38:31] [PASSED] 48 VFs
[08:38:31] [PASSED] 49 VFs
[08:38:31] [PASSED] 50 VFs
[08:38:31] [PASSED] 51 VFs
[08:38:31] [PASSED] 52 VFs
[08:38:31] [PASSED] 53 VFs
[08:38:31] [PASSED] 54 VFs
[08:38:31] [PASSED] 55 VFs
[08:38:31] [PASSED] 56 VFs
[08:38:31] [PASSED] 57 VFs
[08:38:31] [PASSED] 58 VFs
[08:38:31] [PASSED] 59 VFs
[08:38:31] [PASSED] 60 VFs
[08:38:31] [PASSED] 61 VFs
[08:38:31] [PASSED] 62 VFs
[08:38:31] [PASSED] 63 VFs
[08:38:31] ================== [PASSED] fair_contexts ==================
[08:38:31] ===================== fair_doorbells  ======================
[08:38:31] [PASSED] 1 VF
[08:38:31] [PASSED] 2 VFs
[08:38:31] [PASSED] 3 VFs
[08:38:31] [PASSED] 4 VFs
[08:38:31] [PASSED] 5 VFs
[08:38:31] [PASSED] 6 VFs
[08:38:31] [PASSED] 7 VFs
[08:38:31] [PASSED] 8 VFs
[08:38:31] [PASSED] 9 VFs
[08:38:31] [PASSED] 10 VFs
[08:38:31] [PASSED] 11 VFs
[08:38:31] [PASSED] 12 VFs
[08:38:31] [PASSED] 13 VFs
[08:38:31] [PASSED] 14 VFs
[08:38:31] [PASSED] 15 VFs
[08:38:31] [PASSED] 16 VFs
[08:38:31] [PASSED] 17 VFs
[08:38:31] [PASSED] 18 VFs
[08:38:31] [PASSED] 19 VFs
[08:38:31] [PASSED] 20 VFs
[08:38:31] [PASSED] 21 VFs
[08:38:31] [PASSED] 22 VFs
[08:38:31] [PASSED] 23 VFs
[08:38:31] [PASSED] 24 VFs
[08:38:31] [PASSED] 25 VFs
[08:38:31] [PASSED] 26 VFs
[08:38:31] [PASSED] 27 VFs
[08:38:31] [PASSED] 28 VFs
[08:38:31] [PASSED] 29 VFs
[08:38:31] [PASSED] 30 VFs
[08:38:31] [PASSED] 31 VFs
[08:38:31] [PASSED] 32 VFs
[08:38:31] [PASSED] 33 VFs
[08:38:31] [PASSED] 34 VFs
[08:38:31] [PASSED] 35 VFs
[08:38:31] [PASSED] 36 VFs
[08:38:31] [PASSED] 37 VFs
[08:38:31] [PASSED] 38 VFs
[08:38:31] [PASSED] 39 VFs
[08:38:31] [PASSED] 40 VFs
[08:38:31] [PASSED] 41 VFs
[08:38:31] [PASSED] 42 VFs
[08:38:31] [PASSED] 43 VFs
[08:38:31] [PASSED] 44 VFs
[08:38:31] [PASSED] 45 VFs
[08:38:31] [PASSED] 46 VFs
[08:38:31] [PASSED] 47 VFs
[08:38:31] [PASSED] 48 VFs
[08:38:31] [PASSED] 49 VFs
[08:38:31] [PASSED] 50 VFs
[08:38:31] [PASSED] 51 VFs
[08:38:31] [PASSED] 52 VFs
[08:38:31] [PASSED] 53 VFs
[08:38:31] [PASSED] 54 VFs
[08:38:31] [PASSED] 55 VFs
[08:38:31] [PASSED] 56 VFs
[08:38:31] [PASSED] 57 VFs
[08:38:31] [PASSED] 58 VFs
[08:38:31] [PASSED] 59 VFs
[08:38:31] [PASSED] 60 VFs
[08:38:31] [PASSED] 61 VFs
[08:38:31] [PASSED] 62 VFs
[08:38:31] [PASSED] 63 VFs
[08:38:31] ================= [PASSED] fair_doorbells ==================
[08:38:31] ======================== fair_ggtt  ========================
[08:38:31] [PASSED] 1 VF
[08:38:31] [PASSED] 2 VFs
[08:38:31] [PASSED] 3 VFs
[08:38:31] [PASSED] 4 VFs
[08:38:31] [PASSED] 5 VFs
[08:38:31] [PASSED] 6 VFs
[08:38:31] [PASSED] 7 VFs
[08:38:31] [PASSED] 8 VFs
[08:38:31] [PASSED] 9 VFs
[08:38:31] [PASSED] 10 VFs
[08:38:31] [PASSED] 11 VFs
[08:38:31] [PASSED] 12 VFs
[08:38:31] [PASSED] 13 VFs
[08:38:31] [PASSED] 14 VFs
[08:38:31] [PASSED] 15 VFs
[08:38:31] [PASSED] 16 VFs
[08:38:31] [PASSED] 17 VFs
[08:38:31] [PASSED] 18 VFs
[08:38:31] [PASSED] 19 VFs
[08:38:31] [PASSED] 20 VFs
[08:38:31] [PASSED] 21 VFs
[08:38:31] [PASSED] 22 VFs
[08:38:31] [PASSED] 23 VFs
[08:38:31] [PASSED] 24 VFs
[08:38:31] [PASSED] 25 VFs
[08:38:31] [PASSED] 26 VFs
[08:38:31] [PASSED] 27 VFs
[08:38:31] [PASSED] 28 VFs
[08:38:31] [PASSED] 29 VFs
[08:38:31] [PASSED] 30 VFs
[08:38:31] [PASSED] 31 VFs
[08:38:31] [PASSED] 32 VFs
[08:38:31] [PASSED] 33 VFs
[08:38:31] [PASSED] 34 VFs
[08:38:31] [PASSED] 35 VFs
[08:38:31] [PASSED] 36 VFs
[08:38:31] [PASSED] 37 VFs
[08:38:31] [PASSED] 38 VFs
[08:38:31] [PASSED] 39 VFs
[08:38:31] [PASSED] 40 VFs
[08:38:31] [PASSED] 41 VFs
[08:38:31] [PASSED] 42 VFs
[08:38:31] [PASSED] 43 VFs
[08:38:31] [PASSED] 44 VFs
[08:38:31] [PASSED] 45 VFs
[08:38:31] [PASSED] 46 VFs
[08:38:31] [PASSED] 47 VFs
[08:38:31] [PASSED] 48 VFs
[08:38:31] [PASSED] 49 VFs
[08:38:31] [PASSED] 50 VFs
[08:38:31] [PASSED] 51 VFs
[08:38:31] [PASSED] 52 VFs
[08:38:31] [PASSED] 53 VFs
[08:38:31] [PASSED] 54 VFs
[08:38:31] [PASSED] 55 VFs
[08:38:31] [PASSED] 56 VFs
[08:38:31] [PASSED] 57 VFs
[08:38:31] [PASSED] 58 VFs
[08:38:31] [PASSED] 59 VFs
[08:38:31] [PASSED] 60 VFs
[08:38:31] [PASSED] 61 VFs
[08:38:31] [PASSED] 62 VFs
[08:38:31] [PASSED] 63 VFs
[08:38:31] ==================== [PASSED] fair_ggtt ====================
[08:38:31] ======================== fair_vram  ========================
[08:38:31] [PASSED] 1 VF
[08:38:31] [PASSED] 2 VFs
[08:38:31] [PASSED] 3 VFs
[08:38:31] [PASSED] 4 VFs
[08:38:31] [PASSED] 5 VFs
[08:38:31] [PASSED] 6 VFs
[08:38:31] [PASSED] 7 VFs
[08:38:31] [PASSED] 8 VFs
[08:38:31] [PASSED] 9 VFs
[08:38:31] [PASSED] 10 VFs
[08:38:31] [PASSED] 11 VFs
[08:38:31] [PASSED] 12 VFs
[08:38:31] [PASSED] 13 VFs
[08:38:31] [PASSED] 14 VFs
[08:38:31] [PASSED] 15 VFs
[08:38:31] [PASSED] 16 VFs
[08:38:31] [PASSED] 17 VFs
[08:38:31] [PASSED] 18 VFs
[08:38:31] [PASSED] 19 VFs
[08:38:31] [PASSED] 20 VFs
[08:38:31] [PASSED] 21 VFs
[08:38:31] [PASSED] 22 VFs
[08:38:31] [PASSED] 23 VFs
[08:38:31] [PASSED] 24 VFs
[08:38:31] [PASSED] 25 VFs
[08:38:31] [PASSED] 26 VFs
[08:38:31] [PASSED] 27 VFs
[08:38:31] [PASSED] 28 VFs
[08:38:31] [PASSED] 29 VFs
[08:38:31] [PASSED] 30 VFs
[08:38:31] [PASSED] 31 VFs
[08:38:31] [PASSED] 32 VFs
[08:38:31] [PASSED] 33 VFs
[08:38:31] [PASSED] 34 VFs
[08:38:31] [PASSED] 35 VFs
[08:38:31] [PASSED] 36 VFs
[08:38:31] [PASSED] 37 VFs
[08:38:31] [PASSED] 38 VFs
[08:38:31] [PASSED] 39 VFs
[08:38:31] [PASSED] 40 VFs
[08:38:31] [PASSED] 41 VFs
[08:38:31] [PASSED] 42 VFs
[08:38:31] [PASSED] 43 VFs
[08:38:31] [PASSED] 44 VFs
[08:38:31] [PASSED] 45 VFs
[08:38:31] [PASSED] 46 VFs
[08:38:31] [PASSED] 47 VFs
[08:38:31] [PASSED] 48 VFs
[08:38:31] [PASSED] 49 VFs
[08:38:31] [PASSED] 50 VFs
[08:38:31] [PASSED] 51 VFs
[08:38:31] [PASSED] 52 VFs
[08:38:31] [PASSED] 53 VFs
[08:38:31] [PASSED] 54 VFs
[08:38:31] [PASSED] 55 VFs
[08:38:31] [PASSED] 56 VFs
[08:38:31] [PASSED] 57 VFs
[08:38:31] [PASSED] 58 VFs
[08:38:31] [PASSED] 59 VFs
[08:38:31] [PASSED] 60 VFs
[08:38:31] [PASSED] 61 VFs
[08:38:31] [PASSED] 62 VFs
[08:38:31] [PASSED] 63 VFs
[08:38:31] ==================== [PASSED] fair_vram ====================
[08:38:31] ================== [PASSED] pf_gt_config ===================
[08:38:31] ===================== lmtt (1 subtest) =====================
[08:38:31] ======================== test_ops  =========================
[08:38:31] [PASSED] 2-level
[08:38:31] [PASSED] multi-level
[08:38:31] ==================== [PASSED] test_ops =====================
[08:38:31] ====================== [PASSED] lmtt =======================
[08:38:31] ================= pf_service (11 subtests) =================
[08:38:31] [PASSED] pf_negotiate_any
[08:38:31] [PASSED] pf_negotiate_base_match
[08:38:31] [PASSED] pf_negotiate_base_newer
[08:38:31] [PASSED] pf_negotiate_base_next
[08:38:31] [SKIPPED] pf_negotiate_base_older
[08:38:31] [PASSED] pf_negotiate_base_prev
[08:38:31] [PASSED] pf_negotiate_latest_match
[08:38:31] [PASSED] pf_negotiate_latest_newer
[08:38:31] [PASSED] pf_negotiate_latest_next
[08:38:31] [SKIPPED] pf_negotiate_latest_older
[08:38:31] [SKIPPED] pf_negotiate_latest_prev
[08:38:31] =================== [PASSED] pf_service ====================
[08:38:31] ================= xe_guc_g2g (2 subtests) ==================
[08:38:31] ============== xe_live_guc_g2g_kunit_default  ==============
[08:38:31] ========= [SKIPPED] xe_live_guc_g2g_kunit_default ==========
[08:38:31] ============== xe_live_guc_g2g_kunit_allmem  ===============
[08:38:31] ========== [SKIPPED] xe_live_guc_g2g_kunit_allmem ==========
[08:38:31] =================== [SKIPPED] xe_guc_g2g ===================
[08:38:31] =================== xe_mocs (2 subtests) ===================
[08:38:31] ================ xe_live_mocs_kernel_kunit  ================
[08:38:31] =========== [SKIPPED] xe_live_mocs_kernel_kunit ============
[08:38:31] ================ xe_live_mocs_reset_kunit  =================
[08:38:31] ============ [SKIPPED] xe_live_mocs_reset_kunit ============
[08:38:31] ==================== [SKIPPED] xe_mocs =====================
[08:38:31] ================= xe_migrate (2 subtests) ==================
[08:38:31] ================= xe_migrate_sanity_kunit  =================
[08:38:31] ============ [SKIPPED] xe_migrate_sanity_kunit =============
[08:38:31] ================== xe_validate_ccs_kunit  ==================
[08:38:31] ============= [SKIPPED] xe_validate_ccs_kunit ==============
[08:38:31] =================== [SKIPPED] xe_migrate ===================
[08:38:31] ================== xe_dma_buf (1 subtest) ==================
[08:38:31] ==================== xe_dma_buf_kunit  =====================
[08:38:31] ================ [SKIPPED] xe_dma_buf_kunit ================
[08:38:31] =================== [SKIPPED] xe_dma_buf ===================
[08:38:31] ================= xe_bo_shrink (1 subtest) =================
[08:38:31] =================== xe_bo_shrink_kunit  ====================
[08:38:31] =============== [SKIPPED] xe_bo_shrink_kunit ===============
[08:38:31] ================== [SKIPPED] xe_bo_shrink ==================
[08:38:31] ==================== xe_bo (2 subtests) ====================
[08:38:31] ================== xe_ccs_migrate_kunit  ===================
[08:38:31] ============== [SKIPPED] xe_ccs_migrate_kunit ==============
[08:38:31] ==================== xe_bo_evict_kunit  ====================
[08:38:31] =============== [SKIPPED] xe_bo_evict_kunit ================
[08:38:31] ===================== [SKIPPED] xe_bo ======================
[08:38:31] ==================== args (13 subtests) ====================
[08:38:31] [PASSED] count_args_test
[08:38:31] [PASSED] call_args_example
[08:38:31] [PASSED] call_args_test
[08:38:31] [PASSED] drop_first_arg_example
[08:38:31] [PASSED] drop_first_arg_test
[08:38:31] [PASSED] first_arg_example
[08:38:31] [PASSED] first_arg_test
[08:38:31] [PASSED] last_arg_example
[08:38:31] [PASSED] last_arg_test
[08:38:31] [PASSED] pick_arg_example
[08:38:31] [PASSED] if_args_example
[08:38:31] [PASSED] if_args_test
[08:38:31] [PASSED] sep_comma_example
[08:38:31] ====================== [PASSED] args =======================
[08:38:31] =================== xe_pci (3 subtests) ====================
[08:38:31] ==================== check_graphics_ip  ====================
[08:38:31] [PASSED] 12.00 Xe_LP
[08:38:31] [PASSED] 12.10 Xe_LP+
[08:38:31] [PASSED] 12.55 Xe_HPG
[08:38:31] [PASSED] 12.60 Xe_HPC
[08:38:31] [PASSED] 12.70 Xe_LPG
[08:38:31] [PASSED] 12.71 Xe_LPG
[08:38:31] [PASSED] 12.74 Xe_LPG+
[08:38:31] [PASSED] 20.01 Xe2_HPG
[08:38:31] [PASSED] 20.02 Xe2_HPG
[08:38:31] [PASSED] 20.04 Xe2_LPG
[08:38:31] [PASSED] 30.00 Xe3_LPG
[08:38:31] [PASSED] 30.01 Xe3_LPG
[08:38:31] [PASSED] 30.03 Xe3_LPG
[08:38:31] [PASSED] 30.04 Xe3_LPG
[08:38:31] [PASSED] 30.05 Xe3_LPG
[08:38:31] [PASSED] 35.10 Xe3p_LPG
[08:38:31] [PASSED] 35.11 Xe3p_XPC
[08:38:31] ================ [PASSED] check_graphics_ip ================
[08:38:31] ===================== check_media_ip  ======================
[08:38:31] [PASSED] 12.00 Xe_M
[08:38:31] [PASSED] 12.55 Xe_HPM
[08:38:31] [PASSED] 13.00 Xe_LPM+
[08:38:31] [PASSED] 13.01 Xe2_HPM
[08:38:31] [PASSED] 20.00 Xe2_LPM
[08:38:31] [PASSED] 30.00 Xe3_LPM
[08:38:31] [PASSED] 30.02 Xe3_LPM
[08:38:31] [PASSED] 35.00 Xe3p_LPM
[08:38:31] [PASSED] 35.03 Xe3p_HPM
[08:38:31] ================= [PASSED] check_media_ip ==================
[08:38:31] =================== check_platform_desc  ===================
[08:38:31] [PASSED] 0x9A60 (TIGERLAKE)
[08:38:31] [PASSED] 0x9A68 (TIGERLAKE)
[08:38:31] [PASSED] 0x9A70 (TIGERLAKE)
[08:38:31] [PASSED] 0x9A40 (TIGERLAKE)
[08:38:31] [PASSED] 0x9A49 (TIGERLAKE)
[08:38:31] [PASSED] 0x9A59 (TIGERLAKE)
[08:38:31] [PASSED] 0x9A78 (TIGERLAKE)
[08:38:31] [PASSED] 0x9AC0 (TIGERLAKE)
[08:38:31] [PASSED] 0x9AC9 (TIGERLAKE)
[08:38:31] [PASSED] 0x9AD9 (TIGERLAKE)
[08:38:31] [PASSED] 0x9AF8 (TIGERLAKE)
[08:38:31] [PASSED] 0x4C80 (ROCKETLAKE)
[08:38:31] [PASSED] 0x4C8A (ROCKETLAKE)
[08:38:31] [PASSED] 0x4C8B (ROCKETLAKE)
[08:38:31] [PASSED] 0x4C8C (ROCKETLAKE)
[08:38:31] [PASSED] 0x4C90 (ROCKETLAKE)
[08:38:31] [PASSED] 0x4C9A (ROCKETLAKE)
[08:38:31] [PASSED] 0x4680 (ALDERLAKE_S)
[08:38:31] [PASSED] 0x4682 (ALDERLAKE_S)
[08:38:31] [PASSED] 0x4688 (ALDERLAKE_S)
[08:38:31] [PASSED] 0x468A (ALDERLAKE_S)
[08:38:31] [PASSED] 0x468B (ALDERLAKE_S)
[08:38:31] [PASSED] 0x4690 (ALDERLAKE_S)
[08:38:31] [PASSED] 0x4692 (ALDERLAKE_S)
[08:38:31] [PASSED] 0x4693 (ALDERLAKE_S)
[08:38:31] [PASSED] 0x46A0 (ALDERLAKE_P)
[08:38:31] [PASSED] 0x46A1 (ALDERLAKE_P)
[08:38:31] [PASSED] 0x46A2 (ALDERLAKE_P)
[08:38:31] [PASSED] 0x46A3 (ALDERLAKE_P)
[08:38:31] [PASSED] 0x46A6 (ALDERLAKE_P)
[08:38:31] [PASSED] 0x46A8 (ALDERLAKE_P)
[08:38:31] [PASSED] 0x46AA (ALDERLAKE_P)
[08:38:31] [PASSED] 0x462A (ALDERLAKE_P)
[08:38:31] [PASSED] 0x4626 (ALDERLAKE_P)
[08:38:31] [PASSED] 0x4628 (ALDERLAKE_P)
[08:38:31] [PASSED] 0x46B0 (ALDERLAKE_P)
[08:38:31] [PASSED] 0x46B1 (ALDERLAKE_P)
[08:38:31] [PASSED] 0x46B2 (ALDERLAKE_P)
[08:38:31] [PASSED] 0x46B3 (ALDERLAKE_P)
[08:38:31] [PASSED] 0x46C0 (ALDERLAKE_P)
[08:38:31] [PASSED] 0x46C1 (ALDERLAKE_P)
[08:38:31] [PASSED] 0x46C2 (ALDERLAKE_P)
[08:38:31] [PASSED] 0x46C3 (ALDERLAKE_P)
[08:38:31] [PASSED] 0x46D0 (ALDERLAKE_N)
[08:38:31] [PASSED] 0x46D1 (ALDERLAKE_N)
[08:38:31] [PASSED] 0x46D2 (ALDERLAKE_N)
[08:38:31] [PASSED] 0x46D3 (ALDERLAKE_N)
[08:38:31] [PASSED] 0x46D4 (ALDERLAKE_N)
[08:38:31] [PASSED] 0xA721 (ALDERLAKE_P)
[08:38:31] [PASSED] 0xA7A1 (ALDERLAKE_P)
[08:38:31] [PASSED] 0xA7A9 (ALDERLAKE_P)
[08:38:31] [PASSED] 0xA7AC (ALDERLAKE_P)
[08:38:31] [PASSED] 0xA7AD (ALDERLAKE_P)
[08:38:31] [PASSED] 0xA720 (ALDERLAKE_P)
[08:38:31] [PASSED] 0xA7A0 (ALDERLAKE_P)
[08:38:31] [PASSED] 0xA7A8 (ALDERLAKE_P)
[08:38:31] [PASSED] 0xA7AA (ALDERLAKE_P)
[08:38:31] [PASSED] 0xA7AB (ALDERLAKE_P)
[08:38:31] [PASSED] 0xA780 (ALDERLAKE_S)
[08:38:31] [PASSED] 0xA781 (ALDERLAKE_S)
[08:38:31] [PASSED] 0xA782 (ALDERLAKE_S)
[08:38:31] [PASSED] 0xA783 (ALDERLAKE_S)
[08:38:31] [PASSED] 0xA788 (ALDERLAKE_S)
[08:38:31] [PASSED] 0xA789 (ALDERLAKE_S)
[08:38:31] [PASSED] 0xA78A (ALDERLAKE_S)
[08:38:31] [PASSED] 0xA78B (ALDERLAKE_S)
[08:38:31] [PASSED] 0x4905 (DG1)
[08:38:31] [PASSED] 0x4906 (DG1)
[08:38:31] [PASSED] 0x4907 (DG1)
[08:38:31] [PASSED] 0x4908 (DG1)
[08:38:31] [PASSED] 0x4909 (DG1)
[08:38:31] [PASSED] 0x56C0 (DG2)
[08:38:31] [PASSED] 0x56C2 (DG2)
[08:38:31] [PASSED] 0x56C1 (DG2)
[08:38:31] [PASSED] 0x7D51 (METEORLAKE)
[08:38:31] [PASSED] 0x7DD1 (METEORLAKE)
[08:38:31] [PASSED] 0x7D41 (METEORLAKE)
[08:38:31] [PASSED] 0x7D67 (METEORLAKE)
[08:38:31] [PASSED] 0xB640 (METEORLAKE)
[08:38:31] [PASSED] 0x56A0 (DG2)
[08:38:31] [PASSED] 0x56A1 (DG2)
[08:38:31] [PASSED] 0x56A2 (DG2)
[08:38:31] [PASSED] 0x56BE (DG2)
[08:38:31] [PASSED] 0x56BF (DG2)
[08:38:31] [PASSED] 0x5690 (DG2)
[08:38:31] [PASSED] 0x5691 (DG2)
[08:38:31] [PASSED] 0x5692 (DG2)
[08:38:31] [PASSED] 0x56A5 (DG2)
[08:38:31] [PASSED] 0x56A6 (DG2)
[08:38:31] [PASSED] 0x56B0 (DG2)
[08:38:31] [PASSED] 0x56B1 (DG2)
[08:38:31] [PASSED] 0x56BA (DG2)
[08:38:31] [PASSED] 0x56BB (DG2)
[08:38:31] [PASSED] 0x56BC (DG2)
[08:38:31] [PASSED] 0x56BD (DG2)
[08:38:31] [PASSED] 0x5693 (DG2)
[08:38:31] [PASSED] 0x5694 (DG2)
[08:38:31] [PASSED] 0x5695 (DG2)
[08:38:31] [PASSED] 0x56A3 (DG2)
[08:38:31] [PASSED] 0x56A4 (DG2)
[08:38:31] [PASSED] 0x56B2 (DG2)
[08:38:31] [PASSED] 0x56B3 (DG2)
[08:38:31] [PASSED] 0x5696 (DG2)
[08:38:31] [PASSED] 0x5697 (DG2)
[08:38:31] [PASSED] 0xB69 (PVC)
[08:38:31] [PASSED] 0xB6E (PVC)
[08:38:31] [PASSED] 0xBD4 (PVC)
[08:38:31] [PASSED] 0xBD5 (PVC)
[08:38:31] [PASSED] 0xBD6 (PVC)
[08:38:31] [PASSED] 0xBD7 (PVC)
[08:38:31] [PASSED] 0xBD8 (PVC)
[08:38:31] [PASSED] 0xBD9 (PVC)
[08:38:31] [PASSED] 0xBDA (PVC)
[08:38:31] [PASSED] 0xBDB (PVC)
[08:38:31] [PASSED] 0xBE0 (PVC)
[08:38:31] [PASSED] 0xBE1 (PVC)
[08:38:31] [PASSED] 0xBE5 (PVC)
[08:38:31] [PASSED] 0x7D40 (METEORLAKE)
[08:38:31] [PASSED] 0x7D45 (METEORLAKE)
[08:38:31] [PASSED] 0x7D55 (METEORLAKE)
[08:38:31] [PASSED] 0x7D60 (METEORLAKE)
[08:38:31] [PASSED] 0x7DD5 (METEORLAKE)
[08:38:31] [PASSED] 0x6420 (LUNARLAKE)
[08:38:31] [PASSED] 0x64A0 (LUNARLAKE)
[08:38:31] [PASSED] 0x64B0 (LUNARLAKE)
[08:38:31] [PASSED] 0xE202 (BATTLEMAGE)
[08:38:31] [PASSED] 0xE209 (BATTLEMAGE)
[08:38:31] [PASSED] 0xE20B (BATTLEMAGE)
[08:38:31] [PASSED] 0xE20C (BATTLEMAGE)
[08:38:31] [PASSED] 0xE20D (BATTLEMAGE)
[08:38:31] [PASSED] 0xE210 (BATTLEMAGE)
[08:38:31] [PASSED] 0xE211 (BATTLEMAGE)
[08:38:31] [PASSED] 0xE212 (BATTLEMAGE)
[08:38:31] [PASSED] 0xE216 (BATTLEMAGE)
[08:38:31] [PASSED] 0xE220 (BATTLEMAGE)
[08:38:31] [PASSED] 0xE221 (BATTLEMAGE)
[08:38:31] [PASSED] 0xE222 (BATTLEMAGE)
[08:38:31] [PASSED] 0xE223 (BATTLEMAGE)
[08:38:31] [PASSED] 0xB080 (PANTHERLAKE)
[08:38:31] [PASSED] 0xB081 (PANTHERLAKE)
[08:38:31] [PASSED] 0xB082 (PANTHERLAKE)
[08:38:31] [PASSED] 0xB083 (PANTHERLAKE)
[08:38:31] [PASSED] 0xB084 (PANTHERLAKE)
[08:38:31] [PASSED] 0xB085 (PANTHERLAKE)
[08:38:31] [PASSED] 0xB086 (PANTHERLAKE)
[08:38:31] [PASSED] 0xB087 (PANTHERLAKE)
[08:38:31] [PASSED] 0xB08F (PANTHERLAKE)
[08:38:31] [PASSED] 0xB090 (PANTHERLAKE)
[08:38:31] [PASSED] 0xB0A0 (PANTHERLAKE)
[08:38:31] [PASSED] 0xB0B0 (PANTHERLAKE)
[08:38:31] [PASSED] 0xFD80 (PANTHERLAKE)
[08:38:31] [PASSED] 0xFD81 (PANTHERLAKE)
[08:38:31] [PASSED] 0xD740 (NOVALAKE_S)
[08:38:31] [PASSED] 0xD741 (NOVALAKE_S)
[08:38:31] [PASSED] 0xD742 (NOVALAKE_S)
[08:38:31] [PASSED] 0xD743 (NOVALAKE_S)
[08:38:31] [PASSED] 0xD744 (NOVALAKE_S)
[08:38:31] [PASSED] 0xD745 (NOVALAKE_S)
[08:38:31] [PASSED] 0x674C (CRESCENTISLAND)
[08:38:31] [PASSED] 0xD750 (NOVALAKE_P)
[08:38:31] [PASSED] 0xD751 (NOVALAKE_P)
[08:38:31] [PASSED] 0xD752 (NOVALAKE_P)
[08:38:31] [PASSED] 0xD753 (NOVALAKE_P)
[08:38:31] [PASSED] 0xD754 (NOVALAKE_P)
[08:38:31] [PASSED] 0xD755 (NOVALAKE_P)
[08:38:31] [PASSED] 0xD756 (NOVALAKE_P)
[08:38:31] [PASSED] 0xD757 (NOVALAKE_P)
[08:38:31] [PASSED] 0xD75F (NOVALAKE_P)
[08:38:31] =============== [PASSED] check_platform_desc ===============
[08:38:31] ===================== [PASSED] xe_pci ======================
[08:38:31] =================== xe_rtp (2 subtests) ====================
[08:38:31] =============== xe_rtp_process_to_sr_tests  ================
[08:38:31] [PASSED] coalesce-same-reg
[08:38:31] [PASSED] no-match-no-add
[08:38:31] [PASSED] match-or
[08:38:31] [PASSED] match-or-xfail
[08:38:31] [PASSED] no-match-no-add-multiple-rules
[08:38:31] [PASSED] two-regs-two-entries
[08:38:31] [PASSED] clr-one-set-other
[08:38:31] [PASSED] set-field
[08:38:31] [PASSED] conflict-duplicate
stty: 'standard input': Inappropriate ioctl for device
[08:38:31] [PASSED] conflict-not-disjoint
[08:38:31] [PASSED] conflict-reg-type
[08:38:31] =========== [PASSED] xe_rtp_process_to_sr_tests ============
[08:38:31] ================== xe_rtp_process_tests  ===================
[08:38:31] [PASSED] active1
[08:38:31] [PASSED] active2
[08:38:31] [PASSED] active-inactive
[08:38:31] [PASSED] inactive-active
[08:38:31] [PASSED] inactive-1st_or_active-inactive
[08:38:31] [PASSED] inactive-2nd_or_active-inactive
[08:38:31] [PASSED] inactive-last_or_active-inactive
[08:38:31] [PASSED] inactive-no_or_active-inactive
[08:38:31] ============== [PASSED] xe_rtp_process_tests ===============
[08:38:31] ===================== [PASSED] xe_rtp ======================
[08:38:31] ==================== xe_wa (1 subtest) =====================
[08:38:31] ======================== xe_wa_gt  =========================
[08:38:31] [PASSED] TIGERLAKE B0
[08:38:31] [PASSED] DG1 A0
[08:38:31] [PASSED] DG1 B0
[08:38:31] [PASSED] ALDERLAKE_S A0
[08:38:31] [PASSED] ALDERLAKE_S B0
[08:38:31] [PASSED] ALDERLAKE_S C0
[08:38:31] [PASSED] ALDERLAKE_S D0
[08:38:31] [PASSED] ALDERLAKE_P A0
[08:38:31] [PASSED] ALDERLAKE_P B0
[08:38:31] [PASSED] ALDERLAKE_P C0
[08:38:31] [PASSED] ALDERLAKE_S RPLS D0
[08:38:31] [PASSED] ALDERLAKE_P RPLU E0
[08:38:31] [PASSED] DG2 G10 C0
[08:38:31] [PASSED] DG2 G11 B1
[08:38:31] [PASSED] DG2 G12 A1
[08:38:31] [PASSED] METEORLAKE 12.70(Xe_LPG) A0 13.00(Xe_LPM+) A0
[08:38:31] [PASSED] METEORLAKE 12.71(Xe_LPG) A0 13.00(Xe_LPM+) A0
[08:38:31] [PASSED] METEORLAKE 12.74(Xe_LPG+) A0 13.00(Xe_LPM+) A0
[08:38:31] [PASSED] LUNARLAKE 20.04(Xe2_LPG) A0 20.00(Xe2_LPM) A0
[08:38:31] [PASSED] LUNARLAKE 20.04(Xe2_LPG) B0 20.00(Xe2_LPM) A0
[08:38:31] [PASSED] BATTLEMAGE 20.01(Xe2_HPG) A0 13.01(Xe2_HPM) A1
[08:38:31] [PASSED] PANTHERLAKE 30.00(Xe3_LPG) A0 30.00(Xe3_LPM) A0
[08:38:31] ==================== [PASSED] xe_wa_gt =====================
[08:38:31] ====================== [PASSED] xe_wa ======================
[08:38:31] ============================================================
[08:38:31] Testing complete. Ran 597 tests: passed: 579, skipped: 18
[08:38:31] Elapsed time: 36.134s total, 4.132s configuring, 31.385s building, 0.598s running

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

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

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



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

* ✓ Xe.CI.BAT: success for drm/i915: Make sure CRTC vs. pipe reordering is safe (rev2)
  2026-04-08 15:57 [PATCH 0/2] drm/i915: Make sure CRTC vs. pipe reordering is safe Ville Syrjala
                   ` (5 preceding siblings ...)
  2026-04-10  8:39 ` ✓ CI.KUnit: success " Patchwork
@ 2026-04-10  9:18 ` Patchwork
  2026-04-10 15:55 ` ✗ Xe.CI.FULL: failure " Patchwork
  7 siblings, 0 replies; 12+ messages in thread
From: Patchwork @ 2026-04-10  9:18 UTC (permalink / raw)
  To: Ville Syrjälä; +Cc: intel-xe

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

== Series Details ==

Series: drm/i915: Make sure CRTC vs. pipe reordering is safe (rev2)
URL   : https://patchwork.freedesktop.org/series/164557/
State : success

== Summary ==

CI Bug Log - changes from xe-4880-2425d43313af1657c01c53cdc3092d67870bd51f_BAT -> xe-pw-164557v2_BAT
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  

Participating hosts (14 -> 14)
------------------------------

  No changes in participating hosts

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

  Here are the changes found in xe-pw-164557v2_BAT that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@xe_waitfence@engine:
    - bat-dg2-oem2:       [PASS][1] -> [FAIL][2] ([Intel XE#6519])
   [1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4880-2425d43313af1657c01c53cdc3092d67870bd51f/bat-dg2-oem2/igt@xe_waitfence@engine.html
   [2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164557v2/bat-dg2-oem2/igt@xe_waitfence@engine.html

  
  [Intel XE#6519]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6519


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

  * Linux: xe-4880-2425d43313af1657c01c53cdc3092d67870bd51f -> xe-pw-164557v2

  IGT_8852: 8852
  xe-4880-2425d43313af1657c01c53cdc3092d67870bd51f: 2425d43313af1657c01c53cdc3092d67870bd51f
  xe-pw-164557v2: 164557v2

== Logs ==

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

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

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

* ✗ Xe.CI.FULL: failure for drm/i915: Make sure CRTC vs. pipe reordering is safe (rev2)
  2026-04-08 15:57 [PATCH 0/2] drm/i915: Make sure CRTC vs. pipe reordering is safe Ville Syrjala
                   ` (6 preceding siblings ...)
  2026-04-10  9:18 ` ✓ Xe.CI.BAT: " Patchwork
@ 2026-04-10 15:55 ` Patchwork
  7 siblings, 0 replies; 12+ messages in thread
From: Patchwork @ 2026-04-10 15:55 UTC (permalink / raw)
  To: Ville Syrjala; +Cc: intel-xe

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

== Series Details ==

Series: drm/i915: Make sure CRTC vs. pipe reordering is safe (rev2)
URL   : https://patchwork.freedesktop.org/series/164557/
State : failure

== Summary ==

CI Bug Log - changes from xe-4880-2425d43313af1657c01c53cdc3092d67870bd51f_FULL -> xe-pw-164557v2_FULL
====================================================

Summary
-------

  **FAILURE**

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

  

Participating hosts (2 -> 2)
------------------------------

  No changes in participating hosts

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

  Here are the unknown changes that may have been introduced in xe-pw-164557v2_FULL:

### IGT changes ###

#### Possible regressions ####

  * igt@kms_plane_lowres@tiling-4:
    - shard-bmg:          [PASS][1] -> [ABORT][2]
   [1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4880-2425d43313af1657c01c53cdc3092d67870bd51f/shard-bmg-6/igt@kms_plane_lowres@tiling-4.html
   [2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164557v2/shard-bmg-5/igt@kms_plane_lowres@tiling-4.html

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

  Here are the changes found in xe-pw-164557v2_FULL that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@kms_async_flips@alternate-sync-async-flip-atomic:
    - shard-bmg:          [PASS][3] -> [FAIL][4] ([Intel XE#3718] / [Intel XE#6078]) +1 other test fail
   [3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4880-2425d43313af1657c01c53cdc3092d67870bd51f/shard-bmg-4/igt@kms_async_flips@alternate-sync-async-flip-atomic.html
   [4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164557v2/shard-bmg-10/igt@kms_async_flips@alternate-sync-async-flip-atomic.html

  * igt@kms_atomic_transition@plane-all-modeset-transition-fencing-internal-panels:
    - shard-bmg:          NOTRUN -> [SKIP][5] ([Intel XE#2370])
   [5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164557v2/shard-bmg-8/igt@kms_atomic_transition@plane-all-modeset-transition-fencing-internal-panels.html

  * igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-180-hflip-async-flip:
    - shard-lnl:          NOTRUN -> [SKIP][6] ([Intel XE#3658] / [Intel XE#7360])
   [6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164557v2/shard-lnl-6/igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-180-hflip-async-flip.html

  * igt@kms_big_fb@y-tiled-16bpp-rotate-0:
    - shard-bmg:          NOTRUN -> [SKIP][7] ([Intel XE#1124]) +1 other test skip
   [7]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164557v2/shard-bmg-10/igt@kms_big_fb@y-tiled-16bpp-rotate-0.html

  * igt@kms_big_fb@y-tiled-addfb-size-overflow:
    - shard-bmg:          NOTRUN -> [SKIP][8] ([Intel XE#610] / [Intel XE#7387])
   [8]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164557v2/shard-bmg-10/igt@kms_big_fb@y-tiled-addfb-size-overflow.html

  * igt@kms_bw@connected-linear-tiling-3-displays-2160x1440p:
    - shard-lnl:          NOTRUN -> [SKIP][9] ([Intel XE#7675] / [Intel XE#7679])
   [9]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164557v2/shard-lnl-6/igt@kms_bw@connected-linear-tiling-3-displays-2160x1440p.html

  * igt@kms_bw@linear-tiling-3-displays-2160x1440p:
    - shard-bmg:          NOTRUN -> [SKIP][10] ([Intel XE#367] / [Intel XE#7354])
   [10]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164557v2/shard-bmg-10/igt@kms_bw@linear-tiling-3-displays-2160x1440p.html

  * igt@kms_ccs@bad-pixel-format-y-tiled-gen12-rc-ccs-cc:
    - shard-bmg:          NOTRUN -> [SKIP][11] ([Intel XE#2887]) +4 other tests skip
   [11]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164557v2/shard-bmg-10/igt@kms_ccs@bad-pixel-format-y-tiled-gen12-rc-ccs-cc.html

  * igt@kms_ccs@crc-primary-basic-4-tiled-lnl-ccs:
    - shard-bmg:          NOTRUN -> [SKIP][12] ([Intel XE#2652]) +8 other tests skip
   [12]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164557v2/shard-bmg-10/igt@kms_ccs@crc-primary-basic-4-tiled-lnl-ccs.html

  * igt@kms_ccs@crc-primary-rotation-180-4-tiled-mtl-rc-ccs:
    - shard-lnl:          NOTRUN -> [SKIP][13] ([Intel XE#2887])
   [13]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164557v2/shard-lnl-6/igt@kms_ccs@crc-primary-rotation-180-4-tiled-mtl-rc-ccs.html

  * igt@kms_ccs@crc-primary-suspend-y-tiled-gen12-mc-ccs:
    - shard-bmg:          NOTRUN -> [SKIP][14] ([Intel XE#3432])
   [14]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164557v2/shard-bmg-6/igt@kms_ccs@crc-primary-suspend-y-tiled-gen12-mc-ccs.html

  * igt@kms_chamelium_color@ctm-0-25:
    - shard-bmg:          NOTRUN -> [SKIP][15] ([Intel XE#2325] / [Intel XE#7358])
   [15]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164557v2/shard-bmg-10/igt@kms_chamelium_color@ctm-0-25.html

  * igt@kms_chamelium_edid@hdmi-edid-change-during-hibernate:
    - shard-lnl:          NOTRUN -> [SKIP][16] ([Intel XE#373])
   [16]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164557v2/shard-lnl-6/igt@kms_chamelium_edid@hdmi-edid-change-during-hibernate.html

  * igt@kms_chamelium_hpd@hdmi-hpd-after-suspend:
    - shard-bmg:          NOTRUN -> [SKIP][17] ([Intel XE#2252]) +3 other tests skip
   [17]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164557v2/shard-bmg-8/igt@kms_chamelium_hpd@hdmi-hpd-after-suspend.html

  * igt@kms_content_protection@atomic-hdcp14:
    - shard-lnl:          NOTRUN -> [SKIP][18] ([Intel XE#7642])
   [18]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164557v2/shard-lnl-6/igt@kms_content_protection@atomic-hdcp14.html

  * igt@kms_content_protection@dp-mst-lic-type-0-hdcp14:
    - shard-bmg:          NOTRUN -> [SKIP][19] ([Intel XE#6974])
   [19]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164557v2/shard-bmg-10/igt@kms_content_protection@dp-mst-lic-type-0-hdcp14.html

  * igt@kms_content_protection@dp-mst-type-1:
    - shard-bmg:          NOTRUN -> [SKIP][20] ([Intel XE#2390] / [Intel XE#6974])
   [20]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164557v2/shard-bmg-6/igt@kms_content_protection@dp-mst-type-1.html

  * igt@kms_content_protection@uevent-hdcp14:
    - shard-bmg:          NOTRUN -> [FAIL][21] ([Intel XE#6707] / [Intel XE#7439]) +1 other test fail
   [21]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164557v2/shard-bmg-6/igt@kms_content_protection@uevent-hdcp14.html

  * igt@kms_cursor_crc@cursor-rapid-movement-256x85:
    - shard-bmg:          NOTRUN -> [SKIP][22] ([Intel XE#2320])
   [22]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164557v2/shard-bmg-10/igt@kms_cursor_crc@cursor-rapid-movement-256x85.html

  * igt@kms_cursor_legacy@cursora-vs-flipb-atomic:
    - shard-lnl:          NOTRUN -> [SKIP][23] ([Intel XE#309] / [Intel XE#7343])
   [23]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164557v2/shard-lnl-6/igt@kms_cursor_legacy@cursora-vs-flipb-atomic.html

  * igt@kms_dp_link_training@uhbr-sst:
    - shard-lnl:          NOTRUN -> [SKIP][24] ([Intel XE#4354] / [Intel XE#5870])
   [24]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164557v2/shard-lnl-6/igt@kms_dp_link_training@uhbr-sst.html

  * igt@kms_dsc@dsc-with-formats:
    - shard-bmg:          NOTRUN -> [SKIP][25] ([Intel XE#2244])
   [25]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164557v2/shard-bmg-10/igt@kms_dsc@dsc-with-formats.html

  * igt@kms_feature_discovery@dp-mst:
    - shard-bmg:          NOTRUN -> [SKIP][26] ([Intel XE#2375])
   [26]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164557v2/shard-bmg-10/igt@kms_feature_discovery@dp-mst.html

  * igt@kms_flip@2x-wf_vblank-ts-check:
    - shard-lnl:          NOTRUN -> [SKIP][27] ([Intel XE#1421]) +1 other test skip
   [27]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164557v2/shard-lnl-6/igt@kms_flip@2x-wf_vblank-ts-check.html

  * igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-downscaling:
    - shard-bmg:          NOTRUN -> [SKIP][28] ([Intel XE#7178] / [Intel XE#7351])
   [28]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164557v2/shard-bmg-6/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-downscaling.html

  * igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling:
    - shard-lnl:          NOTRUN -> [SKIP][29] ([Intel XE#7178] / [Intel XE#7351]) +1 other test skip
   [29]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164557v2/shard-lnl-6/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling.html

  * igt@kms_frontbuffer_tracking@drrs-2p-primscrn-indfb-plflip-blt:
    - shard-lnl:          NOTRUN -> [SKIP][30] ([Intel XE#656]) +5 other tests skip
   [30]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164557v2/shard-lnl-6/igt@kms_frontbuffer_tracking@drrs-2p-primscrn-indfb-plflip-blt.html

  * igt@kms_frontbuffer_tracking@drrs-rgb101010-draw-blt:
    - shard-lnl:          NOTRUN -> [SKIP][31] ([Intel XE#6312] / [Intel XE#651]) +1 other test skip
   [31]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164557v2/shard-lnl-6/igt@kms_frontbuffer_tracking@drrs-rgb101010-draw-blt.html

  * igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-onoff:
    - shard-bmg:          NOTRUN -> [SKIP][32] ([Intel XE#4141]) +5 other tests skip
   [32]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164557v2/shard-bmg-6/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-onoff.html

  * igt@kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-cur-indfb-move:
    - shard-bmg:          NOTRUN -> [SKIP][33] ([Intel XE#2311]) +5 other tests skip
   [33]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164557v2/shard-bmg-10/igt@kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-cur-indfb-move.html

  * igt@kms_frontbuffer_tracking@psr-2p-scndscrn-shrfb-pgflip-blt:
    - shard-bmg:          NOTRUN -> [SKIP][34] ([Intel XE#2313]) +7 other tests skip
   [34]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164557v2/shard-bmg-6/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-shrfb-pgflip-blt.html

  * igt@kms_joiner@basic-ultra-joiner:
    - shard-bmg:          NOTRUN -> [SKIP][35] ([Intel XE#6911] / [Intel XE#7378])
   [35]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164557v2/shard-bmg-6/igt@kms_joiner@basic-ultra-joiner.html

  * igt@kms_multipipe_modeset@basic-max-pipe-crc-check:
    - shard-lnl:          NOTRUN -> [SKIP][36] ([Intel XE#7591])
   [36]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164557v2/shard-lnl-6/igt@kms_multipipe_modeset@basic-max-pipe-crc-check.html

  * igt@kms_pipe_stress@stress-xrgb8888-yftiled:
    - shard-lnl:          NOTRUN -> [SKIP][37] ([Intel XE#6912] / [Intel XE#7375])
   [37]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164557v2/shard-lnl-6/igt@kms_pipe_stress@stress-xrgb8888-yftiled.html

  * igt@kms_plane@pixel-format-y-tiled-gen12-mc-ccs-modifier-source-clamping:
    - shard-bmg:          NOTRUN -> [SKIP][38] ([Intel XE#7283])
   [38]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164557v2/shard-bmg-10/igt@kms_plane@pixel-format-y-tiled-gen12-mc-ccs-modifier-source-clamping.html

  * igt@kms_plane_lowres@tiling-4@pipe-d-hdmi-a-3:
    - shard-bmg:          [PASS][39] -> [ABORT][40] ([Intel XE#7200])
   [39]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4880-2425d43313af1657c01c53cdc3092d67870bd51f/shard-bmg-6/igt@kms_plane_lowres@tiling-4@pipe-d-hdmi-a-3.html
   [40]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164557v2/shard-bmg-5/igt@kms_plane_lowres@tiling-4@pipe-d-hdmi-a-3.html

  * igt@kms_plane_multiple@tiling-yf:
    - shard-lnl:          NOTRUN -> [SKIP][41] ([Intel XE#5020] / [Intel XE#7348])
   [41]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164557v2/shard-lnl-6/igt@kms_plane_multiple@tiling-yf.html

  * igt@kms_pm_rpm@modeset-lpsp-stress:
    - shard-bmg:          NOTRUN -> [SKIP][42] ([Intel XE#1439] / [Intel XE#3141] / [Intel XE#7383] / [Intel XE#836])
   [42]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164557v2/shard-bmg-10/igt@kms_pm_rpm@modeset-lpsp-stress.html

  * igt@kms_psr2_sf@pr-overlay-primary-update-sf-dmg-area:
    - shard-lnl:          NOTRUN -> [SKIP][43] ([Intel XE#2893] / [Intel XE#7304])
   [43]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164557v2/shard-lnl-6/igt@kms_psr2_sf@pr-overlay-primary-update-sf-dmg-area.html

  * igt@kms_psr2_sf@pr-primary-plane-update-sf-dmg-area:
    - shard-bmg:          NOTRUN -> [SKIP][44] ([Intel XE#1489]) +3 other tests skip
   [44]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164557v2/shard-bmg-6/igt@kms_psr2_sf@pr-primary-plane-update-sf-dmg-area.html

  * igt@kms_psr2_su@page_flip-xrgb8888:
    - shard-bmg:          NOTRUN -> [SKIP][45] ([Intel XE#2387] / [Intel XE#7429])
   [45]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164557v2/shard-bmg-6/igt@kms_psr2_su@page_flip-xrgb8888.html

  * igt@kms_psr@fbc-psr2-sprite-render:
    - shard-bmg:          NOTRUN -> [SKIP][46] ([Intel XE#2234] / [Intel XE#2850]) +3 other tests skip
   [46]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164557v2/shard-bmg-10/igt@kms_psr@fbc-psr2-sprite-render.html

  * igt@kms_psr@fbc-psr2-suspend:
    - shard-lnl:          NOTRUN -> [SKIP][47] ([Intel XE#1406] / [Intel XE#7345])
   [47]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164557v2/shard-lnl-6/igt@kms_psr@fbc-psr2-suspend.html

  * igt@kms_psr@fbc-psr2-suspend@edp-1:
    - shard-lnl:          NOTRUN -> [SKIP][48] ([Intel XE#1406] / [Intel XE#4609])
   [48]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164557v2/shard-lnl-6/igt@kms_psr@fbc-psr2-suspend@edp-1.html

  * igt@kms_rotation_crc@primary-rotation-270:
    - shard-lnl:          NOTRUN -> [SKIP][49] ([Intel XE#3414] / [Intel XE#3904] / [Intel XE#7342]) +1 other test skip
   [49]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164557v2/shard-lnl-6/igt@kms_rotation_crc@primary-rotation-270.html

  * igt@kms_vrr@cmrr@pipe-a-edp-1:
    - shard-lnl:          [PASS][50] -> [FAIL][51] ([Intel XE#4459]) +1 other test fail
   [50]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4880-2425d43313af1657c01c53cdc3092d67870bd51f/shard-lnl-3/igt@kms_vrr@cmrr@pipe-a-edp-1.html
   [51]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164557v2/shard-lnl-5/igt@kms_vrr@cmrr@pipe-a-edp-1.html

  * igt@xe_eudebug@basic-close:
    - shard-lnl:          NOTRUN -> [SKIP][52] ([Intel XE#7636]) +1 other test skip
   [52]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164557v2/shard-lnl-6/igt@xe_eudebug@basic-close.html

  * igt@xe_eudebug_online@pagefault-read-stress:
    - shard-bmg:          NOTRUN -> [SKIP][53] ([Intel XE#7636]) +4 other tests skip
   [53]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164557v2/shard-bmg-10/igt@xe_eudebug_online@pagefault-read-stress.html

  * igt@xe_evict@evict-beng-cm-threads-small:
    - shard-lnl:          NOTRUN -> [SKIP][54] ([Intel XE#6540] / [Intel XE#688]) +1 other test skip
   [54]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164557v2/shard-lnl-6/igt@xe_evict@evict-beng-cm-threads-small.html

  * igt@xe_exec_balancer@twice-virtual-userptr:
    - shard-lnl:          NOTRUN -> [SKIP][55] ([Intel XE#7482]) +1 other test skip
   [55]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164557v2/shard-lnl-6/igt@xe_exec_balancer@twice-virtual-userptr.html

  * igt@xe_exec_basic@multigpu-no-exec-userptr-rebind:
    - shard-bmg:          NOTRUN -> [SKIP][56] ([Intel XE#2322] / [Intel XE#7372]) +1 other test skip
   [56]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164557v2/shard-bmg-10/igt@xe_exec_basic@multigpu-no-exec-userptr-rebind.html

  * igt@xe_exec_basic@multigpu-once-bindexecqueue-userptr-rebind:
    - shard-lnl:          NOTRUN -> [SKIP][57] ([Intel XE#1392])
   [57]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164557v2/shard-lnl-6/igt@xe_exec_basic@multigpu-once-bindexecqueue-userptr-rebind.html

  * igt@xe_exec_fault_mode@many-multi-queue-userptr-invalidate-prefetch:
    - shard-bmg:          NOTRUN -> [SKIP][58] ([Intel XE#7136]) +3 other tests skip
   [58]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164557v2/shard-bmg-6/igt@xe_exec_fault_mode@many-multi-queue-userptr-invalidate-prefetch.html

  * igt@xe_exec_fault_mode@twice-multi-queue-userptr-rebind-imm:
    - shard-lnl:          NOTRUN -> [SKIP][59] ([Intel XE#7136]) +1 other test skip
   [59]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164557v2/shard-lnl-6/igt@xe_exec_fault_mode@twice-multi-queue-userptr-rebind-imm.html

  * igt@xe_exec_multi_queue@many-queues-preempt-mode-userptr-invalidate:
    - shard-bmg:          NOTRUN -> [SKIP][60] ([Intel XE#6874]) +4 other tests skip
   [60]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164557v2/shard-bmg-10/igt@xe_exec_multi_queue@many-queues-preempt-mode-userptr-invalidate.html

  * igt@xe_exec_multi_queue@max-queues-preempt-mode-dyn-priority-smem:
    - shard-lnl:          NOTRUN -> [SKIP][61] ([Intel XE#6874]) +3 other tests skip
   [61]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164557v2/shard-lnl-6/igt@xe_exec_multi_queue@max-queues-preempt-mode-dyn-priority-smem.html

  * igt@xe_exec_threads@threads-multi-queue-cm-fd-basic:
    - shard-lnl:          NOTRUN -> [SKIP][62] ([Intel XE#7138])
   [62]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164557v2/shard-lnl-6/igt@xe_exec_threads@threads-multi-queue-cm-fd-basic.html

  * igt@xe_exec_threads@threads-multi-queue-cm-shared-vm-userptr-invalidate:
    - shard-bmg:          NOTRUN -> [SKIP][63] ([Intel XE#7138]) +1 other test skip
   [63]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164557v2/shard-bmg-6/igt@xe_exec_threads@threads-multi-queue-cm-shared-vm-userptr-invalidate.html

  * igt@xe_fault_injection@inject-fault-probe-function-xe_mmio_probe_early:
    - shard-bmg:          [PASS][64] -> [ABORT][65] ([Intel XE#7578]) +1 other test abort
   [64]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4880-2425d43313af1657c01c53cdc3092d67870bd51f/shard-bmg-2/igt@xe_fault_injection@inject-fault-probe-function-xe_mmio_probe_early.html
   [65]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164557v2/shard-bmg-1/igt@xe_fault_injection@inject-fault-probe-function-xe_mmio_probe_early.html

  * igt@xe_multigpu_svm@mgpu-latency-basic:
    - shard-lnl:          NOTRUN -> [SKIP][66] ([Intel XE#6964])
   [66]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164557v2/shard-lnl-6/igt@xe_multigpu_svm@mgpu-latency-basic.html

  * igt@xe_multigpu_svm@mgpu-migration-basic:
    - shard-bmg:          NOTRUN -> [SKIP][67] ([Intel XE#6964])
   [67]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164557v2/shard-bmg-10/igt@xe_multigpu_svm@mgpu-migration-basic.html

  * igt@xe_pat@pat-index-xelp:
    - shard-bmg:          NOTRUN -> [SKIP][68] ([Intel XE#2245] / [Intel XE#7590])
   [68]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164557v2/shard-bmg-6/igt@xe_pat@pat-index-xelp.html

  * igt@xe_pm@d3cold-multiple-execs:
    - shard-bmg:          NOTRUN -> [SKIP][69] ([Intel XE#2284] / [Intel XE#7370])
   [69]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164557v2/shard-bmg-10/igt@xe_pm@d3cold-multiple-execs.html

  * igt@xe_prefetch_fault@prefetch-fault:
    - shard-bmg:          NOTRUN -> [SKIP][70] ([Intel XE#7599])
   [70]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164557v2/shard-bmg-6/igt@xe_prefetch_fault@prefetch-fault.html

  * igt@xe_query@multigpu-query-invalid-uc-fw-version-mbz:
    - shard-bmg:          NOTRUN -> [SKIP][71] ([Intel XE#944])
   [71]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164557v2/shard-bmg-6/igt@xe_query@multigpu-query-invalid-uc-fw-version-mbz.html

  * igt@xe_query@multigpu-query-topology-l3-bank-mask:
    - shard-lnl:          NOTRUN -> [SKIP][72] ([Intel XE#944]) +1 other test skip
   [72]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164557v2/shard-lnl-6/igt@xe_query@multigpu-query-topology-l3-bank-mask.html

  * igt@xe_sriov_flr@flr-each-isolation:
    - shard-lnl:          NOTRUN -> [SKIP][73] ([Intel XE#3342])
   [73]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164557v2/shard-lnl-6/igt@xe_sriov_flr@flr-each-isolation.html

  
#### Possible fixes ####

  * igt@kms_cursor_legacy@cursor-vs-flip-atomic-transitions-varying-size:
    - shard-bmg:          [DMESG-WARN][74] ([Intel XE#5354]) -> [PASS][75]
   [74]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4880-2425d43313af1657c01c53cdc3092d67870bd51f/shard-bmg-7/igt@kms_cursor_legacy@cursor-vs-flip-atomic-transitions-varying-size.html
   [75]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164557v2/shard-bmg-2/igt@kms_cursor_legacy@cursor-vs-flip-atomic-transitions-varying-size.html

  * igt@kms_vrr@flipline:
    - shard-lnl:          [FAIL][76] ([Intel XE#4227] / [Intel XE#7397]) -> [PASS][77] +1 other test pass
   [76]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4880-2425d43313af1657c01c53cdc3092d67870bd51f/shard-lnl-8/igt@kms_vrr@flipline.html
   [77]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164557v2/shard-lnl-4/igt@kms_vrr@flipline.html

  * igt@xe_exec_system_allocator@fault-threads-benchmark:
    - shard-bmg:          [FAIL][78] -> [PASS][79]
   [78]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4880-2425d43313af1657c01c53cdc3092d67870bd51f/shard-bmg-7/igt@xe_exec_system_allocator@fault-threads-benchmark.html
   [79]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164557v2/shard-bmg-2/igt@xe_exec_system_allocator@fault-threads-benchmark.html

  * igt@xe_fault_injection@vm-create-fail-xe_vm_create_scratch:
    - shard-bmg:          [ABORT][80] ([Intel XE#7578]) -> [PASS][81]
   [80]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4880-2425d43313af1657c01c53cdc3092d67870bd51f/shard-bmg-1/igt@xe_fault_injection@vm-create-fail-xe_vm_create_scratch.html
   [81]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164557v2/shard-bmg-10/igt@xe_fault_injection@vm-create-fail-xe_vm_create_scratch.html

  * igt@xe_pmu@gt-frequency:
    - shard-lnl:          [FAIL][82] -> [PASS][83] +1 other test pass
   [82]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4880-2425d43313af1657c01c53cdc3092d67870bd51f/shard-lnl-2/igt@xe_pmu@gt-frequency.html
   [83]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164557v2/shard-lnl-4/igt@xe_pmu@gt-frequency.html

  
#### Warnings ####

  * igt@kms_tiled_display@basic-test-pattern:
    - shard-bmg:          [FAIL][84] ([Intel XE#1729] / [Intel XE#7424]) -> [SKIP][85] ([Intel XE#2426] / [Intel XE#5848])
   [84]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4880-2425d43313af1657c01c53cdc3092d67870bd51f/shard-bmg-6/igt@kms_tiled_display@basic-test-pattern.html
   [85]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164557v2/shard-bmg-5/igt@kms_tiled_display@basic-test-pattern.html

  * igt@kms_tiled_display@basic-test-pattern-with-chamelium:
    - shard-bmg:          [SKIP][86] ([Intel XE#2509] / [Intel XE#7437]) -> [SKIP][87] ([Intel XE#2426] / [Intel XE#5848])
   [86]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4880-2425d43313af1657c01c53cdc3092d67870bd51f/shard-bmg-4/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html
   [87]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-164557v2/shard-bmg-3/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html

  
  [Intel XE#1124]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1124
  [Intel XE#1392]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1392
  [Intel XE#1406]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1406
  [Intel XE#1421]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1421
  [Intel XE#1439]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1439
  [Intel XE#1489]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1489
  [Intel XE#1729]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1729
  [Intel XE#2234]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2234
  [Intel XE#2244]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2244
  [Intel XE#2245]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2245
  [Intel XE#2252]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2252
  [Intel XE#2284]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2284
  [Intel XE#2311]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2311
  [Intel XE#2313]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2313
  [Intel XE#2320]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2320
  [Intel XE#2322]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2322
  [Intel XE#2325]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2325
  [Intel XE#2370]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2370
  [Intel XE#2375]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2375
  [Intel XE#2387]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2387
  [Intel XE#2390]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2390
  [Intel XE#2426]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2426
  [Intel XE#2509]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2509
  [Intel XE#2652]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2652
  [Intel XE#2850]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2850
  [Intel XE#2887]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2887
  [Intel XE#2893]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2893
  [Intel XE#309]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/309
  [Intel XE#3141]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3141
  [Intel XE#3342]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3342
  [Intel XE#3414]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3414
  [Intel XE#3432]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3432
  [Intel XE#3658]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3658
  [Intel XE#367]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/367
  [Intel XE#3718]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3718
  [Intel XE#373]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/373
  [Intel XE#3904]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3904
  [Intel XE#4141]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4141
  [Intel XE#4227]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4227
  [Intel XE#4354]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4354
  [Intel XE#4459]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4459
  [Intel XE#4609]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4609
  [Intel XE#5020]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5020
  [Intel XE#5354]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5354
  [Intel XE#5848]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5848
  [Intel XE#5870]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5870
  [Intel XE#6078]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6078
  [Intel XE#610]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/610
  [Intel XE#6312]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6312
  [Intel XE#651]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/651
  [Intel XE#6540]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6540
  [Intel XE#656]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/656
  [Intel XE#6707]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6707
  [Intel XE#6874]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6874
  [Intel XE#688]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/688
  [Intel XE#6911]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6911
  [Intel XE#6912]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6912
  [Intel XE#6964]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6964
  [Intel XE#6974]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6974
  [Intel XE#7136]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7136
  [Intel XE#7138]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7138
  [Intel XE#7178]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7178
  [Intel XE#7200]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7200
  [Intel XE#7283]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7283
  [Intel XE#7304]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7304
  [Intel XE#7342]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7342
  [Intel XE#7343]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7343
  [Intel XE#7345]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7345
  [Intel XE#7348]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7348
  [Intel XE#7351]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7351
  [Intel XE#7354]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7354
  [Intel XE#7358]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7358
  [Intel XE#7360]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7360
  [Intel XE#7370]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7370
  [Intel XE#7372]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7372
  [Intel XE#7375]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7375
  [Intel XE#7378]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7378
  [Intel XE#7383]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7383
  [Intel XE#7387]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7387
  [Intel XE#7397]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7397
  [Intel XE#7424]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7424
  [Intel XE#7429]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7429
  [Intel XE#7437]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7437
  [Intel XE#7439]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7439
  [Intel XE#7482]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7482
  [Intel XE#7578]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7578
  [Intel XE#7590]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7590
  [Intel XE#7591]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7591
  [Intel XE#7599]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7599
  [Intel XE#7636]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7636
  [Intel XE#7642]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7642
  [Intel XE#7675]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7675
  [Intel XE#7679]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7679
  [Intel XE#836]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/836
  [Intel XE#944]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/944


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

  * Linux: xe-4880-2425d43313af1657c01c53cdc3092d67870bd51f -> xe-pw-164557v2

  IGT_8852: 8852
  xe-4880-2425d43313af1657c01c53cdc3092d67870bd51f: 2425d43313af1657c01c53cdc3092d67870bd51f
  xe-pw-164557v2: 164557v2

== Logs ==

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

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

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

* Re: [PATCH 1/2] drm/i915/joiner: Make joiner "nomodeset" state copy independent of pipe order
  2026-04-08 16:46   ` Jani Nikula
@ 2026-04-13  7:27     ` Jani Nikula
  2026-04-13  7:56       ` Saarinen, Jani
  0 siblings, 1 reply; 12+ messages in thread
From: Jani Nikula @ 2026-04-13  7:27 UTC (permalink / raw)
  To: Ville Syrjala, intel-gfx; +Cc: intel-xe

On Wed, 08 Apr 2026, Jani Nikula <jani.nikula@intel.com> wrote:
> On Wed, 08 Apr 2026, Ville Syrjala <ville.syrjala@linux.intel.com> wrote:
>> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>>
>> Currently the joiner primary->secondary hw state copy still happens from
>> the main compute_config loop alongside the primary uapi->hw state copy.
>> The primary uapi->hw state copy must therefore happen first, or else
>> we'll end up copying stale junk into the secondary.
>>
>> We have a WARN in intel_atomic_check_joiner() to make sure the CRTCs
>> will be walked in the correct order. The plan is to reoder the CRTCs,
>> which would mess up the order, unless we also adjust the iterators
>> to keep the pipe order. The actual plan is to do both, so technically
>> we should be able to just remove the WARN and call it a day.
>>
>> But relying on the iteration order like this is fragile and confusing,
>> so let's move the "nomodeset" joiner state copy into the later loop
>> where the "modeset" state copy is also done. The first loop having
>> completely finished, we are guaranteed to have up to date hw state
>> on the primary when we do the copy to the secondary.
>
> I find the number of loops in the forest of intel_atomic_check*
> functions confusing too. But this looks like progress.
>
> Reviewed-by: Jani Nikula <jani.nikula@intel.com>
>
> I'm wondering about merging this, along with the pipe reordering, to a
> topic branch that could be merged to drm-next at Dave's discretion,
> instead of cherry-picks which might be a bit cumbersome for patches this
> size. So please hold off on merging while I figure this out.

Thanks, I've pushed the set to topic/pipe-reorder, and will be resending
the pipe reordering patch again shortly.

BR,
Jani.

>
>
>>
>> Cc: Jani Nikula <jani.nikula@intel.com>
>> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
>> ---
>>  drivers/gpu/drm/i915/display/intel_display.c | 20 +++++---------------
>>  1 file changed, 5 insertions(+), 15 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
>> index 58a654ca0d20..674a4ece6d0f 100644
>> --- a/drivers/gpu/drm/i915/display/intel_display.c
>> +++ b/drivers/gpu/drm/i915/display/intel_display.c
>> @@ -5914,17 +5914,6 @@ static int intel_atomic_check_joiner(struct intel_atomic_state *state,
>>  			return -EINVAL;
>>  		}
>>  
>> -		/*
>> -		 * The state copy logic assumes the primary crtc gets processed
>> -		 * before the secondary crtc during the main compute_config loop.
>> -		 * This works because the crtcs are created in pipe order,
>> -		 * and the hardware requires primary pipe < secondary pipe as well.
>> -		 * Should that change we need to rethink the logic.
>> -		 */
>> -		if (WARN_ON(drm_crtc_index(&primary_crtc->base) >
>> -			    drm_crtc_index(&secondary_crtc->base)))
>> -			return -EINVAL;
>> -
>>  		drm_dbg_kms(display->drm,
>>  			    "[CRTC:%d:%s] Used as secondary for joiner primary [CRTC:%d:%s]\n",
>>  			    secondary_crtc->base.base.id, secondary_crtc->base.name,
>> @@ -6302,9 +6291,7 @@ static int intel_atomic_check_config(struct intel_atomic_state *state,
>>  
>>  	for_each_new_intel_crtc_in_state(state, crtc, new_crtc_state, i) {
>>  		if (!intel_crtc_needs_modeset(new_crtc_state)) {
>> -			if (intel_crtc_is_joiner_secondary(new_crtc_state))
>> -				copy_joiner_crtc_state_nomodeset(state, crtc);
>> -			else
>> +			if (!intel_crtc_is_joiner_secondary(new_crtc_state))
>>  				intel_crtc_copy_uapi_to_hw_state_nomodeset(state, crtc);
>>  			continue;
>>  		}
>> @@ -6439,8 +6426,11 @@ int intel_atomic_check(struct drm_device *dev,
>>  		goto fail;
>>  
>>  	for_each_new_intel_crtc_in_state(state, crtc, new_crtc_state, i) {
>> -		if (!intel_crtc_needs_modeset(new_crtc_state))
>> +		if (!intel_crtc_needs_modeset(new_crtc_state)) {
>> +			if (intel_crtc_is_joiner_secondary(new_crtc_state))
>> +				copy_joiner_crtc_state_nomodeset(state, crtc);
>>  			continue;
>> +		}
>>  
>>  		if (intel_crtc_is_joiner_secondary(new_crtc_state)) {
>>  			drm_WARN_ON(display->drm, new_crtc_state->uapi.enable);

-- 
Jani Nikula, Intel

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

* RE: [PATCH 1/2] drm/i915/joiner: Make joiner "nomodeset" state copy independent of pipe order
  2026-04-13  7:27     ` Jani Nikula
@ 2026-04-13  7:56       ` Saarinen, Jani
  0 siblings, 0 replies; 12+ messages in thread
From: Saarinen, Jani @ 2026-04-13  7:56 UTC (permalink / raw)
  To: Nikula, Jani, Ville Syrjala, intel-gfx@lists.freedesktop.org
  Cc: intel-xe@lists.freedesktop.org

Hi, 
> -----Original Message-----
> From: Intel-gfx <intel-gfx-bounces@lists.freedesktop.org> On Behalf Of Jani
> Nikula
> Sent: Monday, 13 April 2026 10.28
> To: Ville Syrjala <ville.syrjala@linux.intel.com>; intel-gfx@lists.freedesktop.org
> Cc: intel-xe@lists.freedesktop.org
> Subject: Re: [PATCH 1/2] drm/i915/joiner: Make joiner "nomodeset" state copy
> independent of pipe order
> 
> On Wed, 08 Apr 2026, Jani Nikula <jani.nikula@intel.com> wrote:
> > On Wed, 08 Apr 2026, Ville Syrjala <ville.syrjala@linux.intel.com> wrote:
> >> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> >>
> >> Currently the joiner primary->secondary hw state copy still happens
> >> from the main compute_config loop alongside the primary uapi->hw state
> copy.
> >> The primary uapi->hw state copy must therefore happen first, or else
> >> we'll end up copying stale junk into the secondary.
> >>
> >> We have a WARN in intel_atomic_check_joiner() to make sure the CRTCs
> >> will be walked in the correct order. The plan is to reoder the CRTCs,
> >> which would mess up the order, unless we also adjust the iterators to
> >> keep the pipe order. The actual plan is to do both, so technically we
> >> should be able to just remove the WARN and call it a day.
> >>
> >> But relying on the iteration order like this is fragile and
> >> confusing, so let's move the "nomodeset" joiner state copy into the
> >> later loop where the "modeset" state copy is also done. The first
> >> loop having completely finished, we are guaranteed to have up to date
> >> hw state on the primary when we do the copy to the secondary.
> >
> > I find the number of loops in the forest of intel_atomic_check*
> > functions confusing too. But this looks like progress.
> >
> > Reviewed-by: Jani Nikula <jani.nikula@intel.com>
> >
> > I'm wondering about merging this, along with the pipe reordering, to a
> > topic branch that could be merged to drm-next at Dave's discretion,
> > instead of cherry-picks which might be a bit cumbersome for patches
> > this size. So please hold off on merging while I figure this out.
> 
> Thanks, I've pushed the set to topic/pipe-reorder, and will be resending the pipe
> reordering patch again shortly.
Thanks. 
> 
> BR,
> Jani.
> 
> >
> >
> >>
> >> Cc: Jani Nikula <jani.nikula@intel.com>
> >> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> >> ---
> >>  drivers/gpu/drm/i915/display/intel_display.c | 20
> >> +++++---------------
> >>  1 file changed, 5 insertions(+), 15 deletions(-)
> >>
> >> diff --git a/drivers/gpu/drm/i915/display/intel_display.c
> >> b/drivers/gpu/drm/i915/display/intel_display.c
> >> index 58a654ca0d20..674a4ece6d0f 100644
> >> --- a/drivers/gpu/drm/i915/display/intel_display.c
> >> +++ b/drivers/gpu/drm/i915/display/intel_display.c
> >> @@ -5914,17 +5914,6 @@ static int intel_atomic_check_joiner(struct
> intel_atomic_state *state,
> >>  			return -EINVAL;
> >>  		}
> >>
> >> -		/*
> >> -		 * The state copy logic assumes the primary crtc gets processed
> >> -		 * before the secondary crtc during the main compute_config
> loop.
> >> -		 * This works because the crtcs are created in pipe order,
> >> -		 * and the hardware requires primary pipe < secondary pipe as
> well.
> >> -		 * Should that change we need to rethink the logic.
> >> -		 */
> >> -		if (WARN_ON(drm_crtc_index(&primary_crtc->base) >
> >> -			    drm_crtc_index(&secondary_crtc->base)))
> >> -			return -EINVAL;
> >> -
> >>  		drm_dbg_kms(display->drm,
> >>  			    "[CRTC:%d:%s] Used as secondary for joiner primary
> [CRTC:%d:%s]\n",
> >>  			    secondary_crtc->base.base.id, secondary_crtc-
> >base.name, @@
> >> -6302,9 +6291,7 @@ static int intel_atomic_check_config(struct
> >> intel_atomic_state *state,
> >>
> >>  	for_each_new_intel_crtc_in_state(state, crtc, new_crtc_state, i) {
> >>  		if (!intel_crtc_needs_modeset(new_crtc_state)) {
> >> -			if (intel_crtc_is_joiner_secondary(new_crtc_state))
> >> -				copy_joiner_crtc_state_nomodeset(state, crtc);
> >> -			else
> >> +			if (!intel_crtc_is_joiner_secondary(new_crtc_state))
> >>
> 	intel_crtc_copy_uapi_to_hw_state_nomodeset(state, crtc);
> >>  			continue;
> >>  		}
> >> @@ -6439,8 +6426,11 @@ int intel_atomic_check(struct drm_device *dev,
> >>  		goto fail;
> >>
> >>  	for_each_new_intel_crtc_in_state(state, crtc, new_crtc_state, i) {
> >> -		if (!intel_crtc_needs_modeset(new_crtc_state))
> >> +		if (!intel_crtc_needs_modeset(new_crtc_state)) {
> >> +			if (intel_crtc_is_joiner_secondary(new_crtc_state))
> >> +				copy_joiner_crtc_state_nomodeset(state, crtc);
> >>  			continue;
> >> +		}
> >>
> >>  		if (intel_crtc_is_joiner_secondary(new_crtc_state)) {
> >>  			drm_WARN_ON(display->drm, new_crtc_state-
> >uapi.enable);
> 
> --
> Jani Nikula, Intel

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

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

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-04-08 15:57 [PATCH 0/2] drm/i915: Make sure CRTC vs. pipe reordering is safe Ville Syrjala
2026-04-08 15:57 ` [PATCH 1/2] drm/i915/joiner: Make joiner "nomodeset" state copy independent of pipe order Ville Syrjala
2026-04-08 16:46   ` Jani Nikula
2026-04-13  7:27     ` Jani Nikula
2026-04-13  7:56       ` Saarinen, Jani
2026-04-08 15:57 ` [PATCH 2/2] drm/i915: Walk crtcs in " Ville Syrjala
2026-04-08 16:04 ` ✗ CI.checkpatch: warning for drm/i915: Make sure CRTC vs. pipe reordering is safe Patchwork
2026-04-08 16:05 ` ✗ CI.KUnit: failure " Patchwork
2026-04-10  8:37 ` ✗ CI.checkpatch: warning for drm/i915: Make sure CRTC vs. pipe reordering is safe (rev2) Patchwork
2026-04-10  8:39 ` ✓ CI.KUnit: success " Patchwork
2026-04-10  9:18 ` ✓ Xe.CI.BAT: " Patchwork
2026-04-10 15:55 ` ✗ Xe.CI.FULL: failure " Patchwork

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