Intel-XE Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] drm/xe: Use TLB innvalidation context for invalidations issued from bind queues
@ 2025-06-12 21:40 Matthew Brost
  2025-06-13  2:34 ` ✗ CI.checkpatch: warning for " Patchwork
                   ` (4 more replies)
  0 siblings, 5 replies; 8+ messages in thread
From: Matthew Brost @ 2025-06-12 21:40 UTC (permalink / raw)
  To: intel-xe; +Cc: francois.dugast, thomas.hellstrom, himal.prasad.ghimiray

In order to avoid adding tons of invalidation fences to dma-resv
BOOKKEEP slots, and thus jobs dependencies, when stream of unbinds
arrives (e.g., many user frees or unmaps), use a dma fence tlb
invalidation context associated with the queue issuing the bind
operation.

Two fence contexts are needed - one for each GT as TLB invalidations
are only ordered on a GT. A per GT ordered wq is needed to queue the
invalidations to maintain dma fence ordering as well.

This fixes the below splat when the number of invalidations gets out of
hand:

[ 1661.638258] watchdog: BUG: soft lockup - CPU#2 stuck for 26s!
[kworker/u65:8:75257]
[ 1661.638262] Modules linked in: xe drm_gpusvm drm_gpuvm
drm_ttm_helper ttm drm_exec gpu_sched drm_suballoc_helper drm_buddy
drm_kms_helper x86_pkg_temp_thermal coretemp snd_hda_cod      ec_realtek
snd_hda_codec_generic snd_hda_scodec_component mei_pxp mei_hdcp wmi_bmof
snd_hda_intel snd_intel_dspcfg snd_hda_codec snd_hwdep i2c_i801
snd_hda_core i2c_mux snd_pcm i2c_s      mbus video wmi mei_me mei fuse
igb e1000e i2c_algo_bit ptp ghash_clmulni_intel pps_core intel_lpss_pci
[last unloaded: xe]
[ 1661.638278] CPU: 2 UID: 0 PID: 75257 Comm: kworker/u65:8
Tainted: G S                  6.16.0-rc1-xe+ #397 PREEMPT(undef)
[ 1661.638280] Tainted: [S]=CPU_OUT_OF_SPEC
[ 1661.638280] Hardware name: Intel Corporation Raptor Lake Client
Platform/RPL-S ADP-S DDR5 UDIMM CRB, BIOS
RPLSFWI1.R00.3492.A00.2211291114 11/29/2022
[ 1661.638281] Workqueue: xe_gt_page_fault_work_queue
xe_svm_garbage_collector_work_func [xe]
[ 1661.638311] RIP: 0010:xas_start+0x47/0xd0
[ 1661.638317] Code: 07 48 8b 57 08 48 8b 40 08 48 89 c1 83 e1 03
48 83 f9 02 75 08 48 3d 00 10 00 00 77 21 48 85 d2 75 29 48 c7 47 18 00
00 00 00 <c3> cc cc cc cc 48 c1 fa 02 85 d2       74 c7 31 c0 c3 cc cc
cc cc 0f b6
[ 1661.638317] RSP: 0018:ffffc90003d9b968 EFLAGS: 00000297
[ 1661.638318] RAX: ffff88810459b232 RBX: ffffc90003d9b9a0 RCX:
0000000000000006
[ 1661.638319] RDX: 0000000000000009 RSI: 0000000000000003 RDI:
ffffc90003d9b9a0
[ 1661.638320] RBP: ffffffffffffffff R08: ffff888197a0a600 R09:
0000000000000228
[ 1661.638320] R10: ffffffffffffffff R11: ffffffffffffffc0 R12:
0000000000000241
[ 1661.638320] R13: ffffffffffffffff R14: 0000000000000040 R15:
ffff8881014db000
[ 1661.638321] FS:  0000000000000000(0000)
GS:ffff88890aee8000(0000) knlGS:0000000000000000
[ 1661.638322] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 1661.638322] CR2: 00007fc07287fff8 CR3: 000000000242c003 CR4:
0000000000f70ef0
[ 1661.638323] PKRU: 55555554
[ 1661.638323] Call Trace:
[ 1661.638325]  <TASK>
[ 1661.638326]  xas_load+0xd/0xb0
[ 1661.638328]  xas_find+0x187/0x1d0
[ 1661.638330]  xa_find_after+0x10f/0x130
[ 1661.638332]  drm_sched_job_add_dependency+0x80/0x1e0
[gpu_sched]
[ 1661.638335]  drm_sched_job_add_resv_dependencies+0x62/0x120
[gpu_sched]
[ 1661.638337]  xe_pt_vm_dependencies+0x5b/0x2f0 [xe]
[ 1661.638359]  xe_pt_svm_pre_commit+0x59/0x1a0 [xe]
[ 1661.638376]  xe_migrate_update_pgtables+0x67f/0x910 [xe]
[ 1661.638397]  ? xe_pt_stage_unbind+0x92/0xd0 [xe]
[ 1661.638416]  xe_pt_update_ops_run+0x12e/0x7f0 [xe]
[ 1661.638433]  ops_execute+0x1b1/0x430 [xe]
[ 1661.638449]  xe_vm_range_unbind+0x260/0x2a0 [xe]
[ 1661.638465]  xe_svm_garbage_collector+0xfe/0x1c0 [xe]
[ 1661.638478]  xe_svm_garbage_collector_work_func+0x25/0x30 [xe]
[ 1661.638491]  process_one_work+0x16b/0x2e0
[ 1661.638495]  worker_thread+0x284/0x410
[ 1661.638496]  ? __pfx_worker_thread+0x10/0x10
[ 1661.638496]  kthread+0xe9/0x210
[ 1661.638498]  ? __pfx_kthread+0x10/0x10

Signed-off-by: Matthew Brost <matthew.brost@intel.com>
---
 drivers/gpu/drm/xe/xe_exec_queue.c          |  8 +++++++
 drivers/gpu/drm/xe/xe_exec_queue_types.h    | 17 +++++++++++++++
 drivers/gpu/drm/xe/xe_gt_tlb_invalidation.c | 23 ++++++++++++++++-----
 drivers/gpu/drm/xe/xe_gt_tlb_invalidation.h |  4 +++-
 drivers/gpu/drm/xe/xe_pt.c                  | 10 +++++++--
 drivers/gpu/drm/xe/xe_svm.c                 |  9 +++++---
 drivers/gpu/drm/xe/xe_vm.c                  |  6 ++++--
 7 files changed, 64 insertions(+), 13 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_exec_queue.c b/drivers/gpu/drm/xe/xe_exec_queue.c
index fee22358cc09..71e354c56ad9 100644
--- a/drivers/gpu/drm/xe/xe_exec_queue.c
+++ b/drivers/gpu/drm/xe/xe_exec_queue.c
@@ -94,6 +94,14 @@ static struct xe_exec_queue *__xe_exec_queue_alloc(struct xe_device *xe,
 	else
 		q->sched_props.priority = XE_EXEC_QUEUE_PRIORITY_NORMAL;
 
+	if (q->flags & (EXEC_QUEUE_FLAG_PERMANENT | EXEC_QUEUE_FLAG_VM)) {
+		int i;
+
+		for (i = 0; i < XE_EXEC_QUEUE_TLB_CONTEXT_COUNT; ++i)
+			q->tlb_invalidation.context[i] =
+				dma_fence_context_alloc(1);
+	}
+
 	if (vm)
 		q->vm = xe_vm_get(vm);
 
diff --git a/drivers/gpu/drm/xe/xe_exec_queue_types.h b/drivers/gpu/drm/xe/xe_exec_queue_types.h
index cc1cffb5c87f..81d240e561ee 100644
--- a/drivers/gpu/drm/xe/xe_exec_queue_types.h
+++ b/drivers/gpu/drm/xe/xe_exec_queue_types.h
@@ -132,6 +132,23 @@ struct xe_exec_queue {
 		struct list_head link;
 	} lr;
 
+	/** @tlb_invalidation: TLB invalidations exec queue state */
+	struct {
+		/**
+		 * @tlb_invalidation.context: The TLB invalidation context
+		 * for the queue (VM and MIGRATION queues only)
+		 */
+#define XE_EXEC_QUEUE_TLB_CONTEXT_PRIMARY_GT	0
+#define XE_EXEC_QUEUE_TLB_CONTEXT_MEDIA_GT	1
+#define XE_EXEC_QUEUE_TLB_CONTEXT_COUNT		(XE_EXEC_QUEUE_TLB_CONTEXT_MEDIA_GT  + 1)
+		u64 context[XE_EXEC_QUEUE_TLB_CONTEXT_COUNT];
+		/**
+		 * @tlb_invalidation.seqno: The TLB invalidation seqno for the
+		 * queue (VM and MIGRATION queues only)
+		 */
+		u32 seqno[XE_EXEC_QUEUE_TLB_CONTEXT_COUNT];
+	} tlb_invalidation;
+
 	/** @pxp: PXP info tracking */
 	struct {
 		/** @pxp.type: PXP session type used by this queue */
diff --git a/drivers/gpu/drm/xe/xe_gt_tlb_invalidation.c b/drivers/gpu/drm/xe/xe_gt_tlb_invalidation.c
index 084cbdeba8ea..0a2fcaaf04fc 100644
--- a/drivers/gpu/drm/xe/xe_gt_tlb_invalidation.c
+++ b/drivers/gpu/drm/xe/xe_gt_tlb_invalidation.c
@@ -7,6 +7,7 @@
 
 #include "abi/guc_actions_abi.h"
 #include "xe_device.h"
+#include "xe_exec_queue_types.h"
 #include "xe_force_wake.h"
 #include "xe_gt.h"
 #include "xe_gt_printk.h"
@@ -294,7 +295,7 @@ int xe_gt_tlb_invalidation_ggtt(struct xe_gt *gt)
 		struct xe_gt_tlb_invalidation_fence fence;
 		int ret;
 
-		xe_gt_tlb_invalidation_fence_init(gt, &fence, true);
+		xe_gt_tlb_invalidation_fence_init(gt, NULL, &fence, 0, true);
 		ret = xe_gt_tlb_invalidation_guc(gt, &fence);
 		if (ret)
 			return ret;
@@ -431,7 +432,7 @@ void xe_gt_tlb_invalidation_vm(struct xe_gt *gt, struct xe_vm *vm)
 	u64 range = 1ull << vm->xe->info.va_bits;
 	int ret;
 
-	xe_gt_tlb_invalidation_fence_init(gt, &fence, true);
+	xe_gt_tlb_invalidation_fence_init(gt, NULL, &fence, 0, true);
 
 	ret = xe_gt_tlb_invalidation_range(gt, &fence, 0, range, vm->usm.asid);
 	if (ret < 0)
@@ -551,7 +552,9 @@ static const struct dma_fence_ops invalidation_fence_ops = {
 /**
  * xe_gt_tlb_invalidation_fence_init - Initialize TLB invalidation fence
  * @gt: GT
+ * @q: exec queue issuing TLB invalidation, if NULL no queue associated
  * @fence: TLB invalidation fence to initialize
+ * @tlb_context: TLB invalidation context for exec_queue
  * @stack: fence is stack variable
  *
  * Initialize TLB invalidation fence for use. xe_gt_tlb_invalidation_fence_fini
@@ -559,15 +562,25 @@ static const struct dma_fence_ops invalidation_fence_ops = {
  * even on error.
  */
 void xe_gt_tlb_invalidation_fence_init(struct xe_gt *gt,
+				       struct xe_exec_queue *q,
 				       struct xe_gt_tlb_invalidation_fence *fence,
+				       int tlb_context,
 				       bool stack)
 {
+	xe_gt_assert(gt, tlb_context < XE_EXEC_QUEUE_TLB_CONTEXT_COUNT);
+
 	xe_pm_runtime_get_noresume(gt_to_xe(gt));
 
 	spin_lock_irq(&gt->tlb_invalidation.lock);
-	dma_fence_init(&fence->base, &invalidation_fence_ops,
-		       &gt->tlb_invalidation.lock,
-		       dma_fence_context_alloc(1), 1);
+	if (q)
+		dma_fence_init(&fence->base, &invalidation_fence_ops,
+			       &gt->tlb_invalidation.lock,
+			       q->tlb_invalidation.context[tlb_context],
+			       ++q->tlb_invalidation.seqno[tlb_context]);
+	else
+		dma_fence_init(&fence->base, &invalidation_fence_ops,
+			       &gt->tlb_invalidation.lock,
+			       dma_fence_context_alloc(1), 1);
 	spin_unlock_irq(&gt->tlb_invalidation.lock);
 	INIT_LIST_HEAD(&fence->link);
 	if (stack)
diff --git a/drivers/gpu/drm/xe/xe_gt_tlb_invalidation.h b/drivers/gpu/drm/xe/xe_gt_tlb_invalidation.h
index abe9b03d543e..8440c608a0ec 100644
--- a/drivers/gpu/drm/xe/xe_gt_tlb_invalidation.h
+++ b/drivers/gpu/drm/xe/xe_gt_tlb_invalidation.h
@@ -10,6 +10,7 @@
 
 #include "xe_gt_tlb_invalidation_types.h"
 
+struct xe_exec_queue;
 struct xe_gt;
 struct xe_guc;
 struct xe_vm;
@@ -29,8 +30,9 @@ int xe_gt_tlb_invalidation_range(struct xe_gt *gt,
 int xe_guc_tlb_invalidation_done_handler(struct xe_guc *guc, u32 *msg, u32 len);
 
 void xe_gt_tlb_invalidation_fence_init(struct xe_gt *gt,
+				       struct xe_exec_queue *q,
 				       struct xe_gt_tlb_invalidation_fence *fence,
-				       bool stack);
+				       int tlb_context, bool stack);
 void xe_gt_tlb_invalidation_fence_signal(struct xe_gt_tlb_invalidation_fence *fence);
 
 static inline void
diff --git a/drivers/gpu/drm/xe/xe_pt.c b/drivers/gpu/drm/xe/xe_pt.c
index f39d5cc9f411..feab4b7c7e70 100644
--- a/drivers/gpu/drm/xe/xe_pt.c
+++ b/drivers/gpu/drm/xe/xe_pt.c
@@ -1529,7 +1529,7 @@ static void invalidation_fence_cb(struct dma_fence *fence,
 
 	trace_xe_gt_tlb_invalidation_fence_cb(xe, &ifence->base);
 	if (!ifence->fence->error) {
-		queue_work(system_wq, &ifence->work);
+		queue_work(ifence->gt->ordered_wq, &ifence->work);
 	} else {
 		ifence->base.base.error = ifence->fence->error;
 		xe_gt_tlb_invalidation_fence_signal(&ifence->base);
@@ -1551,13 +1551,15 @@ static void invalidation_fence_work_func(struct work_struct *w)
 static void invalidation_fence_init(struct xe_gt *gt,
 				    struct invalidation_fence *ifence,
 				    struct dma_fence *fence,
+				    struct xe_exec_queue *q, int tlb_context,
 				    u64 start, u64 end, u32 asid)
 {
 	int ret;
 
 	trace_xe_gt_tlb_invalidation_fence_create(gt_to_xe(gt), &ifence->base);
 
-	xe_gt_tlb_invalidation_fence_init(gt, &ifence->base, false);
+	xe_gt_tlb_invalidation_fence_init(gt, q, &ifence->base, tlb_context,
+					  false);
 
 	ifence->fence = fence;
 	ifence->gt = gt;
@@ -2467,10 +2469,14 @@ xe_pt_update_ops_run(struct xe_tile *tile, struct xe_vma_ops *vops)
 		if (mfence)
 			dma_fence_get(fence);
 		invalidation_fence_init(tile->primary_gt, ifence, fence,
+					pt_update_ops->q,
+					XE_EXEC_QUEUE_TLB_CONTEXT_PRIMARY_GT,
 					pt_update_ops->start,
 					pt_update_ops->last, vm->usm.asid);
 		if (mfence) {
 			invalidation_fence_init(tile->media_gt, mfence, fence,
+						pt_update_ops->q,
+						XE_EXEC_QUEUE_TLB_CONTEXT_MEDIA_GT,
 						pt_update_ops->start,
 						pt_update_ops->last, vm->usm.asid);
 			fences[0] = &ifence->base.base;
diff --git a/drivers/gpu/drm/xe/xe_svm.c b/drivers/gpu/drm/xe/xe_svm.c
index 13abc6049041..2edd1c52150e 100644
--- a/drivers/gpu/drm/xe/xe_svm.c
+++ b/drivers/gpu/drm/xe/xe_svm.c
@@ -227,7 +227,9 @@ static void xe_svm_invalidate(struct drm_gpusvm *gpusvm,
 			int err;
 
 			xe_gt_tlb_invalidation_fence_init(tile->primary_gt,
-							  &fence[fence_id], true);
+							  NULL,
+							  &fence[fence_id], 0,
+							  true);
 
 			err = xe_gt_tlb_invalidation_range(tile->primary_gt,
 							   &fence[fence_id],
@@ -241,8 +243,9 @@ static void xe_svm_invalidate(struct drm_gpusvm *gpusvm,
 			if (!tile->media_gt)
 				continue;
 
-			xe_gt_tlb_invalidation_fence_init(tile->media_gt,
-							  &fence[fence_id], true);
+			xe_gt_tlb_invalidation_fence_init(tile->media_gt, NULL,
+							  &fence[fence_id], 0,
+							  true);
 
 			err = xe_gt_tlb_invalidation_range(tile->media_gt,
 							   &fence[fence_id],
diff --git a/drivers/gpu/drm/xe/xe_vm.c b/drivers/gpu/drm/xe/xe_vm.c
index d18807b92b18..730319b78a0a 100644
--- a/drivers/gpu/drm/xe/xe_vm.c
+++ b/drivers/gpu/drm/xe/xe_vm.c
@@ -3896,8 +3896,9 @@ int xe_vm_invalidate_vma(struct xe_vma *vma)
 		if (xe_pt_zap_ptes(tile, vma)) {
 			xe_device_wmb(xe);
 			xe_gt_tlb_invalidation_fence_init(tile->primary_gt,
+							  NULL,
 							  &fence[fence_id],
-							  true);
+							  0, true);
 
 			ret = xe_gt_tlb_invalidation_vma(tile->primary_gt,
 							 &fence[fence_id], vma);
@@ -3909,8 +3910,9 @@ int xe_vm_invalidate_vma(struct xe_vma *vma)
 				continue;
 
 			xe_gt_tlb_invalidation_fence_init(tile->media_gt,
+							  NULL,
 							  &fence[fence_id],
-							  true);
+							  0, true);
 
 			ret = xe_gt_tlb_invalidation_vma(tile->media_gt,
 							 &fence[fence_id], vma);
-- 
2.34.1


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

* ✗ CI.checkpatch: warning for drm/xe: Use TLB innvalidation context for invalidations issued from bind queues
  2025-06-12 21:40 [PATCH] drm/xe: Use TLB innvalidation context for invalidations issued from bind queues Matthew Brost
@ 2025-06-13  2:34 ` Patchwork
  2025-06-13  2:36 ` ✓ CI.KUnit: success " Patchwork
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 8+ messages in thread
From: Patchwork @ 2025-06-13  2:34 UTC (permalink / raw)
  To: Matthew Brost; +Cc: intel-xe

== Series Details ==

Series: drm/xe: Use TLB innvalidation context for invalidations issued from bind queues
URL   : https://patchwork.freedesktop.org/series/150188/
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
202708c00696422fd217223bb679a353a5936e23
+ cd /kernel
+ git config --global --add safe.directory /kernel
+ git log -n1
commit a61608d8edf953d0330e2fcd78bf2074130fa64d
Author: Matthew Brost <matthew.brost@intel.com>
Date:   Thu Jun 12 14:40:41 2025 -0700

    drm/xe: Use TLB innvalidation context for invalidations issued from bind queues
    
    In order to avoid adding tons of invalidation fences to dma-resv
    BOOKKEEP slots, and thus jobs dependencies, when stream of unbinds
    arrives (e.g., many user frees or unmaps), use a dma fence tlb
    invalidation context associated with the queue issuing the bind
    operation.
    
    Two fence contexts are needed - one for each GT as TLB invalidations
    are only ordered on a GT. A per GT ordered wq is needed to queue the
    invalidations to maintain dma fence ordering as well.
    
    This fixes the below splat when the number of invalidations gets out of
    hand:
    
    [ 1661.638258] watchdog: BUG: soft lockup - CPU#2 stuck for 26s!
    [kworker/u65:8:75257]
    [ 1661.638262] Modules linked in: xe drm_gpusvm drm_gpuvm
    drm_ttm_helper ttm drm_exec gpu_sched drm_suballoc_helper drm_buddy
    drm_kms_helper x86_pkg_temp_thermal coretemp snd_hda_cod      ec_realtek
    snd_hda_codec_generic snd_hda_scodec_component mei_pxp mei_hdcp wmi_bmof
    snd_hda_intel snd_intel_dspcfg snd_hda_codec snd_hwdep i2c_i801
    snd_hda_core i2c_mux snd_pcm i2c_s      mbus video wmi mei_me mei fuse
    igb e1000e i2c_algo_bit ptp ghash_clmulni_intel pps_core intel_lpss_pci
    [last unloaded: xe]
    [ 1661.638278] CPU: 2 UID: 0 PID: 75257 Comm: kworker/u65:8
    Tainted: G S                  6.16.0-rc1-xe+ #397 PREEMPT(undef)
    [ 1661.638280] Tainted: [S]=CPU_OUT_OF_SPEC
    [ 1661.638280] Hardware name: Intel Corporation Raptor Lake Client
    Platform/RPL-S ADP-S DDR5 UDIMM CRB, BIOS
    RPLSFWI1.R00.3492.A00.2211291114 11/29/2022
    [ 1661.638281] Workqueue: xe_gt_page_fault_work_queue
    xe_svm_garbage_collector_work_func [xe]
    [ 1661.638311] RIP: 0010:xas_start+0x47/0xd0
    [ 1661.638317] Code: 07 48 8b 57 08 48 8b 40 08 48 89 c1 83 e1 03
    48 83 f9 02 75 08 48 3d 00 10 00 00 77 21 48 85 d2 75 29 48 c7 47 18 00
    00 00 00 <c3> cc cc cc cc 48 c1 fa 02 85 d2       74 c7 31 c0 c3 cc cc
    cc cc 0f b6
    [ 1661.638317] RSP: 0018:ffffc90003d9b968 EFLAGS: 00000297
    [ 1661.638318] RAX: ffff88810459b232 RBX: ffffc90003d9b9a0 RCX:
    0000000000000006
    [ 1661.638319] RDX: 0000000000000009 RSI: 0000000000000003 RDI:
    ffffc90003d9b9a0
    [ 1661.638320] RBP: ffffffffffffffff R08: ffff888197a0a600 R09:
    0000000000000228
    [ 1661.638320] R10: ffffffffffffffff R11: ffffffffffffffc0 R12:
    0000000000000241
    [ 1661.638320] R13: ffffffffffffffff R14: 0000000000000040 R15:
    ffff8881014db000
    [ 1661.638321] FS:  0000000000000000(0000)
    GS:ffff88890aee8000(0000) knlGS:0000000000000000
    [ 1661.638322] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [ 1661.638322] CR2: 00007fc07287fff8 CR3: 000000000242c003 CR4:
    0000000000f70ef0
    [ 1661.638323] PKRU: 55555554
    [ 1661.638323] Call Trace:
    [ 1661.638325]  <TASK>
    [ 1661.638326]  xas_load+0xd/0xb0
    [ 1661.638328]  xas_find+0x187/0x1d0
    [ 1661.638330]  xa_find_after+0x10f/0x130
    [ 1661.638332]  drm_sched_job_add_dependency+0x80/0x1e0
    [gpu_sched]
    [ 1661.638335]  drm_sched_job_add_resv_dependencies+0x62/0x120
    [gpu_sched]
    [ 1661.638337]  xe_pt_vm_dependencies+0x5b/0x2f0 [xe]
    [ 1661.638359]  xe_pt_svm_pre_commit+0x59/0x1a0 [xe]
    [ 1661.638376]  xe_migrate_update_pgtables+0x67f/0x910 [xe]
    [ 1661.638397]  ? xe_pt_stage_unbind+0x92/0xd0 [xe]
    [ 1661.638416]  xe_pt_update_ops_run+0x12e/0x7f0 [xe]
    [ 1661.638433]  ops_execute+0x1b1/0x430 [xe]
    [ 1661.638449]  xe_vm_range_unbind+0x260/0x2a0 [xe]
    [ 1661.638465]  xe_svm_garbage_collector+0xfe/0x1c0 [xe]
    [ 1661.638478]  xe_svm_garbage_collector_work_func+0x25/0x30 [xe]
    [ 1661.638491]  process_one_work+0x16b/0x2e0
    [ 1661.638495]  worker_thread+0x284/0x410
    [ 1661.638496]  ? __pfx_worker_thread+0x10/0x10
    [ 1661.638496]  kthread+0xe9/0x210
    [ 1661.638498]  ? __pfx_kthread+0x10/0x10
    
    Signed-off-by: Matthew Brost <matthew.brost@intel.com>
+ /mt/dim checkpatch 07cb1c19ef8056f2f964909c9273b3c45049760e drm-intel
a61608d8edf9 drm/xe: Use TLB innvalidation context for invalidations issued from bind queues
-:322: WARNING:MISSING_FIXES_TAG: The commit message has 'Call Trace:', perhaps it also needs a 'Fixes:' tag?

total: 0 errors, 1 warnings, 0 checks, 193 lines checked



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

* ✓ CI.KUnit: success for drm/xe: Use TLB innvalidation context for invalidations issued from bind queues
  2025-06-12 21:40 [PATCH] drm/xe: Use TLB innvalidation context for invalidations issued from bind queues Matthew Brost
  2025-06-13  2:34 ` ✗ CI.checkpatch: warning for " Patchwork
@ 2025-06-13  2:36 ` Patchwork
  2025-06-13  4:07 ` ✓ Xe.CI.BAT: " Patchwork
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 8+ messages in thread
From: Patchwork @ 2025-06-13  2:36 UTC (permalink / raw)
  To: Matthew Brost; +Cc: intel-xe

== Series Details ==

Series: drm/xe: Use TLB innvalidation context for invalidations issued from bind queues
URL   : https://patchwork.freedesktop.org/series/150188/
State : success

== Summary ==

+ trap cleanup EXIT
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/xe/.kunitconfig
[02:34:58] Configuring KUnit Kernel ...
Generating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[02:35:02] 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
[02:35:29] Starting KUnit Kernel (1/1)...
[02:35:29] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[02:35:30] ================== guc_buf (11 subtests) ===================
[02:35:30] [PASSED] test_smallest
[02:35:30] [PASSED] test_largest
[02:35:30] [PASSED] test_granular
[02:35:30] [PASSED] test_unique
[02:35:30] [PASSED] test_overlap
[02:35:30] [PASSED] test_reusable
[02:35:30] [PASSED] test_too_big
[02:35:30] [PASSED] test_flush
[02:35:30] [PASSED] test_lookup
[02:35:30] [PASSED] test_data
[02:35:30] [PASSED] test_class
[02:35:30] ===================== [PASSED] guc_buf =====================
[02:35:30] =================== guc_dbm (7 subtests) ===================
[02:35:30] [PASSED] test_empty
[02:35:30] [PASSED] test_default
[02:35:30] ======================== test_size  ========================
[02:35:30] [PASSED] 4
[02:35:30] [PASSED] 8
[02:35:30] [PASSED] 32
[02:35:30] [PASSED] 256
[02:35:30] ==================== [PASSED] test_size ====================
[02:35:30] ======================= test_reuse  ========================
[02:35:30] [PASSED] 4
[02:35:30] [PASSED] 8
[02:35:30] [PASSED] 32
[02:35:30] [PASSED] 256
[02:35:30] =================== [PASSED] test_reuse ====================
[02:35:30] =================== test_range_overlap  ====================
[02:35:30] [PASSED] 4
[02:35:30] [PASSED] 8
[02:35:30] [PASSED] 32
[02:35:30] [PASSED] 256
[02:35:30] =============== [PASSED] test_range_overlap ================
[02:35:30] =================== test_range_compact  ====================
[02:35:30] [PASSED] 4
[02:35:30] [PASSED] 8
[02:35:30] [PASSED] 32
[02:35:30] [PASSED] 256
[02:35:30] =============== [PASSED] test_range_compact ================
[02:35:30] ==================== test_range_spare  =====================
[02:35:30] [PASSED] 4
[02:35:30] [PASSED] 8
[02:35:30] [PASSED] 32
[02:35:30] [PASSED] 256
[02:35:30] ================ [PASSED] test_range_spare =================
[02:35:30] ===================== [PASSED] guc_dbm =====================
[02:35:30] =================== guc_idm (6 subtests) ===================
[02:35:30] [PASSED] bad_init
[02:35:30] [PASSED] no_init
[02:35:30] [PASSED] init_fini
[02:35:30] [PASSED] check_used
[02:35:30] [PASSED] check_quota
[02:35:30] [PASSED] check_all
[02:35:30] ===================== [PASSED] guc_idm =====================
[02:35:30] ================== no_relay (3 subtests) ===================
[02:35:30] [PASSED] xe_drops_guc2pf_if_not_ready
[02:35:30] [PASSED] xe_drops_guc2vf_if_not_ready
[02:35:30] [PASSED] xe_rejects_send_if_not_ready
[02:35:30] ==================== [PASSED] no_relay =====================
[02:35:30] ================== pf_relay (14 subtests) ==================
[02:35:30] [PASSED] pf_rejects_guc2pf_too_short
[02:35:30] [PASSED] pf_rejects_guc2pf_too_long
[02:35:30] [PASSED] pf_rejects_guc2pf_no_payload
[02:35:30] [PASSED] pf_fails_no_payload
[02:35:30] [PASSED] pf_fails_bad_origin
[02:35:30] [PASSED] pf_fails_bad_type
[02:35:30] [PASSED] pf_txn_reports_error
[02:35:30] [PASSED] pf_txn_sends_pf2guc
[02:35:30] [PASSED] pf_sends_pf2guc
[02:35:30] [SKIPPED] pf_loopback_nop
[02:35:30] [SKIPPED] pf_loopback_echo
[02:35:30] [SKIPPED] pf_loopback_fail
[02:35:30] [SKIPPED] pf_loopback_busy
[02:35:30] [SKIPPED] pf_loopback_retry
[02:35:30] ==================== [PASSED] pf_relay =====================
[02:35:30] ================== vf_relay (3 subtests) ===================
[02:35:30] [PASSED] vf_rejects_guc2vf_too_short
[02:35:30] [PASSED] vf_rejects_guc2vf_too_long
[02:35:30] [PASSED] vf_rejects_guc2vf_no_payload
[02:35:30] ==================== [PASSED] vf_relay =====================
[02:35:30] ================= pf_service (11 subtests) =================
[02:35:30] [PASSED] pf_negotiate_any
[02:35:30] [PASSED] pf_negotiate_base_match
[02:35:30] [PASSED] pf_negotiate_base_newer
[02:35:30] [PASSED] pf_negotiate_base_next
[02:35:30] [SKIPPED] pf_negotiate_base_older
[02:35:30] [PASSED] pf_negotiate_base_prev
[02:35:30] [PASSED] pf_negotiate_latest_match
[02:35:30] [PASSED] pf_negotiate_latest_newer
[02:35:30] [PASSED] pf_negotiate_latest_next
[02:35:30] [SKIPPED] pf_negotiate_latest_older
[02:35:30] [SKIPPED] pf_negotiate_latest_prev
[02:35:30] =================== [PASSED] pf_service ====================
[02:35:30] ===================== lmtt (1 subtest) =====================
[02:35:30] ======================== test_ops  =========================
[02:35:30] [PASSED] 2-level
[02:35:30] [PASSED] multi-level
[02:35:30] ==================== [PASSED] test_ops =====================
[02:35:30] ====================== [PASSED] lmtt =======================
[02:35:30] =================== xe_mocs (2 subtests) ===================
[02:35:30] ================ xe_live_mocs_kernel_kunit  ================
[02:35:30] =========== [SKIPPED] xe_live_mocs_kernel_kunit ============
[02:35:30] ================ xe_live_mocs_reset_kunit  =================
[02:35:30] ============ [SKIPPED] xe_live_mocs_reset_kunit ============
[02:35:30] ==================== [SKIPPED] xe_mocs =====================
[02:35:30] ================= xe_migrate (2 subtests) ==================
[02:35:30] ================= xe_migrate_sanity_kunit  =================
[02:35:30] ============ [SKIPPED] xe_migrate_sanity_kunit =============
[02:35:30] ================== xe_validate_ccs_kunit  ==================
[02:35:30] ============= [SKIPPED] xe_validate_ccs_kunit ==============
[02:35:30] =================== [SKIPPED] xe_migrate ===================
[02:35:30] ================== xe_dma_buf (1 subtest) ==================
[02:35:30] ==================== xe_dma_buf_kunit  =====================
[02:35:30] ================ [SKIPPED] xe_dma_buf_kunit ================
[02:35:30] =================== [SKIPPED] xe_dma_buf ===================
[02:35:30] ================= xe_bo_shrink (1 subtest) =================
[02:35:30] =================== xe_bo_shrink_kunit  ====================
[02:35:30] =============== [SKIPPED] xe_bo_shrink_kunit ===============
[02:35:30] ================== [SKIPPED] xe_bo_shrink ==================
[02:35:30] ==================== xe_bo (2 subtests) ====================
[02:35:30] ================== xe_ccs_migrate_kunit  ===================
[02:35:30] ============== [SKIPPED] xe_ccs_migrate_kunit ==============
[02:35:30] ==================== xe_bo_evict_kunit  ====================
[02:35:30] =============== [SKIPPED] xe_bo_evict_kunit ================
[02:35:30] ===================== [SKIPPED] xe_bo ======================
[02:35:30] ==================== args (11 subtests) ====================
[02:35:30] [PASSED] count_args_test
[02:35:30] [PASSED] call_args_example
[02:35:30] [PASSED] call_args_test
[02:35:30] [PASSED] drop_first_arg_example
[02:35:30] [PASSED] drop_first_arg_test
[02:35:30] [PASSED] first_arg_example
[02:35:30] [PASSED] first_arg_test
[02:35:30] [PASSED] last_arg_example
[02:35:30] [PASSED] last_arg_test
[02:35:30] [PASSED] pick_arg_example
[02:35:30] [PASSED] sep_comma_example
[02:35:30] ====================== [PASSED] args =======================
[02:35:30] =================== xe_pci (2 subtests) ====================
[02:35:30] [PASSED] xe_gmdid_graphics_ip
[02:35:30] [PASSED] xe_gmdid_media_ip
[02:35:30] ===================== [PASSED] xe_pci ======================
[02:35:30] =================== xe_rtp (2 subtests) ====================
[02:35:30] =============== xe_rtp_process_to_sr_tests  ================
[02:35:30] [PASSED] coalesce-same-reg
[02:35:30] [PASSED] no-match-no-add
[02:35:30] [PASSED] match-or
[02:35:30] [PASSED] match-or-xfail
[02:35:30] [PASSED] no-match-no-add-multiple-rules
[02:35:30] [PASSED] two-regs-two-entries
[02:35:30] [PASSED] clr-one-set-other
[02:35:30] [PASSED] set-field
[02:35:30] [PASSED] conflict-duplicate
[02:35:30] [PASSED] conflict-not-disjoint
stty: 'standard input': Inappropriate ioctl for device
[02:35:30] [PASSED] conflict-reg-type
[02:35:30] =========== [PASSED] xe_rtp_process_to_sr_tests ============
[02:35:30] ================== xe_rtp_process_tests  ===================
[02:35:30] [PASSED] active1
[02:35:30] [PASSED] active2
[02:35:30] [PASSED] active-inactive
[02:35:30] [PASSED] inactive-active
[02:35:30] [PASSED] inactive-1st_or_active-inactive
[02:35:30] [PASSED] inactive-2nd_or_active-inactive
[02:35:30] [PASSED] inactive-last_or_active-inactive
[02:35:30] [PASSED] inactive-no_or_active-inactive
[02:35:30] ============== [PASSED] xe_rtp_process_tests ===============
[02:35:30] ===================== [PASSED] xe_rtp ======================
[02:35:30] ==================== xe_wa (1 subtest) =====================
[02:35:30] ======================== xe_wa_gt  =========================
[02:35:30] [PASSED] TIGERLAKE (B0)
[02:35:30] [PASSED] DG1 (A0)
[02:35:30] [PASSED] DG1 (B0)
[02:35:30] [PASSED] ALDERLAKE_S (A0)
[02:35:30] [PASSED] ALDERLAKE_S (B0)
[02:35:30] [PASSED] ALDERLAKE_S (C0)
[02:35:30] [PASSED] ALDERLAKE_S (D0)
[02:35:30] [PASSED] ALDERLAKE_P (A0)
[02:35:30] [PASSED] ALDERLAKE_P (B0)
[02:35:30] [PASSED] ALDERLAKE_P (C0)
[02:35:30] [PASSED] ALDERLAKE_S_RPLS (D0)
[02:35:30] [PASSED] ALDERLAKE_P_RPLU (E0)
[02:35:30] [PASSED] DG2_G10 (C0)
[02:35:30] [PASSED] DG2_G11 (B1)
[02:35:30] [PASSED] DG2_G12 (A1)
[02:35:30] [PASSED] METEORLAKE (g:A0, m:A0)
[02:35:30] [PASSED] METEORLAKE (g:A0, m:A0)
[02:35:30] [PASSED] METEORLAKE (g:A0, m:A0)
[02:35:30] [PASSED] LUNARLAKE (g:A0, m:A0)
[02:35:30] [PASSED] LUNARLAKE (g:B0, m:A0)
[02:35:30] [PASSED] BATTLEMAGE (g:A0, m:A1)
[02:35:30] ==================== [PASSED] xe_wa_gt =====================
[02:35:30] ====================== [PASSED] xe_wa ======================
[02:35:30] ============================================================
[02:35:30] Testing complete. Ran 133 tests: passed: 117, skipped: 16
[02:35:30] Elapsed time: 31.963s total, 4.176s configuring, 27.470s building, 0.304s running

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

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

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



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

* ✓ Xe.CI.BAT: success for drm/xe: Use TLB innvalidation context for invalidations issued from bind queues
  2025-06-12 21:40 [PATCH] drm/xe: Use TLB innvalidation context for invalidations issued from bind queues Matthew Brost
  2025-06-13  2:34 ` ✗ CI.checkpatch: warning for " Patchwork
  2025-06-13  2:36 ` ✓ CI.KUnit: success " Patchwork
@ 2025-06-13  4:07 ` Patchwork
  2025-06-13  8:40 ` [PATCH] " Thomas Hellström
  2025-06-14  2:49 ` ✓ Xe.CI.Full: success for " Patchwork
  4 siblings, 0 replies; 8+ messages in thread
From: Patchwork @ 2025-06-13  4:07 UTC (permalink / raw)
  To: Matthew Brost; +Cc: intel-xe

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

== Series Details ==

Series: drm/xe: Use TLB innvalidation context for invalidations issued from bind queues
URL   : https://patchwork.freedesktop.org/series/150188/
State : success

== Summary ==

CI Bug Log - changes from xe-3244-1eb0e9ebd86a603c0d83e641c5e543606d175bc6_BAT -> xe-pw-150188v1_BAT
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  

Participating hosts (7 -> 7)
------------------------------

  No changes in participating hosts


Changes
-------

  No changes found


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

  * IGT: IGT_8409 -> IGT_8410
  * Linux: xe-3244-1eb0e9ebd86a603c0d83e641c5e543606d175bc6 -> xe-pw-150188v1

  IGT_8409: 47d092f112d138977837666b161c97032c3446cd @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  IGT_8410: 5826cdbf1cb8f5ec8a42bae33deb6b2b63e59e6e @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  xe-3244-1eb0e9ebd86a603c0d83e641c5e543606d175bc6: 1eb0e9ebd86a603c0d83e641c5e543606d175bc6
  xe-pw-150188v1: 150188v1

== Logs ==

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

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

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

* Re: [PATCH] drm/xe: Use TLB innvalidation context for invalidations issued from bind queues
  2025-06-12 21:40 [PATCH] drm/xe: Use TLB innvalidation context for invalidations issued from bind queues Matthew Brost
                   ` (2 preceding siblings ...)
  2025-06-13  4:07 ` ✓ Xe.CI.BAT: " Patchwork
@ 2025-06-13  8:40 ` Thomas Hellström
  2025-06-13 16:09   ` Matthew Brost
  2025-06-14  2:49 ` ✓ Xe.CI.Full: success for " Patchwork
  4 siblings, 1 reply; 8+ messages in thread
From: Thomas Hellström @ 2025-06-13  8:40 UTC (permalink / raw)
  To: Matthew Brost, intel-xe; +Cc: francois.dugast, himal.prasad.ghimiray

On Thu, 2025-06-12 at 14:40 -0700, Matthew Brost wrote:
> In order to avoid adding tons of invalidation fences to dma-resv
> BOOKKEEP slots, and thus jobs dependencies, when stream of unbinds
> arrives (e.g., many user frees or unmaps), use a dma fence tlb
> invalidation context associated with the queue issuing the bind
> operation.
> 
> Two fence contexts are needed - one for each GT as TLB invalidations
> are only ordered on a GT. A per GT ordered wq is needed to queue the
> invalidations to maintain dma fence ordering as well.
> 
> This fixes the below splat when the number of invalidations gets out
> of
> hand:
> 
> [ 1661.638258] watchdog: BUG: soft lockup - CPU#2 stuck for 26s!
> [kworker/u65:8:75257]
> [ 1661.638262] Modules linked in: xe drm_gpusvm drm_gpuvm
> drm_ttm_helper ttm drm_exec gpu_sched drm_suballoc_helper drm_buddy
> drm_kms_helper x86_pkg_temp_thermal coretemp snd_hda_cod     
> ec_realtek
> snd_hda_codec_generic snd_hda_scodec_component mei_pxp mei_hdcp
> wmi_bmof
> snd_hda_intel snd_intel_dspcfg snd_hda_codec snd_hwdep i2c_i801
> snd_hda_core i2c_mux snd_pcm i2c_s      mbus video wmi mei_me mei
> fuse
> igb e1000e i2c_algo_bit ptp ghash_clmulni_intel pps_core
> intel_lpss_pci
> [last unloaded: xe]
> [ 1661.638278] CPU: 2 UID: 0 PID: 75257 Comm: kworker/u65:8
> Tainted: G S                  6.16.0-rc1-xe+ #397 PREEMPT(undef)
> [ 1661.638280] Tainted: [S]=CPU_OUT_OF_SPEC
> [ 1661.638280] Hardware name: Intel Corporation Raptor Lake Client
> Platform/RPL-S ADP-S DDR5 UDIMM CRB, BIOS
> RPLSFWI1.R00.3492.A00.2211291114 11/29/2022
> [ 1661.638281] Workqueue: xe_gt_page_fault_work_queue
> xe_svm_garbage_collector_work_func [xe]
> [ 1661.638311] RIP: 0010:xas_start+0x47/0xd0
> [ 1661.638317] Code: 07 48 8b 57 08 48 8b 40 08 48 89 c1 83 e1 03
> 48 83 f9 02 75 08 48 3d 00 10 00 00 77 21 48 85 d2 75 29 48 c7 47 18
> 00
> 00 00 00 <c3> cc cc cc cc 48 c1 fa 02 85 d2       74 c7 31 c0 c3 cc
> cc
> cc cc 0f b6
> [ 1661.638317] RSP: 0018:ffffc90003d9b968 EFLAGS: 00000297
> [ 1661.638318] RAX: ffff88810459b232 RBX: ffffc90003d9b9a0 RCX:
> 0000000000000006
> [ 1661.638319] RDX: 0000000000000009 RSI: 0000000000000003 RDI:
> ffffc90003d9b9a0
> [ 1661.638320] RBP: ffffffffffffffff R08: ffff888197a0a600 R09:
> 0000000000000228
> [ 1661.638320] R10: ffffffffffffffff R11: ffffffffffffffc0 R12:
> 0000000000000241
> [ 1661.638320] R13: ffffffffffffffff R14: 0000000000000040 R15:
> ffff8881014db000
> [ 1661.638321] FS:  0000000000000000(0000)
> GS:ffff88890aee8000(0000) knlGS:0000000000000000
> [ 1661.638322] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> [ 1661.638322] CR2: 00007fc07287fff8 CR3: 000000000242c003 CR4:
> 0000000000f70ef0
> [ 1661.638323] PKRU: 55555554
> [ 1661.638323] Call Trace:
> [ 1661.638325]  <TASK>
> [ 1661.638326]  xas_load+0xd/0xb0
> [ 1661.638328]  xas_find+0x187/0x1d0
> [ 1661.638330]  xa_find_after+0x10f/0x130
> [ 1661.638332]  drm_sched_job_add_dependency+0x80/0x1e0
> [gpu_sched]
> [ 1661.638335]  drm_sched_job_add_resv_dependencies+0x62/0x120
> [gpu_sched]
> [ 1661.638337]  xe_pt_vm_dependencies+0x5b/0x2f0 [xe]
> [ 1661.638359]  xe_pt_svm_pre_commit+0x59/0x1a0 [xe]
> [ 1661.638376]  xe_migrate_update_pgtables+0x67f/0x910 [xe]
> [ 1661.638397]  ? xe_pt_stage_unbind+0x92/0xd0 [xe]
> [ 1661.638416]  xe_pt_update_ops_run+0x12e/0x7f0 [xe]
> [ 1661.638433]  ops_execute+0x1b1/0x430 [xe]
> [ 1661.638449]  xe_vm_range_unbind+0x260/0x2a0 [xe]
> [ 1661.638465]  xe_svm_garbage_collector+0xfe/0x1c0 [xe]
> [ 1661.638478]  xe_svm_garbage_collector_work_func+0x25/0x30 [xe]
> [ 1661.638491]  process_one_work+0x16b/0x2e0
> [ 1661.638495]  worker_thread+0x284/0x410
> [ 1661.638496]  ? __pfx_worker_thread+0x10/0x10
> [ 1661.638496]  kthread+0xe9/0x210
> [ 1661.638498]  ? __pfx_kthread+0x10/0x10
> 
> Signed-off-by: Matthew Brost <matthew.brost@intel.com>
> ---
>  drivers/gpu/drm/xe/xe_exec_queue.c          |  8 +++++++
>  drivers/gpu/drm/xe/xe_exec_queue_types.h    | 17 +++++++++++++++
>  drivers/gpu/drm/xe/xe_gt_tlb_invalidation.c | 23 ++++++++++++++++---
> --
>  drivers/gpu/drm/xe/xe_gt_tlb_invalidation.h |  4 +++-
>  drivers/gpu/drm/xe/xe_pt.c                  | 10 +++++++--
>  drivers/gpu/drm/xe/xe_svm.c                 |  9 +++++---
>  drivers/gpu/drm/xe/xe_vm.c                  |  6 ++++--
>  7 files changed, 64 insertions(+), 13 deletions(-)
> 
> diff --git a/drivers/gpu/drm/xe/xe_exec_queue.c
> b/drivers/gpu/drm/xe/xe_exec_queue.c
> index fee22358cc09..71e354c56ad9 100644
> --- a/drivers/gpu/drm/xe/xe_exec_queue.c
> +++ b/drivers/gpu/drm/xe/xe_exec_queue.c
> @@ -94,6 +94,14 @@ static struct xe_exec_queue
> *__xe_exec_queue_alloc(struct xe_device *xe,
>  	else
>  		q->sched_props.priority =
> XE_EXEC_QUEUE_PRIORITY_NORMAL;
>  
> +	if (q->flags & (EXEC_QUEUE_FLAG_PERMANENT |
> EXEC_QUEUE_FLAG_VM)) {
> +		int i;
> +
> +		for (i = 0; i < XE_EXEC_QUEUE_TLB_CONTEXT_COUNT;
> ++i)
> +			q->tlb_invalidation.context[i] =
> +				dma_fence_context_alloc(1);
> +	}

Hmm. If invalidations are ordered per GT, why don't we just allocate
one invalidation context per GT, rather than one per GT per exec_queue?

Also, moving forward, this seems like a fit for a one-per-gt
invalidation drm_scheduler?

Thanks,
Thomas

> +
>  	if (vm)
>  		q->vm = xe_vm_get(vm);
>  
> diff --git a/drivers/gpu/drm/xe/xe_exec_queue_types.h
> b/drivers/gpu/drm/xe/xe_exec_queue_types.h
> index cc1cffb5c87f..81d240e561ee 100644
> --- a/drivers/gpu/drm/xe/xe_exec_queue_types.h
> +++ b/drivers/gpu/drm/xe/xe_exec_queue_types.h
> @@ -132,6 +132,23 @@ struct xe_exec_queue {
>  		struct list_head link;
>  	} lr;
>  
> +	/** @tlb_invalidation: TLB invalidations exec queue state */
> +	struct {
> +		/**
> +		 * @tlb_invalidation.context: The TLB invalidation
> context
> +		 * for the queue (VM and MIGRATION queues only)
> +		 */
> +#define XE_EXEC_QUEUE_TLB_CONTEXT_PRIMARY_GT	0
> +#define XE_EXEC_QUEUE_TLB_CONTEXT_MEDIA_GT	1
> +#define
> XE_EXEC_QUEUE_TLB_CONTEXT_COUNT		(XE_EXEC_QUEUE_TLB_CONTEXT_MEDIA_GT +1)
> +		u64 context[XE_EXEC_QUEUE_TLB_CONTEXT_COUNT];
> +		/**
> +		 * @tlb_invalidation.seqno: The TLB invalidation
> seqno for the
> +		 * queue (VM and MIGRATION queues only)
> +		 */
> +		u32 seqno[XE_EXEC_QUEUE_TLB_CONTEXT_COUNT];
> +	} tlb_invalidation;
> +
>  	/** @pxp: PXP info tracking */
>  	struct {
>  		/** @pxp.type: PXP session type used by this queue
> */
> diff --git a/drivers/gpu/drm/xe/xe_gt_tlb_invalidation.c
> b/drivers/gpu/drm/xe/xe_gt_tlb_invalidation.c
> index 084cbdeba8ea..0a2fcaaf04fc 100644
> --- a/drivers/gpu/drm/xe/xe_gt_tlb_invalidation.c
> +++ b/drivers/gpu/drm/xe/xe_gt_tlb_invalidation.c
> @@ -7,6 +7,7 @@
>  
>  #include "abi/guc_actions_abi.h"
>  #include "xe_device.h"
> +#include "xe_exec_queue_types.h"
>  #include "xe_force_wake.h"
>  #include "xe_gt.h"
>  #include "xe_gt_printk.h"
> @@ -294,7 +295,7 @@ int xe_gt_tlb_invalidation_ggtt(struct xe_gt *gt)
>  		struct xe_gt_tlb_invalidation_fence fence;
>  		int ret;
>  
> -		xe_gt_tlb_invalidation_fence_init(gt, &fence, true);
> +		xe_gt_tlb_invalidation_fence_init(gt, NULL, &fence,
> 0, true);
>  		ret = xe_gt_tlb_invalidation_guc(gt, &fence);
>  		if (ret)
>  			return ret;
> @@ -431,7 +432,7 @@ void xe_gt_tlb_invalidation_vm(struct xe_gt *gt,
> struct xe_vm *vm)
>  	u64 range = 1ull << vm->xe->info.va_bits;
>  	int ret;
>  
> -	xe_gt_tlb_invalidation_fence_init(gt, &fence, true);
> +	xe_gt_tlb_invalidation_fence_init(gt, NULL, &fence, 0,
> true);
>  
>  	ret = xe_gt_tlb_invalidation_range(gt, &fence, 0, range, vm-
> >usm.asid);
>  	if (ret < 0)
> @@ -551,7 +552,9 @@ static const struct dma_fence_ops
> invalidation_fence_ops = {
>  /**
>   * xe_gt_tlb_invalidation_fence_init - Initialize TLB invalidation
> fence
>   * @gt: GT
> + * @q: exec queue issuing TLB invalidation, if NULL no queue
> associated
>   * @fence: TLB invalidation fence to initialize
> + * @tlb_context: TLB invalidation context for exec_queue
>   * @stack: fence is stack variable
>   *
>   * Initialize TLB invalidation fence for use.
> xe_gt_tlb_invalidation_fence_fini
> @@ -559,15 +562,25 @@ static const struct dma_fence_ops
> invalidation_fence_ops = {
>   * even on error.
>   */
>  void xe_gt_tlb_invalidation_fence_init(struct xe_gt *gt,
> +				       struct xe_exec_queue *q,
>  				       struct
> xe_gt_tlb_invalidation_fence *fence,
> +				       int tlb_context,
>  				       bool stack)
>  {
> +	xe_gt_assert(gt, tlb_context <
> XE_EXEC_QUEUE_TLB_CONTEXT_COUNT);
> +
>  	xe_pm_runtime_get_noresume(gt_to_xe(gt));
>  
>  	spin_lock_irq(&gt->tlb_invalidation.lock);
> -	dma_fence_init(&fence->base, &invalidation_fence_ops,
> -		       &gt->tlb_invalidation.lock,
> -		       dma_fence_context_alloc(1), 1);
> +	if (q)
> +		dma_fence_init(&fence->base,
> &invalidation_fence_ops,
> +			       &gt->tlb_invalidation.lock,
> +			       q-
> >tlb_invalidation.context[tlb_context],
> +			       ++q-
> >tlb_invalidation.seqno[tlb_context]);
> +	else
> +		dma_fence_init(&fence->base,
> &invalidation_fence_ops,
> +			       &gt->tlb_invalidation.lock,
> +			       dma_fence_context_alloc(1), 1);
>  	spin_unlock_irq(&gt->tlb_invalidation.lock);
>  	INIT_LIST_HEAD(&fence->link);
>  	if (stack)
> diff --git a/drivers/gpu/drm/xe/xe_gt_tlb_invalidation.h
> b/drivers/gpu/drm/xe/xe_gt_tlb_invalidation.h
> index abe9b03d543e..8440c608a0ec 100644
> --- a/drivers/gpu/drm/xe/xe_gt_tlb_invalidation.h
> +++ b/drivers/gpu/drm/xe/xe_gt_tlb_invalidation.h
> @@ -10,6 +10,7 @@
>  
>  #include "xe_gt_tlb_invalidation_types.h"
>  
> +struct xe_exec_queue;
>  struct xe_gt;
>  struct xe_guc;
>  struct xe_vm;
> @@ -29,8 +30,9 @@ int xe_gt_tlb_invalidation_range(struct xe_gt *gt,
>  int xe_guc_tlb_invalidation_done_handler(struct xe_guc *guc, u32
> *msg, u32 len);
>  
>  void xe_gt_tlb_invalidation_fence_init(struct xe_gt *gt,
> +				       struct xe_exec_queue *q,
>  				       struct
> xe_gt_tlb_invalidation_fence *fence,
> -				       bool stack);
> +				       int tlb_context, bool stack);
>  void xe_gt_tlb_invalidation_fence_signal(struct
> xe_gt_tlb_invalidation_fence *fence);
>  
>  static inline void
> diff --git a/drivers/gpu/drm/xe/xe_pt.c b/drivers/gpu/drm/xe/xe_pt.c
> index f39d5cc9f411..feab4b7c7e70 100644
> --- a/drivers/gpu/drm/xe/xe_pt.c
> +++ b/drivers/gpu/drm/xe/xe_pt.c
> @@ -1529,7 +1529,7 @@ static void invalidation_fence_cb(struct
> dma_fence *fence,
>  
>  	trace_xe_gt_tlb_invalidation_fence_cb(xe, &ifence->base);
>  	if (!ifence->fence->error) {
> -		queue_work(system_wq, &ifence->work);
> +		queue_work(ifence->gt->ordered_wq, &ifence->work);
>  	} else {
>  		ifence->base.base.error = ifence->fence->error;
>  		xe_gt_tlb_invalidation_fence_signal(&ifence->base);
> @@ -1551,13 +1551,15 @@ static void
> invalidation_fence_work_func(struct work_struct *w)
>  static void invalidation_fence_init(struct xe_gt *gt,
>  				    struct invalidation_fence
> *ifence,
>  				    struct dma_fence *fence,
> +				    struct xe_exec_queue *q, int
> tlb_context,
>  				    u64 start, u64 end, u32 asid)
>  {
>  	int ret;
>  
>  	trace_xe_gt_tlb_invalidation_fence_create(gt_to_xe(gt),
> &ifence->base);
>  
> -	xe_gt_tlb_invalidation_fence_init(gt, &ifence->base, false);
> +	xe_gt_tlb_invalidation_fence_init(gt, q, &ifence->base,
> tlb_context,
> +					  false);
>  
>  	ifence->fence = fence;
>  	ifence->gt = gt;
> @@ -2467,10 +2469,14 @@ xe_pt_update_ops_run(struct xe_tile *tile,
> struct xe_vma_ops *vops)
>  		if (mfence)
>  			dma_fence_get(fence);
>  		invalidation_fence_init(tile->primary_gt, ifence,
> fence,
> +					pt_update_ops->q,
> +					XE_EXEC_QUEUE_TLB_CONTEXT_PR
> IMARY_GT,
>  					pt_update_ops->start,
>  					pt_update_ops->last, vm-
> >usm.asid);
>  		if (mfence) {
>  			invalidation_fence_init(tile->media_gt,
> mfence, fence,
> +						pt_update_ops->q,
> +						XE_EXEC_QUEUE_TLB_CO
> NTEXT_MEDIA_GT,
>  						pt_update_ops-
> >start,
>  						pt_update_ops->last,
> vm->usm.asid);
>  			fences[0] = &ifence->base.base;
> diff --git a/drivers/gpu/drm/xe/xe_svm.c
> b/drivers/gpu/drm/xe/xe_svm.c
> index 13abc6049041..2edd1c52150e 100644
> --- a/drivers/gpu/drm/xe/xe_svm.c
> +++ b/drivers/gpu/drm/xe/xe_svm.c
> @@ -227,7 +227,9 @@ static void xe_svm_invalidate(struct drm_gpusvm
> *gpusvm,
>  			int err;
>  
>  			xe_gt_tlb_invalidation_fence_init(tile-
> >primary_gt,
> -							 
> &fence[fence_id], true);
> +							  NULL,
> +							 
> &fence[fence_id], 0,
> +							  true);
>  
>  			err = xe_gt_tlb_invalidation_range(tile-
> >primary_gt,
>  							  
> &fence[fence_id],
> @@ -241,8 +243,9 @@ static void xe_svm_invalidate(struct drm_gpusvm
> *gpusvm,
>  			if (!tile->media_gt)
>  				continue;
>  
> -			xe_gt_tlb_invalidation_fence_init(tile-
> >media_gt,
> -							 
> &fence[fence_id], true);
> +			xe_gt_tlb_invalidation_fence_init(tile-
> >media_gt, NULL,
> +							 
> &fence[fence_id], 0,
> +							  true);
>  
>  			err = xe_gt_tlb_invalidation_range(tile-
> >media_gt,
>  							  
> &fence[fence_id],
> diff --git a/drivers/gpu/drm/xe/xe_vm.c b/drivers/gpu/drm/xe/xe_vm.c
> index d18807b92b18..730319b78a0a 100644
> --- a/drivers/gpu/drm/xe/xe_vm.c
> +++ b/drivers/gpu/drm/xe/xe_vm.c
> @@ -3896,8 +3896,9 @@ int xe_vm_invalidate_vma(struct xe_vma *vma)
>  		if (xe_pt_zap_ptes(tile, vma)) {
>  			xe_device_wmb(xe);
>  			xe_gt_tlb_invalidation_fence_init(tile-
> >primary_gt,
> +							  NULL,
>  							 
> &fence[fence_id],
> -							  true);
> +							  0, true);
>  
>  			ret = xe_gt_tlb_invalidation_vma(tile-
> >primary_gt,
>  							
> &fence[fence_id], vma);
> @@ -3909,8 +3910,9 @@ int xe_vm_invalidate_vma(struct xe_vma *vma)
>  				continue;
>  
>  			xe_gt_tlb_invalidation_fence_init(tile-
> >media_gt,
> +							  NULL,
>  							 
> &fence[fence_id],
> -							  true);
> +							  0, true);
>  
>  			ret = xe_gt_tlb_invalidation_vma(tile-
> >media_gt,
>  							
> &fence[fence_id], vma);


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

* Re: [PATCH] drm/xe: Use TLB innvalidation context for invalidations issued from bind queues
  2025-06-13  8:40 ` [PATCH] " Thomas Hellström
@ 2025-06-13 16:09   ` Matthew Brost
  2025-06-15  3:49     ` Matthew Brost
  0 siblings, 1 reply; 8+ messages in thread
From: Matthew Brost @ 2025-06-13 16:09 UTC (permalink / raw)
  To: Thomas Hellström; +Cc: intel-xe, francois.dugast, himal.prasad.ghimiray

On Fri, Jun 13, 2025 at 10:40:19AM +0200, Thomas Hellström wrote:
> On Thu, 2025-06-12 at 14:40 -0700, Matthew Brost wrote:
> > In order to avoid adding tons of invalidation fences to dma-resv
> > BOOKKEEP slots, and thus jobs dependencies, when stream of unbinds
> > arrives (e.g., many user frees or unmaps), use a dma fence tlb
> > invalidation context associated with the queue issuing the bind
> > operation.
> > 
> > Two fence contexts are needed - one for each GT as TLB invalidations
> > are only ordered on a GT. A per GT ordered wq is needed to queue the
> > invalidations to maintain dma fence ordering as well.
> > 
> > This fixes the below splat when the number of invalidations gets out
> > of
> > hand:
> > 
> > [ 1661.638258] watchdog: BUG: soft lockup - CPU#2 stuck for 26s!
> > [kworker/u65:8:75257]
> > [ 1661.638262] Modules linked in: xe drm_gpusvm drm_gpuvm
> > drm_ttm_helper ttm drm_exec gpu_sched drm_suballoc_helper drm_buddy
> > drm_kms_helper x86_pkg_temp_thermal coretemp snd_hda_cod     
> > ec_realtek
> > snd_hda_codec_generic snd_hda_scodec_component mei_pxp mei_hdcp
> > wmi_bmof
> > snd_hda_intel snd_intel_dspcfg snd_hda_codec snd_hwdep i2c_i801
> > snd_hda_core i2c_mux snd_pcm i2c_s      mbus video wmi mei_me mei
> > fuse
> > igb e1000e i2c_algo_bit ptp ghash_clmulni_intel pps_core
> > intel_lpss_pci
> > [last unloaded: xe]
> > [ 1661.638278] CPU: 2 UID: 0 PID: 75257 Comm: kworker/u65:8
> > Tainted: G S                  6.16.0-rc1-xe+ #397 PREEMPT(undef)
> > [ 1661.638280] Tainted: [S]=CPU_OUT_OF_SPEC
> > [ 1661.638280] Hardware name: Intel Corporation Raptor Lake Client
> > Platform/RPL-S ADP-S DDR5 UDIMM CRB, BIOS
> > RPLSFWI1.R00.3492.A00.2211291114 11/29/2022
> > [ 1661.638281] Workqueue: xe_gt_page_fault_work_queue
> > xe_svm_garbage_collector_work_func [xe]
> > [ 1661.638311] RIP: 0010:xas_start+0x47/0xd0
> > [ 1661.638317] Code: 07 48 8b 57 08 48 8b 40 08 48 89 c1 83 e1 03
> > 48 83 f9 02 75 08 48 3d 00 10 00 00 77 21 48 85 d2 75 29 48 c7 47 18
> > 00
> > 00 00 00 <c3> cc cc cc cc 48 c1 fa 02 85 d2       74 c7 31 c0 c3 cc
> > cc
> > cc cc 0f b6
> > [ 1661.638317] RSP: 0018:ffffc90003d9b968 EFLAGS: 00000297
> > [ 1661.638318] RAX: ffff88810459b232 RBX: ffffc90003d9b9a0 RCX:
> > 0000000000000006
> > [ 1661.638319] RDX: 0000000000000009 RSI: 0000000000000003 RDI:
> > ffffc90003d9b9a0
> > [ 1661.638320] RBP: ffffffffffffffff R08: ffff888197a0a600 R09:
> > 0000000000000228
> > [ 1661.638320] R10: ffffffffffffffff R11: ffffffffffffffc0 R12:
> > 0000000000000241
> > [ 1661.638320] R13: ffffffffffffffff R14: 0000000000000040 R15:
> > ffff8881014db000
> > [ 1661.638321] FS:  0000000000000000(0000)
> > GS:ffff88890aee8000(0000) knlGS:0000000000000000
> > [ 1661.638322] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> > [ 1661.638322] CR2: 00007fc07287fff8 CR3: 000000000242c003 CR4:
> > 0000000000f70ef0
> > [ 1661.638323] PKRU: 55555554
> > [ 1661.638323] Call Trace:
> > [ 1661.638325]  <TASK>
> > [ 1661.638326]  xas_load+0xd/0xb0
> > [ 1661.638328]  xas_find+0x187/0x1d0
> > [ 1661.638330]  xa_find_after+0x10f/0x130
> > [ 1661.638332]  drm_sched_job_add_dependency+0x80/0x1e0
> > [gpu_sched]
> > [ 1661.638335]  drm_sched_job_add_resv_dependencies+0x62/0x120
> > [gpu_sched]
> > [ 1661.638337]  xe_pt_vm_dependencies+0x5b/0x2f0 [xe]
> > [ 1661.638359]  xe_pt_svm_pre_commit+0x59/0x1a0 [xe]
> > [ 1661.638376]  xe_migrate_update_pgtables+0x67f/0x910 [xe]
> > [ 1661.638397]  ? xe_pt_stage_unbind+0x92/0xd0 [xe]
> > [ 1661.638416]  xe_pt_update_ops_run+0x12e/0x7f0 [xe]
> > [ 1661.638433]  ops_execute+0x1b1/0x430 [xe]
> > [ 1661.638449]  xe_vm_range_unbind+0x260/0x2a0 [xe]
> > [ 1661.638465]  xe_svm_garbage_collector+0xfe/0x1c0 [xe]
> > [ 1661.638478]  xe_svm_garbage_collector_work_func+0x25/0x30 [xe]
> > [ 1661.638491]  process_one_work+0x16b/0x2e0
> > [ 1661.638495]  worker_thread+0x284/0x410
> > [ 1661.638496]  ? __pfx_worker_thread+0x10/0x10
> > [ 1661.638496]  kthread+0xe9/0x210
> > [ 1661.638498]  ? __pfx_kthread+0x10/0x10
> > 
> > Signed-off-by: Matthew Brost <matthew.brost@intel.com>
> > ---
> >  drivers/gpu/drm/xe/xe_exec_queue.c          |  8 +++++++
> >  drivers/gpu/drm/xe/xe_exec_queue_types.h    | 17 +++++++++++++++
> >  drivers/gpu/drm/xe/xe_gt_tlb_invalidation.c | 23 ++++++++++++++++---
> > --
> >  drivers/gpu/drm/xe/xe_gt_tlb_invalidation.h |  4 +++-
> >  drivers/gpu/drm/xe/xe_pt.c                  | 10 +++++++--
> >  drivers/gpu/drm/xe/xe_svm.c                 |  9 +++++---
> >  drivers/gpu/drm/xe/xe_vm.c                  |  6 ++++--
> >  7 files changed, 64 insertions(+), 13 deletions(-)
> > 
> > diff --git a/drivers/gpu/drm/xe/xe_exec_queue.c
> > b/drivers/gpu/drm/xe/xe_exec_queue.c
> > index fee22358cc09..71e354c56ad9 100644
> > --- a/drivers/gpu/drm/xe/xe_exec_queue.c
> > +++ b/drivers/gpu/drm/xe/xe_exec_queue.c
> > @@ -94,6 +94,14 @@ static struct xe_exec_queue
> > *__xe_exec_queue_alloc(struct xe_device *xe,
> >  	else
> >  		q->sched_props.priority =
> > XE_EXEC_QUEUE_PRIORITY_NORMAL;
> >  
> > +	if (q->flags & (EXEC_QUEUE_FLAG_PERMANENT |
> > EXEC_QUEUE_FLAG_VM)) {
> > +		int i;
> > +
> > +		for (i = 0; i < XE_EXEC_QUEUE_TLB_CONTEXT_COUNT;
> > ++i)
> > +			q->tlb_invalidation.context[i] =
> > +				dma_fence_context_alloc(1);
> > +	}
> 
> Hmm. If invalidations are ordered per GT, why don't we just allocate
> one invalidation context per GT, rather than one per GT per exec_queue?
> 

TLB invalidations are only ordered per bind queue and GT tuple. Consider
the case where two queues issue binds and TLB invalidations—if two
individual binds submit jobs with no interdependencies, the order of TLB
invalidation can vary. This breaks the assumption of using a single
dma-fence context per GT.

The fence for the TLB invalidation needs to be allocated and installed
in the dma_resv or as an out-sync ahead of the initial bind job
submission. Allocating it on demand at a later time is not an option.

> Also, moving forward, this seems like a fit for a one-per-gt
> invalidation drm_scheduler?
> 

I think this is a good idea. xe_pt.c essentially duplicates the DRM
scheduler functionality through open coding—delaying the TLB
invalidation until the associated job signals, then kicking a worker to
perform the invalidation. This closely resembles the DRM scheduler’s
dependency tracker, run_job worker, and run_job vfunc.

Let me see if I have time to refactor the TLB invalidation code to be
job-based, using a DRM scheduler with a backend that issues TLB
invalidations. I suspect this approach will be cleaner + pay in in the
long term. As mentioned above, we’d likely need a scheduler per queue
for optimal usage.

For now, I think we should land this with the correct Fixes: tag to
ensure a stable code base.

Matt

> Thanks,
> Thomas
> 
> > +
> >  	if (vm)
> >  		q->vm = xe_vm_get(vm);
> >  
> > diff --git a/drivers/gpu/drm/xe/xe_exec_queue_types.h
> > b/drivers/gpu/drm/xe/xe_exec_queue_types.h
> > index cc1cffb5c87f..81d240e561ee 100644
> > --- a/drivers/gpu/drm/xe/xe_exec_queue_types.h
> > +++ b/drivers/gpu/drm/xe/xe_exec_queue_types.h
> > @@ -132,6 +132,23 @@ struct xe_exec_queue {
> >  		struct list_head link;
> >  	} lr;
> >  
> > +	/** @tlb_invalidation: TLB invalidations exec queue state */
> > +	struct {
> > +		/**
> > +		 * @tlb_invalidation.context: The TLB invalidation
> > context
> > +		 * for the queue (VM and MIGRATION queues only)
> > +		 */
> > +#define XE_EXEC_QUEUE_TLB_CONTEXT_PRIMARY_GT	0
> > +#define XE_EXEC_QUEUE_TLB_CONTEXT_MEDIA_GT	1
> > +#define
> > XE_EXEC_QUEUE_TLB_CONTEXT_COUNT		(XE_EXEC_QUEUE_TLB_CONTEXT_MEDIA_GT +1)
> > +		u64 context[XE_EXEC_QUEUE_TLB_CONTEXT_COUNT];
> > +		/**
> > +		 * @tlb_invalidation.seqno: The TLB invalidation
> > seqno for the
> > +		 * queue (VM and MIGRATION queues only)
> > +		 */
> > +		u32 seqno[XE_EXEC_QUEUE_TLB_CONTEXT_COUNT];
> > +	} tlb_invalidation;
> > +
> >  	/** @pxp: PXP info tracking */
> >  	struct {
> >  		/** @pxp.type: PXP session type used by this queue
> > */
> > diff --git a/drivers/gpu/drm/xe/xe_gt_tlb_invalidation.c
> > b/drivers/gpu/drm/xe/xe_gt_tlb_invalidation.c
> > index 084cbdeba8ea..0a2fcaaf04fc 100644
> > --- a/drivers/gpu/drm/xe/xe_gt_tlb_invalidation.c
> > +++ b/drivers/gpu/drm/xe/xe_gt_tlb_invalidation.c
> > @@ -7,6 +7,7 @@
> >  
> >  #include "abi/guc_actions_abi.h"
> >  #include "xe_device.h"
> > +#include "xe_exec_queue_types.h"
> >  #include "xe_force_wake.h"
> >  #include "xe_gt.h"
> >  #include "xe_gt_printk.h"
> > @@ -294,7 +295,7 @@ int xe_gt_tlb_invalidation_ggtt(struct xe_gt *gt)
> >  		struct xe_gt_tlb_invalidation_fence fence;
> >  		int ret;
> >  
> > -		xe_gt_tlb_invalidation_fence_init(gt, &fence, true);
> > +		xe_gt_tlb_invalidation_fence_init(gt, NULL, &fence,
> > 0, true);
> >  		ret = xe_gt_tlb_invalidation_guc(gt, &fence);
> >  		if (ret)
> >  			return ret;
> > @@ -431,7 +432,7 @@ void xe_gt_tlb_invalidation_vm(struct xe_gt *gt,
> > struct xe_vm *vm)
> >  	u64 range = 1ull << vm->xe->info.va_bits;
> >  	int ret;
> >  
> > -	xe_gt_tlb_invalidation_fence_init(gt, &fence, true);
> > +	xe_gt_tlb_invalidation_fence_init(gt, NULL, &fence, 0,
> > true);
> >  
> >  	ret = xe_gt_tlb_invalidation_range(gt, &fence, 0, range, vm-
> > >usm.asid);
> >  	if (ret < 0)
> > @@ -551,7 +552,9 @@ static const struct dma_fence_ops
> > invalidation_fence_ops = {
> >  /**
> >   * xe_gt_tlb_invalidation_fence_init - Initialize TLB invalidation
> > fence
> >   * @gt: GT
> > + * @q: exec queue issuing TLB invalidation, if NULL no queue
> > associated
> >   * @fence: TLB invalidation fence to initialize
> > + * @tlb_context: TLB invalidation context for exec_queue
> >   * @stack: fence is stack variable
> >   *
> >   * Initialize TLB invalidation fence for use.
> > xe_gt_tlb_invalidation_fence_fini
> > @@ -559,15 +562,25 @@ static const struct dma_fence_ops
> > invalidation_fence_ops = {
> >   * even on error.
> >   */
> >  void xe_gt_tlb_invalidation_fence_init(struct xe_gt *gt,
> > +				       struct xe_exec_queue *q,
> >  				       struct
> > xe_gt_tlb_invalidation_fence *fence,
> > +				       int tlb_context,
> >  				       bool stack)
> >  {
> > +	xe_gt_assert(gt, tlb_context <
> > XE_EXEC_QUEUE_TLB_CONTEXT_COUNT);
> > +
> >  	xe_pm_runtime_get_noresume(gt_to_xe(gt));
> >  
> >  	spin_lock_irq(&gt->tlb_invalidation.lock);
> > -	dma_fence_init(&fence->base, &invalidation_fence_ops,
> > -		       &gt->tlb_invalidation.lock,
> > -		       dma_fence_context_alloc(1), 1);
> > +	if (q)
> > +		dma_fence_init(&fence->base,
> > &invalidation_fence_ops,
> > +			       &gt->tlb_invalidation.lock,
> > +			       q-
> > >tlb_invalidation.context[tlb_context],
> > +			       ++q-
> > >tlb_invalidation.seqno[tlb_context]);
> > +	else
> > +		dma_fence_init(&fence->base,
> > &invalidation_fence_ops,
> > +			       &gt->tlb_invalidation.lock,
> > +			       dma_fence_context_alloc(1), 1);
> >  	spin_unlock_irq(&gt->tlb_invalidation.lock);
> >  	INIT_LIST_HEAD(&fence->link);
> >  	if (stack)
> > diff --git a/drivers/gpu/drm/xe/xe_gt_tlb_invalidation.h
> > b/drivers/gpu/drm/xe/xe_gt_tlb_invalidation.h
> > index abe9b03d543e..8440c608a0ec 100644
> > --- a/drivers/gpu/drm/xe/xe_gt_tlb_invalidation.h
> > +++ b/drivers/gpu/drm/xe/xe_gt_tlb_invalidation.h
> > @@ -10,6 +10,7 @@
> >  
> >  #include "xe_gt_tlb_invalidation_types.h"
> >  
> > +struct xe_exec_queue;
> >  struct xe_gt;
> >  struct xe_guc;
> >  struct xe_vm;
> > @@ -29,8 +30,9 @@ int xe_gt_tlb_invalidation_range(struct xe_gt *gt,
> >  int xe_guc_tlb_invalidation_done_handler(struct xe_guc *guc, u32
> > *msg, u32 len);
> >  
> >  void xe_gt_tlb_invalidation_fence_init(struct xe_gt *gt,
> > +				       struct xe_exec_queue *q,
> >  				       struct
> > xe_gt_tlb_invalidation_fence *fence,
> > -				       bool stack);
> > +				       int tlb_context, bool stack);
> >  void xe_gt_tlb_invalidation_fence_signal(struct
> > xe_gt_tlb_invalidation_fence *fence);
> >  
> >  static inline void
> > diff --git a/drivers/gpu/drm/xe/xe_pt.c b/drivers/gpu/drm/xe/xe_pt.c
> > index f39d5cc9f411..feab4b7c7e70 100644
> > --- a/drivers/gpu/drm/xe/xe_pt.c
> > +++ b/drivers/gpu/drm/xe/xe_pt.c
> > @@ -1529,7 +1529,7 @@ static void invalidation_fence_cb(struct
> > dma_fence *fence,
> >  
> >  	trace_xe_gt_tlb_invalidation_fence_cb(xe, &ifence->base);
> >  	if (!ifence->fence->error) {
> > -		queue_work(system_wq, &ifence->work);
> > +		queue_work(ifence->gt->ordered_wq, &ifence->work);
> >  	} else {
> >  		ifence->base.base.error = ifence->fence->error;
> >  		xe_gt_tlb_invalidation_fence_signal(&ifence->base);
> > @@ -1551,13 +1551,15 @@ static void
> > invalidation_fence_work_func(struct work_struct *w)
> >  static void invalidation_fence_init(struct xe_gt *gt,
> >  				    struct invalidation_fence
> > *ifence,
> >  				    struct dma_fence *fence,
> > +				    struct xe_exec_queue *q, int
> > tlb_context,
> >  				    u64 start, u64 end, u32 asid)
> >  {
> >  	int ret;
> >  
> >  	trace_xe_gt_tlb_invalidation_fence_create(gt_to_xe(gt),
> > &ifence->base);
> >  
> > -	xe_gt_tlb_invalidation_fence_init(gt, &ifence->base, false);
> > +	xe_gt_tlb_invalidation_fence_init(gt, q, &ifence->base,
> > tlb_context,
> > +					  false);
> >  
> >  	ifence->fence = fence;
> >  	ifence->gt = gt;
> > @@ -2467,10 +2469,14 @@ xe_pt_update_ops_run(struct xe_tile *tile,
> > struct xe_vma_ops *vops)
> >  		if (mfence)
> >  			dma_fence_get(fence);
> >  		invalidation_fence_init(tile->primary_gt, ifence,
> > fence,
> > +					pt_update_ops->q,
> > +					XE_EXEC_QUEUE_TLB_CONTEXT_PR
> > IMARY_GT,
> >  					pt_update_ops->start,
> >  					pt_update_ops->last, vm-
> > >usm.asid);
> >  		if (mfence) {
> >  			invalidation_fence_init(tile->media_gt,
> > mfence, fence,
> > +						pt_update_ops->q,
> > +						XE_EXEC_QUEUE_TLB_CO
> > NTEXT_MEDIA_GT,
> >  						pt_update_ops-
> > >start,
> >  						pt_update_ops->last,
> > vm->usm.asid);
> >  			fences[0] = &ifence->base.base;
> > diff --git a/drivers/gpu/drm/xe/xe_svm.c
> > b/drivers/gpu/drm/xe/xe_svm.c
> > index 13abc6049041..2edd1c52150e 100644
> > --- a/drivers/gpu/drm/xe/xe_svm.c
> > +++ b/drivers/gpu/drm/xe/xe_svm.c
> > @@ -227,7 +227,9 @@ static void xe_svm_invalidate(struct drm_gpusvm
> > *gpusvm,
> >  			int err;
> >  
> >  			xe_gt_tlb_invalidation_fence_init(tile-
> > >primary_gt,
> > -							 
> > &fence[fence_id], true);
> > +							  NULL,
> > +							 
> > &fence[fence_id], 0,
> > +							  true);
> >  
> >  			err = xe_gt_tlb_invalidation_range(tile-
> > >primary_gt,
> >  							  
> > &fence[fence_id],
> > @@ -241,8 +243,9 @@ static void xe_svm_invalidate(struct drm_gpusvm
> > *gpusvm,
> >  			if (!tile->media_gt)
> >  				continue;
> >  
> > -			xe_gt_tlb_invalidation_fence_init(tile-
> > >media_gt,
> > -							 
> > &fence[fence_id], true);
> > +			xe_gt_tlb_invalidation_fence_init(tile-
> > >media_gt, NULL,
> > +							 
> > &fence[fence_id], 0,
> > +							  true);
> >  
> >  			err = xe_gt_tlb_invalidation_range(tile-
> > >media_gt,
> >  							  
> > &fence[fence_id],
> > diff --git a/drivers/gpu/drm/xe/xe_vm.c b/drivers/gpu/drm/xe/xe_vm.c
> > index d18807b92b18..730319b78a0a 100644
> > --- a/drivers/gpu/drm/xe/xe_vm.c
> > +++ b/drivers/gpu/drm/xe/xe_vm.c
> > @@ -3896,8 +3896,9 @@ int xe_vm_invalidate_vma(struct xe_vma *vma)
> >  		if (xe_pt_zap_ptes(tile, vma)) {
> >  			xe_device_wmb(xe);
> >  			xe_gt_tlb_invalidation_fence_init(tile-
> > >primary_gt,
> > +							  NULL,
> >  							 
> > &fence[fence_id],
> > -							  true);
> > +							  0, true);
> >  
> >  			ret = xe_gt_tlb_invalidation_vma(tile-
> > >primary_gt,
> >  							
> > &fence[fence_id], vma);
> > @@ -3909,8 +3910,9 @@ int xe_vm_invalidate_vma(struct xe_vma *vma)
> >  				continue;
> >  
> >  			xe_gt_tlb_invalidation_fence_init(tile-
> > >media_gt,
> > +							  NULL,
> >  							 
> > &fence[fence_id],
> > -							  true);
> > +							  0, true);
> >  
> >  			ret = xe_gt_tlb_invalidation_vma(tile-
> > >media_gt,
> >  							
> > &fence[fence_id], vma);
> 

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

* ✓ Xe.CI.Full: success for drm/xe: Use TLB innvalidation context for invalidations issued from bind queues
  2025-06-12 21:40 [PATCH] drm/xe: Use TLB innvalidation context for invalidations issued from bind queues Matthew Brost
                   ` (3 preceding siblings ...)
  2025-06-13  8:40 ` [PATCH] " Thomas Hellström
@ 2025-06-14  2:49 ` Patchwork
  4 siblings, 0 replies; 8+ messages in thread
From: Patchwork @ 2025-06-14  2:49 UTC (permalink / raw)
  To: Matthew Brost; +Cc: intel-xe

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

== Series Details ==

Series: drm/xe: Use TLB innvalidation context for invalidations issued from bind queues
URL   : https://patchwork.freedesktop.org/series/150188/
State : success

== Summary ==

CI Bug Log - changes from xe-3244-1eb0e9ebd86a603c0d83e641c5e543606d175bc6_FULL -> xe-pw-150188v1_FULL
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  

Participating hosts (4 -> 4)
------------------------------

  No changes in participating hosts

New tests
---------

  New tests have been introduced between xe-3244-1eb0e9ebd86a603c0d83e641c5e543606d175bc6_FULL and xe-pw-150188v1_FULL:

### New IGT tests (51) ###

  * igt@kms_async_flips@alternate-sync-async-flip@pipe-a-hdmi-a-1:
    - Statuses : 1 pass(s)
    - Exec time: [2.16] s

  * igt@kms_async_flips@alternate-sync-async-flip@pipe-b-hdmi-a-1:
    - Statuses : 1 pass(s)
    - Exec time: [2.07] s

  * igt@kms_async_flips@alternate-sync-async-flip@pipe-c-hdmi-a-1:
    - Statuses : 1 pass(s)
    - Exec time: [2.07] s

  * igt@kms_async_flips@alternate-sync-async-flip@pipe-d-hdmi-a-1:
    - Statuses : 1 pass(s)
    - Exec time: [2.08] s

  * igt@kms_async_flips@invalid-async-flip@pipe-a-hdmi-a-1:
    - Statuses : 1 pass(s)
    - Exec time: [0.22] s

  * igt@kms_async_flips@invalid-async-flip@pipe-b-hdmi-a-1:
    - Statuses : 1 pass(s)
    - Exec time: [0.09] s

  * igt@kms_async_flips@invalid-async-flip@pipe-c-hdmi-a-1:
    - Statuses : 1 pass(s)
    - Exec time: [0.09] s

  * igt@kms_async_flips@invalid-async-flip@pipe-d-hdmi-a-1:
    - Statuses : 1 pass(s)
    - Exec time: [0.10] s

  * igt@kms_async_flips@test-cursor@pipe-a-hdmi-a-1:
    - Statuses : 1 pass(s)
    - Exec time: [0.15] s

  * igt@kms_async_flips@test-cursor@pipe-b-hdmi-a-1:
    - Statuses : 1 pass(s)
    - Exec time: [0.05] s

  * igt@kms_async_flips@test-cursor@pipe-c-hdmi-a-1:
    - Statuses : 1 pass(s)
    - Exec time: [0.05] s

  * igt@kms_async_flips@test-cursor@pipe-d-hdmi-a-1:
    - Statuses : 1 pass(s)
    - Exec time: [0.05] s

  * igt@kms_async_flips@test-time-stamp@pipe-a-hdmi-a-1:
    - Statuses : 1 pass(s)
    - Exec time: [0.21] s

  * igt@kms_async_flips@test-time-stamp@pipe-a-hdmi-a-3:
    - Statuses : 1 pass(s)
    - Exec time: [0.18] s

  * igt@kms_async_flips@test-time-stamp@pipe-b-hdmi-a-1:
    - Statuses : 1 pass(s)
    - Exec time: [0.09] s

  * igt@kms_async_flips@test-time-stamp@pipe-b-hdmi-a-3:
    - Statuses : 1 pass(s)
    - Exec time: [0.19] s

  * igt@kms_async_flips@test-time-stamp@pipe-c-hdmi-a-1:
    - Statuses : 1 pass(s)
    - Exec time: [0.09] s

  * igt@kms_async_flips@test-time-stamp@pipe-c-hdmi-a-3:
    - Statuses : 1 pass(s)
    - Exec time: [0.19] s

  * igt@kms_async_flips@test-time-stamp@pipe-d-hdmi-a-1:
    - Statuses : 1 pass(s)
    - Exec time: [0.09] s

  * igt@kms_async_flips@test-time-stamp@pipe-d-hdmi-a-3:
    - Statuses : 1 pass(s)
    - Exec time: [0.19] s

  * igt@kms_bw@linear-tiling-1-displays-1920x1080p:
    - Statuses : 1 pass(s) 3 skip(s)
    - Exec time: [0.02, 1.33] s

  * igt@kms_bw@linear-tiling-1-displays-2560x1440p:
    - Statuses : 1 pass(s) 3 skip(s)
    - Exec time: [0.02, 1.32] s

  * igt@kms_bw@linear-tiling-1-displays-3840x2160p:
    - Statuses : 1 pass(s) 2 skip(s)
    - Exec time: [0.03, 0.51] s

  * igt@kms_bw@linear-tiling-2-displays-1920x1080p:
    - Statuses : 4 skip(s)
    - Exec time: [0.02, 1.33] s

  * igt@kms_bw@linear-tiling-2-displays-2560x1440p:
    - Statuses : 2 skip(s)
    - Exec time: [0.04, 1.34] s

  * igt@kms_bw@linear-tiling-2-displays-3840x2160p:
    - Statuses : 4 skip(s)
    - Exec time: [0.03, 1.33] s

  * igt@kms_bw@linear-tiling-3-displays-1920x1080p:
    - Statuses : 3 skip(s)
    - Exec time: [0.03, 0.06] s

  * igt@kms_bw@linear-tiling-3-displays-2560x1440p:
    - Statuses : 4 skip(s)
    - Exec time: [0.02, 1.33] s

  * igt@kms_bw@linear-tiling-3-displays-3840x2160p:
    - Statuses : 4 skip(s)
    - Exec time: [0.06, 1.35] s

  * igt@kms_bw@linear-tiling-4-displays-1920x1080p:
    - Statuses : 3 skip(s)
    - Exec time: [0.0, 0.07] s

  * igt@kms_bw@linear-tiling-4-displays-2560x1440p:
    - Statuses : 3 skip(s)
    - Exec time: [0.0, 0.07] s

  * igt@kms_bw@linear-tiling-4-displays-3840x2160p:
    - Statuses : 3 skip(s)
    - Exec time: [0.0, 1.37] s

  * igt@kms_chamelium_edid@dp-edid-change-during-hibernate:
    - Statuses : 4 skip(s)
    - Exec time: [0.0] s

  * igt@kms_chamelium_edid@hdmi-edid-change-during-hibernate:
    - Statuses : 4 skip(s)
    - Exec time: [0.0] s

  * igt@kms_chamelium_frames@hdmi-cmp-planes-random:
    - Statuses : 3 skip(s)
    - Exec time: [0.0] s

  * igt@kms_chamelium_frames@hdmi-crc-planes-random:
    - Statuses : 3 skip(s)
    - Exec time: [0.0] s

  * igt@kms_chamelium_hpd@common-hpd-after-hibernate:
    - Statuses : 4 skip(s)
    - Exec time: [0.0] s

  * igt@kms_chamelium_hpd@dp-hpd-after-hibernate:
    - Statuses : 3 skip(s)
    - Exec time: [0.0] s

  * igt@kms_chamelium_hpd@hdmi-hpd-after-hibernate:
    - Statuses : 4 skip(s)
    - Exec time: [0.0] s

  * igt@kms_chamelium_hpd@vga-hpd-after-hibernate:
    - Statuses : 4 skip(s)
    - Exec time: [0.0] s

  * igt@kms_flip@single-buffer-flip-vs-dpms-off-vs-modeset-interruptible@d-hdmi-a3:
    - Statuses : 1 pass(s)
    - Exec time: [0.71] s

  * igt@xe_create@create-invalid-size:
    - Statuses : 3 pass(s)
    - Exec time: [0.00] s

  * igt@xe_create@create-massive-size:
    - Statuses : 3 pass(s)
    - Exec time: [0.00] s

  * igt@xe_mmap@bad-extensions:
    - Statuses : 3 pass(s)
    - Exec time: [0.0] s

  * igt@xe_mmap@bad-flags:
    - Statuses : 4 pass(s)
    - Exec time: [0.0] s

  * igt@xe_mmap@bad-object:
    - Statuses : 4 pass(s)
    - Exec time: [0.0] s

  * igt@xe_module_load@force-load:
    - Statuses : 3 skip(s)
    - Exec time: [0.00] s

  * igt@xe_module_load@many-reload:
    - Statuses : 4 pass(s)
    - Exec time: [27.33, 93.19] s

  * igt@xe_module_load@reload:
    - Statuses : 2 pass(s)
    - Exec time: [1.98, 7.99] s

  * igt@xe_module_load@reload-no-display:
    - Statuses : 4 pass(s)
    - Exec time: [1.41, 3.07] s

  * igt@xe_module_load@unload:
    - Statuses : 3 pass(s)
    - Exec time: [0.68, 1.31] s

  

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

  Here are the changes found in xe-pw-150188v1_FULL that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@intel_hwmon@hwmon-write:
    - shard-adlp:         NOTRUN -> [SKIP][1] ([Intel XE#1125])
   [1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-adlp-2/igt@intel_hwmon@hwmon-write.html

  * igt@kms_async_flips@alternate-sync-async-flip:
    - shard-dg2-set2:     NOTRUN -> [FAIL][2] ([Intel XE#827]) +1 other test fail
   [2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-dg2-435/igt@kms_async_flips@alternate-sync-async-flip.html

  * igt@kms_async_flips@async-flip-with-page-flip-events-linear@pipe-c-edp-1:
    - shard-lnl:          [PASS][3] -> [FAIL][4] ([Intel XE#911]) +3 other tests fail
   [3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3244-1eb0e9ebd86a603c0d83e641c5e543606d175bc6/shard-lnl-8/igt@kms_async_flips@async-flip-with-page-flip-events-linear@pipe-c-edp-1.html
   [4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-lnl-7/igt@kms_async_flips@async-flip-with-page-flip-events-linear@pipe-c-edp-1.html

  * igt@kms_async_flips@async-flip-with-page-flip-events-tiled@pipe-d-dp-4-4-rc-ccs-cc:
    - shard-dg2-set2:     NOTRUN -> [SKIP][5] ([Intel XE#3767]) +15 other tests skip
   [5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-dg2-433/igt@kms_async_flips@async-flip-with-page-flip-events-tiled@pipe-d-dp-4-4-rc-ccs-cc.html

  * igt@kms_async_flips@crc-atomic@pipe-d-hdmi-a-1:
    - shard-adlp:         NOTRUN -> [FAIL][6] ([Intel XE#3884]) +1 other test fail
   [6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-adlp-1/igt@kms_async_flips@crc-atomic@pipe-d-hdmi-a-1.html

  * igt@kms_async_flips@invalid-async-flip:
    - shard-bmg:          NOTRUN -> [SKIP][7] ([Intel XE#873])
   [7]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-bmg-6/igt@kms_async_flips@invalid-async-flip.html
    - shard-dg2-set2:     NOTRUN -> [SKIP][8] ([Intel XE#873])
   [8]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-dg2-435/igt@kms_async_flips@invalid-async-flip.html
    - shard-lnl:          NOTRUN -> [SKIP][9] ([Intel XE#873])
   [9]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-lnl-2/igt@kms_async_flips@invalid-async-flip.html

  * igt@kms_big_fb@4-tiled-32bpp-rotate-270:
    - shard-dg2-set2:     NOTRUN -> [SKIP][10] ([Intel XE#316]) +3 other tests skip
   [10]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-dg2-435/igt@kms_big_fb@4-tiled-32bpp-rotate-270.html
    - shard-lnl:          NOTRUN -> [SKIP][11] ([Intel XE#1407]) +3 other tests skip
   [11]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-lnl-6/igt@kms_big_fb@4-tiled-32bpp-rotate-270.html

  * igt@kms_big_fb@linear-32bpp-rotate-270:
    - shard-bmg:          NOTRUN -> [SKIP][12] ([Intel XE#2327]) +5 other tests skip
   [12]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-bmg-2/igt@kms_big_fb@linear-32bpp-rotate-270.html

  * igt@kms_big_fb@x-tiled-8bpp-rotate-90:
    - shard-adlp:         NOTRUN -> [SKIP][13] ([Intel XE#316]) +8 other tests skip
   [13]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-adlp-1/igt@kms_big_fb@x-tiled-8bpp-rotate-90.html

  * igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-0:
    - shard-dg2-set2:     NOTRUN -> [SKIP][14] ([Intel XE#1124]) +13 other tests skip
   [14]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-dg2-433/igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-0.html

  * igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-180-async-flip:
    - shard-adlp:         NOTRUN -> [DMESG-FAIL][15] ([Intel XE#4543]) +9 other tests dmesg-fail
   [15]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-adlp-9/igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-180-async-flip.html
    - shard-bmg:          NOTRUN -> [SKIP][16] ([Intel XE#1124]) +9 other tests skip
   [16]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-bmg-1/igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-180-async-flip.html
    - shard-lnl:          NOTRUN -> [SKIP][17] ([Intel XE#1124]) +8 other tests skip
   [17]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-lnl-6/igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-180-async-flip.html

  * igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180-hflip-async-flip:
    - shard-adlp:         [PASS][18] -> [DMESG-FAIL][19] ([Intel XE#4543]) +1 other test dmesg-fail
   [18]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3244-1eb0e9ebd86a603c0d83e641c5e543606d175bc6/shard-adlp-6/igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180-hflip-async-flip.html
   [19]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-adlp-9/igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180-hflip-async-flip.html

  * igt@kms_big_fb@yf-tiled-addfb-size-overflow:
    - shard-bmg:          NOTRUN -> [SKIP][20] ([Intel XE#610])
   [20]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-bmg-1/igt@kms_big_fb@yf-tiled-addfb-size-overflow.html

  * igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-0:
    - shard-adlp:         NOTRUN -> [SKIP][21] ([Intel XE#1124]) +20 other tests skip
   [21]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-adlp-1/igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-0.html

  * igt@kms_bw@connected-linear-tiling-2-displays-3840x2160p:
    - shard-adlp:         NOTRUN -> [SKIP][22] ([Intel XE#2191]) +2 other tests skip
   [22]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-adlp-2/igt@kms_bw@connected-linear-tiling-2-displays-3840x2160p.html

  * igt@kms_bw@linear-tiling-1-displays-2560x1440p (NEW):
    - shard-bmg:          NOTRUN -> [SKIP][23] ([Intel XE#367])
   [23]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-bmg-6/igt@kms_bw@linear-tiling-1-displays-2560x1440p.html

  * igt@kms_bw@linear-tiling-2-displays-2560x1440p (NEW):
    - shard-adlp:         NOTRUN -> [SKIP][24] ([Intel XE#367]) +6 other tests skip
   [24]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-adlp-6/igt@kms_bw@linear-tiling-2-displays-2560x1440p.html

  * igt@kms_bw@linear-tiling-2-displays-3840x2160p (NEW):
    - shard-dg2-set2:     NOTRUN -> [SKIP][25] ([Intel XE#367]) +2 other tests skip
   [25]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-dg2-435/igt@kms_bw@linear-tiling-2-displays-3840x2160p.html

  * igt@kms_bw@linear-tiling-4-displays-2160x1440p:
    - shard-lnl:          NOTRUN -> [SKIP][26] ([Intel XE#1512])
   [26]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-lnl-1/igt@kms_bw@linear-tiling-4-displays-2160x1440p.html

  * igt@kms_ccs@bad-pixel-format-4-tiled-dg2-mc-ccs:
    - shard-bmg:          NOTRUN -> [SKIP][27] ([Intel XE#2887]) +12 other tests skip
   [27]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-bmg-3/igt@kms_ccs@bad-pixel-format-4-tiled-dg2-mc-ccs.html

  * igt@kms_ccs@bad-pixel-format-4-tiled-dg2-rc-ccs-cc@pipe-a-hdmi-a-1:
    - shard-adlp:         NOTRUN -> [SKIP][28] ([Intel XE#787]) +92 other tests skip
   [28]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-adlp-4/igt@kms_ccs@bad-pixel-format-4-tiled-dg2-rc-ccs-cc@pipe-a-hdmi-a-1.html

  * igt@kms_ccs@bad-rotation-90-4-tiled-mtl-rc-ccs-cc:
    - shard-lnl:          NOTRUN -> [SKIP][29] ([Intel XE#2887]) +9 other tests skip
   [29]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-lnl-4/igt@kms_ccs@bad-rotation-90-4-tiled-mtl-rc-ccs-cc.html

  * igt@kms_ccs@crc-primary-basic-4-tiled-bmg-ccs@pipe-c-edp-1:
    - shard-lnl:          NOTRUN -> [SKIP][30] ([Intel XE#2669]) +3 other tests skip
   [30]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-lnl-2/igt@kms_ccs@crc-primary-basic-4-tiled-bmg-ccs@pipe-c-edp-1.html

  * igt@kms_ccs@crc-primary-basic-yf-tiled-ccs@pipe-d-dp-4:
    - shard-dg2-set2:     NOTRUN -> [SKIP][31] ([Intel XE#455] / [Intel XE#787]) +23 other tests skip
   [31]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-dg2-435/igt@kms_ccs@crc-primary-basic-yf-tiled-ccs@pipe-d-dp-4.html

  * igt@kms_ccs@crc-primary-rotation-180-4-tiled-dg2-rc-ccs-cc@pipe-d-hdmi-a-1:
    - shard-adlp:         NOTRUN -> [SKIP][32] ([Intel XE#455] / [Intel XE#787]) +61 other tests skip
   [32]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-adlp-3/igt@kms_ccs@crc-primary-rotation-180-4-tiled-dg2-rc-ccs-cc@pipe-d-hdmi-a-1.html

  * igt@kms_ccs@crc-primary-suspend-4-tiled-mtl-rc-ccs:
    - shard-bmg:          NOTRUN -> [SKIP][33] ([Intel XE#3432]) +2 other tests skip
   [33]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-bmg-1/igt@kms_ccs@crc-primary-suspend-4-tiled-mtl-rc-ccs.html
    - shard-lnl:          NOTRUN -> [SKIP][34] ([Intel XE#3432]) +1 other test skip
   [34]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-lnl-4/igt@kms_ccs@crc-primary-suspend-4-tiled-mtl-rc-ccs.html

  * igt@kms_ccs@crc-sprite-planes-basic-4-tiled-bmg-ccs:
    - shard-adlp:         NOTRUN -> [SKIP][35] ([Intel XE#2907]) +2 other tests skip
   [35]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-adlp-9/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-bmg-ccs.html
    - shard-dg2-set2:     NOTRUN -> [SKIP][36] ([Intel XE#2907]) +1 other test skip
   [36]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-dg2-436/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-bmg-ccs.html

  * igt@kms_ccs@missing-ccs-buffer-yf-tiled-ccs@pipe-b-dp-4:
    - shard-dg2-set2:     NOTRUN -> [SKIP][37] ([Intel XE#787]) +83 other tests skip
   [37]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-dg2-435/igt@kms_ccs@missing-ccs-buffer-yf-tiled-ccs@pipe-b-dp-4.html

  * igt@kms_ccs@random-ccs-data-4-tiled-dg2-mc-ccs@pipe-a-hdmi-a-6:
    - shard-dg2-set2:     [PASS][38] -> [INCOMPLETE][39] ([Intel XE#1727] / [Intel XE#3113] / [Intel XE#4212] / [Intel XE#4522])
   [38]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3244-1eb0e9ebd86a603c0d83e641c5e543606d175bc6/shard-dg2-463/igt@kms_ccs@random-ccs-data-4-tiled-dg2-mc-ccs@pipe-a-hdmi-a-6.html
   [39]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-dg2-433/igt@kms_ccs@random-ccs-data-4-tiled-dg2-mc-ccs@pipe-a-hdmi-a-6.html

  * igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs-cc@pipe-d-dp-4:
    - shard-dg2-set2:     NOTRUN -> [INCOMPLETE][40] ([Intel XE#2705] / [Intel XE#4212])
   [40]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-dg2-464/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs-cc@pipe-d-dp-4.html

  * igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs@pipe-a-dp-4:
    - shard-dg2-set2:     NOTRUN -> [INCOMPLETE][41] ([Intel XE#1727] / [Intel XE#2705] / [Intel XE#3113] / [Intel XE#4212] / [Intel XE#4522])
   [41]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-dg2-464/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs@pipe-a-dp-4.html

  * igt@kms_chamelium_audio@hdmi-audio-edid:
    - shard-adlp:         NOTRUN -> [SKIP][42] ([Intel XE#373]) +19 other tests skip
   [42]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-adlp-8/igt@kms_chamelium_audio@hdmi-audio-edid.html

  * igt@kms_chamelium_color@ctm-0-75:
    - shard-dg2-set2:     NOTRUN -> [SKIP][43] ([Intel XE#306]) +2 other tests skip
   [43]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-dg2-433/igt@kms_chamelium_color@ctm-0-75.html

  * igt@kms_chamelium_color@ctm-red-to-blue:
    - shard-bmg:          NOTRUN -> [SKIP][44] ([Intel XE#2325]) +1 other test skip
   [44]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-bmg-4/igt@kms_chamelium_color@ctm-red-to-blue.html

  * igt@kms_chamelium_color@degamma:
    - shard-adlp:         NOTRUN -> [SKIP][45] ([Intel XE#306]) +1 other test skip
   [45]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-adlp-8/igt@kms_chamelium_color@degamma.html
    - shard-lnl:          NOTRUN -> [SKIP][46] ([Intel XE#306])
   [46]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-lnl-2/igt@kms_chamelium_color@degamma.html

  * igt@kms_chamelium_frames@hdmi-aspect-ratio:
    - shard-dg2-set2:     NOTRUN -> [SKIP][47] ([Intel XE#373]) +8 other tests skip
   [47]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-dg2-433/igt@kms_chamelium_frames@hdmi-aspect-ratio.html

  * igt@kms_chamelium_frames@hdmi-frame-dump:
    - shard-bmg:          NOTRUN -> [SKIP][48] ([Intel XE#2252]) +4 other tests skip
   [48]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-bmg-3/igt@kms_chamelium_frames@hdmi-frame-dump.html

  * igt@kms_chamelium_hpd@vga-hpd:
    - shard-lnl:          NOTRUN -> [SKIP][49] ([Intel XE#373]) +3 other tests skip
   [49]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-lnl-2/igt@kms_chamelium_hpd@vga-hpd.html

  * igt@kms_content_protection@dp-mst-type-0:
    - shard-adlp:         NOTRUN -> [SKIP][50] ([Intel XE#307])
   [50]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-adlp-2/igt@kms_content_protection@dp-mst-type-0.html

  * igt@kms_content_protection@legacy:
    - shard-bmg:          NOTRUN -> [FAIL][51] ([Intel XE#1178]) +3 other tests fail
   [51]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-bmg-3/igt@kms_content_protection@legacy.html
    - shard-dg2-set2:     NOTRUN -> [FAIL][52] ([Intel XE#1178]) +3 other tests fail
   [52]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-dg2-433/igt@kms_content_protection@legacy.html
    - shard-lnl:          NOTRUN -> [SKIP][53] ([Intel XE#5176]) +1 other test skip
   [53]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-lnl-8/igt@kms_content_protection@legacy.html

  * igt@kms_content_protection@type1:
    - shard-bmg:          NOTRUN -> [SKIP][54] ([Intel XE#2341])
   [54]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-bmg-4/igt@kms_content_protection@type1.html

  * igt@kms_cursor_crc@cursor-random-512x170:
    - shard-adlp:         NOTRUN -> [SKIP][55] ([Intel XE#308]) +1 other test skip
   [55]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-adlp-6/igt@kms_cursor_crc@cursor-random-512x170.html

  * igt@kms_cursor_crc@cursor-rapid-movement-32x10:
    - shard-bmg:          NOTRUN -> [SKIP][56] ([Intel XE#2320]) +1 other test skip
   [56]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-bmg-6/igt@kms_cursor_crc@cursor-rapid-movement-32x10.html
    - shard-lnl:          NOTRUN -> [SKIP][57] ([Intel XE#1424]) +1 other test skip
   [57]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-lnl-2/igt@kms_cursor_crc@cursor-rapid-movement-32x10.html

  * igt@kms_cursor_legacy@2x-nonblocking-modeset-vs-cursor-atomic:
    - shard-lnl:          NOTRUN -> [SKIP][58] ([Intel XE#309]) +4 other tests skip
   [58]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-lnl-2/igt@kms_cursor_legacy@2x-nonblocking-modeset-vs-cursor-atomic.html
    - shard-bmg:          NOTRUN -> [SKIP][59] ([Intel XE#2291])
   [59]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-bmg-6/igt@kms_cursor_legacy@2x-nonblocking-modeset-vs-cursor-atomic.html

  * igt@kms_cursor_legacy@cursorb-vs-flipb-atomic-transitions-varying-size:
    - shard-adlp:         NOTRUN -> [SKIP][60] ([Intel XE#309]) +7 other tests skip
   [60]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-adlp-2/igt@kms_cursor_legacy@cursorb-vs-flipb-atomic-transitions-varying-size.html
    - shard-bmg:          [PASS][61] -> [SKIP][62] ([Intel XE#2291]) +1 other test skip
   [61]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3244-1eb0e9ebd86a603c0d83e641c5e543606d175bc6/shard-bmg-2/igt@kms_cursor_legacy@cursorb-vs-flipb-atomic-transitions-varying-size.html
   [62]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-bmg-6/igt@kms_cursor_legacy@cursorb-vs-flipb-atomic-transitions-varying-size.html

  * igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions:
    - shard-bmg:          NOTRUN -> [SKIP][63] ([Intel XE#2286])
   [63]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-bmg-2/igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions.html

  * igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions-varying-size:
    - shard-dg2-set2:     NOTRUN -> [SKIP][64] ([Intel XE#323])
   [64]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-dg2-435/igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions-varying-size.html

  * igt@kms_dp_link_training@non-uhbr-sst:
    - shard-bmg:          [PASS][65] -> [SKIP][66] ([Intel XE#4354])
   [65]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3244-1eb0e9ebd86a603c0d83e641c5e543606d175bc6/shard-bmg-2/igt@kms_dp_link_training@non-uhbr-sst.html
   [66]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-bmg-6/igt@kms_dp_link_training@non-uhbr-sst.html

  * igt@kms_dp_link_training@uhbr-sst:
    - shard-adlp:         NOTRUN -> [SKIP][67] ([Intel XE#4356])
   [67]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-adlp-2/igt@kms_dp_link_training@uhbr-sst.html
    - shard-bmg:          NOTRUN -> [SKIP][68] ([Intel XE#4354])
   [68]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-bmg-8/igt@kms_dp_link_training@uhbr-sst.html
    - shard-dg2-set2:     NOTRUN -> [SKIP][69] ([Intel XE#4356])
   [69]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-dg2-435/igt@kms_dp_link_training@uhbr-sst.html
    - shard-lnl:          NOTRUN -> [SKIP][70] ([Intel XE#4354])
   [70]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-lnl-6/igt@kms_dp_link_training@uhbr-sst.html

  * igt@kms_dp_linktrain_fallback@dp-fallback:
    - shard-adlp:         NOTRUN -> [SKIP][71] ([Intel XE#4331])
   [71]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-adlp-1/igt@kms_dp_linktrain_fallback@dp-fallback.html
    - shard-lnl:          NOTRUN -> [SKIP][72] ([Intel XE#4294])
   [72]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-lnl-8/igt@kms_dp_linktrain_fallback@dp-fallback.html

  * igt@kms_dsc@dsc-with-output-formats-with-bpc:
    - shard-lnl:          NOTRUN -> [SKIP][73] ([Intel XE#2244])
   [73]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-lnl-6/igt@kms_dsc@dsc-with-output-formats-with-bpc.html

  * igt@kms_fbc_dirty_rect@fbc-dirty-rectangle-out-visible-area:
    - shard-adlp:         NOTRUN -> [SKIP][74] ([Intel XE#4422])
   [74]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-adlp-9/igt@kms_fbc_dirty_rect@fbc-dirty-rectangle-out-visible-area.html
    - shard-bmg:          NOTRUN -> [SKIP][75] ([Intel XE#4422]) +1 other test skip
   [75]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-bmg-1/igt@kms_fbc_dirty_rect@fbc-dirty-rectangle-out-visible-area.html
    - shard-dg2-set2:     NOTRUN -> [SKIP][76] ([Intel XE#4422])
   [76]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-dg2-436/igt@kms_fbc_dirty_rect@fbc-dirty-rectangle-out-visible-area.html
    - shard-lnl:          NOTRUN -> [SKIP][77] ([Intel XE#4422])
   [77]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-lnl-2/igt@kms_fbc_dirty_rect@fbc-dirty-rectangle-out-visible-area.html

  * igt@kms_fbcon_fbt@fbc-suspend:
    - shard-bmg:          NOTRUN -> [SKIP][78] ([Intel XE#4156])
   [78]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-bmg-8/igt@kms_fbcon_fbt@fbc-suspend.html

  * igt@kms_fbcon_fbt@psr-suspend:
    - shard-adlp:         NOTRUN -> [SKIP][79] ([Intel XE#776])
   [79]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-adlp-4/igt@kms_fbcon_fbt@psr-suspend.html
    - shard-dg2-set2:     NOTRUN -> [SKIP][80] ([Intel XE#776])
   [80]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-dg2-464/igt@kms_fbcon_fbt@psr-suspend.html

  * igt@kms_feature_discovery@display-3x:
    - shard-adlp:         NOTRUN -> [SKIP][81] ([Intel XE#703])
   [81]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-adlp-3/igt@kms_feature_discovery@display-3x.html

  * igt@kms_flip@2x-flip-vs-dpms-off-vs-modeset:
    - shard-bmg:          [PASS][82] -> [SKIP][83] ([Intel XE#2316]) +3 other tests skip
   [82]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3244-1eb0e9ebd86a603c0d83e641c5e543606d175bc6/shard-bmg-5/igt@kms_flip@2x-flip-vs-dpms-off-vs-modeset.html
   [83]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-bmg-6/igt@kms_flip@2x-flip-vs-dpms-off-vs-modeset.html

  * igt@kms_flip@2x-flip-vs-dpms-on-nop:
    - shard-adlp:         NOTRUN -> [SKIP][84] ([Intel XE#310]) +8 other tests skip
   [84]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-adlp-1/igt@kms_flip@2x-flip-vs-dpms-on-nop.html

  * igt@kms_flip@2x-flip-vs-dpms-on-nop-interruptible:
    - shard-bmg:          NOTRUN -> [SKIP][85] ([Intel XE#2316]) +1 other test skip
   [85]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-bmg-6/igt@kms_flip@2x-flip-vs-dpms-on-nop-interruptible.html

  * igt@kms_flip@2x-flip-vs-expired-vblank:
    - shard-lnl:          NOTRUN -> [SKIP][86] ([Intel XE#1421]) +5 other tests skip
   [86]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-lnl-8/igt@kms_flip@2x-flip-vs-expired-vblank.html

  * igt@kms_flip@2x-flip-vs-expired-vblank@bd-dp2-hdmi-a3:
    - shard-bmg:          NOTRUN -> [FAIL][87] ([Intel XE#3321]) +2 other tests fail
   [87]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-bmg-3/igt@kms_flip@2x-flip-vs-expired-vblank@bd-dp2-hdmi-a3.html

  * igt@kms_flip@flip-vs-expired-vblank-interruptible@c-dp2:
    - shard-bmg:          [PASS][88] -> [FAIL][89] ([Intel XE#3321]) +1 other test fail
   [88]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3244-1eb0e9ebd86a603c0d83e641c5e543606d175bc6/shard-bmg-1/igt@kms_flip@flip-vs-expired-vblank-interruptible@c-dp2.html
   [89]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-bmg-1/igt@kms_flip@flip-vs-expired-vblank-interruptible@c-dp2.html

  * igt@kms_flip@flip-vs-expired-vblank@b-hdmi-a6:
    - shard-dg2-set2:     [PASS][90] -> [FAIL][91] ([Intel XE#301])
   [90]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3244-1eb0e9ebd86a603c0d83e641c5e543606d175bc6/shard-dg2-435/igt@kms_flip@flip-vs-expired-vblank@b-hdmi-a6.html
   [91]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-dg2-435/igt@kms_flip@flip-vs-expired-vblank@b-hdmi-a6.html

  * igt@kms_flip@flip-vs-suspend-interruptible@a-hdmi-a3:
    - shard-bmg:          [PASS][92] -> [ABORT][93] ([Intel XE#4056])
   [92]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3244-1eb0e9ebd86a603c0d83e641c5e543606d175bc6/shard-bmg-3/igt@kms_flip@flip-vs-suspend-interruptible@a-hdmi-a3.html
   [93]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-bmg-4/igt@kms_flip@flip-vs-suspend-interruptible@a-hdmi-a3.html

  * igt@kms_flip@wf_vblank-ts-check@a-edp1:
    - shard-lnl:          [PASS][94] -> [FAIL][95] ([Intel XE#886]) +2 other tests fail
   [94]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3244-1eb0e9ebd86a603c0d83e641c5e543606d175bc6/shard-lnl-7/igt@kms_flip@wf_vblank-ts-check@a-edp1.html
   [95]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-lnl-4/igt@kms_flip@wf_vblank-ts-check@a-edp1.html

  * igt@kms_flip_scaled_crc@flip-64bpp-xtile-to-16bpp-xtile-downscaling:
    - shard-adlp:         [PASS][96] -> [DMESG-FAIL][97] ([Intel XE#4543] / [Intel XE#4921]) +1 other test dmesg-fail
   [96]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3244-1eb0e9ebd86a603c0d83e641c5e543606d175bc6/shard-adlp-1/igt@kms_flip_scaled_crc@flip-64bpp-xtile-to-16bpp-xtile-downscaling.html
   [97]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-adlp-3/igt@kms_flip_scaled_crc@flip-64bpp-xtile-to-16bpp-xtile-downscaling.html

  * igt@kms_frontbuffer_tracking@drrs-1p-offscren-pri-indfb-draw-blt:
    - shard-bmg:          NOTRUN -> [SKIP][98] ([Intel XE#2311]) +21 other tests skip
   [98]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-bmg-5/igt@kms_frontbuffer_tracking@drrs-1p-offscren-pri-indfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@drrs-1p-primscrn-cur-indfb-draw-blt:
    - shard-adlp:         NOTRUN -> [SKIP][99] ([Intel XE#651]) +31 other tests skip
   [99]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-adlp-8/igt@kms_frontbuffer_tracking@drrs-1p-primscrn-cur-indfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@drrs-1p-primscrn-cur-indfb-draw-render:
    - shard-lnl:          NOTRUN -> [SKIP][100] ([Intel XE#651]) +10 other tests skip
   [100]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-lnl-6/igt@kms_frontbuffer_tracking@drrs-1p-primscrn-cur-indfb-draw-render.html

  * igt@kms_frontbuffer_tracking@drrs-2p-primscrn-spr-indfb-draw-render:
    - shard-bmg:          NOTRUN -> [SKIP][101] ([Intel XE#2312]) +3 other tests skip
   [101]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-bmg-6/igt@kms_frontbuffer_tracking@drrs-2p-primscrn-spr-indfb-draw-render.html

  * igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-indfb-pgflip-blt:
    - shard-adlp:         NOTRUN -> [SKIP][102] ([Intel XE#656]) +60 other tests skip
   [102]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-adlp-2/igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-indfb-pgflip-blt.html

  * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-indfb-pgflip-blt:
    - shard-bmg:          NOTRUN -> [SKIP][103] ([Intel XE#4141]) +8 other tests skip
   [103]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-bmg-1/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-indfb-pgflip-blt.html

  * igt@kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-cur-indfb-draw-render:
    - shard-dg2-set2:     NOTRUN -> [SKIP][104] ([Intel XE#651]) +25 other tests skip
   [104]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-dg2-436/igt@kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-cur-indfb-draw-render.html

  * igt@kms_frontbuffer_tracking@fbcdrrs-tiling-4:
    - shard-adlp:         NOTRUN -> [SKIP][105] ([Intel XE#1151])
   [105]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-adlp-6/igt@kms_frontbuffer_tracking@fbcdrrs-tiling-4.html

  * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-cur-indfb-onoff:
    - shard-adlp:         NOTRUN -> [SKIP][106] ([Intel XE#653]) +14 other tests skip
   [106]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-adlp-6/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-cur-indfb-onoff.html

  * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-blt:
    - shard-dg2-set2:     NOTRUN -> [SKIP][107] ([Intel XE#653]) +17 other tests skip
   [107]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-dg2-435/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@psr-2p-primscrn-indfb-plflip-blt:
    - shard-bmg:          NOTRUN -> [SKIP][108] ([Intel XE#2313]) +17 other tests skip
   [108]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-bmg-7/igt@kms_frontbuffer_tracking@psr-2p-primscrn-indfb-plflip-blt.html

  * igt@kms_frontbuffer_tracking@psr-2p-primscrn-shrfb-plflip-blt:
    - shard-lnl:          NOTRUN -> [SKIP][109] ([Intel XE#656]) +19 other tests skip
   [109]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-lnl-8/igt@kms_frontbuffer_tracking@psr-2p-primscrn-shrfb-plflip-blt.html

  * igt@kms_getfb@getfb-reject-ccs:
    - shard-adlp:         NOTRUN -> [SKIP][110] ([Intel XE#1341])
   [110]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-adlp-3/igt@kms_getfb@getfb-reject-ccs.html

  * igt@kms_hdr@invalid-metadata-sizes:
    - shard-lnl:          NOTRUN -> [SKIP][111] ([Intel XE#1503])
   [111]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-lnl-8/igt@kms_hdr@invalid-metadata-sizes.html

  * igt@kms_joiner@basic-big-joiner:
    - shard-adlp:         NOTRUN -> [SKIP][112] ([Intel XE#346]) +1 other test skip
   [112]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-adlp-8/igt@kms_joiner@basic-big-joiner.html

  * igt@kms_joiner@basic-force-big-joiner:
    - shard-adlp:         NOTRUN -> [SKIP][113] ([Intel XE#3012])
   [113]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-adlp-1/igt@kms_joiner@basic-force-big-joiner.html

  * igt@kms_joiner@invalid-modeset-force-ultra-joiner:
    - shard-adlp:         NOTRUN -> [SKIP][114] ([Intel XE#2925])
   [114]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-adlp-9/igt@kms_joiner@invalid-modeset-force-ultra-joiner.html

  * igt@kms_joiner@invalid-modeset-ultra-joiner:
    - shard-dg2-set2:     NOTRUN -> [SKIP][115] ([Intel XE#2927])
   [115]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-dg2-464/igt@kms_joiner@invalid-modeset-ultra-joiner.html
    - shard-lnl:          NOTRUN -> [SKIP][116] ([Intel XE#2927])
   [116]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-lnl-4/igt@kms_joiner@invalid-modeset-ultra-joiner.html
    - shard-adlp:         NOTRUN -> [SKIP][117] ([Intel XE#2927])
   [117]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-adlp-6/igt@kms_joiner@invalid-modeset-ultra-joiner.html
    - shard-bmg:          NOTRUN -> [SKIP][118] ([Intel XE#2927])
   [118]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-bmg-6/igt@kms_joiner@invalid-modeset-ultra-joiner.html

  * igt@kms_joiner@switch-modeset-ultra-joiner-big-joiner:
    - shard-dg2-set2:     NOTRUN -> [SKIP][119] ([Intel XE#2925])
   [119]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-dg2-464/igt@kms_joiner@switch-modeset-ultra-joiner-big-joiner.html

  * igt@kms_pipe_crc_basic@suspend-read-crc@pipe-c-hdmi-a-6:
    - shard-dg2-set2:     [PASS][120] -> [INCOMPLETE][121] ([Intel XE#5108]) +1 other test incomplete
   [120]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3244-1eb0e9ebd86a603c0d83e641c5e543606d175bc6/shard-dg2-464/igt@kms_pipe_crc_basic@suspend-read-crc@pipe-c-hdmi-a-6.html
   [121]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-dg2-464/igt@kms_pipe_crc_basic@suspend-read-crc@pipe-c-hdmi-a-6.html

  * igt@kms_plane_multiple@2x-tiling-yf:
    - shard-adlp:         NOTRUN -> [SKIP][122] ([Intel XE#4596]) +1 other test skip
   [122]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-adlp-8/igt@kms_plane_multiple@2x-tiling-yf.html

  * igt@kms_plane_multiple@tiling-y:
    - shard-dg2-set2:     NOTRUN -> [SKIP][123] ([Intel XE#5020])
   [123]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-dg2-435/igt@kms_plane_multiple@tiling-y.html

  * igt@kms_plane_multiple@tiling-yf:
    - shard-adlp:         NOTRUN -> [SKIP][124] ([Intel XE#5020])
   [124]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-adlp-2/igt@kms_plane_multiple@tiling-yf.html
    - shard-lnl:          NOTRUN -> [SKIP][125] ([Intel XE#5020])
   [125]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-lnl-4/igt@kms_plane_multiple@tiling-yf.html

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

  * igt@kms_pm_dc@dc5-psr:
    - shard-dg2-set2:     NOTRUN -> [SKIP][127] ([Intel XE#1129])
   [127]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-dg2-464/igt@kms_pm_dc@dc5-psr.html

  * igt@kms_pm_dc@dc6-psr:
    - shard-lnl:          [PASS][128] -> [FAIL][129] ([Intel XE#718])
   [128]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3244-1eb0e9ebd86a603c0d83e641c5e543606d175bc6/shard-lnl-6/igt@kms_pm_dc@dc6-psr.html
   [129]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-lnl-4/igt@kms_pm_dc@dc6-psr.html
    - shard-adlp:         NOTRUN -> [SKIP][130] ([Intel XE#1129])
   [130]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-adlp-6/igt@kms_pm_dc@dc6-psr.html

  * igt@kms_pm_dc@deep-pkgc:
    - shard-adlp:         NOTRUN -> [SKIP][131] ([Intel XE#2007])
   [131]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-adlp-6/igt@kms_pm_dc@deep-pkgc.html
    - shard-bmg:          NOTRUN -> [SKIP][132] ([Intel XE#2505])
   [132]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-bmg-5/igt@kms_pm_dc@deep-pkgc.html
    - shard-dg2-set2:     NOTRUN -> [SKIP][133] ([Intel XE#908])
   [133]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-dg2-436/igt@kms_pm_dc@deep-pkgc.html
    - shard-lnl:          NOTRUN -> [FAIL][134] ([Intel XE#2029])
   [134]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-lnl-1/igt@kms_pm_dc@deep-pkgc.html

  * igt@kms_pm_lpsp@kms-lpsp:
    - shard-bmg:          NOTRUN -> [SKIP][135] ([Intel XE#2499])
   [135]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-bmg-3/igt@kms_pm_lpsp@kms-lpsp.html

  * igt@kms_pm_rpm@modeset-non-lpsp-stress:
    - shard-adlp:         NOTRUN -> [SKIP][136] ([Intel XE#836]) +1 other test skip
   [136]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-adlp-6/igt@kms_pm_rpm@modeset-non-lpsp-stress.html

  * igt@kms_psr2_sf@fbc-psr2-overlay-plane-move-continuous-sf:
    - shard-lnl:          NOTRUN -> [SKIP][137] ([Intel XE#2893] / [Intel XE#4608])
   [137]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-lnl-1/igt@kms_psr2_sf@fbc-psr2-overlay-plane-move-continuous-sf.html

  * igt@kms_psr2_sf@fbc-psr2-overlay-plane-move-continuous-sf@pipe-a-edp-1:
    - shard-lnl:          NOTRUN -> [SKIP][138] ([Intel XE#4608]) +2 other tests skip
   [138]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-lnl-1/igt@kms_psr2_sf@fbc-psr2-overlay-plane-move-continuous-sf@pipe-a-edp-1.html

  * igt@kms_psr2_sf@pr-cursor-plane-move-continuous-exceed-fully-sf:
    - shard-bmg:          NOTRUN -> [SKIP][139] ([Intel XE#1489]) +4 other tests skip
   [139]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-bmg-1/igt@kms_psr2_sf@pr-cursor-plane-move-continuous-exceed-fully-sf.html
    - shard-lnl:          NOTRUN -> [SKIP][140] ([Intel XE#2893]) +2 other tests skip
   [140]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-lnl-2/igt@kms_psr2_sf@pr-cursor-plane-move-continuous-exceed-fully-sf.html

  * igt@kms_psr2_sf@psr2-overlay-plane-move-continuous-sf:
    - shard-adlp:         NOTRUN -> [SKIP][141] ([Intel XE#1489]) +14 other tests skip
   [141]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-adlp-3/igt@kms_psr2_sf@psr2-overlay-plane-move-continuous-sf.html

  * igt@kms_psr2_sf@psr2-primary-plane-update-sf-dmg-area-big-fb:
    - shard-dg2-set2:     NOTRUN -> [SKIP][142] ([Intel XE#1489]) +6 other tests skip
   [142]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-dg2-464/igt@kms_psr2_sf@psr2-primary-plane-update-sf-dmg-area-big-fb.html

  * igt@kms_psr2_su@page_flip-p010:
    - shard-adlp:         NOTRUN -> [SKIP][143] ([Intel XE#1122]) +2 other tests skip
   [143]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-adlp-3/igt@kms_psr2_su@page_flip-p010.html

  * igt@kms_psr2_su@page_flip-xrgb8888:
    - shard-bmg:          NOTRUN -> [SKIP][144] ([Intel XE#2387])
   [144]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-bmg-6/igt@kms_psr2_su@page_flip-xrgb8888.html
    - shard-dg2-set2:     NOTRUN -> [SKIP][145] ([Intel XE#1122])
   [145]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-dg2-435/igt@kms_psr2_su@page_flip-xrgb8888.html
    - shard-lnl:          NOTRUN -> [SKIP][146] ([Intel XE#1128])
   [146]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-lnl-2/igt@kms_psr2_su@page_flip-xrgb8888.html

  * igt@kms_psr@fbc-pr-sprite-plane-move:
    - shard-lnl:          NOTRUN -> [SKIP][147] ([Intel XE#1406]) +3 other tests skip
   [147]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-lnl-1/igt@kms_psr@fbc-pr-sprite-plane-move.html

  * igt@kms_psr@fbc-psr2-sprite-plane-move:
    - shard-dg2-set2:     NOTRUN -> [SKIP][148] ([Intel XE#2850] / [Intel XE#929]) +14 other tests skip
   [148]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-dg2-433/igt@kms_psr@fbc-psr2-sprite-plane-move.html

  * igt@kms_psr@psr-basic:
    - shard-adlp:         NOTRUN -> [SKIP][149] ([Intel XE#2850] / [Intel XE#929]) +27 other tests skip
   [149]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-adlp-4/igt@kms_psr@psr-basic.html

  * igt@kms_psr@psr-primary-page-flip:
    - shard-bmg:          NOTRUN -> [SKIP][150] ([Intel XE#2234] / [Intel XE#2850]) +11 other tests skip
   [150]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-bmg-2/igt@kms_psr@psr-primary-page-flip.html

  * igt@kms_psr@psr2-primary-render:
    - shard-bmg:          NOTRUN -> [SKIP][151] ([Intel XE#2234])
   [151]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-bmg-6/igt@kms_psr@psr2-primary-render.html

  * igt@kms_psr_stress_test@flip-primary-invalidate-overlay:
    - shard-adlp:         NOTRUN -> [SKIP][152] ([Intel XE#2939])
   [152]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-adlp-4/igt@kms_psr_stress_test@flip-primary-invalidate-overlay.html

  * igt@kms_rotation_crc@bad-tiling:
    - shard-dg2-set2:     NOTRUN -> [SKIP][153] ([Intel XE#3414])
   [153]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-dg2-436/igt@kms_rotation_crc@bad-tiling.html
    - shard-lnl:          NOTRUN -> [SKIP][154] ([Intel XE#3414] / [Intel XE#3904])
   [154]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-lnl-4/igt@kms_rotation_crc@bad-tiling.html
    - shard-bmg:          NOTRUN -> [SKIP][155] ([Intel XE#3414] / [Intel XE#3904])
   [155]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-bmg-1/igt@kms_rotation_crc@bad-tiling.html

  * igt@kms_rotation_crc@multiplane-rotation:
    - shard-adlp:         NOTRUN -> [FAIL][156] ([Intel XE#1874]) +2 other tests fail
   [156]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-adlp-6/igt@kms_rotation_crc@multiplane-rotation.html

  * igt@kms_rotation_crc@primary-x-tiled-reflect-x-180:
    - shard-lnl:          NOTRUN -> [FAIL][157] ([Intel XE#4689])
   [157]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-lnl-7/igt@kms_rotation_crc@primary-x-tiled-reflect-x-180.html

  * igt@kms_rotation_crc@primary-yf-tiled-reflect-x-180:
    - shard-dg2-set2:     NOTRUN -> [SKIP][158] ([Intel XE#1127])
   [158]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-dg2-464/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-180.html

  * igt@kms_rotation_crc@primary-yf-tiled-reflect-x-270:
    - shard-adlp:         NOTRUN -> [SKIP][159] ([Intel XE#3414]) +2 other tests skip
   [159]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-adlp-9/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-270.html

  * igt@kms_sequence@queue-idle@pipe-a-hdmi-a-1:
    - shard-adlp:         [PASS][160] -> [DMESG-WARN][161] ([Intel XE#2953] / [Intel XE#4173]) +3 other tests dmesg-warn
   [160]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3244-1eb0e9ebd86a603c0d83e641c5e543606d175bc6/shard-adlp-8/igt@kms_sequence@queue-idle@pipe-a-hdmi-a-1.html
   [161]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-adlp-8/igt@kms_sequence@queue-idle@pipe-a-hdmi-a-1.html

  * igt@kms_setmode@basic@pipe-a-hdmi-a-6:
    - shard-dg2-set2:     NOTRUN -> [FAIL][162] ([Intel XE#2883]) +4 other tests fail
   [162]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-dg2-436/igt@kms_setmode@basic@pipe-a-hdmi-a-6.html

  * igt@kms_tiled_display@basic-test-pattern-with-chamelium:
    - shard-adlp:         NOTRUN -> [SKIP][163] ([Intel XE#362])
   [163]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-adlp-2/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html

  * igt@kms_vrr@cmrr@pipe-a-edp-1:
    - shard-lnl:          [PASS][164] -> [FAIL][165] ([Intel XE#4459]) +1 other test fail
   [164]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3244-1eb0e9ebd86a603c0d83e641c5e543606d175bc6/shard-lnl-1/igt@kms_vrr@cmrr@pipe-a-edp-1.html
   [165]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-lnl-7/igt@kms_vrr@cmrr@pipe-a-edp-1.html

  * igt@kms_vrr@flip-suspend:
    - shard-adlp:         NOTRUN -> [SKIP][166] ([Intel XE#455]) +26 other tests skip
   [166]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-adlp-1/igt@kms_vrr@flip-suspend.html

  * igt@kms_vrr@flipline:
    - shard-dg2-set2:     NOTRUN -> [SKIP][167] ([Intel XE#455]) +11 other tests skip
   [167]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-dg2-436/igt@kms_vrr@flipline.html

  * igt@xe_ccs@large-ctrl-surf-copy:
    - shard-adlp:         NOTRUN -> [SKIP][168] ([Intel XE#3576])
   [168]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-adlp-9/igt@xe_ccs@large-ctrl-surf-copy.html

  * igt@xe_compute_preempt@compute-preempt-many:
    - shard-dg2-set2:     NOTRUN -> [SKIP][169] ([Intel XE#1280] / [Intel XE#455]) +3 other tests skip
   [169]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-dg2-433/igt@xe_compute_preempt@compute-preempt-many.html

  * igt@xe_copy_basic@mem-set-linear-0x3fff:
    - shard-adlp:         NOTRUN -> [SKIP][170] ([Intel XE#1126])
   [170]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-adlp-3/igt@xe_copy_basic@mem-set-linear-0x3fff.html

  * igt@xe_eu_stall@non-blocking-read:
    - shard-adlp:         NOTRUN -> [SKIP][171] ([Intel XE#4497])
   [171]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-adlp-1/igt@xe_eu_stall@non-blocking-read.html

  * igt@xe_eudebug@basic-read-event:
    - shard-adlp:         NOTRUN -> [SKIP][172] ([Intel XE#4837]) +21 other tests skip
   [172]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-adlp-3/igt@xe_eudebug@basic-read-event.html

  * igt@xe_eudebug_online@interrupt-all-set-breakpoint:
    - shard-dg2-set2:     NOTRUN -> [SKIP][173] ([Intel XE#4837]) +12 other tests skip
   [173]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-dg2-435/igt@xe_eudebug_online@interrupt-all-set-breakpoint.html

  * igt@xe_eudebug_online@interrupt-other-debuggable:
    - shard-lnl:          NOTRUN -> [SKIP][174] ([Intel XE#4837]) +5 other tests skip
   [174]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-lnl-4/igt@xe_eudebug_online@interrupt-other-debuggable.html

  * igt@xe_eudebug_online@stopped-thread:
    - shard-bmg:          NOTRUN -> [SKIP][175] ([Intel XE#4837]) +7 other tests skip
   [175]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-bmg-8/igt@xe_eudebug_online@stopped-thread.html

  * igt@xe_evict@evict-large-external-cm:
    - shard-lnl:          NOTRUN -> [SKIP][176] ([Intel XE#688]) +2 other tests skip
   [176]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-lnl-3/igt@xe_evict@evict-large-external-cm.html

  * igt@xe_evict@evict-small-external-cm:
    - shard-adlp:         NOTRUN -> [SKIP][177] ([Intel XE#261] / [Intel XE#688]) +5 other tests skip
   [177]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-adlp-1/igt@xe_evict@evict-small-external-cm.html

  * igt@xe_evict_ccs@evict-overcommit-simple:
    - shard-adlp:         NOTRUN -> [SKIP][178] ([Intel XE#688]) +1 other test skip
   [178]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-adlp-8/igt@xe_evict_ccs@evict-overcommit-simple.html

  * igt@xe_exec_basic@multigpu-many-execqueues-many-vm-basic-defer-bind:
    - shard-lnl:          NOTRUN -> [SKIP][179] ([Intel XE#1392]) +2 other tests skip
   [179]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-lnl-8/igt@xe_exec_basic@multigpu-many-execqueues-many-vm-basic-defer-bind.html

  * igt@xe_exec_basic@multigpu-many-execqueues-many-vm-bindexecqueue-userptr-invalidate-race:
    - shard-adlp:         NOTRUN -> [SKIP][180] ([Intel XE#1392]) +9 other tests skip
   [180]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-adlp-1/igt@xe_exec_basic@multigpu-many-execqueues-many-vm-bindexecqueue-userptr-invalidate-race.html

  * igt@xe_exec_basic@multigpu-no-exec-basic:
    - shard-bmg:          NOTRUN -> [SKIP][181] ([Intel XE#2322]) +5 other tests skip
   [181]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-bmg-3/igt@xe_exec_basic@multigpu-no-exec-basic.html

  * igt@xe_exec_fault_mode@invalid-va-scratch-nopagefault:
    - shard-adlp:         NOTRUN -> [SKIP][182] ([Intel XE#288]) +42 other tests skip
   [182]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-adlp-4/igt@xe_exec_fault_mode@invalid-va-scratch-nopagefault.html

  * igt@xe_exec_fault_mode@twice-userptr-prefetch:
    - shard-dg2-set2:     NOTRUN -> [SKIP][183] ([Intel XE#288]) +21 other tests skip
   [183]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-dg2-435/igt@xe_exec_fault_mode@twice-userptr-prefetch.html

  * igt@xe_exec_mix_modes@exec-simple-batch-store-lr:
    - shard-dg2-set2:     NOTRUN -> [SKIP][184] ([Intel XE#2360])
   [184]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-dg2-433/igt@xe_exec_mix_modes@exec-simple-batch-store-lr.html
    - shard-adlp:         NOTRUN -> [SKIP][185] ([Intel XE#2360])
   [185]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-adlp-3/igt@xe_exec_mix_modes@exec-simple-batch-store-lr.html

  * igt@xe_exec_system_allocator@many-execqueues-mmap-huge-nomemset:
    - shard-bmg:          NOTRUN -> [SKIP][186] ([Intel XE#4943]) +11 other tests skip
   [186]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-bmg-8/igt@xe_exec_system_allocator@many-execqueues-mmap-huge-nomemset.html

  * igt@xe_exec_system_allocator@many-large-execqueues-malloc-mlock:
    - shard-adlp:         NOTRUN -> [SKIP][187] ([Intel XE#4915]) +422 other tests skip
   [187]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-adlp-9/igt@xe_exec_system_allocator@many-large-execqueues-malloc-mlock.html

  * igt@xe_exec_system_allocator@many-stride-mmap-huge-nomemset:
    - shard-lnl:          NOTRUN -> [SKIP][188] ([Intel XE#4943]) +11 other tests skip
   [188]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-lnl-4/igt@xe_exec_system_allocator@many-stride-mmap-huge-nomemset.html

  * igt@xe_exec_system_allocator@threads-shared-vm-many-stride-new-race-nomemset:
    - shard-dg2-set2:     NOTRUN -> [SKIP][189] ([Intel XE#4915]) +213 other tests skip
   [189]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-dg2-435/igt@xe_exec_system_allocator@threads-shared-vm-many-stride-new-race-nomemset.html

  * igt@xe_fault_injection@probe-fail-guc-xe_guc_mmio_send_recv:
    - shard-dg2-set2:     NOTRUN -> [INCOMPLETE][190] ([Intel XE#4911])
   [190]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-dg2-436/igt@xe_fault_injection@probe-fail-guc-xe_guc_mmio_send_recv.html

  * igt@xe_live_ktest@xe_migrate@xe_validate_ccs_kunit:
    - shard-adlp:         NOTRUN -> [SKIP][191] ([Intel XE#2229])
   [191]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-adlp-9/igt@xe_live_ktest@xe_migrate@xe_validate_ccs_kunit.html

  * igt@xe_oa@mmio-triggered-reports:
    - shard-adlp:         NOTRUN -> [SKIP][192] ([Intel XE#2541] / [Intel XE#3573]) +9 other tests skip
   [192]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-adlp-6/igt@xe_oa@mmio-triggered-reports.html

  * igt@xe_oa@non-privileged-map-oa-buffer:
    - shard-dg2-set2:     NOTRUN -> [SKIP][193] ([Intel XE#2541] / [Intel XE#3573]) +2 other tests skip
   [193]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-dg2-436/igt@xe_oa@non-privileged-map-oa-buffer.html

  * igt@xe_oa@syncs-syncobj-cfg:
    - shard-adlp:         NOTRUN -> [SKIP][194] ([Intel XE#2541] / [Intel XE#3573] / [Intel XE#4501]) +3 other tests skip
   [194]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-adlp-2/igt@xe_oa@syncs-syncobj-cfg.html

  * igt@xe_oa@syncs-ufence-wait-cfg:
    - shard-dg2-set2:     NOTRUN -> [SKIP][195] ([Intel XE#2541] / [Intel XE#3573] / [Intel XE#4501]) +3 other tests skip
   [195]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-dg2-464/igt@xe_oa@syncs-ufence-wait-cfg.html

  * igt@xe_pat@display-vs-wb-transient:
    - shard-adlp:         NOTRUN -> [SKIP][196] ([Intel XE#1337])
   [196]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-adlp-6/igt@xe_pat@display-vs-wb-transient.html

  * igt@xe_pat@pat-index-xelpg:
    - shard-adlp:         NOTRUN -> [SKIP][197] ([Intel XE#979])
   [197]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-adlp-8/igt@xe_pat@pat-index-xelpg.html

  * igt@xe_pm@d3cold-mmap-vram:
    - shard-dg2-set2:     NOTRUN -> [SKIP][198] ([Intel XE#2284] / [Intel XE#366]) +1 other test skip
   [198]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-dg2-435/igt@xe_pm@d3cold-mmap-vram.html

  * igt@xe_pm@d3cold-multiple-execs:
    - shard-adlp:         NOTRUN -> [SKIP][199] ([Intel XE#2284] / [Intel XE#366])
   [199]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-adlp-1/igt@xe_pm@d3cold-multiple-execs.html
    - shard-lnl:          NOTRUN -> [SKIP][200] ([Intel XE#2284] / [Intel XE#366])
   [200]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-lnl-1/igt@xe_pm@d3cold-multiple-execs.html

  * igt@xe_pm@s2idle-d3cold-basic-exec:
    - shard-bmg:          NOTRUN -> [SKIP][201] ([Intel XE#2284]) +1 other test skip
   [201]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-bmg-2/igt@xe_pm@s2idle-d3cold-basic-exec.html

  * igt@xe_pmu@fn-engine-activity-sched-if-idle:
    - shard-lnl:          NOTRUN -> [SKIP][202] ([Intel XE#4650])
   [202]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-lnl-3/igt@xe_pmu@fn-engine-activity-sched-if-idle.html
    - shard-bmg:          NOTRUN -> [SKIP][203] ([Intel XE#4650])
   [203]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-bmg-3/igt@xe_pmu@fn-engine-activity-sched-if-idle.html
    - shard-dg2-set2:     NOTRUN -> [SKIP][204] ([Intel XE#4650])
   [204]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-dg2-433/igt@xe_pmu@fn-engine-activity-sched-if-idle.html

  * igt@xe_pmu@gt-frequency:
    - shard-dg2-set2:     [PASS][205] -> [FAIL][206] ([Intel XE#5166]) +1 other test fail
   [205]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3244-1eb0e9ebd86a603c0d83e641c5e543606d175bc6/shard-dg2-433/igt@xe_pmu@gt-frequency.html
   [206]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-dg2-435/igt@xe_pmu@gt-frequency.html

  * igt@xe_prime_self_import@basic-with_one_bo:
    - shard-dg2-set2:     NOTRUN -> [ABORT][207] ([Intel XE#5247])
   [207]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-dg2-436/igt@xe_prime_self_import@basic-with_one_bo.html

  * igt@xe_pxp@pxp-termination-key-update-post-suspend:
    - shard-bmg:          NOTRUN -> [SKIP][208] ([Intel XE#4733]) +1 other test skip
   [208]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-bmg-7/igt@xe_pxp@pxp-termination-key-update-post-suspend.html
    - shard-dg2-set2:     NOTRUN -> [SKIP][209] ([Intel XE#4733])
   [209]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-dg2-435/igt@xe_pxp@pxp-termination-key-update-post-suspend.html

  * igt@xe_pxp@pxp-termination-key-update-post-termination-irq:
    - shard-adlp:         NOTRUN -> [SKIP][210] ([Intel XE#4733]) +2 other tests skip
   [210]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-adlp-2/igt@xe_pxp@pxp-termination-key-update-post-termination-irq.html

  * igt@xe_query@multigpu-query-engines:
    - shard-dg2-set2:     NOTRUN -> [SKIP][211] ([Intel XE#944]) +1 other test skip
   [211]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-dg2-435/igt@xe_query@multigpu-query-engines.html

  * igt@xe_query@multigpu-query-invalid-uc-fw-version-mbz:
    - shard-lnl:          NOTRUN -> [SKIP][212] ([Intel XE#944])
   [212]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-lnl-2/igt@xe_query@multigpu-query-invalid-uc-fw-version-mbz.html

  * igt@xe_query@multigpu-query-mem-usage:
    - shard-bmg:          NOTRUN -> [SKIP][213] ([Intel XE#944]) +1 other test skip
   [213]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-bmg-7/igt@xe_query@multigpu-query-mem-usage.html

  * igt@xe_query@multigpu-query-pxp-status:
    - shard-adlp:         NOTRUN -> [SKIP][214] ([Intel XE#944]) +6 other tests skip
   [214]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-adlp-4/igt@xe_query@multigpu-query-pxp-status.html

  * igt@xe_render_copy@render-stress-0-copies:
    - shard-adlp:         NOTRUN -> [SKIP][215] ([Intel XE#4814])
   [215]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-adlp-9/igt@xe_render_copy@render-stress-0-copies.html
    - shard-dg2-set2:     NOTRUN -> [SKIP][216] ([Intel XE#4814])
   [216]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-dg2-436/igt@xe_render_copy@render-stress-0-copies.html

  * igt@xe_spin_batch@spin-mem-copy:
    - shard-adlp:         NOTRUN -> [SKIP][217] ([Intel XE#4821])
   [217]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-adlp-6/igt@xe_spin_batch@spin-mem-copy.html

  * igt@xe_sriov_auto_provisioning@selfconfig-basic:
    - shard-dg2-set2:     NOTRUN -> [SKIP][218] ([Intel XE#4130])
   [218]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-dg2-435/igt@xe_sriov_auto_provisioning@selfconfig-basic.html

  * igt@xe_sriov_scheduling@equal-throughput:
    - shard-adlp:         NOTRUN -> [ABORT][219] ([Intel XE#5214]) +9 other tests abort
   [219]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-adlp-6/igt@xe_sriov_scheduling@equal-throughput.html
    - shard-dg2-set2:     NOTRUN -> [SKIP][220] ([Intel XE#4351])
   [220]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-dg2-436/igt@xe_sriov_scheduling@equal-throughput.html

  
#### Possible fixes ####

  * igt@kms_async_flips@async-flip-suspend-resume:
    - shard-adlp:         [DMESG-WARN][221] ([Intel XE#4543]) -> [PASS][222] +2 other tests pass
   [221]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3244-1eb0e9ebd86a603c0d83e641c5e543606d175bc6/shard-adlp-9/igt@kms_async_flips@async-flip-suspend-resume.html
   [222]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-adlp-1/igt@kms_async_flips@async-flip-suspend-resume.html

  * igt@kms_big_fb@x-tiled-8bpp-rotate-0:
    - shard-adlp:         [DMESG-FAIL][223] ([Intel XE#4543]) -> [PASS][224] +5 other tests pass
   [223]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3244-1eb0e9ebd86a603c0d83e641c5e543606d175bc6/shard-adlp-9/igt@kms_big_fb@x-tiled-8bpp-rotate-0.html
   [224]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-adlp-1/igt@kms_big_fb@x-tiled-8bpp-rotate-0.html

  * igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs-cc@pipe-a-dp-4:
    - shard-dg2-set2:     [INCOMPLETE][225] ([Intel XE#1727] / [Intel XE#3113] / [Intel XE#4212] / [Intel XE#4522]) -> [PASS][226]
   [225]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3244-1eb0e9ebd86a603c0d83e641c5e543606d175bc6/shard-dg2-433/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs-cc@pipe-a-dp-4.html
   [226]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-dg2-464/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs-cc@pipe-a-dp-4.html

  * igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs@pipe-a-hdmi-a-6:
    - shard-dg2-set2:     [INCOMPLETE][227] ([Intel XE#1727] / [Intel XE#2705] / [Intel XE#3113] / [Intel XE#4212] / [Intel XE#4345] / [Intel XE#4522]) -> [PASS][228]
   [227]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3244-1eb0e9ebd86a603c0d83e641c5e543606d175bc6/shard-dg2-463/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs@pipe-a-hdmi-a-6.html
   [228]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-dg2-464/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs@pipe-a-hdmi-a-6.html

  * igt@kms_cursor_legacy@cursorb-vs-flipa-atomic-transitions-varying-size:
    - shard-bmg:          [SKIP][229] ([Intel XE#2291]) -> [PASS][230] +1 other test pass
   [229]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3244-1eb0e9ebd86a603c0d83e641c5e543606d175bc6/shard-bmg-6/igt@kms_cursor_legacy@cursorb-vs-flipa-atomic-transitions-varying-size.html
   [230]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-bmg-3/igt@kms_cursor_legacy@cursorb-vs-flipa-atomic-transitions-varying-size.html

  * igt@kms_flip@flip-vs-expired-vblank-interruptible@d-dp4:
    - shard-dg2-set2:     [FAIL][231] ([Intel XE#301]) -> [PASS][232] +7 other tests pass
   [231]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3244-1eb0e9ebd86a603c0d83e641c5e543606d175bc6/shard-dg2-436/igt@kms_flip@flip-vs-expired-vblank-interruptible@d-dp4.html
   [232]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-dg2-436/igt@kms_flip@flip-vs-expired-vblank-interruptible@d-dp4.html

  * igt@kms_flip@flip-vs-expired-vblank@c-dp4:
    - shard-dg2-set2:     [FAIL][233] ([Intel XE#301] / [Intel XE#3321]) -> [PASS][234] +1 other test pass
   [233]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3244-1eb0e9ebd86a603c0d83e641c5e543606d175bc6/shard-dg2-435/igt@kms_flip@flip-vs-expired-vblank@c-dp4.html
   [234]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-dg2-435/igt@kms_flip@flip-vs-expired-vblank@c-dp4.html

  * igt@kms_flip@flip-vs-suspend-interruptible:
    - shard-adlp:         [DMESG-WARN][235] ([Intel XE#2953] / [Intel XE#4173]) -> [PASS][236] +1 other test pass
   [235]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3244-1eb0e9ebd86a603c0d83e641c5e543606d175bc6/shard-adlp-9/igt@kms_flip@flip-vs-suspend-interruptible.html
   [236]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-adlp-9/igt@kms_flip@flip-vs-suspend-interruptible.html

  * igt@kms_flip@plain-flip-fb-recreate-interruptible@a-edp1:
    - shard-lnl:          [FAIL][237] ([Intel XE#886]) -> [PASS][238] +4 other tests pass
   [237]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3244-1eb0e9ebd86a603c0d83e641c5e543606d175bc6/shard-lnl-2/igt@kms_flip@plain-flip-fb-recreate-interruptible@a-edp1.html
   [238]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-lnl-1/igt@kms_flip@plain-flip-fb-recreate-interruptible@a-edp1.html

  * igt@kms_flip@plain-flip-fb-recreate-interruptible@c-dp2:
    - shard-bmg:          [FAIL][239] ([Intel XE#2882]) -> [PASS][240] +3 other tests pass
   [239]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3244-1eb0e9ebd86a603c0d83e641c5e543606d175bc6/shard-bmg-5/igt@kms_flip@plain-flip-fb-recreate-interruptible@c-dp2.html
   [240]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-bmg-4/igt@kms_flip@plain-flip-fb-recreate-interruptible@c-dp2.html

  * igt@kms_flip@wf_vblank-ts-check-interruptible@a-hdmi-a1:
    - shard-adlp:         [FAIL][241] ([Intel XE#2882]) -> [PASS][242] +1 other test pass
   [241]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3244-1eb0e9ebd86a603c0d83e641c5e543606d175bc6/shard-adlp-8/igt@kms_flip@wf_vblank-ts-check-interruptible@a-hdmi-a1.html
   [242]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-adlp-1/igt@kms_flip@wf_vblank-ts-check-interruptible@a-hdmi-a1.html

  * igt@kms_flip_scaled_crc@flip-64bpp-xtile-to-32bpp-xtile-downscaling@pipe-a-valid-mode:
    - shard-adlp:         [DMESG-FAIL][243] ([Intel XE#4543] / [Intel XE#4921]) -> [PASS][244] +1 other test pass
   [243]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3244-1eb0e9ebd86a603c0d83e641c5e543606d175bc6/shard-adlp-3/igt@kms_flip_scaled_crc@flip-64bpp-xtile-to-32bpp-xtile-downscaling@pipe-a-valid-mode.html
   [244]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-adlp-2/igt@kms_flip_scaled_crc@flip-64bpp-xtile-to-32bpp-xtile-downscaling@pipe-a-valid-mode.html

  * igt@kms_plane_cursor@viewport:
    - shard-dg2-set2:     [FAIL][245] ([Intel XE#616]) -> [PASS][246] +1 other test pass
   [245]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3244-1eb0e9ebd86a603c0d83e641c5e543606d175bc6/shard-dg2-436/igt@kms_plane_cursor@viewport.html
   [246]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-dg2-436/igt@kms_plane_cursor@viewport.html

  * igt@kms_plane_scaling@2x-scaler-multi-pipe:
    - shard-bmg:          [SKIP][247] ([Intel XE#2571]) -> [PASS][248]
   [247]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3244-1eb0e9ebd86a603c0d83e641c5e543606d175bc6/shard-bmg-6/igt@kms_plane_scaling@2x-scaler-multi-pipe.html
   [248]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-bmg-2/igt@kms_plane_scaling@2x-scaler-multi-pipe.html

  * igt@kms_pm_dc@dc5-psr:
    - shard-lnl:          [FAIL][249] ([Intel XE#718]) -> [PASS][250]
   [249]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3244-1eb0e9ebd86a603c0d83e641c5e543606d175bc6/shard-lnl-6/igt@kms_pm_dc@dc5-psr.html
   [250]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-lnl-7/igt@kms_pm_dc@dc5-psr.html

  * igt@kms_pm_rpm@basic-pci-d3-state:
    - shard-dg2-set2:     [FAIL][251] ([Intel XE#4741]) -> [PASS][252]
   [251]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3244-1eb0e9ebd86a603c0d83e641c5e543606d175bc6/shard-dg2-433/igt@kms_pm_rpm@basic-pci-d3-state.html
   [252]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-dg2-435/igt@kms_pm_rpm@basic-pci-d3-state.html

  * igt@kms_psr_stress_test@invalidate-primary-flip-overlay:
    - shard-lnl:          [SKIP][253] ([Intel XE#4692]) -> [PASS][254]
   [253]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3244-1eb0e9ebd86a603c0d83e641c5e543606d175bc6/shard-lnl-6/igt@kms_psr_stress_test@invalidate-primary-flip-overlay.html
   [254]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-lnl-8/igt@kms_psr_stress_test@invalidate-primary-flip-overlay.html

  * igt@kms_setmode@clone-exclusive-crtc:
    - shard-bmg:          [SKIP][255] ([Intel XE#1435]) -> [PASS][256] +2 other tests pass
   [255]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3244-1eb0e9ebd86a603c0d83e641c5e543606d175bc6/shard-bmg-6/igt@kms_setmode@clone-exclusive-crtc.html
   [256]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-bmg-4/igt@kms_setmode@clone-exclusive-crtc.html

  * igt@xe_exec_reset@parallel-gt-reset:
    - shard-bmg:          [DMESG-WARN][257] ([Intel XE#3876]) -> [PASS][258]
   [257]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3244-1eb0e9ebd86a603c0d83e641c5e543606d175bc6/shard-bmg-5/igt@xe_exec_reset@parallel-gt-reset.html
   [258]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-bmg-6/igt@xe_exec_reset@parallel-gt-reset.html

  * igt@xe_exec_system_allocator@threads-shared-vm-many-large-execqueues-new-bo-map-nomemset:
    - shard-lnl:          [FAIL][259] ([Intel XE#5018]) -> [PASS][260]
   [259]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3244-1eb0e9ebd86a603c0d83e641c5e543606d175bc6/shard-lnl-1/igt@xe_exec_system_allocator@threads-shared-vm-many-large-execqueues-new-bo-map-nomemset.html
   [260]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-lnl-4/igt@xe_exec_system_allocator@threads-shared-vm-many-large-execqueues-new-bo-map-nomemset.html

  
#### Warnings ####

  * igt@kms_ccs@random-ccs-data-4-tiled-dg2-mc-ccs:
    - shard-dg2-set2:     [INCOMPLETE][261] ([Intel XE#1727] / [Intel XE#3113] / [Intel XE#3124] / [Intel XE#4345]) -> [INCOMPLETE][262] ([Intel XE#1727] / [Intel XE#2705] / [Intel XE#3113] / [Intel XE#4212] / [Intel XE#4345] / [Intel XE#4522])
   [261]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3244-1eb0e9ebd86a603c0d83e641c5e543606d175bc6/shard-dg2-463/igt@kms_ccs@random-ccs-data-4-tiled-dg2-mc-ccs.html
   [262]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-dg2-433/igt@kms_ccs@random-ccs-data-4-tiled-dg2-mc-ccs.html

  * igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs:
    - shard-dg2-set2:     [INCOMPLETE][263] ([Intel XE#1727] / [Intel XE#2705] / [Intel XE#3113] / [Intel XE#4212] / [Intel XE#4345] / [Intel XE#4522]) -> [INCOMPLETE][264] ([Intel XE#1727] / [Intel XE#2705] / [Intel XE#3113] / [Intel XE#4212] / [Intel XE#4522])
   [263]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3244-1eb0e9ebd86a603c0d83e641c5e543606d175bc6/shard-dg2-463/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs.html
   [264]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-dg2-464/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs.html

  * igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs-cc:
    - shard-dg2-set2:     [INCOMPLETE][265] ([Intel XE#1727] / [Intel XE#2705] / [Intel XE#3113] / [Intel XE#4212] / [Intel XE#4522]) -> [INCOMPLETE][266] ([Intel XE#2705] / [Intel XE#4212])
   [265]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3244-1eb0e9ebd86a603c0d83e641c5e543606d175bc6/shard-dg2-433/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs-cc.html
   [266]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-dg2-464/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs-cc.html

  * igt@kms_flip@flip-vs-suspend-interruptible:
    - shard-bmg:          [INCOMPLETE][267] ([Intel XE#2049] / [Intel XE#2597]) -> [ABORT][268] ([Intel XE#4056])
   [267]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3244-1eb0e9ebd86a603c0d83e641c5e543606d175bc6/shard-bmg-3/igt@kms_flip@flip-vs-suspend-interruptible.html
   [268]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-bmg-4/igt@kms_flip@flip-vs-suspend-interruptible.html

  * igt@kms_frontbuffer_tracking@drrs-2p-primscrn-pri-indfb-draw-blt:
    - shard-bmg:          [SKIP][269] ([Intel XE#2312]) -> [SKIP][270] ([Intel XE#2311]) +3 other tests skip
   [269]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3244-1eb0e9ebd86a603c0d83e641c5e543606d175bc6/shard-bmg-6/igt@kms_frontbuffer_tracking@drrs-2p-primscrn-pri-indfb-draw-blt.html
   [270]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-bmg-7/igt@kms_frontbuffer_tracking@drrs-2p-primscrn-pri-indfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-pri-indfb-draw-mmap-wc:
    - shard-bmg:          [SKIP][271] ([Intel XE#2311]) -> [SKIP][272] ([Intel XE#2312]) +11 other tests skip
   [271]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3244-1eb0e9ebd86a603c0d83e641c5e543606d175bc6/shard-bmg-4/igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-pri-indfb-draw-mmap-wc.html
   [272]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-bmg-6/igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-pri-indfb-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-shrfb-pgflip-blt:
    - shard-bmg:          [SKIP][273] ([Intel XE#4141]) -> [SKIP][274] ([Intel XE#2312]) +6 other tests skip
   [273]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3244-1eb0e9ebd86a603c0d83e641c5e543606d175bc6/shard-bmg-5/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-shrfb-pgflip-blt.html
   [274]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-bmg-6/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-shrfb-pgflip-blt.html

  * igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-onoff:
    - shard-bmg:          [SKIP][275] ([Intel XE#2312]) -> [SKIP][276] ([Intel XE#4141]) +3 other tests skip
   [275]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3244-1eb0e9ebd86a603c0d83e641c5e543606d175bc6/shard-bmg-6/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-onoff.html
   [276]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-bmg-4/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-onoff.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-shrfb-draw-blt:
    - shard-bmg:          [SKIP][277] ([Intel XE#2312]) -> [SKIP][278] ([Intel XE#2313]) +4 other tests skip
   [277]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3244-1eb0e9ebd86a603c0d83e641c5e543606d175bc6/shard-bmg-6/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-shrfb-draw-blt.html
   [278]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-bmg-3/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-shrfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@psr-2p-primscrn-indfb-msflip-blt:
    - shard-bmg:          [SKIP][279] ([Intel XE#2313]) -> [SKIP][280] ([Intel XE#2312]) +8 other tests skip
   [279]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3244-1eb0e9ebd86a603c0d83e641c5e543606d175bc6/shard-bmg-2/igt@kms_frontbuffer_tracking@psr-2p-primscrn-indfb-msflip-blt.html
   [280]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-bmg-6/igt@kms_frontbuffer_tracking@psr-2p-primscrn-indfb-msflip-blt.html

  * igt@kms_plane_multiple@2x-tiling-yf:
    - shard-bmg:          [SKIP][281] ([Intel XE#5021]) -> [SKIP][282] ([Intel XE#4596])
   [281]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3244-1eb0e9ebd86a603c0d83e641c5e543606d175bc6/shard-bmg-5/igt@kms_plane_multiple@2x-tiling-yf.html
   [282]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-bmg-6/igt@kms_plane_multiple@2x-tiling-yf.html

  * igt@kms_pm_dc@dc9-dpms:
    - shard-adlp:         [FAIL][283] ([Intel XE#3325]) -> [SKIP][284] ([Intel XE#734])
   [283]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3244-1eb0e9ebd86a603c0d83e641c5e543606d175bc6/shard-adlp-8/igt@kms_pm_dc@dc9-dpms.html
   [284]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-adlp-2/igt@kms_pm_dc@dc9-dpms.html

  * igt@kms_psr2_sf@fbc-psr2-overlay-primary-update-sf-dmg-area:
    - shard-lnl:          [SKIP][285] ([Intel XE#2893] / [Intel XE#4608]) -> [SKIP][286] ([Intel XE#1489])
   [285]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3244-1eb0e9ebd86a603c0d83e641c5e543606d175bc6/shard-lnl-3/igt@kms_psr2_sf@fbc-psr2-overlay-primary-update-sf-dmg-area.html
   [286]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-lnl-8/igt@kms_psr2_sf@fbc-psr2-overlay-primary-update-sf-dmg-area.html

  * igt@xe_exec_system_allocator@threads-shared-vm-many-large-new-bo-map-nomemset:
    - shard-lnl:          [FAIL][287] ([Intel XE#5018]) -> [FAIL][288] ([Intel XE#4937] / [Intel XE#5018])
   [287]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3244-1eb0e9ebd86a603c0d83e641c5e543606d175bc6/shard-lnl-2/igt@xe_exec_system_allocator@threads-shared-vm-many-large-new-bo-map-nomemset.html
   [288]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-lnl-3/igt@xe_exec_system_allocator@threads-shared-vm-many-large-new-bo-map-nomemset.html

  * igt@xe_pmu@engine-activity-all-load-idle:
    - shard-adlp:         [DMESG-WARN][289] ([Intel XE#5214]) -> [ABORT][290] ([Intel XE#5214])
   [289]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3244-1eb0e9ebd86a603c0d83e641c5e543606d175bc6/shard-adlp-4/igt@xe_pmu@engine-activity-all-load-idle.html
   [290]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-adlp-9/igt@xe_pmu@engine-activity-all-load-idle.html

  * igt@xe_pmu@engine-activity-idle:
    - shard-adlp:         [ABORT][291] ([Intel XE#5214]) -> [DMESG-WARN][292] ([Intel XE#5214]) +1 other test dmesg-warn
   [291]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3244-1eb0e9ebd86a603c0d83e641c5e543606d175bc6/shard-adlp-6/igt@xe_pmu@engine-activity-idle.html
   [292]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-150188v1/shard-adlp-4/igt@xe_pmu@engine-activity-idle.html

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

  [Intel XE#1122]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1122
  [Intel XE#1124]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1124
  [Intel XE#1125]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1125
  [Intel XE#1126]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1126
  [Intel XE#1127]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1127
  [Intel XE#1128]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1128
  [Intel XE#1129]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1129
  [Intel XE#1151]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1151
  [Intel XE#1178]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1178
  [Intel XE#1280]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1280
  [Intel XE#1337]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1337
  [Intel XE#1341]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1341
  [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#1407]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1407
  [Intel XE#1421]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1421
  [Intel XE#1424]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1424
  [Intel XE#1435]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1435
  [Intel XE#1489]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1489
  [Intel XE#1503]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1503
  [Intel XE#1512]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1512
  [Intel XE#1727]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1727
  [Intel XE#1874]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1874
  [Intel XE#2007]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2007
  [Intel XE#2029]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2029
  [Intel XE#2049]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2049
  [Intel XE#2191]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2191
  [Intel XE#2229]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2229
  [Intel XE#2234]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2234
  [Intel XE#2244]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2244
  [Intel XE#2252]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2252
  [Intel XE#2284]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2284
  [Intel XE#2286]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2286
  [Intel XE#2291]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2291
  [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#2320]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2320
  [Intel XE#2322]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2322
  [Intel XE#2325]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2325
  [Intel XE#2327]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2327
  [Intel XE#2341]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2341
  [Intel XE#2360]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2360
  [Intel XE#2387]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2387
  [Intel XE#2499]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2499
  [Intel XE#2505]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2505
  [Intel XE#2541]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2541
  [Intel XE#2571]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2571
  [Intel XE#2597]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2597
  [Intel XE#261]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/261
  [Intel XE#2669]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2669
  [Intel XE#2705]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2705
  [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#2882]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2882
  [Intel XE#2883]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2883
  [Intel XE#2887]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2887
  [Intel XE#2893]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2893
  [Intel XE#2907]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2907
  [Intel XE#2925]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2925
  [Intel XE#2927]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2927
  [Intel XE#2939]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2939
  [Intel XE#2953]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2953
  [Intel XE#301]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/301
  [Intel XE#3012]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3012
  [Intel XE#306]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/306
  [Intel XE#307]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/307
  [Intel XE#308]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/308
  [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#3113]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3113
  [Intel XE#3124]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3124
  [Intel XE#316]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/316
  [Intel XE#323]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/323
  [Intel XE#3321]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3321
  [Intel XE#3325]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3325
  [Intel XE#3414]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3414
  [Intel XE#3432]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3432
  [Intel XE#346]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/346
  [Intel XE#3573]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3573
  [Intel XE#3576]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3576
  [Intel XE#362]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/362
  [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#373]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/373
  [Intel XE#3767]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3767
  [Intel XE#3876]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3876
  [Intel XE#3884]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3884
  [Intel XE#3904]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3904
  [Intel XE#4056]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4056
  [Intel XE#4130]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4130
  [Intel XE#4141]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4141
  [Intel XE#4156]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4156
  [Intel XE#4173]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4173
  [Intel XE#4212]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4212
  [Intel XE#4294]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4294
  [Intel XE#4331]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4331
  [Intel XE#4345]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4345
  [Intel XE#4351]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4351
  [Intel XE#4354]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4354
  [Intel XE#4356]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4356
  [Intel XE#4422]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4422
  [Intel XE#4459]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4459
  [Intel XE#4497]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4497
  [Intel XE#4501]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4501
  [Intel XE#4522]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4522
  [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#4608]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4608
  [Intel XE#4650]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4650
  [Intel XE#4689]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4689
  [Intel XE#4692]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4692
  [Intel XE#4733]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4733
  [Intel XE#4741]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4741
  [Intel XE#4814]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4814
  [Intel XE#4821]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4821
  [Intel XE#4837]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4837
  [Intel XE#4911]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4911
  [Intel XE#4915]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4915
  [Intel XE#4921]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4921
  [Intel XE#4937]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4937
  [Intel XE#4943]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4943
  [Intel XE#5018]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5018
  [Intel XE#5020]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5020
  [Intel XE#5021]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5021
  [Intel XE#5108]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5108
  [Intel XE#5166]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5166
  [Intel XE#5172]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5172
  [Intel XE#5176]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5176
  [Intel XE#5191]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5191
  [Intel XE#5214]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5214
  [Intel XE#5247]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5247
  [Intel XE#610]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/610
  [Intel XE#616]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/616
  [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#703]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/703
  [Intel XE#718]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/718
  [Intel XE#734]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/734
  [Intel XE#776]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/776
  [Intel XE#787]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/787
  [Intel XE#827]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/827
  [Intel XE#836]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/836
  [Intel XE#870]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/870
  [Intel XE#873]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/873
  [Intel XE#886]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/886
  [Intel XE#908]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/908
  [Intel XE#911]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/911
  [Intel XE#929]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/929
  [Intel XE#944]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/944
  [Intel XE#979]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/979


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

  * IGT: IGT_8409 -> IGT_8410
  * Linux: xe-3244-1eb0e9ebd86a603c0d83e641c5e543606d175bc6 -> xe-pw-150188v1

  IGT_8409: 47d092f112d138977837666b161c97032c3446cd @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  IGT_8410: 5826cdbf1cb8f5ec8a42bae33deb6b2b63e59e6e @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  xe-3244-1eb0e9ebd86a603c0d83e641c5e543606d175bc6: 1eb0e9ebd86a603c0d83e641c5e543606d175bc6
  xe-pw-150188v1: 150188v1

== Logs ==

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

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

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

* Re: [PATCH] drm/xe: Use TLB innvalidation context for invalidations issued from bind queues
  2025-06-13 16:09   ` Matthew Brost
@ 2025-06-15  3:49     ` Matthew Brost
  0 siblings, 0 replies; 8+ messages in thread
From: Matthew Brost @ 2025-06-15  3:49 UTC (permalink / raw)
  To: Thomas Hellström; +Cc: intel-xe, francois.dugast, himal.prasad.ghimiray

On Fri, Jun 13, 2025 at 09:09:26AM -0700, Matthew Brost wrote:
> On Fri, Jun 13, 2025 at 10:40:19AM +0200, Thomas Hellström wrote:
> > On Thu, 2025-06-12 at 14:40 -0700, Matthew Brost wrote:
> > > In order to avoid adding tons of invalidation fences to dma-resv
> > > BOOKKEEP slots, and thus jobs dependencies, when stream of unbinds
> > > arrives (e.g., many user frees or unmaps), use a dma fence tlb
> > > invalidation context associated with the queue issuing the bind
> > > operation.
> > > 
> > > Two fence contexts are needed - one for each GT as TLB invalidations
> > > are only ordered on a GT. A per GT ordered wq is needed to queue the
> > > invalidations to maintain dma fence ordering as well.
> > > 
> > > This fixes the below splat when the number of invalidations gets out
> > > of
> > > hand:
> > > 
> > > [ 1661.638258] watchdog: BUG: soft lockup - CPU#2 stuck for 26s!
> > > [kworker/u65:8:75257]
> > > [ 1661.638262] Modules linked in: xe drm_gpusvm drm_gpuvm
> > > drm_ttm_helper ttm drm_exec gpu_sched drm_suballoc_helper drm_buddy
> > > drm_kms_helper x86_pkg_temp_thermal coretemp snd_hda_cod     
> > > ec_realtek
> > > snd_hda_codec_generic snd_hda_scodec_component mei_pxp mei_hdcp
> > > wmi_bmof
> > > snd_hda_intel snd_intel_dspcfg snd_hda_codec snd_hwdep i2c_i801
> > > snd_hda_core i2c_mux snd_pcm i2c_s      mbus video wmi mei_me mei
> > > fuse
> > > igb e1000e i2c_algo_bit ptp ghash_clmulni_intel pps_core
> > > intel_lpss_pci
> > > [last unloaded: xe]
> > > [ 1661.638278] CPU: 2 UID: 0 PID: 75257 Comm: kworker/u65:8
> > > Tainted: G S                  6.16.0-rc1-xe+ #397 PREEMPT(undef)
> > > [ 1661.638280] Tainted: [S]=CPU_OUT_OF_SPEC
> > > [ 1661.638280] Hardware name: Intel Corporation Raptor Lake Client
> > > Platform/RPL-S ADP-S DDR5 UDIMM CRB, BIOS
> > > RPLSFWI1.R00.3492.A00.2211291114 11/29/2022
> > > [ 1661.638281] Workqueue: xe_gt_page_fault_work_queue
> > > xe_svm_garbage_collector_work_func [xe]
> > > [ 1661.638311] RIP: 0010:xas_start+0x47/0xd0
> > > [ 1661.638317] Code: 07 48 8b 57 08 48 8b 40 08 48 89 c1 83 e1 03
> > > 48 83 f9 02 75 08 48 3d 00 10 00 00 77 21 48 85 d2 75 29 48 c7 47 18
> > > 00
> > > 00 00 00 <c3> cc cc cc cc 48 c1 fa 02 85 d2       74 c7 31 c0 c3 cc
> > > cc
> > > cc cc 0f b6
> > > [ 1661.638317] RSP: 0018:ffffc90003d9b968 EFLAGS: 00000297
> > > [ 1661.638318] RAX: ffff88810459b232 RBX: ffffc90003d9b9a0 RCX:
> > > 0000000000000006
> > > [ 1661.638319] RDX: 0000000000000009 RSI: 0000000000000003 RDI:
> > > ffffc90003d9b9a0
> > > [ 1661.638320] RBP: ffffffffffffffff R08: ffff888197a0a600 R09:
> > > 0000000000000228
> > > [ 1661.638320] R10: ffffffffffffffff R11: ffffffffffffffc0 R12:
> > > 0000000000000241
> > > [ 1661.638320] R13: ffffffffffffffff R14: 0000000000000040 R15:
> > > ffff8881014db000
> > > [ 1661.638321] FS:  0000000000000000(0000)
> > > GS:ffff88890aee8000(0000) knlGS:0000000000000000
> > > [ 1661.638322] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> > > [ 1661.638322] CR2: 00007fc07287fff8 CR3: 000000000242c003 CR4:
> > > 0000000000f70ef0
> > > [ 1661.638323] PKRU: 55555554
> > > [ 1661.638323] Call Trace:
> > > [ 1661.638325]  <TASK>
> > > [ 1661.638326]  xas_load+0xd/0xb0
> > > [ 1661.638328]  xas_find+0x187/0x1d0
> > > [ 1661.638330]  xa_find_after+0x10f/0x130
> > > [ 1661.638332]  drm_sched_job_add_dependency+0x80/0x1e0
> > > [gpu_sched]
> > > [ 1661.638335]  drm_sched_job_add_resv_dependencies+0x62/0x120
> > > [gpu_sched]
> > > [ 1661.638337]  xe_pt_vm_dependencies+0x5b/0x2f0 [xe]
> > > [ 1661.638359]  xe_pt_svm_pre_commit+0x59/0x1a0 [xe]
> > > [ 1661.638376]  xe_migrate_update_pgtables+0x67f/0x910 [xe]
> > > [ 1661.638397]  ? xe_pt_stage_unbind+0x92/0xd0 [xe]
> > > [ 1661.638416]  xe_pt_update_ops_run+0x12e/0x7f0 [xe]
> > > [ 1661.638433]  ops_execute+0x1b1/0x430 [xe]
> > > [ 1661.638449]  xe_vm_range_unbind+0x260/0x2a0 [xe]
> > > [ 1661.638465]  xe_svm_garbage_collector+0xfe/0x1c0 [xe]
> > > [ 1661.638478]  xe_svm_garbage_collector_work_func+0x25/0x30 [xe]
> > > [ 1661.638491]  process_one_work+0x16b/0x2e0
> > > [ 1661.638495]  worker_thread+0x284/0x410
> > > [ 1661.638496]  ? __pfx_worker_thread+0x10/0x10
> > > [ 1661.638496]  kthread+0xe9/0x210
> > > [ 1661.638498]  ? __pfx_kthread+0x10/0x10
> > > 
> > > Signed-off-by: Matthew Brost <matthew.brost@intel.com>
> > > ---
> > >  drivers/gpu/drm/xe/xe_exec_queue.c          |  8 +++++++
> > >  drivers/gpu/drm/xe/xe_exec_queue_types.h    | 17 +++++++++++++++
> > >  drivers/gpu/drm/xe/xe_gt_tlb_invalidation.c | 23 ++++++++++++++++---
> > > --
> > >  drivers/gpu/drm/xe/xe_gt_tlb_invalidation.h |  4 +++-
> > >  drivers/gpu/drm/xe/xe_pt.c                  | 10 +++++++--
> > >  drivers/gpu/drm/xe/xe_svm.c                 |  9 +++++---
> > >  drivers/gpu/drm/xe/xe_vm.c                  |  6 ++++--
> > >  7 files changed, 64 insertions(+), 13 deletions(-)
> > > 
> > > diff --git a/drivers/gpu/drm/xe/xe_exec_queue.c
> > > b/drivers/gpu/drm/xe/xe_exec_queue.c
> > > index fee22358cc09..71e354c56ad9 100644
> > > --- a/drivers/gpu/drm/xe/xe_exec_queue.c
> > > +++ b/drivers/gpu/drm/xe/xe_exec_queue.c
> > > @@ -94,6 +94,14 @@ static struct xe_exec_queue
> > > *__xe_exec_queue_alloc(struct xe_device *xe,
> > >  	else
> > >  		q->sched_props.priority =
> > > XE_EXEC_QUEUE_PRIORITY_NORMAL;
> > >  
> > > +	if (q->flags & (EXEC_QUEUE_FLAG_PERMANENT |
> > > EXEC_QUEUE_FLAG_VM)) {
> > > +		int i;
> > > +
> > > +		for (i = 0; i < XE_EXEC_QUEUE_TLB_CONTEXT_COUNT;
> > > ++i)
> > > +			q->tlb_invalidation.context[i] =
> > > +				dma_fence_context_alloc(1);
> > > +	}
> > 
> > Hmm. If invalidations are ordered per GT, why don't we just allocate
> > one invalidation context per GT, rather than one per GT per exec_queue?
> > 
> 
> TLB invalidations are only ordered per bind queue and GT tuple. Consider
> the case where two queues issue binds and TLB invalidations—if two
> individual binds submit jobs with no interdependencies, the order of TLB
> invalidation can vary. This breaks the assumption of using a single
> dma-fence context per GT.
> 
> The fence for the TLB invalidation needs to be allocated and installed
> in the dma_resv or as an out-sync ahead of the initial bind job
> submission. Allocating it on demand at a later time is not an option.
> 
> > Also, moving forward, this seems like a fit for a one-per-gt
> > invalidation drm_scheduler?
> > 
> 
> I think this is a good idea. xe_pt.c essentially duplicates the DRM
> scheduler functionality through open coding—delaying the TLB
> invalidation until the associated job signals, then kicking a worker to
> perform the invalidation. This closely resembles the DRM scheduler’s
> dependency tracker, run_job worker, and run_job vfunc.
> 
> Let me see if I have time to refactor the TLB invalidation code to be
> job-based, using a DRM scheduler with a backend that issues TLB
> invalidations. I suspect this approach will be cleaner + pay in in the
> long term. As mentioned above, we’d likely need a scheduler per queue
> for optimal usage.
> 
> For now, I think we should land this with the correct Fixes: tag to
> ensure a stable code base.
> 

Ok, so this patch by itself doesn't work. I believe the issue arises on
the migration queue, where two different threads could issue binds
concurrently. The TLB invalidation seqno is assigned outside of any
lock, which could lead to the actual invalidations being reordered
breaking a single dma fence context.

In the case of the migration queue, we need the job_lock for this
assignment (user queues are fine since they hold the VM locks). Given
that, I think we’ll have to live with the stack trace in the commit
message for now — the lockup eventually resolves itself, whereas
breaking a DMA fence context seems considerably worse.

The proper solution, as you suggested, is to use jobs and the DRM
scheduler—but that would require a fairly large change, which we can't
backport. Fortunately, SVM isn’t widely used by customers yet and to
trigger this stack trace, lots of memory needs to be freed in a very
tight loop.

Matt

> Matt
> 
> > Thanks,
> > Thomas
> > 
> > > +
> > >  	if (vm)
> > >  		q->vm = xe_vm_get(vm);
> > >  
> > > diff --git a/drivers/gpu/drm/xe/xe_exec_queue_types.h
> > > b/drivers/gpu/drm/xe/xe_exec_queue_types.h
> > > index cc1cffb5c87f..81d240e561ee 100644
> > > --- a/drivers/gpu/drm/xe/xe_exec_queue_types.h
> > > +++ b/drivers/gpu/drm/xe/xe_exec_queue_types.h
> > > @@ -132,6 +132,23 @@ struct xe_exec_queue {
> > >  		struct list_head link;
> > >  	} lr;
> > >  
> > > +	/** @tlb_invalidation: TLB invalidations exec queue state */
> > > +	struct {
> > > +		/**
> > > +		 * @tlb_invalidation.context: The TLB invalidation
> > > context
> > > +		 * for the queue (VM and MIGRATION queues only)
> > > +		 */
> > > +#define XE_EXEC_QUEUE_TLB_CONTEXT_PRIMARY_GT	0
> > > +#define XE_EXEC_QUEUE_TLB_CONTEXT_MEDIA_GT	1
> > > +#define
> > > XE_EXEC_QUEUE_TLB_CONTEXT_COUNT		(XE_EXEC_QUEUE_TLB_CONTEXT_MEDIA_GT +1)
> > > +		u64 context[XE_EXEC_QUEUE_TLB_CONTEXT_COUNT];
> > > +		/**
> > > +		 * @tlb_invalidation.seqno: The TLB invalidation
> > > seqno for the
> > > +		 * queue (VM and MIGRATION queues only)
> > > +		 */
> > > +		u32 seqno[XE_EXEC_QUEUE_TLB_CONTEXT_COUNT];
> > > +	} tlb_invalidation;
> > > +
> > >  	/** @pxp: PXP info tracking */
> > >  	struct {
> > >  		/** @pxp.type: PXP session type used by this queue
> > > */
> > > diff --git a/drivers/gpu/drm/xe/xe_gt_tlb_invalidation.c
> > > b/drivers/gpu/drm/xe/xe_gt_tlb_invalidation.c
> > > index 084cbdeba8ea..0a2fcaaf04fc 100644
> > > --- a/drivers/gpu/drm/xe/xe_gt_tlb_invalidation.c
> > > +++ b/drivers/gpu/drm/xe/xe_gt_tlb_invalidation.c
> > > @@ -7,6 +7,7 @@
> > >  
> > >  #include "abi/guc_actions_abi.h"
> > >  #include "xe_device.h"
> > > +#include "xe_exec_queue_types.h"
> > >  #include "xe_force_wake.h"
> > >  #include "xe_gt.h"
> > >  #include "xe_gt_printk.h"
> > > @@ -294,7 +295,7 @@ int xe_gt_tlb_invalidation_ggtt(struct xe_gt *gt)
> > >  		struct xe_gt_tlb_invalidation_fence fence;
> > >  		int ret;
> > >  
> > > -		xe_gt_tlb_invalidation_fence_init(gt, &fence, true);
> > > +		xe_gt_tlb_invalidation_fence_init(gt, NULL, &fence,
> > > 0, true);
> > >  		ret = xe_gt_tlb_invalidation_guc(gt, &fence);
> > >  		if (ret)
> > >  			return ret;
> > > @@ -431,7 +432,7 @@ void xe_gt_tlb_invalidation_vm(struct xe_gt *gt,
> > > struct xe_vm *vm)
> > >  	u64 range = 1ull << vm->xe->info.va_bits;
> > >  	int ret;
> > >  
> > > -	xe_gt_tlb_invalidation_fence_init(gt, &fence, true);
> > > +	xe_gt_tlb_invalidation_fence_init(gt, NULL, &fence, 0,
> > > true);
> > >  
> > >  	ret = xe_gt_tlb_invalidation_range(gt, &fence, 0, range, vm-
> > > >usm.asid);
> > >  	if (ret < 0)
> > > @@ -551,7 +552,9 @@ static const struct dma_fence_ops
> > > invalidation_fence_ops = {
> > >  /**
> > >   * xe_gt_tlb_invalidation_fence_init - Initialize TLB invalidation
> > > fence
> > >   * @gt: GT
> > > + * @q: exec queue issuing TLB invalidation, if NULL no queue
> > > associated
> > >   * @fence: TLB invalidation fence to initialize
> > > + * @tlb_context: TLB invalidation context for exec_queue
> > >   * @stack: fence is stack variable
> > >   *
> > >   * Initialize TLB invalidation fence for use.
> > > xe_gt_tlb_invalidation_fence_fini
> > > @@ -559,15 +562,25 @@ static const struct dma_fence_ops
> > > invalidation_fence_ops = {
> > >   * even on error.
> > >   */
> > >  void xe_gt_tlb_invalidation_fence_init(struct xe_gt *gt,
> > > +				       struct xe_exec_queue *q,
> > >  				       struct
> > > xe_gt_tlb_invalidation_fence *fence,
> > > +				       int tlb_context,
> > >  				       bool stack)
> > >  {
> > > +	xe_gt_assert(gt, tlb_context <
> > > XE_EXEC_QUEUE_TLB_CONTEXT_COUNT);
> > > +
> > >  	xe_pm_runtime_get_noresume(gt_to_xe(gt));
> > >  
> > >  	spin_lock_irq(&gt->tlb_invalidation.lock);
> > > -	dma_fence_init(&fence->base, &invalidation_fence_ops,
> > > -		       &gt->tlb_invalidation.lock,
> > > -		       dma_fence_context_alloc(1), 1);
> > > +	if (q)
> > > +		dma_fence_init(&fence->base,
> > > &invalidation_fence_ops,
> > > +			       &gt->tlb_invalidation.lock,
> > > +			       q-
> > > >tlb_invalidation.context[tlb_context],
> > > +			       ++q-
> > > >tlb_invalidation.seqno[tlb_context]);
> > > +	else
> > > +		dma_fence_init(&fence->base,
> > > &invalidation_fence_ops,
> > > +			       &gt->tlb_invalidation.lock,
> > > +			       dma_fence_context_alloc(1), 1);
> > >  	spin_unlock_irq(&gt->tlb_invalidation.lock);
> > >  	INIT_LIST_HEAD(&fence->link);
> > >  	if (stack)
> > > diff --git a/drivers/gpu/drm/xe/xe_gt_tlb_invalidation.h
> > > b/drivers/gpu/drm/xe/xe_gt_tlb_invalidation.h
> > > index abe9b03d543e..8440c608a0ec 100644
> > > --- a/drivers/gpu/drm/xe/xe_gt_tlb_invalidation.h
> > > +++ b/drivers/gpu/drm/xe/xe_gt_tlb_invalidation.h
> > > @@ -10,6 +10,7 @@
> > >  
> > >  #include "xe_gt_tlb_invalidation_types.h"
> > >  
> > > +struct xe_exec_queue;
> > >  struct xe_gt;
> > >  struct xe_guc;
> > >  struct xe_vm;
> > > @@ -29,8 +30,9 @@ int xe_gt_tlb_invalidation_range(struct xe_gt *gt,
> > >  int xe_guc_tlb_invalidation_done_handler(struct xe_guc *guc, u32
> > > *msg, u32 len);
> > >  
> > >  void xe_gt_tlb_invalidation_fence_init(struct xe_gt *gt,
> > > +				       struct xe_exec_queue *q,
> > >  				       struct
> > > xe_gt_tlb_invalidation_fence *fence,
> > > -				       bool stack);
> > > +				       int tlb_context, bool stack);
> > >  void xe_gt_tlb_invalidation_fence_signal(struct
> > > xe_gt_tlb_invalidation_fence *fence);
> > >  
> > >  static inline void
> > > diff --git a/drivers/gpu/drm/xe/xe_pt.c b/drivers/gpu/drm/xe/xe_pt.c
> > > index f39d5cc9f411..feab4b7c7e70 100644
> > > --- a/drivers/gpu/drm/xe/xe_pt.c
> > > +++ b/drivers/gpu/drm/xe/xe_pt.c
> > > @@ -1529,7 +1529,7 @@ static void invalidation_fence_cb(struct
> > > dma_fence *fence,
> > >  
> > >  	trace_xe_gt_tlb_invalidation_fence_cb(xe, &ifence->base);
> > >  	if (!ifence->fence->error) {
> > > -		queue_work(system_wq, &ifence->work);
> > > +		queue_work(ifence->gt->ordered_wq, &ifence->work);
> > >  	} else {
> > >  		ifence->base.base.error = ifence->fence->error;
> > >  		xe_gt_tlb_invalidation_fence_signal(&ifence->base);
> > > @@ -1551,13 +1551,15 @@ static void
> > > invalidation_fence_work_func(struct work_struct *w)
> > >  static void invalidation_fence_init(struct xe_gt *gt,
> > >  				    struct invalidation_fence
> > > *ifence,
> > >  				    struct dma_fence *fence,
> > > +				    struct xe_exec_queue *q, int
> > > tlb_context,
> > >  				    u64 start, u64 end, u32 asid)
> > >  {
> > >  	int ret;
> > >  
> > >  	trace_xe_gt_tlb_invalidation_fence_create(gt_to_xe(gt),
> > > &ifence->base);
> > >  
> > > -	xe_gt_tlb_invalidation_fence_init(gt, &ifence->base, false);
> > > +	xe_gt_tlb_invalidation_fence_init(gt, q, &ifence->base,
> > > tlb_context,
> > > +					  false);
> > >  
> > >  	ifence->fence = fence;
> > >  	ifence->gt = gt;
> > > @@ -2467,10 +2469,14 @@ xe_pt_update_ops_run(struct xe_tile *tile,
> > > struct xe_vma_ops *vops)
> > >  		if (mfence)
> > >  			dma_fence_get(fence);
> > >  		invalidation_fence_init(tile->primary_gt, ifence,
> > > fence,
> > > +					pt_update_ops->q,
> > > +					XE_EXEC_QUEUE_TLB_CONTEXT_PR
> > > IMARY_GT,
> > >  					pt_update_ops->start,
> > >  					pt_update_ops->last, vm-
> > > >usm.asid);
> > >  		if (mfence) {
> > >  			invalidation_fence_init(tile->media_gt,
> > > mfence, fence,
> > > +						pt_update_ops->q,
> > > +						XE_EXEC_QUEUE_TLB_CO
> > > NTEXT_MEDIA_GT,
> > >  						pt_update_ops-
> > > >start,
> > >  						pt_update_ops->last,
> > > vm->usm.asid);
> > >  			fences[0] = &ifence->base.base;
> > > diff --git a/drivers/gpu/drm/xe/xe_svm.c
> > > b/drivers/gpu/drm/xe/xe_svm.c
> > > index 13abc6049041..2edd1c52150e 100644
> > > --- a/drivers/gpu/drm/xe/xe_svm.c
> > > +++ b/drivers/gpu/drm/xe/xe_svm.c
> > > @@ -227,7 +227,9 @@ static void xe_svm_invalidate(struct drm_gpusvm
> > > *gpusvm,
> > >  			int err;
> > >  
> > >  			xe_gt_tlb_invalidation_fence_init(tile-
> > > >primary_gt,
> > > -							 
> > > &fence[fence_id], true);
> > > +							  NULL,
> > > +							 
> > > &fence[fence_id], 0,
> > > +							  true);
> > >  
> > >  			err = xe_gt_tlb_invalidation_range(tile-
> > > >primary_gt,
> > >  							  
> > > &fence[fence_id],
> > > @@ -241,8 +243,9 @@ static void xe_svm_invalidate(struct drm_gpusvm
> > > *gpusvm,
> > >  			if (!tile->media_gt)
> > >  				continue;
> > >  
> > > -			xe_gt_tlb_invalidation_fence_init(tile-
> > > >media_gt,
> > > -							 
> > > &fence[fence_id], true);
> > > +			xe_gt_tlb_invalidation_fence_init(tile-
> > > >media_gt, NULL,
> > > +							 
> > > &fence[fence_id], 0,
> > > +							  true);
> > >  
> > >  			err = xe_gt_tlb_invalidation_range(tile-
> > > >media_gt,
> > >  							  
> > > &fence[fence_id],
> > > diff --git a/drivers/gpu/drm/xe/xe_vm.c b/drivers/gpu/drm/xe/xe_vm.c
> > > index d18807b92b18..730319b78a0a 100644
> > > --- a/drivers/gpu/drm/xe/xe_vm.c
> > > +++ b/drivers/gpu/drm/xe/xe_vm.c
> > > @@ -3896,8 +3896,9 @@ int xe_vm_invalidate_vma(struct xe_vma *vma)
> > >  		if (xe_pt_zap_ptes(tile, vma)) {
> > >  			xe_device_wmb(xe);
> > >  			xe_gt_tlb_invalidation_fence_init(tile-
> > > >primary_gt,
> > > +							  NULL,
> > >  							 
> > > &fence[fence_id],
> > > -							  true);
> > > +							  0, true);
> > >  
> > >  			ret = xe_gt_tlb_invalidation_vma(tile-
> > > >primary_gt,
> > >  							
> > > &fence[fence_id], vma);
> > > @@ -3909,8 +3910,9 @@ int xe_vm_invalidate_vma(struct xe_vma *vma)
> > >  				continue;
> > >  
> > >  			xe_gt_tlb_invalidation_fence_init(tile-
> > > >media_gt,
> > > +							  NULL,
> > >  							 
> > > &fence[fence_id],
> > > -							  true);
> > > +							  0, true);
> > >  
> > >  			ret = xe_gt_tlb_invalidation_vma(tile-
> > > >media_gt,
> > >  							
> > > &fence[fence_id], vma);
> > 

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

end of thread, other threads:[~2025-06-15  3:48 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-06-12 21:40 [PATCH] drm/xe: Use TLB innvalidation context for invalidations issued from bind queues Matthew Brost
2025-06-13  2:34 ` ✗ CI.checkpatch: warning for " Patchwork
2025-06-13  2:36 ` ✓ CI.KUnit: success " Patchwork
2025-06-13  4:07 ` ✓ Xe.CI.BAT: " Patchwork
2025-06-13  8:40 ` [PATCH] " Thomas Hellström
2025-06-13 16:09   ` Matthew Brost
2025-06-15  3:49     ` Matthew Brost
2025-06-14  2:49 ` ✓ Xe.CI.Full: success for " Patchwork

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