Intel-XE Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/6] Fix a couple of wedge corner-case memory leaks
@ 2025-10-14 18:09 Stuart Summers
  2025-10-14 18:09 ` [PATCH 1/6] drm/xe: Add additional trace points for LRCs Stuart Summers
                   ` (9 more replies)
  0 siblings, 10 replies; 19+ messages in thread
From: Stuart Summers @ 2025-10-14 18:09 UTC (permalink / raw)
  Cc: intel-xe, matthew.brost, Stuart Summers

Most of the patches in this series are just adding
some debug hints to help track these down. I split
these up in case we want to pick and choose which ones
to include in the tree. I found them useful.

The main two interesting patches are the last two in the
series which are fixing some corner cases when the
driver becomes wedged in the middle of either communication
with the DRM scheduler or in the event the GuC becomes
unresponsive. In both of these cases there is a chance
we could leak memory around the exec queue members
like the LRC and the LRC BO. These patches fix those
scenarios.

v2: Address feedback from Matt:
    - Let the DRM scheduler handle pausing/unpausing
    - Still do the wait after scheduling disable/deregister
      as with the previous patch, but skip the intermediate
      software-based schedule disable using the "banned"
      flag and instead just jump straight to the deregister
      handling which will fully reset the queue state.
      Note that for this case I am seeing a hardware failure
      after submitting to GuC but before receiving the
      response from GuC. So even if we wedge in this case
      (monitoring the hardware state change), the queue
      itself is not wedged because of the active GuC
      submission (CT is not stalled at that point).
v3: Add back in the xe pause checks and instead just kickstart
    message handling in the guc_submi_fini() routine before
    doing the async wait there.
v4: Handle the CT communication loss during wedge asynchronously
    Also combine those last two patches into one to handle
    wedge cleanup generally.

Stuart Summers (6):
  drm/xe: Add additional trace points for LRCs
  drm/xe: Add a trace point for VM close
  drm/xe: Add the BO pointer info to the BO trace
  drm/xe: Add new exec queue trace points
  drm/xe: Correct migration VM teardown order
  drm/xe: Clean up GuC software state after a wedge

 drivers/gpu/drm/xe/xe_exec_queue.c |  4 +++
 drivers/gpu/drm/xe/xe_guc_submit.c | 26 +++++++++++++++---
 drivers/gpu/drm/xe/xe_lrc.c        |  4 +++
 drivers/gpu/drm/xe/xe_lrc.h        |  3 +++
 drivers/gpu/drm/xe/xe_migrate.c    |  2 +-
 drivers/gpu/drm/xe/xe_trace.h      | 22 ++++++++++++++--
 drivers/gpu/drm/xe/xe_trace_bo.h   | 12 +++++++--
 drivers/gpu/drm/xe/xe_trace_lrc.h  | 42 +++++++++++++++++++++++++++++-
 drivers/gpu/drm/xe/xe_vm.c         |  2 ++
 9 files changed, 107 insertions(+), 10 deletions(-)

-- 
2.34.1


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

* [PATCH 1/6] drm/xe: Add additional trace points for LRCs
  2025-10-14 18:09 [PATCH 0/6] Fix a couple of wedge corner-case memory leaks Stuart Summers
@ 2025-10-14 18:09 ` Stuart Summers
  2025-10-14 18:09 ` [PATCH 2/6] drm/xe: Add a trace point for VM close Stuart Summers
                   ` (8 subsequent siblings)
  9 siblings, 0 replies; 19+ messages in thread
From: Stuart Summers @ 2025-10-14 18:09 UTC (permalink / raw)
  Cc: intel-xe, matthew.brost, Stuart Summers

Add trace points to indicate when an LRC has been
created and destroyed or get and put.

Signed-off-by: Stuart Summers <stuart.summers@intel.com>
---
 drivers/gpu/drm/xe/xe_lrc.c       |  4 +++
 drivers/gpu/drm/xe/xe_lrc.h       |  3 +++
 drivers/gpu/drm/xe/xe_trace_lrc.h | 42 ++++++++++++++++++++++++++++++-
 3 files changed, 48 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/xe/xe_lrc.c b/drivers/gpu/drm/xe/xe_lrc.c
index b5083c99dd50..42d1c861fe18 100644
--- a/drivers/gpu/drm/xe/xe_lrc.c
+++ b/drivers/gpu/drm/xe/xe_lrc.c
@@ -1575,6 +1575,8 @@ struct xe_lrc *xe_lrc_create(struct xe_hw_engine *hwe, struct xe_vm *vm,
 		return ERR_PTR(err);
 	}
 
+	trace_xe_lrc_create(lrc);
+
 	return lrc;
 }
 
@@ -1589,6 +1591,8 @@ void xe_lrc_destroy(struct kref *ref)
 {
 	struct xe_lrc *lrc = container_of(ref, struct xe_lrc, refcount);
 
+	trace_xe_lrc_destroy(lrc);
+
 	xe_lrc_finish(lrc);
 	kfree(lrc);
 }
diff --git a/drivers/gpu/drm/xe/xe_lrc.h b/drivers/gpu/drm/xe/xe_lrc.h
index 2fb628da5c43..fd67810f9812 100644
--- a/drivers/gpu/drm/xe/xe_lrc.h
+++ b/drivers/gpu/drm/xe/xe_lrc.h
@@ -8,6 +8,7 @@
 #include <linux/types.h>
 
 #include "xe_lrc_types.h"
+#include "xe_trace_lrc.h"
 
 struct drm_printer;
 struct xe_bb;
@@ -61,6 +62,7 @@ void xe_lrc_destroy(struct kref *ref);
 static inline struct xe_lrc *xe_lrc_get(struct xe_lrc *lrc)
 {
 	kref_get(&lrc->refcount);
+	trace_xe_lrc_get(lrc);
 	return lrc;
 }
 
@@ -73,6 +75,7 @@ static inline struct xe_lrc *xe_lrc_get(struct xe_lrc *lrc)
  */
 static inline void xe_lrc_put(struct xe_lrc *lrc)
 {
+	trace_xe_lrc_put(lrc);
 	kref_put(&lrc->refcount, xe_lrc_destroy);
 }
 
diff --git a/drivers/gpu/drm/xe/xe_trace_lrc.h b/drivers/gpu/drm/xe/xe_trace_lrc.h
index d525cbee1e34..e8daa5d323e7 100644
--- a/drivers/gpu/drm/xe/xe_trace_lrc.h
+++ b/drivers/gpu/drm/xe/xe_trace_lrc.h
@@ -13,7 +13,6 @@
 #include <linux/types.h>
 
 #include "xe_gt_types.h"
-#include "xe_lrc.h"
 #include "xe_lrc_types.h"
 
 #define __dev_name_lrc(lrc)	dev_name(gt_to_xe((lrc)->fence_ctx.gt)->drm.dev)
@@ -42,6 +41,47 @@ TRACE_EVENT(xe_lrc_update_timestamp,
 		      __get_str(device_id))
 );
 
+DECLARE_EVENT_CLASS(xe_lrc,
+	    TP_PROTO(struct xe_lrc *lrc),
+	    TP_ARGS(lrc),
+
+	    TP_STRUCT__entry(
+		     __field(struct xe_lrc *, lrc)
+		     __string(name, lrc->fence_ctx.name)
+		     __string(device_id, __dev_name_lrc(lrc))
+	    ),
+
+	    TP_fast_assign(
+		   __entry->lrc	= lrc;
+		   __assign_str(name);
+		   __assign_str(device_id);
+		   ),
+
+	    TP_printk("lrc=:%p lrc->name=%s device_id:%s",
+		      __entry->lrc, __get_str(name),
+		      __get_str(device_id))
+);
+
+DEFINE_EVENT(xe_lrc, xe_lrc_create,
+	     TP_PROTO(struct xe_lrc *lrc),
+	     TP_ARGS(lrc)
+);
+
+DEFINE_EVENT(xe_lrc, xe_lrc_destroy,
+	     TP_PROTO(struct xe_lrc *lrc),
+	     TP_ARGS(lrc)
+);
+
+DEFINE_EVENT(xe_lrc, xe_lrc_get,
+	     TP_PROTO(struct xe_lrc *lrc),
+	     TP_ARGS(lrc)
+);
+
+DEFINE_EVENT(xe_lrc, xe_lrc_put,
+	     TP_PROTO(struct xe_lrc *lrc),
+	     TP_ARGS(lrc)
+);
+
 #endif
 
 /* This part must be outside protection */
-- 
2.34.1


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

* [PATCH 2/6] drm/xe: Add a trace point for VM close
  2025-10-14 18:09 [PATCH 0/6] Fix a couple of wedge corner-case memory leaks Stuart Summers
  2025-10-14 18:09 ` [PATCH 1/6] drm/xe: Add additional trace points for LRCs Stuart Summers
@ 2025-10-14 18:09 ` Stuart Summers
  2025-10-14 18:09 ` [PATCH 3/6] drm/xe: Add the BO pointer info to the BO trace Stuart Summers
                   ` (7 subsequent siblings)
  9 siblings, 0 replies; 19+ messages in thread
From: Stuart Summers @ 2025-10-14 18:09 UTC (permalink / raw)
  Cc: intel-xe, matthew.brost, Stuart Summers

All better tracking of error cases when calling through
xe_vm_close_and_put().

Signed-off-by: Stuart Summers <stuart.summers@intel.com>
---
 drivers/gpu/drm/xe/xe_trace_bo.h | 6 ++++++
 drivers/gpu/drm/xe/xe_vm.c       | 2 ++
 2 files changed, 8 insertions(+)

diff --git a/drivers/gpu/drm/xe/xe_trace_bo.h b/drivers/gpu/drm/xe/xe_trace_bo.h
index 86323cf3be2c..238311cfb816 100644
--- a/drivers/gpu/drm/xe/xe_trace_bo.h
+++ b/drivers/gpu/drm/xe/xe_trace_bo.h
@@ -14,6 +14,7 @@
 
 #include "xe_bo.h"
 #include "xe_bo_types.h"
+#include "xe_exec_queue_types.h"
 #include "xe_vm.h"
 
 #define __dev_name_bo(bo)	dev_name(xe_bo_device(bo)->drm.dev)
@@ -223,6 +224,11 @@ DEFINE_EVENT(xe_vm, xe_vm_free,
 	     TP_ARGS(vm)
 );
 
+DEFINE_EVENT(xe_vm, xe_vm_close,
+	     TP_PROTO(struct xe_vm *vm),
+	     TP_ARGS(vm)
+);
+
 DEFINE_EVENT(xe_vm, xe_vm_cpu_bind,
 	     TP_PROTO(struct xe_vm *vm),
 	     TP_ARGS(vm)
diff --git a/drivers/gpu/drm/xe/xe_vm.c b/drivers/gpu/drm/xe/xe_vm.c
index 179758ca7cb8..64b8a170efcf 100644
--- a/drivers/gpu/drm/xe/xe_vm.c
+++ b/drivers/gpu/drm/xe/xe_vm.c
@@ -1681,6 +1681,8 @@ static void xe_vm_close(struct xe_vm *vm)
 	bool bound;
 	int idx;
 
+	trace_xe_vm_close(vm);
+
 	bound = drm_dev_enter(&xe->drm, &idx);
 
 	down_write(&vm->lock);
-- 
2.34.1


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

* [PATCH 3/6] drm/xe: Add the BO pointer info to the BO trace
  2025-10-14 18:09 [PATCH 0/6] Fix a couple of wedge corner-case memory leaks Stuart Summers
  2025-10-14 18:09 ` [PATCH 1/6] drm/xe: Add additional trace points for LRCs Stuart Summers
  2025-10-14 18:09 ` [PATCH 2/6] drm/xe: Add a trace point for VM close Stuart Summers
@ 2025-10-14 18:09 ` Stuart Summers
  2025-10-14 18:09 ` [PATCH 4/6] drm/xe: Add new exec queue trace points Stuart Summers
                   ` (6 subsequent siblings)
  9 siblings, 0 replies; 19+ messages in thread
From: Stuart Summers @ 2025-10-14 18:09 UTC (permalink / raw)
  Cc: intel-xe, matthew.brost, Stuart Summers

Just a little extra detail to make BOs easier to track
through the trace event log.

Signed-off-by: Stuart Summers <stuart.summers@intel.com>
---
 drivers/gpu/drm/xe/xe_trace_bo.h | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_trace_bo.h b/drivers/gpu/drm/xe/xe_trace_bo.h
index 238311cfb816..0d795733e0f0 100644
--- a/drivers/gpu/drm/xe/xe_trace_bo.h
+++ b/drivers/gpu/drm/xe/xe_trace_bo.h
@@ -27,6 +27,7 @@ DECLARE_EVENT_CLASS(xe_bo,
 
 		    TP_STRUCT__entry(
 			     __string(dev, __dev_name_bo(bo))
+			     __field(struct xe_bo *, bo)
 			     __field(size_t, size)
 			     __field(u32, flags)
 			     __field(struct xe_vm *, vm)
@@ -34,13 +35,14 @@ DECLARE_EVENT_CLASS(xe_bo,
 
 		    TP_fast_assign(
 			   __assign_str(dev);
+			   __entry->bo = bo;
 			   __entry->size = xe_bo_size(bo);
 			   __entry->flags = bo->flags;
 			   __entry->vm = bo->vm;
 			   ),
 
-		    TP_printk("dev=%s, size=%zu, flags=0x%02x, vm=%p",
-			      __get_str(dev), __entry->size,
+		    TP_printk("dev=%s, %p, size=%zu, flags=0x%02x, vm=%p",
+			      __get_str(dev), __entry->bo, __entry->size,
 			      __entry->flags, __entry->vm)
 );
 
-- 
2.34.1


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

* [PATCH 4/6] drm/xe: Add new exec queue trace points
  2025-10-14 18:09 [PATCH 0/6] Fix a couple of wedge corner-case memory leaks Stuart Summers
                   ` (2 preceding siblings ...)
  2025-10-14 18:09 ` [PATCH 3/6] drm/xe: Add the BO pointer info to the BO trace Stuart Summers
@ 2025-10-14 18:09 ` Stuart Summers
  2025-10-14 18:09 ` [PATCH 5/6] drm/xe: Correct migration VM teardown order Stuart Summers
                   ` (5 subsequent siblings)
  9 siblings, 0 replies; 19+ messages in thread
From: Stuart Summers @ 2025-10-14 18:09 UTC (permalink / raw)
  Cc: intel-xe, matthew.brost, Stuart Summers

Add an exec queue and guc exec queue trace point
to separate out which part of the stack is executing.

This is helpful because several of the guc specific
paths rely on responses from guc which is interesting
to view separately in the event the guc stops responding
in the middle of an operation that would expect a
response from guc otherwise.

Also add in the exec queue pointer information to
the trace events for easier tracking. Contexts (guc_ids)
can get re-used, so this just makes grepping a little
easier in this type of debug.

Signed-off-by: Stuart Summers <stuart.summers@intel.com>
---
 drivers/gpu/drm/xe/xe_exec_queue.c |  4 ++++
 drivers/gpu/drm/xe/xe_guc_submit.c | 11 +++++++----
 drivers/gpu/drm/xe/xe_trace.h      | 22 ++++++++++++++++++++--
 3 files changed, 31 insertions(+), 6 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_exec_queue.c b/drivers/gpu/drm/xe/xe_exec_queue.c
index 90cbc95f8e2e..a2ef381cf6d9 100644
--- a/drivers/gpu/drm/xe/xe_exec_queue.c
+++ b/drivers/gpu/drm/xe/xe_exec_queue.c
@@ -377,6 +377,8 @@ void xe_exec_queue_destroy(struct kref *ref)
 	struct xe_exec_queue *q = container_of(ref, struct xe_exec_queue, refcount);
 	struct xe_exec_queue *eq, *next;
 
+	trace_xe_exec_queue_destroy(q);
+
 	if (xe_exec_queue_uses_pxp(q))
 		xe_pxp_exec_queue_remove(gt_to_xe(q->gt)->pxp, q);
 
@@ -953,6 +955,8 @@ void xe_exec_queue_kill(struct xe_exec_queue *q)
 {
 	struct xe_exec_queue *eq = q, *next;
 
+	trace_xe_exec_queue_kill(q);
+
 	list_for_each_entry_safe(eq, next, &eq->multi_gt_list,
 				 multi_gt_link) {
 		q->ops->kill(eq);
diff --git a/drivers/gpu/drm/xe/xe_guc_submit.c b/drivers/gpu/drm/xe/xe_guc_submit.c
index e9aa0625ce60..5ec1e4a83d68 100644
--- a/drivers/gpu/drm/xe/xe_guc_submit.c
+++ b/drivers/gpu/drm/xe/xe_guc_submit.c
@@ -1003,9 +1003,12 @@ void xe_guc_submit_wedge(struct xe_guc *guc)
 	}
 
 	mutex_lock(&guc->submission_state.lock);
-	xa_for_each(&guc->submission_state.exec_queue_lookup, index, q)
-		if (xe_exec_queue_get_unless_zero(q))
+	xa_for_each(&guc->submission_state.exec_queue_lookup, index, q) {
+		if (xe_exec_queue_get_unless_zero(q)) {
 			set_exec_queue_wedged(q);
+			trace_xe_exec_queue_wedge(q);
+		}
+	}
 	mutex_unlock(&guc->submission_state.lock);
 }
 
@@ -1455,7 +1458,7 @@ static void __guc_exec_queue_destroy_async(struct work_struct *w)
 	struct xe_guc *guc = exec_queue_to_guc(q);
 
 	xe_pm_runtime_get(guc_to_xe(guc));
-	trace_xe_exec_queue_destroy(q);
+	trace_xe_guc_exec_queue_destroy(q);
 
 	if (xe_exec_queue_is_lr(q))
 		cancel_work_sync(&ge->lr_tdr);
@@ -1716,7 +1719,7 @@ static int guc_exec_queue_init(struct xe_exec_queue *q)
 
 static void guc_exec_queue_kill(struct xe_exec_queue *q)
 {
-	trace_xe_exec_queue_kill(q);
+	trace_xe_guc_exec_queue_kill(q);
 	set_exec_queue_killed(q);
 	__suspend_fence_signal(q);
 	xe_guc_exec_queue_trigger_cleanup(q);
diff --git a/drivers/gpu/drm/xe/xe_trace.h b/drivers/gpu/drm/xe/xe_trace.h
index 314f42fcbcbd..a5dd0c48d894 100644
--- a/drivers/gpu/drm/xe/xe_trace.h
+++ b/drivers/gpu/drm/xe/xe_trace.h
@@ -71,6 +71,7 @@ DECLARE_EVENT_CLASS(xe_exec_queue,
 
 		    TP_STRUCT__entry(
 			     __string(dev, __dev_name_eq(q))
+			     __field(struct xe_exec_queue *, q)
 			     __field(enum xe_engine_class, class)
 			     __field(u32, logical_mask)
 			     __field(u8, gt_id)
@@ -82,6 +83,7 @@ DECLARE_EVENT_CLASS(xe_exec_queue,
 
 		    TP_fast_assign(
 			   __assign_str(dev);
+			   __entry->q = q;
 			   __entry->class = q->class;
 			   __entry->logical_mask = q->logical_mask;
 			   __entry->gt_id = q->gt->info.id;
@@ -91,8 +93,9 @@ DECLARE_EVENT_CLASS(xe_exec_queue,
 			   __entry->flags = q->flags;
 			   ),
 
-		    TP_printk("dev=%s, %d:0x%x, gt=%d, width=%d, guc_id=%d, guc_state=0x%x, flags=0x%x",
-			      __get_str(dev), __entry->class, __entry->logical_mask,
+		    TP_printk("dev=%s, %p, %d:0x%x, gt=%d, width=%d, guc_id=%d, guc_state=0x%x, flags=0x%x",
+			      __get_str(dev), __entry->q,
+			      __entry->class, __entry->logical_mask,
 			      __entry->gt_id, __entry->width, __entry->guc_id,
 			      __entry->guc_state, __entry->flags)
 );
@@ -147,11 +150,21 @@ DEFINE_EVENT(xe_exec_queue, xe_exec_queue_close,
 	     TP_ARGS(q)
 );
 
+DEFINE_EVENT(xe_exec_queue, xe_exec_queue_wedge,
+	     TP_PROTO(struct xe_exec_queue *q),
+	     TP_ARGS(q)
+);
+
 DEFINE_EVENT(xe_exec_queue, xe_exec_queue_kill,
 	     TP_PROTO(struct xe_exec_queue *q),
 	     TP_ARGS(q)
 );
 
+DEFINE_EVENT(xe_exec_queue, xe_guc_exec_queue_kill,
+	     TP_PROTO(struct xe_exec_queue *q),
+	     TP_ARGS(q)
+);
+
 DEFINE_EVENT(xe_exec_queue, xe_exec_queue_cleanup_entity,
 	     TP_PROTO(struct xe_exec_queue *q),
 	     TP_ARGS(q)
@@ -162,6 +175,11 @@ DEFINE_EVENT(xe_exec_queue, xe_exec_queue_destroy,
 	     TP_ARGS(q)
 );
 
+DEFINE_EVENT(xe_exec_queue, xe_guc_exec_queue_destroy,
+	     TP_PROTO(struct xe_exec_queue *q),
+	     TP_ARGS(q)
+);
+
 DEFINE_EVENT(xe_exec_queue, xe_exec_queue_reset,
 	     TP_PROTO(struct xe_exec_queue *q),
 	     TP_ARGS(q)
-- 
2.34.1


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

* [PATCH 5/6] drm/xe: Correct migration VM teardown order
  2025-10-14 18:09 [PATCH 0/6] Fix a couple of wedge corner-case memory leaks Stuart Summers
                   ` (3 preceding siblings ...)
  2025-10-14 18:09 ` [PATCH 4/6] drm/xe: Add new exec queue trace points Stuart Summers
@ 2025-10-14 18:09 ` Stuart Summers
  2025-10-15  0:59   ` Matthew Brost
  2025-10-14 18:09 ` [PATCH 6/6] drm/xe: Clean up GuC software state after a wedge Stuart Summers
                   ` (4 subsequent siblings)
  9 siblings, 1 reply; 19+ messages in thread
From: Stuart Summers @ 2025-10-14 18:09 UTC (permalink / raw)
  Cc: intel-xe, matthew.brost, Stuart Summers

Adjust the sequence of the migration teardown to match what
is happening in the init() function.

Signed-off-by: Stuart Summers <stuart.summers@intel.com>
---
 drivers/gpu/drm/xe/xe_migrate.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/xe/xe_migrate.c b/drivers/gpu/drm/xe/xe_migrate.c
index 7345a5b65169..b1747e442a7b 100644
--- a/drivers/gpu/drm/xe/xe_migrate.c
+++ b/drivers/gpu/drm/xe/xe_migrate.c
@@ -100,8 +100,8 @@ static void xe_migrate_fini(void *arg)
 	xe_bo_put(m->pt_bo);
 	drm_suballoc_manager_fini(&m->vm_update_sa);
 	mutex_destroy(&m->job_mutex);
-	xe_vm_close_and_put(m->q->vm);
 	xe_exec_queue_put(m->q);
+	xe_vm_close_and_put(m->q->vm);
 }
 
 static u64 xe_migrate_vm_addr(u64 slot, u32 level)
-- 
2.34.1


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

* [PATCH 6/6] drm/xe: Clean up GuC software state after a wedge
  2025-10-14 18:09 [PATCH 0/6] Fix a couple of wedge corner-case memory leaks Stuart Summers
                   ` (4 preceding siblings ...)
  2025-10-14 18:09 ` [PATCH 5/6] drm/xe: Correct migration VM teardown order Stuart Summers
@ 2025-10-14 18:09 ` Stuart Summers
  2025-10-15 19:45   ` Summers, Stuart
  2025-10-14 18:15 ` ✗ CI.checkpatch: warning for Fix a couple of wedge corner-case memory leaks (rev4) Patchwork
                   ` (3 subsequent siblings)
  9 siblings, 1 reply; 19+ messages in thread
From: Stuart Summers @ 2025-10-14 18:09 UTC (permalink / raw)
  Cc: intel-xe, matthew.brost, Stuart Summers

Comments also added to the code, but in the event of
a wedge or a hardware failure while communication with
GuC is outstanding (e.g. during a schedule disable or
context deregistration), the driver doesn't automatically
reset the software state as it would in a typical GT reset
since we are trying to save the state for debug. However
once the user unbinds the driver we still need to go through
and clean everything up for these exec queues so we don't
leak memory on the DRM side (e.g. LRC or LRC BO).

Add a kick start to the DRM scheduler to handle any outstanding
messages on hold during the wedge and go through the GuC stop
flow to simulate that reset on teardown.

Signed-off-by: Stuart Summers <stuart.summers@intel.com>
---
 drivers/gpu/drm/xe/xe_guc_submit.c | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/drivers/gpu/drm/xe/xe_guc_submit.c b/drivers/gpu/drm/xe/xe_guc_submit.c
index 5ec1e4a83d68..0bbae336c722 100644
--- a/drivers/gpu/drm/xe/xe_guc_submit.c
+++ b/drivers/gpu/drm/xe/xe_guc_submit.c
@@ -276,6 +276,14 @@ static void guc_submit_fini(struct drm_device *drm, void *arg)
 	struct xe_gt *gt = guc_to_gt(guc);
 	int ret;
 
+	/*
+	 * If GuC stopped responding during deregistration
+	 * some queues can be left in a bad state. Ensure
+	 * these are all cleaned up by going through the
+	 * GuC software reset flow.
+	 */
+	xe_guc_stop(guc);
+
 	ret = wait_event_timeout(guc->submission_state.fini_wq,
 				 xa_empty(&guc->submission_state.exec_queue_lookup),
 				 HZ * 5);
@@ -295,6 +303,13 @@ static void guc_submit_wedged_fini(void *arg)
 
 	mutex_lock(&guc->submission_state.lock);
 	xa_for_each(&guc->submission_state.exec_queue_lookup, index, q) {
+		/*
+		 * Kick start the scheduler since some messages
+		 * might have been added while the scheduler was
+		 * stopped during a wedge event.
+		 */
+		xe_sched_submission_start(&q->guc->sched);
+
 		if (exec_queue_wedged(q)) {
 			mutex_unlock(&guc->submission_state.lock);
 			xe_exec_queue_put(q);
-- 
2.34.1


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

* ✗ CI.checkpatch: warning for Fix a couple of wedge corner-case memory leaks (rev4)
  2025-10-14 18:09 [PATCH 0/6] Fix a couple of wedge corner-case memory leaks Stuart Summers
                   ` (5 preceding siblings ...)
  2025-10-14 18:09 ` [PATCH 6/6] drm/xe: Clean up GuC software state after a wedge Stuart Summers
@ 2025-10-14 18:15 ` Patchwork
  2025-10-14 18:16 ` ✓ CI.KUnit: success " Patchwork
                   ` (2 subsequent siblings)
  9 siblings, 0 replies; 19+ messages in thread
From: Patchwork @ 2025-10-14 18:15 UTC (permalink / raw)
  To: Stuart Summers; +Cc: intel-xe

== Series Details ==

Series: Fix a couple of wedge corner-case memory leaks (rev4)
URL   : https://patchwork.freedesktop.org/series/155352/
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
fbd08a78c3a3bb17964db2a326514c69c1dca660
+ cd /kernel
+ git config --global --add safe.directory /kernel
+ git log -n1
commit 7dca74be19df880ce535eaba7e7f812bdda44ed5
Author: Stuart Summers <stuart.summers@intel.com>
Date:   Tue Oct 14 18:09:27 2025 +0000

    drm/xe: Clean up GuC software state after a wedge
    
    Comments also added to the code, but in the event of
    a wedge or a hardware failure while communication with
    GuC is outstanding (e.g. during a schedule disable or
    context deregistration), the driver doesn't automatically
    reset the software state as it would in a typical GT reset
    since we are trying to save the state for debug. However
    once the user unbinds the driver we still need to go through
    and clean everything up for these exec queues so we don't
    leak memory on the DRM side (e.g. LRC or LRC BO).
    
    Add a kick start to the DRM scheduler to handle any outstanding
    messages on hold during the wedge and go through the GuC stop
    flow to simulate that reset on teardown.
    
    Signed-off-by: Stuart Summers <stuart.summers@intel.com>
+ /mt/dim checkpatch c6c2a6f0013cf24b117a1dd397c9e0530ff2f4cb drm-intel
9f4ca149a4b3 drm/xe: Add additional trace points for LRCs
-:78: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#78: FILE: drivers/gpu/drm/xe/xe_trace_lrc.h:45:
+DECLARE_EVENT_CLASS(xe_lrc,
+	    TP_PROTO(struct xe_lrc *lrc),

-:81: CHECK:OPEN_ENDED_LINE: Lines should not end with a '('
#81: FILE: drivers/gpu/drm/xe/xe_trace_lrc.h:48:
+	    TP_STRUCT__entry(

-:87: CHECK:OPEN_ENDED_LINE: Lines should not end with a '('
#87: FILE: drivers/gpu/drm/xe/xe_trace_lrc.h:54:
+	    TP_fast_assign(

total: 0 errors, 0 warnings, 3 checks, 91 lines checked
6e9df4be708f drm/xe: Add a trace point for VM close
dfaebdbef041 drm/xe: Add the BO pointer info to the BO trace
17f5a52f02ee drm/xe: Add new exec queue trace points
54505468da3c drm/xe: Correct migration VM teardown order
7dca74be19df drm/xe: Clean up GuC software state after a wedge



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

* ✓ CI.KUnit: success for Fix a couple of wedge corner-case memory leaks (rev4)
  2025-10-14 18:09 [PATCH 0/6] Fix a couple of wedge corner-case memory leaks Stuart Summers
                   ` (6 preceding siblings ...)
  2025-10-14 18:15 ` ✗ CI.checkpatch: warning for Fix a couple of wedge corner-case memory leaks (rev4) Patchwork
@ 2025-10-14 18:16 ` Patchwork
  2025-10-14 19:13 ` ✗ Xe.CI.BAT: failure " Patchwork
  2025-10-15  5:18 ` ✗ Xe.CI.Full: " Patchwork
  9 siblings, 0 replies; 19+ messages in thread
From: Patchwork @ 2025-10-14 18:16 UTC (permalink / raw)
  To: Stuart Summers; +Cc: intel-xe

== Series Details ==

Series: Fix a couple of wedge corner-case memory leaks (rev4)
URL   : https://patchwork.freedesktop.org/series/155352/
State : success

== Summary ==

+ trap cleanup EXIT
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/xe/.kunitconfig
[18:15:22] Configuring KUnit Kernel ...
Generating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[18:15:26] 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
[18:15:56] Starting KUnit Kernel (1/1)...
[18:15:56] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[18:15:57] ================== guc_buf (11 subtests) ===================
[18:15:57] [PASSED] test_smallest
[18:15:57] [PASSED] test_largest
[18:15:57] [PASSED] test_granular
[18:15:57] [PASSED] test_unique
[18:15:57] [PASSED] test_overlap
[18:15:57] [PASSED] test_reusable
[18:15:57] [PASSED] test_too_big
[18:15:57] [PASSED] test_flush
[18:15:57] [PASSED] test_lookup
[18:15:57] [PASSED] test_data
[18:15:57] [PASSED] test_class
[18:15:57] ===================== [PASSED] guc_buf =====================
[18:15:57] =================== guc_dbm (7 subtests) ===================
[18:15:57] [PASSED] test_empty
[18:15:57] [PASSED] test_default
[18:15:57] ======================== test_size  ========================
[18:15:57] [PASSED] 4
[18:15:57] [PASSED] 8
[18:15:57] [PASSED] 32
[18:15:57] [PASSED] 256
[18:15:57] ==================== [PASSED] test_size ====================
[18:15:57] ======================= test_reuse  ========================
[18:15:57] [PASSED] 4
[18:15:57] [PASSED] 8
[18:15:57] [PASSED] 32
[18:15:57] [PASSED] 256
[18:15:57] =================== [PASSED] test_reuse ====================
[18:15:57] =================== test_range_overlap  ====================
[18:15:57] [PASSED] 4
[18:15:57] [PASSED] 8
[18:15:57] [PASSED] 32
[18:15:57] [PASSED] 256
[18:15:57] =============== [PASSED] test_range_overlap ================
[18:15:57] =================== test_range_compact  ====================
[18:15:57] [PASSED] 4
[18:15:57] [PASSED] 8
[18:15:57] [PASSED] 32
[18:15:57] [PASSED] 256
[18:15:57] =============== [PASSED] test_range_compact ================
[18:15:57] ==================== test_range_spare  =====================
[18:15:57] [PASSED] 4
[18:15:57] [PASSED] 8
[18:15:57] [PASSED] 32
[18:15:57] [PASSED] 256
[18:15:57] ================ [PASSED] test_range_spare =================
[18:15:57] ===================== [PASSED] guc_dbm =====================
[18:15:57] =================== guc_idm (6 subtests) ===================
[18:15:57] [PASSED] bad_init
[18:15:57] [PASSED] no_init
[18:15:57] [PASSED] init_fini
[18:15:57] [PASSED] check_used
[18:15:57] [PASSED] check_quota
[18:15:57] [PASSED] check_all
[18:15:57] ===================== [PASSED] guc_idm =====================
[18:15:57] ================== no_relay (3 subtests) ===================
[18:15:57] [PASSED] xe_drops_guc2pf_if_not_ready
[18:15:57] [PASSED] xe_drops_guc2vf_if_not_ready
[18:15:57] [PASSED] xe_rejects_send_if_not_ready
[18:15:57] ==================== [PASSED] no_relay =====================
[18:15:57] ================== pf_relay (14 subtests) ==================
[18:15:57] [PASSED] pf_rejects_guc2pf_too_short
[18:15:57] [PASSED] pf_rejects_guc2pf_too_long
[18:15:57] [PASSED] pf_rejects_guc2pf_no_payload
[18:15:57] [PASSED] pf_fails_no_payload
[18:15:57] [PASSED] pf_fails_bad_origin
[18:15:57] [PASSED] pf_fails_bad_type
[18:15:57] [PASSED] pf_txn_reports_error
[18:15:57] [PASSED] pf_txn_sends_pf2guc
[18:15:57] [PASSED] pf_sends_pf2guc
[18:15:57] [SKIPPED] pf_loopback_nop
[18:15:57] [SKIPPED] pf_loopback_echo
[18:15:57] [SKIPPED] pf_loopback_fail
[18:15:57] [SKIPPED] pf_loopback_busy
[18:15:57] [SKIPPED] pf_loopback_retry
[18:15:57] ==================== [PASSED] pf_relay =====================
[18:15:57] ================== vf_relay (3 subtests) ===================
[18:15:57] [PASSED] vf_rejects_guc2vf_too_short
[18:15:57] [PASSED] vf_rejects_guc2vf_too_long
[18:15:57] [PASSED] vf_rejects_guc2vf_no_payload
[18:15:57] ==================== [PASSED] vf_relay =====================
[18:15:57] ===================== lmtt (1 subtest) =====================
[18:15:57] ======================== test_ops  =========================
[18:15:57] [PASSED] 2-level
[18:15:57] [PASSED] multi-level
[18:15:57] ==================== [PASSED] test_ops =====================
[18:15:57] ====================== [PASSED] lmtt =======================
[18:15:57] ================= pf_service (11 subtests) =================
[18:15:57] [PASSED] pf_negotiate_any
[18:15:57] [PASSED] pf_negotiate_base_match
[18:15:57] [PASSED] pf_negotiate_base_newer
[18:15:57] [PASSED] pf_negotiate_base_next
[18:15:57] [SKIPPED] pf_negotiate_base_older
[18:15:57] [PASSED] pf_negotiate_base_prev
[18:15:57] [PASSED] pf_negotiate_latest_match
[18:15:57] [PASSED] pf_negotiate_latest_newer
[18:15:57] [PASSED] pf_negotiate_latest_next
[18:15:57] [SKIPPED] pf_negotiate_latest_older
[18:15:57] [SKIPPED] pf_negotiate_latest_prev
[18:15:57] =================== [PASSED] pf_service ====================
[18:15:57] ================= xe_guc_g2g (2 subtests) ==================
[18:15:57] ============== xe_live_guc_g2g_kunit_default  ==============
[18:15:57] ========= [SKIPPED] xe_live_guc_g2g_kunit_default ==========
[18:15:57] ============== xe_live_guc_g2g_kunit_allmem  ===============
[18:15:57] ========== [SKIPPED] xe_live_guc_g2g_kunit_allmem ==========
[18:15:57] =================== [SKIPPED] xe_guc_g2g ===================
[18:15:57] =================== xe_mocs (2 subtests) ===================
[18:15:57] ================ xe_live_mocs_kernel_kunit  ================
[18:15:57] =========== [SKIPPED] xe_live_mocs_kernel_kunit ============
[18:15:57] ================ xe_live_mocs_reset_kunit  =================
[18:15:57] ============ [SKIPPED] xe_live_mocs_reset_kunit ============
[18:15:57] ==================== [SKIPPED] xe_mocs =====================
[18:15:57] ================= xe_migrate (2 subtests) ==================
[18:15:57] ================= xe_migrate_sanity_kunit  =================
[18:15:57] ============ [SKIPPED] xe_migrate_sanity_kunit =============
[18:15:57] ================== xe_validate_ccs_kunit  ==================
[18:15:57] ============= [SKIPPED] xe_validate_ccs_kunit ==============
[18:15:57] =================== [SKIPPED] xe_migrate ===================
[18:15:57] ================== xe_dma_buf (1 subtest) ==================
[18:15:57] ==================== xe_dma_buf_kunit  =====================
[18:15:57] ================ [SKIPPED] xe_dma_buf_kunit ================
[18:15:57] =================== [SKIPPED] xe_dma_buf ===================
[18:15:57] ================= xe_bo_shrink (1 subtest) =================
[18:15:57] =================== xe_bo_shrink_kunit  ====================
[18:15:57] =============== [SKIPPED] xe_bo_shrink_kunit ===============
[18:15:57] ================== [SKIPPED] xe_bo_shrink ==================
[18:15:57] ==================== xe_bo (2 subtests) ====================
[18:15:57] ================== xe_ccs_migrate_kunit  ===================
[18:15:57] ============== [SKIPPED] xe_ccs_migrate_kunit ==============
[18:15:57] ==================== xe_bo_evict_kunit  ====================
[18:15:57] =============== [SKIPPED] xe_bo_evict_kunit ================
[18:15:57] ===================== [SKIPPED] xe_bo ======================
[18:15:57] ==================== args (11 subtests) ====================
[18:15:57] [PASSED] count_args_test
[18:15:57] [PASSED] call_args_example
[18:15:57] [PASSED] call_args_test
[18:15:57] [PASSED] drop_first_arg_example
[18:15:57] [PASSED] drop_first_arg_test
[18:15:57] [PASSED] first_arg_example
[18:15:57] [PASSED] first_arg_test
[18:15:57] [PASSED] last_arg_example
[18:15:57] [PASSED] last_arg_test
[18:15:57] [PASSED] pick_arg_example
[18:15:57] [PASSED] sep_comma_example
[18:15:57] ====================== [PASSED] args =======================
[18:15:57] =================== xe_pci (3 subtests) ====================
[18:15:57] ==================== check_graphics_ip  ====================
[18:15:57] [PASSED] 12.00 Xe_LP
[18:15:57] [PASSED] 12.10 Xe_LP+
[18:15:57] [PASSED] 12.55 Xe_HPG
[18:15:57] [PASSED] 12.60 Xe_HPC
[18:15:57] [PASSED] 12.70 Xe_LPG
[18:15:57] [PASSED] 12.71 Xe_LPG
[18:15:57] [PASSED] 12.74 Xe_LPG+
[18:15:57] [PASSED] 20.01 Xe2_HPG
[18:15:57] [PASSED] 20.02 Xe2_HPG
[18:15:57] [PASSED] 20.04 Xe2_LPG
[18:15:57] [PASSED] 30.00 Xe3_LPG
[18:15:57] [PASSED] 30.01 Xe3_LPG
[18:15:57] [PASSED] 30.03 Xe3_LPG
[18:15:57] ================ [PASSED] check_graphics_ip ================
[18:15:57] ===================== check_media_ip  ======================
[18:15:57] [PASSED] 12.00 Xe_M
[18:15:57] [PASSED] 12.55 Xe_HPM
[18:15:57] [PASSED] 13.00 Xe_LPM+
[18:15:57] [PASSED] 13.01 Xe2_HPM
[18:15:57] [PASSED] 20.00 Xe2_LPM
[18:15:57] [PASSED] 30.00 Xe3_LPM
[18:15:57] [PASSED] 30.02 Xe3_LPM
[18:15:57] ================= [PASSED] check_media_ip ==================
[18:15:57] ================= check_platform_gt_count  =================
[18:15:57] [PASSED] 0x9A60 (TIGERLAKE)
[18:15:57] [PASSED] 0x9A68 (TIGERLAKE)
[18:15:57] [PASSED] 0x9A70 (TIGERLAKE)
[18:15:57] [PASSED] 0x9A40 (TIGERLAKE)
[18:15:57] [PASSED] 0x9A49 (TIGERLAKE)
[18:15:57] [PASSED] 0x9A59 (TIGERLAKE)
[18:15:57] [PASSED] 0x9A78 (TIGERLAKE)
[18:15:57] [PASSED] 0x9AC0 (TIGERLAKE)
[18:15:57] [PASSED] 0x9AC9 (TIGERLAKE)
[18:15:57] [PASSED] 0x9AD9 (TIGERLAKE)
[18:15:57] [PASSED] 0x9AF8 (TIGERLAKE)
[18:15:57] [PASSED] 0x4C80 (ROCKETLAKE)
[18:15:57] [PASSED] 0x4C8A (ROCKETLAKE)
[18:15:57] [PASSED] 0x4C8B (ROCKETLAKE)
[18:15:57] [PASSED] 0x4C8C (ROCKETLAKE)
[18:15:57] [PASSED] 0x4C90 (ROCKETLAKE)
[18:15:57] [PASSED] 0x4C9A (ROCKETLAKE)
[18:15:57] [PASSED] 0x4680 (ALDERLAKE_S)
[18:15:57] [PASSED] 0x4682 (ALDERLAKE_S)
[18:15:57] [PASSED] 0x4688 (ALDERLAKE_S)
[18:15:57] [PASSED] 0x468A (ALDERLAKE_S)
[18:15:57] [PASSED] 0x468B (ALDERLAKE_S)
[18:15:57] [PASSED] 0x4690 (ALDERLAKE_S)
[18:15:57] [PASSED] 0x4692 (ALDERLAKE_S)
[18:15:57] [PASSED] 0x4693 (ALDERLAKE_S)
[18:15:57] [PASSED] 0x46A0 (ALDERLAKE_P)
[18:15:57] [PASSED] 0x46A1 (ALDERLAKE_P)
[18:15:57] [PASSED] 0x46A2 (ALDERLAKE_P)
[18:15:57] [PASSED] 0x46A3 (ALDERLAKE_P)
[18:15:57] [PASSED] 0x46A6 (ALDERLAKE_P)
[18:15:57] [PASSED] 0x46A8 (ALDERLAKE_P)
[18:15:57] [PASSED] 0x46AA (ALDERLAKE_P)
[18:15:57] [PASSED] 0x462A (ALDERLAKE_P)
[18:15:57] [PASSED] 0x4626 (ALDERLAKE_P)
[18:15:57] [PASSED] 0x4628 (ALDERLAKE_P)
[18:15:57] [PASSED] 0x46B0 (ALDERLAKE_P)
[18:15:57] [PASSED] 0x46B1 (ALDERLAKE_P)
[18:15:57] [PASSED] 0x46B2 (ALDERLAKE_P)
[18:15:57] [PASSED] 0x46B3 (ALDERLAKE_P)
[18:15:57] [PASSED] 0x46C0 (ALDERLAKE_P)
[18:15:57] [PASSED] 0x46C1 (ALDERLAKE_P)
[18:15:57] [PASSED] 0x46C2 (ALDERLAKE_P)
[18:15:57] [PASSED] 0x46C3 (ALDERLAKE_P)
[18:15:57] [PASSED] 0x46D0 (ALDERLAKE_N)
[18:15:57] [PASSED] 0x46D1 (ALDERLAKE_N)
[18:15:57] [PASSED] 0x46D2 (ALDERLAKE_N)
[18:15:57] [PASSED] 0x46D3 (ALDERLAKE_N)
[18:15:57] [PASSED] 0x46D4 (ALDERLAKE_N)
[18:15:57] [PASSED] 0xA721 (ALDERLAKE_P)
[18:15:57] [PASSED] 0xA7A1 (ALDERLAKE_P)
[18:15:57] [PASSED] 0xA7A9 (ALDERLAKE_P)
[18:15:57] [PASSED] 0xA7AC (ALDERLAKE_P)
[18:15:57] [PASSED] 0xA7AD (ALDERLAKE_P)
[18:15:57] [PASSED] 0xA720 (ALDERLAKE_P)
[18:15:57] [PASSED] 0xA7A0 (ALDERLAKE_P)
[18:15:57] [PASSED] 0xA7A8 (ALDERLAKE_P)
[18:15:57] [PASSED] 0xA7AA (ALDERLAKE_P)
[18:15:57] [PASSED] 0xA7AB (ALDERLAKE_P)
[18:15:57] [PASSED] 0xA780 (ALDERLAKE_S)
[18:15:57] [PASSED] 0xA781 (ALDERLAKE_S)
[18:15:57] [PASSED] 0xA782 (ALDERLAKE_S)
[18:15:57] [PASSED] 0xA783 (ALDERLAKE_S)
[18:15:57] [PASSED] 0xA788 (ALDERLAKE_S)
[18:15:57] [PASSED] 0xA789 (ALDERLAKE_S)
[18:15:57] [PASSED] 0xA78A (ALDERLAKE_S)
[18:15:57] [PASSED] 0xA78B (ALDERLAKE_S)
[18:15:57] [PASSED] 0x4905 (DG1)
[18:15:57] [PASSED] 0x4906 (DG1)
[18:15:57] [PASSED] 0x4907 (DG1)
[18:15:57] [PASSED] 0x4908 (DG1)
[18:15:57] [PASSED] 0x4909 (DG1)
[18:15:57] [PASSED] 0x56C0 (DG2)
[18:15:57] [PASSED] 0x56C2 (DG2)
[18:15:57] [PASSED] 0x56C1 (DG2)
[18:15:57] [PASSED] 0x7D51 (METEORLAKE)
[18:15:57] [PASSED] 0x7DD1 (METEORLAKE)
[18:15:57] [PASSED] 0x7D41 (METEORLAKE)
[18:15:57] [PASSED] 0x7D67 (METEORLAKE)
[18:15:57] [PASSED] 0xB640 (METEORLAKE)
[18:15:57] [PASSED] 0x56A0 (DG2)
[18:15:57] [PASSED] 0x56A1 (DG2)
[18:15:57] [PASSED] 0x56A2 (DG2)
[18:15:57] [PASSED] 0x56BE (DG2)
[18:15:57] [PASSED] 0x56BF (DG2)
[18:15:57] [PASSED] 0x5690 (DG2)
[18:15:57] [PASSED] 0x5691 (DG2)
[18:15:57] [PASSED] 0x5692 (DG2)
[18:15:57] [PASSED] 0x56A5 (DG2)
[18:15:57] [PASSED] 0x56A6 (DG2)
[18:15:57] [PASSED] 0x56B0 (DG2)
[18:15:57] [PASSED] 0x56B1 (DG2)
[18:15:57] [PASSED] 0x56BA (DG2)
[18:15:57] [PASSED] 0x56BB (DG2)
[18:15:57] [PASSED] 0x56BC (DG2)
[18:15:57] [PASSED] 0x56BD (DG2)
[18:15:57] [PASSED] 0x5693 (DG2)
[18:15:57] [PASSED] 0x5694 (DG2)
[18:15:57] [PASSED] 0x5695 (DG2)
[18:15:57] [PASSED] 0x56A3 (DG2)
[18:15:57] [PASSED] 0x56A4 (DG2)
[18:15:57] [PASSED] 0x56B2 (DG2)
[18:15:57] [PASSED] 0x56B3 (DG2)
[18:15:57] [PASSED] 0x5696 (DG2)
[18:15:57] [PASSED] 0x5697 (DG2)
[18:15:57] [PASSED] 0xB69 (PVC)
[18:15:57] [PASSED] 0xB6E (PVC)
[18:15:57] [PASSED] 0xBD4 (PVC)
[18:15:57] [PASSED] 0xBD5 (PVC)
[18:15:57] [PASSED] 0xBD6 (PVC)
[18:15:57] [PASSED] 0xBD7 (PVC)
[18:15:57] [PASSED] 0xBD8 (PVC)
[18:15:57] [PASSED] 0xBD9 (PVC)
[18:15:57] [PASSED] 0xBDA (PVC)
[18:15:57] [PASSED] 0xBDB (PVC)
[18:15:57] [PASSED] 0xBE0 (PVC)
[18:15:57] [PASSED] 0xBE1 (PVC)
[18:15:57] [PASSED] 0xBE5 (PVC)
[18:15:57] [PASSED] 0x7D40 (METEORLAKE)
[18:15:57] [PASSED] 0x7D45 (METEORLAKE)
[18:15:57] [PASSED] 0x7D55 (METEORLAKE)
[18:15:57] [PASSED] 0x7D60 (METEORLAKE)
[18:15:57] [PASSED] 0x7DD5 (METEORLAKE)
[18:15:57] [PASSED] 0x6420 (LUNARLAKE)
[18:15:57] [PASSED] 0x64A0 (LUNARLAKE)
[18:15:57] [PASSED] 0x64B0 (LUNARLAKE)
[18:15:57] [PASSED] 0xE202 (BATTLEMAGE)
[18:15:57] [PASSED] 0xE209 (BATTLEMAGE)
[18:15:57] [PASSED] 0xE20B (BATTLEMAGE)
[18:15:57] [PASSED] 0xE20C (BATTLEMAGE)
[18:15:57] [PASSED] 0xE20D (BATTLEMAGE)
[18:15:57] [PASSED] 0xE210 (BATTLEMAGE)
[18:15:57] [PASSED] 0xE211 (BATTLEMAGE)
[18:15:57] [PASSED] 0xE212 (BATTLEMAGE)
[18:15:57] [PASSED] 0xE216 (BATTLEMAGE)
[18:15:57] [PASSED] 0xE220 (BATTLEMAGE)
[18:15:57] [PASSED] 0xE221 (BATTLEMAGE)
[18:15:57] [PASSED] 0xE222 (BATTLEMAGE)
[18:15:57] [PASSED] 0xE223 (BATTLEMAGE)
[18:15:57] [PASSED] 0xB080 (PANTHERLAKE)
[18:15:57] [PASSED] 0xB081 (PANTHERLAKE)
[18:15:57] [PASSED] 0xB082 (PANTHERLAKE)
[18:15:57] [PASSED] 0xB083 (PANTHERLAKE)
[18:15:57] [PASSED] 0xB084 (PANTHERLAKE)
[18:15:57] [PASSED] 0xB085 (PANTHERLAKE)
[18:15:57] [PASSED] 0xB086 (PANTHERLAKE)
[18:15:57] [PASSED] 0xB087 (PANTHERLAKE)
[18:15:57] [PASSED] 0xB08F (PANTHERLAKE)
[18:15:57] [PASSED] 0xB090 (PANTHERLAKE)
[18:15:57] [PASSED] 0xB0A0 (PANTHERLAKE)
[18:15:57] [PASSED] 0xB0B0 (PANTHERLAKE)
[18:15:57] [PASSED] 0xFD80 (PANTHERLAKE)
[18:15:57] [PASSED] 0xFD81 (PANTHERLAKE)
[18:15:57] ============= [PASSED] check_platform_gt_count =============
[18:15:57] ===================== [PASSED] xe_pci ======================
[18:15:57] =================== xe_rtp (2 subtests) ====================
[18:15:57] =============== xe_rtp_process_to_sr_tests  ================
[18:15:57] [PASSED] coalesce-same-reg
[18:15:57] [PASSED] no-match-no-add
[18:15:57] [PASSED] match-or
[18:15:57] [PASSED] match-or-xfail
[18:15:57] [PASSED] no-match-no-add-multiple-rules
[18:15:57] [PASSED] two-regs-two-entries
[18:15:57] [PASSED] clr-one-set-other
[18:15:57] [PASSED] set-field
[18:15:57] [PASSED] conflict-duplicate
[18:15:57] [PASSED] conflict-not-disjoint
[18:15:57] [PASSED] conflict-reg-type
[18:15:57] =========== [PASSED] xe_rtp_process_to_sr_tests ============
[18:15:57] ================== xe_rtp_process_tests  ===================
[18:15:57] [PASSED] active1
[18:15:57] [PASSED] active2
[18:15:57] [PASSED] active-inactive
[18:15:57] [PASSED] inactive-active
[18:15:57] [PASSED] inactive-1st_or_active-inactive
[18:15:57] [PASSED] inactive-2nd_or_active-inactive
[18:15:57] [PASSED] inactive-last_or_active-inactive
[18:15:57] [PASSED] inactive-no_or_active-inactive
[18:15:57] ============== [PASSED] xe_rtp_process_tests ===============
[18:15:57] ===================== [PASSED] xe_rtp ======================
[18:15:57] ==================== xe_wa (1 subtest) =====================
[18:15:57] ======================== xe_wa_gt  =========================
[18:15:57] [PASSED] TIGERLAKE B0
[18:15:57] [PASSED] DG1 A0
[18:15:57] [PASSED] DG1 B0
[18:15:57] [PASSED] ALDERLAKE_S A0
[18:15:57] [PASSED] ALDERLAKE_S B0
stty: 'standard input': Inappropriate ioctl for device
[18:15:57] [PASSED] ALDERLAKE_S C0
[18:15:57] [PASSED] ALDERLAKE_S D0
[18:15:57] [PASSED] ALDERLAKE_P A0
[18:15:57] [PASSED] ALDERLAKE_P B0
[18:15:57] [PASSED] ALDERLAKE_P C0
[18:15:57] [PASSED] ALDERLAKE_S RPLS D0
[18:15:57] [PASSED] ALDERLAKE_P RPLU E0
[18:15:57] [PASSED] DG2 G10 C0
[18:15:57] [PASSED] DG2 G11 B1
[18:15:57] [PASSED] DG2 G12 A1
[18:15:57] [PASSED] METEORLAKE 12.70(Xe_LPG) A0 13.00(Xe_LPM+) A0
[18:15:57] [PASSED] METEORLAKE 12.71(Xe_LPG) A0 13.00(Xe_LPM+) A0
[18:15:57] [PASSED] METEORLAKE 12.74(Xe_LPG+) A0 13.00(Xe_LPM+) A0
[18:15:57] [PASSED] LUNARLAKE 20.04(Xe2_LPG) A0 20.00(Xe2_LPM) A0
[18:15:57] [PASSED] LUNARLAKE 20.04(Xe2_LPG) B0 20.00(Xe2_LPM) A0
[18:15:57] [PASSED] BATTLEMAGE 20.01(Xe2_HPG) A0 13.01(Xe2_HPM) A1
[18:15:57] [PASSED] PANTHERLAKE 30.00(Xe3_LPG) A0 30.00(Xe3_LPM) A0
[18:15:57] ==================== [PASSED] xe_wa_gt =====================
[18:15:57] ====================== [PASSED] xe_wa ======================
[18:15:57] ============================================================
[18:15:57] Testing complete. Ran 306 tests: passed: 288, skipped: 18
[18:15:57] Elapsed time: 34.923s total, 4.214s configuring, 30.344s building, 0.333s running

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

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

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



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

* ✗ Xe.CI.BAT: failure for Fix a couple of wedge corner-case memory leaks (rev4)
  2025-10-14 18:09 [PATCH 0/6] Fix a couple of wedge corner-case memory leaks Stuart Summers
                   ` (7 preceding siblings ...)
  2025-10-14 18:16 ` ✓ CI.KUnit: success " Patchwork
@ 2025-10-14 19:13 ` Patchwork
  2025-10-14 21:14   ` Summers, Stuart
  2025-10-15  5:18 ` ✗ Xe.CI.Full: " Patchwork
  9 siblings, 1 reply; 19+ messages in thread
From: Patchwork @ 2025-10-14 19:13 UTC (permalink / raw)
  To: Stuart Summers; +Cc: intel-xe

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

== Series Details ==

Series: Fix a couple of wedge corner-case memory leaks (rev4)
URL   : https://patchwork.freedesktop.org/series/155352/
State : failure

== Summary ==

CI Bug Log - changes from xe-3920-b172f4e7a8beb0bae2feda7f7edfb49e661fd3be_BAT -> xe-pw-155352v4_BAT
====================================================

Summary
-------

  **FAILURE**

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

  

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

  No changes in participating hosts

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

  Here are the unknown changes that may have been introduced in xe-pw-155352v4_BAT:

### IGT changes ###

#### Possible regressions ####

  * igt@core_hotunplug@unbind-rebind:
    - bat-lnl-2:          [PASS][1] -> [ABORT][2]
   [1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3920-b172f4e7a8beb0bae2feda7f7edfb49e661fd3be/bat-lnl-2/igt@core_hotunplug@unbind-rebind.html
   [2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155352v4/bat-lnl-2/igt@core_hotunplug@unbind-rebind.html
    - bat-dg2-oem2:       [PASS][3] -> [ABORT][4]
   [3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3920-b172f4e7a8beb0bae2feda7f7edfb49e661fd3be/bat-dg2-oem2/igt@core_hotunplug@unbind-rebind.html
   [4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155352v4/bat-dg2-oem2/igt@core_hotunplug@unbind-rebind.html
    - bat-adlp-vm:        [PASS][5] -> [ABORT][6]
   [5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3920-b172f4e7a8beb0bae2feda7f7edfb49e661fd3be/bat-adlp-vm/igt@core_hotunplug@unbind-rebind.html
   [6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155352v4/bat-adlp-vm/igt@core_hotunplug@unbind-rebind.html
    - bat-lnl-1:          [PASS][7] -> [ABORT][8]
   [7]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3920-b172f4e7a8beb0bae2feda7f7edfb49e661fd3be/bat-lnl-1/igt@core_hotunplug@unbind-rebind.html
   [8]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155352v4/bat-lnl-1/igt@core_hotunplug@unbind-rebind.html

  * igt@sriov_basic@enable-vfs-autoprobe-on:
    - bat-bmg-2:          [PASS][9] -> [ABORT][10] +1 other test abort
   [9]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3920-b172f4e7a8beb0bae2feda7f7edfb49e661fd3be/bat-bmg-2/igt@sriov_basic@enable-vfs-autoprobe-on.html
   [10]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155352v4/bat-bmg-2/igt@sriov_basic@enable-vfs-autoprobe-on.html
    - bat-adlp-7:         [PASS][11] -> [ABORT][12] +1 other test abort
   [11]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3920-b172f4e7a8beb0bae2feda7f7edfb49e661fd3be/bat-adlp-7/igt@sriov_basic@enable-vfs-autoprobe-on.html
   [12]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155352v4/bat-adlp-7/igt@sriov_basic@enable-vfs-autoprobe-on.html

  * igt@sriov_basic@enable-vfs-autoprobe-on@numvfs-1:
    - bat-bmg-1:          [PASS][13] -> [ABORT][14] +1 other test abort
   [13]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3920-b172f4e7a8beb0bae2feda7f7edfb49e661fd3be/bat-bmg-1/igt@sriov_basic@enable-vfs-autoprobe-on@numvfs-1.html
   [14]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155352v4/bat-bmg-1/igt@sriov_basic@enable-vfs-autoprobe-on@numvfs-1.html
    - bat-atsm-2:         [PASS][15] -> [ABORT][16] +1 other test abort
   [15]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3920-b172f4e7a8beb0bae2feda7f7edfb49e661fd3be/bat-atsm-2/igt@sriov_basic@enable-vfs-autoprobe-on@numvfs-1.html
   [16]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155352v4/bat-atsm-2/igt@sriov_basic@enable-vfs-autoprobe-on@numvfs-1.html

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

  Here are the changes found in xe-pw-155352v4_BAT that come from known issues:

### IGT changes ###

#### Possible fixes ####

  * igt@kms_flip@basic-plain-flip@a-edp1:
    - bat-adlp-7:         [DMESG-WARN][17] ([Intel XE#4543]) -> [PASS][18] +1 other test pass
   [17]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3920-b172f4e7a8beb0bae2feda7f7edfb49e661fd3be/bat-adlp-7/igt@kms_flip@basic-plain-flip@a-edp1.html
   [18]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155352v4/bat-adlp-7/igt@kms_flip@basic-plain-flip@a-edp1.html

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


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

  * Linux: xe-3920-b172f4e7a8beb0bae2feda7f7edfb49e661fd3be -> xe-pw-155352v4

  IGT_8582: 8582
  xe-3920-b172f4e7a8beb0bae2feda7f7edfb49e661fd3be: b172f4e7a8beb0bae2feda7f7edfb49e661fd3be
  xe-pw-155352v4: 155352v4

== Logs ==

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

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

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

* Re: Xe.CI.BAT: failure for Fix a couple of wedge corner-case memory leaks (rev4)
  2025-10-14 19:13 ` ✗ Xe.CI.BAT: failure " Patchwork
@ 2025-10-14 21:14   ` Summers, Stuart
  0 siblings, 0 replies; 19+ messages in thread
From: Summers, Stuart @ 2025-10-14 21:14 UTC (permalink / raw)
  To: intel-xe@lists.freedesktop.org

On Tue, 2025-10-14 at 19:13 +0000, Patchwork wrote:
> Patch Details
> Series: Fix a couple of wedge corner-case memory leaks (rev4) URL:
> https://patchwork.freedesktop.org/series/155352/ State: failure
> Details:
> https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155352v4/index.html 
> CI Bug Log - changes from xe-3920-
> b172f4e7a8beb0bae2feda7f7edfb49e661fd3be_BAT -> xe-pw-
> 155352v4_BATSummaryFAILURE
> Serious unknown changes coming with xe-pw-155352v4_BAT absolutely
> need to be
>  verified manually.
> If you think the reported changes have nothing to do with the changes
>  introduced in xe-pw-155352v4_BAT, please notify your bug team
> (I915-ci-infra@lists.freedesktop.org) to allow them
>  to document this new failure mode, which will reduce false positives
> in CI.
> Participating hosts (10 -> 10)No changes in participating hosts
> Possible new issuesHere are the unknown changes that may have been
> introduced in xe-pw-155352v4_BAT:
> IGT changesPossible regressions *
> igt@core_hotunplug@unbind-rebind:bat-lnl-2: PASS -> ABORTbat-dg2-
> oem2: PASS -> ABORTbat-adlp-vm: PASS -> ABORTbat-lnl-1: PASS -> ABORT
>  * igt@sriov_basic@enable-vfs-autoprobe-on:bat-bmg-2: PASS -> ABORT
> +1 other test abortbat-adlp-7: PASS -> ABORT +1 other test abort
>  * igt@sriov_basic@enable-vfs-autoprobe-on@numvfs-1:bat-bmg-1: PASS -
> > ABORT +1 other test abortbat-atsm-2: PASS -> ABORT +1 other test

I'm not sure what's going on here exactly (speaking for all of the
above). I ran each of these on a PTL at least and they all look ok. I'm
working on checking this out on at least a BMG.

Thanks,
Stuart

> abort
> Known issuesHere are the changes found in xe-pw-155352v4_BAT that
> come from known issues:
> IGT changesPossible fixes * igt@kms_flip@basic-plain-flip@a-edp1:bat-
> adlp-7: DMESG-WARN (Intel XE#4543) -> PASS +1 other test pass
> Build changes * Linux: xe-3920-
> b172f4e7a8beb0bae2feda7f7edfb49e661fd3be -> xe-pw-155352v4
> IGT_8582: 8582
>  xe-3920-b172f4e7a8beb0bae2feda7f7edfb49e661fd3be:
> b172f4e7a8beb0bae2feda7f7edfb49e661fd3be
>  xe-pw-155352v4: 155352v4


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

* Re: [PATCH 5/6] drm/xe: Correct migration VM teardown order
  2025-10-14 18:09 ` [PATCH 5/6] drm/xe: Correct migration VM teardown order Stuart Summers
@ 2025-10-15  0:59   ` Matthew Brost
  2025-10-15 17:55     ` Summers, Stuart
  0 siblings, 1 reply; 19+ messages in thread
From: Matthew Brost @ 2025-10-15  0:59 UTC (permalink / raw)
  To: Stuart Summers; +Cc: intel-xe

On Tue, Oct 14, 2025 at 06:09:26PM +0000, Stuart Summers wrote:
> Adjust the sequence of the migration teardown to match what
> is happening in the init() function.
> 
> Signed-off-by: Stuart Summers <stuart.summers@intel.com>
> ---
>  drivers/gpu/drm/xe/xe_migrate.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/xe/xe_migrate.c b/drivers/gpu/drm/xe/xe_migrate.c
> index 7345a5b65169..b1747e442a7b 100644
> --- a/drivers/gpu/drm/xe/xe_migrate.c
> +++ b/drivers/gpu/drm/xe/xe_migrate.c
> @@ -100,8 +100,8 @@ static void xe_migrate_fini(void *arg)
>  	xe_bo_put(m->pt_bo);
>  	drm_suballoc_manager_fini(&m->vm_update_sa);
>  	mutex_destroy(&m->job_mutex);
> -	xe_vm_close_and_put(m->q->vm);
>  	xe_exec_queue_put(m->q);
> +	xe_vm_close_and_put(m->q->vm);

You have UAF here as m->q can be destroyed by xe_exec_queue_put.

If you want to switch up this ordering that is fine but m->q->vm needs
to stored on the stack before xe_exec_queue_put.

Matt

>  }
>  
>  static u64 xe_migrate_vm_addr(u64 slot, u32 level)
> -- 
> 2.34.1
> 

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

* ✗ Xe.CI.Full: failure for Fix a couple of wedge corner-case memory leaks (rev4)
  2025-10-14 18:09 [PATCH 0/6] Fix a couple of wedge corner-case memory leaks Stuart Summers
                   ` (8 preceding siblings ...)
  2025-10-14 19:13 ` ✗ Xe.CI.BAT: failure " Patchwork
@ 2025-10-15  5:18 ` Patchwork
  9 siblings, 0 replies; 19+ messages in thread
From: Patchwork @ 2025-10-15  5:18 UTC (permalink / raw)
  To: Stuart Summers; +Cc: intel-xe

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

== Series Details ==

Series: Fix a couple of wedge corner-case memory leaks (rev4)
URL   : https://patchwork.freedesktop.org/series/155352/
State : failure

== Summary ==

CI Bug Log - changes from xe-3920-b172f4e7a8beb0bae2feda7f7edfb49e661fd3be_FULL -> xe-pw-155352v4_FULL
====================================================

Summary
-------

  **FAILURE**

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

  No changes in participating hosts

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

  Here are the unknown changes that may have been introduced in xe-pw-155352v4_FULL:

### IGT changes ###

#### Possible regressions ####

  * igt@core_hotunplug@hotrebind:
    - shard-adlp:         [PASS][1] -> [ABORT][2] +4 other tests abort
   [1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3920-b172f4e7a8beb0bae2feda7f7edfb49e661fd3be/shard-adlp-6/igt@core_hotunplug@hotrebind.html
   [2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155352v4/shard-adlp-8/igt@core_hotunplug@hotrebind.html

  * igt@xe_fault_injection@inject-fault-probe-function-xe_mmio_probe_early:
    - shard-dg2-set2:     [PASS][3] -> [ABORT][4] +18 other tests abort
   [3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3920-b172f4e7a8beb0bae2feda7f7edfb49e661fd3be/shard-dg2-434/igt@xe_fault_injection@inject-fault-probe-function-xe_mmio_probe_early.html
   [4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155352v4/shard-dg2-466/igt@xe_fault_injection@inject-fault-probe-function-xe_mmio_probe_early.html

  * igt@xe_fault_injection@inject-fault-probe-function-xe_tile_init_early:
    - shard-adlp:         NOTRUN -> [ABORT][5] +1 other test abort
   [5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155352v4/shard-adlp-9/igt@xe_fault_injection@inject-fault-probe-function-xe_tile_init_early.html

  * igt@xe_fault_injection@vm-bind-fail-vm_bind_ioctl_ops_execute:
    - shard-lnl:          [PASS][6] -> [ABORT][7] +19 other tests abort
   [6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3920-b172f4e7a8beb0bae2feda7f7edfb49e661fd3be/shard-lnl-2/igt@xe_fault_injection@vm-bind-fail-vm_bind_ioctl_ops_execute.html
   [7]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155352v4/shard-lnl-7/igt@xe_fault_injection@vm-bind-fail-vm_bind_ioctl_ops_execute.html

  * igt@xe_pmu@engine-activity-most-load-idle:
    - shard-bmg:          [PASS][8] -> [ABORT][9] +21 other tests abort
   [8]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3920-b172f4e7a8beb0bae2feda7f7edfb49e661fd3be/shard-bmg-2/igt@xe_pmu@engine-activity-most-load-idle.html
   [9]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155352v4/shard-bmg-8/igt@xe_pmu@engine-activity-most-load-idle.html

  
#### Warnings ####

  * igt@xe_configfs@survivability-mode:
    - shard-dg2-set2:     [SKIP][10] ([Intel XE#6010]) -> [ABORT][11]
   [10]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3920-b172f4e7a8beb0bae2feda7f7edfb49e661fd3be/shard-dg2-434/igt@xe_configfs@survivability-mode.html
   [11]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155352v4/shard-dg2-432/igt@xe_configfs@survivability-mode.html
    - shard-lnl:          [SKIP][12] ([Intel XE#6010]) -> [ABORT][13]
   [12]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3920-b172f4e7a8beb0bae2feda7f7edfb49e661fd3be/shard-lnl-5/igt@xe_configfs@survivability-mode.html
   [13]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155352v4/shard-lnl-2/igt@xe_configfs@survivability-mode.html

  
#### Suppressed ####

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

  * {igt@xe_configfs@engines-allowed-invalid}:
    - shard-dg2-set2:     [PASS][14] -> [ABORT][15] +1 other test abort
   [14]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3920-b172f4e7a8beb0bae2feda7f7edfb49e661fd3be/shard-dg2-435/igt@xe_configfs@engines-allowed-invalid.html
   [15]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155352v4/shard-dg2-432/igt@xe_configfs@engines-allowed-invalid.html

  * {igt@xe_fault_injection@inject-fault-probe-function-xe_wa_gt_init}:
    - shard-dg2-set2:     NOTRUN -> [ABORT][16]
   [16]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155352v4/shard-dg2-464/igt@xe_fault_injection@inject-fault-probe-function-xe_wa_gt_init.html
    - shard-lnl:          [PASS][17] -> [ABORT][18] +2 other tests abort
   [17]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3920-b172f4e7a8beb0bae2feda7f7edfb49e661fd3be/shard-lnl-2/igt@xe_fault_injection@inject-fault-probe-function-xe_wa_gt_init.html
   [18]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155352v4/shard-lnl-7/igt@xe_fault_injection@inject-fault-probe-function-xe_wa_gt_init.html

  * {igt@xe_pmu@engine-activity-accuracy-50}:
    - shard-adlp:         NOTRUN -> [ABORT][19] +2 other tests abort
   [19]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155352v4/shard-adlp-2/igt@xe_pmu@engine-activity-accuracy-50.html

  * {igt@xe_pmu@engine-activity-render-node-load-idle}:
    - shard-bmg:          [PASS][20] -> [ABORT][21] +8 other tests abort
   [20]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3920-b172f4e7a8beb0bae2feda7f7edfb49e661fd3be/shard-bmg-1/igt@xe_pmu@engine-activity-render-node-load-idle.html
   [21]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155352v4/shard-bmg-3/igt@xe_pmu@engine-activity-render-node-load-idle.html

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

  Here are the changes found in xe-pw-155352v4_FULL that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@kms_big_fb@x-tiled-max-hw-stride-32bpp-rotate-180-hflip-async-flip:
    - shard-adlp:         NOTRUN -> [DMESG-FAIL][22] ([Intel XE#4543]) +2 other tests dmesg-fail
   [22]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155352v4/shard-adlp-9/igt@kms_big_fb@x-tiled-max-hw-stride-32bpp-rotate-180-hflip-async-flip.html

  * igt@kms_big_fb@y-tiled-8bpp-rotate-90:
    - shard-adlp:         NOTRUN -> [SKIP][23] ([Intel XE#316]) +1 other test skip
   [23]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155352v4/shard-adlp-9/igt@kms_big_fb@y-tiled-8bpp-rotate-90.html

  * igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-180-hflip:
    - shard-dg2-set2:     NOTRUN -> [SKIP][24] ([Intel XE#1124])
   [24]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155352v4/shard-dg2-464/igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-180-hflip.html

  * igt@kms_big_fb@yf-tiled-16bpp-rotate-90:
    - shard-adlp:         NOTRUN -> [SKIP][25] ([Intel XE#1124]) +2 other tests skip
   [25]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155352v4/shard-adlp-2/igt@kms_big_fb@yf-tiled-16bpp-rotate-90.html

  * igt@kms_bw@linear-tiling-4-displays-2560x1440p:
    - shard-adlp:         NOTRUN -> [SKIP][26] ([Intel XE#367])
   [26]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155352v4/shard-adlp-9/igt@kms_bw@linear-tiling-4-displays-2560x1440p.html

  * igt@kms_ccs@bad-aux-stride-yf-tiled-ccs@pipe-b-hdmi-a-1:
    - shard-adlp:         NOTRUN -> [SKIP][27] ([Intel XE#787]) +14 other tests skip
   [27]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155352v4/shard-adlp-2/igt@kms_ccs@bad-aux-stride-yf-tiled-ccs@pipe-b-hdmi-a-1.html

  * igt@kms_ccs@bad-aux-stride-yf-tiled-ccs@pipe-d-hdmi-a-1:
    - shard-adlp:         NOTRUN -> [SKIP][28] ([Intel XE#455] / [Intel XE#787]) +9 other tests skip
   [28]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155352v4/shard-adlp-2/igt@kms_ccs@bad-aux-stride-yf-tiled-ccs@pipe-d-hdmi-a-1.html

  * igt@kms_ccs@crc-primary-basic-4-tiled-lnl-ccs:
    - shard-dg2-set2:     NOTRUN -> [SKIP][29] ([Intel XE#2907])
   [29]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155352v4/shard-dg2-464/igt@kms_ccs@crc-primary-basic-4-tiled-lnl-ccs.html

  * igt@kms_ccs@crc-sprite-planes-basic-4-tiled-bmg-ccs:
    - shard-adlp:         NOTRUN -> [SKIP][30] ([Intel XE#2907]) +2 other tests skip
   [30]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155352v4/shard-adlp-9/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-bmg-ccs.html

  * igt@kms_chamelium_edid@vga-edid-read:
    - shard-dg2-set2:     NOTRUN -> [SKIP][31] ([Intel XE#373]) +1 other test skip
   [31]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155352v4/shard-dg2-464/igt@kms_chamelium_edid@vga-edid-read.html

  * igt@kms_chamelium_hpd@hdmi-hpd-fast:
    - shard-adlp:         NOTRUN -> [SKIP][32] ([Intel XE#373]) +3 other tests skip
   [32]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155352v4/shard-adlp-2/igt@kms_chamelium_hpd@hdmi-hpd-fast.html

  * igt@kms_cursor_legacy@2x-long-nonblocking-modeset-vs-cursor-atomic:
    - shard-adlp:         NOTRUN -> [SKIP][33] ([Intel XE#309]) +1 other test skip
   [33]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155352v4/shard-adlp-9/igt@kms_cursor_legacy@2x-long-nonblocking-modeset-vs-cursor-atomic.html

  * igt@kms_dp_aux_dev:
    - shard-bmg:          [PASS][34] -> [SKIP][35] ([Intel XE#3009])
   [34]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3920-b172f4e7a8beb0bae2feda7f7edfb49e661fd3be/shard-bmg-5/igt@kms_dp_aux_dev.html
   [35]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155352v4/shard-bmg-6/igt@kms_dp_aux_dev.html

  * igt@kms_flip@2x-flip-vs-dpms-on-nop-interruptible:
    - shard-adlp:         NOTRUN -> [SKIP][36] ([Intel XE#310]) +4 other tests skip
   [36]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155352v4/shard-adlp-6/igt@kms_flip@2x-flip-vs-dpms-on-nop-interruptible.html

  * igt@kms_flip@plain-flip-interruptible@b-hdmi-a1:
    - shard-adlp:         NOTRUN -> [DMESG-WARN][37] ([Intel XE#4543]) +1 other test dmesg-warn
   [37]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155352v4/shard-adlp-2/igt@kms_flip@plain-flip-interruptible@b-hdmi-a1.html

  * igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytilegen12rcccs-upscaling:
    - shard-dg2-set2:     NOTRUN -> [SKIP][38] ([Intel XE#455]) +1 other test skip
   [38]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155352v4/shard-dg2-464/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytilegen12rcccs-upscaling.html

  * igt@kms_frontbuffer_tracking@drrs-1p-primscrn-spr-indfb-fullscreen:
    - shard-adlp:         NOTRUN -> [SKIP][39] ([Intel XE#651]) +4 other tests skip
   [39]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155352v4/shard-adlp-9/igt@kms_frontbuffer_tracking@drrs-1p-primscrn-spr-indfb-fullscreen.html

  * igt@kms_frontbuffer_tracking@drrs-2p-primscrn-indfb-pgflip-blt:
    - shard-adlp:         NOTRUN -> [SKIP][40] ([Intel XE#656]) +15 other tests skip
   [40]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155352v4/shard-adlp-9/igt@kms_frontbuffer_tracking@drrs-2p-primscrn-indfb-pgflip-blt.html

  * igt@kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-pri-shrfb-draw-mmap-wc:
    - shard-dg2-set2:     NOTRUN -> [SKIP][41] ([Intel XE#651]) +2 other tests skip
   [41]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155352v4/shard-dg2-464/igt@kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-pri-shrfb-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@fbcpsr-indfb-scaledprimary:
    - shard-adlp:         NOTRUN -> [SKIP][42] ([Intel XE#653]) +7 other tests skip
   [42]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155352v4/shard-adlp-2/igt@kms_frontbuffer_tracking@fbcpsr-indfb-scaledprimary.html

  * igt@kms_frontbuffer_tracking@psr-2p-primscrn-shrfb-msflip-blt:
    - shard-dg2-set2:     NOTRUN -> [SKIP][43] ([Intel XE#653]) +5 other tests skip
   [43]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155352v4/shard-dg2-464/igt@kms_frontbuffer_tracking@psr-2p-primscrn-shrfb-msflip-blt.html

  * igt@kms_hdr@bpc-switch:
    - shard-adlp:         NOTRUN -> [SKIP][44] ([Intel XE#455]) +4 other tests skip
   [44]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155352v4/shard-adlp-2/igt@kms_hdr@bpc-switch.html

  * igt@kms_joiner@basic-big-joiner:
    - shard-adlp:         NOTRUN -> [SKIP][45] ([Intel XE#346])
   [45]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155352v4/shard-adlp-9/igt@kms_joiner@basic-big-joiner.html

  * igt@kms_pm_backlight@brightness-with-dpms:
    - shard-adlp:         NOTRUN -> [SKIP][46] ([Intel XE#2938])
   [46]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155352v4/shard-adlp-9/igt@kms_pm_backlight@brightness-with-dpms.html
    - shard-dg2-set2:     NOTRUN -> [SKIP][47] ([Intel XE#2938])
   [47]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155352v4/shard-dg2-464/igt@kms_pm_backlight@brightness-with-dpms.html

  * igt@kms_pm_backlight@fade-with-dpms:
    - shard-adlp:         NOTRUN -> [SKIP][48] ([Intel XE#870])
   [48]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155352v4/shard-adlp-2/igt@kms_pm_backlight@fade-with-dpms.html

  * igt@kms_pm_dc@dc5-retention-flops:
    - shard-adlp:         NOTRUN -> [SKIP][49] ([Intel XE#3309])
   [49]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155352v4/shard-adlp-6/igt@kms_pm_dc@dc5-retention-flops.html

  * igt@kms_psr2_sf@fbc-pr-plane-move-sf-dmg-area:
    - shard-adlp:         NOTRUN -> [SKIP][50] ([Intel XE#1406] / [Intel XE#1489]) +1 other test skip
   [50]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155352v4/shard-adlp-9/igt@kms_psr2_sf@fbc-pr-plane-move-sf-dmg-area.html

  * igt@kms_psr@fbc-pr-primary-render:
    - shard-dg2-set2:     NOTRUN -> [SKIP][51] ([Intel XE#1406] / [Intel XE#2850] / [Intel XE#929]) +1 other test skip
   [51]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155352v4/shard-dg2-464/igt@kms_psr@fbc-pr-primary-render.html

  * igt@kms_psr@pr-primary-page-flip:
    - shard-adlp:         NOTRUN -> [SKIP][52] ([Intel XE#1406] / [Intel XE#2850] / [Intel XE#929]) +8 other tests skip
   [52]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155352v4/shard-adlp-6/igt@kms_psr@pr-primary-page-flip.html

  * igt@kms_rotation_crc@primary-rotation-270:
    - shard-adlp:         NOTRUN -> [SKIP][53] ([Intel XE#3414])
   [53]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155352v4/shard-adlp-6/igt@kms_rotation_crc@primary-rotation-270.html

  * igt@xe_eudebug@basic-vm-bind-discovery:
    - shard-adlp:         NOTRUN -> [SKIP][54] ([Intel XE#4837] / [Intel XE#5565]) +8 other tests skip
   [54]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155352v4/shard-adlp-9/igt@xe_eudebug@basic-vm-bind-discovery.html

  * igt@xe_eudebug@discovery-empty-clients:
    - shard-dg2-set2:     NOTRUN -> [SKIP][55] ([Intel XE#4837])
   [55]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155352v4/shard-dg2-464/igt@xe_eudebug@discovery-empty-clients.html

  * igt@xe_evict@evict-mixed-many-threads-large:
    - shard-adlp:         NOTRUN -> [SKIP][56] ([Intel XE#261])
   [56]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155352v4/shard-adlp-2/igt@xe_evict@evict-mixed-many-threads-large.html

  * igt@xe_evict@evict-small-multi-vm-cm:
    - shard-adlp:         NOTRUN -> [SKIP][57] ([Intel XE#261] / [Intel XE#688])
   [57]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155352v4/shard-adlp-9/igt@xe_evict@evict-small-multi-vm-cm.html

  * igt@xe_exec_basic@multigpu-once-userptr-invalidate-race:
    - shard-adlp:         NOTRUN -> [SKIP][58] ([Intel XE#1392] / [Intel XE#5575]) +4 other tests skip
   [58]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155352v4/shard-adlp-6/igt@xe_exec_basic@multigpu-once-userptr-invalidate-race.html

  * igt@xe_exec_fault_mode@invalid-va:
    - shard-adlp:         NOTRUN -> [SKIP][59] ([Intel XE#288] / [Intel XE#5561]) +8 other tests skip
   [59]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155352v4/shard-adlp-2/igt@xe_exec_fault_mode@invalid-va.html

  * igt@xe_exec_fault_mode@many-userptr-rebind-imm:
    - shard-dg2-set2:     NOTRUN -> [SKIP][60] ([Intel XE#288]) +3 other tests skip
   [60]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155352v4/shard-dg2-464/igt@xe_exec_fault_mode@many-userptr-rebind-imm.html

  * igt@xe_exec_system_allocator@many-execqueues-mmap-nomemset:
    - shard-adlp:         NOTRUN -> [SKIP][61] ([Intel XE#4915]) +99 other tests skip
   [61]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155352v4/shard-adlp-9/igt@xe_exec_system_allocator@many-execqueues-mmap-nomemset.html

  * igt@xe_exec_system_allocator@threads-many-new-busy:
    - shard-dg2-set2:     NOTRUN -> [SKIP][62] ([Intel XE#4915]) +25 other tests skip
   [62]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155352v4/shard-dg2-464/igt@xe_exec_system_allocator@threads-many-new-busy.html

  * igt@xe_mmap@pci-membarrier-parallel:
    - shard-adlp:         NOTRUN -> [SKIP][63] ([Intel XE#5100]) +1 other test skip
   [63]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155352v4/shard-adlp-9/igt@xe_mmap@pci-membarrier-parallel.html

  * igt@xe_oa@blocking:
    - shard-adlp:         NOTRUN -> [SKIP][64] ([Intel XE#3573]) +3 other tests skip
   [64]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155352v4/shard-adlp-2/igt@xe_oa@blocking.html

  * igt@xe_oa@polling-small-buf:
    - shard-dg2-set2:     NOTRUN -> [SKIP][65] ([Intel XE#3573]) +1 other test skip
   [65]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155352v4/shard-dg2-464/igt@xe_oa@polling-small-buf.html

  * igt@xe_pm@d3cold-basic:
    - shard-adlp:         NOTRUN -> [SKIP][66] ([Intel XE#2284] / [Intel XE#366])
   [66]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155352v4/shard-adlp-6/igt@xe_pm@d3cold-basic.html

  * igt@xe_pxp@pxp-stale-bo-bind-post-termination-irq:
    - shard-adlp:         NOTRUN -> [SKIP][67] ([Intel XE#4733] / [Intel XE#5594]) +1 other test skip
   [67]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155352v4/shard-adlp-2/igt@xe_pxp@pxp-stale-bo-bind-post-termination-irq.html

  * igt@xe_query@multigpu-query-mem-usage:
    - shard-adlp:         NOTRUN -> [SKIP][68] ([Intel XE#944])
   [68]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155352v4/shard-adlp-9/igt@xe_query@multigpu-query-mem-usage.html

  * igt@xe_render_copy@render-stress-1-copies:
    - shard-adlp:         NOTRUN -> [SKIP][69] ([Intel XE#4814] / [Intel XE#5614])
   [69]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155352v4/shard-adlp-9/igt@xe_render_copy@render-stress-1-copies.html

  
#### Possible fixes ####

  * igt@kms_async_flips@alternate-sync-async-flip-atomic@pipe-a-dp-2:
    - shard-bmg:          [FAIL][70] ([Intel XE#3718] / [Intel XE#6078]) -> [PASS][71] +1 other test pass
   [70]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3920-b172f4e7a8beb0bae2feda7f7edfb49e661fd3be/shard-bmg-2/igt@kms_async_flips@alternate-sync-async-flip-atomic@pipe-a-dp-2.html
   [71]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155352v4/shard-bmg-8/igt@kms_async_flips@alternate-sync-async-flip-atomic@pipe-a-dp-2.html

  * igt@kms_feature_discovery@display-2x:
    - shard-bmg:          [SKIP][72] ([Intel XE#2373]) -> [PASS][73]
   [72]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3920-b172f4e7a8beb0bae2feda7f7edfb49e661fd3be/shard-bmg-6/igt@kms_feature_discovery@display-2x.html
   [73]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155352v4/shard-bmg-1/igt@kms_feature_discovery@display-2x.html

  * igt@kms_flip@2x-nonexisting-fb:
    - shard-bmg:          [SKIP][74] ([Intel XE#2316]) -> [PASS][75] +2 other tests pass
   [74]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3920-b172f4e7a8beb0bae2feda7f7edfb49e661fd3be/shard-bmg-6/igt@kms_flip@2x-nonexisting-fb.html
   [75]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155352v4/shard-bmg-7/igt@kms_flip@2x-nonexisting-fb.html

  * igt@kms_flip@wf_vblank-ts-check-interruptible@a-dp2:
    - shard-bmg:          [FAIL][76] ([Intel XE#5338] / [Intel XE#5416]) -> [PASS][77] +1 other test pass
   [76]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3920-b172f4e7a8beb0bae2feda7f7edfb49e661fd3be/shard-bmg-2/igt@kms_flip@wf_vblank-ts-check-interruptible@a-dp2.html
   [77]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155352v4/shard-bmg-2/igt@kms_flip@wf_vblank-ts-check-interruptible@a-dp2.html

  * {igt@xe_exec_system_allocator@pat-index-madvise-pat-idx-uc-multi-vma}:
    - shard-lnl:          [FAIL][78] ([Intel XE#5625]) -> [PASS][79]
   [78]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3920-b172f4e7a8beb0bae2feda7f7edfb49e661fd3be/shard-lnl-2/igt@xe_exec_system_allocator@pat-index-madvise-pat-idx-uc-multi-vma.html
   [79]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155352v4/shard-lnl-7/igt@xe_exec_system_allocator@pat-index-madvise-pat-idx-uc-multi-vma.html

  
#### Warnings ####

  * igt@kms_frontbuffer_tracking@drrs-2p-primscrn-spr-indfb-draw-render:
    - shard-bmg:          [SKIP][80] ([Intel XE#2311]) -> [SKIP][81] ([Intel XE#2312]) +1 other test skip
   [80]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3920-b172f4e7a8beb0bae2feda7f7edfb49e661fd3be/shard-bmg-5/igt@kms_frontbuffer_tracking@drrs-2p-primscrn-spr-indfb-draw-render.html
   [81]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155352v4/shard-bmg-6/igt@kms_frontbuffer_tracking@drrs-2p-primscrn-spr-indfb-draw-render.html

  * igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-fullscreen:
    - shard-bmg:          [SKIP][82] ([Intel XE#2312]) -> [SKIP][83] ([Intel XE#5390]) +3 other tests skip
   [82]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3920-b172f4e7a8beb0bae2feda7f7edfb49e661fd3be/shard-bmg-6/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-fullscreen.html
   [83]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155352v4/shard-bmg-1/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-fullscreen.html

  * igt@kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-pri-shrfb-draw-mmap-wc:
    - shard-bmg:          [SKIP][84] ([Intel XE#2312]) -> [SKIP][85] ([Intel XE#2311]) +2 other tests skip
   [84]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3920-b172f4e7a8beb0bae2feda7f7edfb49e661fd3be/shard-bmg-6/igt@kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-pri-shrfb-draw-mmap-wc.html
   [85]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155352v4/shard-bmg-1/igt@kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-pri-shrfb-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-indfb-plflip-blt:
    - shard-bmg:          [SKIP][86] ([Intel XE#2312]) -> [SKIP][87] ([Intel XE#2313]) +2 other tests skip
   [86]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3920-b172f4e7a8beb0bae2feda7f7edfb49e661fd3be/shard-bmg-6/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-indfb-plflip-blt.html
   [87]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155352v4/shard-bmg-1/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-indfb-plflip-blt.html

  * igt@kms_plane_multiple@2x-tiling-yf:
    - shard-bmg:          [SKIP][88] ([Intel XE#4596]) -> [SKIP][89] ([Intel XE#5021])
   [88]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3920-b172f4e7a8beb0bae2feda7f7edfb49e661fd3be/shard-bmg-6/igt@kms_plane_multiple@2x-tiling-yf.html
   [89]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-155352v4/shard-bmg-1/igt@kms_plane_multiple@2x-tiling-yf.html

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

  [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#1489]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1489
  [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#2312]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2312
  [Intel XE#2313]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2313
  [Intel XE#2316]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2316
  [Intel XE#2373]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2373
  [Intel XE#261]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/261
  [Intel XE#2850]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2850
  [Intel XE#288]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/288
  [Intel XE#2907]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2907
  [Intel XE#2938]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2938
  [Intel XE#3009]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3009
  [Intel XE#309]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/309
  [Intel XE#310]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/310
  [Intel XE#316]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/316
  [Intel XE#3309]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3309
  [Intel XE#3414]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3414
  [Intel XE#346]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/346
  [Intel XE#3573]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3573
  [Intel XE#366]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/366
  [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#4543]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4543
  [Intel XE#455]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/455
  [Intel XE#4596]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4596
  [Intel XE#4733]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4733
  [Intel XE#4814]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4814
  [Intel XE#4837]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4837
  [Intel XE#4915]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4915
  [Intel XE#5021]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5021
  [Intel XE#5100]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5100
  [Intel XE#5300]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5300
  [Intel XE#5338]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5338
  [Intel XE#5390]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5390
  [Intel XE#5416]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5416
  [Intel XE#5561]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5561
  [Intel XE#5565]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5565
  [Intel XE#5575]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5575
  [Intel XE#5594]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5594
  [Intel XE#5614]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5614
  [Intel XE#5625]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5625
  [Intel XE#6010]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6010
  [Intel XE#6078]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6078
  [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#653]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/653
  [Intel XE#656]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/656
  [Intel XE#688]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/688
  [Intel XE#787]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/787
  [Intel XE#870]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/870
  [Intel XE#929]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/929
  [Intel XE#944]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/944


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

  * Linux: xe-3920-b172f4e7a8beb0bae2feda7f7edfb49e661fd3be -> xe-pw-155352v4

  IGT_8582: 8582
  xe-3920-b172f4e7a8beb0bae2feda7f7edfb49e661fd3be: b172f4e7a8beb0bae2feda7f7edfb49e661fd3be
  xe-pw-155352v4: 155352v4

== Logs ==

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

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

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

* Re: [PATCH 5/6] drm/xe: Correct migration VM teardown order
  2025-10-15  0:59   ` Matthew Brost
@ 2025-10-15 17:55     ` Summers, Stuart
  0 siblings, 0 replies; 19+ messages in thread
From: Summers, Stuart @ 2025-10-15 17:55 UTC (permalink / raw)
  To: Brost, Matthew; +Cc: intel-xe@lists.freedesktop.org

On Tue, 2025-10-14 at 17:59 -0700, Matthew Brost wrote:
> On Tue, Oct 14, 2025 at 06:09:26PM +0000, Stuart Summers wrote:
> > Adjust the sequence of the migration teardown to match what
> > is happening in the init() function.
> > 
> > Signed-off-by: Stuart Summers <stuart.summers@intel.com>
> > ---
> >  drivers/gpu/drm/xe/xe_migrate.c | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> > 
> > diff --git a/drivers/gpu/drm/xe/xe_migrate.c
> > b/drivers/gpu/drm/xe/xe_migrate.c
> > index 7345a5b65169..b1747e442a7b 100644
> > --- a/drivers/gpu/drm/xe/xe_migrate.c
> > +++ b/drivers/gpu/drm/xe/xe_migrate.c
> > @@ -100,8 +100,8 @@ static void xe_migrate_fini(void *arg)
> >         xe_bo_put(m->pt_bo);
> >         drm_suballoc_manager_fini(&m->vm_update_sa);
> >         mutex_destroy(&m->job_mutex);
> > -       xe_vm_close_and_put(m->q->vm);
> >         xe_exec_queue_put(m->q);
> > +       xe_vm_close_and_put(m->q->vm);
> 
> You have UAF here as m->q can be destroyed by xe_exec_queue_put.
> 
> If you want to switch up this ordering that is fine but m->q->vm
> needs
> to stored on the stack before xe_exec_queue_put.

Good catch Matt thanks. I'll fix and resubmit. Doing a little more
testing on BMG to make sure we don't have some regression here before I
post a new rev.

Thanks,
Stuart

> 
> Matt
> 
> >  }
> >  
> >  static u64 xe_migrate_vm_addr(u64 slot, u32 level)
> > -- 
> > 2.34.1
> > 


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

* Re: [PATCH 6/6] drm/xe: Clean up GuC software state after a wedge
  2025-10-14 18:09 ` [PATCH 6/6] drm/xe: Clean up GuC software state after a wedge Stuart Summers
@ 2025-10-15 19:45   ` Summers, Stuart
  2025-10-16  3:42     ` Matthew Brost
  0 siblings, 1 reply; 19+ messages in thread
From: Summers, Stuart @ 2025-10-15 19:45 UTC (permalink / raw)
  To: Summers, Stuart
  Cc: intel-xe@lists.freedesktop.org, Brost,  Matthew, Lin, Shuicheng

On Tue, 2025-10-14 at 18:09 +0000, Stuart Summers wrote:
> Comments also added to the code, but in the event of
> a wedge or a hardware failure while communication with
> GuC is outstanding (e.g. during a schedule disable or
> context deregistration), the driver doesn't automatically
> reset the software state as it would in a typical GT reset
> since we are trying to save the state for debug. However
> once the user unbinds the driver we still need to go through
> and clean everything up for these exec queues so we don't
> leak memory on the DRM side (e.g. LRC or LRC BO).
> 
> Add a kick start to the DRM scheduler to handle any outstanding
> messages on hold during the wedge and go through the GuC stop
> flow to simulate that reset on teardown.
> 
> Signed-off-by: Stuart Summers <stuart.summers@intel.com>

Please hold on review here. I think there's still something missing on
the wedge cleanup case that causes issues after wedging and then doing
binds/unbinds in a loop after. I'm working to resolve that and I'll
post a new series after.

Thanks,
Stuart

> ---
>  drivers/gpu/drm/xe/xe_guc_submit.c | 15 +++++++++++++++
>  1 file changed, 15 insertions(+)
> 
> diff --git a/drivers/gpu/drm/xe/xe_guc_submit.c
> b/drivers/gpu/drm/xe/xe_guc_submit.c
> index 5ec1e4a83d68..0bbae336c722 100644
> --- a/drivers/gpu/drm/xe/xe_guc_submit.c
> +++ b/drivers/gpu/drm/xe/xe_guc_submit.c
> @@ -276,6 +276,14 @@ static void guc_submit_fini(struct drm_device
> *drm, void *arg)
>         struct xe_gt *gt = guc_to_gt(guc);
>         int ret;
>  
> +       /*
> +        * If GuC stopped responding during deregistration
> +        * some queues can be left in a bad state. Ensure
> +        * these are all cleaned up by going through the
> +        * GuC software reset flow.
> +        */
> +       xe_guc_stop(guc);
> +
>         ret = wait_event_timeout(guc->submission_state.fini_wq,
>                                  xa_empty(&guc-
> >submission_state.exec_queue_lookup),
>                                  HZ * 5);
> @@ -295,6 +303,13 @@ static void guc_submit_wedged_fini(void *arg)
>  
>         mutex_lock(&guc->submission_state.lock);
>         xa_for_each(&guc->submission_state.exec_queue_lookup, index,
> q) {
> +               /*
> +                * Kick start the scheduler since some messages
> +                * might have been added while the scheduler was
> +                * stopped during a wedge event.
> +                */
> +               xe_sched_submission_start(&q->guc->sched);
> +
>                 if (exec_queue_wedged(q)) {
>                         mutex_unlock(&guc->submission_state.lock);
>                         xe_exec_queue_put(q);


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

* Re: [PATCH 6/6] drm/xe: Clean up GuC software state after a wedge
  2025-10-15 19:45   ` Summers, Stuart
@ 2025-10-16  3:42     ` Matthew Brost
  2025-10-16 17:50       ` Summers, Stuart
  0 siblings, 1 reply; 19+ messages in thread
From: Matthew Brost @ 2025-10-16  3:42 UTC (permalink / raw)
  To: Summers, Stuart; +Cc: intel-xe@lists.freedesktop.org, Lin, Shuicheng

On Wed, Oct 15, 2025 at 01:45:35PM -0600, Summers, Stuart wrote:
> On Tue, 2025-10-14 at 18:09 +0000, Stuart Summers wrote:
> > Comments also added to the code, but in the event of
> > a wedge or a hardware failure while communication with
> > GuC is outstanding (e.g. during a schedule disable or
> > context deregistration), the driver doesn't automatically
> > reset the software state as it would in a typical GT reset
> > since we are trying to save the state for debug. However
> > once the user unbinds the driver we still need to go through
> > and clean everything up for these exec queues so we don't
> > leak memory on the DRM side (e.g. LRC or LRC BO).
> > 
> > Add a kick start to the DRM scheduler to handle any outstanding
> > messages on hold during the wedge and go through the GuC stop
> > flow to simulate that reset on teardown.
> > 
> > Signed-off-by: Stuart Summers <stuart.summers@intel.com>
> 
> Please hold on review here. I think there's still something missing on
> the wedge cleanup case that causes issues after wedging and then doing
> binds/unbinds in a loop after. I'm working to resolve that and I'll
> post a new series after.
> 

Sure. Just couple of thoughts below which might help.

> Thanks,
> Stuart
> 
> > ---
> >  drivers/gpu/drm/xe/xe_guc_submit.c | 15 +++++++++++++++
> >  1 file changed, 15 insertions(+)
> > 
> > diff --git a/drivers/gpu/drm/xe/xe_guc_submit.c
> > b/drivers/gpu/drm/xe/xe_guc_submit.c
> > index 5ec1e4a83d68..0bbae336c722 100644
> > --- a/drivers/gpu/drm/xe/xe_guc_submit.c
> > +++ b/drivers/gpu/drm/xe/xe_guc_submit.c
> > @@ -276,6 +276,14 @@ static void guc_submit_fini(struct drm_device
> > *drm, void *arg)
> >         struct xe_gt *gt = guc_to_gt(guc);
> >         int ret;
> >  
> > +       /*
> > +        * If GuC stopped responding during deregistration
> > +        * some queues can be left in a bad state. Ensure
> > +        * these are all cleaned up by going through the
> > +        * GuC software reset flow.
> > +        */
> > +       xe_guc_stop(guc);
> > +

I think we'd need to restart here at minimuum after cleanup.

> >         ret = wait_event_timeout(guc->submission_state.fini_wq,
> >                                  xa_empty(&guc-
> > >submission_state.exec_queue_lookup),
> >                                  HZ * 5);
> > @@ -295,6 +303,13 @@ static void guc_submit_wedged_fini(void *arg)
> >  
> >         mutex_lock(&guc->submission_state.lock);
> >         xa_for_each(&guc->submission_state.exec_queue_lookup, index,
> > q) {
> > +               /*
> > +                * Kick start the scheduler since some messages
> > +                * might have been added while the scheduler was
> > +                * stopped during a wedge event.
> > +                */
> > +               xe_sched_submission_start(&q->guc->sched);
> > +

I don't think possible to get here with a stopped queue, I think it a
bug elsewhere if we do.

Matt

> >                 if (exec_queue_wedged(q)) {
> >                         mutex_unlock(&guc->submission_state.lock);
> >                         xe_exec_queue_put(q);
> 

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

* Re: [PATCH 6/6] drm/xe: Clean up GuC software state after a wedge
  2025-10-16  3:42     ` Matthew Brost
@ 2025-10-16 17:50       ` Summers, Stuart
  2025-10-16 22:10         ` Matthew Brost
  0 siblings, 1 reply; 19+ messages in thread
From: Summers, Stuart @ 2025-10-16 17:50 UTC (permalink / raw)
  To: Brost, Matthew; +Cc: intel-xe@lists.freedesktop.org, Lin, Shuicheng

On Wed, 2025-10-15 at 20:42 -0700, Matthew Brost wrote:
> On Wed, Oct 15, 2025 at 01:45:35PM -0600, Summers, Stuart wrote:
> > On Tue, 2025-10-14 at 18:09 +0000, Stuart Summers wrote:
> > > Comments also added to the code, but in the event of
> > > a wedge or a hardware failure while communication with
> > > GuC is outstanding (e.g. during a schedule disable or
> > > context deregistration), the driver doesn't automatically
> > > reset the software state as it would in a typical GT reset
> > > since we are trying to save the state for debug. However
> > > once the user unbinds the driver we still need to go through
> > > and clean everything up for these exec queues so we don't
> > > leak memory on the DRM side (e.g. LRC or LRC BO).
> > > 
> > > Add a kick start to the DRM scheduler to handle any outstanding
> > > messages on hold during the wedge and go through the GuC stop
> > > flow to simulate that reset on teardown.
> > > 
> > > Signed-off-by: Stuart Summers <stuart.summers@intel.com>
> > 
> > Please hold on review here. I think there's still something missing
> > on
> > the wedge cleanup case that causes issues after wedging and then
> > doing
> > binds/unbinds in a loop after. I'm working to resolve that and I'll
> > post a new series after.
> > 
> 
> Sure. Just couple of thoughts below which might help.
> 
> > Thanks,
> > Stuart
> > 
> > > ---
> > >  drivers/gpu/drm/xe/xe_guc_submit.c | 15 +++++++++++++++
> > >  1 file changed, 15 insertions(+)
> > > 
> > > diff --git a/drivers/gpu/drm/xe/xe_guc_submit.c
> > > b/drivers/gpu/drm/xe/xe_guc_submit.c
> > > index 5ec1e4a83d68..0bbae336c722 100644
> > > --- a/drivers/gpu/drm/xe/xe_guc_submit.c
> > > +++ b/drivers/gpu/drm/xe/xe_guc_submit.c
> > > @@ -276,6 +276,14 @@ static void guc_submit_fini(struct
> > > drm_device
> > > *drm, void *arg)
> > >         struct xe_gt *gt = guc_to_gt(guc);
> > >         int ret;
> > >  
> > > +       /*
> > > +        * If GuC stopped responding during deregistration
> > > +        * some queues can be left in a bad state. Ensure
> > > +        * these are all cleaned up by going through the
> > > +        * GuC software reset flow.
> > > +        */
> > > +       xe_guc_stop(guc);
> > > +
> 
> I think we'd need to restart here at minimuum after cleanup.

Yeah this was one of the key issues, just trying to find the right
pieces to insert here..

> 
> > >         ret = wait_event_timeout(guc->submission_state.fini_wq,
> > >                                  xa_empty(&guc-
> > > > submission_state.exec_queue_lookup),
> > >                                  HZ * 5);
> > > @@ -295,6 +303,13 @@ static void guc_submit_wedged_fini(void
> > > *arg)
> > >  
> > >         mutex_lock(&guc->submission_state.lock);
> > >         xa_for_each(&guc->submission_state.exec_queue_lookup,
> > > index,
> > > q) {
> > > +               /*
> > > +                * Kick start the scheduler since some messages
> > > +                * might have been added while the scheduler was
> > > +                * stopped during a wedge event.
> > > +                */
> > > +               xe_sched_submission_start(&q->guc->sched);
> > > +
> 
> I don't think possible to get here with a stopped queue, I think it a
> bug elsewhere if we do.

Hm.. so this would either be we went through a GT reset prior to the
wedge (which should have restarted at the end of that) - which isn't
the case here - or the job timed out and stopped the scheduler for that
queue. Seems like there might be a bug in that path...

Thanks,
Stuart

> 
> Matt
> 
> > >                 if (exec_queue_wedged(q)) {
> > >                         mutex_unlock(&guc-
> > > >submission_state.lock);
> > >                         xe_exec_queue_put(q);
> > 


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

* Re: [PATCH 6/6] drm/xe: Clean up GuC software state after a wedge
  2025-10-16 17:50       ` Summers, Stuart
@ 2025-10-16 22:10         ` Matthew Brost
  2025-10-17 14:48           ` Summers, Stuart
  0 siblings, 1 reply; 19+ messages in thread
From: Matthew Brost @ 2025-10-16 22:10 UTC (permalink / raw)
  To: Summers, Stuart; +Cc: intel-xe@lists.freedesktop.org, Lin, Shuicheng

On Thu, Oct 16, 2025 at 11:50:44AM -0600, Summers, Stuart wrote:
> On Wed, 2025-10-15 at 20:42 -0700, Matthew Brost wrote:
> > On Wed, Oct 15, 2025 at 01:45:35PM -0600, Summers, Stuart wrote:
> > > On Tue, 2025-10-14 at 18:09 +0000, Stuart Summers wrote:
> > > > Comments also added to the code, but in the event of
> > > > a wedge or a hardware failure while communication with
> > > > GuC is outstanding (e.g. during a schedule disable or
> > > > context deregistration), the driver doesn't automatically
> > > > reset the software state as it would in a typical GT reset
> > > > since we are trying to save the state for debug. However
> > > > once the user unbinds the driver we still need to go through
> > > > and clean everything up for these exec queues so we don't
> > > > leak memory on the DRM side (e.g. LRC or LRC BO).
> > > > 
> > > > Add a kick start to the DRM scheduler to handle any outstanding
> > > > messages on hold during the wedge and go through the GuC stop
> > > > flow to simulate that reset on teardown.
> > > > 
> > > > Signed-off-by: Stuart Summers <stuart.summers@intel.com>
> > > 
> > > Please hold on review here. I think there's still something missing
> > > on
> > > the wedge cleanup case that causes issues after wedging and then
> > > doing
> > > binds/unbinds in a loop after. I'm working to resolve that and I'll
> > > post a new series after.
> > > 
> > 
> > Sure. Just couple of thoughts below which might help.
> > 
> > > Thanks,
> > > Stuart
> > > 
> > > > ---
> > > >  drivers/gpu/drm/xe/xe_guc_submit.c | 15 +++++++++++++++
> > > >  1 file changed, 15 insertions(+)
> > > > 
> > > > diff --git a/drivers/gpu/drm/xe/xe_guc_submit.c
> > > > b/drivers/gpu/drm/xe/xe_guc_submit.c
> > > > index 5ec1e4a83d68..0bbae336c722 100644
> > > > --- a/drivers/gpu/drm/xe/xe_guc_submit.c
> > > > +++ b/drivers/gpu/drm/xe/xe_guc_submit.c
> > > > @@ -276,6 +276,14 @@ static void guc_submit_fini(struct
> > > > drm_device
> > > > *drm, void *arg)
> > > >         struct xe_gt *gt = guc_to_gt(guc);
> > > >         int ret;
> > > >  
> > > > +       /*
> > > > +        * If GuC stopped responding during deregistration
> > > > +        * some queues can be left in a bad state. Ensure
> > > > +        * these are all cleaned up by going through the
> > > > +        * GuC software reset flow.
> > > > +        */
> > > > +       xe_guc_stop(guc);
> > > > +
> > 
> > I think we'd need to restart here at minimuum after cleanup.
> 
> Yeah this was one of the key issues, just trying to find the right
> pieces to insert here..
> 
> > 
> > > >         ret = wait_event_timeout(guc->submission_state.fini_wq,
> > > >                                  xa_empty(&guc-
> > > > > submission_state.exec_queue_lookup),
> > > >                                  HZ * 5);
> > > > @@ -295,6 +303,13 @@ static void guc_submit_wedged_fini(void
> > > > *arg)
> > > >  
> > > >         mutex_lock(&guc->submission_state.lock);
> > > >         xa_for_each(&guc->submission_state.exec_queue_lookup,
> > > > index,
> > > > q) {
> > > > +               /*
> > > > +                * Kick start the scheduler since some messages
> > > > +                * might have been added while the scheduler was
> > > > +                * stopped during a wedge event.
> > > > +                */
> > > > +               xe_sched_submission_start(&q->guc->sched);
> > > > +
> > 
> > I don't think possible to get here with a stopped queue, I think it a
> > bug elsewhere if we do.
> 
> Hm.. so this would either be we went through a GT reset prior to the
> wedge (which should have restarted at the end of that) - which isn't
> the case here - or the job timed out and stopped the scheduler for that
> queue. Seems like there might be a bug in that path...
> 

The job timeout mechanism should always restart the queue. I just
checked, and it looks like there's a bug in the vf_recovery flows, but
that shouldn't affect this case. I did review the GT reset path, and if
that fails after xe_uc_stop is called, the queues are not
restarted—which is a problem. We likely need to call something like
xe_guc_submit_pause_abort (or a GT-layer equivalent) to restart the
queues. If we don’t it could lead to memory-unsafe behavior as things
will not get freed. This call should happen after wedging the device.

Matt 

> Thanks,
> Stuart
> 
> > 
> > Matt
> > 
> > > >                 if (exec_queue_wedged(q)) {
> > > >                         mutex_unlock(&guc-
> > > > >submission_state.lock);
> > > >                         xe_exec_queue_put(q);
> > > 
> 

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

* Re: [PATCH 6/6] drm/xe: Clean up GuC software state after a wedge
  2025-10-16 22:10         ` Matthew Brost
@ 2025-10-17 14:48           ` Summers, Stuart
  0 siblings, 0 replies; 19+ messages in thread
From: Summers, Stuart @ 2025-10-17 14:48 UTC (permalink / raw)
  To: Brost, Matthew; +Cc: intel-xe@lists.freedesktop.org, Lin, Shuicheng

On Thu, 2025-10-16 at 15:10 -0700, Matthew Brost wrote:
> On Thu, Oct 16, 2025 at 11:50:44AM -0600, Summers, Stuart wrote:
> > On Wed, 2025-10-15 at 20:42 -0700, Matthew Brost wrote:
> > > On Wed, Oct 15, 2025 at 01:45:35PM -0600, Summers, Stuart wrote:
> > > > On Tue, 2025-10-14 at 18:09 +0000, Stuart Summers wrote:
> > > > > Comments also added to the code, but in the event of
> > > > > a wedge or a hardware failure while communication with
> > > > > GuC is outstanding (e.g. during a schedule disable or
> > > > > context deregistration), the driver doesn't automatically
> > > > > reset the software state as it would in a typical GT reset
> > > > > since we are trying to save the state for debug. However
> > > > > once the user unbinds the driver we still need to go through
> > > > > and clean everything up for these exec queues so we don't
> > > > > leak memory on the DRM side (e.g. LRC or LRC BO).
> > > > > 
> > > > > Add a kick start to the DRM scheduler to handle any
> > > > > outstanding
> > > > > messages on hold during the wedge and go through the GuC stop
> > > > > flow to simulate that reset on teardown.
> > > > > 
> > > > > Signed-off-by: Stuart Summers <stuart.summers@intel.com>
> > > > 
> > > > Please hold on review here. I think there's still something
> > > > missing
> > > > on
> > > > the wedge cleanup case that causes issues after wedging and
> > > > then
> > > > doing
> > > > binds/unbinds in a loop after. I'm working to resolve that and
> > > > I'll
> > > > post a new series after.
> > > > 
> > > 
> > > Sure. Just couple of thoughts below which might help.
> > > 
> > > > Thanks,
> > > > Stuart
> > > > 
> > > > > ---
> > > > >  drivers/gpu/drm/xe/xe_guc_submit.c | 15 +++++++++++++++
> > > > >  1 file changed, 15 insertions(+)
> > > > > 
> > > > > diff --git a/drivers/gpu/drm/xe/xe_guc_submit.c
> > > > > b/drivers/gpu/drm/xe/xe_guc_submit.c
> > > > > index 5ec1e4a83d68..0bbae336c722 100644
> > > > > --- a/drivers/gpu/drm/xe/xe_guc_submit.c
> > > > > +++ b/drivers/gpu/drm/xe/xe_guc_submit.c
> > > > > @@ -276,6 +276,14 @@ static void guc_submit_fini(struct
> > > > > drm_device
> > > > > *drm, void *arg)
> > > > >         struct xe_gt *gt = guc_to_gt(guc);
> > > > >         int ret;
> > > > >  
> > > > > +       /*
> > > > > +        * If GuC stopped responding during deregistration
> > > > > +        * some queues can be left in a bad state. Ensure
> > > > > +        * these are all cleaned up by going through the
> > > > > +        * GuC software reset flow.
> > > > > +        */
> > > > > +       xe_guc_stop(guc);
> > > > > +
> > > 
> > > I think we'd need to restart here at minimuum after cleanup.
> > 
> > Yeah this was one of the key issues, just trying to find the right
> > pieces to insert here..
> > 
> > > 
> > > > >         ret = wait_event_timeout(guc-
> > > > > >submission_state.fini_wq,
> > > > >                                  xa_empty(&guc-
> > > > > > submission_state.exec_queue_lookup),
> > > > >                                  HZ * 5);
> > > > > @@ -295,6 +303,13 @@ static void guc_submit_wedged_fini(void
> > > > > *arg)
> > > > >  
> > > > >         mutex_lock(&guc->submission_state.lock);
> > > > >         xa_for_each(&guc->submission_state.exec_queue_lookup,
> > > > > index,
> > > > > q) {
> > > > > +               /*
> > > > > +                * Kick start the scheduler since some
> > > > > messages
> > > > > +                * might have been added while the scheduler
> > > > > was
> > > > > +                * stopped during a wedge event.
> > > > > +                */
> > > > > +               xe_sched_submission_start(&q->guc->sched);
> > > > > +
> > > 
> > > I don't think possible to get here with a stopped queue, I think
> > > it a
> > > bug elsewhere if we do.
> > 
> > Hm.. so this would either be we went through a GT reset prior to
> > the
> > wedge (which should have restarted at the end of that) - which
> > isn't
> > the case here - or the job timed out and stopped the scheduler for
> > that
> > queue. Seems like there might be a bug in that path...
> > 
> 
> The job timeout mechanism should always restart the queue. I just
> checked, and it looks like there's a bug in the vf_recovery flows,
> but
> that shouldn't affect this case. I did review the GT reset path, and
> if
> that fails after xe_uc_stop is called, the queues are not
> restarted—which is a problem. We likely need to call something like
> xe_guc_submit_pause_abort (or a GT-layer equivalent) to restart the
> queues. If we don’t it could lead to memory-unsafe behavior as things
> will not get freed. This call should happen after wedging the device.

We should not be calling uc_stop() though if we're in a wedge state.
The uc_stop_prepare() and uc_stop() are part of the software reset that
is skipped when we're wedged. In the case here, I'm explicitly stopping
to try to reset the queue in the patch here and that's why it needs to
be restarted. The stop was intended to fix one bug and the restart
after stop fixes a second, but it still isn't the right fix as
discussed.

Thanks,
Stuart

> 
> Matt 
> 
> > Thanks,
> > Stuart
> > 
> > > 
> > > Matt
> > > 
> > > > >                 if (exec_queue_wedged(q)) {
> > > > >                         mutex_unlock(&guc-
> > > > > > submission_state.lock);
> > > > >                         xe_exec_queue_put(q);
> > > > 
> > 


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

end of thread, other threads:[~2025-10-17 14:48 UTC | newest]

Thread overview: 19+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-10-14 18:09 [PATCH 0/6] Fix a couple of wedge corner-case memory leaks Stuart Summers
2025-10-14 18:09 ` [PATCH 1/6] drm/xe: Add additional trace points for LRCs Stuart Summers
2025-10-14 18:09 ` [PATCH 2/6] drm/xe: Add a trace point for VM close Stuart Summers
2025-10-14 18:09 ` [PATCH 3/6] drm/xe: Add the BO pointer info to the BO trace Stuart Summers
2025-10-14 18:09 ` [PATCH 4/6] drm/xe: Add new exec queue trace points Stuart Summers
2025-10-14 18:09 ` [PATCH 5/6] drm/xe: Correct migration VM teardown order Stuart Summers
2025-10-15  0:59   ` Matthew Brost
2025-10-15 17:55     ` Summers, Stuart
2025-10-14 18:09 ` [PATCH 6/6] drm/xe: Clean up GuC software state after a wedge Stuart Summers
2025-10-15 19:45   ` Summers, Stuart
2025-10-16  3:42     ` Matthew Brost
2025-10-16 17:50       ` Summers, Stuart
2025-10-16 22:10         ` Matthew Brost
2025-10-17 14:48           ` Summers, Stuart
2025-10-14 18:15 ` ✗ CI.checkpatch: warning for Fix a couple of wedge corner-case memory leaks (rev4) Patchwork
2025-10-14 18:16 ` ✓ CI.KUnit: success " Patchwork
2025-10-14 19:13 ` ✗ Xe.CI.BAT: failure " Patchwork
2025-10-14 21:14   ` Summers, Stuart
2025-10-15  5:18 ` ✗ Xe.CI.Full: " Patchwork

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