Intel-XE Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH V21 00/15] Add memory page offlining support
@ 2026-09-03 16:15 Tejas Upadhyay
  2026-09-03 16:15 ` [PATCH V21 01/15] drm/xe: Link VRAM resource allocation with gpu buddy Tejas Upadhyay
                   ` (19 more replies)
  0 siblings, 20 replies; 25+ messages in thread
From: Tejas Upadhyay @ 2026-09-03 16:15 UTC (permalink / raw)
  To: intel-xe; +Cc: himal.prasad.ghimiray, rodrigo.vivi, Matthew Brost,
	Tejas Upadhyay

This functionality represents a significant step in making
the xe driver gracefully handle hardware memory degradation.
By integrating with the DRM Buddy allocator, the driver
can permanently "carve out" faulty memory so it isn't reused
by subsequent allocations.

IGT tests for testing this via injecting simple single address and
duplicate address fault to unit test functionality:
https://patchwork.freedesktop.org/series/170555/#rev3

v21(Sashiko/MattB):
- Immediately offline pages if already free
- With that remove some redundant code
- Guard with lock before access to tbo
- Add kernel doc in debugfs
v20(Sashiko/MattB):
- Retry failed queued pages during xe_ttm_vram_mgr_del()
- xe_bo::q lifecycle fix
- hold down_write while traversing exec_queue list
- fix configfs default value + improve confusing read policy
v19:
- Sashiko review comment closure
- Sliting of making xe_bo_ttm_purge() export and NULL handling
- Remove redundant code in xe_ttm_vram_reserve_page_at_addr()
- Resolve nit comments provided in configfs and debugfs
v18:
- Splitting out the sysfs patch; it will come later once it is redesigned
- Address sashiko reivew comments
- Add debugfs and adjust igt tests and fault injection
v17:
- Rebase on drm-tip
- Enforce CONFIG_FAULT_INJECTION_DEBUG_FS for fault inject
v16:
- Correct sysfs patches with moving code with rcu lock
- In case purge fail let next alloc decide final failure
- Remove addr_to_block API, its being pulled from drm-tip
- Remove some unused code and replace where existing API can be used
v15:
- Split few big patches into small
- Avoid vram_mgr lock in sysfs
- fix missing queue_pages counter increment
v14:
- Solve sashiko reviews
- Remove SOFT->HARD offline patch, decision is taken based on -EEXIST
- Dump gpu buddy allocated patch dropped
v13:
- Add fault inject and remove standlone debugfs
v12:
- Fix Sashiko review comments
v11:
- Add BAN reason for UMD to know about offlining
- Add support for soft offline mode
- Rebase and remove dummy lockdep annotation patch, as it merged from upstream
v10:
- Remove RFC
v7:
- Improve debugfs warning messages
- Use scope_guard for locking(MattB)
- Adapt addition of queue member of LRC BO(MattB)
- Extend and use xe_ttm_bo_purge API for vram pages(MattB)
- Handle dma_buf_map requests for native and remote(MattB)
- Address if in never initialized block, set block to NULL
- Add lockdep in gpu buddy (MattB)
- Correct allocated_addr_to_block logic (MattA)
V6:
- Add more specific tests to noncritical bo sections
- Handle smooth exit of user created exec queues
- Break code and make purge specific static API
V5:
- Sysfs "max_pages" addition
- Reset block->private NULL post purge

Tejas Upadhyay (15):
  drm/xe: Link VRAM resource allocation with gpu buddy
  drm/xe: Link LRC BO and its execution queue with safe lifetime rules
  drm/xe: Export xe_ttm_bo_purge()
  drm/xe: Handle NULL resource and allow purging of VRAM pages
  drm/xe/bo: Make xe_bo_is_user() public
  drm/xe: Guard teardown paths against purged BOs
  drm/xe/vram: Extract buddy allocation and free helpers
  drm/xe/vram: Add page offline data structures and lifecycle
  drm/xe/vram: Add VRAM page offline fault handler
  drm/xe/configfs: Add disable_vram_page_offline attribute
  drm/xe/ras: Cache disable_vram_page_offline policy at init
  drm/xe/vram: Check disable_vram_page_offline policy in fault handler
  drm/xe: Expose bad VRAM pages via debugfs
  drm/xe/uapi: Expose ban reason in EXEC_QUEUE_GET_PROPERTY_BAN
  drm/xe: Add fault-inject based VRAM page offline injection

 drivers/gpu/drm/xe/xe_bo.c                 |  25 +-
 drivers/gpu/drm/xe/xe_bo.h                 |   2 +
 drivers/gpu/drm/xe/xe_bo_types.h           |   8 +
 drivers/gpu/drm/xe/xe_configfs.c           |  72 ++-
 drivers/gpu/drm/xe/xe_configfs.h           |   2 +
 drivers/gpu/drm/xe/xe_debugfs.c            |  51 ++
 drivers/gpu/drm/xe/xe_debugfs.h            |   2 +
 drivers/gpu/drm/xe/xe_dma_buf.c            |   3 +
 drivers/gpu/drm/xe/xe_drm_ras_types.h      |   3 +
 drivers/gpu/drm/xe/xe_exec_queue.c         |  72 ++-
 drivers/gpu/drm/xe/xe_exec_queue_types.h   |   7 +-
 drivers/gpu/drm/xe/xe_execlist.c           |   4 +-
 drivers/gpu/drm/xe/xe_guc_submit.c         |  36 +-
 drivers/gpu/drm/xe/xe_ras.c                |   9 +
 drivers/gpu/drm/xe/xe_ttm_vram_mgr.c       | 600 ++++++++++++++++++++-
 drivers/gpu/drm/xe/xe_ttm_vram_mgr.h       |   3 +
 drivers/gpu/drm/xe/xe_ttm_vram_mgr_types.h |  40 ++
 include/uapi/drm/xe_drm.h                  |  18 +-
 18 files changed, 911 insertions(+), 46 deletions(-)

-- 
2.52.0


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

* [PATCH V21 01/15] drm/xe: Link VRAM resource allocation with gpu buddy
  2026-09-03 16:15 [PATCH V21 00/15] Add memory page offlining support Tejas Upadhyay
@ 2026-09-03 16:15 ` Tejas Upadhyay
  2026-09-03 16:15 ` [PATCH V21 02/15] drm/xe: Link LRC BO and its execution queue with safe lifetime rules Tejas Upadhyay
                   ` (18 subsequent siblings)
  19 siblings, 0 replies; 25+ messages in thread
From: Tejas Upadhyay @ 2026-09-03 16:15 UTC (permalink / raw)
  To: intel-xe
  Cc: himal.prasad.ghimiray, rodrigo.vivi, Matthew Brost,
	Tejas Upadhyay, Andi Shyti

Setup to link allocation resource structure inside
gpu buddy. This functionality is critical for
supporting the memory page offline feature on CRI,
where identified faulty pages must be traced back to their
originating buffer for safe removal.

v3(MattB): store memory resource(res) instead of tbo
V2(MattB): Clear block->private in xe_ttm_vram_mgr_del as well

Reviewed-by: Andi Shyti <andi.shyti@linux.intel.com>
Reviewed-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
Signed-off-by: Tejas Upadhyay <tejas.upadhyay@intel.com>
---
 drivers/gpu/drm/xe/xe_ttm_vram_mgr.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/drivers/gpu/drm/xe/xe_ttm_vram_mgr.c b/drivers/gpu/drm/xe/xe_ttm_vram_mgr.c
index 05911904c1f9..0f9cf1c3a576 100644
--- a/drivers/gpu/drm/xe/xe_ttm_vram_mgr.c
+++ b/drivers/gpu/drm/xe/xe_ttm_vram_mgr.c
@@ -57,6 +57,7 @@ static int xe_ttm_vram_mgr_new(struct ttm_resource_manager *man,
 	struct xe_ttm_vram_mgr *mgr = to_xe_ttm_vram_mgr(man);
 	struct xe_ttm_vram_mgr_resource *vres;
 	struct gpu_buddy *mm = &mgr->mm;
+	struct gpu_buddy_block *block;
 	u64 size, min_page_size;
 	unsigned long lpfn;
 	int err;
@@ -141,6 +142,8 @@ static int xe_ttm_vram_mgr_new(struct ttm_resource_manager *man,
 	}
 
 	mgr->visible_avail -= vres->used_visible_size;
+	list_for_each_entry(block, &vres->blocks, link)
+		block->private = &vres->base;
 	mutex_unlock(&mgr->lock);
 
 	if (!(vres->base.placement & TTM_PL_FLAG_CONTIGUOUS) &&
@@ -179,8 +182,11 @@ static void xe_ttm_vram_mgr_del(struct ttm_resource_manager *man,
 		to_xe_ttm_vram_mgr_resource(res);
 	struct xe_ttm_vram_mgr *mgr = to_xe_ttm_vram_mgr(man);
 	struct gpu_buddy *mm = &mgr->mm;
+	struct gpu_buddy_block *block;
 
 	mutex_lock(&mgr->lock);
+	list_for_each_entry(block, &vres->blocks, link)
+		block->private = NULL;
 	gpu_buddy_free_list(mm, &vres->blocks, 0);
 	mgr->visible_avail += vres->used_visible_size;
 	mutex_unlock(&mgr->lock);
-- 
2.52.0


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

* [PATCH V21 02/15] drm/xe: Link LRC BO and its execution queue with safe lifetime rules
  2026-09-03 16:15 [PATCH V21 00/15] Add memory page offlining support Tejas Upadhyay
  2026-09-03 16:15 ` [PATCH V21 01/15] drm/xe: Link VRAM resource allocation with gpu buddy Tejas Upadhyay
@ 2026-09-03 16:15 ` Tejas Upadhyay
  2026-09-03 16:15 ` [PATCH V21 03/15] drm/xe: Export xe_ttm_bo_purge() Tejas Upadhyay
                   ` (17 subsequent siblings)
  19 siblings, 0 replies; 25+ messages in thread
From: Tejas Upadhyay @ 2026-09-03 16:15 UTC (permalink / raw)
  To: intel-xe
  Cc: himal.prasad.ghimiray, rodrigo.vivi, Matthew Brost,
	Tejas Upadhyay, GitHub Copilot, Andi Shyti

Introduce an execution queue back-pointer (`q`) within `struct xe_bo`, primarily
for Logical Ring Context (LRC) Buffer Objects. This back-pointer allows the
driver to identify and execute targeted corrective actions on a specific queue
if its associated LRC BO encounters errors like memory corruption or eviction.

Because this back-pointer takes no reference on its target execution queue, strict
lifetime and serialization rules are implemented to prevent concurrent readers
from encountering use-after-free or dangling pointer bugs:

- Encapsulate tracking logic inside xe_exec_queue_set_lrc_bo_backpointer() and
  xe_exec_queue_clear_lrc_bo_backpointer().

- Explicitly wrap all back-pointer writes and clears under the BO's dma_resv lock
  via xe_bo_lock(). Readers must hold this same lock across both the pointer read
  and its subsequent xe_exec_queue_get_unless_zero() call to guarantee serialization
  against teardown.

- Defer publishing the back-pointer until the very end of xe_exec_queue_create().
  This ensures that early initialization failure paths (which bypass the kref
  mechanism and immediately free the queue structure) never leak a transient pointer
  to concurrent readers.

- Clear the back-pointer at the absolute top of __xe_exec_queue_fini(). This strips
  the pointer before q->ops->fini() destroys the hardware backend, ensuring that
  any reader holding the BO lock either observes a fully functional queue or NULL.

For multi-queue engines, secondary LRC BOs safely point to the primary queue, which
is guaranteed to outlive the teardown pass due to active references held by its
secondaries.

V4 (MattB):
  - Add LRC BO's execution queue safe lifetime rules
V3 (Sashiko):
  - Use 8-byte placeholder structure compatibility for non-LRC BO cases.
  - Wrap assignments and clears securely under dma_resv locks.
V2 (Matt B):
  - Add native support handling multi-queue configuration tracking.

Co-authored-by: GitHub Copilot <copilot@github.com>
Reviewed-by: Andi Shyti <andi.shyti@linux.intel.com>
Reviewed-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Signed-off-by: Tejas Upadhyay <tejas.upadhyay@intel.com>
---
 drivers/gpu/drm/xe/xe_bo_types.h   |  8 ++++
 drivers/gpu/drm/xe/xe_exec_queue.c | 64 ++++++++++++++++++++++++++++++
 2 files changed, 72 insertions(+)

diff --git a/drivers/gpu/drm/xe/xe_bo_types.h b/drivers/gpu/drm/xe/xe_bo_types.h
index e45f24301050..0eb93052c1d5 100644
--- a/drivers/gpu/drm/xe/xe_bo_types.h
+++ b/drivers/gpu/drm/xe/xe_bo_types.h
@@ -20,6 +20,7 @@
 struct xe_device;
 struct xe_mem_pool_node;
 struct xe_vm;
+struct xe_exec_queue;
 
 #define XE_BO_MAX_PLACEMENTS	3
 
@@ -42,6 +43,13 @@ struct xe_bo {
 	u32 flags;
 	/** @vm: VM this BO is attached to, for extobj this will be NULL */
 	struct xe_vm *vm;
+	/**
+	 * @q: Queue this BO is attached to, mostly for LRC BO, NULL otherwise.
+	 * Protected by the BO dma_resv: readers must hold it across both the
+	 * read and xe_exec_queue_get_unless_zero(). The BO holds no reference
+	 * on the queue.
+	 */
+	struct xe_exec_queue *q;
 	/** @tile: Tile this BO is attached to (kernel BO only) */
 	struct xe_tile *tile;
 	/** @placements: valid placements for this BO */
diff --git a/drivers/gpu/drm/xe/xe_exec_queue.c b/drivers/gpu/drm/xe/xe_exec_queue.c
index c4213bb9c137..f3ea4807ac33 100644
--- a/drivers/gpu/drm/xe/xe_exec_queue.c
+++ b/drivers/gpu/drm/xe/xe_exec_queue.c
@@ -322,10 +322,66 @@ struct xe_lrc *xe_exec_queue_lrc(struct xe_exec_queue *q)
 	return q->lrc[0];
 }
 
+/*
+ * Publish the queue back-pointer in the LRC BOs.
+ *
+ * The BO holds no reference on the queue; the queue owns the LRCs, and
+ * therefore the BOs, instead. The back-pointer is made safe by two rules:
+ *
+ *  - It is published only once the queue is fully constructed and can no
+ *    longer be destroyed by an error path that bypasses the kref (see
+ *    xe_exec_queue_create()), so a reader that successfully takes a
+ *    reference can never be handed a queue that is freed without going
+ *    through xe_exec_queue_destroy().
+ *
+ *  - It is written and cleared under the BO dma_resv. Readers must hold
+ *    the same lock across both the read and
+ *    xe_exec_queue_get_unless_zero(), which serializes them against
+ *    xe_exec_queue_clear_lrc_bo_backpointer() below.
+ *
+ * For a multi-queue group the LRC BOs point at the primary queue, which is
+ * kept alive by the reference every secondary holds on it.
+ */
+static void xe_exec_queue_set_lrc_bo_backpointer(struct xe_exec_queue *q)
+{
+	struct xe_exec_queue *primary = xe_exec_queue_multi_queue_primary(q);
+	int i;
+
+	for (i = 0; i < q->width; ++i) {
+		struct xe_bo *bo = q->lrc[i]->bo;
+
+		xe_bo_lock(bo, false);
+		bo->q = primary;
+		xe_bo_unlock(bo);
+	}
+}
+
+/*
+ * Drop the queue back-pointer before anything belonging to the queue is
+ * torn down. This must happen before q->ops->fini(), otherwise a reader
+ * could take a reference and then operate on an already destroyed backend.
+ */
+static void xe_exec_queue_clear_lrc_bo_backpointer(struct xe_exec_queue *q)
+{
+	int i;
+
+	for (i = 0; i < q->width; ++i) {
+		struct xe_bo *bo = q->lrc[i] ? q->lrc[i]->bo : NULL;
+
+		if (!bo)
+			continue;
+
+		xe_bo_lock(bo, false);
+		bo->q = NULL;
+		xe_bo_unlock(bo);
+	}
+}
+
 static void __xe_exec_queue_fini(struct xe_exec_queue *q)
 {
 	int i;
 
+	xe_exec_queue_clear_lrc_bo_backpointer(q);
 	q->ops->fini(q);
 
 	for (i = 0; i < q->width; ++i)
@@ -450,6 +506,14 @@ struct xe_exec_queue *xe_exec_queue_create(struct xe_device *xe, struct xe_vm *v
 			goto err_post_init;
 	}
 
+	/*
+	 * Publish the LRC BO back-pointers last: past this point the queue can
+	 * only be destroyed through xe_exec_queue_destroy(), so a concurrent
+	 * reader that takes a reference via bo->q cannot race with the
+	 * kref-bypassing error paths below.
+	 */
+	xe_exec_queue_set_lrc_bo_backpointer(q);
+
 	return q;
 
 err_post_init:
-- 
2.52.0


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

* [PATCH V21 03/15] drm/xe: Export xe_ttm_bo_purge()
  2026-09-03 16:15 [PATCH V21 00/15] Add memory page offlining support Tejas Upadhyay
  2026-09-03 16:15 ` [PATCH V21 01/15] drm/xe: Link VRAM resource allocation with gpu buddy Tejas Upadhyay
  2026-09-03 16:15 ` [PATCH V21 02/15] drm/xe: Link LRC BO and its execution queue with safe lifetime rules Tejas Upadhyay
@ 2026-09-03 16:15 ` Tejas Upadhyay
  2026-09-03 16:15 ` [PATCH V21 04/15] drm/xe: Handle NULL resource and allow purging of VRAM pages Tejas Upadhyay
                   ` (16 subsequent siblings)
  19 siblings, 0 replies; 25+ messages in thread
From: Tejas Upadhyay @ 2026-09-03 16:15 UTC (permalink / raw)
  To: intel-xe
  Cc: himal.prasad.ghimiray, rodrigo.vivi, Matthew Brost,
	Tejas Upadhyay, Andi Shyti, Arvind Yadav

Remove the static qualifier from xe_ttm_bo_purge() and add its
prototype to xe_bo.h. This allows the function to be called
from other parts of the driver outside of xe_bo.c, specifically
needed for the memory page offline feature.

Cc: Andi Shyti <andi.shyti@linux.intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
Reviewed-by: Arvind Yadav <arvind.yadav@intel.com>
Reviewed-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Signed-off-by: Tejas Upadhyay <tejas.upadhyay@intel.com>
---
 drivers/gpu/drm/xe/xe_bo.c | 2 +-
 drivers/gpu/drm/xe/xe_bo.h | 1 +
 2 files changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/xe/xe_bo.c b/drivers/gpu/drm/xe/xe_bo.c
index dde309821237..8f93e09e51bb 100644
--- a/drivers/gpu/drm/xe/xe_bo.c
+++ b/drivers/gpu/drm/xe/xe_bo.c
@@ -921,7 +921,7 @@ void xe_bo_set_purgeable_state(struct xe_bo *bo,
  *
  * Return: 0 on success, negative error code on failure
  */
-static int xe_ttm_bo_purge(struct ttm_buffer_object *ttm_bo, struct ttm_operation_ctx *ctx)
+int xe_ttm_bo_purge(struct ttm_buffer_object *ttm_bo, struct ttm_operation_ctx *ctx)
 {
 	struct xe_bo *bo = ttm_to_xe_bo(ttm_bo);
 	struct ttm_placement place = {};
diff --git a/drivers/gpu/drm/xe/xe_bo.h b/drivers/gpu/drm/xe/xe_bo.h
index e8081af5bfc1..90b15fff36c7 100644
--- a/drivers/gpu/drm/xe/xe_bo.h
+++ b/drivers/gpu/drm/xe/xe_bo.h
@@ -600,6 +600,7 @@ struct xe_bo_shrink_flags {
 long xe_bo_shrink(struct ttm_operation_ctx *ctx, struct ttm_buffer_object *bo,
 		  const struct xe_bo_shrink_flags flags,
 		  unsigned long *scanned);
+int xe_ttm_bo_purge(struct ttm_buffer_object *ttm_bo, struct ttm_operation_ctx *ctx);
 
 /**
  * xe_bo_is_mem_type - Whether the bo currently resides in the given
-- 
2.52.0


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

* [PATCH V21 04/15] drm/xe: Handle NULL resource and allow purging of VRAM pages
  2026-09-03 16:15 [PATCH V21 00/15] Add memory page offlining support Tejas Upadhyay
                   ` (2 preceding siblings ...)
  2026-09-03 16:15 ` [PATCH V21 03/15] drm/xe: Export xe_ttm_bo_purge() Tejas Upadhyay
@ 2026-09-03 16:15 ` Tejas Upadhyay
  2026-09-03 17:08   ` sashiko-bot
  2026-09-03 16:15 ` [PATCH V21 05/15] drm/xe/bo: Make xe_bo_is_user() public Tejas Upadhyay
                   ` (15 subsequent siblings)
  19 siblings, 1 reply; 25+ messages in thread
From: Tejas Upadhyay @ 2026-09-03 16:15 UTC (permalink / raw)
  To: intel-xe
  Cc: himal.prasad.ghimiray, rodrigo.vivi, Matthew Brost,
	Tejas Upadhyay, Andi Shyti

Add NULL checks for the buffer object's resource pointer in
xe_bo_is_vram() and xe_bo_is_stolen() to prevent potential NULL
pointer dereferences when checking memory location during page
offlining.

Additionally, remove the `!ttm_bo->ttm` check from
xe_ttm_bo_purge(). This restriction is stripped away to
explicitly allow the driver to purge VRAM pages during the
memory page offline sequence.

v2(Sashiko):
- Split export and this patch also Check NULL res in
  xe_bo_is_vram() and xe_bo_is_stolen()

Reviewed-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Cc: Andi Shyti <andi.shyti@linux.intel.com>
Signed-off-by: Tejas Upadhyay <tejas.upadhyay@intel.com>
---
 drivers/gpu/drm/xe/xe_bo.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_bo.c b/drivers/gpu/drm/xe/xe_bo.c
index 8f93e09e51bb..d30a8411d2a3 100644
--- a/drivers/gpu/drm/xe/xe_bo.c
+++ b/drivers/gpu/drm/xe/xe_bo.c
@@ -104,13 +104,16 @@ static bool resource_is_vram(struct ttm_resource *res)
 
 bool xe_bo_is_vram(struct xe_bo *bo)
 {
-	return resource_is_vram(bo->ttm.resource) ||
-		resource_is_stolen_vram(xe_bo_device(bo), bo->ttm.resource);
+	struct ttm_resource *res = bo->ttm.resource;
+
+	return  res && (resource_is_vram(res) || resource_is_stolen_vram(xe_bo_device(bo), res));
 }
 
 bool xe_bo_is_stolen(struct xe_bo *bo)
 {
-	return bo->ttm.resource->mem_type == XE_PL_STOLEN;
+	struct ttm_resource *res = bo->ttm.resource;
+
+	return res && res->mem_type == XE_PL_STOLEN;
 }
 
 /**
@@ -929,9 +932,6 @@ int xe_ttm_bo_purge(struct ttm_buffer_object *ttm_bo, struct ttm_operation_ctx *
 
 	xe_bo_assert_held(bo);
 
-	if (!ttm_bo->ttm)
-		return 0;
-
 	if (!xe_bo_madv_is_dontneed(bo))
 		return 0;
 
-- 
2.52.0


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

* [PATCH V21 05/15] drm/xe/bo: Make xe_bo_is_user() public
  2026-09-03 16:15 [PATCH V21 00/15] Add memory page offlining support Tejas Upadhyay
                   ` (3 preceding siblings ...)
  2026-09-03 16:15 ` [PATCH V21 04/15] drm/xe: Handle NULL resource and allow purging of VRAM pages Tejas Upadhyay
@ 2026-09-03 16:15 ` Tejas Upadhyay
  2026-09-03 16:15 ` [PATCH V21 06/15] drm/xe: Guard teardown paths against purged BOs Tejas Upadhyay
                   ` (14 subsequent siblings)
  19 siblings, 0 replies; 25+ messages in thread
From: Tejas Upadhyay @ 2026-09-03 16:15 UTC (permalink / raw)
  To: intel-xe
  Cc: himal.prasad.ghimiray, rodrigo.vivi, Matthew Brost,
	Tejas Upadhyay, Andi Shyti

Export xe_bo_is_user() so it can be used by the VRAM page offline
code to distinguish user-created BOs from kernel BOs when deciding
whether a faulty page can be safely purged or requires a full reset.

Reviewed-by: Andi Shyti <andi.shyti@linux.intel.com>
Reviewed-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Signed-off-by: Tejas Upadhyay <tejas.upadhyay@intel.com>
---
 drivers/gpu/drm/xe/xe_bo.c | 8 +++++++-
 drivers/gpu/drm/xe/xe_bo.h | 1 +
 2 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/xe/xe_bo.c b/drivers/gpu/drm/xe/xe_bo.c
index d30a8411d2a3..c255327669da 100644
--- a/drivers/gpu/drm/xe/xe_bo.c
+++ b/drivers/gpu/drm/xe/xe_bo.c
@@ -161,7 +161,13 @@ bool xe_bo_is_vm_bound(struct xe_bo *bo)
 	return !list_empty(&bo->ttm.base.gpuva.list);
 }
 
-static bool xe_bo_is_user(struct xe_bo *bo)
+/**
+ * xe_bo_is_user - Check if BO is user-created
+ * @bo: The BO
+ *
+ * Returns: true if @bo was created by userspace
+ */
+bool xe_bo_is_user(struct xe_bo *bo)
 {
 	return bo->flags & XE_BO_FLAG_USER;
 }
diff --git a/drivers/gpu/drm/xe/xe_bo.h b/drivers/gpu/drm/xe/xe_bo.h
index 90b15fff36c7..eede678ad303 100644
--- a/drivers/gpu/drm/xe/xe_bo.h
+++ b/drivers/gpu/drm/xe/xe_bo.h
@@ -601,6 +601,7 @@ long xe_bo_shrink(struct ttm_operation_ctx *ctx, struct ttm_buffer_object *bo,
 		  const struct xe_bo_shrink_flags flags,
 		  unsigned long *scanned);
 int xe_ttm_bo_purge(struct ttm_buffer_object *ttm_bo, struct ttm_operation_ctx *ctx);
+bool xe_bo_is_user(struct xe_bo *bo);
 
 /**
  * xe_bo_is_mem_type - Whether the bo currently resides in the given
-- 
2.52.0


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

* [PATCH V21 06/15] drm/xe: Guard teardown paths against purged BOs
  2026-09-03 16:15 [PATCH V21 00/15] Add memory page offlining support Tejas Upadhyay
                   ` (4 preceding siblings ...)
  2026-09-03 16:15 ` [PATCH V21 05/15] drm/xe/bo: Make xe_bo_is_user() public Tejas Upadhyay
@ 2026-09-03 16:15 ` Tejas Upadhyay
  2026-09-03 16:55   ` sashiko-bot
  2026-09-03 16:16 ` [PATCH V21 07/15] drm/xe/vram: Extract buddy allocation and free helpers Tejas Upadhyay
                   ` (13 subsequent siblings)
  19 siblings, 1 reply; 25+ messages in thread
From: Tejas Upadhyay @ 2026-09-03 16:15 UTC (permalink / raw)
  To: intel-xe; +Cc: himal.prasad.ghimiray, rodrigo.vivi, Matthew Brost,
	Tejas Upadhyay

VRAM page offlining can purge BOs that are still referenced by page
tables, exec queues, and DMA-buf exports. Add xe_bo_is_purged()
guards in the teardown paths to prevent unpinning or mapping an
already-purged BO:

- xe_bo_unpin_map_no_vm(): skip unpin if purged
- xe_dma_buf_map(): return -ENOENT early if purged
- xe_exec_queue_update_run_ticks(): skip LRC timestamp read if purged
- xe_pt_destroy(): skip unpin if purged

v4(Sashiko):
- Move bo purge check in xe_bo_unpin() to handle all instances
v3(Sashiko):
- Remove dma_resv is already held
v2(Himal):
- take dma_resv lock before calling xe_bo_is_purged()

Reviewed-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Signed-off-by: Tejas Upadhyay <tejas.upadhyay@intel.com>
---
 drivers/gpu/drm/xe/xe_bo.c         | 3 +++
 drivers/gpu/drm/xe/xe_dma_buf.c    | 3 +++
 drivers/gpu/drm/xe/xe_exec_queue.c | 8 ++++++--
 3 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_bo.c b/drivers/gpu/drm/xe/xe_bo.c
index c255327669da..b162753cebb7 100644
--- a/drivers/gpu/drm/xe/xe_bo.c
+++ b/drivers/gpu/drm/xe/xe_bo.c
@@ -3267,6 +3267,9 @@ void xe_bo_unpin(struct xe_bo *bo)
 	struct ttm_place *place = &bo->placements[0];
 	struct xe_device *xe = xe_bo_device(bo);
 
+	if (xe_bo_is_purged(bo))
+		return;
+
 	xe_assert(xe, !bo->ttm.base.import_attach);
 	xe_assert(xe, xe_bo_is_pinned(bo));
 
diff --git a/drivers/gpu/drm/xe/xe_dma_buf.c b/drivers/gpu/drm/xe/xe_dma_buf.c
index bf0728838ead..5d9f1cd24b7f 100644
--- a/drivers/gpu/drm/xe/xe_dma_buf.c
+++ b/drivers/gpu/drm/xe/xe_dma_buf.c
@@ -104,6 +104,9 @@ static struct sg_table *xe_dma_buf_map(struct dma_buf_attachment *attach,
 	struct sg_table *sgt;
 	int r = 0;
 
+	if (xe_bo_is_purged(bo))
+		return ERR_PTR(-ENOENT);
+
 	if (!attach->peer2peer && !xe_bo_can_migrate(bo, XE_PL_TT))
 		return ERR_PTR(-EOPNOTSUPP);
 
diff --git a/drivers/gpu/drm/xe/xe_exec_queue.c b/drivers/gpu/drm/xe/xe_exec_queue.c
index f3ea4807ac33..e63559a2f582 100644
--- a/drivers/gpu/drm/xe/xe_exec_queue.c
+++ b/drivers/gpu/drm/xe/xe_exec_queue.c
@@ -1630,8 +1630,12 @@ void xe_exec_queue_update_run_ticks(struct xe_exec_queue *q)
 	 * errors.
 	 */
 	lrc = q->lrc[0];
-	new_ts = xe_lrc_update_timestamp(lrc, &old_ts);
-	q->xef->run_ticks[q->class] += (new_ts - old_ts) * q->width;
+	xe_bo_lock(lrc->bo, false);
+	if (!xe_bo_is_purged(lrc->bo)) {
+		new_ts = xe_lrc_update_timestamp(lrc, &old_ts);
+		q->xef->run_ticks[q->class] += (new_ts - old_ts) * q->width;
+	}
+	xe_bo_unlock(lrc->bo);
 
 	drm_dev_exit(idx);
 }
-- 
2.52.0


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

* [PATCH V21 07/15] drm/xe/vram: Extract buddy allocation and free helpers
  2026-09-03 16:15 [PATCH V21 00/15] Add memory page offlining support Tejas Upadhyay
                   ` (5 preceding siblings ...)
  2026-09-03 16:15 ` [PATCH V21 06/15] drm/xe: Guard teardown paths against purged BOs Tejas Upadhyay
@ 2026-09-03 16:16 ` Tejas Upadhyay
  2026-09-03 16:16 ` [PATCH V21 08/15] drm/xe/vram: Add page offline data structures and lifecycle Tejas Upadhyay
                   ` (12 subsequent siblings)
  19 siblings, 0 replies; 25+ messages in thread
From: Tejas Upadhyay @ 2026-09-03 16:16 UTC (permalink / raw)
  To: intel-xe
  Cc: himal.prasad.ghimiray, rodrigo.vivi, Matthew Brost,
	Tejas Upadhyay, Andi Shyti

Factor out xe_ttm_vram_buddy_alloc() and xe_ttm_vram_buddy_free()
from xe_ttm_vram_mgr_new() and xe_ttm_vram_mgr_del().

These new helpers consolidate block allocation/deallocation with
visible-size tracking. This modularization makes the logic reusable by
the upcoming VRAM page offlining reservation path.

No functional change.

Reviewed-by: Andi Shyti <andi.shyti@linux.intel.com>
Reviewed-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Signed-off-by: Tejas Upadhyay <tejas.upadhyay@intel.com>
---
 drivers/gpu/drm/xe/xe_ttm_vram_mgr.c | 90 ++++++++++++++++++----------
 1 file changed, 59 insertions(+), 31 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_ttm_vram_mgr.c b/drivers/gpu/drm/xe/xe_ttm_vram_mgr.c
index 0f9cf1c3a576..a5116dc05166 100644
--- a/drivers/gpu/drm/xe/xe_ttm_vram_mgr.c
+++ b/drivers/gpu/drm/xe/xe_ttm_vram_mgr.c
@@ -49,6 +49,48 @@ static inline bool xe_is_vram_mgr_blocks_contiguous(struct gpu_buddy *mm,
 	return true;
 }
 
+static int xe_ttm_vram_buddy_alloc(struct xe_ttm_vram_mgr *mgr, u64 start,
+				   u64 end, u64 size, u64 min_page_size,
+				   struct list_head *blocks, unsigned long flags,
+				   struct ttm_resource *res, u64 *used_visible)
+{
+	struct gpu_buddy *mm = &mgr->mm;
+	struct gpu_buddy_block *block;
+	int err;
+
+	err = gpu_buddy_alloc_blocks(mm, start, end, size, min_page_size, blocks, flags);
+	if (err)
+		return err;
+
+	/*
+	 * Track the owning resource, never the owning BO. A BO backpointer
+	 * cached here goes stale the moment TTM hands the resource to a ghost
+	 * object (ttm_buffer_object_transfer()), which happens on every
+	 * accelerated move and on pipelined gutting. The resource, in
+	 * contrast, has exactly the same lifetime as these blocks and TTM
+	 * keeps &ttm_resource.bo pointing at the current owner for us.
+	 */
+	list_for_each_entry(block, blocks, link)
+		block->private = res;
+
+	if (end <= mgr->visible_size) {
+		*used_visible = size;
+	} else {
+		list_for_each_entry(block, blocks, link) {
+			u64 blk_start = gpu_buddy_block_offset(block);
+
+			if (blk_start < mgr->visible_size) {
+				u64 blk_end = blk_start + gpu_buddy_block_size(mm, block);
+
+				*used_visible += min(blk_end, mgr->visible_size) - blk_start;
+			}
+		}
+	}
+
+	mgr->visible_avail -= *used_visible;
+	return 0;
+}
+
 static int xe_ttm_vram_mgr_new(struct ttm_resource_manager *man,
 			       struct ttm_buffer_object *tbo,
 			       const struct ttm_place *place,
@@ -57,7 +99,6 @@ static int xe_ttm_vram_mgr_new(struct ttm_resource_manager *man,
 	struct xe_ttm_vram_mgr *mgr = to_xe_ttm_vram_mgr(man);
 	struct xe_ttm_vram_mgr_resource *vres;
 	struct gpu_buddy *mm = &mgr->mm;
-	struct gpu_buddy_block *block;
 	u64 size, min_page_size;
 	unsigned long lpfn;
 	int err;
@@ -118,32 +159,12 @@ static int xe_ttm_vram_mgr_new(struct ttm_resource_manager *man,
 		goto error_unlock;
 	}
 
-	err = gpu_buddy_alloc_blocks(mm, (u64)place->fpfn << PAGE_SHIFT,
-				     (u64)lpfn << PAGE_SHIFT, size,
-				     min_page_size, &vres->blocks, vres->flags);
+	err = xe_ttm_vram_buddy_alloc(mgr, (u64)place->fpfn << PAGE_SHIFT,
+				      (u64)lpfn << PAGE_SHIFT, size,
+				      min_page_size, &vres->blocks, vres->flags,
+				      &vres->base, &vres->used_visible_size);
 	if (err)
 		goto error_unlock;
-
-	if (lpfn <= mgr->visible_size >> PAGE_SHIFT) {
-		vres->used_visible_size = size;
-	} else {
-		struct gpu_buddy_block *block;
-
-		list_for_each_entry(block, &vres->blocks, link) {
-			u64 start = gpu_buddy_block_offset(block);
-
-			if (start < mgr->visible_size) {
-				u64 end = start + gpu_buddy_block_size(mm, block);
-
-				vres->used_visible_size +=
-					min(end, mgr->visible_size) - start;
-			}
-		}
-	}
-
-	mgr->visible_avail -= vres->used_visible_size;
-	list_for_each_entry(block, &vres->blocks, link)
-		block->private = &vres->base;
 	mutex_unlock(&mgr->lock);
 
 	if (!(vres->base.placement & TTM_PL_FLAG_CONTIGUOUS) &&
@@ -175,20 +196,27 @@ static int xe_ttm_vram_mgr_new(struct ttm_resource_manager *man,
 	return err;
 }
 
+static void xe_ttm_vram_buddy_free(struct xe_ttm_vram_mgr *mgr,
+				   struct list_head *blocks,
+				   u64 used_visible)
+{
+	struct gpu_buddy_block *block;
+
+	list_for_each_entry(block, blocks, link)
+		block->private = NULL;
+	gpu_buddy_free_list(&mgr->mm, blocks, 0);
+	mgr->visible_avail += used_visible;
+}
+
 static void xe_ttm_vram_mgr_del(struct ttm_resource_manager *man,
 				struct ttm_resource *res)
 {
 	struct xe_ttm_vram_mgr_resource *vres =
 		to_xe_ttm_vram_mgr_resource(res);
 	struct xe_ttm_vram_mgr *mgr = to_xe_ttm_vram_mgr(man);
-	struct gpu_buddy *mm = &mgr->mm;
-	struct gpu_buddy_block *block;
 
 	mutex_lock(&mgr->lock);
-	list_for_each_entry(block, &vres->blocks, link)
-		block->private = NULL;
-	gpu_buddy_free_list(mm, &vres->blocks, 0);
-	mgr->visible_avail += vres->used_visible_size;
+	xe_ttm_vram_buddy_free(mgr, &vres->blocks, vres->used_visible_size);
 	mutex_unlock(&mgr->lock);
 
 	ttm_resource_fini(man, res);
-- 
2.52.0


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

* [PATCH V21 08/15] drm/xe/vram: Add page offline data structures and lifecycle
  2026-09-03 16:15 [PATCH V21 00/15] Add memory page offlining support Tejas Upadhyay
                   ` (6 preceding siblings ...)
  2026-09-03 16:16 ` [PATCH V21 07/15] drm/xe/vram: Extract buddy allocation and free helpers Tejas Upadhyay
@ 2026-09-03 16:16 ` Tejas Upadhyay
  2026-09-03 16:16 ` [PATCH V21 09/15] drm/xe/vram: Add VRAM page offline fault handler Tejas Upadhyay
                   ` (11 subsequent siblings)
  19 siblings, 0 replies; 25+ messages in thread
From: Tejas Upadhyay @ 2026-09-03 16:16 UTC (permalink / raw)
  To: intel-xe
  Cc: himal.prasad.ghimiray, rodrigo.vivi, Matthew Brost,
	Tejas Upadhyay, Andi Shyti

Add xe_ttm_vram_offline_resource to track individual offlined VRAM
pages, and extend xe_ttm_vram_mgr with offlined_pages/queued_pages
lists and their counters.

Initialize the lists in __xe_ttm_vram_mgr_init() and add
xe_ttm_vram_free_bad_pages() to release all tracked pages during
xe_ttm_vram_mgr_fini() teardown.

v3(Sashiko):
- Reorder xe_ttm_vram_buddy_free and list_del_rcu
- Introduce reservation status
v2(Himal):
- Address possible leak in xe_ttm_vram_mgr_fini()
- Remove unused dev and add comment for used_visible_size 0

Reviewed-by: Andi Shyti <andi.shyti@linux.intel.com>
Reviewed-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Signed-off-by: Tejas Upadhyay <tejas.upadhyay@intel.com>
---
 drivers/gpu/drm/xe/xe_ttm_vram_mgr.c       | 25 ++++++++++++++
 drivers/gpu/drm/xe/xe_ttm_vram_mgr_types.h | 38 ++++++++++++++++++++++
 2 files changed, 63 insertions(+)

diff --git a/drivers/gpu/drm/xe/xe_ttm_vram_mgr.c b/drivers/gpu/drm/xe/xe_ttm_vram_mgr.c
index a5116dc05166..d97739a84a2d 100644
--- a/drivers/gpu/drm/xe/xe_ttm_vram_mgr.c
+++ b/drivers/gpu/drm/xe/xe_ttm_vram_mgr.c
@@ -346,12 +346,35 @@ static void xe_ttm_vram_mgr_set_unused(struct drm_device *dev, void *arg)
 	ttm_resource_manager_set_used(man, false);
 }
 
+static void xe_ttm_vram_free_bad_pages(struct xe_ttm_vram_mgr *mgr)
+{
+	struct xe_ttm_vram_offline_resource *pos, *n;
+
+	list_for_each_entry_safe(pos, n, &mgr->offlined_pages, offlined_link) {
+		list_del_rcu(&pos->offlined_link);
+		xe_ttm_vram_buddy_free(mgr, &pos->blocks, pos->used_visible_size);
+		--mgr->n_offlined_pages;
+		kfree_rcu(pos, rcu);
+	}
+	list_for_each_entry_safe(pos, n, &mgr->queued_pages, queued_link) {
+		list_del_rcu(&pos->queued_link);
+		/* queued entries have no buddy reservation yet */
+		xe_ttm_vram_buddy_free(mgr, &pos->blocks, 0);
+		--mgr->n_queued_pages;
+		kfree_rcu(pos, rcu);
+	}
+}
+
 static void xe_ttm_vram_mgr_fini(struct drm_device *dev, void *arg)
 {
 	struct xe_device *xe = to_xe_device(dev);
 	struct xe_ttm_vram_mgr *mgr = arg;
 	struct ttm_resource_manager *man = &mgr->manager;
 
+	mutex_lock(&mgr->lock);
+	xe_ttm_vram_free_bad_pages(mgr);
+	mutex_unlock(&mgr->lock);
+
 	if (ttm_resource_manager_evict_all(&xe->ttm, man))
 		return;
 
@@ -378,6 +401,8 @@ int __xe_ttm_vram_mgr_init(struct xe_device *xe, struct xe_ttm_vram_mgr *mgr,
 	err = drmm_mutex_init(&xe->drm, &mgr->lock);
 	if (err)
 		return err;
+	INIT_LIST_HEAD(&mgr->offlined_pages);
+	INIT_LIST_HEAD(&mgr->queued_pages);
 	mgr->default_page_size = default_page_size;
 	mgr->visible_size = io_size;
 	mgr->visible_avail = io_size;
diff --git a/drivers/gpu/drm/xe/xe_ttm_vram_mgr_types.h b/drivers/gpu/drm/xe/xe_ttm_vram_mgr_types.h
index 9106da056b49..dc97b0ad0e51 100644
--- a/drivers/gpu/drm/xe/xe_ttm_vram_mgr_types.h
+++ b/drivers/gpu/drm/xe/xe_ttm_vram_mgr_types.h
@@ -19,6 +19,14 @@ struct xe_ttm_vram_mgr {
 	struct ttm_resource_manager manager;
 	/** @mm: DRM buddy allocator which manages the VRAM */
 	struct gpu_buddy mm;
+	/** @offlined_pages: List of offlined pages */
+	struct list_head offlined_pages;
+	/** @n_offlined_pages: Number of offlined pages */
+	u16 n_offlined_pages;
+	/** @queued_pages: List of queued pages */
+	struct list_head queued_pages;
+	/** @n_queued_pages: Number of queued pages */
+	u16 n_queued_pages;
 	/** @visible_size: Proped size of the CPU visible portion */
 	u64 visible_size;
 	/** @visible_avail: CPU visible portion still unallocated */
@@ -45,4 +53,34 @@ struct xe_ttm_vram_mgr_resource {
 	unsigned long flags;
 };
 
+/**
+ * enum xe_page_reserve_status - Buddy reservation status
+ * @XE_PAGE_RESERVE_PENDING: reservation in progress
+ * @XE_PAGE_RESERVE_FAIL: reservation failed
+ */
+enum xe_page_reserve_status {
+	XE_PAGE_RESERVE_PENDING = 0,
+	XE_PAGE_RESERVE_FAIL,
+};
+
+/**
+ * struct xe_ttm_vram_offline_resource - Tracks a single offlined VRAM page
+ */
+struct xe_ttm_vram_offline_resource {
+	/** @offlined_link: Link into mgr->offlined_pages */
+	struct list_head offlined_link;
+	/** @queued_link: Link into mgr->queued_pages */
+	struct list_head queued_link;
+	/** @blocks: Buddy blocks reserved for this page */
+	struct list_head blocks;
+	/** @used_visible_size: CPU-visible bytes consumed */
+	u64 used_visible_size;
+	/** @addr: Faulty DPA reported by HW */
+	u64 addr;
+	/** @status: buddy reservation status */
+	enum xe_page_reserve_status status;
+	/** @rcu: RCU head for deferred freeing */
+	struct rcu_head rcu;
+};
+
 #endif
-- 
2.52.0


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

* [PATCH V21 09/15] drm/xe/vram: Add VRAM page offline fault handler
  2026-09-03 16:15 [PATCH V21 00/15] Add memory page offlining support Tejas Upadhyay
                   ` (7 preceding siblings ...)
  2026-09-03 16:16 ` [PATCH V21 08/15] drm/xe/vram: Add page offline data structures and lifecycle Tejas Upadhyay
@ 2026-09-03 16:16 ` Tejas Upadhyay
  2026-09-03 17:23   ` sashiko-bot
  2026-09-03 16:16 ` [PATCH V21 10/15] drm/xe/configfs: Add disable_vram_page_offline attribute Tejas Upadhyay
                   ` (10 subsequent siblings)
  19 siblings, 1 reply; 25+ messages in thread
From: Tejas Upadhyay @ 2026-09-03 16:16 UTC (permalink / raw)
  To: intel-xe
  Cc: himal.prasad.ghimiray, rodrigo.vivi, Matthew Brost,
	Tejas Upadhyay, GitHub Copilot

Add the core VRAM page offlining logic to handle HW-reported faulty
physical addresses:

- xe_ttm_vram_purge_page(): Purges the BO containing the faulty
  address. Bans the associated VM (if page table BO) and exec queue
  (if LRC BO). Moves xe_exec_queue_kill() outside xe_bo_lock() to
  avoid AB-BA deadlock with vm->lock. Uses READ_ONCE(bo->q) to
  safely access the exec queue pointer.

- xe_ttm_vram_page_already_processed(): Checks if an address is
  already tracked in offlined_pages or queued_pages lists to avoid
  double-processing.

- xe_ttm_vram_reserve_page_at_addr(): Two-phase reservation that
  first queues the page, purges the BO outside the lock, then
  reserves the buddy block. Handles both allocated (BO present)
  and free page cases. Returns -EIO for critical kernel BOs to
  trigger system reset.

- xe_ttm_vram_addr_to_region(): Maps a DPA to its corresponding
  VRAM region. Checks if the address falls within usable space,
  or infrastructure zones (CCS, GSM, DSM) where it returns NULL
  to flag a reset path. If the target address is outside any
  known region returns ERR_PTR(-EOPNOTSUPP)

- xe_ttm_vram_handle_addr_fault(): Entry point called by RAS.
  Returns -EEXIST if already processed, -EIO for GSM/critical BO,
  -EOPNOTSUPP if out of bounds.

v15:
- Add immediate reservation for free pages
- Use lock before accessing tbo
v14(Sashiko/MattB):
- Retry queued pages during xe_ttm_vram_mgr_del()
- Move all changes to find owner of bo to its API
v13(Himal):
- Remove redundant code
v12(Sashiko):
- Handle multi tile and add assert for 4K align
- Remove unaligned action comment for ENXIO
v11(Himal):
- match everywhere with enum vs bool for status member
- Fix comment and remove unused var
- if purge fail let next alloc confirm failure
- pass absolute address, useful for multi tile

Co-authored-by: GitHub Copilot <copilot@github.com>
Reviewed-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Signed-off-by: Tejas Upadhyay <tejas.upadhyay@intel.com>
---
 drivers/gpu/drm/xe/xe_ttm_vram_mgr.c | 328 +++++++++++++++++++++++++++
 drivers/gpu/drm/xe/xe_ttm_vram_mgr.h |   1 +
 2 files changed, 329 insertions(+)

diff --git a/drivers/gpu/drm/xe/xe_ttm_vram_mgr.c b/drivers/gpu/drm/xe/xe_ttm_vram_mgr.c
index d97739a84a2d..aea4cb0b66fd 100644
--- a/drivers/gpu/drm/xe/xe_ttm_vram_mgr.c
+++ b/drivers/gpu/drm/xe/xe_ttm_vram_mgr.c
@@ -13,10 +13,16 @@
 #include <drm/ttm/ttm_placement.h>
 #include <drm/ttm/ttm_range_manager.h>
 
+#include "regs/xe_regs.h"
 #include "xe_bo.h"
+#include "xe_configfs.h"
 #include "xe_device.h"
+#include "xe_exec_queue.h"
+#include "xe_lrc.h"
+#include "xe_mmio.h"
 #include "xe_pm.h"
 #include "xe_res_cursor.h"
+#include "xe_ttm_stolen_mgr.h"
 #include "xe_ttm_vram_mgr.h"
 #include "xe_vram_types.h"
 
@@ -208,6 +214,38 @@ static void xe_ttm_vram_buddy_free(struct xe_ttm_vram_mgr *mgr,
 	mgr->visible_avail += used_visible;
 }
 
+/*
+ * Retry pending page-offline reservations.
+ *
+ * A reservation can fail because the blocks backing the bad page are still
+ * allocated: either the owning BO could not be purged, or the purge was
+ * pipelined and TTM handed the resource to a ghost object which frees it
+ * only once the move fences signal. Rather than giving up, entries stay on
+ * @queued_pages and are retried here every time VRAM blocks come back.
+ *
+ * Called with @mgr->lock held.
+ */
+static void xe_ttm_vram_retry_queued_pages(struct xe_ttm_vram_mgr *mgr)
+{
+	struct xe_ttm_vram_offline_resource *pos, *n;
+
+	lockdep_assert_held(&mgr->lock);
+
+	list_for_each_entry_safe(pos, n, &mgr->queued_pages, queued_link) {
+		if (xe_ttm_vram_buddy_alloc(mgr, pos->addr, pos->addr + PAGE_SIZE,
+					    PAGE_SIZE, PAGE_SIZE, &pos->blocks,
+					    GPU_BUDDY_RANGE_ALLOCATION, NULL,
+					    &pos->used_visible_size)) {
+			pos->status = XE_PAGE_RESERVE_FAIL;
+			continue;
+		}
+		--mgr->n_queued_pages;
+		list_del_rcu(&pos->queued_link);
+		++mgr->n_offlined_pages;
+		list_add_rcu(&pos->offlined_link, &mgr->offlined_pages);
+	}
+}
+
 static void xe_ttm_vram_mgr_del(struct ttm_resource_manager *man,
 				struct ttm_resource *res)
 {
@@ -217,6 +255,8 @@ static void xe_ttm_vram_mgr_del(struct ttm_resource_manager *man,
 
 	mutex_lock(&mgr->lock);
 	xe_ttm_vram_buddy_free(mgr, &vres->blocks, vres->used_visible_size);
+	if (unlikely(!list_empty(&mgr->queued_pages)))
+		xe_ttm_vram_retry_queued_pages(mgr);
 	mutex_unlock(&mgr->lock);
 
 	ttm_resource_fini(man, res);
@@ -580,3 +620,291 @@ u64 xe_ttm_vram_get_avail(struct ttm_resource_manager *man)
 
 	return avail;
 }
+
+static int xe_ttm_vram_purge_page(struct xe_device *xe, struct xe_bo *bo)
+{
+	struct ttm_operation_ctx ctx = {};
+	struct xe_exec_queue *q_to_put = NULL;
+	struct xe_exec_queue *q = NULL;
+	struct xe_vm *vm = NULL;
+	u32	flags;
+	int ret = 0;
+
+	xe_bo_lock(bo, false);
+	if (bo->vm)
+		vm = xe_vm_get(bo->vm);
+	flags = bo->flags;
+	xe_bo_unlock(bo);
+	/*  Ban VM if BO is PPGTT */
+	if (vm && (flags & XE_BO_FLAG_PAGETABLE)) {
+		down_write(&vm->lock);
+		xe_vm_kill(vm, true);
+		up_write(&vm->lock);
+	}
+	if (vm)
+		xe_vm_put(vm);
+
+	xe_bo_lock(bo, false);
+	q = READ_ONCE(bo->q);
+	/*  Ban exec queue if BO is lrc */
+	if (q && xe_exec_queue_get_unless_zero(q)) {
+		/* ban queue */
+		q_to_put = q;
+	}
+
+	if (bo->purgeable.state == XE_MADV_PURGEABLE_PURGED) {
+		/* Already purged by shrinker during unlocked window — nothing to do */
+		xe_bo_unlock(bo);
+		goto out;
+	}
+
+	xe_bo_set_purgeable_state(bo, XE_MADV_PURGEABLE_DONTNEED);
+	ttm_bo_unmap_virtual(&bo->ttm);   /* nuke CPU mmap + VRAM IO mappings */
+	if (xe_bo_is_pinned(bo))
+		xe_bo_unpin(bo);
+	ret = xe_ttm_bo_purge(&bo->ttm, &ctx);
+	xe_bo_unlock(bo);
+
+out:
+	if (q_to_put) {
+		xe_exec_queue_kill(q_to_put);
+		xe_exec_queue_put(q_to_put);
+	}
+
+	return ret;
+}
+
+static bool xe_ttm_vram_page_already_processed(struct xe_ttm_vram_mgr *mgr,
+					       u64 addr)
+{
+	struct xe_ttm_vram_offline_resource *pos;
+
+	lockdep_assert_held(&mgr->lock);
+
+	list_for_each_entry(pos, &mgr->offlined_pages, offlined_link) {
+		if (pos->addr == addr)
+			return true;
+	}
+
+	list_for_each_entry(pos, &mgr->queued_pages, queued_link) {
+		if (pos->addr == addr)
+			return true;
+	}
+
+	return false;
+}
+
+/*
+ * Resolve the BO currently owning @block and take a reference on it.
+ *
+ * Called with @mgr->lock held, which serializes against
+ * xe_ttm_vram_buddy_free() clearing block->private.
+ *
+ * Returns NULL when there is no xe_bo we can act on: either the block is
+ * free, or the resource is temporarily owned by a TTM ghost object because
+ * a move or a pipelined gutting is still in flight. In both cases the
+ * blocks will hit xe_ttm_vram_mgr_del() on their own and the pending
+ * reservation is retried from there.
+ */
+static struct xe_bo *xe_ttm_vram_block_owner_get(struct xe_device *xe,
+						 struct gpu_buddy_block *block)
+{
+	struct ttm_resource *res = block->private;
+	struct ttm_buffer_object *tbo;
+	struct xe_bo *bo;
+
+	if (!res)
+		return NULL;
+
+	guard(spinlock)(&xe->ttm.lru_lock);
+
+	/*
+	 * res->bo is updated under bdev->lru_lock by ttm_resource_set_bo().
+	 * Racing with a ghost transfer here is benign: we either see the old
+	 * owner (whose purge is a no-op and the retry path recovers) or the
+	 * ghost (rejected below).
+	 *
+	 * A ghost is a bare ttm_transfer_obj, not an xe_bo, so ttm_to_xe_bo()
+	 * on one would be out of bounds. xe_bo_is_xe_bo() rejects it since
+	 * only our own BOs carry xe_ttm_bo_destroy().
+	 */
+	tbo = READ_ONCE(res->bo);
+	if (!tbo || !xe_bo_is_xe_bo(tbo))
+		return NULL;
+
+	bo = ttm_to_xe_bo(tbo);
+
+	/* The BO may already be in teardown with a zero refcount */
+	return xe_bo_get_unless_zero(bo) ? bo : NULL;
+}
+
+static int xe_ttm_vram_reserve_page_at_addr(struct xe_device *xe, u64 addr,
+					    struct xe_ttm_vram_mgr *vram_mgr, struct gpu_buddy *mm)
+{
+	struct xe_ttm_vram_offline_resource *nentry;
+	struct xe_bo *pbo_to_put = NULL;
+	struct xe_bo *pbo = NULL;
+	struct gpu_buddy_block *block;
+	u64 size = PAGE_SIZE;
+	int ret = 0;
+
+	scoped_guard(mutex, &vram_mgr->lock) {
+		if (xe_ttm_vram_page_already_processed(vram_mgr, addr))
+			return -EEXIST;
+		block = gpu_buddy_allocated_addr_to_block(mm, addr);
+		if (WARN_ON(IS_ERR(block)))
+			return PTR_ERR(block);
+
+		nentry = kzalloc_obj(*nentry);
+		if (!nentry)
+			return -ENOMEM;
+		INIT_LIST_HEAD(&nentry->blocks);
+		nentry->status = XE_PAGE_RESERVE_PENDING;
+		nentry->addr = addr;
+
+		if (block) {
+			pbo = xe_ttm_vram_block_owner_get(xe, block);
+
+			/*
+			 * Critical kernel BO? Best-effort check without resv lock;
+			 * worst case a concurrent pin causes reset path unnecessarily.
+			 */
+			if (pbo && ((pbo->ttm.type == ttm_bo_type_kernel &&
+				     !(pbo->flags & XE_BO_FLAG_PINNED_LATE_RESTORE)) ||
+				    (xe_bo_is_user(pbo) && xe_bo_is_pinned(pbo)))) {
+				kfree(nentry);
+				pbo_to_put = pbo;
+				drm_err(&xe->drm,
+					"%s: addr: 0x%llx is critical kernel bo, requesting SBR\n",
+					__func__, addr);
+				break;
+			}
+			/* Queue free(to-be-purged) pages */
+			++vram_mgr->n_queued_pages;
+			list_add_rcu(&nentry->queued_link, &vram_mgr->queued_pages);
+		} else {
+			/* Immediately offline unoccupied pages */
+			/* Queue free(to-be-reserved) pages */
+			ret = xe_ttm_vram_buddy_alloc(vram_mgr, addr, addr + size,
+						      size, size, &nentry->blocks,
+						      GPU_BUDDY_RANGE_ALLOCATION,
+						      NULL, &nentry->used_visible_size);
+			if (ret) {
+				nentry->status = XE_PAGE_RESERVE_FAIL;
+				drm_dbg(&xe->drm,
+					"Page at addr:0x%llx still busy (%d), deferring reservation\n",
+					addr, ret);
+				++vram_mgr->n_queued_pages;
+				list_add_rcu(&nentry->queued_link, &vram_mgr->queued_pages);
+				return 0;
+			}
+			++vram_mgr->n_offlined_pages;
+			list_add_rcu(&nentry->offlined_link, &vram_mgr->offlined_pages);
+			return ret;
+		}
+	}
+
+	/* Deferred put outside lock to avoid recursive deadlock */
+	if (pbo_to_put) {
+		xe_bo_put(pbo_to_put);
+		/* Hint System controller driver for reset with -EIO  */
+		return -EIO;
+	}
+
+	if (pbo) {
+		/*
+		 * Purge BO containing address - reference held from above.
+		 * This does not necessarily free the blocks synchronously: if
+		 * the BO is not idle, ttm_bo_pipeline_gutting() hands the
+		 * resource to a ghost object and it is released only once the
+		 * move fences signal. The reservation below then fails and is
+		 * retried from xe_ttm_vram_mgr_del().
+		 */
+		ret = xe_ttm_vram_purge_page(xe, pbo);
+		xe_bo_put(pbo);
+		if (ret)
+			drm_warn(&xe->drm, "Purge failed at addr:0x%llx, ret:%d\n", addr, ret);
+	}
+
+	return 0;
+}
+
+static struct xe_vram_region *xe_ttm_vram_addr_to_region(struct xe_device *xe, u64 addr)
+{
+	struct xe_tile *tile;
+	u8 id;
+
+	for_each_tile(tile, xe, id) {
+		struct xe_vram_region *vr = tile->mem.vram;
+
+		if (!vr)
+			continue;
+
+		if (addr >= vr->dpa_base && addr < (vr->dpa_base + vr->usable_size))
+			return vr;
+
+		/* CCS, GSM, or DSM — infrastructure zone, needs reset */
+		if (addr >= (vr->dpa_base + vr->usable_size) &&
+		    addr < (vr->dpa_base + vr->actual_physical_size))
+			return NULL;
+	}
+
+	/*
+	 * Return an explicit error pointer so the caller knows the addr
+	 * is invalid and should be ignored, NOT SBR.
+	 */
+	return ERR_PTR(-EOPNOTSUPP);
+}
+
+/**
+ * xe_ttm_vram_handle_addr_fault - Handle vram physical address error flaged
+ * @xe: pointer to parent device
+ * @addr: physical faulty address
+ *
+ * Handle the physcial faulty address error on specific tile.
+ *
+ * Returns 0 for success, negative error code otherwise as follow:
+ * * %-EIO - critical BO or address outside any VRAM region; next action is reset.
+ * * %-EOPNOTSUPP - log-only policy or unknown address; no further action.
+ * * %-ENOMEM - allocation failure; next action is reset.
+ * * %-ENXIO - address not found in buddy; no further action.
+ * * %-EEXIST - address already processed; no further action.
+ *
+ * A return of 0 means the page is tracked. It may still be listed as
+ * pending if the blocks backing it could not be freed immediately; the
+ * reservation is then completed from xe_ttm_vram_mgr_del().
+ */
+int xe_ttm_vram_handle_addr_fault(struct xe_device *xe, u64 addr)
+{
+	struct xe_ttm_vram_mgr *vram_mgr;
+	struct xe_vram_region *vr;
+	struct gpu_buddy *mm;
+
+	/* Assert that the address is PAGE_SIZE aligned */
+	if (WARN_ON_ONCE(!IS_ALIGNED(addr, PAGE_SIZE))) {
+		drm_err(&xe->drm, "Address %llx is not %lu aligned!\n", addr, PAGE_SIZE);
+		return -EINVAL;
+	}
+
+	vr = xe_ttm_vram_addr_to_region(xe, addr);
+	if (IS_ERR(vr)) {
+		/*
+		 * The addr is outside VRAM and GSM.
+		 * Log a debug message if needed, and safely exit/ignore.
+		 */
+		drm_dbg(&xe->drm, "Address %llx is out of bounds, ignoring fault.\n", addr);
+		return PTR_ERR(vr);
+	}
+	if (!vr) {
+		drm_err(&xe->drm, "%s:%d GSM addr:%llx error requesting SBR\n",
+			__func__, __LINE__, addr);
+		/* Hint System controller driver for reset with -EIO  */
+		return -EIO;
+	}
+	vram_mgr = &vr->ttm;
+	mm = &vram_mgr->mm;
+
+	/* Reserve page at address */
+	return xe_ttm_vram_reserve_page_at_addr(xe, addr - vr->dpa_base, vram_mgr, mm);
+}
+EXPORT_SYMBOL(xe_ttm_vram_handle_addr_fault);
diff --git a/drivers/gpu/drm/xe/xe_ttm_vram_mgr.h b/drivers/gpu/drm/xe/xe_ttm_vram_mgr.h
index 87b7fae5edba..764d493b4d50 100644
--- a/drivers/gpu/drm/xe/xe_ttm_vram_mgr.h
+++ b/drivers/gpu/drm/xe/xe_ttm_vram_mgr.h
@@ -30,6 +30,7 @@ u64 xe_ttm_vram_get_avail(struct ttm_resource_manager *man);
 u64 xe_ttm_vram_get_cpu_visible_size(struct ttm_resource_manager *man);
 void xe_ttm_vram_get_used(struct ttm_resource_manager *man,
 			  u64 *used, u64 *used_visible);
+int xe_ttm_vram_handle_addr_fault(struct xe_device *xe, u64 addr);
 
 static inline struct xe_ttm_vram_mgr_resource *
 to_xe_ttm_vram_mgr_resource(struct ttm_resource *res)
-- 
2.52.0


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

* [PATCH V21 10/15] drm/xe/configfs: Add disable_vram_page_offline attribute
  2026-09-03 16:15 [PATCH V21 00/15] Add memory page offlining support Tejas Upadhyay
                   ` (8 preceding siblings ...)
  2026-09-03 16:16 ` [PATCH V21 09/15] drm/xe/vram: Add VRAM page offline fault handler Tejas Upadhyay
@ 2026-09-03 16:16 ` Tejas Upadhyay
  2026-09-03 16:16 ` [PATCH V21 11/15] drm/xe/ras: Cache disable_vram_page_offline policy at init Tejas Upadhyay
                   ` (9 subsequent siblings)
  19 siblings, 0 replies; 25+ messages in thread
From: Tejas Upadhyay @ 2026-09-03 16:16 UTC (permalink / raw)
  To: intel-xe
  Cc: himal.prasad.ghimiray, rodrigo.vivi, Matthew Brost,
	Tejas Upadhyay, Michal Wajdeczko

Add a new configfs attribute 'disable_vram_page_offline' to control
how bad VRAM pages are handled:
  0, n, N, false - Do not disable (Offlining is active - default)
  1, y, Y, true  - Disable vram page offline (Logging only)

The attribute can only be set before binding to the device and defaults
to false (offlining enabled). This gives administrators control over
whether corrupted VRAM pages detected by hardware (e.g., ECC errors)
are actively offlined or only logged.

v3(Sashiko):
- fix doc
v2(Sashiko):
- keep default value in case configfs not present

Reviewed-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
Signed-off-by: Tejas Upadhyay <tejas.upadhyay@intel.com>
---
 drivers/gpu/drm/xe/xe_configfs.c | 72 +++++++++++++++++++++++++++++++-
 drivers/gpu/drm/xe/xe_configfs.h |  2 +
 2 files changed, 73 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/xe/xe_configfs.c b/drivers/gpu/drm/xe/xe_configfs.c
index 052cce962161..f5c828cf7e8f 100644
--- a/drivers/gpu/drm/xe/xe_configfs.c
+++ b/drivers/gpu/drm/xe/xe_configfs.c
@@ -61,7 +61,8 @@
  *	    ├── survivability_mode
  *	    ├── gt_types_allowed
  *	    ├── engines_allowed
- *	    └── enable_psmi
+ *	    ├── enable_psmi
+ *	    └── disable_vram_page_offline
  *
  * After configuring the attributes as per next section, the device can be
  * probed with::
@@ -159,6 +160,18 @@
  *
  * This attribute can only be set before binding to the device.
  *
+ * Disable VRAM page offline:
+ * ----------------------------
+ *
+ *  0, n, N, false - Do not disable (Offlining is active - default)
+ *  1, y, Y, true  - Disable vram page offline (Logging only)
+ *
+ *  Example to disable VRAM offline::
+ *
+ *      # echo 1 > /sys/kernel/config/xe/0000:03:00.0/disable_vram_page_offline
+ *
+ * This attribute can only be set on CRI before binding to the device.
+ *
  * Context restore BB
  * ------------------
  *
@@ -275,6 +288,7 @@ struct xe_config_group_device {
 		bool survivability_mode;
 		bool enable_psmi;
 		bool enable_multi_queue;
+		bool disable_vram_page_offline;
 		struct {
 			unsigned int max_vfs;
 			bool admin_only_pf;
@@ -295,6 +309,7 @@ static const struct xe_config_device device_defaults = {
 	.survivability_mode = false,
 	.enable_psmi = false,
 	.enable_multi_queue = true,
+	.disable_vram_page_offline = false,
 	.sriov = {
 		.max_vfs = XE_DEFAULT_MAX_VFS,
 		.admin_only_pf = XE_DEFAULT_ADMIN_ONLY_PF,
@@ -616,6 +631,33 @@ static ssize_t enable_multi_queue_store(struct config_item *item, const char *pa
 	return len;
 }
 
+static ssize_t disable_vram_page_offline_show(struct config_item *item, char *page)
+{
+	struct xe_config_device *dev = to_xe_config_device(item);
+
+	return sprintf(page, "%s\n", str_yes_no(dev->disable_vram_page_offline));
+}
+
+static ssize_t disable_vram_page_offline_store(struct config_item *item,
+					       const char *page, size_t len)
+{
+	struct xe_config_group_device *dev = to_xe_config_group_device(item);
+	bool val;
+	int ret;
+
+	ret = kstrtobool(page, &val);
+	if (ret)
+		return ret;
+
+	guard(mutex)(&dev->lock);
+	if (is_bound(dev))
+		return -EBUSY;
+
+	dev->config.disable_vram_page_offline = val;
+
+	return len;
+}
+
 static bool wa_bb_read_advance(bool dereference, char **p,
 			       const char *append, size_t len,
 			       size_t *max_size)
@@ -855,6 +897,7 @@ CONFIGFS_ATTR(, ctx_restore_mid_bb);
 CONFIGFS_ATTR(, ctx_restore_post_bb);
 CONFIGFS_ATTR(, enable_multi_queue);
 CONFIGFS_ATTR(, enable_psmi);
+CONFIGFS_ATTR(, disable_vram_page_offline);
 CONFIGFS_ATTR(, engines_allowed);
 CONFIGFS_ATTR(, gt_types_allowed);
 CONFIGFS_ATTR(, survivability_mode);
@@ -864,6 +907,7 @@ static struct configfs_attribute *xe_config_device_attrs[] = {
 	&attr_ctx_restore_post_bb,
 	&attr_enable_multi_queue,
 	&attr_enable_psmi,
+	&attr_disable_vram_page_offline,
 	&attr_engines_allowed,
 	&attr_gt_types_allowed,
 	&attr_survivability_mode,
@@ -895,6 +939,11 @@ static bool xe_config_device_is_visible(struct config_item *item,
 			return false;
 	}
 
+	if (attr == &attr_disable_vram_page_offline) {
+		if (!dev->desc->is_dgfx || dev->desc->platform != XE_CRESCENTISLAND)
+			return false;
+	}
+
 	return true;
 }
 
@@ -1142,6 +1191,7 @@ static void dump_custom_dev_config(struct pci_dev *pdev,
 	PRI_CUSTOM_ATTR("%llx", engines_allowed);
 	PRI_CUSTOM_ATTR("%d", enable_multi_queue);
 	PRI_CUSTOM_ATTR("%d", enable_psmi);
+	PRI_CUSTOM_ATTR("%d", disable_vram_page_offline);
 	PRI_CUSTOM_ATTR("%d", survivability_mode);
 	PRI_CUSTOM_ATTR("%u", sriov.admin_only_pf);
 
@@ -1290,6 +1340,26 @@ bool xe_configfs_get_enable_multi_queue(struct pci_dev *pdev)
 	return ret;
 }
 
+/**
+ * xe_configfs_get_disable_vram_page_offline - get configfs disable_vram_page_offline setting
+ * @pdev: pci device
+ *
+ * Return: disable_vram_page_offline setting in configfs
+ */
+bool xe_configfs_get_disable_vram_page_offline(struct pci_dev *pdev)
+{
+	struct xe_config_group_device *dev = find_xe_config_group_device(pdev);
+	bool ret;
+
+	if (!dev)
+		return device_defaults.disable_vram_page_offline;
+
+	ret = dev->config.disable_vram_page_offline;
+	config_group_put(&dev->group);
+
+	return ret;
+}
+
 /**
  * xe_configfs_get_ctx_restore_mid_bb - get configfs ctx_restore_mid_bb setting
  * @pdev: pci device
diff --git a/drivers/gpu/drm/xe/xe_configfs.h b/drivers/gpu/drm/xe/xe_configfs.h
index 4fbbeafba473..42cd1a491d01 100644
--- a/drivers/gpu/drm/xe/xe_configfs.h
+++ b/drivers/gpu/drm/xe/xe_configfs.h
@@ -24,6 +24,7 @@ bool xe_configfs_media_gt_allowed(struct pci_dev *pdev);
 u64 xe_configfs_get_engines_allowed(struct pci_dev *pdev);
 bool xe_configfs_get_psmi_enabled(struct pci_dev *pdev);
 bool xe_configfs_get_enable_multi_queue(struct pci_dev *pdev);
+bool xe_configfs_get_disable_vram_page_offline(struct pci_dev *pdev);
 u32 xe_configfs_get_ctx_restore_mid_bb(struct pci_dev *pdev,
 				       enum xe_engine_class class,
 				       const u32 **cs);
@@ -44,6 +45,7 @@ static inline bool xe_configfs_media_gt_allowed(struct pci_dev *pdev) { return t
 static inline u64 xe_configfs_get_engines_allowed(struct pci_dev *pdev) { return U64_MAX; }
 static inline bool xe_configfs_get_psmi_enabled(struct pci_dev *pdev) { return false; }
 static inline bool xe_configfs_get_enable_multi_queue(struct pci_dev *pdev) { return true; }
+static inline bool xe_configfs_get_disable_vram_page_offline(struct pci_dev *pdev) { return false; }
 static inline u32 xe_configfs_get_ctx_restore_mid_bb(struct pci_dev *pdev,
 						     enum xe_engine_class class,
 						     const u32 **cs) { return 0; }
-- 
2.52.0


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

* [PATCH V21 11/15] drm/xe/ras: Cache disable_vram_page_offline policy at init
  2026-09-03 16:15 [PATCH V21 00/15] Add memory page offlining support Tejas Upadhyay
                   ` (9 preceding siblings ...)
  2026-09-03 16:16 ` [PATCH V21 10/15] drm/xe/configfs: Add disable_vram_page_offline attribute Tejas Upadhyay
@ 2026-09-03 16:16 ` Tejas Upadhyay
  2026-09-03 16:16 ` [PATCH V21 12/15] drm/xe/vram: Check disable_vram_page_offline policy in fault handler Tejas Upadhyay
                   ` (8 subsequent siblings)
  19 siblings, 0 replies; 25+ messages in thread
From: Tejas Upadhyay @ 2026-09-03 16:16 UTC (permalink / raw)
  To: intel-xe
  Cc: himal.prasad.ghimiray, rodrigo.vivi, Matthew Brost,
	Tejas Upadhyay, Michal Wajdeczko

The configfs disable_vram_page_offline attribute can only be
set before device bind, so its value is immutable at runtime.
Cache it in struct xe_drm_ras during xe_ras_init() to avoid
repeated configfs lookups on every fault.

Reviewed-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
Signed-off-by: Tejas Upadhyay <tejas.upadhyay@intel.com>
---
 drivers/gpu/drm/xe/xe_drm_ras_types.h | 3 +++
 drivers/gpu/drm/xe/xe_ras.c           | 9 +++++++++
 2 files changed, 12 insertions(+)

diff --git a/drivers/gpu/drm/xe/xe_drm_ras_types.h b/drivers/gpu/drm/xe/xe_drm_ras_types.h
index 8d729ad6a264..0be218ba2db7 100644
--- a/drivers/gpu/drm/xe/xe_drm_ras_types.h
+++ b/drivers/gpu/drm/xe/xe_drm_ras_types.h
@@ -43,6 +43,9 @@ struct xe_drm_ras {
 
 	/** @info: info array for all types of errors */
 	struct xe_drm_ras_counter *info[DRM_XE_RAS_ERR_SEV_MAX];
+
+	/** @disable_vram_page_offline: cached configfs policy, immutable after init */
+	bool disable_vram_page_offline;
 };
 
 #endif
diff --git a/drivers/gpu/drm/xe/xe_ras.c b/drivers/gpu/drm/xe/xe_ras.c
index de4cb9ef7355..7a85735c57d5 100644
--- a/drivers/gpu/drm/xe/xe_ras.c
+++ b/drivers/gpu/drm/xe/xe_ras.c
@@ -3,6 +3,7 @@
  * Copyright © 2026 Intel Corporation
  */
 
+#include "xe_configfs.h"
 #include "xe_debugfs.h"
 #include "xe_device.h"
 #include "xe_drm_ras.h"
@@ -915,6 +916,14 @@ void xe_ras_init(struct xe_device *xe)
 {
 	int ret;
 
+	/*
+	 * TODO: Replace platform check with xe->info.has_disable_vram_page_offline
+	 * once the feature flag is plumbed through device info.
+	 */
+	if (xe->info.platform == XE_CRESCENTISLAND)
+		xe->ras.disable_vram_page_offline =
+			xe_configfs_get_disable_vram_page_offline(to_pci_dev(xe->drm.dev));
+
 	xe_drm_ras_init(xe);
 
 	if (!xe->info.has_sysctrl)
-- 
2.52.0


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

* [PATCH V21 12/15] drm/xe/vram: Check disable_vram_page_offline policy in fault handler
  2026-09-03 16:15 [PATCH V21 00/15] Add memory page offlining support Tejas Upadhyay
                   ` (10 preceding siblings ...)
  2026-09-03 16:16 ` [PATCH V21 11/15] drm/xe/ras: Cache disable_vram_page_offline policy at init Tejas Upadhyay
@ 2026-09-03 16:16 ` Tejas Upadhyay
  2026-09-03 16:16 ` [PATCH V21 13/15] drm/xe: Expose bad VRAM pages via debugfs Tejas Upadhyay
                   ` (7 subsequent siblings)
  19 siblings, 0 replies; 25+ messages in thread
From: Tejas Upadhyay @ 2026-09-03 16:16 UTC (permalink / raw)
  To: intel-xe
  Cc: himal.prasad.ghimiray, rodrigo.vivi, Matthew Brost,
	Tejas Upadhyay, Michal Wajdeczko

Before reserving a page at a faulting address, check the cached
disable_vram_page_offline policy from xe->ras. If the policy is
enabled (logging only), log the corrupted address and return
-EOPNOTSUPP so that RAS can report to firmware to drop the
address from the SRAM queue without attempting to offline the
page.

Reviewed-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
Signed-off-by: Tejas Upadhyay <tejas.upadhyay@intel.com>
---
 drivers/gpu/drm/xe/xe_ttm_vram_mgr.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/drivers/gpu/drm/xe/xe_ttm_vram_mgr.c b/drivers/gpu/drm/xe/xe_ttm_vram_mgr.c
index aea4cb0b66fd..f4810cb961df 100644
--- a/drivers/gpu/drm/xe/xe_ttm_vram_mgr.c
+++ b/drivers/gpu/drm/xe/xe_ttm_vram_mgr.c
@@ -21,6 +21,7 @@
 #include "xe_lrc.h"
 #include "xe_mmio.h"
 #include "xe_pm.h"
+#include "xe_printk.h"
 #include "xe_res_cursor.h"
 #include "xe_ttm_stolen_mgr.h"
 #include "xe_ttm_vram_mgr.h"
@@ -904,6 +905,12 @@ int xe_ttm_vram_handle_addr_fault(struct xe_device *xe, u64 addr)
 	vram_mgr = &vr->ttm;
 	mm = &vram_mgr->mm;
 
+	if (xe->ras.disable_vram_page_offline) {
+		xe_err(xe, "0x%llx is reported as corrupted address by HW\n",
+		       addr);
+		return -EOPNOTSUPP;
+	}
+
 	/* Reserve page at address */
 	return xe_ttm_vram_reserve_page_at_addr(xe, addr - vr->dpa_base, vram_mgr, mm);
 }
-- 
2.52.0


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

* [PATCH V21 13/15] drm/xe: Expose bad VRAM pages via debugfs
  2026-09-03 16:15 [PATCH V21 00/15] Add memory page offlining support Tejas Upadhyay
                   ` (11 preceding siblings ...)
  2026-09-03 16:16 ` [PATCH V21 12/15] drm/xe/vram: Check disable_vram_page_offline policy in fault handler Tejas Upadhyay
@ 2026-09-03 16:16 ` Tejas Upadhyay
  2026-09-03 16:16 ` [PATCH V21 14/15] drm/xe/uapi: Expose ban reason in EXEC_QUEUE_GET_PROPERTY_BAN Tejas Upadhyay
                   ` (6 subsequent siblings)
  19 siblings, 0 replies; 25+ messages in thread
From: Tejas Upadhyay @ 2026-09-03 16:16 UTC (permalink / raw)
  To: intel-xe
  Cc: himal.prasad.ghimiray, rodrigo.vivi, Matthew Brost,
	Tejas Upadhyay, Michal Wajdeczko

Add a debugfs file "vram_bad_pages" that shows offlined and queued
VRAM pages across all tiles. Each entry displays the page frame number,
GPU page size, and status flag (R=reserved, P=pending, F=failed).

example,
cat /sys/kernel/debug/dri/0/vram_bad_pages

max_pages: 10000
0x0000000000000000 : 0x0000000000001000 : R
0x0000000000001234 : 0x0000000000001000 : P
0x0000000000080000 : 0x0000000000001000 : R   ← tile 1 addr

v3(Michal):
-add kernel doc
v2(Sashikoi/Michal/Himal):
-Remove block iteration, use offline and queue list only
-Move platform check inside api

Reviewed-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
Signed-off-by: Tejas Upadhyay <tejas.upadhyay@intel.com>
---
 drivers/gpu/drm/xe/xe_debugfs.c            |  3 +
 drivers/gpu/drm/xe/xe_ttm_vram_mgr.c       | 71 ++++++++++++++++++++++
 drivers/gpu/drm/xe/xe_ttm_vram_mgr.h       |  1 +
 drivers/gpu/drm/xe/xe_ttm_vram_mgr_types.h |  2 +
 4 files changed, 77 insertions(+)

diff --git a/drivers/gpu/drm/xe/xe_debugfs.c b/drivers/gpu/drm/xe/xe_debugfs.c
index 28135f84e286..cb24e001b142 100644
--- a/drivers/gpu/drm/xe/xe_debugfs.c
+++ b/drivers/gpu/drm/xe/xe_debugfs.c
@@ -32,6 +32,7 @@
 #include "xe_sriov_vf.h"
 #include "xe_step.h"
 #include "xe_tile_debugfs.h"
+#include "xe_ttm_vram_mgr.h"
 #include "xe_vsec.h"
 #include "xe_wa.h"
 
@@ -773,6 +774,8 @@ void xe_debugfs_register(struct xe_device *xe)
 	if (man)
 		ttm_resource_manager_create_debugfs(man, root, "stolen_mm");
 
+	xe_ttm_vram_debugfs_init(xe, root);
+
 	for_each_tile(tile, xe, tile_id)
 		xe_tile_debugfs_register(tile);
 
diff --git a/drivers/gpu/drm/xe/xe_ttm_vram_mgr.c b/drivers/gpu/drm/xe/xe_ttm_vram_mgr.c
index f4810cb961df..3dcee4590126 100644
--- a/drivers/gpu/drm/xe/xe_ttm_vram_mgr.c
+++ b/drivers/gpu/drm/xe/xe_ttm_vram_mgr.c
@@ -5,6 +5,7 @@
  */
 
 #include <linux/cgroup_dmem.h>
+#include <linux/debugfs.h>
 
 #include <drm/drm_managed.h>
 #include <drm/drm_drv.h>
@@ -915,3 +916,73 @@ int xe_ttm_vram_handle_addr_fault(struct xe_device *xe, u64 addr)
 	return xe_ttm_vram_reserve_page_at_addr(xe, addr - vr->dpa_base, vram_mgr, mm);
 }
 EXPORT_SYMBOL(xe_ttm_vram_handle_addr_fault);
+
+static int vram_bad_pages_show(struct seq_file *m, void *unused)
+{
+	struct xe_device *xe = m->private;
+	struct xe_ttm_vram_offline_resource *pos;
+	struct ttm_resource_manager *man;
+	struct xe_ttm_vram_mgr *mgr;
+	struct xe_tile *tile;
+	u8 id;
+
+	man = ttm_manager_type(&xe->ttm, XE_PL_VRAM0);
+	if (man)
+		/* TODO Hook with RAS to show max_pages fetched from FW */
+		seq_printf(m, "max_pages: %d\n",
+			   to_xe_ttm_vram_mgr(man)->max_pages);
+
+	for_each_tile(tile, xe, id) {
+		struct xe_vram_region *vr = tile->mem.vram;
+
+		man = ttm_manager_type(&xe->ttm, XE_PL_VRAM0 + id);
+		if (!man || !vr)
+			continue;
+		mgr = to_xe_ttm_vram_mgr(man);
+
+		rcu_read_lock();
+
+		list_for_each_entry_rcu(pos, &mgr->offlined_pages, offlined_link) {
+			u64 pfn;
+
+			pfn = (pos->addr + vr->dpa_base) >> PAGE_SHIFT;
+			seq_printf(m, "0x%016llx : 0x%016lx : R\n", pfn, PAGE_SIZE);
+		}
+
+		list_for_each_entry_rcu(pos, &mgr->queued_pages, queued_link) {
+			u64 pfn;
+
+			pfn = (pos->addr + vr->dpa_base) >> PAGE_SHIFT;
+			seq_printf(m, "0x%016llx : 0x%016lx : %c\n",
+				   pfn, PAGE_SIZE, pos->status ? 'F' : 'P');
+		}
+
+		rcu_read_unlock();
+	}
+
+	return 0;
+}
+DEFINE_SHOW_ATTRIBUTE(vram_bad_pages);
+
+/**
+ * xe_ttm_vram_debugfs_init - Initialize VRAM debugfs interfaces
+ * @xe: The xe device structure pointer
+ * @root: The root dentry of the debugfs directory
+ *
+ * This function registers platform-specific VRAM debugfs files used for
+ * testing and debugging. Currently, it exposes the "vram_bad_pages" interface
+ * to inspect marked faulty memory pages, restricted specifically to the
+ * %XE_CRESCENTISLAND platform.
+ *
+ * Return: Void.
+ */
+void xe_ttm_vram_debugfs_init(struct xe_device *xe, struct dentry *root)
+{
+	/*
+	 * TODO: Replace platform check with xe->info
+	 * once the feature flag is plumbed through device info.
+	 */
+	if (xe->info.platform != XE_CRESCENTISLAND)
+		return;
+	debugfs_create_file("vram_bad_pages", 0444, root, xe, &vram_bad_pages_fops);
+}
diff --git a/drivers/gpu/drm/xe/xe_ttm_vram_mgr.h b/drivers/gpu/drm/xe/xe_ttm_vram_mgr.h
index 764d493b4d50..48f39fd20e44 100644
--- a/drivers/gpu/drm/xe/xe_ttm_vram_mgr.h
+++ b/drivers/gpu/drm/xe/xe_ttm_vram_mgr.h
@@ -17,6 +17,7 @@ int __xe_ttm_vram_mgr_init(struct xe_device *xe, struct xe_ttm_vram_mgr *mgr,
 			   u32 mem_type, u64 size, u64 io_size,
 			   u64 default_page_size);
 int xe_ttm_vram_mgr_init(struct xe_device *xe, struct xe_vram_region *vram);
+void xe_ttm_vram_debugfs_init(struct xe_device *xe, struct dentry *root);
 int xe_ttm_vram_mgr_alloc_sgt(struct xe_device *xe,
 			      struct ttm_resource *res,
 			      u64 offset, u64 length,
diff --git a/drivers/gpu/drm/xe/xe_ttm_vram_mgr_types.h b/drivers/gpu/drm/xe/xe_ttm_vram_mgr_types.h
index dc97b0ad0e51..efcf3e1d4e80 100644
--- a/drivers/gpu/drm/xe/xe_ttm_vram_mgr_types.h
+++ b/drivers/gpu/drm/xe/xe_ttm_vram_mgr_types.h
@@ -37,6 +37,8 @@ struct xe_ttm_vram_mgr {
 	struct mutex lock;
 	/** @mem_type: The TTM memory type */
 	u32 mem_type;
+	/** @max_pages: max pages that can be in offline queue retrieved from FW */
+	u16 max_pages;
 };
 
 /**
-- 
2.52.0


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

* [PATCH V21 14/15] drm/xe/uapi: Expose ban reason in EXEC_QUEUE_GET_PROPERTY_BAN
  2026-09-03 16:15 [PATCH V21 00/15] Add memory page offlining support Tejas Upadhyay
                   ` (12 preceding siblings ...)
  2026-09-03 16:16 ` [PATCH V21 13/15] drm/xe: Expose bad VRAM pages via debugfs Tejas Upadhyay
@ 2026-09-03 16:16 ` Tejas Upadhyay
  2026-09-03 17:46   ` sashiko-bot
  2026-09-03 16:16 ` [PATCH V21 15/15] drm/xe: Add fault-inject based VRAM page offline injection Tejas Upadhyay
                   ` (5 subsequent siblings)
  19 siblings, 1 reply; 25+ messages in thread
From: Tejas Upadhyay @ 2026-09-03 16:16 UTC (permalink / raw)
  To: intel-xe
  Cc: himal.prasad.ghimiray, rodrigo.vivi, Matthew Brost,
	Tejas Upadhyay, José Roberto de Souza, Michal Mrozek

Extend DRM_XE_EXEC_QUEUE_GET_PROPERTY_BAN to return a bitmask indicating
the reason for the ban, rather than a simple boolean. This allows
userspace to distinguish between different ban causes:

- DRM_XE_EXEC_QUEUE_BAN_REASON_GPU_HANG (bit 0): exec queue was banned
  due to a GPU hang or job timeout detected by the TDR.
- DRM_XE_EXEC_QUEUE_BAN_REASON_PAGE_OFFLINE (bit 1): exec queue was
  banned because a VRAM page backing its resources was taken offline.

The ban_reason field is added to struct xe_exec_queue and set at the
point where the ban is triggered:
- In guc_exec_queue_timedout_job() for GPU hang.
- In xe_ttm_vram_purge_page() for memory page offline, before calling
  xe_exec_queue_kill() or xe_vm_kill().

The reset_status op is updated to return u64 with the reason bitmask.
When a queue is banned but no explicit reason was recorded (e.g., from a
generic CAT error), it defaults to GPU_HANG for backward compatibility.
A value of 0 means the exec queue is not banned.

v5 (Sashiko/MattB):
- Take the write lock for the traversal to tag ban_reason
v4(Sashiko):
- Add ban reason for non-LR exec queues
- Add TODO for multiqueue
v3(Rodrigo):
- Add doc in xe_drm.h
v2(Sashiko):
- Use atomic_t for ban_reason to fix concurrent updates from TDR and
  page-offline
- Guard GPU_HANG bit with !exec_queue_killed to avoid masking
  page-offline reason
- Clear ban_reason on queue recovery (clear_exec_queue_banned path)
- Use atomic_read in guc_exec_queue_reset_status for lockless read

Assisted-by: Copilot:claude-opus-4.6
Acked-by: José Roberto de Souza <jose.souza@intel.com>
Acked-by: Michal Mrozek <michal.mrozek@intel.com>
Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Reviewed-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Signed-off-by: Tejas Upadhyay <tejas.upadhyay@intel.com>
---
 drivers/gpu/drm/xe/xe_exec_queue_types.h |  7 +++--
 drivers/gpu/drm/xe/xe_execlist.c         |  4 +--
 drivers/gpu/drm/xe/xe_guc_submit.c       | 36 ++++++++++++++++++++----
 drivers/gpu/drm/xe/xe_ttm_vram_mgr.c     | 27 ++++++++++++++++++
 include/uapi/drm/xe_drm.h                | 18 +++++++++++-
 5 files changed, 82 insertions(+), 10 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_exec_queue_types.h b/drivers/gpu/drm/xe/xe_exec_queue_types.h
index 95f75d61a647..836f88fc0faa 100644
--- a/drivers/gpu/drm/xe/xe_exec_queue_types.h
+++ b/drivers/gpu/drm/xe/xe_exec_queue_types.h
@@ -154,6 +154,9 @@ struct xe_exec_queue {
 	 */
 	unsigned long flags;
 
+	/** @ban_reason: Bitmask of ban reasons (DRM_XE_EXEC_QUEUE_BAN_REASON_*) */
+	atomic_t ban_reason;
+
 	union {
 		/** @multi_gt_list: list head for VM bind engines if multi-GT */
 		struct list_head multi_gt_list;
@@ -348,8 +351,8 @@ struct xe_exec_queue_ops {
 	 * signalled when this function is called.
 	 */
 	void (*resume)(struct xe_exec_queue *q);
-	/** @reset_status: check exec queue reset status */
-	bool (*reset_status)(struct xe_exec_queue *q);
+	/** @reset_status: check exec queue ban status, returns ban reason bitmask */
+	u64 (*reset_status)(struct xe_exec_queue *q);
 };
 
 #endif
diff --git a/drivers/gpu/drm/xe/xe_execlist.c b/drivers/gpu/drm/xe/xe_execlist.c
index 0d0db66c6ea2..a36db39dcda8 100644
--- a/drivers/gpu/drm/xe/xe_execlist.c
+++ b/drivers/gpu/drm/xe/xe_execlist.c
@@ -453,10 +453,10 @@ static void execlist_exec_queue_resume(struct xe_exec_queue *q)
 	/* NIY */
 }
 
-static bool execlist_exec_queue_reset_status(struct xe_exec_queue *q)
+static u64 execlist_exec_queue_reset_status(struct xe_exec_queue *q)
 {
 	/* NIY */
-	return false;
+	return 0;
 }
 
 static const struct xe_exec_queue_ops execlist_exec_queue_ops = {
diff --git a/drivers/gpu/drm/xe/xe_guc_submit.c b/drivers/gpu/drm/xe/xe_guc_submit.c
index 99d8c807ff05..0a6e2b81b5a5 100644
--- a/drivers/gpu/drm/xe/xe_guc_submit.c
+++ b/drivers/gpu/drm/xe/xe_guc_submit.c
@@ -6,6 +6,7 @@
 #include "xe_guc_submit.h"
 
 #include <linux/bitfield.h>
+#include <uapi/drm/xe_drm.h>
 #include <linux/bitmap.h>
 #include <linux/circ_buf.h>
 #include <linux/dma-fence-array.h>
@@ -1599,6 +1600,12 @@ guc_exec_queue_timedout_job(struct drm_sched_job *drm_job)
 	else
 		wedged = xe_device_wedged(xe);
 
+	/*
+	 * Only tag as GPU hang if this is the original timeout, not a
+	 * consequence of a prior kill (e.g., page-offline).
+	 */
+	if (!exec_queue_killed(q))
+		atomic_or(DRM_XE_EXEC_QUEUE_BAN_REASON_GPU_HANG, &q->ban_reason);
 	set_exec_queue_banned(q);
 
 	/* Kick job / queue off hardware */
@@ -1682,6 +1689,9 @@ guc_exec_queue_timedout_job(struct drm_sched_job *drm_job)
 		if (timeout_needs_gt_reset(q, job, skip_timeout_check)) {
 			if (!xe_sched_invalidate_job(job, 2)) {
 				clear_exec_queue_banned(q);
+				/* protect concurrent page offline reasons */
+				atomic_andnot(DRM_XE_EXEC_QUEUE_BAN_REASON_GPU_HANG,
+					      &q->ban_reason);
 				xe_gt_reset_async(q->gt);
 				goto rearm;
 			}
@@ -2580,13 +2590,29 @@ static void guc_exec_queue_multi_queue_drop_suspend(struct xe_exec_queue *q)
 	}
 }
 
-static bool guc_exec_queue_reset_status(struct xe_exec_queue *q)
+static u64 guc_exec_queue_reset_status(struct xe_exec_queue *q)
 {
-	if (xe_exec_queue_is_multi_queue_secondary(q) &&
-	    guc_exec_queue_reset_status(xe_exec_queue_multi_queue_primary(q)))
-		return true;
+	/* TODO: In case of multiqueue, if a secondary queue is banned due to
+	 * page offlining, checking only the primary queue's GuC reset status
+	 * may mask the true reason or race with it.
+	 */
+	if (xe_exec_queue_is_multi_queue_secondary(q)) {
+		u64 status = guc_exec_queue_reset_status(xe_exec_queue_multi_queue_primary(q));
 
-	return exec_queue_reset(q) || exec_queue_killed_or_banned_or_wedged(q);
+		if (status)
+			return status;
+	}
+
+	if (exec_queue_reset(q) || exec_queue_killed_or_banned_or_wedged(q)) {
+		u64 reason = atomic_read_acquire(&q->ban_reason);
+
+		/* If no specific reason was recorded, default to GPU hang */
+		if (!reason)
+			reason = DRM_XE_EXEC_QUEUE_BAN_REASON_GPU_HANG;
+		return reason;
+	}
+
+	return 0;
 }
 
 /*
diff --git a/drivers/gpu/drm/xe/xe_ttm_vram_mgr.c b/drivers/gpu/drm/xe/xe_ttm_vram_mgr.c
index 3dcee4590126..6aa24eb064eb 100644
--- a/drivers/gpu/drm/xe/xe_ttm_vram_mgr.c
+++ b/drivers/gpu/drm/xe/xe_ttm_vram_mgr.c
@@ -10,6 +10,7 @@
 #include <drm/drm_managed.h>
 #include <drm/drm_drv.h>
 #include <drm/drm_buddy.h>
+#include <uapi/drm/xe_drm.h>
 
 #include <drm/ttm/ttm_placement.h>
 #include <drm/ttm/ttm_range_manager.h>
@@ -625,6 +626,7 @@ u64 xe_ttm_vram_get_avail(struct ttm_resource_manager *man)
 
 static int xe_ttm_vram_purge_page(struct xe_device *xe, struct xe_bo *bo)
 {
+	u32 q_flag = DRM_XE_EXEC_QUEUE_BAN_REASON_PAGE_OFFLINE;
 	struct ttm_operation_ctx ctx = {};
 	struct xe_exec_queue *q_to_put = NULL;
 	struct xe_exec_queue *q = NULL;
@@ -639,7 +641,30 @@ static int xe_ttm_vram_purge_page(struct xe_device *xe, struct xe_bo *bo)
 	xe_bo_unlock(bo);
 	/*  Ban VM if BO is PPGTT */
 	if (vm && (flags & XE_BO_FLAG_PAGETABLE)) {
+		struct xe_exec_queue *eq;
+		int id;
+
 		down_write(&vm->lock);
+		if (xe->info.has_ctx_tlb_inval) {
+			/*
+			 * Must be the write lock: send_tlb_inval_ctx_ppgtt()
+			 * mutates this list (list_move_tail() onto an on-stack
+			 * head) while holding only the read lock, relying on
+			 * tlb_inval->seqno_lock to keep itself the sole
+			 * mutator. Traversing it under down_read() would let
+			 * this walk follow entries onto that stack list.
+			 */
+			down_write(&vm->exec_queues.lock);
+			for (id = 0; id < ARRAY_SIZE(vm->exec_queues.list); id++)
+				list_for_each_entry(eq, &vm->exec_queues.list[id],
+						    vm_exec_queue_link)
+					atomic_or(q_flag, &eq->ban_reason);
+			up_write(&vm->exec_queues.lock);
+		} else {
+			list_for_each_entry(eq, &vm->preempt.exec_queues, lr.link)
+				atomic_or(q_flag, &eq->ban_reason);
+		}
+		smp_wmb(); /* Force all queue bits to be visible before killing the VM */
 		xe_vm_kill(vm, true);
 		up_write(&vm->lock);
 	}
@@ -651,6 +676,8 @@ static int xe_ttm_vram_purge_page(struct xe_device *xe, struct xe_bo *bo)
 	/*  Ban exec queue if BO is lrc */
 	if (q && xe_exec_queue_get_unless_zero(q)) {
 		/* ban queue */
+		atomic_or(q_flag, &q->ban_reason);
+		smp_wmb(); /* Force bit change to finish before state change triggers */
 		q_to_put = q;
 	}
 
diff --git a/include/uapi/drm/xe_drm.h b/include/uapi/drm/xe_drm.h
index 509202a7b13e..ee4a921b2e6e 100644
--- a/include/uapi/drm/xe_drm.h
+++ b/include/uapi/drm/xe_drm.h
@@ -1491,6 +1491,12 @@ struct drm_xe_exec_queue_destroy {
  *
  * The @property can be:
  *  - %DRM_XE_EXEC_QUEUE_GET_PROPERTY_BAN
+ *
+ * For %DRM_XE_EXEC_QUEUE_GET_PROPERTY_BAN, @value is a bitmask of ban reasons:
+ *  - %DRM_XE_EXEC_QUEUE_BAN_REASON_GPU_HANG - banned due to GPU hang/timeout
+ *  - %DRM_XE_EXEC_QUEUE_BAN_REASON_PAGE_OFFLINE - banned due to memory page offline
+ *
+ * A @value of 0 means the exec queue is not banned.
  */
 struct drm_xe_exec_queue_get_property {
 	/** @extensions: Pointer to the first extension struct, if any */
@@ -1503,7 +1509,17 @@ struct drm_xe_exec_queue_get_property {
 	/** @property: property to get */
 	__u32 property;
 
-	/** @value: property value */
+	/**
+	 * @value: property value
+	 *
+	 * For %DRM_XE_EXEC_QUEUE_GET_PROPERTY_BAN, this is a bitmask of:
+	 *  - %DRM_XE_EXEC_QUEUE_BAN_REASON_GPU_HANG - banned due to GPU hang/timeout
+	 *  - %DRM_XE_EXEC_QUEUE_BAN_REASON_PAGE_OFFLINE - banned due to memory page offline
+	 *
+	 * Value of 0 means the exec queue is not banned.
+	 */
+#define DRM_XE_EXEC_QUEUE_BAN_REASON_GPU_HANG		(1 << 0)
+#define DRM_XE_EXEC_QUEUE_BAN_REASON_PAGE_OFFLINE	(1 << 1)
 	__u64 value;
 
 	/** @reserved: Reserved */
-- 
2.52.0


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

* [PATCH V21 15/15] drm/xe: Add fault-inject based VRAM page offline injection
  2026-09-03 16:15 [PATCH V21 00/15] Add memory page offlining support Tejas Upadhyay
                   ` (13 preceding siblings ...)
  2026-09-03 16:16 ` [PATCH V21 14/15] drm/xe/uapi: Expose ban reason in EXEC_QUEUE_GET_PROPERTY_BAN Tejas Upadhyay
@ 2026-09-03 16:16 ` Tejas Upadhyay
  2026-09-03 16:23 ` ✗ CI.checkpatch: warning for Add memory page offlining support (rev25) Patchwork
                   ` (4 subsequent siblings)
  19 siblings, 0 replies; 25+ messages in thread
From: Tejas Upadhyay @ 2026-09-03 16:16 UTC (permalink / raw)
  To: intel-xe; +Cc: himal.prasad.ghimiray, rodrigo.vivi, Matthew Brost,
	Tejas Upadhyay

Add a fault-inject based debugfs interface for testing VRAM page
offlining. This replaces the previous standalone debugfs approach
with the standard kernel fault-inject infrastructure.

Two debugfs entries are created under the xe debugfs root for
CRI platforms:
- inject_mempage_offline/: Standard fault-inject knobs (probability,
  times, interval, etc.) created by fault_create_debugfs_attr().
  Without CONFIG_FAULT_INJECTION_DEBUG_FS, the stub returns
  ERR_PTR(-ENODEV) and no knobs are created, making the trigger
  effectively a no-op.
- inject_mempage_offline_trigger: Write a PFN value to inject a
  specific page, or write "0" to auto-pick the last unallocated
  VRAM page

The trigger accepts:
- "0"      : auto-pick last unallocated page
- "0xPFN"  : inject fault at a specific PFN address

Usage:
  echo 100 > inject_mempage_offline/probability
  echo 1 > inject_mempage_offline/times
  echo 0 > inject_mempage_offline_trigger

  probability: likelihood of should_fail() returning true (0-100)
  times: number of times injection is allowed (-1 for unlimited)

v7:
- Use PAGE_SIZE
v6(Himal):
- Add warning to rebind driver post test run
v5(Sashiko):
- exclude SRIOV and remove dpa_base addition, already absolute dpa
v4(Himal):
- Use xe_fault_mempage_offline() instead of IS_ENABLED() +
  direct should_fail(). CONFIG_FAULT_INJECTION_DEBUG_FS is now
  an implicit requirement for the trigger to function.
v3(Himal):
- Use FAULT_ACTION
v2(sashiko):
- use cond_resched()
- validate input first and fix addr < 0 case
- validate vr, move block, found var as local to scope_guard

Reviewed-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Signed-off-by: Tejas Upadhyay <tejas.upadhyay@intel.com>
---
 drivers/gpu/drm/xe/xe_debugfs.c      | 48 +++++++++++++++++++++++
 drivers/gpu/drm/xe/xe_debugfs.h      |  2 +
 drivers/gpu/drm/xe/xe_ttm_vram_mgr.c | 58 ++++++++++++++++++++++++++++
 drivers/gpu/drm/xe/xe_ttm_vram_mgr.h |  1 +
 4 files changed, 109 insertions(+)

diff --git a/drivers/gpu/drm/xe/xe_debugfs.c b/drivers/gpu/drm/xe/xe_debugfs.c
index cb24e001b142..80f62634fae5 100644
--- a/drivers/gpu/drm/xe/xe_debugfs.c
+++ b/drivers/gpu/drm/xe/xe_debugfs.c
@@ -45,12 +45,18 @@
 DECLARE_FAULT_ATTR(gt_reset_failure);
 DECLARE_FAULT_ATTR(inject_csc_hw_error);
 DECLARE_FAULT_ATTR(wedge_cold_reset);
+DECLARE_FAULT_ATTR(inject_mempage_offline);
 
 static bool csc_hw_error_available(struct xe_device *xe)
 {
 	return !IS_SRIOV_VF(xe) && xe->info.platform == XE_BATTLEMAGE;
 }
 
+static bool is_crescent_island_pf(struct xe_device *xe)
+{
+	return !IS_SRIOV_VF(xe) && xe->info.platform == XE_CRESCENTISLAND;
+}
+
 /*
  * Fault injection table.  Each entry registers a debugfs attribute; add a
  * matching FAULT_ACTION() below for every entry added here.
@@ -67,6 +73,9 @@ static struct {
 	  .is_visible = csc_hw_error_available },
 	{ .name = "wedge_cold_reset",
 	  .attr = &wedge_cold_reset },
+	{ .name = "inject_mempage_offline",
+	  .attr = &inject_mempage_offline,
+	  .is_visible = is_crescent_island_pf },
 };
 
 /*
@@ -82,6 +91,40 @@ bool xe_fault_##name(void)				\
 FAULT_ACTION(gt_reset, gt_reset_failure)
 FAULT_ACTION(csc_hw_error, inject_csc_hw_error)
 FAULT_ACTION(wedge_cold_reset, wedge_cold_reset)
+FAULT_ACTION(mempage_offline, inject_mempage_offline)
+
+static ssize_t inject_mempage_offline_trigger(struct file *f,
+					      const char __user *ubuf,
+					      size_t size, loff_t *pos)
+{
+	struct xe_device *xe = file_inode(f)->i_private;
+	struct xe_tile *tile = xe_device_get_root_tile(xe);
+	struct xe_vram_region *vr = tile->mem.vram;
+	u64 pfn;
+	int ret;
+
+	if (!vr)
+		return -ENODEV;
+
+	ret = kstrtou64_from_user(ubuf, size, 0, &pfn);
+	if (ret)
+		return ret;
+
+	if (!xe_fault_mempage_offline())
+		return size;
+
+	xe_warn(xe, "Page offlining test interface accessed. Notice: Offlined or reserved memory pages cannot be reclaimed dynamically. A driver rebind (unbind and bind loop) is required post-test to clean up.\n");
+	if (pfn == 0)
+		return xe_ttm_vram_inject_fault(xe) ?: size;
+
+	/* User provided PFN - convert to DPA and inject */
+	return xe_ttm_vram_handle_addr_fault(xe, pfn << PAGE_SHIFT) ?: size;
+}
+
+static const struct file_operations inject_mempage_offline_fops = {
+	.owner = THIS_MODULE,
+	.write = inject_mempage_offline_trigger,
+};
 
 static void xe_fault_inject_debugfs_register(struct xe_device *xe,
 					     struct dentry *root)
@@ -96,6 +139,11 @@ static void xe_fault_inject_debugfs_register(struct xe_device *xe,
 		fault_create_debugfs_attr(xe_fault_inject_entry[i].name, root,
 					  xe_fault_inject_entry[i].attr);
 	}
+
+	if (is_crescent_island_pf(xe)) {
+		debugfs_create_file("inject_mempage_offline_trigger", 0200,
+				    root, xe, &inject_mempage_offline_fops);
+	}
 }
 
 static void read_residency_counter(struct xe_device *xe, struct xe_mmio *mmio,
diff --git a/drivers/gpu/drm/xe/xe_debugfs.h b/drivers/gpu/drm/xe/xe_debugfs.h
index 0dcd28fd7dc0..88d91c78036b 100644
--- a/drivers/gpu/drm/xe/xe_debugfs.h
+++ b/drivers/gpu/drm/xe/xe_debugfs.h
@@ -14,11 +14,13 @@ struct xe_device;
 bool xe_fault_gt_reset(void);
 bool xe_fault_csc_hw_error(void);
 bool xe_fault_wedge_cold_reset(void);
+bool xe_fault_mempage_offline(void);
 void xe_debugfs_register(struct xe_device *xe);
 #else
 static inline bool xe_fault_gt_reset(void) { return false; }
 static inline bool xe_fault_csc_hw_error(void) { return false; }
 static inline bool xe_fault_wedge_cold_reset(void) { return false; }
+static inline bool xe_fault_mempage_offline(void) { return false; }
 static inline void xe_debugfs_register(struct xe_device *xe) { }
 #endif
 
diff --git a/drivers/gpu/drm/xe/xe_ttm_vram_mgr.c b/drivers/gpu/drm/xe/xe_ttm_vram_mgr.c
index 6aa24eb064eb..9a514d983e90 100644
--- a/drivers/gpu/drm/xe/xe_ttm_vram_mgr.c
+++ b/drivers/gpu/drm/xe/xe_ttm_vram_mgr.c
@@ -944,6 +944,64 @@ int xe_ttm_vram_handle_addr_fault(struct xe_device *xe, u64 addr)
 }
 EXPORT_SYMBOL(xe_ttm_vram_handle_addr_fault);
 
+/**
+ * xe_ttm_vram_inject_fault - Inject a VRAM page fault for testing
+ * @xe: xe device instance
+ *
+ * Picks the last unallocated VRAM page and reports it as faulted
+ * via xe_ttm_vram_handle_addr_fault(). Used by the fault-inject
+ * debugfs interface for testing page offlining.
+ *
+ * Note: Executing this test will permanently retire the allocated
+ * memory tracking pages. The driver must be rebinded (unbind and bind)
+ * post-test execution to reclaim the reserved space, as these pages
+ * cannot be freed or reclaimed dynamically while the current instance
+ * remains active.
+ *
+ * Return: 0 on success, negative error code on failure.
+ */
+int xe_ttm_vram_inject_fault(struct xe_device *xe)
+{
+	struct xe_tile *tile = xe_device_get_root_tile(xe);
+	struct xe_vram_region *vr = tile->mem.vram;
+	struct xe_ttm_vram_mgr *vram_mgr = &vr->ttm;
+	struct gpu_buddy *mm = &vram_mgr->mm;
+	u64 addr;
+
+	if (vr->actual_physical_size < PAGE_SIZE)
+		return -ENOSPC;
+
+	addr = vr->actual_physical_size - PAGE_SIZE;
+	while (addr < vr->actual_physical_size) {
+		struct gpu_buddy_block *block;
+		bool found = false;
+
+		scoped_guard(mutex, &vram_mgr->lock) {
+			block = gpu_buddy_allocated_addr_to_block(mm, addr);
+			if (!block)
+				found = true;
+		}
+
+		/*
+		 * Intentional race window: xe_ttm_vram_handle_addr_fault()
+		 * re-acquires vram_mgr->lock internally, so we cannot hold
+		 * it here. A concurrent allocation claiming this page between
+		 * the two calls is an acceptable false negative for this
+		 * test-only path.
+		 */
+		if (found)
+			return xe_ttm_vram_handle_addr_fault(xe, addr + vr->dpa_base);
+
+		cond_resched();
+		if (addr == 0)
+			break;
+		addr -= PAGE_SIZE;
+	}
+
+	return -ENOSPC;
+}
+EXPORT_SYMBOL(xe_ttm_vram_inject_fault);
+
 static int vram_bad_pages_show(struct seq_file *m, void *unused)
 {
 	struct xe_device *xe = m->private;
diff --git a/drivers/gpu/drm/xe/xe_ttm_vram_mgr.h b/drivers/gpu/drm/xe/xe_ttm_vram_mgr.h
index 48f39fd20e44..d77f067d197b 100644
--- a/drivers/gpu/drm/xe/xe_ttm_vram_mgr.h
+++ b/drivers/gpu/drm/xe/xe_ttm_vram_mgr.h
@@ -32,6 +32,7 @@ u64 xe_ttm_vram_get_cpu_visible_size(struct ttm_resource_manager *man);
 void xe_ttm_vram_get_used(struct ttm_resource_manager *man,
 			  u64 *used, u64 *used_visible);
 int xe_ttm_vram_handle_addr_fault(struct xe_device *xe, u64 addr);
+int xe_ttm_vram_inject_fault(struct xe_device *xe);
 
 static inline struct xe_ttm_vram_mgr_resource *
 to_xe_ttm_vram_mgr_resource(struct ttm_resource *res)
-- 
2.52.0


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

* ✗ CI.checkpatch: warning for Add memory page offlining support (rev25)
  2026-09-03 16:15 [PATCH V21 00/15] Add memory page offlining support Tejas Upadhyay
                   ` (14 preceding siblings ...)
  2026-09-03 16:16 ` [PATCH V21 15/15] drm/xe: Add fault-inject based VRAM page offline injection Tejas Upadhyay
@ 2026-09-03 16:23 ` Patchwork
  2026-09-03 16:25 ` ✓ CI.KUnit: success " Patchwork
                   ` (3 subsequent siblings)
  19 siblings, 0 replies; 25+ messages in thread
From: Patchwork @ 2026-09-03 16:23 UTC (permalink / raw)
  To: Tejas Upadhyay; +Cc: intel-xe

== Series Details ==

Series: Add memory page offlining support (rev25)
URL   : https://patchwork.freedesktop.org/series/161473/
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
d875049d2b299159a272bd5151994970cdcd1e31
+ cd /kernel
+ git config --global --add safe.directory /kernel
+ git log -n1
commit 6f491831e0628b1eb5e2c42e954e90fd92bc4d8f
Author: Tejas Upadhyay <tejas.upadhyay@intel.com>
Date:   Thu Sep 3 21:46:08 2026 +0530

    drm/xe: Add fault-inject based VRAM page offline injection
    
    Add a fault-inject based debugfs interface for testing VRAM page
    offlining. This replaces the previous standalone debugfs approach
    with the standard kernel fault-inject infrastructure.
    
    Two debugfs entries are created under the xe debugfs root for
    CRI platforms:
    - inject_mempage_offline/: Standard fault-inject knobs (probability,
      times, interval, etc.) created by fault_create_debugfs_attr().
      Without CONFIG_FAULT_INJECTION_DEBUG_FS, the stub returns
      ERR_PTR(-ENODEV) and no knobs are created, making the trigger
      effectively a no-op.
    - inject_mempage_offline_trigger: Write a PFN value to inject a
      specific page, or write "0" to auto-pick the last unallocated
      VRAM page
    
    The trigger accepts:
    - "0"      : auto-pick last unallocated page
    - "0xPFN"  : inject fault at a specific PFN address
    
    Usage:
      echo 100 > inject_mempage_offline/probability
      echo 1 > inject_mempage_offline/times
      echo 0 > inject_mempage_offline_trigger
    
      probability: likelihood of should_fail() returning true (0-100)
      times: number of times injection is allowed (-1 for unlimited)
    
    v7:
    - Use PAGE_SIZE
    v6(Himal):
    - Add warning to rebind driver post test run
    v5(Sashiko):
    - exclude SRIOV and remove dpa_base addition, already absolute dpa
    v4(Himal):
    - Use xe_fault_mempage_offline() instead of IS_ENABLED() +
      direct should_fail(). CONFIG_FAULT_INJECTION_DEBUG_FS is now
      an implicit requirement for the trigger to function.
    v3(Himal):
    - Use FAULT_ACTION
    v2(sashiko):
    - use cond_resched()
    - validate input first and fix addr < 0 case
    - validate vr, move block, found var as local to scope_guard
    
    Reviewed-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
    Signed-off-by: Tejas Upadhyay <tejas.upadhyay@intel.com>
+ /mt/dim checkpatch 78e2bb86709699d886be71a6f9c9dc41e4bf9aab drm-intel
1139fedc388b drm/xe: Link VRAM resource allocation with gpu buddy
32e7d19d04ae drm/xe: Link LRC BO and its execution queue with safe lifetime rules
-:7: WARNING:COMMIT_LOG_LONG_LINE: Prefer a maximum 75 chars per line (possible unwrapped commit description?)
#7: 
Introduce an execution queue back-pointer (`q`) within `struct xe_bo`, primarily

-:45: WARNING:BAD_SIGN_OFF: Non-standard signature: Co-authored-by:
#45: 
Co-authored-by: GitHub Copilot <copilot@github.com>

total: 0 errors, 2 warnings, 0 checks, 100 lines checked
4db67fac7f19 drm/xe: Export xe_ttm_bo_purge()
b8504b466c26 drm/xe: Handle NULL resource and allow purging of VRAM pages
1f5243f1f880 drm/xe/bo: Make xe_bo_is_user() public
89be0a235230 drm/xe: Guard teardown paths against purged BOs
9fe2ec232c52 drm/xe/vram: Extract buddy allocation and free helpers
f83a649449ea drm/xe/vram: Add page offline data structures and lifecycle
913f970bbe98 drm/xe/vram: Add VRAM page offline fault handler
-:52: WARNING:BAD_SIGN_OFF: Non-standard signature: Co-authored-by:
#52: 
Co-authored-by: GitHub Copilot <copilot@github.com>

total: 0 errors, 1 warnings, 0 checks, 360 lines checked
2d911f9b3471 drm/xe/configfs: Add disable_vram_page_offline attribute
391d1c1195af drm/xe/ras: Cache disable_vram_page_offline policy at init
4caf1429443f drm/xe/vram: Check disable_vram_page_offline policy in fault handler
a975eb9a7a56 drm/xe: Expose bad VRAM pages via debugfs
d75eae34d953 drm/xe/uapi: Expose ban reason in EXEC_QUEUE_GET_PROPERTY_BAN
6f491831e062 drm/xe: Add fault-inject based VRAM page offline injection



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

* ✓ CI.KUnit: success for Add memory page offlining support (rev25)
  2026-09-03 16:15 [PATCH V21 00/15] Add memory page offlining support Tejas Upadhyay
                   ` (15 preceding siblings ...)
  2026-09-03 16:23 ` ✗ CI.checkpatch: warning for Add memory page offlining support (rev25) Patchwork
@ 2026-09-03 16:25 ` Patchwork
  2026-09-03 17:46 ` ✗ Xe.CI.BAT: failure " Patchwork
                   ` (2 subsequent siblings)
  19 siblings, 0 replies; 25+ messages in thread
From: Patchwork @ 2026-09-03 16:25 UTC (permalink / raw)
  To: Tejas Upadhyay; +Cc: intel-xe

== Series Details ==

Series: Add memory page offlining support (rev25)
URL   : https://patchwork.freedesktop.org/series/161473/
State : success

== Summary ==

+ trap cleanup EXIT
+ kunitconfigs=('/kernel/drivers/gpu/tests/.kunitconfig' '/kernel/drivers/gpu/drm/xe/.kunitconfig' '/kernel/drivers/gpu/drm/tests/.kunitconfig' '/kernel/drivers/gpu/drm/ttm/tests/.kunitconfig' '/kernel/drivers/dma-buf/.kunitconfig')
+ for kcfg in "${kunitconfigs[@]}"
+ [[ ! -f /kernel/drivers/gpu/tests/.kunitconfig ]]
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/tests/.kunitconfig
[16:23:01] Configuring KUnit Kernel ...
Generating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[16:23:06] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48
[16:23:26] Starting KUnit Kernel (1/1)...
[16:23:26] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[16:23:27] ============= refcount_interrupt (4 subtests) ==============
[16:23:27] [PASSED] test_single_irq_change
[16:23:27] [PASSED] test_nested_irq_change
[16:23:27] [PASSED] test_multiple_irq_change
[16:23:27] [PASSED] test_irq_save
[16:23:27] =============== [PASSED] refcount_interrupt ================
[16:23:27] ================= gpu_buddy (14 subtests) ==================
[16:23:27] [PASSED] gpu_test_buddy_alloc_limit
[16:23:27] [PASSED] gpu_test_buddy_alloc_optimistic
[16:23:27] [PASSED] gpu_test_buddy_alloc_pessimistic
[16:23:27] [PASSED] gpu_test_buddy_alloc_pathological
[16:23:27] [PASSED] gpu_test_buddy_alloc_contiguous
[16:23:27] [PASSED] gpu_test_buddy_alloc_clear
[16:23:27] [PASSED] gpu_test_buddy_alloc_range
[16:23:27] [PASSED] gpu_test_buddy_alloc_range_bias
[16:23:28] [PASSED] gpu_test_buddy_fragmentation_performance
[16:23:28] [PASSED] gpu_test_buddy_dirty_tracker_performance
[16:23:28] [PASSED] gpu_test_buddy_alloc_exceeds_max_order
[16:23:28] [PASSED] gpu_test_buddy_offset_aligned_allocation
[16:23:28] [PASSED] gpu_test_buddy_subtree_offset_alignment_stress
[16:23:28] [PASSED] gpu_test_buddy_addr_to_block
[16:23:28] ==================== [PASSED] gpu_buddy ====================
[16:23:28] ============================================================
[16:23:28] Testing complete. Ran 18 tests: passed: 18
[16:23:28] Elapsed time: 27.022s total, 4.333s configuring, 20.722s building, 1.894s running

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

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

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

+ for kcfg in "${kunitconfigs[@]}"
+ [[ ! -f /kernel/drivers/dma-buf/.kunitconfig ]]
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/dma-buf/.kunitconfig
[16:24:45] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[16:24:47] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48
[16:24:56] Starting KUnit Kernel (1/1)...
[16:24:56] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[16:24:56] ============= refcount_interrupt (4 subtests) ==============
[16:24:56] [PASSED] test_single_irq_change
[16:24:56] [PASSED] test_nested_irq_change
[16:24:56] [PASSED] test_multiple_irq_change
[16:24:56] [PASSED] test_irq_save
[16:24:56] =============== [PASSED] refcount_interrupt ================
[16:24:56] =============== dma-buf-fence (12 subtests) ================
[16:24:56] [PASSED] test_sanitycheck
[16:24:56] [PASSED] test_signaling
[16:24:56] [PASSED] test_add_callback
[16:24:56] [PASSED] test_late_add_callback
[16:24:56] [PASSED] test_rm_callback
[16:24:56] [PASSED] test_late_rm_callback
[16:24:56] [PASSED] test_status
[16:24:56] [PASSED] test_error
[16:24:56] [PASSED] test_wait
[16:24:56] [PASSED] test_wait_timeout
[16:24:56] [PASSED] test_stub
[16:24:56] [SKIPPED] test_race_signal_callback (requires at least 2 CPUs)
[16:24:56] ================== [PASSED] dma-buf-fence ==================
[16:24:56] ============ dma-buf-fence-chain (11 subtests) =============
[16:24:56] [PASSED] test_sanitycheck
[16:24:56] [PASSED] test_find_seqno
[16:24:56] [PASSED] test_find_signaled
[16:24:56] [PASSED] test_find_out_of_order
[16:25:01] [PASSED] test_find_gap
[16:25:01] [PASSED] test_find_race
[16:25:01] [PASSED] test_signal_forward
[16:25:01] [PASSED] test_signal_backward
[16:25:01] [PASSED] test_wait_forward
[16:25:01] [PASSED] test_wait_backward
[16:25:01] [PASSED] test_wait_random
[16:25:01] =============== [PASSED] dma-buf-fence-chain ===============
[16:25:01] ============ dma-buf-fence-unwrap (10 subtests) ============
[16:25:01] [PASSED] test_sanitycheck
[16:25:01] [PASSED] test_unwrap_array
[16:25:01] [PASSED] test_unwrap_chain
[16:25:01] [PASSED] test_unwrap_chain_array
[16:25:01] [PASSED] test_unwrap_merge
[16:25:01] [PASSED] test_unwrap_merge_duplicate
[16:25:01] [PASSED] test_unwrap_merge_seqno
[16:25:01] [PASSED] test_unwrap_merge_order
[16:25:01] [PASSED] test_unwrap_merge_complex
[16:25:01] [PASSED] test_unwrap_merge_complex_seqno
[16:25:01] ============== [PASSED] dma-buf-fence-unwrap ===============
[16:25:01] ================ dma-buf-resv (5 subtests) =================
[16:25:01] [PASSED] test_sanitycheck
[16:25:01] ===================== test_signaling  ======================
[16:25:01] [PASSED] kernel
[16:25:01] [PASSED] write
[16:25:01] [PASSED] read
[16:25:01] [PASSED] bookkeep
[16:25:01] ================= [PASSED] test_signaling ==================
[16:25:01] ====================== test_for_each  ======================
[16:25:01] [PASSED] kernel
[16:25:01] [PASSED] write
[16:25:01] [PASSED] read
[16:25:01] [PASSED] bookkeep
[16:25:01] ================== [PASSED] test_for_each ==================
[16:25:01] ================= test_for_each_unlocked  ==================
[16:25:01] [PASSED] kernel
[16:25:01] [PASSED] write
[16:25:01] [PASSED] read
[16:25:01] [PASSED] bookkeep
[16:25:01] ============= [PASSED] test_for_each_unlocked ==============
[16:25:01] ===================== test_get_fences  =====================
[16:25:01] [PASSED] kernel
[16:25:01] [PASSED] write
[16:25:01] [PASSED] read
[16:25:01] [PASSED] bookkeep
[16:25:01] ================= [PASSED] test_get_fences =================
[16:25:01] ================== [PASSED] dma-buf-resv ===================
[16:25:01] ============================================================
[16:25:01] Testing complete. Ran 54 tests: passed: 53, skipped: 1
[16:25:01] Elapsed time: 15.602s total, 1.803s configuring, 8.527s building, 5.258s running

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



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

* Re: [PATCH V21 06/15] drm/xe: Guard teardown paths against purged BOs
  2026-09-03 16:15 ` [PATCH V21 06/15] drm/xe: Guard teardown paths against purged BOs Tejas Upadhyay
@ 2026-09-03 16:55   ` sashiko-bot
  0 siblings, 0 replies; 25+ messages in thread
From: sashiko-bot @ 2026-09-03 16:55 UTC (permalink / raw)
  To: Tejas Upadhyay; +Cc: intel-xe

Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [High] Unsafe access to purged pt_root vmap in xe_pt_clear() during VM teardown.
--

commit 93911d5c837da7fe0353a26b41f2f3b5ce75d05b
Author: Tejas Upadhyay <tejas.upadhyay@intel.com>

drm/xe: Guard teardown paths against purged BOs

VRAM page offlining can purge BOs that are still referenced by page
tables, exec queues, and DMA-buf exports. Add xe_bo_is_purged()
guards in the teardown paths to prevent unpinning or mapping an
already-purged BO.

> diff --git a/drivers/gpu/drm/xe/xe_bo.c b/drivers/gpu/drm/xe/xe_bo.c
> index c255327669da5..b162753cebb70 100644
> --- a/drivers/gpu/drm/xe/xe_bo.c
> +++ b/drivers/gpu/drm/xe/xe_bo.c
> @@ -3267,6 +3267,9 @@ void xe_bo_unpin(struct xe_bo *bo)
>  	struct ttm_place *place = &bo->placements[0];
>  	struct xe_device *xe = xe_bo_device(bo);
>  
> +	if (xe_bo_is_purged(bo))
> +		return;
> +

[Severity: High]
Does xe_vm_close() also need to be guarded against purged BOs?

During VM teardown, if a VRAM page offline fault occurs on a userspace root
page table BO, the offliner purges the BO which unmaps its CPU vmap. Later,
when userspace closes the VM or the process exits, xe_vm_close()
unconditionally calls xe_pt_clear() on the root page table:

drivers/gpu/drm/xe/xe_vm.c:xe_vm_close() {
    ...
			for_each_tile(tile, xe, id)
				if (vm->pt_root[id])
					xe_pt_clear(xe, vm->pt_root[id]);
    ...
}

This passes the cleared vmap to xe_map_memset(), leading to a kernel panic
due to a NULL pointer dereference:

drivers/gpu/drm/xe/xe_pt.c:xe_pt_clear() {
	struct iosys_map *map = &pt->bo->vmap;

	xe_map_memset(xe, map, 0, 0, SZ_4K);
}

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260903161553.528932-17-tejas.upadhyay@intel.com?part=6

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

* Re: [PATCH V21 04/15] drm/xe: Handle NULL resource and allow purging of VRAM pages
  2026-09-03 16:15 ` [PATCH V21 04/15] drm/xe: Handle NULL resource and allow purging of VRAM pages Tejas Upadhyay
@ 2026-09-03 17:08   ` sashiko-bot
  0 siblings, 0 replies; 25+ messages in thread
From: sashiko-bot @ 2026-09-03 17:08 UTC (permalink / raw)
  To: Tejas Upadhyay; +Cc: intel-xe

Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:

Pre-existing issues:
- [High] Missing NULL check for bo->ttm.resource in xe_vm_snapshot_capture(), which will cause a kernel panic when devcoredump attempts to snapshot a purged BO.
- [High] xe_bo_migrate() and xe_bo_is_mem_type() unconditionally dereference bo->ttm.resource without checking for NULL, leading to a crash when called on purged BOs.
--

commit 1ae4c5706e8f483f5e1f01922281841438651876
Author: Tejas Upadhyay <tejas.upadhyay@intel.com>

drm/xe: Handle NULL resource and allow purging of VRAM pages

Add NULL checks for the buffer object's resource pointer in
xe_bo_is_vram() and xe_bo_is_stolen() to prevent potential NULL
pointer dereferences when checking memory location during page
offlining.

Additionally, remove the `!ttm_bo->ttm` check from
xe_ttm_bo_purge(). This restriction is stripped away to
explicitly allow the driver to purge VRAM pages during the
memory page offline sequence.

> diff --git a/drivers/gpu/drm/xe/xe_bo.c b/drivers/gpu/drm/xe/xe_bo.c
> index 8f93e09e51bb8..d30a8411d2a33 100644
> --- a/drivers/gpu/drm/xe/xe_bo.c
> +++ b/drivers/gpu/drm/xe/xe_bo.c

[ ... ]

> @@ -929,9 +932,6 @@ int xe_ttm_bo_purge(struct ttm_buffer_object *ttm_bo, struct ttm_operation_ctx *
>  
>  	xe_bo_assert_held(bo);
>  
> -	if (!ttm_bo->ttm)
> -		return 0;
> -

[Severity: High]
This isn't a bug introduced by this patch, but removing this restriction allows
VRAM BOs to be purged, which exposes a missing NULL check in
xe_vm_snapshot_capture().

If a userspace application maps a BO in a VM, marks its VMA as DONTNEED, and
memory pressure purges the BO, bo->ttm.resource becomes NULL.

If a GPU hang then occurs, devcoredump is triggered and xe_vm_snapshot_capture()
iterates over the VM's vma_list, unconditionally accessing
bo->ttm.resource->mem_type:

drivers/gpu/drm/xe/xe_vm.c:xe_vm_snapshot_capture() {
	...
	drm_gpuvm_for_each_va(gpuva, &vm->gpuvm) {
		...
		if (bo) {
			snap->snap[i].cpu_caching = bo->cpu_caching;
			snap->snap[i].bo = xe_bo_get(bo);
			snap->snap[i].bo_ofs = xe_vma_bo_offset(vma);
			switch (bo->ttm.resource->mem_type) {
			case XE_PL_SYSTEM:
			...
}

Will this cause a kernel panic when devcoredump attempts to snapshot a purged
BO?


[Severity: High]
This is another pre-existing issue, but expanding purgeability to VRAM BOs
makes it reachable for them as well.

If a BO is marked DONTNEED and purged via memory pressure
(bo->ttm.resource = NULL), and then utilized in a path that triggers migration
(such as pinning it to a KMS plane or exporting/pinning it via dma-buf), both
xe_bo_migrate() and xe_bo_is_mem_type() unconditionally dereference
bo->ttm.resource.

drivers/gpu/drm/xe/xe_bo.c:xe_bo_migrate() {
	...
	xe_bo_assert_held(bo);
	tctx = tctx ? tctx : &ctx;

	if (bo->ttm.resource->mem_type == mem_type)
		return 0;
	...
}

drivers/gpu/drm/xe/xe_bo.h:xe_bo_is_mem_type() {
	...
	xe_bo_assert_held(bo);
	return bo->ttm.resource->mem_type == mem_type;
}

Can this lead to a kernel panic when these functions are called on purged BOs?

>  	if (!xe_bo_madv_is_dontneed(bo))
>  		return 0;
>

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260903161553.528932-17-tejas.upadhyay@intel.com?part=4

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

* Re: [PATCH V21 09/15] drm/xe/vram: Add VRAM page offline fault handler
  2026-09-03 16:16 ` [PATCH V21 09/15] drm/xe/vram: Add VRAM page offline fault handler Tejas Upadhyay
@ 2026-09-03 17:23   ` sashiko-bot
  0 siblings, 0 replies; 25+ messages in thread
From: sashiko-bot @ 2026-09-03 17:23 UTC (permalink / raw)
  To: Tejas Upadhyay; +Cc: intel-xe

Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [High] Time-of-check to time-of-use (TOCTOU) race and unconditional forceful unpinning of BO corrupts pin accounting and leads to panic.
--

commit c3198ab922e6897a8d11667a30d137d679162800
Author: Tejas Upadhyay <tejas.upadhyay@intel.com>

drm/xe/vram: Add VRAM page offline fault handler

Add the core VRAM page offlining logic to handle HW-reported faulty
physical addresses.

> diff --git a/drivers/gpu/drm/xe/xe_ttm_vram_mgr.c b/drivers/gpu/drm/xe/xe_ttm_vram_mgr.c
> index d97739a84a2d1..aea4cb0b66fd0 100644
> --- a/drivers/gpu/drm/xe/xe_ttm_vram_mgr.c
> +++ b/drivers/gpu/drm/xe/xe_ttm_vram_mgr.c

[ ... ]

> +static int xe_ttm_vram_purge_page(struct xe_device *xe, struct xe_bo *bo)
> +{
> +	struct ttm_operation_ctx ctx = {};

[ ... ]

> +	xe_bo_set_purgeable_state(bo, XE_MADV_PURGEABLE_DONTNEED);
> +	ttm_bo_unmap_virtual(&bo->ttm);   /* nuke CPU mmap + VRAM IO mappings */
> +	if (xe_bo_is_pinned(bo))
> +		xe_bo_unpin(bo);

[Severity: High]
Does this code forcefully unpin the BO without owning the pin reference?

When xe_ttm_vram_purge_page() gets called, it unconditionally drops the
pin count if the BO is pinned. Since the pin is owned by an external subsystem
(like display or dma-buf), this steals their reference. 

When the legitimate owner later calls xe_bo_unpin_external(), the pin count
will underflow or fail an assertion (xe_assert(xe, xe_bo_is_pinned(bo))),
leading to a kernel panic because xe_bo_unpin_external() lacks the
xe_bo_is_purged() short-circuit found in xe_bo_unpin().

Is there a way to handle this without corrupting the pin accounting?

> +	ret = xe_ttm_bo_purge(&bo->ttm, &ctx);
> +	xe_bo_unlock(bo);
> +
> +out:
> +	if (q_to_put) {
> +		xe_exec_queue_kill(q_to_put);
> +		xe_exec_queue_put(q_to_put);
> +	}
> +
> +	return ret;
> +}

[ ... ]

> +static int xe_ttm_vram_reserve_page_at_addr(struct xe_device *xe, u64 addr,
> +					    struct xe_ttm_vram_mgr *vram_mgr, struct gpu_buddy *mm)
> +{

[ ... ]

> +		if (block) {
> +			pbo = xe_ttm_vram_block_owner_get(xe, block);
> +
> +			/*
> +			 * Critical kernel BO? Best-effort check without resv lock;
> +			 * worst case a concurrent pin causes reset path unnecessarily.
> +			 */
> +			if (pbo && ((pbo->ttm.type == ttm_bo_type_kernel &&
> +				     !(pbo->flags & XE_BO_FLAG_PINNED_LATE_RESTORE)) ||
> +				    (xe_bo_is_user(pbo) && xe_bo_is_pinned(pbo)))) {

[Severity: High]
Can a concurrent pin on a user BO bypass this check?

This check in xe_ttm_vram_reserve_page_at_addr() reads xe_bo_is_pinned(pbo)
without holding the BO's dma_resv lock. If a user BO is concurrently pinned via
dma-buf or display immediately after this check, it will fall through to
xe_ttm_vram_purge_page(). 

Because xe_ttm_vram_purge_page() acquires the lock and calls xe_bo_unpin()
unconditionally on pinned BOs, the newly pinned BO will have its pin reference
stolen, eventually causing a panic when the true owner tries to unpin it. 

Furthermore, kernel BOs with XE_BO_FLAG_PINNED_LATE_RESTORE intentionally
bypass this check and are also forcefully unpinned. If the subsequent
xe_ttm_bo_purge() fails, the BO isn't marked as purged, and a later legitimate
unpin will hit the same assertion panic.

Could this race be resolved by checking the pin status after acquiring the
dma_resv lock?

> +				kfree(nentry);
> +				pbo_to_put = pbo;
> +				drm_err(&xe->drm,
> +					"%s: addr: 0x%llx is critical kernel bo, requesting SBR\n",
> +					__func__, addr);
> +				break;
> +			}

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260903161553.528932-17-tejas.upadhyay@intel.com?part=9

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

* ✗ Xe.CI.BAT: failure for Add memory page offlining support (rev25)
  2026-09-03 16:15 [PATCH V21 00/15] Add memory page offlining support Tejas Upadhyay
                   ` (16 preceding siblings ...)
  2026-09-03 16:25 ` ✓ CI.KUnit: success " Patchwork
@ 2026-09-03 17:46 ` Patchwork
  2026-09-04  4:33 ` [PATCH V21 00/15] Add memory page offlining support Matthew Brost
  2026-09-04  5:18 ` ✗ Xe.CI.FULL: failure for Add memory page offlining support (rev25) Patchwork
  19 siblings, 0 replies; 25+ messages in thread
From: Patchwork @ 2026-09-03 17:46 UTC (permalink / raw)
  To: Tejas Upadhyay; +Cc: intel-xe

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

== Series Details ==

Series: Add memory page offlining support (rev25)
URL   : https://patchwork.freedesktop.org/series/161473/
State : failure

== Summary ==

CI Bug Log - changes from xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34_BAT -> xe-pw-161473v25_BAT
====================================================

Summary
-------

  **FAILURE**

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

  

Participating hosts (15 -> 15)
------------------------------

  No changes in participating hosts

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

  Here are the unknown changes that may have been introduced in xe-pw-161473v25_BAT:

### IGT changes ###

#### Possible regressions ####

  * igt@xe_waitfence@engine:
    - bat-nvls-2:         [PASS][1] -> [FAIL][2]
   [1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/bat-nvls-2/igt@xe_waitfence@engine.html
   [2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/bat-nvls-2/igt@xe_waitfence@engine.html

  


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

  * IGT: IGT_9082 -> IGT_9083
  * Linux: xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34 -> xe-pw-161473v25

  IGT_9082: 2d61f578d998115259b87f9fa27f597ce11a0c89 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  IGT_9083: 9083
  xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34: 76a34199970d93cfb3ed5dbbd745c23b6f0cff34
  xe-pw-161473v25: 161473v25

== Logs ==

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

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

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

* Re: [PATCH V21 14/15] drm/xe/uapi: Expose ban reason in EXEC_QUEUE_GET_PROPERTY_BAN
  2026-09-03 16:16 ` [PATCH V21 14/15] drm/xe/uapi: Expose ban reason in EXEC_QUEUE_GET_PROPERTY_BAN Tejas Upadhyay
@ 2026-09-03 17:46   ` sashiko-bot
  0 siblings, 0 replies; 25+ messages in thread
From: sashiko-bot @ 2026-09-03 17:46 UTC (permalink / raw)
  To: Tejas Upadhyay; +Cc: intel-xe

Thank you for your contribution! Sashiko AI review found 3 potential issue(s) to consider:
- [Medium] Missing memory barriers when updating and checking ban_reason and queue state allow race conditions where the wrong ban reason is reported.
- [Low] The GPU_HANG ban reason is erroneously appended to non-LR queues that time out as a consequence of a VM ban (e.g., from page offline).
- [Low] The PAGE_OFFLINE ban reason is not recorded for non-LR exec queues on platforms without context-based TLB invalidations.
--

commit 67aaa673382d33c9ca0db014fb3ae57c32097a8e
Author: Tejas Upadhyay <tejas.upadhyay@intel.com>
Subject: drm/xe/uapi: Expose ban reason in EXEC_QUEUE_GET_PROPERTY_BAN

This commit extends DRM_XE_EXEC_QUEUE_GET_PROPERTY_BAN to return a bitmask 
indicating the reason for a queue ban instead of a simple boolean. It adds 
a ban_reason field to xe_exec_queue, updates the VRAM purge and TDR paths 
to populate this field, and modifies the reset_status op to expose it.

> --- a/drivers/gpu/drm/xe/xe_guc_submit.c
> +++ b/drivers/gpu/drm/xe/xe_guc_submit.c
[ ... ]
> @@ -1599,6 +1600,12 @@ guc_exec_queue_timedout_job(struct drm_sched_job *drm_job)
>  	else
>  		wedged = xe_device_wedged(xe);
>  
> +	/*
> +	 * Only tag as GPU hang if this is the original timeout, not a
> +	 * consequence of a prior kill (e.g., page-offline).
> +	 */
> +	if (!exec_queue_killed(q))
> +		atomic_or(DRM_XE_EXEC_QUEUE_BAN_REASON_GPU_HANG, &q->ban_reason);

[Severity: Medium]
Does this sequence require an smp_wmb() before set_exec_queue_banned(q)?

atomic_or() is a relaxed operation. Without a write barrier, the queue's
BANNED state update might become visible to concurrent readers before the
ban_reason update is visible. This could allow a userspace query to see
the banned state but get the wrong (default) reason.

[Severity: Low]
Could this erroneously tag non-LR queues with the GPU_HANG reason after a
VM ban?

The commit message states this guard avoids masking the page-offline
reason. However, xe_vm_kill() only kills LR queues. As a result,
exec_queue_killed(q) remains false for non-LR queues, causing them to
incorrectly receive both the PAGE_OFFLINE and GPU_HANG bits when they
eventually time out due to the unmapped memory.

>  	set_exec_queue_banned(q);
>  
>  	/* Kick job / queue off hardware */
[ ... ]
> @@ -2580,13 +2590,29 @@ static void guc_exec_queue_multi_queue_drop_suspend(struct xe_exec_queue *q)
>  	}
>  }
>  
> -static bool guc_exec_queue_reset_status(struct xe_exec_queue *q)
> +static u64 guc_exec_queue_reset_status(struct xe_exec_queue *q)
>  {
> -	if (xe_exec_queue_is_multi_queue_secondary(q) &&
> -	    guc_exec_queue_reset_status(xe_exec_queue_multi_queue_primary(q)))
> -		return true;
> +	/* TODO: In case of multiqueue, if a secondary queue is banned due to
> +	 * page offlining, checking only the primary queue's GuC reset status
> +	 * may mask the true reason or race with it.
> +	 */
> +	if (xe_exec_queue_is_multi_queue_secondary(q)) {
> +		u64 status = guc_exec_queue_reset_status(xe_exec_queue_multi_queue_primary(q));
>  
> -	return exec_queue_reset(q) || exec_queue_killed_or_banned_or_wedged(q);
> +		if (status)
> +			return status;
> +	}
> +
> +	if (exec_queue_reset(q) || exec_queue_killed_or_banned_or_wedged(q)) {
> +		u64 reason = atomic_read_acquire(&q->ban_reason);

[Severity: Medium]
Is an smp_rmb() needed here, or an acquire barrier on the state check?

While atomic_read_acquire() prevents subsequent loads from being reordered
before this point, the relaxed reads inside
exec_queue_killed_or_banned_or_wedged(q) (e.g., checking q->guc->state)
could be reordered with the read of q->ban_reason because control
dependencies do not order subsequent loads. This could result in loading a
stale ban_reason before the state check is fully verified.

> +
> +		/* If no specific reason was recorded, default to GPU hang */
> +		if (!reason)
> +			reason = DRM_XE_EXEC_QUEUE_BAN_REASON_GPU_HANG;
> +		return reason;
> +	}
> +
> +	return 0;
>  }
[ ... ]
> --- a/drivers/gpu/drm/xe/xe_ttm_vram_mgr.c
> +++ b/drivers/gpu/drm/xe/xe_ttm_vram_mgr.c
[ ... ]
> @@ -639,7 +641,30 @@ static int xe_ttm_vram_purge_page(struct xe_device *xe, struct xe_bo *bo)
>  	xe_bo_unlock(bo);
>  	/*  Ban VM if BO is PPGTT */
>  	if (vm && (flags & XE_BO_FLAG_PAGETABLE)) {
> +		struct xe_exec_queue *eq;
> +		int id;
> +
>  		down_write(&vm->lock);
> +		if (xe->info.has_ctx_tlb_inval) {
> +			/*
> +			 * Must be the write lock: send_tlb_inval_ctx_ppgtt()
> +			 * mutates this list (list_move_tail() onto an on-stack
> +			 * head) while holding only the read lock, relying on
> +			 * tlb_inval->seqno_lock to keep itself the sole
> +			 * mutator. Traversing it under down_read() would let
> +			 * this walk follow entries onto that stack list.
> +			 */
> +			down_write(&vm->exec_queues.lock);
> +			for (id = 0; id < ARRAY_SIZE(vm->exec_queues.list); id++)
> +				list_for_each_entry(eq, &vm->exec_queues.list[id],
> +						    vm_exec_queue_link)
> +					atomic_or(q_flag, &eq->ban_reason);
> +			up_write(&vm->exec_queues.lock);
> +		} else {
> +			list_for_each_entry(eq, &vm->preempt.exec_queues, lr.link)
> +				atomic_or(q_flag, &eq->ban_reason);

[Severity: Low]
Does this fallback path properly handle non-LR queues on older platforms?

When has_ctx_tlb_inval is false, this iteration loops over
vm->preempt.exec_queues, which exclusively contains LR queues. Since
non-LR queues aren't tracked in this list, they will miss the PAGE_OFFLINE
tag during a VRAM purge and will only report a generic GPU_HANG when they
eventually time out.

> +		}
> +		smp_wmb(); /* Force all queue bits to be visible before killing the VM */
>  		xe_vm_kill(vm, true);
>  		up_write(&vm->lock);
>  	}

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260903161553.528932-17-tejas.upadhyay@intel.com?part=14

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

* Re: [PATCH V21 00/15] Add memory page offlining support
  2026-09-03 16:15 [PATCH V21 00/15] Add memory page offlining support Tejas Upadhyay
                   ` (17 preceding siblings ...)
  2026-09-03 17:46 ` ✗ Xe.CI.BAT: failure " Patchwork
@ 2026-09-04  4:33 ` Matthew Brost
  2026-09-04  5:18 ` ✗ Xe.CI.FULL: failure for Add memory page offlining support (rev25) Patchwork
  19 siblings, 0 replies; 25+ messages in thread
From: Matthew Brost @ 2026-09-04  4:33 UTC (permalink / raw)
  To: Tejas Upadhyay; +Cc: intel-xe, himal.prasad.ghimiray, rodrigo.vivi

On Thu, Sep 03, 2026 at 09:45:53PM +0530, Tejas Upadhyay wrote:

This series is:
Acked-by: Matthew Brost <matthew.brost@intel.com>

I was going to merge this today but CI is taking a while, anyone with
push rights feel free to merge this on when CI comes back or I will take
another look at CI in the morning.

Matt 

> This functionality represents a significant step in making
> the xe driver gracefully handle hardware memory degradation.
> By integrating with the DRM Buddy allocator, the driver
> can permanently "carve out" faulty memory so it isn't reused
> by subsequent allocations.
> 
> IGT tests for testing this via injecting simple single address and
> duplicate address fault to unit test functionality:
> https://patchwork.freedesktop.org/series/170555/#rev3
> 
> v21(Sashiko/MattB):
> - Immediately offline pages if already free
> - With that remove some redundant code
> - Guard with lock before access to tbo
> - Add kernel doc in debugfs
> v20(Sashiko/MattB):
> - Retry failed queued pages during xe_ttm_vram_mgr_del()
> - xe_bo::q lifecycle fix
> - hold down_write while traversing exec_queue list
> - fix configfs default value + improve confusing read policy
> v19:
> - Sashiko review comment closure
> - Sliting of making xe_bo_ttm_purge() export and NULL handling
> - Remove redundant code in xe_ttm_vram_reserve_page_at_addr()
> - Resolve nit comments provided in configfs and debugfs
> v18:
> - Splitting out the sysfs patch; it will come later once it is redesigned
> - Address sashiko reivew comments
> - Add debugfs and adjust igt tests and fault injection
> v17:
> - Rebase on drm-tip
> - Enforce CONFIG_FAULT_INJECTION_DEBUG_FS for fault inject
> v16:
> - Correct sysfs patches with moving code with rcu lock
> - In case purge fail let next alloc decide final failure
> - Remove addr_to_block API, its being pulled from drm-tip
> - Remove some unused code and replace where existing API can be used
> v15:
> - Split few big patches into small
> - Avoid vram_mgr lock in sysfs
> - fix missing queue_pages counter increment
> v14:
> - Solve sashiko reviews
> - Remove SOFT->HARD offline patch, decision is taken based on -EEXIST
> - Dump gpu buddy allocated patch dropped
> v13:
> - Add fault inject and remove standlone debugfs
> v12:
> - Fix Sashiko review comments
> v11:
> - Add BAN reason for UMD to know about offlining
> - Add support for soft offline mode
> - Rebase and remove dummy lockdep annotation patch, as it merged from upstream
> v10:
> - Remove RFC
> v7:
> - Improve debugfs warning messages
> - Use scope_guard for locking(MattB)
> - Adapt addition of queue member of LRC BO(MattB)
> - Extend and use xe_ttm_bo_purge API for vram pages(MattB)
> - Handle dma_buf_map requests for native and remote(MattB)
> - Address if in never initialized block, set block to NULL
> - Add lockdep in gpu buddy (MattB)
> - Correct allocated_addr_to_block logic (MattA)
> V6:
> - Add more specific tests to noncritical bo sections
> - Handle smooth exit of user created exec queues
> - Break code and make purge specific static API
> V5:
> - Sysfs "max_pages" addition
> - Reset block->private NULL post purge
> 
> Tejas Upadhyay (15):
>   drm/xe: Link VRAM resource allocation with gpu buddy
>   drm/xe: Link LRC BO and its execution queue with safe lifetime rules
>   drm/xe: Export xe_ttm_bo_purge()
>   drm/xe: Handle NULL resource and allow purging of VRAM pages
>   drm/xe/bo: Make xe_bo_is_user() public
>   drm/xe: Guard teardown paths against purged BOs
>   drm/xe/vram: Extract buddy allocation and free helpers
>   drm/xe/vram: Add page offline data structures and lifecycle
>   drm/xe/vram: Add VRAM page offline fault handler
>   drm/xe/configfs: Add disable_vram_page_offline attribute
>   drm/xe/ras: Cache disable_vram_page_offline policy at init
>   drm/xe/vram: Check disable_vram_page_offline policy in fault handler
>   drm/xe: Expose bad VRAM pages via debugfs
>   drm/xe/uapi: Expose ban reason in EXEC_QUEUE_GET_PROPERTY_BAN
>   drm/xe: Add fault-inject based VRAM page offline injection
> 
>  drivers/gpu/drm/xe/xe_bo.c                 |  25 +-
>  drivers/gpu/drm/xe/xe_bo.h                 |   2 +
>  drivers/gpu/drm/xe/xe_bo_types.h           |   8 +
>  drivers/gpu/drm/xe/xe_configfs.c           |  72 ++-
>  drivers/gpu/drm/xe/xe_configfs.h           |   2 +
>  drivers/gpu/drm/xe/xe_debugfs.c            |  51 ++
>  drivers/gpu/drm/xe/xe_debugfs.h            |   2 +
>  drivers/gpu/drm/xe/xe_dma_buf.c            |   3 +
>  drivers/gpu/drm/xe/xe_drm_ras_types.h      |   3 +
>  drivers/gpu/drm/xe/xe_exec_queue.c         |  72 ++-
>  drivers/gpu/drm/xe/xe_exec_queue_types.h   |   7 +-
>  drivers/gpu/drm/xe/xe_execlist.c           |   4 +-
>  drivers/gpu/drm/xe/xe_guc_submit.c         |  36 +-
>  drivers/gpu/drm/xe/xe_ras.c                |   9 +
>  drivers/gpu/drm/xe/xe_ttm_vram_mgr.c       | 600 ++++++++++++++++++++-
>  drivers/gpu/drm/xe/xe_ttm_vram_mgr.h       |   3 +
>  drivers/gpu/drm/xe/xe_ttm_vram_mgr_types.h |  40 ++
>  include/uapi/drm/xe_drm.h                  |  18 +-
>  18 files changed, 911 insertions(+), 46 deletions(-)
> 
> -- 
> 2.52.0
> 

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

* ✗ Xe.CI.FULL: failure for Add memory page offlining support (rev25)
  2026-09-03 16:15 [PATCH V21 00/15] Add memory page offlining support Tejas Upadhyay
                   ` (18 preceding siblings ...)
  2026-09-04  4:33 ` [PATCH V21 00/15] Add memory page offlining support Matthew Brost
@ 2026-09-04  5:18 ` Patchwork
  19 siblings, 0 replies; 25+ messages in thread
From: Patchwork @ 2026-09-04  5:18 UTC (permalink / raw)
  To: Tejas Upadhyay; +Cc: intel-xe

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

== Series Details ==

Series: Add memory page offlining support (rev25)
URL   : https://patchwork.freedesktop.org/series/161473/
State : failure

== Summary ==

CI Bug Log - changes from xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34_FULL -> xe-pw-161473v25_FULL
====================================================

Summary
-------

  **FAILURE**

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

  

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

  No changes in participating hosts

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

  Here are the unknown changes that may have been introduced in xe-pw-161473v25_FULL:

### IGT changes ###

#### Possible regressions ####

  * igt@xe_configfs@ctx-restore-mid-bb:
    - shard-lnl:          [PASS][1] -> [INCOMPLETE][2]
   [1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-8/igt@xe_configfs@ctx-restore-mid-bb.html
   [2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-6/igt@xe_configfs@ctx-restore-mid-bb.html

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

  Here are the changes found in xe-pw-161473v25_FULL that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@fbdev@write:
    - shard-lnl:          [PASS][3] -> [SKIP][4] ([Intel XE#2134])
   [3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-7/igt@fbdev@write.html
   [4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-6/igt@fbdev@write.html

  * igt@kms_async_flips@alternate-sync-async-flip-atomic:
    - shard-bmg:          [PASS][5] -> [FAIL][6] ([Intel XE#3718] / [Intel XE#6078])
   [5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-bmg-2/igt@kms_async_flips@alternate-sync-async-flip-atomic.html
   [6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-bmg-4/igt@kms_async_flips@alternate-sync-async-flip-atomic.html

  * igt@kms_async_flips@alternate-sync-async-flip-atomic@pipe-b-hdmi-a-3:
    - shard-bmg:          [PASS][7] -> [FAIL][8] ([Intel XE#6078])
   [7]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-bmg-2/igt@kms_async_flips@alternate-sync-async-flip-atomic@pipe-b-hdmi-a-3.html
   [8]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-bmg-4/igt@kms_async_flips@alternate-sync-async-flip-atomic@pipe-b-hdmi-a-3.html

  * igt@kms_atomic_transition@plane-all-modeset-transition-fencing:
    - shard-lnl:          NOTRUN -> [SKIP][9] ([Intel XE#3279])
   [9]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-3/igt@kms_atomic_transition@plane-all-modeset-transition-fencing.html

  * igt@kms_big_fb@linear-32bpp-rotate-90:
    - shard-bmg:          NOTRUN -> [SKIP][10] ([Intel XE#2327])
   [10]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-bmg-7/igt@kms_big_fb@linear-32bpp-rotate-90.html

  * igt@kms_big_fb@linear-64bpp-rotate-90:
    - shard-lnl:          NOTRUN -> [SKIP][11] ([Intel XE#1407])
   [11]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-3/igt@kms_big_fb@linear-64bpp-rotate-90.html

  * igt@kms_big_fb@linear-max-hw-stride-32bpp-rotate-0-hflip:
    - shard-lnl:          NOTRUN -> [SKIP][12] ([Intel XE#7059] / [Intel XE#7085])
   [12]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-1/igt@kms_big_fb@linear-max-hw-stride-32bpp-rotate-0-hflip.html

  * igt@kms_big_fb@x-tiled-8bpp-rotate-270:
    - shard-lnl:          NOTRUN -> [SKIP][13] ([Intel XE#9125]) +8 other tests skip
   [13]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-6/igt@kms_big_fb@x-tiled-8bpp-rotate-270.html

  * igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-0-hflip-async-flip:
    - shard-lnl:          NOTRUN -> [SKIP][14] ([Intel XE#1124]) +3 other tests skip
   [14]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-2/igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-0-hflip-async-flip.html

  * igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-0-hflip:
    - shard-bmg:          NOTRUN -> [SKIP][15] ([Intel XE#1124]) +7 other tests skip
   [15]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-bmg-7/igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-0-hflip.html

  * igt@kms_bw@connected-linear-tiling-2-displays-target-3840x2160p:
    - shard-lnl:          NOTRUN -> [SKIP][16] ([Intel XE#7679])
   [16]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-2/igt@kms_bw@connected-linear-tiling-2-displays-target-3840x2160p.html

  * igt@kms_bw@connected-linear-tiling-3-displays-target-1920x1080p:
    - shard-bmg:          NOTRUN -> [SKIP][17] ([Intel XE#7679]) +1 other test skip
   [17]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-bmg-3/igt@kms_bw@connected-linear-tiling-3-displays-target-1920x1080p.html

  * igt@kms_bw@linear-tiling-2-displays-target-2560x1440p:
    - shard-bmg:          NOTRUN -> [SKIP][18] ([Intel XE#367]) +1 other test skip
   [18]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-bmg-7/igt@kms_bw@linear-tiling-2-displays-target-2560x1440p.html

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

  * igt@kms_ccs@crc-primary-rotation-180-4-tiled-bmg-ccs@pipe-b-edp-1:
    - shard-lnl:          NOTRUN -> [SKIP][20] ([Intel XE#2669] / [Intel XE#7389]) +2 other tests skip
   [20]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-7/igt@kms_ccs@crc-primary-rotation-180-4-tiled-bmg-ccs@pipe-b-edp-1.html

  * igt@kms_ccs@crc-primary-rotation-180-4-tiled-lnl-ccs@pipe-c-dp-2:
    - shard-bmg:          NOTRUN -> [SKIP][21] ([Intel XE#2652]) +26 other tests skip
   [21]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-bmg-4/igt@kms_ccs@crc-primary-rotation-180-4-tiled-lnl-ccs@pipe-c-dp-2.html

  * igt@kms_ccs@random-ccs-data-y-tiled-gen12-mc-ccs:
    - shard-lnl:          NOTRUN -> [SKIP][22] ([Intel XE#2887]) +3 other tests skip
   [22]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-2/igt@kms_ccs@random-ccs-data-y-tiled-gen12-mc-ccs.html

  * igt@kms_cdclk@mode-transition@pipe-b-edp-1:
    - shard-lnl:          NOTRUN -> [SKIP][23] ([Intel XE#4417] / [Intel XE#5447]) +2 other tests skip
   [23]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-4/igt@kms_cdclk@mode-transition@pipe-b-edp-1.html

  * igt@kms_cdclk@plane-scaling@pipe-b-edp-1:
    - shard-lnl:          NOTRUN -> [SKIP][24] ([Intel XE#4416] / [Intel XE#7381]) +2 other tests skip
   [24]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-3/igt@kms_cdclk@plane-scaling@pipe-b-edp-1.html

  * igt@kms_chamelium_color@ctm-0-25:
    - shard-lnl:          NOTRUN -> [SKIP][25] ([Intel XE#306] / [Intel XE#7358])
   [25]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-1/igt@kms_chamelium_color@ctm-0-25.html

  * igt@kms_chamelium_color@ctm-negative:
    - shard-bmg:          NOTRUN -> [SKIP][26] ([Intel XE#2325] / [Intel XE#7358]) +1 other test skip
   [26]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-bmg-4/igt@kms_chamelium_color@ctm-negative.html

  * igt@kms_chamelium_color_pipeline@plane-lut3d-green-only:
    - shard-bmg:          NOTRUN -> [SKIP][27] ([Intel XE#7358])
   [27]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-bmg-4/igt@kms_chamelium_color_pipeline@plane-lut3d-green-only.html

  * igt@kms_chamelium_edid@dp-edid-read:
    - shard-bmg:          NOTRUN -> [SKIP][28] ([Intel XE#2252]) +5 other tests skip
   [28]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-bmg-8/igt@kms_chamelium_edid@dp-edid-read.html

  * igt@kms_chamelium_hpd@hdmi-hpd-fast:
    - shard-lnl:          NOTRUN -> [SKIP][29] ([Intel XE#373]) +4 other tests skip
   [29]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-1/igt@kms_chamelium_hpd@hdmi-hpd-fast.html

  * igt@kms_color@ctm-red-to-blue:
    - shard-lnl:          [PASS][30] -> [SKIP][31] ([Intel XE#3297])
   [30]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-7/igt@kms_color@ctm-red-to-blue.html
   [31]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-6/igt@kms_color@ctm-red-to-blue.html

  * igt@kms_content_protection@dp-mst-type-1-suspend-resume:
    - shard-bmg:          NOTRUN -> [SKIP][32] ([Intel XE#6974])
   [32]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-bmg-7/igt@kms_content_protection@dp-mst-type-1-suspend-resume.html

  * igt@kms_content_protection@mei-interface:
    - shard-bmg:          NOTRUN -> [SKIP][33] ([Intel XE#7642])
   [33]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-bmg-10/igt@kms_content_protection@mei-interface.html

  * igt@kms_content_protection@srm@pipe-a-dp-2:
    - shard-bmg:          NOTRUN -> [FAIL][34] ([Intel XE#1178] / [Intel XE#3304] / [Intel XE#7374]) +1 other test fail
   [34]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-bmg-10/igt@kms_content_protection@srm@pipe-a-dp-2.html

  * igt@kms_content_protection@uevent:
    - shard-lnl:          NOTRUN -> [SKIP][35] ([Intel XE#7642]) +1 other test skip
   [35]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-8/igt@kms_content_protection@uevent.html

  * igt@kms_cursor_crc@cursor-offscreen-32x10:
    - shard-bmg:          NOTRUN -> [SKIP][36] ([Intel XE#2320]) +1 other test skip
   [36]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-bmg-4/igt@kms_cursor_crc@cursor-offscreen-32x10.html

  * igt@kms_cursor_crc@cursor-offscreen-512x512:
    - shard-bmg:          NOTRUN -> [SKIP][37] ([Intel XE#2321] / [Intel XE#7355]) +1 other test skip
   [37]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-bmg-1/igt@kms_cursor_crc@cursor-offscreen-512x512.html

  * igt@kms_cursor_crc@cursor-rapid-movement-max-size:
    - shard-lnl:          NOTRUN -> [SKIP][38] ([Intel XE#1424]) +3 other tests skip
   [38]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-5/igt@kms_cursor_crc@cursor-rapid-movement-max-size.html

  * igt@kms_cursor_edge_walk@256x256-right-edge:
    - shard-lnl:          [PASS][39] -> [SKIP][40] ([Intel XE#9125]) +31 other tests skip
   [39]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-7/igt@kms_cursor_edge_walk@256x256-right-edge.html
   [40]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-6/igt@kms_cursor_edge_walk@256x256-right-edge.html

  * igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions:
    - shard-bmg:          [PASS][41] -> [FAIL][42] ([Intel XE#7809])
   [41]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-bmg-5/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions.html
   [42]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-bmg-3/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions.html

  * igt@kms_cursor_legacy@short-busy-flip-before-cursor-toggle:
    - shard-bmg:          NOTRUN -> [SKIP][43] ([Intel XE#2286] / [Intel XE#6035])
   [43]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-bmg-3/igt@kms_cursor_legacy@short-busy-flip-before-cursor-toggle.html

  * igt@kms_dither@fb-8bpc-vs-panel-6bpc@pipe-a-hdmi-a-3:
    - shard-bmg:          NOTRUN -> [SKIP][44] ([Intel XE#1340] / [Intel XE#7435])
   [44]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-bmg-5/igt@kms_dither@fb-8bpc-vs-panel-6bpc@pipe-a-hdmi-a-3.html

  * igt@kms_dp_linktrain_fallback@dsc-fallback:
    - shard-bmg:          NOTRUN -> [SKIP][45] ([Intel XE#4331] / [Intel XE#7227])
   [45]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-bmg-7/igt@kms_dp_linktrain_fallback@dsc-fallback.html

  * igt@kms_dsc@dsc-with-bpc-formats:
    - shard-bmg:          NOTRUN -> [SKIP][46] ([Intel XE#8265]) +2 other tests skip
   [46]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-bmg-2/igt@kms_dsc@dsc-with-bpc-formats.html

  * igt@kms_dsc@dsc-with-output-formats-ultrajoiner:
    - shard-lnl:          NOTRUN -> [SKIP][47] ([Intel XE#8265]) +1 other test skip
   [47]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-5/igt@kms_dsc@dsc-with-output-formats-ultrajoiner.html

  * igt@kms_fbc_dirty_rect@fbc-dirty-rectangle-dirtyfb-tests:
    - shard-bmg:          NOTRUN -> [SKIP][48] ([Intel XE#4422] / [Intel XE#7442])
   [48]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-bmg-9/igt@kms_fbc_dirty_rect@fbc-dirty-rectangle-dirtyfb-tests.html

  * igt@kms_fbcon_fbt@fbc:
    - shard-bmg:          NOTRUN -> [SKIP][49] ([Intel XE#4156] / [Intel XE#7425])
   [49]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-bmg-7/igt@kms_fbcon_fbt@fbc.html

  * igt@kms_fbcon_fbt@psr:
    - shard-lnl:          [PASS][50] -> [SKIP][51] ([Intel XE#8680])
   [50]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-8/igt@kms_fbcon_fbt@psr.html
   [51]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-6/igt@kms_fbcon_fbt@psr.html

  * igt@kms_feature_discovery@display-2x:
    - shard-lnl:          NOTRUN -> [SKIP][52] ([Intel XE#702] / [Intel XE#7344])
   [52]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-4/igt@kms_feature_discovery@display-2x.html

  * igt@kms_feature_discovery@dsc:
    - shard-bmg:          NOTRUN -> [SKIP][53] ([Intel XE#8586]) +1 other test skip
   [53]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-bmg-5/igt@kms_feature_discovery@dsc.html

  * igt@kms_feature_discovery@vrr:
    - shard-lnl:          [PASS][54] -> [SKIP][55] ([Intel XE#8586])
   [54]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-4/igt@kms_feature_discovery@vrr.html
   [55]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-6/igt@kms_feature_discovery@vrr.html

  * igt@kms_flip@2x-blocking-absolute-wf_vblank:
    - shard-lnl:          NOTRUN -> [SKIP][56] ([Intel XE#1421]) +3 other tests skip
   [56]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-5/igt@kms_flip@2x-blocking-absolute-wf_vblank.html

  * igt@kms_flip@dpms-vs-vblank-race:
    - shard-bmg:          [PASS][57] -> [FAIL][58] ([Intel XE#3098]) +1 other test fail
   [57]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-bmg-8/igt@kms_flip@dpms-vs-vblank-race.html
   [58]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-bmg-4/igt@kms_flip@dpms-vs-vblank-race.html

  * igt@kms_flip@flip-vs-blocking-wf-vblank:
    - shard-lnl:          [PASS][59] -> [SKIP][60] ([Intel XE#2482]) +4 other tests skip
   [59]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-2/igt@kms_flip@flip-vs-blocking-wf-vblank.html
   [60]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-6/igt@kms_flip@flip-vs-blocking-wf-vblank.html

  * igt@kms_flip@flip-vs-panning-interruptible:
    - shard-lnl:          NOTRUN -> [SKIP][61] ([Intel XE#2482])
   [61]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-6/igt@kms_flip@flip-vs-panning-interruptible.html

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

  * igt@kms_flip_scaled_crc@flip-64bpp-xtile-to-32bpp-xtile-downscaling:
    - shard-lnl:          NOTRUN -> [SKIP][63] ([Intel XE#1397] / [Intel XE#1745] / [Intel XE#7385])
   [63]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-3/igt@kms_flip_scaled_crc@flip-64bpp-xtile-to-32bpp-xtile-downscaling.html

  * igt@kms_flip_scaled_crc@flip-64bpp-xtile-to-32bpp-xtile-downscaling@pipe-a-default-mode:
    - shard-lnl:          NOTRUN -> [SKIP][64] ([Intel XE#1397] / [Intel XE#7385]) +1 other test skip
   [64]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-3/igt@kms_flip_scaled_crc@flip-64bpp-xtile-to-32bpp-xtile-downscaling@pipe-a-default-mode.html

  * igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-upscaling:
    - shard-bmg:          NOTRUN -> [SKIP][65] ([Intel XE#7178] / [Intel XE#7351]) +1 other test skip
   [65]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-bmg-6/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-upscaling.html

  * igt@kms_flip_tiling@flip-change-tiling:
    - shard-lnl:          [PASS][66] -> [SKIP][67] ([Intel XE#2682])
   [66]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-8/igt@kms_flip_tiling@flip-change-tiling.html
   [67]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-6/igt@kms_flip_tiling@flip-change-tiling.html

  * igt@kms_frontbuffer_tracking@drrs-1p-primscrn-indfb-msflip-blt:
    - shard-lnl:          NOTRUN -> [SKIP][68] ([Intel XE#2548] / [Intel XE#7779]) +2 other tests skip
   [68]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-6/igt@kms_frontbuffer_tracking@drrs-1p-primscrn-indfb-msflip-blt.html

  * igt@kms_frontbuffer_tracking@drrs-indfb-scaledprimary:
    - shard-lnl:          NOTRUN -> [SKIP][69] ([Intel XE#6312] / [Intel XE#651]) +1 other test skip
   [69]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-1/igt@kms_frontbuffer_tracking@drrs-indfb-scaledprimary.html

  * igt@kms_frontbuffer_tracking@drrshdr-abgr161616f-draw-blt:
    - shard-bmg:          NOTRUN -> [SKIP][70] ([Intel XE#7061]) +3 other tests skip
   [70]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-bmg-8/igt@kms_frontbuffer_tracking@drrshdr-abgr161616f-draw-blt.html

  * igt@kms_frontbuffer_tracking@fbc-1p-offscreen-pri-indfb-draw-mmap-wc:
    - shard-lnl:          [PASS][71] -> [SKIP][72] ([Intel XE#7779]) +2 other tests skip
   [71]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-5/igt@kms_frontbuffer_tracking@fbc-1p-offscreen-pri-indfb-draw-mmap-wc.html
   [72]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-6/igt@kms_frontbuffer_tracking@fbc-1p-offscreen-pri-indfb-draw-mmap-wc.html

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

  * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-fullscreen:
    - shard-lnl:          [PASS][74] -> [SKIP][75] ([Intel XE#2548] / [Intel XE#7779]) +9 other tests skip
   [74]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-8/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-fullscreen.html
   [75]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-6/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-fullscreen.html

  * igt@kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-pri-indfb-draw-mmap-wc:
    - shard-lnl:          NOTRUN -> [SKIP][76] ([Intel XE#656] / [Intel XE#7905]) +12 other tests skip
   [76]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-2/igt@kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-pri-indfb-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@fbcdrrs-abgr161616f-draw-mmap-wc:
    - shard-lnl:          NOTRUN -> [SKIP][77] ([Intel XE#7061] / [Intel XE#7356]) +2 other tests skip
   [77]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-3/igt@kms_frontbuffer_tracking@fbcdrrs-abgr161616f-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@fbcdrrshdr-1p-offscreen-pri-indfb-draw-render:
    - shard-lnl:          NOTRUN -> [SKIP][78] ([Intel XE#7779]) +5 other tests skip
   [78]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-6/igt@kms_frontbuffer_tracking@fbcdrrshdr-1p-offscreen-pri-indfb-draw-render.html

  * igt@kms_frontbuffer_tracking@fbcdrrshdr-1p-primscrn-indfb-pgflip-blt:
    - shard-bmg:          NOTRUN -> [SKIP][79] ([Intel XE#2311]) +44 other tests skip
   [79]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-bmg-1/igt@kms_frontbuffer_tracking@fbcdrrshdr-1p-primscrn-indfb-pgflip-blt.html

  * igt@kms_frontbuffer_tracking@fbcdrrshdr-2p-scndscrn-cur-indfb-draw-mmap-wc:
    - shard-lnl:          NOTRUN -> [SKIP][80] ([Intel XE#7905]) +14 other tests skip
   [80]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-1/igt@kms_frontbuffer_tracking@fbcdrrshdr-2p-scndscrn-cur-indfb-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@fbcdrrshdr-modesetfrombusy:
    - shard-lnl:          NOTRUN -> [SKIP][81] ([Intel XE#6312]) +7 other tests skip
   [81]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-7/igt@kms_frontbuffer_tracking@fbcdrrshdr-modesetfrombusy.html

  * igt@kms_frontbuffer_tracking@fbcpsrhdr-2p-primscrn-indfb-pgflip-blt:
    - shard-bmg:          NOTRUN -> [SKIP][82] ([Intel XE#2313]) +41 other tests skip
   [82]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-bmg-9/igt@kms_frontbuffer_tracking@fbcpsrhdr-2p-primscrn-indfb-pgflip-blt.html

  * igt@kms_frontbuffer_tracking@fbcpsrhdr-slowdraw:
    - shard-lnl:          NOTRUN -> [SKIP][83] ([Intel XE#7865]) +10 other tests skip
   [83]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-7/igt@kms_frontbuffer_tracking@fbcpsrhdr-slowdraw.html

  * igt@kms_frontbuffer_tracking@hdr-argb161616f-draw-mmap-wc:
    - shard-lnl:          NOTRUN -> [SKIP][84] ([Intel XE#7061])
   [84]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-1/igt@kms_frontbuffer_tracking@hdr-argb161616f-draw-mmap-wc.html

  * igt@kms_hdmi_inject@inject-audio:
    - shard-lnl:          NOTRUN -> [SKIP][85] ([Intel XE#1470] / [Intel XE#2853])
   [85]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-6/igt@kms_hdmi_inject@inject-audio.html

  * igt@kms_hdr@invalid-hdr:
    - shard-bmg:          [PASS][86] -> [SKIP][87] ([Intel XE#1503])
   [86]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-bmg-8/igt@kms_hdr@invalid-hdr.html
   [87]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-bmg-1/igt@kms_hdr@invalid-hdr.html

  * igt@kms_invalid_mode@zero-clock:
    - shard-lnl:          [PASS][88] -> [SKIP][89] ([Intel XE#2568]) +2 other tests skip
   [88]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-7/igt@kms_invalid_mode@zero-clock.html
   [89]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-6/igt@kms_invalid_mode@zero-clock.html

  * igt@kms_joiner@invalid-modeset-force-ultra-joiner:
    - shard-lnl:          NOTRUN -> [SKIP][90] ([Intel XE#6900] / [Intel XE#7362]) +1 other test skip
   [90]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-4/igt@kms_joiner@invalid-modeset-force-ultra-joiner.html

  * igt@kms_multipipe_modeset@basic-max-pipe-crc-check:
    - shard-bmg:          NOTRUN -> [SKIP][91] ([Intel XE#7591])
   [91]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-bmg-4/igt@kms_multipipe_modeset@basic-max-pipe-crc-check.html

  * igt@kms_panel_fitting@legacy:
    - shard-bmg:          NOTRUN -> [SKIP][92] ([Intel XE#2486])
   [92]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-bmg-4/igt@kms_panel_fitting@legacy.html

  * igt@kms_pipe_stress@stress-xrgb8888-ytiled:
    - shard-lnl:          NOTRUN -> [SKIP][93] ([Intel XE#4329] / [Intel XE#6912] / [Intel XE#7375])
   [93]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-7/igt@kms_pipe_stress@stress-xrgb8888-ytiled.html

  * igt@kms_plane@pixel-format-4-tiled-dg2-rc-ccs-modifier:
    - shard-lnl:          NOTRUN -> [SKIP][94] ([Intel XE#7283]) +2 other tests skip
   [94]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-3/igt@kms_plane@pixel-format-4-tiled-dg2-rc-ccs-modifier.html

  * igt@kms_plane@pixel-format-4-tiled-dg2-rc-ccs-modifier-source-clamping:
    - shard-bmg:          NOTRUN -> [SKIP][95] ([Intel XE#7283]) +4 other tests skip
   [95]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-bmg-3/igt@kms_plane@pixel-format-4-tiled-dg2-rc-ccs-modifier-source-clamping.html

  * igt@kms_plane@pixel-format-4-tiled-modifier-source-clamping:
    - shard-lnl:          [PASS][96] -> [SKIP][97] ([Intel XE#7250] / [Intel XE#9128])
   [96]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-1/igt@kms_plane@pixel-format-4-tiled-modifier-source-clamping.html
   [97]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-6/igt@kms_plane@pixel-format-4-tiled-modifier-source-clamping.html

  * igt@kms_plane@planar-pixel-format-settings@nv12-tile4-src-y:
    - shard-bmg:          NOTRUN -> [SKIP][98] ([Intel XE#8076])
   [98]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-bmg-4/igt@kms_plane@planar-pixel-format-settings@nv12-tile4-src-y.html

  * igt@kms_plane@plane-panning-top-left:
    - shard-lnl:          [PASS][99] -> [SKIP][100] ([Intel XE#9128])
   [99]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-5/igt@kms_plane@plane-panning-top-left.html
   [100]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-6/igt@kms_plane@plane-panning-top-left.html

  * igt@kms_plane_scaling@plane-downscale-factor-0-75-with-modifiers@pipe-a:
    - shard-lnl:          [PASS][101] -> [SKIP][102] ([Intel XE#2763] / [Intel XE#6886]) +3 other tests skip
   [101]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-8/igt@kms_plane_scaling@plane-downscale-factor-0-75-with-modifiers@pipe-a.html
   [102]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-6/igt@kms_plane_scaling@plane-downscale-factor-0-75-with-modifiers@pipe-a.html

  * igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-modifiers:
    - shard-lnl:          [PASS][103] -> [SKIP][104] ([Intel XE#2763] / [Intel XE#6886] / [Intel XE#7687] / [Intel XE#9125]) +3 other tests skip
   [103]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-1/igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-modifiers.html
   [104]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-6/igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-modifiers.html

  * igt@kms_plane_scaling@planes-downscale-factor-0-75@pipe-a:
    - shard-lnl:          NOTRUN -> [SKIP][105] ([Intel XE#2763] / [Intel XE#6886]) +3 other tests skip
   [105]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-7/igt@kms_plane_scaling@planes-downscale-factor-0-75@pipe-a.html

  * igt@kms_pm_backlight@bad-brightness:
    - shard-lnl:          [PASS][106] -> [SKIP][107] ([Intel XE#870])
   [106]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-2/igt@kms_pm_backlight@bad-brightness.html
   [107]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-6/igt@kms_pm_backlight@bad-brightness.html

  * igt@kms_pm_backlight@fade:
    - shard-bmg:          NOTRUN -> [SKIP][108] ([Intel XE#7376] / [Intel XE#7760] / [Intel XE#870])
   [108]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-bmg-7/igt@kms_pm_backlight@fade.html

  * igt@kms_pm_dc@dc5-psr:
    - shard-lnl:          [PASS][109] -> [SKIP][110] ([Intel XE#7794])
   [109]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-4/igt@kms_pm_dc@dc5-psr.html
   [110]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-6/igt@kms_pm_dc@dc5-psr.html
    - shard-bmg:          NOTRUN -> [SKIP][111] ([Intel XE#7794])
   [111]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-bmg-2/igt@kms_pm_dc@dc5-psr.html

  * igt@kms_pm_dc@dc6-dpms:
    - shard-lnl:          [PASS][112] -> [FAIL][113] ([Intel XE#8399])
   [112]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-3/igt@kms_pm_dc@dc6-dpms.html
   [113]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-7/igt@kms_pm_dc@dc6-dpms.html

  * igt@kms_pm_lpsp@kms-lpsp:
    - shard-lnl:          [PASS][114] -> [SKIP][115] ([Intel XE#7643])
   [114]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-3/igt@kms_pm_lpsp@kms-lpsp.html
   [115]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-6/igt@kms_pm_lpsp@kms-lpsp.html

  * igt@kms_pm_rpm@modeset-lpsp:
    - shard-lnl:          [PASS][116] -> [SKIP][117] ([Intel XE#1439] / [Intel XE#3141] / [Intel XE#7383] / [Intel XE#836])
   [116]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-8/igt@kms_pm_rpm@modeset-lpsp.html
   [117]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-6/igt@kms_pm_rpm@modeset-lpsp.html

  * igt@kms_pm_rpm@system-suspend-modeset:
    - shard-lnl:          [PASS][118] -> [SKIP][119] ([Intel XE#7106]) +1 other test skip
   [118]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-1/igt@kms_pm_rpm@system-suspend-modeset.html
   [119]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-6/igt@kms_pm_rpm@system-suspend-modeset.html

  * igt@kms_pm_rpm@universal-planes:
    - shard-lnl:          NOTRUN -> [SKIP][120] ([Intel XE#4886])
   [120]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-6/igt@kms_pm_rpm@universal-planes.html

  * igt@kms_psr2_sf@fbc-psr2-overlay-plane-move-continuous-exceed-fully-sf:
    - shard-lnl:          NOTRUN -> [SKIP][121] ([Intel XE#2893] / [Intel XE#4608] / [Intel XE#7304])
   [121]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-5/igt@kms_psr2_sf@fbc-psr2-overlay-plane-move-continuous-exceed-fully-sf.html

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

  * igt@kms_psr2_sf@fbc-psr2-overlay-plane-move-continuous-sf:
    - shard-bmg:          NOTRUN -> [SKIP][123] ([Intel XE#1489]) +7 other tests skip
   [123]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-bmg-3/igt@kms_psr2_sf@fbc-psr2-overlay-plane-move-continuous-sf.html

  * igt@kms_psr2_sf@fbc-psr2-overlay-plane-update-continuous-sf@pipe-b-edp-1:
    - shard-lnl:          NOTRUN -> [SKIP][124] ([Intel XE#4608] / [Intel XE#7304]) +3 other tests skip
   [124]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-1/igt@kms_psr2_sf@fbc-psr2-overlay-plane-update-continuous-sf@pipe-b-edp-1.html

  * igt@kms_psr2_sf@pr-plane-move-sf-dmg-area:
    - shard-lnl:          NOTRUN -> [SKIP][125] ([Intel XE#2893] / [Intel XE#7304]) +1 other test skip
   [125]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-3/igt@kms_psr2_sf@pr-plane-move-sf-dmg-area.html

  * igt@kms_psr2_su@page_flip-p010:
    - shard-bmg:          NOTRUN -> [SKIP][126] ([Intel XE#2387] / [Intel XE#7429])
   [126]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-bmg-3/igt@kms_psr2_su@page_flip-p010.html

  * igt@kms_psr@fbc-psr2-primary-blt@edp-1:
    - shard-lnl:          NOTRUN -> [SKIP][127] ([Intel XE#1406] / [Intel XE#4609] / [Intel XE#7345]) +1 other test skip
   [127]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-3/igt@kms_psr@fbc-psr2-primary-blt@edp-1.html

  * igt@kms_psr@fbc-psr2-primary-page-flip:
    - shard-lnl:          NOTRUN -> [SKIP][128] ([Intel XE#1406] / [Intel XE#7345])
   [128]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-1/igt@kms_psr@fbc-psr2-primary-page-flip.html

  * igt@kms_psr@pr-dpms:
    - shard-lnl:          NOTRUN -> [SKIP][129] ([Intel XE#1406]) +1 other test skip
   [129]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-2/igt@kms_psr@pr-dpms.html

  * igt@kms_psr@pr-sprite-plane-onoff:
    - shard-bmg:          NOTRUN -> [SKIP][130] ([Intel XE#2234] / [Intel XE#2850]) +8 other tests skip
   [130]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-bmg-8/igt@kms_psr@pr-sprite-plane-onoff.html

  * igt@kms_psr@psr2-sprite-plane-onoff:
    - shard-lnl:          [PASS][131] -> [SKIP][132] ([Intel XE#2850] / [Intel XE#929]) +5 other tests skip
   [131]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-8/igt@kms_psr@psr2-sprite-plane-onoff.html
   [132]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-6/igt@kms_psr@psr2-sprite-plane-onoff.html

  * igt@kms_psr_stress_test@flip-primary-invalidate-overlay:
    - shard-lnl:          NOTRUN -> [SKIP][133] ([Intel XE#7795])
   [133]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-6/igt@kms_psr_stress_test@flip-primary-invalidate-overlay.html

  * igt@kms_psr_stress_test@invalidate-primary-flip-overlay:
    - shard-bmg:          NOTRUN -> [SKIP][134] ([Intel XE#7795])
   [134]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-bmg-6/igt@kms_psr_stress_test@invalidate-primary-flip-overlay.html

  * igt@kms_rotation_crc@primary-yf-tiled-reflect-x-270:
    - shard-lnl:          NOTRUN -> [SKIP][135] ([Intel XE#3414] / [Intel XE#3904] / [Intel XE#7342])
   [135]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-4/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-270.html

  * igt@kms_rotation_crc@sprite-rotation-90:
    - shard-bmg:          NOTRUN -> [SKIP][136] ([Intel XE#3904] / [Intel XE#7342]) +1 other test skip
   [136]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-bmg-3/igt@kms_rotation_crc@sprite-rotation-90.html

  * igt@kms_scaling_modes@scaling-mode-full-aspect:
    - shard-bmg:          NOTRUN -> [SKIP][137] ([Intel XE#2413])
   [137]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-bmg-5/igt@kms_scaling_modes@scaling-mode-full-aspect.html

  * igt@kms_sharpness_filter@filter-basic:
    - shard-bmg:          NOTRUN -> [SKIP][138] ([Intel XE#6503]) +1 other test skip
   [138]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-bmg-10/igt@kms_sharpness_filter@filter-basic.html

  * igt@kms_vrr@flipline:
    - shard-bmg:          NOTRUN -> [SKIP][139] ([Intel XE#1499]) +2 other tests skip
   [139]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-bmg-4/igt@kms_vrr@flipline.html

  * igt@sriov_basic@enable-vfs-autoprobe-off:
    - shard-lnl:          NOTRUN -> [SKIP][140] ([Intel XE#1091] / [Intel XE#2849])
   [140]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-6/igt@sriov_basic@enable-vfs-autoprobe-off.html

  * igt@sriov_basic@pf-unbind-with-vfs-enabled-numvfs-all:
    - shard-bmg:          NOTRUN -> [ABORT][141] ([Intel XE#8868])
   [141]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-bmg-7/igt@sriov_basic@pf-unbind-with-vfs-enabled-numvfs-all.html

  * igt@xe_create@multigpu-create-massive-size:
    - shard-bmg:          NOTRUN -> [SKIP][142] ([Intel XE#2504] / [Intel XE#7319] / [Intel XE#7350])
   [142]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-bmg-7/igt@xe_create@multigpu-create-massive-size.html

  * igt@xe_cw_post_sync@walker-post-sync:
    - shard-bmg:          NOTRUN -> [SKIP][143] ([Intel XE#8608])
   [143]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-bmg-1/igt@xe_cw_post_sync@walker-post-sync.html

  * igt@xe_evict@evict-beng-mixed-many-threads-small:
    - shard-bmg:          [PASS][144] -> [INCOMPLETE][145] ([Intel XE#6321] / [Intel XE#8355])
   [144]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-bmg-5/igt@xe_evict@evict-beng-mixed-many-threads-small.html
   [145]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-bmg-1/igt@xe_evict@evict-beng-mixed-many-threads-small.html

  * igt@xe_evict@evict-small-multi-queue-cm:
    - shard-bmg:          NOTRUN -> [SKIP][146] ([Intel XE#8370]) +2 other tests skip
   [146]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-bmg-8/igt@xe_evict@evict-small-multi-queue-cm.html

  * igt@xe_evict_ccs@evict-overcommit-parallel-nofree-samefd:
    - shard-lnl:          NOTRUN -> [SKIP][147] ([Intel XE#6540] / [Intel XE#688]) +4 other tests skip
   [147]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-8/igt@xe_evict_ccs@evict-overcommit-parallel-nofree-samefd.html

  * igt@xe_exec_balancer@no-exec-cm-parallel-userptr-invalidate-race:
    - shard-lnl:          NOTRUN -> [SKIP][148] ([Intel XE#7482]) +5 other tests skip
   [148]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-1/igt@xe_exec_balancer@no-exec-cm-parallel-userptr-invalidate-race.html

  * igt@xe_exec_basic@multigpu-many-execqueues-many-vm-userptr-rebind:
    - shard-bmg:          NOTRUN -> [SKIP][149] ([Intel XE#2322] / [Intel XE#7372]) +6 other tests skip
   [149]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-bmg-9/igt@xe_exec_basic@multigpu-many-execqueues-many-vm-userptr-rebind.html

  * igt@xe_exec_basic@multigpu-no-exec-basic-defer-mmap:
    - shard-lnl:          NOTRUN -> [SKIP][150] ([Intel XE#1392]) +1 other test skip
   [150]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-8/igt@xe_exec_basic@multigpu-no-exec-basic-defer-mmap.html

  * igt@xe_exec_fault_mode@many-execqueues-multi-queue-userptr:
    - shard-bmg:          NOTRUN -> [SKIP][151] ([Intel XE#8374]) +12 other tests skip
   [151]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-bmg-7/igt@xe_exec_fault_mode@many-execqueues-multi-queue-userptr.html

  * igt@xe_exec_fault_mode@twice-multi-queue-userptr-imm:
    - shard-lnl:          NOTRUN -> [SKIP][152] ([Intel XE#8374]) +3 other tests skip
   [152]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-6/igt@xe_exec_fault_mode@twice-multi-queue-userptr-imm.html

  * igt@xe_exec_multi_queue@few-execs-preempt-mode-userptr-invalidate:
    - shard-bmg:          NOTRUN -> [SKIP][153] ([Intel XE#8364]) +21 other tests skip
   [153]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-bmg-9/igt@xe_exec_multi_queue@few-execs-preempt-mode-userptr-invalidate.html

  * igt@xe_exec_multi_queue@many-execs-preempt-mode-dyn-priority:
    - shard-lnl:          NOTRUN -> [SKIP][154] ([Intel XE#8364]) +12 other tests skip
   [154]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-6/igt@xe_exec_multi_queue@many-execs-preempt-mode-dyn-priority.html

  * igt@xe_exec_reset@cm-multi-queue-cat-error:
    - shard-bmg:          NOTRUN -> [SKIP][155] ([Intel XE#8369])
   [155]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-bmg-3/igt@xe_exec_reset@cm-multi-queue-cat-error.html

  * igt@xe_exec_reset@multi-queue-cat-error-on-secondary:
    - shard-lnl:          NOTRUN -> [SKIP][156] ([Intel XE#8369])
   [156]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-8/igt@xe_exec_reset@multi-queue-cat-error-on-secondary.html

  * igt@xe_exec_system_allocator@pat-index-madvise-pat-idx-uc-comp-single-vma:
    - shard-lnl:          NOTRUN -> [SKIP][157] ([Intel XE#6196])
   [157]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-6/igt@xe_exec_system_allocator@pat-index-madvise-pat-idx-uc-comp-single-vma.html

  * igt@xe_exec_threads@threads-multi-queue-hang-fd-userptr-invalidate-race:
    - shard-bmg:          NOTRUN -> [SKIP][158] ([Intel XE#8378]) +3 other tests skip
   [158]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-bmg-5/igt@xe_exec_threads@threads-multi-queue-hang-fd-userptr-invalidate-race.html

  * igt@xe_exec_threads@threads-multi-queue-mixed-userptr:
    - shard-lnl:          NOTRUN -> [SKIP][159] ([Intel XE#8378]) +2 other tests skip
   [159]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-2/igt@xe_exec_threads@threads-multi-queue-mixed-userptr.html

  * igt@xe_mmap@pci-membarrier-bad-object:
    - shard-lnl:          NOTRUN -> [SKIP][160] ([Intel XE#5100] / [Intel XE#7322] / [Intel XE#7408])
   [160]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-2/igt@xe_mmap@pci-membarrier-bad-object.html

  * igt@xe_mmap@small-bar:
    - shard-bmg:          NOTRUN -> [SKIP][161] ([Intel XE#586] / [Intel XE#7323] / [Intel XE#7384])
   [161]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-bmg-1/igt@xe_mmap@small-bar.html

  * igt@xe_module_load@load:
    - shard-lnl:          ([PASS][162], [PASS][163], [PASS][164], [PASS][165], [PASS][166], [PASS][167], [PASS][168], [PASS][169], [PASS][170], [PASS][171], [PASS][172], [PASS][173], [PASS][174], [PASS][175], [PASS][176], [PASS][177], [PASS][178], [PASS][179], [PASS][180], [PASS][181], [PASS][182], [PASS][183], [PASS][184], [PASS][185], [PASS][186]) -> ([PASS][187], [PASS][188], [PASS][189], [PASS][190], [PASS][191], [PASS][192], [PASS][193], [PASS][194], [PASS][195], [PASS][196], [PASS][197], [PASS][198], [PASS][199], [PASS][200], [PASS][201], [PASS][202], [PASS][203], [PASS][204], [PASS][205], [PASS][206], [PASS][207], [PASS][208], [PASS][209], [SKIP][210], [PASS][211], [PASS][212]) ([Intel XE#378] / [Intel XE#7405])
   [162]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-2/igt@xe_module_load@load.html
   [163]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-4/igt@xe_module_load@load.html
   [164]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-4/igt@xe_module_load@load.html
   [165]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-3/igt@xe_module_load@load.html
   [166]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-8/igt@xe_module_load@load.html
   [167]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-8/igt@xe_module_load@load.html
   [168]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-8/igt@xe_module_load@load.html
   [169]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-7/igt@xe_module_load@load.html
   [170]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-7/igt@xe_module_load@load.html
   [171]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-5/igt@xe_module_load@load.html
   [172]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-4/igt@xe_module_load@load.html
   [173]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-7/igt@xe_module_load@load.html
   [174]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-2/igt@xe_module_load@load.html
   [175]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-2/igt@xe_module_load@load.html
   [176]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-6/igt@xe_module_load@load.html
   [177]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-6/igt@xe_module_load@load.html
   [178]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-3/igt@xe_module_load@load.html
   [179]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-1/igt@xe_module_load@load.html
   [180]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-1/igt@xe_module_load@load.html
   [181]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-3/igt@xe_module_load@load.html
   [182]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-5/igt@xe_module_load@load.html
   [183]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-8/igt@xe_module_load@load.html
   [184]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-6/igt@xe_module_load@load.html
   [185]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-6/igt@xe_module_load@load.html
   [186]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-1/igt@xe_module_load@load.html
   [187]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-1/igt@xe_module_load@load.html
   [188]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-1/igt@xe_module_load@load.html
   [189]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-1/igt@xe_module_load@load.html
   [190]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-8/igt@xe_module_load@load.html
   [191]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-8/igt@xe_module_load@load.html
   [192]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-8/igt@xe_module_load@load.html
   [193]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-5/igt@xe_module_load@load.html
   [194]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-6/igt@xe_module_load@load.html
   [195]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-6/igt@xe_module_load@load.html
   [196]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-3/igt@xe_module_load@load.html
   [197]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-3/igt@xe_module_load@load.html
   [198]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-5/igt@xe_module_load@load.html
   [199]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-5/igt@xe_module_load@load.html
   [200]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-7/igt@xe_module_load@load.html
   [201]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-7/igt@xe_module_load@load.html
   [202]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-4/igt@xe_module_load@load.html
   [203]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-4/igt@xe_module_load@load.html
   [204]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-4/igt@xe_module_load@load.html
   [205]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-6/igt@xe_module_load@load.html
   [206]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-2/igt@xe_module_load@load.html
   [207]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-6/igt@xe_module_load@load.html
   [208]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-2/igt@xe_module_load@load.html
   [209]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-2/igt@xe_module_load@load.html
   [210]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-7/igt@xe_module_load@load.html
   [211]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-3/igt@xe_module_load@load.html
   [212]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-7/igt@xe_module_load@load.html

  * igt@xe_multigpu_svm@mgpu-pagefault-basic:
    - shard-bmg:          NOTRUN -> [SKIP][213] ([Intel XE#6964]) +2 other tests skip
   [213]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-bmg-8/igt@xe_multigpu_svm@mgpu-pagefault-basic.html

  * igt@xe_page_reclaim@basic-mixed:
    - shard-bmg:          NOTRUN -> [SKIP][214] ([Intel XE#7793]) +1 other test skip
   [214]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-bmg-4/igt@xe_page_reclaim@basic-mixed.html

  * igt@xe_page_reclaim@boundary-split:
    - shard-lnl:          NOTRUN -> [SKIP][215] ([Intel XE#7793])
   [215]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-3/igt@xe_page_reclaim@boundary-split.html

  * igt@xe_pm@d3cold-basic-exec:
    - shard-bmg:          NOTRUN -> [SKIP][216] ([Intel XE#2284] / [Intel XE#7370])
   [216]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-bmg-10/igt@xe_pm@d3cold-basic-exec.html

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

  * igt@xe_pxp@display-black-pxp-fb:
    - shard-bmg:          NOTRUN -> [SKIP][218] ([Intel XE#4733] / [Intel XE#7417])
   [218]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-bmg-10/igt@xe_pxp@display-black-pxp-fb.html

  * igt@xe_query@multigpu-query-cs-cycles:
    - shard-lnl:          NOTRUN -> [SKIP][219] ([Intel XE#944]) +1 other test skip
   [219]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-4/igt@xe_query@multigpu-query-cs-cycles.html

  * igt@xe_query@multigpu-query-invalid-uc-fw-version-mbz:
    - shard-bmg:          NOTRUN -> [SKIP][220] ([Intel XE#944]) +4 other tests skip
   [220]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-bmg-3/igt@xe_query@multigpu-query-invalid-uc-fw-version-mbz.html

  * igt@xe_sriov_admin@bulk-sched-priority-vfs-disabled:
    - shard-lnl:          NOTRUN -> [SKIP][221] ([Intel XE#7174]) +1 other test skip
   [221]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-1/igt@xe_sriov_admin@bulk-sched-priority-vfs-disabled.html

  * igt@xe_sriov_flr@flr-vf1-clear:
    - shard-bmg:          NOTRUN -> [FAIL][222] ([Intel XE#6569])
   [222]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-bmg-1/igt@xe_sriov_flr@flr-vf1-clear.html

  * igt@xe_sriov_vram@vf-access-after-resize-up:
    - shard-lnl:          NOTRUN -> [SKIP][223] ([Intel XE#6376] / [Intel XE#7330] / [Intel XE#7422]) +1 other test skip
   [223]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-4/igt@xe_sriov_vram@vf-access-after-resize-up.html

  * igt@xe_wedged@wedged-at-any-timeout:
    - shard-bmg:          NOTRUN -> [DMESG-WARN][224] ([Intel XE#8963])
   [224]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-bmg-4/igt@xe_wedged@wedged-at-any-timeout.html

  
#### Possible fixes ####

  * igt@fbdev@unaligned-read:
    - shard-lnl:          [SKIP][225] ([Intel XE#2134]) -> [PASS][226]
   [225]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-6/igt@fbdev@unaligned-read.html
   [226]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-5/igt@fbdev@unaligned-read.html

  * igt@intel_hwmon@hwmon-write:
    - shard-bmg:          [FAIL][227] ([Intel XE#8583]) -> [PASS][228]
   [227]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-bmg-8/igt@intel_hwmon@hwmon-write.html
   [228]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-bmg-5/igt@intel_hwmon@hwmon-write.html

  * igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs:
    - shard-bmg:          [INCOMPLETE][229] ([Intel XE#7084] / [Intel XE#8150]) -> [PASS][230] +1 other test pass
   [229]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-bmg-3/igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs.html
   [230]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-bmg-1/igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs.html

  * igt@kms_color@ctm-0-75:
    - shard-lnl:          [SKIP][231] ([Intel XE#3297]) -> [PASS][232] +1 other test pass
   [231]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-6/igt@kms_color@ctm-0-75.html
   [232]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-2/igt@kms_color@ctm-0-75.html

  * igt@kms_color_pipeline@plane-lut1d-post-ctm3x4:
    - shard-lnl:          [SKIP][233] ([Intel XE#7006]) -> [PASS][234]
   [233]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-6/igt@kms_color_pipeline@plane-lut1d-post-ctm3x4.html
   [234]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-2/igt@kms_color_pipeline@plane-lut1d-post-ctm3x4.html

  * igt@kms_feature_discovery@psr1:
    - shard-lnl:          [SKIP][235] ([Intel XE#1135]) -> [PASS][236]
   [235]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-6/igt@kms_feature_discovery@psr1.html
   [236]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-5/igt@kms_feature_discovery@psr1.html

  * igt@kms_flip@flip-vs-absolute-wf_vblank:
    - shard-lnl:          [SKIP][237] ([Intel XE#2482]) -> [PASS][238] +5 other tests pass
   [237]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-6/igt@kms_flip@flip-vs-absolute-wf_vblank.html
   [238]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-5/igt@kms_flip@flip-vs-absolute-wf_vblank.html

  * igt@kms_flip@flip-vs-dpms-on-nop:
    - shard-lnl:          [SKIP][239] ([Intel XE#9132]) -> [PASS][240]
   [239]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-6/igt@kms_flip@flip-vs-dpms-on-nop.html
   [240]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-5/igt@kms_flip@flip-vs-dpms-on-nop.html

  * igt@kms_flip_scaled_crc@flip-64bpp-xtile-to-32bpp-xtile-upscaling:
    - shard-lnl:          [SKIP][241] ([Intel XE#1745]) -> [PASS][242]
   [241]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-6/igt@kms_flip_scaled_crc@flip-64bpp-xtile-to-32bpp-xtile-upscaling.html
   [242]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-4/igt@kms_flip_scaled_crc@flip-64bpp-xtile-to-32bpp-xtile-upscaling.html

  * igt@kms_flip_scaled_crc@flip-p010-4tile-to-p016-4tile:
    - shard-lnl:          [SKIP][243] -> [PASS][244]
   [243]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-6/igt@kms_flip_scaled_crc@flip-p010-4tile-to-p016-4tile.html
   [244]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-7/igt@kms_flip_scaled_crc@flip-p010-4tile-to-p016-4tile.html

  * igt@kms_frontbuffer_tracking@fbc-1p-offscreen-pri-shrfb-draw-render:
    - shard-lnl:          [SKIP][245] ([Intel XE#7779]) -> [PASS][246] +1 other test pass
   [245]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-6/igt@kms_frontbuffer_tracking@fbc-1p-offscreen-pri-shrfb-draw-render.html
   [246]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-2/igt@kms_frontbuffer_tracking@fbc-1p-offscreen-pri-shrfb-draw-render.html

  * igt@kms_frontbuffer_tracking@psr-1p-primscrn-indfb-msflip-blt:
    - shard-lnl:          [SKIP][247] ([Intel XE#2548] / [Intel XE#7779]) -> [PASS][248] +17 other tests pass
   [247]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-6/igt@kms_frontbuffer_tracking@psr-1p-primscrn-indfb-msflip-blt.html
   [248]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-8/igt@kms_frontbuffer_tracking@psr-1p-primscrn-indfb-msflip-blt.html

  * igt@kms_invalid_mode@zero-vdisplay:
    - shard-lnl:          [SKIP][249] ([Intel XE#2568]) -> [PASS][250] +1 other test pass
   [249]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-6/igt@kms_invalid_mode@zero-vdisplay.html
   [250]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-2/igt@kms_invalid_mode@zero-vdisplay.html

  * igt@kms_plane@plane-position-hole-dpms:
    - shard-lnl:          [SKIP][251] ([Intel XE#9128]) -> [PASS][252] +2 other tests pass
   [251]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-6/igt@kms_plane@plane-position-hole-dpms.html
   [252]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-2/igt@kms_plane@plane-position-hole-dpms.html

  * igt@kms_plane_scaling@plane-scaler-unity-scaling-with-modifiers:
    - shard-lnl:          [SKIP][253] ([Intel XE#2763] / [Intel XE#6886] / [Intel XE#7687] / [Intel XE#9125]) -> [PASS][254] +1 other test pass
   [253]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-6/igt@kms_plane_scaling@plane-scaler-unity-scaling-with-modifiers.html
   [254]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-4/igt@kms_plane_scaling@plane-scaler-unity-scaling-with-modifiers.html

  * igt@kms_plane_scaling@plane-scaler-unity-scaling-with-modifiers@pipe-b:
    - shard-lnl:          [SKIP][255] ([Intel XE#2763] / [Intel XE#6886]) -> [PASS][256] +1 other test pass
   [255]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-6/igt@kms_plane_scaling@plane-scaler-unity-scaling-with-modifiers@pipe-b.html
   [256]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-4/igt@kms_plane_scaling@plane-scaler-unity-scaling-with-modifiers@pipe-b.html

  * igt@kms_pm_dc@dc5-psr-suspend-resume:
    - shard-lnl:          [SKIP][257] ([Intel XE#8854]) -> [PASS][258]
   [257]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-6/igt@kms_pm_dc@dc5-psr-suspend-resume.html
   [258]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-3/igt@kms_pm_dc@dc5-psr-suspend-resume.html

  * igt@kms_properties@colorop-properties-atomic:
    - shard-lnl:          [SKIP][259] ([Intel XE#9126]) -> [PASS][260]
   [259]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-6/igt@kms_properties@colorop-properties-atomic.html
   [260]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-8/igt@kms_properties@colorop-properties-atomic.html

  * igt@kms_psr2_sf@psr2-overlay-plane-move-continuous-exceed-fully-sf:
    - shard-lnl:          [SKIP][261] ([Intel XE#1489]) -> [PASS][262] +2 other tests pass
   [261]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-6/igt@kms_psr2_sf@psr2-overlay-plane-move-continuous-exceed-fully-sf.html
   [262]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-5/igt@kms_psr2_sf@psr2-overlay-plane-move-continuous-exceed-fully-sf.html

  * igt@kms_psr@psr2-sprite-render:
    - shard-lnl:          [SKIP][263] ([Intel XE#2850] / [Intel XE#929]) -> [PASS][264] +4 other tests pass
   [263]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-6/igt@kms_psr@psr2-sprite-render.html
   [264]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-5/igt@kms_psr@psr2-sprite-render.html

  * igt@kms_vblank@query-forked:
    - shard-lnl:          [SKIP][265] ([Intel XE#9125]) -> [PASS][266] +38 other tests pass
   [265]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-6/igt@kms_vblank@query-forked.html
   [266]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-7/igt@kms_vblank@query-forked.html

  * igt@xe_fault_injection@vm-create-fail-xe_vm_create_scratch:
    - shard-bmg:          [ABORT][267] ([Intel XE#8007]) -> [PASS][268] +2 other tests pass
   [267]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-bmg-5/igt@xe_fault_injection@vm-create-fail-xe_vm_create_scratch.html
   [268]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-bmg-5/igt@xe_fault_injection@vm-create-fail-xe_vm_create_scratch.html

  * igt@xe_sriov_flr@flr-each-isolation:
    - shard-bmg:          [FAIL][269] ([Intel XE#6569]) -> [PASS][270]
   [269]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-bmg-6/igt@xe_sriov_flr@flr-each-isolation.html
   [270]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-bmg-8/igt@xe_sriov_flr@flr-each-isolation.html

  
#### Warnings ####

  * igt@kms_atomic_transition@plane-all-modeset-transition:
    - shard-lnl:          [SKIP][271] ([Intel XE#9125]) -> [SKIP][272] ([Intel XE#3279])
   [271]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-6/igt@kms_atomic_transition@plane-all-modeset-transition.html
   [272]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-1/igt@kms_atomic_transition@plane-all-modeset-transition.html

  * igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-0-hflip:
    - shard-lnl:          [SKIP][273] ([Intel XE#1407]) -> [SKIP][274] ([Intel XE#9125]) +1 other test skip
   [273]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-7/igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-0-hflip.html
   [274]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-6/igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-0-hflip.html

  * igt@kms_big_fb@linear-8bpp-rotate-270:
    - shard-lnl:          [SKIP][275] ([Intel XE#9125]) -> [SKIP][276] ([Intel XE#1407]) +5 other tests skip
   [275]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-6/igt@kms_big_fb@linear-8bpp-rotate-270.html
   [276]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-2/igt@kms_big_fb@linear-8bpp-rotate-270.html

  * igt@kms_big_fb@y-tiled-addfb:
    - shard-lnl:          [SKIP][277] ([Intel XE#9125]) -> [SKIP][278] ([Intel XE#1467] / [Intel XE#7367])
   [277]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-6/igt@kms_big_fb@y-tiled-addfb.html
   [278]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-1/igt@kms_big_fb@y-tiled-addfb.html

  * igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-180:
    - shard-lnl:          [SKIP][279] ([Intel XE#1124]) -> [SKIP][280] ([Intel XE#9125]) +7 other tests skip
   [279]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-1/igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-180.html
   [280]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-6/igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-180.html

  * igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-180-async-flip:
    - shard-lnl:          [SKIP][281] ([Intel XE#9125]) -> [SKIP][282] ([Intel XE#1124]) +9 other tests skip
   [281]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-6/igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-180-async-flip.html
   [282]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-7/igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-180-async-flip.html

  * igt@kms_bw@connected-linear-tiling-2-displays-target-1920x1080p:
    - shard-lnl:          [SKIP][283] ([Intel XE#7679]) -> [SKIP][284] ([Intel XE#9125])
   [283]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-1/igt@kms_bw@connected-linear-tiling-2-displays-target-1920x1080p.html
   [284]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-6/igt@kms_bw@connected-linear-tiling-2-displays-target-1920x1080p.html

  * igt@kms_bw@connected-linear-tiling-2-displays-target-2160x1440p:
    - shard-lnl:          [SKIP][285] ([Intel XE#9125]) -> [SKIP][286] ([Intel XE#7679])
   [285]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-6/igt@kms_bw@connected-linear-tiling-2-displays-target-2160x1440p.html
   [286]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-3/igt@kms_bw@connected-linear-tiling-2-displays-target-2160x1440p.html

  * igt@kms_bw@linear-tiling-3-displays-target-1920x1080p:
    - shard-lnl:          [SKIP][287] ([Intel XE#9125]) -> [SKIP][288] ([Intel XE#367])
   [287]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-6/igt@kms_bw@linear-tiling-3-displays-target-1920x1080p.html
   [288]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-4/igt@kms_bw@linear-tiling-3-displays-target-1920x1080p.html

  * igt@kms_bw@linear-tiling-3-displays-target-3840x2160p:
    - shard-lnl:          [SKIP][289] ([Intel XE#367]) -> [SKIP][290] ([Intel XE#9125])
   [289]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-7/igt@kms_bw@linear-tiling-3-displays-target-3840x2160p.html
   [290]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-6/igt@kms_bw@linear-tiling-3-displays-target-3840x2160p.html

  * igt@kms_bw@linear-tiling-4-displays-target-2160x1440p:
    - shard-lnl:          [SKIP][291] ([Intel XE#8365]) -> [SKIP][292] ([Intel XE#9125])
   [291]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-1/igt@kms_bw@linear-tiling-4-displays-target-2160x1440p.html
   [292]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-6/igt@kms_bw@linear-tiling-4-displays-target-2160x1440p.html

  * igt@kms_ccs@bad-pixel-format-yf-tiled-ccs:
    - shard-lnl:          [SKIP][293] ([Intel XE#9125]) -> [SKIP][294] ([Intel XE#2887]) +12 other tests skip
   [293]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-6/igt@kms_ccs@bad-pixel-format-yf-tiled-ccs.html
   [294]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-8/igt@kms_ccs@bad-pixel-format-yf-tiled-ccs.html

  * igt@kms_ccs@ccs-on-another-bo-y-tiled-gen12-mc-ccs:
    - shard-lnl:          [SKIP][295] ([Intel XE#2887]) -> [SKIP][296] ([Intel XE#9125]) +6 other tests skip
   [295]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-5/igt@kms_ccs@ccs-on-another-bo-y-tiled-gen12-mc-ccs.html
   [296]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-6/igt@kms_ccs@ccs-on-another-bo-y-tiled-gen12-mc-ccs.html

  * igt@kms_ccs@crc-primary-rotation-180-4-tiled-bmg-ccs:
    - shard-lnl:          [SKIP][297] ([Intel XE#9125]) -> [SKIP][298] ([Intel XE#2669] / [Intel XE#7389])
   [297]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-6/igt@kms_ccs@crc-primary-rotation-180-4-tiled-bmg-ccs.html
   [298]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-7/igt@kms_ccs@crc-primary-rotation-180-4-tiled-bmg-ccs.html

  * igt@kms_ccs@crc-primary-suspend-4-tiled-dg2-mc-ccs:
    - shard-lnl:          [SKIP][299] ([Intel XE#3432]) -> [SKIP][300] ([Intel XE#9125])
   [299]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-7/igt@kms_ccs@crc-primary-suspend-4-tiled-dg2-mc-ccs.html
   [300]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-6/igt@kms_ccs@crc-primary-suspend-4-tiled-dg2-mc-ccs.html

  * igt@kms_ccs@crc-primary-suspend-y-tiled-gen12-rc-ccs-cc:
    - shard-lnl:          [SKIP][301] ([Intel XE#9125]) -> [SKIP][302] ([Intel XE#3432])
   [301]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-6/igt@kms_ccs@crc-primary-suspend-y-tiled-gen12-rc-ccs-cc.html
   [302]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-1/igt@kms_ccs@crc-primary-suspend-y-tiled-gen12-rc-ccs-cc.html

  * igt@kms_ccs@random-ccs-data-4-tiled-bmg-ccs:
    - shard-lnl:          [SKIP][303] ([Intel XE#2669] / [Intel XE#7389]) -> [SKIP][304] ([Intel XE#9125])
   [303]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-4/igt@kms_ccs@random-ccs-data-4-tiled-bmg-ccs.html
   [304]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-6/igt@kms_ccs@random-ccs-data-4-tiled-bmg-ccs.html

  * igt@kms_cdclk@mode-transition:
    - shard-lnl:          [SKIP][305] ([Intel XE#9125]) -> [SKIP][306] ([Intel XE#4417] / [Intel XE#5447])
   [305]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-6/igt@kms_cdclk@mode-transition.html
   [306]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-4/igt@kms_cdclk@mode-transition.html

  * igt@kms_cdclk@plane-scaling:
    - shard-lnl:          [SKIP][307] ([Intel XE#9125]) -> [SKIP][308] ([Intel XE#4416] / [Intel XE#7381])
   [307]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-6/igt@kms_cdclk@plane-scaling.html
   [308]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-3/igt@kms_cdclk@plane-scaling.html

  * igt@kms_content_protection@atomic-dpms-hdcp14:
    - shard-lnl:          [SKIP][309] ([Intel XE#7642]) -> [SKIP][310] ([Intel XE#9125]) +2 other tests skip
   [309]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-1/igt@kms_content_protection@atomic-dpms-hdcp14.html
   [310]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-6/igt@kms_content_protection@atomic-dpms-hdcp14.html

  * igt@kms_content_protection@dp-mst-lic-type-0:
    - shard-lnl:          [SKIP][311] ([Intel XE#307] / [Intel XE#6974]) -> [SKIP][312] ([Intel XE#9125])
   [311]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-2/igt@kms_content_protection@dp-mst-lic-type-0.html
   [312]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-6/igt@kms_content_protection@dp-mst-lic-type-0.html

  * igt@kms_content_protection@dp-mst-lic-type-0-hdcp14:
    - shard-lnl:          [SKIP][313] ([Intel XE#6974]) -> [SKIP][314] ([Intel XE#9125])
   [313]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-3/igt@kms_content_protection@dp-mst-lic-type-0-hdcp14.html
   [314]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-6/igt@kms_content_protection@dp-mst-lic-type-0-hdcp14.html

  * igt@kms_content_protection@dp-mst-lic-type-1:
    - shard-lnl:          [SKIP][315] ([Intel XE#9125]) -> [SKIP][316] ([Intel XE#307] / [Intel XE#6974])
   [315]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-6/igt@kms_content_protection@dp-mst-lic-type-1.html
   [316]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-5/igt@kms_content_protection@dp-mst-lic-type-1.html

  * igt@kms_content_protection@dp-mst-type-0-hdcp14:
    - shard-lnl:          [SKIP][317] ([Intel XE#9125]) -> [SKIP][318] ([Intel XE#6974])
   [317]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-6/igt@kms_content_protection@dp-mst-type-0-hdcp14.html
   [318]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-7/igt@kms_content_protection@dp-mst-type-0-hdcp14.html

  * igt@kms_content_protection@lic-type-0:
    - shard-lnl:          [SKIP][319] ([Intel XE#9125]) -> [SKIP][320] ([Intel XE#7642]) +1 other test skip
   [319]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-6/igt@kms_content_protection@lic-type-0.html
   [320]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-7/igt@kms_content_protection@lic-type-0.html

  * igt@kms_cursor_crc@cursor-offscreen-64x21:
    - shard-lnl:          [SKIP][321] ([Intel XE#9125]) -> [SKIP][322] ([Intel XE#1424]) +2 other tests skip
   [321]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-6/igt@kms_cursor_crc@cursor-offscreen-64x21.html
   [322]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-3/igt@kms_cursor_crc@cursor-offscreen-64x21.html

  * igt@kms_cursor_crc@cursor-onscreen-512x512:
    - shard-lnl:          [SKIP][323] ([Intel XE#2321] / [Intel XE#7355]) -> [SKIP][324] ([Intel XE#9125])
   [323]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-8/igt@kms_cursor_crc@cursor-onscreen-512x512.html
   [324]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-6/igt@kms_cursor_crc@cursor-onscreen-512x512.html

  * igt@kms_cursor_crc@cursor-rapid-movement-256x85:
    - shard-lnl:          [SKIP][325] ([Intel XE#1424]) -> [SKIP][326] ([Intel XE#9125]) +2 other tests skip
   [325]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-2/igt@kms_cursor_crc@cursor-rapid-movement-256x85.html
   [326]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-6/igt@kms_cursor_crc@cursor-rapid-movement-256x85.html

  * igt@kms_cursor_crc@cursor-sliding-512x170:
    - shard-lnl:          [SKIP][327] ([Intel XE#9125]) -> [SKIP][328] ([Intel XE#2321] / [Intel XE#7355]) +1 other test skip
   [327]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-6/igt@kms_cursor_crc@cursor-sliding-512x170.html
   [328]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-8/igt@kms_cursor_crc@cursor-sliding-512x170.html

  * igt@kms_cursor_legacy@2x-cursor-vs-flip-legacy:
    - shard-lnl:          [SKIP][329] ([Intel XE#309] / [Intel XE#7343]) -> [SKIP][330] ([Intel XE#9125])
   [329]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-4/igt@kms_cursor_legacy@2x-cursor-vs-flip-legacy.html
   [330]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-6/igt@kms_cursor_legacy@2x-cursor-vs-flip-legacy.html

  * igt@kms_cursor_legacy@2x-flip-vs-cursor-legacy:
    - shard-lnl:          [SKIP][331] ([Intel XE#9125]) -> [SKIP][332] ([Intel XE#309] / [Intel XE#7343]) +4 other tests skip
   [331]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-6/igt@kms_cursor_legacy@2x-flip-vs-cursor-legacy.html
   [332]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-7/igt@kms_cursor_legacy@2x-flip-vs-cursor-legacy.html

  * igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions:
    - shard-lnl:          [SKIP][333] ([Intel XE#323] / [Intel XE#6035]) -> [SKIP][334] ([Intel XE#9125])
   [333]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-2/igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions.html
   [334]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-6/igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions.html

  * igt@kms_dp_link_training@uhbr-mst:
    - shard-lnl:          [SKIP][335] ([Intel XE#9125]) -> [SKIP][336] ([Intel XE#4354] / [Intel XE#7386])
   [335]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-6/igt@kms_dp_link_training@uhbr-mst.html
   [336]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-7/igt@kms_dp_link_training@uhbr-mst.html

  * igt@kms_dp_linktrain_fallback@uhbr-to-hbr-fallback:
    - shard-lnl:          [SKIP][337] ([Intel XE#9009]) -> [SKIP][338] ([Intel XE#9125])
   [337]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-3/igt@kms_dp_linktrain_fallback@uhbr-to-hbr-fallback.html
   [338]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-6/igt@kms_dp_linktrain_fallback@uhbr-to-hbr-fallback.html

  * igt@kms_dsc@dsc-with-formats-bigjoiner:
    - shard-lnl:          [SKIP][339] ([Intel XE#9125]) -> [SKIP][340] ([Intel XE#8265]) +2 other tests skip
   [339]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-6/igt@kms_dsc@dsc-with-formats-bigjoiner.html
   [340]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-1/igt@kms_dsc@dsc-with-formats-bigjoiner.html

  * igt@kms_dsc@dsc-with-output-formats-with-bpc-ultrajoiner:
    - shard-lnl:          [SKIP][341] ([Intel XE#8265]) -> [SKIP][342] ([Intel XE#9125]) +3 other tests skip
   [341]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-1/igt@kms_dsc@dsc-with-output-formats-with-bpc-ultrajoiner.html
   [342]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-6/igt@kms_dsc@dsc-with-output-formats-with-bpc-ultrajoiner.html

  * igt@kms_fbc_dirty_rect@fbc-dirty-rectangle-dirtyfb-tests:
    - shard-lnl:          [SKIP][343] ([Intel XE#4422] / [Intel XE#7442]) -> [SKIP][344] ([Intel XE#9125])
   [343]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-4/igt@kms_fbc_dirty_rect@fbc-dirty-rectangle-dirtyfb-tests.html
   [344]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-6/igt@kms_fbc_dirty_rect@fbc-dirty-rectangle-dirtyfb-tests.html

  * igt@kms_flip@flip-vs-expired-vblank-interruptible:
    - shard-lnl:          [FAIL][345] ([Intel XE#301] / [Intel XE#3149]) -> [SKIP][346] ([Intel XE#2482])
   [345]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-3/igt@kms_flip@flip-vs-expired-vblank-interruptible.html
   [346]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-6/igt@kms_flip@flip-vs-expired-vblank-interruptible.html

  * igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-64bpp-4tile-downscaling:
    - shard-lnl:          [SKIP][347] ([Intel XE#1397] / [Intel XE#1745] / [Intel XE#7385]) -> [SKIP][348] ([Intel XE#1745]) +1 other test skip
   [347]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-1/igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-64bpp-4tile-downscaling.html
   [348]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-6/igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-64bpp-4tile-downscaling.html

  * igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-16bpp-4tile-downscaling:
    - shard-lnl:          [SKIP][349] ([Intel XE#1745]) -> [SKIP][350] ([Intel XE#1397] / [Intel XE#1745] / [Intel XE#7385])
   [349]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-6/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-16bpp-4tile-downscaling.html
   [350]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-8/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-16bpp-4tile-downscaling.html

  * igt@kms_frontbuffer_tracking@drrs-1p-primscrn-cur-indfb-onoff:
    - shard-lnl:          [SKIP][351] ([Intel XE#2548] / [Intel XE#7779]) -> [SKIP][352] ([Intel XE#6312] / [Intel XE#651]) +6 other tests skip
   [351]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-6/igt@kms_frontbuffer_tracking@drrs-1p-primscrn-cur-indfb-onoff.html
   [352]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-7/igt@kms_frontbuffer_tracking@drrs-1p-primscrn-cur-indfb-onoff.html

  * igt@kms_frontbuffer_tracking@drrshdr-abgr161616f-draw-render:
    - shard-lnl:          [SKIP][353] ([Intel XE#7779]) -> [SKIP][354] ([Intel XE#7061]) +5 other tests skip
   [353]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-6/igt@kms_frontbuffer_tracking@drrshdr-abgr161616f-draw-render.html
   [354]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-4/igt@kms_frontbuffer_tracking@drrshdr-abgr161616f-draw-render.html

  * igt@kms_frontbuffer_tracking@drrshdr-argb161616f-draw-render:
    - shard-lnl:          [SKIP][355] ([Intel XE#7061]) -> [SKIP][356] ([Intel XE#7779]) +2 other tests skip
   [355]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-2/igt@kms_frontbuffer_tracking@drrshdr-argb161616f-draw-render.html
   [356]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-6/igt@kms_frontbuffer_tracking@drrshdr-argb161616f-draw-render.html

  * igt@kms_frontbuffer_tracking@drrshdr-suspend:
    - shard-lnl:          [SKIP][357] ([Intel XE#7779]) -> [SKIP][358] ([Intel XE#6312]) +12 other tests skip
   [357]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-6/igt@kms_frontbuffer_tracking@drrshdr-suspend.html
   [358]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-7/igt@kms_frontbuffer_tracking@drrshdr-suspend.html

  * igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-shrfb-draw-blt:
    - shard-lnl:          [SKIP][359] ([Intel XE#2548] / [Intel XE#7779]) -> [SKIP][360] ([Intel XE#656] / [Intel XE#7905]) +33 other tests skip
   [359]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-6/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-shrfb-draw-blt.html
   [360]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-3/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-shrfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@fbc-abgr161616f-draw-mmap-wc:
    - shard-lnl:          [SKIP][361] ([Intel XE#7779]) -> [SKIP][362] ([Intel XE#7061] / [Intel XE#7356]) +4 other tests skip
   [361]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-6/igt@kms_frontbuffer_tracking@fbc-abgr161616f-draw-mmap-wc.html
   [362]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-8/igt@kms_frontbuffer_tracking@fbc-abgr161616f-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@fbcdrrs-1p-offscreen-pri-indfb-draw-blt:
    - shard-lnl:          [SKIP][363] ([Intel XE#6312]) -> [SKIP][364] ([Intel XE#7779]) +6 other tests skip
   [363]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-3/igt@kms_frontbuffer_tracking@fbcdrrs-1p-offscreen-pri-indfb-draw-blt.html
   [364]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-6/igt@kms_frontbuffer_tracking@fbcdrrs-1p-offscreen-pri-indfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@fbcdrrs-modesetfrombusy:
    - shard-lnl:          [SKIP][365] ([Intel XE#6312] / [Intel XE#651]) -> [SKIP][366] ([Intel XE#2548] / [Intel XE#7779]) +8 other tests skip
   [365]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-8/igt@kms_frontbuffer_tracking@fbcdrrs-modesetfrombusy.html
   [366]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-6/igt@kms_frontbuffer_tracking@fbcdrrs-modesetfrombusy.html

  * igt@kms_frontbuffer_tracking@fbcdrrshdr-tiling-y:
    - shard-lnl:          [SKIP][367] ([Intel XE#7779]) -> [SKIP][368] ([Intel XE#7399]) +1 other test skip
   [367]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-6/igt@kms_frontbuffer_tracking@fbcdrrshdr-tiling-y.html
   [368]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-5/igt@kms_frontbuffer_tracking@fbcdrrshdr-tiling-y.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-cur-indfb-move:
    - shard-lnl:          [SKIP][369] ([Intel XE#656] / [Intel XE#7905]) -> [SKIP][370] ([Intel XE#2548] / [Intel XE#7779]) +20 other tests skip
   [369]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-2/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-cur-indfb-move.html
   [370]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-6/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-cur-indfb-move.html

  * igt@kms_frontbuffer_tracking@fbcpsrhdr-1p-primscrn-cur-indfb-draw-blt:
    - shard-lnl:          [SKIP][371] ([Intel XE#7779]) -> [SKIP][372] ([Intel XE#7865]) +24 other tests skip
   [371]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-6/igt@kms_frontbuffer_tracking@fbcpsrhdr-1p-primscrn-cur-indfb-draw-blt.html
   [372]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-3/igt@kms_frontbuffer_tracking@fbcpsrhdr-1p-primscrn-cur-indfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@fbcpsrhdr-2p-scndscrn-shrfb-msflip-blt:
    - shard-lnl:          [SKIP][373] ([Intel XE#7779]) -> [SKIP][374] ([Intel XE#7905]) +32 other tests skip
   [373]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-6/igt@kms_frontbuffer_tracking@fbcpsrhdr-2p-scndscrn-shrfb-msflip-blt.html
   [374]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-1/igt@kms_frontbuffer_tracking@fbcpsrhdr-2p-scndscrn-shrfb-msflip-blt.html

  * igt@kms_frontbuffer_tracking@fbcpsrhdr-suspend:
    - shard-lnl:          [SKIP][375] ([Intel XE#7865]) -> [SKIP][376] ([Intel XE#7779]) +20 other tests skip
   [375]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-8/igt@kms_frontbuffer_tracking@fbcpsrhdr-suspend.html
   [376]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-6/igt@kms_frontbuffer_tracking@fbcpsrhdr-suspend.html

  * igt@kms_frontbuffer_tracking@hdr-2p-scndscrn-pri-shrfb-draw-mmap-wc:
    - shard-lnl:          [SKIP][377] ([Intel XE#7905]) -> [SKIP][378] ([Intel XE#7779]) +27 other tests skip
   [377]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-2/igt@kms_frontbuffer_tracking@hdr-2p-scndscrn-pri-shrfb-draw-mmap-wc.html
   [378]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-6/igt@kms_frontbuffer_tracking@hdr-2p-scndscrn-pri-shrfb-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@psr-argb161616f-draw-blt:
    - shard-lnl:          [SKIP][379] ([Intel XE#7061] / [Intel XE#7356]) -> [SKIP][380] ([Intel XE#7779])
   [379]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-2/igt@kms_frontbuffer_tracking@psr-argb161616f-draw-blt.html
   [380]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-6/igt@kms_frontbuffer_tracking@psr-argb161616f-draw-blt.html

  * igt@kms_hdr@brightness-with-hdr:
    - shard-bmg:          [SKIP][381] ([Intel XE#3544]) -> [SKIP][382] ([Intel XE#3374] / [Intel XE#3544])
   [381]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-bmg-5/igt@kms_hdr@brightness-with-hdr.html
   [382]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-bmg-7/igt@kms_hdr@brightness-with-hdr.html

  * igt@kms_mst@mst-suspend-read-crc:
    - shard-lnl:          [SKIP][383] ([Intel XE#9125]) -> [SKIP][384] ([Intel XE#8348])
   [383]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-6/igt@kms_mst@mst-suspend-read-crc.html
   [384]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-1/igt@kms_mst@mst-suspend-read-crc.html

  * igt@kms_plane_multiple@2x-tiling-y:
    - shard-lnl:          [SKIP][385] ([Intel XE#4596] / [Intel XE#5854]) -> [SKIP][386] ([Intel XE#9125])
   [385]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-2/igt@kms_plane_multiple@2x-tiling-y.html
   [386]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-6/igt@kms_plane_multiple@2x-tiling-y.html

  * igt@kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-75:
    - shard-lnl:          [SKIP][387] ([Intel XE#2763] / [Intel XE#6886] / [Intel XE#7687] / [Intel XE#9125]) -> [SKIP][388] ([Intel XE#2763] / [Intel XE#6886]) +5 other tests skip
   [387]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-6/igt@kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-75.html
   [388]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-7/igt@kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-75.html

  * igt@kms_psr2_sf@fbc-pr-cursor-plane-move-continuous-exceed-sf:
    - shard-lnl:          [SKIP][389] ([Intel XE#1489]) -> [SKIP][390] ([Intel XE#2893] / [Intel XE#7304]) +1 other test skip
   [389]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-6/igt@kms_psr2_sf@fbc-pr-cursor-plane-move-continuous-exceed-sf.html
   [390]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-4/igt@kms_psr2_sf@fbc-pr-cursor-plane-move-continuous-exceed-sf.html

  * igt@kms_psr2_sf@fbc-psr2-cursor-plane-update-sf:
    - shard-lnl:          [SKIP][391] ([Intel XE#2893] / [Intel XE#4608] / [Intel XE#7304]) -> [SKIP][392] ([Intel XE#1489])
   [391]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-7/igt@kms_psr2_sf@fbc-psr2-cursor-plane-update-sf.html
   [392]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-6/igt@kms_psr2_sf@fbc-psr2-cursor-plane-update-sf.html

  * igt@kms_psr2_sf@fbc-psr2-overlay-primary-update-sf-dmg-area:
    - shard-lnl:          [SKIP][393] ([Intel XE#1489]) -> [SKIP][394] ([Intel XE#2893] / [Intel XE#4608] / [Intel XE#7304]) +2 other tests skip
   [393]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-6/igt@kms_psr2_sf@fbc-psr2-overlay-primary-update-sf-dmg-area.html
   [394]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-7/igt@kms_psr2_sf@fbc-psr2-overlay-primary-update-sf-dmg-area.html

  * igt@kms_psr2_sf@pr-overlay-primary-update-sf-dmg-area:
    - shard-lnl:          [SKIP][395] ([Intel XE#2893] / [Intel XE#7304]) -> [SKIP][396] ([Intel XE#1489]) +3 other tests skip
   [395]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-7/igt@kms_psr2_sf@pr-overlay-primary-update-sf-dmg-area.html
   [396]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-6/igt@kms_psr2_sf@pr-overlay-primary-update-sf-dmg-area.html

  * igt@kms_psr2_su@frontbuffer-xrgb8888:
    - shard-lnl:          [SKIP][397] ([Intel XE#1128] / [Intel XE#7413]) -> [SKIP][398] ([Intel XE#1122] / [Intel XE#7429]) +1 other test skip
   [397]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-7/igt@kms_psr2_su@frontbuffer-xrgb8888.html
   [398]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-6/igt@kms_psr2_su@frontbuffer-xrgb8888.html

  * igt@kms_psr@fbc-psr2-primary-blt:
    - shard-lnl:          [SKIP][399] ([Intel XE#2850] / [Intel XE#929]) -> [SKIP][400] ([Intel XE#1406] / [Intel XE#7345])
   [399]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-6/igt@kms_psr@fbc-psr2-primary-blt.html
   [400]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-3/igt@kms_psr@fbc-psr2-primary-blt.html

  * igt@kms_psr@fbc-psr2-sprite-blt:
    - shard-lnl:          [SKIP][401] ([Intel XE#1406] / [Intel XE#7345]) -> [SKIP][402] ([Intel XE#2850] / [Intel XE#929]) +1 other test skip
   [401]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-8/igt@kms_psr@fbc-psr2-sprite-blt.html
   [402]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-6/igt@kms_psr@fbc-psr2-sprite-blt.html

  * igt@kms_psr@pr-no-drrs:
    - shard-lnl:          [SKIP][403] ([Intel XE#2850] / [Intel XE#929]) -> [SKIP][404] ([Intel XE#1406]) +3 other tests skip
   [403]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-6/igt@kms_psr@pr-no-drrs.html
   [404]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-3/igt@kms_psr@pr-no-drrs.html

  * igt@kms_rotation_crc@primary-rotation-90:
    - shard-lnl:          [SKIP][405] ([Intel XE#3414] / [Intel XE#3904] / [Intel XE#7342]) -> [SKIP][406] ([Intel XE#9125])
   [405]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-1/igt@kms_rotation_crc@primary-rotation-90.html
   [406]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-6/igt@kms_rotation_crc@primary-rotation-90.html

  * igt@kms_rotation_crc@primary-yf-tiled-reflect-x-0:
    - shard-lnl:          [SKIP][407] ([Intel XE#1127] / [Intel XE#5813]) -> [SKIP][408] ([Intel XE#9125])
   [407]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-1/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-0.html
   [408]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-6/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-0.html

  * igt@kms_rotation_crc@sprite-rotation-90-pos-100-0:
    - shard-lnl:          [SKIP][409] ([Intel XE#9125]) -> [SKIP][410] ([Intel XE#3414] / [Intel XE#3904] / [Intel XE#7342])
   [409]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-6/igt@kms_rotation_crc@sprite-rotation-90-pos-100-0.html
   [410]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-2/igt@kms_rotation_crc@sprite-rotation-90-pos-100-0.html

  * igt@kms_tiled_display@basic-test-pattern-with-chamelium:
    - shard-lnl:          [SKIP][411] ([Intel XE#9125]) -> [SKIP][412] ([Intel XE#362] / [Intel XE#5848]) +1 other test skip
   [411]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-6/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html
   [412]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-5/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html
    - shard-bmg:          [SKIP][413] ([Intel XE#2426] / [Intel XE#5848]) -> [SKIP][414] ([Intel XE#2509] / [Intel XE#7437])
   [413]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-bmg-7/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html
   [414]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-bmg-1/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html

  * igt@kms_vrr@seamless-rr-switch-vrr:
    - shard-lnl:          [SKIP][415] ([Intel XE#9125]) -> [SKIP][416] ([Intel XE#1499])
   [415]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-6/igt@kms_vrr@seamless-rr-switch-vrr.html
   [416]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-8/igt@kms_vrr@seamless-rr-switch-vrr.html

  * igt@xe_exec_reset@gt-reset-fault-injection:
    - shard-lnl:          [DMESG-WARN][417] ([Intel XE#9130]) -> [ABORT][418] ([Intel XE#9140])
   [417]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-1/igt@xe_exec_reset@gt-reset-fault-injection.html
   [418]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-8/igt@xe_exec_reset@gt-reset-fault-injection.html

  * igt@xe_wedged@basic-wedged:
    - shard-lnl:          [ABORT][419] ([Intel XE#8963]) -> [DMESG-WARN][420] ([Intel XE#8963])
   [419]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34/shard-lnl-8/igt@xe_wedged@basic-wedged.html
   [420]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161473v25/shard-lnl-3/igt@xe_wedged@basic-wedged.html

  
  [Intel XE#1091]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1091
  [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#1127]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1127
  [Intel XE#1128]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1128
  [Intel XE#1135]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1135
  [Intel XE#1178]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1178
  [Intel XE#1340]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1340
  [Intel XE#1392]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1392
  [Intel XE#1397]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1397
  [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#1439]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1439
  [Intel XE#1467]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1467
  [Intel XE#1470]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1470
  [Intel XE#1489]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1489
  [Intel XE#1499]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1499
  [Intel XE#1503]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1503
  [Intel XE#1745]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1745
  [Intel XE#2134]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2134
  [Intel XE#2234]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2234
  [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#2311]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2311
  [Intel XE#2313]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2313
  [Intel XE#2320]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2320
  [Intel XE#2321]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2321
  [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#2387]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2387
  [Intel XE#2413]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2413
  [Intel XE#2426]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2426
  [Intel XE#2482]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2482
  [Intel XE#2486]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2486
  [Intel XE#2504]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2504
  [Intel XE#2509]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2509
  [Intel XE#2548]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2548
  [Intel XE#2568]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2568
  [Intel XE#2652]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2652
  [Intel XE#2669]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2669
  [Intel XE#2682]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2682
  [Intel XE#2763]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2763
  [Intel XE#2849]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2849
  [Intel XE#2850]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2850
  [Intel XE#2853]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2853
  [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#301]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/301
  [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#309]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/309
  [Intel XE#3098]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3098
  [Intel XE#3141]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3141
  [Intel XE#3149]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3149
  [Intel XE#323]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/323
  [Intel XE#3279]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3279
  [Intel XE#3297]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3297
  [Intel XE#3304]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3304
  [Intel XE#3374]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3374
  [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#3544]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3544
  [Intel XE#362]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/362
  [Intel XE#367]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/367
  [Intel XE#3718]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3718
  [Intel XE#373]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/373
  [Intel XE#378]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/378
  [Intel XE#3904]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3904
  [Intel XE#4141]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4141
  [Intel XE#4156]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4156
  [Intel XE#4329]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4329
  [Intel XE#4331]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4331
  [Intel XE#4354]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4354
  [Intel XE#4416]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4416
  [Intel XE#4417]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4417
  [Intel XE#4422]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4422
  [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#4609]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4609
  [Intel XE#4733]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4733
  [Intel XE#4886]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4886
  [Intel XE#5100]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5100
  [Intel XE#5447]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5447
  [Intel XE#5813]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5813
  [Intel XE#5848]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5848
  [Intel XE#5854]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5854
  [Intel XE#586]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/586
  [Intel XE#6035]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6035
  [Intel XE#6078]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6078
  [Intel XE#6196]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6196
  [Intel XE#6312]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6312
  [Intel XE#6321]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6321
  [Intel XE#6376]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6376
  [Intel XE#6503]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6503
  [Intel XE#651]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/651
  [Intel XE#6540]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6540
  [Intel XE#656]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/656
  [Intel XE#6569]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6569
  [Intel XE#688]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/688
  [Intel XE#6886]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6886
  [Intel XE#6900]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6900
  [Intel XE#6912]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6912
  [Intel XE#6964]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6964
  [Intel XE#6974]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6974
  [Intel XE#7006]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7006
  [Intel XE#702]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/702
  [Intel XE#7059]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7059
  [Intel XE#7061]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7061
  [Intel XE#7084]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7084
  [Intel XE#7085]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7085
  [Intel XE#7106]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7106
  [Intel XE#7174]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7174
  [Intel XE#7178]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7178
  [Intel XE#7227]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7227
  [Intel XE#7250]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7250
  [Intel XE#7283]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7283
  [Intel XE#7304]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7304
  [Intel XE#7319]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7319
  [Intel XE#7322]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7322
  [Intel XE#7323]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7323
  [Intel XE#7330]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7330
  [Intel XE#7342]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7342
  [Intel XE#7343]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7343
  [Intel XE#7344]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7344
  [Intel XE#7345]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7345
  [Intel XE#7350]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7350
  [Intel XE#7351]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7351
  [Intel XE#7355]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7355
  [Intel XE#7356]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7356
  [Intel XE#7358]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7358
  [Intel XE#7362]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7362
  [Intel XE#7367]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7367
  [Intel XE#7370]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7370
  [Intel XE#7372]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7372
  [Intel XE#7374]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7374
  [Intel XE#7375]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7375
  [Intel XE#7376]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7376
  [Intel XE#7381]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7381
  [Intel XE#7383]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7383
  [Intel XE#7384]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7384
  [Intel XE#7385]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7385
  [Intel XE#7386]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7386
  [Intel XE#7389]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7389
  [Intel XE#7399]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7399
  [Intel XE#7405]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7405
  [Intel XE#7408]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7408
  [Intel XE#7413]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7413
  [Intel XE#7417]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7417
  [Intel XE#7422]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7422
  [Intel XE#7425]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7425
  [Intel XE#7429]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7429
  [Intel XE#7435]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7435
  [Intel XE#7437]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7437
  [Intel XE#7442]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7442
  [Intel XE#7482]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7482
  [Intel XE#7591]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7591
  [Intel XE#7599]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7599
  [Intel XE#7642]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7642
  [Intel XE#7643]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7643
  [Intel XE#7679]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7679
  [Intel XE#7687]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7687
  [Intel XE#7760]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7760
  [Intel XE#7779]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7779
  [Intel XE#7793]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7793
  [Intel XE#7794]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7794
  [Intel XE#7795]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7795
  [Intel XE#7809]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7809
  [Intel XE#7865]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7865
  [Intel XE#7905]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7905
  [Intel XE#8007]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8007
  [Intel XE#8076]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8076
  [Intel XE#8150]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8150
  [Intel XE#8265]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8265
  [Intel XE#8348]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8348
  [Intel XE#8355]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8355
  [Intel XE#836]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/836
  [Intel XE#8364]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8364
  [Intel XE#8365]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8365
  [Intel XE#8369]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8369
  [Intel XE#8370]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8370
  [Intel XE#8374]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8374
  [Intel XE#8378]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8378
  [Intel XE#8399]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8399
  [Intel XE#8583]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8583
  [Intel XE#8586]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8586
  [Intel XE#8608]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8608
  [Intel XE#8680]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8680
  [Intel XE#870]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/870
  [Intel XE#8854]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8854
  [Intel XE#8868]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8868
  [Intel XE#8963]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8963
  [Intel XE#9009]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9009
  [Intel XE#9125]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9125
  [Intel XE#9126]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9126
  [Intel XE#9128]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9128
  [Intel XE#9130]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9130
  [Intel XE#9132]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9132
  [Intel XE#9140]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9140
  [Intel XE#929]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/929
  [Intel XE#944]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/944


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

  * IGT: IGT_9082 -> IGT_9083
  * Linux: xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34 -> xe-pw-161473v25

  IGT_9082: 2d61f578d998115259b87f9fa27f597ce11a0c89 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  IGT_9083: 9083
  xe-5686-76a34199970d93cfb3ed5dbbd745c23b6f0cff34: 76a34199970d93cfb3ed5dbbd745c23b6f0cff34
  xe-pw-161473v25: 161473v25

== Logs ==

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

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

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

end of thread, other threads:[~2026-09-04  5:18 UTC | newest]

Thread overview: 25+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-09-03 16:15 [PATCH V21 00/15] Add memory page offlining support Tejas Upadhyay
2026-09-03 16:15 ` [PATCH V21 01/15] drm/xe: Link VRAM resource allocation with gpu buddy Tejas Upadhyay
2026-09-03 16:15 ` [PATCH V21 02/15] drm/xe: Link LRC BO and its execution queue with safe lifetime rules Tejas Upadhyay
2026-09-03 16:15 ` [PATCH V21 03/15] drm/xe: Export xe_ttm_bo_purge() Tejas Upadhyay
2026-09-03 16:15 ` [PATCH V21 04/15] drm/xe: Handle NULL resource and allow purging of VRAM pages Tejas Upadhyay
2026-09-03 17:08   ` sashiko-bot
2026-09-03 16:15 ` [PATCH V21 05/15] drm/xe/bo: Make xe_bo_is_user() public Tejas Upadhyay
2026-09-03 16:15 ` [PATCH V21 06/15] drm/xe: Guard teardown paths against purged BOs Tejas Upadhyay
2026-09-03 16:55   ` sashiko-bot
2026-09-03 16:16 ` [PATCH V21 07/15] drm/xe/vram: Extract buddy allocation and free helpers Tejas Upadhyay
2026-09-03 16:16 ` [PATCH V21 08/15] drm/xe/vram: Add page offline data structures and lifecycle Tejas Upadhyay
2026-09-03 16:16 ` [PATCH V21 09/15] drm/xe/vram: Add VRAM page offline fault handler Tejas Upadhyay
2026-09-03 17:23   ` sashiko-bot
2026-09-03 16:16 ` [PATCH V21 10/15] drm/xe/configfs: Add disable_vram_page_offline attribute Tejas Upadhyay
2026-09-03 16:16 ` [PATCH V21 11/15] drm/xe/ras: Cache disable_vram_page_offline policy at init Tejas Upadhyay
2026-09-03 16:16 ` [PATCH V21 12/15] drm/xe/vram: Check disable_vram_page_offline policy in fault handler Tejas Upadhyay
2026-09-03 16:16 ` [PATCH V21 13/15] drm/xe: Expose bad VRAM pages via debugfs Tejas Upadhyay
2026-09-03 16:16 ` [PATCH V21 14/15] drm/xe/uapi: Expose ban reason in EXEC_QUEUE_GET_PROPERTY_BAN Tejas Upadhyay
2026-09-03 17:46   ` sashiko-bot
2026-09-03 16:16 ` [PATCH V21 15/15] drm/xe: Add fault-inject based VRAM page offline injection Tejas Upadhyay
2026-09-03 16:23 ` ✗ CI.checkpatch: warning for Add memory page offlining support (rev25) Patchwork
2026-09-03 16:25 ` ✓ CI.KUnit: success " Patchwork
2026-09-03 17:46 ` ✗ Xe.CI.BAT: failure " Patchwork
2026-09-04  4:33 ` [PATCH V21 00/15] Add memory page offlining support Matthew Brost
2026-09-04  5:18 ` ✗ Xe.CI.FULL: failure for Add memory page offlining support (rev25) Patchwork

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