Skip to contentSkip to conversation

drm/ttm, drm/xe: Support partially backed-up ttm_tts

PATCH In review Thomas Hellström 6 participants 16 messages Nov 4 – Nov 10 1 message not in the archive

Subsystems (4)
lore
Share & tools
lore

Thomas Hellström

author maintainer
#0 lore raw

cover drm/ttm, drm/xe: Support partially backed-up ttm_tts

The TTM shrinker backs up a ttm_tt page by page, and can stop part way through, for example on an allocation failure. A failed restore can likewise leave some pages resident and some backed up. The ttm_tt has no way to represent such a partially backed-up state, so its status and the driver's shrinker accounting can become inconsistent.

This series introduces TTM_TT_FLAG_PARTIAL, which allows a tt to be partially backed up, keeping track of the pages that were already backed up and the pages that are still resident. Xe shrinker accounting is converted to track the number of remaining resident pages so that partial tts are accounted correctly.

Patch 1 stops marking backed-up shmem folios accessed. Patch 2 is a pure refactor of the Xe shrinker account helpers. Patch 3 introduces TTM_TT_FLAG_PARTIAL and the matching Xe accounting. Patch 4 gates reserve-dipping backup retries on may_writeback.

Note that patch 4 may increase the number of partially backed-up ttm_tts, since a backup that would need to dip into the kernel reserves is now aborted when writeback isn't allowed, keeping the progress made so far. This makes the partial tt handling of patch 3 more important.

Testing:
- W=1 build, checkpatch and kernel-doc are clean.
- TTM and Xe KUnit tests pass.
- The partial backup and restore paths are exercised by the shrink-fault-inject* subtests of the xe_bo_shrink IGT test, posted separately, using the TTM backup_fault_inject debugfs attribute. They need CONFIG_FAULT_INJECTION and CONFIG_FAULT_INJECTION_DEBUG_FS. The may_writeback retry in patch 4 is only hit statistically by that test.

IGT test: https://patchwork.freedesktop.org/series/176563/

Test-with: [email protected]

AI tool use: an AI coding assistant was used for review and for drafting parts of the implementation and commit messages. The author has reviewed and takes responsibility for all of the changes.

Thomas Hellström (4):
drm/ttm: Don't mark backed-up shmem folios accessed drm/xe/bo: Pass page and tt counts to the shrinker account helpers drm/ttm, drm/xe: Introduce TTM_TT_FLAG_PARTIAL for partially backed-up
tts
drm/ttm, drm/xe: Gate reserve-dipping backup retries on may_writeback

 drivers/gpu/drm/ttm/ttm_backup.c        |   1 -
 drivers/gpu/drm/ttm/ttm_bo.c            |   5 +-
 drivers/gpu/drm/ttm/ttm_bo_util.c       |   9 +-
 drivers/gpu/drm/ttm/ttm_pool.c          | 175 +++++++++++++++++++++---
 drivers/gpu/drm/ttm/ttm_pool_internal.h |   2 +
 drivers/gpu/drm/ttm/ttm_tt.c            |  36 ++++-
 drivers/gpu/drm/xe/tests/xe_bo.c        |   6 +-
 drivers/gpu/drm/xe/xe_bo.c              | 110 ++++++++++-----
 drivers/gpu/drm/xe/xe_bo.h              |   9 +-
 drivers/gpu/drm/xe/xe_shrinker.c        |  39 +++++-
 include/drm/ttm/ttm_bo.h                |   9 +-
 include/drm/ttm/ttm_tt.h                |  58 ++++++--
 12 files changed, 371 insertions(+), 88 deletions(-)
Signature · 1 line
2.56.0
author maintainer
#1 lore raw

PATCH 1/4 drm/ttm: Don't mark backed-up shmem folios accessed

ttm_backup_backup_folio() unconditionally called folio_mark_accessed() on the freshly populated shmem folio before copying the BO's data into it. This path is only reached from a shrinker, i.e. precisely when the system has already decided it needs memory back, and the whole point of backing a page up into shmem is to let core mm reclaim it through the normal swap/writeback path instead of keeping it pinned as TTM memory.

Marking the folio accessed works against that: it sets the referenced bit / promotes the folio on the LRU, so a later reclaim scan gives it a second chance (or skips it) instead of reclaiming it on sight. This is actively counter-productive even when the writeback backup flag is set to synchronously flush the folio's content via shmem_write_folio():
writeback only clears the dirty bit, it does not free the page, so an accessed folio just sits there, clean and resident, protected from the very reclaim pass it was written back for.

Drop the folio_mark_accessed() call so these folios decay through normal LRU aging and become immediate reclaim candidates once written back (or once picked up by the system's own asynchronous laundering), instead of being artificially kept warm.

---
 drivers/gpu/drm/ttm/ttm_backup.c | 1 -
 1 file changed, 1 deletion(-)
drivers/gpu/drm/ttm/ttm_backup.c +0 -1
index 0c2d53a13b2a..9589067ad8cf 100644
@@ -149,7 +149,6 @@ ttm_backup_backup_folio(struct file *backup, struct folio *folio,
 		to_nr = min_t(int, nr_pages - i,
 			      folio_next_index(to_folio) - (idx + i));
 
-		folio_mark_accessed(to_folio);
 		folio_lock(to_folio);
 		folio_mark_dirty(to_folio);
 
Signature · 1 line
2.56.0
maintainer Reviewed-by on v1 1/4
#2 lore raw

Re: [PATCH 1/4] drm/ttm: Don't mark backed-up shmem folios accessed

Quoted 17 lines · Thomas Hellström

ttm_backup_backup_folio() unconditionally called folio_mark_accessed() on the freshly populated shmem folio before copying the BO's data into it. This path is only reached from a shrinker, i.e. precisely when the system has already decided it needs memory back, and the whole point of backing a page up into shmem is to let core mm reclaim it through the normal swap/writeback path instead of keeping it pinned as TTM memory.

Marking the folio accessed works against that: it sets the referenced bit / promotes the folio on the LRU, so a later reclaim scan gives it a second chance (or skips it) instead of reclaiming it on sight. This is actively counter-productive even when the writeback backup flag is set to synchronously flush the folio's content via shmem_write_folio():
writeback only clears the dirty bit, it does not free the page, so an accessed folio just sits there, clean and resident, protected from the very reclaim pass it was written back for.

Quoted 6 lines

Drop the folio_mark_accessed() call so these folios decay through normal LRU aging and become immediate reclaim candidates once written back (or once picked up by the system's own asynchronous laundering), instead of being artificially kept warm.

Quoted 19 lines
---
 drivers/gpu/drm/ttm/ttm_backup.c | 1 -
 1 file changed, 1 deletion(-)
drivers/gpu/drm/ttm/ttm_backup.c +0 -1
index 0c2d53a13b2a..9589067ad8cf 100644
@@ -149,7 +149,6 @@ ttm_backup_backup_folio(struct file *backup, struct folio *folio,
 		to_nr = min_t(int, nr_pages - i,
 			      folio_next_index(to_folio) - (idx + i));
 
-		folio_mark_accessed(to_folio);
 		folio_lock(to_folio);
 		folio_mark_dirty(to_folio);
 
Signature · 1 line
2.56.0
author maintainer
#3 lore raw

PATCH 2/4 drm/xe/bo: Pass page and tt counts to the shrinker account helpers

In reply to Thomas Hellström

xe_ttm_tt_account_add() and xe_ttm_tt_account_subtract() always account tt->num_pages and a single populated tt. Partial backup support will need to account a subset of a tt's pages, and to keep a partially backed-up tt counted as populated.

Add explicit page and tt count parameters. All callers pass tt->num_pages and 1, so there is no functional change.

---
 drivers/gpu/drm/xe/tests/xe_bo.c |  6 ++++--
 drivers/gpu/drm/xe/xe_bo.c       | 28 ++++++++++++++++------------
 2 files changed, 20 insertions(+), 14 deletions(-)
drivers/gpu/drm/xe/tests/xe_bo.c +4 -2
index 6a17e13d58cf..472d5577e0fe 100644
@@ -736,9 +736,11 @@ static int shrink_test_run_device(struct xe_device *xe)
 		 * other way around, they may not be subject to swapping...
 		 */
 		if (alloced < purgeable) {
-			xe_ttm_tt_account_subtract(xe, &xe_tt->ttm);
+			xe_ttm_tt_account_subtract(xe, &xe_tt->ttm,
+						   xe_tt->ttm.num_pages, 1);
 			xe_tt->purgeable = true;
-			xe_ttm_tt_account_add(xe, &xe_tt->ttm);
+			xe_ttm_tt_account_add(xe, &xe_tt->ttm,
+					      xe_tt->ttm.num_pages, 1);
 			bo->ttm.priority = 0;
 			spin_lock(&bo->ttm.bdev->lru_lock);
 			ttm_bo_move_to_lru_tail(&bo->ttm);
drivers/gpu/drm/xe/xe_bo.c +16 -12
index 42a6aa1a2e4a..2afee1a6de66 100644
@@ -452,24 +452,26 @@ struct sg_table *xe_bo_sg(struct xe_bo *bo)
  * Account ttm pages against the device shrinker's shrinkable and
  * purgeable counts.
  */
-static void xe_ttm_tt_account_add(struct xe_device *xe, struct ttm_tt *tt)
+static void xe_ttm_tt_account_add(struct xe_device *xe, struct ttm_tt *tt,
+				  long num_pages, long tts)
 {
 	struct xe_ttm_tt *xe_tt = container_of(tt, struct xe_ttm_tt, ttm);
 
 	if (xe_tt->purgeable)
-		xe_shrinker_mod_pages(xe->mem.shrinker, 0, tt->num_pages, 1);
+		xe_shrinker_mod_pages(xe->mem.shrinker, 0, num_pages, tts);
 	else
-		xe_shrinker_mod_pages(xe->mem.shrinker, tt->num_pages, 0, 1);
+		xe_shrinker_mod_pages(xe->mem.shrinker, num_pages, 0, tts);
 }
 
-static void xe_ttm_tt_account_subtract(struct xe_device *xe, struct ttm_tt *tt)
+static void xe_ttm_tt_account_subtract(struct xe_device *xe, struct ttm_tt *tt,
+				       long num_pages, long tts)
 {
 	struct xe_ttm_tt *xe_tt = container_of(tt, struct xe_ttm_tt, ttm);
 
 	if (xe_tt->purgeable)
-		xe_shrinker_mod_pages(xe->mem.shrinker, 0, -(long)tt->num_pages, -1);
+		xe_shrinker_mod_pages(xe->mem.shrinker, 0, -num_pages, -tts);
 	else
-		xe_shrinker_mod_pages(xe->mem.shrinker, -(long)tt->num_pages, 0, -1);
+		xe_shrinker_mod_pages(xe->mem.shrinker, -num_pages, 0, -tts);
 }
 
 static bool xe_ttm_bo_is_imported(struct ttm_buffer_object *tbo)
@@ -503,7 +505,8 @@ static void xe_bo_account_pin(struct xe_bo *bo)
 
 	if (bo->ttm.pin_count == 1 && bo->ttm.ttm && ttm_tt_is_populated(bo->ttm.ttm) &&
 	    !xe_ttm_bo_is_imported(&bo->ttm))
-		xe_ttm_tt_account_subtract(xe, bo->ttm.ttm);
+		xe_ttm_tt_account_subtract(xe, bo->ttm.ttm,
+					   bo->ttm.ttm->num_pages, 1);
 }
 
 /*
@@ -534,7 +537,8 @@ static void xe_bo_account_unpin(struct xe_bo *bo)
 
 	if (last_unpin && bo->ttm.ttm && ttm_tt_is_populated(bo->ttm.ttm) &&
 	    !xe_ttm_bo_is_imported(&bo->ttm))
-		xe_ttm_tt_account_add(xe, bo->ttm.ttm);
+		xe_ttm_tt_account_add(xe, bo->ttm.ttm, bo->ttm.ttm->num_pages,
+				      1);
 }
 
 /**
@@ -682,7 +686,7 @@ static int xe_ttm_tt_populate(struct ttm_device *ttm_dev, struct ttm_tt *tt,
 		return err;
 
 	xe_tt->purgeable = false;
-	xe_ttm_tt_account_add(ttm_to_xe_device(ttm_dev), tt);
+	xe_ttm_tt_account_add(ttm_to_xe_device(ttm_dev), tt, tt->num_pages, 1);
 	update_global_total_pages(ttm_dev, tt->num_pages);
 
 	return 0;
@@ -699,7 +703,7 @@ static void xe_ttm_tt_unpopulate(struct ttm_device *ttm_dev, struct ttm_tt *tt)
 	xe_tt_unmap_sg(xe, tt);
 
 	ttm_pool_free(&ttm_dev->pool, tt);
-	xe_ttm_tt_account_subtract(xe, tt);
+	xe_ttm_tt_account_subtract(xe, tt, tt->num_pages, 1);
 	update_global_total_pages(ttm_dev, -(long)tt->num_pages);
 }
 
@@ -1391,7 +1395,7 @@ static long xe_bo_shrink_purge(struct ttm_operation_ctx *ctx,
 			      .allow_move = false});
 
 	if (lret > 0) {
-		xe_ttm_tt_account_subtract(xe, bo->ttm);
+		xe_ttm_tt_account_subtract(xe, bo->ttm, bo->ttm->num_pages, 1);
 		update_global_total_pages(bo->bdev, -(long)tt->num_pages);
 	}
 
@@ -1483,7 +1487,7 @@ long xe_bo_shrink(struct ttm_operation_ctx *ctx, struct ttm_buffer_object *bo,
 		xe_pm_runtime_put(xe);
 
 	if (lret > 0) {
-		xe_ttm_tt_account_subtract(xe, tt);
+		xe_ttm_tt_account_subtract(xe, tt, tt->num_pages, 1);
 		update_global_total_pages(bo->bdev, -(long)tt->num_pages);
 	}
 
Signature · 1 line
2.56.0
author maintainer
#4 lore raw

PATCH 3/4 drm/ttm, drm/xe: Introduce TTM_TT_FLAG_PARTIAL for partially backed-up tts

In reply to Thomas Hellström

Backup failures can leave a ttm_tt partially backed up: some pages swapped to shmem while others remain resident. Previously, ttm_tt_backup() would set TTM_TT_FLAG_BACKED_UP regardless, which made the resource unevictable and prevented the shrinker from targeting it for continued backup.

Introduce TTM_TT_FLAG_PARTIAL to distinguish this state. A partial tt:
- Does NOT have PRIV_POPULATED set (it's not fully populated)
- Does NOT have BACKED_UP set (it's not fully backed up)
- Stays on the normal LRU (not unevictable)
- Can be targeted by the shrinker for continued backup
- Must be restored (not plain-allocated) when repopulating

On re-entry, ttm_pool_backup() skips already-backed-up handles and the caching/DMA setup that was done on the first pass.

Track the number of still-resident pages in ttm_tt::remaining_pages. ttm_pool_restore_abort() recounts them, since an aborted restore may leave more pages resident than before. xe accounts shrinker pages of a partial tt by remaining_pages: shrinking subtracts the change in remaining_pages rather than tt->num_pages, repopulating adds back only the pages that were subtracted, and destroying a partial tt subtracts the pages still resident. A tt stays counted as populated by the shrinker while it has accounted pages.

If restoring a fully backed-up tt fails after making pages resident, mark it partial and return the bo to the evictable LRU, so that the shrinker can reclaim those pages.

xe must treat a partial tt as holding data when moving the bo, so that moves out of system memory restore it rather than discarding it.

---
 drivers/gpu/drm/ttm/ttm_bo.c            |   5 +-
 drivers/gpu/drm/ttm/ttm_bo_util.c       |   6 +-
 drivers/gpu/drm/ttm/ttm_pool.c          | 128 ++++++++++++++++++++++--
 drivers/gpu/drm/ttm/ttm_pool_internal.h |   2 +
 drivers/gpu/drm/ttm/ttm_tt.c            |  36 ++++++-
 drivers/gpu/drm/xe/xe_bo.c              |  82 +++++++++++----
 include/drm/ttm/ttm_tt.h                |  45 +++++++--
 7 files changed, 261 insertions(+), 43 deletions(-)
drivers/gpu/drm/ttm/ttm_bo.c +2 -3
index 53c68e29ebc2..3c2f4297e20a 100644
@@ -1524,9 +1524,8 @@ int ttm_bo_populate(struct ttm_buffer_object *bo,
 
 	swapped = ttm_tt_is_swapped(tt);
 	ret = ttm_tt_populate(bdev, tt, ctx);
-	if (ret)
-		return ret;
 
+	/* A failed restore may leave the tt partial, hence evictable. */
 	if (swapped && !ttm_tt_is_swapped(tt) && !bo->pin_count &&
 	    bo->resource) {
 		spin_lock(&bdev->lru_lock);
@@ -1535,7 +1534,7 @@ int ttm_bo_populate(struct ttm_buffer_object *bo,
 		spin_unlock(&bdev->lru_lock);
 	}
 
-	return 0;
+	return ret;
 }
 EXPORT_SYMBOL(ttm_bo_populate);
 
drivers/gpu/drm/ttm/ttm_bo_util.c +4 -2
index f9458a4d5a09..975dea33075f 100644
@@ -1124,7 +1124,7 @@ long ttm_bo_shrink(struct ttm_operation_ctx *ctx, struct ttm_buffer_object *bo,
 			     {.purge = flags.purge,
 			      .writeback = flags.writeback});
 
-	if (lret > 0) {
+	if (lret > 0 && !ttm_tt_is_partial(bo->ttm)) {
 		spin_lock(&bdev->lru_lock);
 		ttm_resource_del_bulk_move_unevictable(bo->resource, bo);
 		ttm_resource_move_to_lru_tail(bo->resource);
@@ -1151,7 +1151,9 @@ EXPORT_SYMBOL(ttm_bo_shrink);
  */
 bool ttm_bo_shrink_suitable(struct ttm_buffer_object *bo, struct ttm_operation_ctx *ctx)
 {
-	return bo->ttm && ttm_tt_is_populated(bo->ttm) && !bo->pin_count &&
+	return bo->ttm &&
+		(ttm_tt_is_populated(bo->ttm) || ttm_tt_is_partial(bo->ttm)) &&
+		!bo->pin_count &&
 		(!ctx->no_wait_gpu ||
 		 dma_resv_test_signaled(bo->base.resv, DMA_RESV_USAGE_BOOKKEEP));
 }
drivers/gpu/drm/ttm/ttm_pool.c +122 -6

189 lines not on this page · raw message

drivers/gpu/drm/ttm/ttm_pool_internal.h +2 -0
index cbb17a2129fe..3f4f70037c39 100644
@@ -30,4 +30,6 @@ static inline unsigned int ttm_pool_beneficial_order(struct ttm_pool *pool)
  */
 bool ttm_backup_fault_inject_folio(void);
 
+bool ttm_pool_restore_has_resident(const struct ttm_tt *tt);
+
 #endif
drivers/gpu/drm/ttm/ttm_tt.c +31 -5
index b645a1818184..2b441bf41d92 100644
@@ -188,7 +188,7 @@ void ttm_tt_fini(struct ttm_tt *ttm)
 		fput(ttm->swap_storage);
 	ttm->swap_storage = NULL;
 
-	if (ttm_tt_is_backed_up(ttm))
+	if (ttm_tt_is_backed_up(ttm) || ttm_tt_is_partial(ttm))
 		ttm_pool_drop_backed_up(ttm);
 	if (ttm->backup) {
 		ttm_backup_fini(ttm->backup);
@@ -289,7 +289,18 @@ long ttm_tt_backup(struct ttm_device *bdev, struct ttm_tt *tt,
 	ret = ttm_pool_backup(&bdev->pool, tt, &flags);
 	if (ret > 0) {
 		tt->page_flags &= ~TTM_TT_FLAG_PRIV_POPULATED;
-		tt->page_flags |= TTM_TT_FLAG_BACKED_UP;
+		if (ret >= tt->remaining_pages)
+			tt->remaining_pages = 0;
+		else
+			tt->remaining_pages -= ret;
+
+		if (tt->remaining_pages) {
+			tt->page_flags &= ~TTM_TT_FLAG_BACKED_UP;
+			tt->page_flags |= TTM_TT_FLAG_PARTIAL;
+		} else {
+			tt->page_flags &= ~TTM_TT_FLAG_PARTIAL;
+			tt->page_flags |= TTM_TT_FLAG_BACKED_UP;
+		}
 	}
 
 	return ret;
@@ -300,10 +311,20 @@ int ttm_tt_restore(struct ttm_device *bdev, struct ttm_tt *tt,
 {
 	int ret = ttm_pool_restore_and_alloc(&bdev->pool, tt, ctx);
 
-	if (ret)
+	if (ret) {
+		/*
+		 * Let the shrinker reclaim pages made resident by the
+		 * failed restore. remaining_pages is recounted on backup.
+		 */
+		if (ttm_tt_is_backed_up(tt) &&
+		    ttm_pool_restore_has_resident(tt)) {
+			tt->page_flags &= ~TTM_TT_FLAG_BACKED_UP;
+			tt->page_flags |= TTM_TT_FLAG_PARTIAL;
+		}
 		return ret;
+	}
 
-	tt->page_flags &= ~TTM_TT_FLAG_BACKED_UP;
+	tt->page_flags &= ~(TTM_TT_FLAG_BACKED_UP | TTM_TT_FLAG_PARTIAL);
 
 	return 0;
 }
@@ -404,7 +425,12 @@ int ttm_tt_populate(struct ttm_device *bdev,
 		goto error;
 
 	ttm->page_flags |= TTM_TT_FLAG_PRIV_POPULATED;
-	ttm->page_flags &= ~TTM_TT_FLAG_BACKED_UP;
+	ttm->page_flags &= ~(TTM_TT_FLAG_BACKED_UP | TTM_TT_FLAG_PARTIAL);
+	/*
+	 * Only updated on success. If a restore fails, remaining_pages
+	 * goes stale until ttm_pool_restore_abort() recounts it.
+	 */
+	ttm->remaining_pages = ttm->num_pages;
 	if (unlikely(ttm->page_flags & TTM_TT_FLAG_SWAPPED)) {
 		ret = ttm_tt_swapin(ttm);
 		if (unlikely(ret != 0)) {
drivers/gpu/drm/xe/xe_bo.c +62 -20

147 lines not on this page · raw message

include/drm/ttm/ttm_tt.h +38 -7

81 lines not on this page · raw message

Signature · 1 line
2.56.0
#5 lore raw

Re: [PATCH 3/4] drm/ttm, drm/xe: Introduce TTM_TT_FLAG_PARTIAL for partially backed-up tts

Thank you for your contribution! Sashiko AI review found 3 potential issue(s) to consider: - [High] drm/ttm: DMA mapping leak in ttm_pool_backup() on -EBUSY after restore abort - [High] drm/ttm…

Thank you for your contribution! Sashiko AI review found 3 potential issue(s) to consider:
- [High] drm/ttm: DMA mapping leak in ttm_pool_backup() on -EBUSY after restore abort
- [High] drm/ttm: ttm_tt_backup() leaves tt populated if backup fails at first page
- [Medium] drm/xe: stale remaining_pages and shrinker counts on failed ttm_tt_restore() --

commit fc282ba9ab604d69dff7ad175cd51a0231a6c0b3
Author: Thomas Hellström <[email protected]>

drm/ttm, drm/xe: Introduce TTM_TT_FLAG_PARTIAL for partially backed-up tts

This commit introduces TTM_TT_FLAG_PARTIAL and ttm_tt::remaining_pages to track partially backed-up ttm_tt objects so they stay on the normal LRU and remain eligible for shrinker reclaim. It also adds ttm_pool_restore_abort() to clean up interrupted restores before backup and updates xe shrinker page accounting to track resident pages.

Quoted 4 lines
drivers/gpu/drm/ttm/ttm_pool.c +0 -0
index 1bf37023fed66..8f05257e4f542 100644

[ ... ]

Quoted 7 lines
drivers/gpu/drm/ttm/ttm_pool.c +3 -0
@@ -1039,6 +1057,91 @@ void ttm_pool_drop_backed_up(struct ttm_tt *tt)
 	ttm_pool_free_range(NULL, tt, ttm_cached, start_page, tt->num_pages);
 }
 
+/**
+ * ttm_pool_restore_abort() - Abort an ongoing restore of a partial tt
+ * @tt: The struct ttm_tt with an active restore.

[ ... ]

Quoted 4 lines
drivers/gpu/drm/ttm/ttm_pool.c +4 -0
+static void ttm_pool_restore_abort(struct ttm_tt *tt)
+{
+	struct ttm_pool_tt_restore *restore = tt->restore;
+	pgoff_t i, nr, mid;

[ ... ]

Quoted 32 lines
drivers/gpu/drm/ttm/ttm_pool.c +25 -0
+	/*
+	 * Don't DMA-unmap committed restored pages here; their DMA
+	 * addresses are in tt->dma_address[] and the backup path
+	 * will unmap them.
+	 */
+
+	/* Convert non-cached committed pages to write-back. */
+	mid = restore->snapshot_alloc.caching_divide - tt->pages;
+#ifdef CONFIG_X86
+	if (mid > 0 && tt->caching != ttm_cached)
+		set_pages_array_wb(tt->pages, mid);
+#endif
+
+	kfree(restore);
+	tt->restore = NULL;
+
+	for (i = 0, nr = 0; i < tt->num_pages; i++) {
+		struct page *p = tt->pages[i];
+
+		if (p && !ttm_backup_page_ptr_is_handle(p))
+			nr++;
+	}
+	tt->remaining_pages = nr;
+}
+
 /**
  * ttm_pool_backup() - Back up or purge a struct ttm_tt
  * @pool: The pool used when allocating the struct ttm_tt.
@@ -1071,10 +1174,13 @@ long ttm_pool_backup(struct ttm_pool *pool, struct ttm_tt *tt,
 	pgoff_t shrunken = 0;
 	pgoff_t i, j, num_pages, npages;
 	pgoff_t nr_backed;

drivers/gpu/drm/ttm/ttm_pool.c long ttm_pool_backup(struct ttm_pool *pool, struct ttm_tt *tt, · line 1186

Quoted 10 lines
drivers/gpu/drm/ttm/ttm_pool.c +3 -0
+	bool partial = ttm_tt_is_partial(tt);
 
 	if (WARN_ON(ttm_tt_is_backed_up(tt)))
 		return -EINVAL;
 
+	ttm_pool_restore_abort(tt);
+
 	if ((!ttm_backup_bytes_avail() && !flags->purge) ||
 	    ttm_pool_uses_dma_alloc(pool) || ttm_tt_is_backed_up(tt))
 		return -EBUSY;

[Severity: High]
Can this leak DMA mappings for committed restored pages when ttm_pool_backup() returns -EBUSY right after ttm_pool_restore_abort(tt)?

When a restore of a backed-up or partial ttm_tt (with tt->dma_address != NULL) fails after committing one or more pages via ttm_pool_allocated_page_commit(), tt->pages[0 .. restore->alloced_pages - 1] are populated and DMA-mapped in tt->dma_address[], and tt is marked TTM_TT_FLAG_PARTIAL with tt->restore non-NULL.

When ttm_pool_backup() is later called by the shrinker, it calls ttm_pool_restore_abort(tt), which intentionally leaves committed restored pages DMA-mapped in tt->dma_address[] for the backup loop to unmap, and frees tt->restore (setting tt->restore = NULL).

If ttm_pool_backup() then takes the early -EBUSY return (for example, when swap space is exhausted so !ttm_backup_bytes_avail() && !flags->purge), the DMA-unmap loop below is skipped. That leaves a partial tt with tt->restore == NULL while tt->pages[0 .. alloced_pages - 1] remain DMA-mapped:

- On teardown, ttm_tt_fini() -> ttm_pool_drop_backed_up() sees tt->restore == NULL and calls:

    ttm_pool_free_range(NULL, tt, ttm_cached, 0, tt->num_pages);

Because pool is NULL, ttm_pool_unmap_and_free() skips ttm_pool_unmap() and frees the still-DMA-mapped pages back to the page allocator.

- On a subsequent restore, ttm_pool_restore_and_alloc() starts a fresh restore at index 0, and ttm_pool_restore_commit() frees the retained resident pages via __free_pages_gpu_account(p, 0, false) without DMA-unmapping them and overwrites tt->dma_address[].

Quoted 4 lines
drivers/gpu/drm/ttm/ttm_tt.c +0 -0
index b645a18181843..2b441bf41d927 100644

[ ... ]

Quoted 10 lines
drivers/gpu/drm/ttm/ttm_tt.c +5 -1
@@ -289,7 +289,18 @@ long ttm_tt_backup(struct ttm_device *bdev, struct ttm_tt *tt,
 	ret = ttm_pool_backup(&bdev->pool, tt, &flags);
 	if (ret > 0) {
 		tt->page_flags &= ~TTM_TT_FLAG_PRIV_POPULATED;
-		tt->page_flags |= TTM_TT_FLAG_BACKED_UP;
+		if (ret >= tt->remaining_pages)
+			tt->remaining_pages = 0;
+		else
+			tt->remaining_pages -= ret;
+

drivers/gpu/drm/ttm/ttm_tt.c long ttm_tt_backup(struct ttm_device *bdev, struct ttm_tt *tt, · line 306

Quoted 10 lines
drivers/gpu/drm/ttm/ttm_tt.c +7 -0
+		if (tt->remaining_pages) {
+			tt->page_flags &= ~TTM_TT_FLAG_BACKED_UP;
+			tt->page_flags |= TTM_TT_FLAG_PARTIAL;
+		} else {
+			tt->page_flags &= ~TTM_TT_FLAG_PARTIAL;
+			tt->page_flags |= TTM_TT_FLAG_BACKED_UP;
+		}
 	}
 
 	return ret;

[Severity: High]
What happens if ttm_pool_backup() fails on the very first page after it has already converted the pages to write-back and unmapped tt->dma_address[]?

In ttm_pool_backup(), for a populated tt (!partial), all pages are first converted to write-back via set_pages_array_wb() (when tt->caching != ttm_cached), and all entries in tt->dma_address[] are DMA-unmapped via ttm_pool_unmap() and zeroed via memset() before the folio backup loop starts.

If ttm_backup_backup_folio() fails on the first page (i == 0) with nr_backed == 0 (or fault injection truncates num_pages mid-compound on the first compound page), ttm_pool_backup() breaks out of the loop with shrunken == 0 and returns a negative error code (or 0).

Because ttm_tt_backup() only clears TTM_TT_FLAG_PRIV_POPULATED and sets TTM_TT_FLAG_PARTIAL when ret > 0, the tt remains marked TTM_TT_FLAG_PRIV_POPULATED (and not TTM_TT_FLAG_PARTIAL) even though its DMA mappings have been unmapped and zeroed and its pages have been converted to write-back:

- Subsequent ttm_bo_populate() / ttm_tt_populate() calls see ttm_tt_is_populated(tt) == true and return 0 without restoring DMA mappings or caching.
- A subsequent ttm_pool_backup() call sees !partial and calls set_pages_array_wb() a second time on pages that are already WB.
- Subsequent ttm_tt_unpopulate() -> ttm_pool_free() calls ttm_pool_unmap() on zeroed DMA addresses and returns the WB pages into the WC/UC pool via ttm_pool_type_give().

Quoted 23 lines
drivers/gpu/drm/ttm/ttm_tt.c +12 -2
@@ -300,10 +311,20 @@ int ttm_tt_restore(struct ttm_device *bdev, struct ttm_tt *tt,
 {
 	int ret = ttm_pool_restore_and_alloc(&bdev->pool, tt, ctx);
 
-	if (ret)
+	if (ret) {
+		/*
+		 * Let the shrinker reclaim pages made resident by the
+		 * failed restore. remaining_pages is recounted on backup.
+		 */
+		if (ttm_tt_is_backed_up(tt) &&
+		    ttm_pool_restore_has_resident(tt)) {
+			tt->page_flags &= ~TTM_TT_FLAG_BACKED_UP;
+			tt->page_flags |= TTM_TT_FLAG_PARTIAL;
+		}
 		return ret;
+	}
 
-	tt->page_flags &= ~TTM_TT_FLAG_BACKED_UP;
+	tt->page_flags &= ~(TTM_TT_FLAG_BACKED_UP | TTM_TT_FLAG_PARTIAL);
 
 	return 0;
 }

[ ... ]

Quoted 4 lines
drivers/gpu/drm/xe/xe_bo.c +0 -0
index 2afee1a6de668..6907b683dee07 100644

[ ... ]

Quoted 23 lines
drivers/gpu/drm/xe/xe_bo.c +16 -1
@@ -676,20 +696,35 @@ static int xe_ttm_tt_populate(struct ttm_device *ttm_dev, struct ttm_tt *tt,
 	    !(tt->page_flags & TTM_TT_FLAG_EXTERNAL_MAPPABLE))
 		return 0;
 
-	if (ttm_tt_is_backed_up(tt) && !xe_tt->purgeable) {
+	/*
+	 * A purgeable backed-up tt was purged and holds neither pages nor
+	 * handles. Partial tts are never purgeable: madvise only marks
+	 * populated tts purgeable, and the shrinker purges those fully.
+	 */
+	if ((ttm_tt_is_backed_up(tt) || ttm_tt_is_partial(tt)) &&
+	    !xe_tt->purgeable) {
+		pgoff_t remaining = ttm_tt_remaining_pages(tt);
+		long backed_up_pages = tt->num_pages - remaining;
+
 		err = ttm_tt_restore(ttm_dev, tt, ctx);
+		if (!err) {
+			xe_tt->purgeable = false;
+			xe_ttm_tt_account_add(ttm_to_xe_device(ttm_dev), tt,
+					      backed_up_pages, !remaining);
+			update_global_total_pages(ttm_dev, backed_up_pages);
+		}
 	} else {

[ ... ]

Quoted 11 lines
drivers/gpu/drm/xe/xe_bo.c +2 -1
@@ -1478,7 +1522,8 @@ long xe_bo_shrink(struct ttm_operation_ctx *ctx, struct ttm_buffer_object *bo,
 	if (needs_rpm && !xe_pm_runtime_get_if_active(xe))
 		goto out_unref;
 
-	*scanned += tt->num_pages;
+	old_remaining = ttm_tt_remaining_pages(tt);
+	*scanned += old_remaining;
 	lret = ttm_bo_shrink(ctx, bo, (struct ttm_bo_shrink_flags)
 			     {.purge = false,
 			      .writeback = flags.writeback,

drivers/gpu/drm/xe/xe_bo.c long xe_bo_shrink(struct ttm_operation_ctx *ctx, struct ttm_buffer_object *bo, · line 1534

Quoted 8 lines
drivers/gpu/drm/xe/xe_bo.c +1 -4
@@ -1486,10 +1531,7 @@ long xe_bo_shrink(struct ttm_operation_ctx *ctx, struct ttm_buffer_object *bo,
 	if (needs_rpm)
 		xe_pm_runtime_put(xe);
 
-	if (lret > 0) {
-		xe_ttm_tt_account_subtract(xe, tt, tt->num_pages, 1);
-		update_global_total_pages(bo->bdev, -(long)tt->num_pages);
-	}
+	xe_ttm_tt_account_shrunk(bo->bdev, tt, old_remaining);

[Severity: Medium]
When ttm_tt_restore() fails after making pages resident, doesn't leaving tt->remaining_pages and the xe shrinker counters unupdated break shrinker accounting and scanning?

When a fully backed-up tt (with tt->remaining_pages == 0 and 0 pages accounted in xe->mem.shrinker) fails in ttm_tt_restore() after committing or restoring pages, ttm_tt_restore() transitions it to TTM_TT_FLAG_PARTIAL, but tt->remaining_pages stays 0 until ttm_pool_restore_abort() runs during backup, and xe_ttm_tt_populate() skips xe_ttm_tt_account_add() because err != 0:

1. Because the newly resident pages were never added via xe_ttm_tt_account_add(), xe_shrinker_count() does not see them and can return SHRINK_EMPTY if no other BOs are populated.
2. When xe_bo_shrink() (or xe_bo_shrink_purge()) runs on this BO, it reads old_remaining = ttm_tt_remaining_pages(tt) (which is still 0) and does *scanned += old_remaining before calling ttm_bo_shrink() -> ttm_tt_backup() -> ttm_pool_backup() -> ttm_pool_restore_abort(). In xe_shrinker_scan(), if nr_scanned remains 0 while freed > 0, it will return SHRINK_STOP instead of freed:

   drivers/gpu/drm/xe/xe_shrinker.c:xe_shrinker_scan() {
       ...
       return nr_scanned ? freed : SHRINK_STOP;

}
3. If the BO is destroyed via xe_ttm_tt_destroy() after a failed restore without an intervening backup attempt, or if a backup attempt in xe_bo_shrink() aborts the restore and increases tt->remaining_pages from 0 to N (say, when only part of those N pages are backed up), xe_ttm_tt_account_shrunk() and xe_ttm_tt_destroy() will subtract pages that were never added in xe_ttm_tt_populate(), underflowing the shrinker counters.

Signature · 1 line
Sashiko AI review · https://sashiko.dev/#/patchset/[email protected]?part=3
#6 lore raw

Re: [PATCH 3/4] drm/ttm, drm/xe: Introduce TTM_TT_FLAG_PARTIAL for partially backed-up tts

In reply to Thomas Hellström
kernel test robot noticed the following build warnings:

Hi Thomas,

kernel test robot noticed the following build warnings:

[auto build test WARNING on drm-xe/drm-xe-next]
[also build test WARNING on drm-tip/drm-tip next-20261030]
[cannot apply to drm-misc/drm-misc-next daeinki-drm-exynos/exynos-drm-next drm/drm-next drm-i915/for-linux-next drm-i915/for-linux-next-fixes linus/master v7.3] [If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Thomas-Hellstr-m/drm-ttm-Don-t-mark-backed-up-shmem-folios-accessed/20261104-211328
base:   https://gitlab.freedesktop.org/drm/xe/kernel.git drm-xe-next
patch link:    https://lore.kernel.org/r/20261104201331.2462-4-thomas.hellstrom%40linux.intel.com
patch subject: [PATCH 3/4] drm/ttm, drm/xe: Introduce TTM_TT_FLAG_PARTIAL for partially backed-up tts
config: arm-defconfig (https://download.01.org/0day-ci/archive/20261105/[email protected]/config)
compiler: clang version 24.0.0git (https://github.com/llvm/llvm-project 812626a41399a1d464a0d69627ab45c83b8ebfb9)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20261105/[email protected]/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <[email protected]>
| Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/

All warnings (new ones prefixed by >>):

>> drivers/gpu/drm/ttm/ttm_pool.c:1076:17: warning: variable 'mid' set but not used [-Wunused-but-set-variable]
    1076 |         pgoff_t i, nr, mid;
         |                        ^
>> drivers/gpu/drm/ttm/ttm_pool.c:1177:7: warning: unused variable 'partial' [-Wunused-variable]
    1177 |         bool partial = ttm_tt_is_partial(tt);
         |              ^~~~~~~

2 warnings generated.

vim +/mid +1076 drivers/gpu/drm/ttm/ttm_pool.c

1059
1060 /**
1061 * ttm_pool_restore_abort() - Abort an ongoing restore of a partial tt
1062 * @tt: The struct ttm_tt with an active restore.
1063 *
1064 * Abort a partially completed restore, leaving the tt in a consistent
1065 * state for a subsequent backup. The uncommitted in-flight page is
1066 * DMA-unmapped and split; restored sub-pages are kept, unused ones freed.
1067 * Non-cached committed pages are converted to write-back so the
1068 * partial-backup invariant (all resident pages are cached) is maintained.
1069 * Committed pages are left DMA-mapped for the backup path to handle.
1070 * Since restored pages are now resident, &ttm_tt.remaining_pages is
1071 * updated to reflect the number of resident pages.
1072 */
1073 static void ttm_pool_restore_abort(struct ttm_tt *tt)
1074 {
1075 struct ttm_pool_tt_restore *restore = tt->restore;

> 1076		pgoff_t i, nr, mid;
  1077	
  1078		if (!restore)
  1079			return;
  1080	
  1081		/* Handle the uncommitted in-flight page. */
  1082		if (ttm_pool_restore_valid(restore)) {
  1083			struct page *page = restore->alloced_page;
  1084	
  1085			nr = 1UL << restore->order;
  1086	
  1087			if (tt->dma_address)
  1088				ttm_pool_unmap(restore->pool, restore->first_dma, nr);
  1089	
  1090	#ifdef CONFIG_X86
  1091			if (restore->page_caching != ttm_cached && !PageHighMem(page))
  1092				set_pages_wb(page, nr);
  1093	#endif
  1094			ttm_pool_split_for_swap(restore->pool, page);
  1095	
  1096			for (i = 0; i < restore->restored_pages; i++)
  1097				restore->snapshot_alloc.pages[i] = page + i;
  1098	
  1099			/*
  1100			 * Clear stale DMA addresses for the in-flight sub-pages.
  1101			 * These pages were never committed via
  1102			 * ttm_pool_allocated_page_commit(), so tt->dma_address[]
  1103			 * contains stale values that the backup path would
  1104			 * incorrectly try to unmap. All @nr entries are stale,
  1105			 * including restored ones: commit is all-or-nothing per
  1106			 * compound, and the whole compound was unmapped above.
  1107			 */
  1108			if (tt->dma_address) {
  1109				pgoff_t off = restore->snapshot_alloc.pages -
  1110					      tt->pages;
  1111	
  1112				memset(&tt->dma_address[off], 0,
  1113				       nr * sizeof(*tt->dma_address));
  1114			}
  1115	
  1116			for (i = restore->restored_pages; i < nr; i++)
  1117				__free_pages_gpu_account(page + i, 0, false);
  1118		}
  1119	
  1120		/*
  1121		 * Don't DMA-unmap committed restored pages here; their DMA
  1122		 * addresses are in tt->dma_address[] and the backup path
  1123		 * will unmap them.
  1124		 */
  1125	
  1126		/* Convert non-cached committed pages to write-back. */
  1127		mid = restore->snapshot_alloc.caching_divide - tt->pages;
  1128	#ifdef CONFIG_X86
  1129		if (mid > 0 && tt->caching != ttm_cached)
  1130			set_pages_array_wb(tt->pages, mid);
  1131	#endif
  1132	
  1133		kfree(restore);
  1134		tt->restore = NULL;
  1135	
  1136		for (i = 0, nr = 0; i < tt->num_pages; i++) {
  1137			struct page *p = tt->pages[i];
  1138	
  1139			if (p && !ttm_backup_page_ptr_is_handle(p))
  1140				nr++;
  1141		}
  1142		tt->remaining_pages = nr;
  1143	}
  1144	
  1145	/**
  1146	 * ttm_pool_backup() - Back up or purge a struct ttm_tt
  1147	 * @pool: The pool used when allocating the struct ttm_tt.
  1148	 * @tt: The struct ttm_tt.
  1149	 * @flags: Flags to govern the backup behaviour.
  1150	 *
  1151	 * Back up or purge a struct ttm_tt. If @purge is true, then
  1152	 * all pages will be freed directly to the system rather than to the pool
  1153	 * they were allocated from, making the function behave similarly to
  1154	 * ttm_pool_free(). If @purge is false the pages will be backed up instead,
  1155	 * exchanged for handles.
  1156	 * A subsequent call to ttm_pool_restore_and_alloc() will then read back the content and
  1157	 * a subsequent call to ttm_pool_drop_backed_up() will drop it.
  1158	 * If backup of a page fails for whatever reason, @ttm will still be
  1159	 * partially backed up, retaining those pages for which backup fails.
  1160	 * In that case, this function can be retried, possibly after freeing up
  1161	 * memory resources.
  1162	 *
  1163	 * Return: Number of pages actually backed up or freed, or negative
  1164	 * error code on error.
  1165	 */
  1166	long ttm_pool_backup(struct ttm_pool *pool, struct ttm_tt *tt,
  1167			     const struct ttm_backup_flags *flags)
  1168	{
  1169		struct file *backup = tt->backup;
  1170		struct page *page;
  1171		gfp_t alloc_gfp;
  1172		gfp_t gfp;
  1173		int ret = 0;
  1174		pgoff_t shrunken = 0;
  1175		pgoff_t i, j, num_pages, npages;
  1176		pgoff_t nr_backed;
> 1177		bool partial = ttm_tt_is_partial(tt);

1178
1179 if (WARN_ON(ttm_tt_is_backed_up(tt)))
1180 return -EINVAL;
1181
1182 ttm_pool_restore_abort(tt);
1183
1184 if ((!ttm_backup_bytes_avail() && !flags->purge) ||
1185 ttm_pool_uses_dma_alloc(pool) || ttm_tt_is_backed_up(tt))
1186 return -EBUSY;
1187

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

author maintainer
#7 lore raw

PATCH 4/4 drm/ttm, drm/xe: Gate reserve-dipping backup retries on may_writeback

In reply to Thomas Hellström

Backup of a page allocates the shmem destination folio with __GFP_NOMEMALLOC for high-order pages, to avoid dipping into kernel memory reserves, but order-0 pages were always backed up without it. When a high-order allocation fails mid-compound, the compound is split and the remaining subpages are individually retried at order 0 without __GFP_NOMEMALLOC.

That retry happened unconditionally, regardless of whether the caller wanted writeback or could tolerate blocking. Retrying without writeback only grows dirty shmem rather than relieving the memory pressure that caused the original failure, and the retry itself may need to reclaim or block.

Back up all pages with __GFP_NOMEMALLOC first, and add two flags, may_writeback and force_writeback, to struct ttm_backup_flags, replacing the single writeback flag:
- may_writeback governs whether a failed backup allocation is retried without __GFP_NOMEMALLOC, splitting a high-order page if needed. When clear, the backup stops at the failure, keeping whatever progress was already made and leaving the remainder resident for a later retry.
- force_writeback replaces the old writeback flag and is honoured both for the regular backup and for any retry, so a caller that allows the retry can also choose to force it to actually complete and relieve memory pressure instead of just relocating it.

Thread the two new flags all the way from the xe shrinker down through xe_bo_shrink_flags and ttm_bo_shrink_flags to ttm_backup_flags. xe_shrinker_walk() now takes an explicit allow_writeback parameter (computed once from __GFP_IO and no_wait_gpu in xe_shrinker_scan()) rather than carrying that gfp-context permission inside the per-call flags, and uses it to decide, pass by pass, whether the retry is allowed (may_writeback) and whether it should be forced to completion (force_writeback).

---
 drivers/gpu/drm/ttm/ttm_bo_util.c |  3 +-
 drivers/gpu/drm/ttm/ttm_pool.c    | 47 +++++++++++++++++++++----------
 drivers/gpu/drm/xe/xe_bo.c        |  6 ++--
 drivers/gpu/drm/xe/xe_bo.h        |  9 ++++--
 drivers/gpu/drm/xe/xe_shrinker.c  | 39 ++++++++++++++++++++-----
 include/drm/ttm/ttm_bo.h          |  9 ++++--
 include/drm/ttm/ttm_tt.h          | 13 +++++++--
 7 files changed, 93 insertions(+), 33 deletions(-)
drivers/gpu/drm/ttm/ttm_bo_util.c +2 -1
index 975dea33075f..21317c212c27 100644
@@ -1122,7 +1122,8 @@ long ttm_bo_shrink(struct ttm_operation_ctx *ctx, struct ttm_buffer_object *bo,
 
 	lret = ttm_tt_backup(bdev, bo->ttm, (struct ttm_backup_flags)
 			     {.purge = flags.purge,
-			      .writeback = flags.writeback});
+			      .may_writeback = flags.may_writeback,
+			      .force_writeback = flags.force_writeback});
 
 	if (lret > 0 && !ttm_tt_is_partial(bo->ttm)) {
 		spin_lock(&bdev->lru_lock);
drivers/gpu/drm/ttm/ttm_pool.c +32 -15

88 lines not on this page · raw message

drivers/gpu/drm/xe/xe_bo.c +3 -3
index 6907b683dee0..614766eb4b8f 100644
@@ -1437,7 +1437,6 @@ static long xe_bo_shrink_purge(struct ttm_operation_ctx *ctx,
 	*scanned += old_remaining;
 	lret = ttm_bo_shrink(ctx, bo, (struct ttm_bo_shrink_flags)
 			     {.purge = true,
-			      .writeback = false,
 			      .allow_move = false});
 
 	xe_ttm_tt_account_shrunk(bo->bdev, bo->ttm, old_remaining);
@@ -1526,8 +1525,9 @@ long xe_bo_shrink(struct ttm_operation_ctx *ctx, struct ttm_buffer_object *bo,
 	*scanned += old_remaining;
 	lret = ttm_bo_shrink(ctx, bo, (struct ttm_bo_shrink_flags)
 			     {.purge = false,
-			      .writeback = flags.writeback,
-			      .allow_move = true});
+			      .allow_move = true,
+			      .may_writeback = flags.may_writeback,
+			      .force_writeback = flags.force_writeback});
 	if (needs_rpm)
 		xe_pm_runtime_put(xe);
 
drivers/gpu/drm/xe/xe_bo.h +7 -2
index 77b3a02e9b8e..82cbb1f2d61d 100644
@@ -616,11 +616,16 @@ static inline unsigned int xe_sg_segment_size(struct device *dev)
 /**
  * struct xe_bo_shrink_flags - flags governing the shrink behaviour.
  * @purge: Only purging allowed. Don't shrink if bo not purgeable.
- * @writeback: Attempt to immediately move content to swap.
+ * @may_writeback: Allow retrying a failed backup allocation using kernel
+ * reserves. See struct ttm_backup_flags.
+ * @force_writeback: Attempt to immediately move content to swap, both
+ * for the regular backup and for any retry allowed by @may_writeback.
+ * See struct ttm_backup_flags.
  */
 struct xe_bo_shrink_flags {
 	u32 purge : 1;
-	u32 writeback : 1;
+	u32 may_writeback : 1;
+	u32 force_writeback : 1;
 };
 
 long xe_bo_shrink(struct ttm_operation_ctx *ctx, struct ttm_buffer_object *bo,
drivers/gpu/drm/xe/xe_shrinker.c +32 -7
index c86455ea08d1..c24f35cbc235 100644
@@ -171,6 +171,7 @@ static int __xe_shrinker_walk(struct xe_shrinker *shrinker,
 static int xe_shrinker_walk(struct xe_shrinker *shrinker,
 			    struct ttm_operation_ctx *ctx,
 			    const struct xe_bo_shrink_flags flags,
+			    bool allow_writeback,
 			    unsigned long to_scan, unsigned long *scanned,
 			    unsigned long *freed)
 {
@@ -179,7 +180,8 @@ static int xe_shrinker_walk(struct xe_shrinker *shrinker,
 	int ret;
 
 	swap(no_wait_gpu, ctx->no_wait_gpu);
-	save_flags.writeback = false;
+	save_flags.may_writeback = false;
+	save_flags.force_writeback = false;
 	ret = __xe_shrinker_walk(shrinker, ctx, save_flags, to_scan, scanned,
 				 freed);
 	swap(no_wait_gpu, ctx->no_wait_gpu);
@@ -187,15 +189,32 @@ static int xe_shrinker_walk(struct xe_shrinker *shrinker,
 		return ret;
 
 	if (!ctx->no_wait_gpu) {
+		/*
+		 * Blocking is now tolerated: allow retrying a failed backup
+		 * allocation using kernel reserves, but only if writeback is
+		 * permitted at all in this gfp context (i.e. __GFP_IO is
+		 * set); see @allow_writeback in xe_shrinker_scan().
+		 */
+		save_flags.may_writeback = allow_writeback;
 		ret = __xe_shrinker_walk(shrinker, ctx, save_flags, to_scan, scanned,
 					 freed);
 		if (ret || *scanned >= to_scan)
 			return ret;
 	}
 
-	if (flags.writeback)
-		ret = __xe_shrinker_walk(shrinker, ctx, flags, to_scan, scanned,
+	if (allow_writeback) {
+		struct xe_bo_shrink_flags wb_flags = flags;
+
+		/*
+		 * Writeback explicitly allowed: also force writeback on any
+		 * retry so it actually relieves memory pressure instead of
+		 * just growing dirty shmem.
+		 */
+		wb_flags.may_writeback = true;
+		wb_flags.force_writeback = true;
+		ret = __xe_shrinker_walk(shrinker, ctx, wb_flags, to_scan, scanned,
 					 freed);
+	}
 
 	return ret;
 }
@@ -297,7 +316,12 @@ static unsigned long xe_shrinker_scan_purgeable(struct shrinker *shrink,
 		.purge = true,
 	};
 
-	xe_shrinker_walk(shrinker, &ctx, shrink_flags, nr_to_scan, &nr_scanned, &freed);
+	/*
+	 * Purging never does backup/writeback, so there's nothing to
+	 * force or gate on __GFP_IO here.
+	 */
+	xe_shrinker_walk(shrinker, &ctx, shrink_flags, false,
+			 nr_to_scan, &nr_scanned, &freed);
 
 	sc->nr_scanned = nr_scanned;
 
@@ -314,15 +338,16 @@ static unsigned long xe_shrinker_scan(struct shrinker *shrink, struct shrink_con
 	unsigned long nr_to_scan = sc->nr_to_scan, nr_scanned = 0, freed = 0;
 	struct xe_bo_shrink_flags shrink_flags = {
 		.purge = false,
-		/* Don't request writeback without __GFP_IO. */
-		.writeback = !ctx.no_wait_gpu && (sc->gfp_mask & __GFP_IO),
 	};
+	/* Don't allow writeback without __GFP_IO. */
+	bool allow_writeback = !ctx.no_wait_gpu && (sc->gfp_mask & __GFP_IO);
 	bool runtime_pm;
 
 	/* Might need runtime PM to access backed-up or CCS-compressed data. */
 	runtime_pm = xe_shrinker_runtime_pm_get(shrinker);
 
-	xe_shrinker_walk(shrinker, &ctx, shrink_flags, nr_to_scan, &nr_scanned, &freed);
+	xe_shrinker_walk(shrinker, &ctx, shrink_flags, allow_writeback,
+			 nr_to_scan, &nr_scanned, &freed);
 
 	sc->nr_scanned = nr_scanned;
 	xe_shrinker_runtime_pm_put(shrinker, runtime_pm);
include/drm/ttm/ttm_bo.h +7 -2
index 32791c4db2a9..90b4a8aafac3 100644
@@ -249,15 +249,20 @@ s64 ttm_lru_walk_for_evict(struct ttm_lru_walk *walk, struct ttm_device *bdev,
 /**
  * struct ttm_bo_shrink_flags - flags to govern the bo shrinking behaviour
  * @purge: Purge the content rather than backing it up.
- * @writeback: Attempt to immediately write content to swap space.
  * @allow_move: Allow moving to system before shrinking. This is typically
  * not desired for zombie- or ghost objects (with zombie object meaning
  * objects with a zero gem object refcount)
+ * @may_writeback: Allow retrying a failed backup allocation using kernel
+ * reserves. See struct ttm_backup_flags.
+ * @force_writeback: Attempt to immediately write content to swap space,
+ * both for the regular backup and for any retry allowed by
+ * @may_writeback. See struct ttm_backup_flags.
  */
 struct ttm_bo_shrink_flags {
 	u32 purge : 1;
-	u32 writeback : 1;
 	u32 allow_move : 1;
+	u32 may_writeback : 1;
+	u32 force_writeback : 1;
 };
 
 long ttm_bo_shrink(struct ttm_operation_ctx *ctx, struct ttm_buffer_object *bo,
include/drm/ttm/ttm_tt.h +10 -3
index c292a8f0583f..811b90f14d54 100644
@@ -315,12 +315,19 @@ unsigned long ttm_tt_pages_limit(void);
 /**
  * struct ttm_backup_flags - Flags to govern backup behaviour.
  * @purge: Free pages without backing up. Bypass pools.
- * @writeback: Attempt to copy contents directly to swap space, even
- * if that means blocking on writes to external memory.
+ * @may_writeback: If allocating backup memory fails without dipping into
+ * kernel reserves, allow retrying with reserves, splitting high-order
+ * pages if needed. If not set, stop the backup at that point, leaving
+ * the remainder resident, since the retry may need to block.
+ * @force_writeback: Attempt to copy contents directly to swap space,
+ * even if that means blocking on writes to external memory. This
+ * applies both to the regular backup and to any retry allowed by
+ * @may_writeback.
  */
 struct ttm_backup_flags {
 	u32 purge : 1;
-	u32 writeback : 1;
+	u32 may_writeback : 1;
+	u32 force_writeback : 1;
 };
 
 long ttm_tt_backup(struct ttm_device *bdev, struct ttm_tt *tt,
Signature · 1 line
2.56.0
#8 lore raw

Re: [PATCH 4/4] drm/ttm, drm/xe: Gate reserve-dipping backup retries on may_writeback

Thank you for your contribution! Sashiko AI review found 3 potential issue(s) to consider: - [High] drm/ttm: unsplit high-order retry drains reserves in ttm_pool_backup() - [High] drm/xe: premature…

Thank you for your contribution! Sashiko AI review found 3 potential issue(s) to consider:
- [High] drm/ttm: unsplit high-order retry drains reserves in ttm_pool_backup()
- [High] drm/xe: premature scan termination in xe_shrinker_walk() and xe_bo_shrink()
- [High] drm/ttm: corrupted caching and DMA state in ttm_pool_backup() on page-0 failure --

commit 40d7831061e17e7b2e436a106ab6986d2645fa67
Author: Thomas Hellström <[email protected]>

drm/ttm, drm/xe: Gate reserve-dipping backup retries on may_writeback

This commit gates shmem backup retries that dip into kernel memory reserves on a new may_writeback flag while separating direct swap writeback into force_writeback, and threads both flags through TTM and the Xe shrinker.

Quoted 4 lines
drivers/gpu/drm/ttm/ttm_pool.c +0 -0
index 8f05257e4f542..87c1ac39af94e 100644

[ ... ]

drivers/gpu/drm/ttm/ttm_pool.c long ttm_pool_backup(struct ttm_pool *pool, struct ttm_tt *tt, · line 1265

Quoted 8 lines
drivers/gpu/drm/ttm/ttm_pool.c +3 -1
@@ -1256,7 +1260,9 @@ long ttm_pool_backup(struct ttm_pool *pool, struct ttm_tt *tt,
 	else
 		gfp = GFP_HIGHUSER;
 
-	alloc_gfp = GFP_KERNEL | __GFP_HIGH | __GFP_NOWARN | __GFP_RETRY_MAYFAIL;
+	/* Don't dip into kernel reserves unless @flags->may_writeback is set. */
+	alloc_gfp = GFP_KERNEL | __GFP_HIGH | __GFP_NOWARN |
+		    __GFP_RETRY_MAYFAIL | __GFP_NOMEMALLOC;

[Severity: High]
When ttm_pool_backup() is called with flags->may_writeback set to false (such as the initial pass of xe_shrinker_walk()), can an -ENOMEM failure on the very first page leave tt with corrupted caching and DMA state?

Before entering the backup loop, ttm_pool_backup() converts all resident pages of a non-partial tt with tt->caching != ttm_cached to write-back via set_pages_array_wb(), and unmaps and zeroes all tt->dma_address[] entries:

drivers/gpu/drm/ttm/ttm_pool.c:ttm_pool_backup() {
	if (!partial && tt->caching != ttm_cached) {
		...
		if (run_count)
			set_pages_array_wb(&tt->pages[run_start], run_count);
	}
	...
	if (tt->dma_address || flags->purge) {
		...
			if (tt->dma_address && tt->dma_address[i]) {
				ttm_pool_unmap(pool, tt->dma_address[i],
					       num_pages);
				memset(&tt->dma_address[i], 0,
				       num_pages * sizeof(*tt->dma_address));
			}
	}
}

Because alloc_gfp now includes __GFP_NOMEMALLOC for all page orders (including order 0) and does not retry when flags->may_writeback is false, shmem_read_folio_gfp() can fail with -ENOMEM on the first page (i == 0, nr_backed == 0, shrunken == 0), causing ttm_pool_backup() to return -ENOMEM.

In ttm_tt_backup(), tt->page_flags is only updated when ret > 0:

drivers/gpu/drm/ttm/ttm_tt.c:ttm_tt_backup() {
	ret = ttm_pool_backup(&bdev->pool, tt, &flags);
	if (ret > 0) {
		tt->page_flags &= ~TTM_TT_FLAG_PRIV_POPULATED;
		...
		if (tt->remaining_pages) {
			tt->page_flags &= ~TTM_TT_FLAG_BACKED_UP;
			tt->page_flags |= TTM_TT_FLAG_PARTIAL;
		}
		...
	}
}

With TTM_TT_FLAG_PRIV_POPULATED still set and TTM_TT_FLAG_PARTIAL clear, won't subsequent calls to ttm_tt_populate() see ttm_tt_is_populated(tt) as true and return 0 without restoring WC/UC caching or DMA mappings, while ttm_tt_unpopulate() -> ttm_pool_free() returns the write-back pages directly into the WC/UC page pool and calls ttm_pool_unmap() on the zeroed tt->dma_address[] entries?

Quoted 27 lines
drivers/gpu/drm/ttm/ttm_pool.c +2 -10
 	num_pages = tt->num_pages;
 
@@ -1280,14 +1286,7 @@ long ttm_pool_backup(struct ttm_pool *pool, struct ttm_tt *tt,
 		order = ttm_pool_page_order(pool, page);
 		npages = 1UL << order;
 
-		/*
-		 * We don't allow dipping kernel reserves for high order backup
-		 */
-		if (order)
-			alloc_gfp |= __GFP_NOMEMALLOC;
-		else
-			alloc_gfp &= ~__GFP_NOMEMALLOC;
-
+		dip_reserves = false;
 		/*
 		 * Back up the compound atomically at its native order. If
 		 * fault injection truncated num_pages mid-compound, skip
@@ -1296,10 +1295,18 @@ long ttm_pool_backup(struct ttm_pool *pool, struct ttm_tt *tt,
 		if (unlikely(i + npages > num_pages))
 			break;
 
+retry:
 		handle = ttm_backup_backup_folio(backup, page_folio(page),
-						 order, flags->writeback, i,
-						 gfp, alloc_gfp,

drivers/gpu/drm/ttm/ttm_pool.c long ttm_pool_backup(struct ttm_pool *pool, struct ttm_tt *tt, · line 1308

Quoted 10 lines
drivers/gpu/drm/ttm/ttm_pool.c +9 -1
-						 &nr_backed);
+						 order, flags->force_writeback, i,
+						 gfp, dip_reserves ?
+						 alloc_gfp & ~__GFP_NOMEMALLOC :
+						 alloc_gfp, &nr_backed);
+		if (unlikely(handle == -ENOMEM && !nr_backed &&
+			     flags->may_writeback && !dip_reserves)) {
+			dip_reserves = true;
+			goto retry;
+		}

[Severity: High]
If ttm_backup_backup_folio() fails with -ENOMEM on the first subpage (!nr_backed) of a high-order compound page (order > 0), doesn't jumping directly to retry re-invoke ttm_backup_backup_folio() at the full compound order with __GFP_NOMEMALLOC cleared instead of splitting the compound into order-0 pages first?

When system free memory is below normal zone watermarks during reclaim, the initial __GFP_NOMEMALLOC allocation fails on subpage 0 with handle == -ENOMEM and nr_backed == 0. Because ttm_pool_split_for_swap() is only called further down when nr_backed > 0 and nr_backed < npages, retrying at the original order forces ttm_backup_backup_folio() to allocate up to 1 << order shmem pages from kernel memory reserves before returning to ttm_pool_backup() where the source compound page can finally be freed.

Should this path split a high-order page via ttm_pool_split_for_swap(pool, page) and reset order = 0 and npages = 1 before retrying with reserves, as described in the struct ttm_backup_flags kerneldoc for may_writeback, so each order-0 subpage is backed up and freed before allocating the next shmem page?

[ ... ]

Quoted 44 lines
drivers/gpu/drm/xe/xe_shrinker.c +13 -3
index c86455ea08d18..c24f35cbc2358 100644
@@ -171,6 +171,7 @@ static int __xe_shrinker_walk(struct xe_shrinker *shrinker,
 static int xe_shrinker_walk(struct xe_shrinker *shrinker,
 			    struct ttm_operation_ctx *ctx,
 			    const struct xe_bo_shrink_flags flags,
+			    bool allow_writeback,
 			    unsigned long to_scan, unsigned long *scanned,
 			    unsigned long *freed)
 {
@@ -179,7 +180,8 @@ static int xe_shrinker_walk(struct xe_shrinker *shrinker,
 	int ret;
 
 	swap(no_wait_gpu, ctx->no_wait_gpu);
-	save_flags.writeback = false;
+	save_flags.may_writeback = false;
+	save_flags.force_writeback = false;
 	ret = __xe_shrinker_walk(shrinker, ctx, save_flags, to_scan, scanned,
 				 freed);
 	swap(no_wait_gpu, ctx->no_wait_gpu);
@@ -187,15 +189,32 @@ static int xe_shrinker_walk(struct xe_shrinker *shrinker,
 		return ret;
 
 	if (!ctx->no_wait_gpu) {
+		/*
+		 * Blocking is now tolerated: allow retrying a failed backup
+		 * allocation using kernel reserves, but only if writeback is
+		 * permitted at all in this gfp context (i.e. __GFP_IO is
+		 * set); see @allow_writeback in xe_shrinker_scan().
+		 */
+		save_flags.may_writeback = allow_writeback;
 		ret = __xe_shrinker_walk(shrinker, ctx, save_flags, to_scan, scanned,
 					 freed);
 		if (ret || *scanned >= to_scan)
 			return ret;
 	}
 
-	if (flags.writeback)
-		ret = __xe_shrinker_walk(shrinker, ctx, flags, to_scan, scanned,
+	if (allow_writeback) {
+		struct xe_bo_shrink_flags wb_flags = flags;
+

drivers/gpu/drm/xe/xe_shrinker.c static int xe_shrinker_walk(struct xe_shrinker *shrinker, · line 217

Quoted 10 lines
drivers/gpu/drm/xe/xe_shrinker.c +9 -0
+		/*
+		 * Writeback explicitly allowed: also force writeback on any
+		 * retry so it actually relieves memory pressure instead of
+		 * just growing dirty shmem.
+		 */
+		wb_flags.may_writeback = true;
+		wb_flags.force_writeback = true;
+		ret = __xe_shrinker_walk(shrinker, ctx, wb_flags, to_scan, scanned,
 					 freed);
+	}

[Severity: High]
Can xe_shrinker_walk() terminate after the first pass with 0 freed pages when __GFP_NOMEMALLOC shmem allocations fail under memory pressure, without ever reaching the passes that set may_writeback or force_writeback?

In xe_bo_shrink(), *scanned is incremented by the full old_remaining page count before calling ttm_bo_shrink():

drivers/gpu/drm/xe/xe_bo.c:xe_bo_shrink() {
old_remaining = ttm_tt_remaining_pages(tt);
*scanned += old_remaining;
lret = ttm_bo_shrink(ctx, bo, (struct ttm_bo_shrink_flags)
{.purge = false,
.allow_move = true, .may_writeback = flags.may_writeback, .force_writeback = flags.force_writeback});
}

During the first pass of xe_shrinker_walk() (where save_flags.may_writeback is false), if shmem_read_folio_gfp() with __GFP_NOMEMALLOC fails with -ENOMEM on an idle BO, ttm_pool_backup() stops without retrying and ttm_bo_shrink() returns -EBUSY (or a partial count if it stopped mid-BO). In __xe_shrinker_walk(), lret == -EBUSY continues to the next BO on the LRU while keeping old_remaining added to *scanned. Once Pass 1 returns, *scanned >= to_scan is satisfied and xe_shrinker_walk() returns immediately without running Pass 2 or Pass 3.

Additionally, if Pass 1 visits fewer than to_scan pages in idle BOs and reaches Pass 2 with allow_writeback set to true, Pass 2 runs with save_flags.may_writeback = true and save_flags.force_writeback = false. Won't Pass 2 dip into kernel memory reserves to grow dirty shmem without writeback and satisfy *scanned >= to_scan before Pass 3 (where force_writeback = true) can run?

Signature · 1 line
Sashiko AI review · https://sashiko.dev/#/patchset/[email protected]?part=4

A message that is not in the archive (sent off-list or not yet received): [email protected]

maintainer
#10 lore raw

Re: [PATCH 4/4] drm/ttm, drm/xe: Gate reserve-dipping backup retries on may_writeback

Hi,

the general idea of this patch looks sensible. A few naming/style nitpicks below:

Quoted 13 lines · On Wednesday, 4 November 2026 21:13 Thomas Hellström wrote:

Backup of a page allocates the shmem destination folio with __GFP_NOMEMALLOC for high-order pages, to avoid dipping into kernel memory reserves, but order-0 pages were always backed up without it. When a high-order allocation fails mid-compound, the compound is split and the remaining subpages are individually retried at order 0 without __GFP_NOMEMALLOC.

That retry happened unconditionally, regardless of whether the caller wanted writeback or could tolerate blocking. Retrying without writeback only grows dirty shmem rather than relieving the memory pressure that caused the original failure, and the retry itself may need to reclaim or block.

Quoted 12 lines

Back up all pages with __GFP_NOMEMALLOC first, and add two flags, may_writeback and force_writeback, to struct ttm_backup_flags, replacing the single writeback flag:
- may_writeback governs whether a failed backup allocation is retried without __GFP_NOMEMALLOC, splitting a high-order page if needed. When clear, the backup stops at the failure, keeping whatever progress was already made and leaving the remainder resident for a later retry.
- force_writeback replaces the old writeback flag and is honoured both for the regular backup and for any retry, so a caller that allows the retry can also choose to force it to actually complete and relieve memory pressure instead of just relocating it.

Can you explain why you'd call it "may_writeback"? The name implies that no writeback is ever performed when unset, which isn't really accurate. AFAICT, all this flag really does is govern how hard we try to allocate backup shmem, and force_writeback still is the only thing that determines whether to immediately do a writeback. Or am I misunderstanding?

Maybe replace may_writeback with something like use_kernel_reserves. Renaming writeback to force_writeback doesn't seem necessary as the semantics are still the exact same, so that one can just stay.

Quoted 52 lines

Thread the two new flags all the way from the xe shrinker down through xe_bo_shrink_flags and ttm_bo_shrink_flags to ttm_backup_flags. xe_shrinker_walk() now takes an explicit allow_writeback parameter (computed once from __GFP_IO and no_wait_gpu in xe_shrinker_scan()) rather than carrying that gfp-context permission inside the per-call flags, and uses it to decide, pass by pass, whether the retry is allowed (may_writeback) and whether it should be forced to completion (force_writeback).

---
 drivers/gpu/drm/ttm/ttm_bo_util.c |  3 +-
 drivers/gpu/drm/ttm/ttm_pool.c    | 47 +++++++++++++++++++++----------
 drivers/gpu/drm/xe/xe_bo.c        |  6 ++--
 drivers/gpu/drm/xe/xe_bo.h        |  9 ++++--
 drivers/gpu/drm/xe/xe_shrinker.c  | 39 ++++++++++++++++++++-----
 include/drm/ttm/ttm_bo.h          |  9 ++++--
 include/drm/ttm/ttm_tt.h          | 13 +++++++--
 7 files changed, 93 insertions(+), 33 deletions(-)
drivers/gpu/drm/ttm/ttm_bo_util.c +2 -1
index 975dea33075f..21317c212c27 100644
@@ -1122,7 +1122,8 @@ long ttm_bo_shrink(struct ttm_operation_ctx *ctx, struct ttm_buffer_object *bo,
 
 	lret = ttm_tt_backup(bdev, bo->ttm, (struct ttm_backup_flags)
 			     {.purge = flags.purge,
-			      .writeback = flags.writeback});
+			      .may_writeback = flags.may_writeback,
+			      .force_writeback = flags.force_writeback});
 
 	if (lret > 0 && !ttm_tt_is_partial(bo->ttm)) {
 		spin_lock(&bdev->lru_lock);
drivers/gpu/drm/ttm/ttm_pool.c +4 -1
index 8f05257e4f54..87c1ac39af94 100644
@@ -1158,7 +1158,10 @@ static void ttm_pool_restore_abort(struct ttm_tt *tt)
  * If backup of a page fails for whatever reason, @ttm will still be
  * partially backed up, retaining those pages for which backup fails.
  * In that case, this function can be retried, possibly after freeing up
- * memory resources.
+ * memory resources. In particular, if allocating backup memory fails
+ * without dipping into kernel reserves, and @flags->may_writeback is not
+ * set, the backup stops at that point, also leaving @ttm partially backed
+ * up.
  *
  * Return: Number of pages actually backed up or freed, or negative
  * error code on error.

drivers/gpu/drm/ttm/ttm_pool.c long ttm_pool_backup(struct ttm_pool *pool, struct ttm_tt *tt, · line 1180

Quoted 4 lines
drivers/gpu/drm/ttm/ttm_pool.c +1 -0
@@ -1174,6 +1177,7 @@ long ttm_pool_backup(struct ttm_pool *pool, struct ttm_tt *tt,
 	pgoff_t shrunken = 0;
 	pgoff_t i, j, num_pages, npages;
 	pgoff_t nr_backed;
+	bool dip_reserves;

It's a bit nitpicky, but I'm not sure I like the boolean here (in particular, the ternary at high levels of indentation is uncomfortable to read).

How about removing the boolean and doing:

drivers/gpu/drm/ttm/ttm_pool.c long ttm_pool_backup(struct ttm_pool *pool, struct ttm_tt *tt, · line 1265

Quoted 11 lines
drivers/gpu/drm/ttm/ttm_pool.c +3 -1
 	bool partial = ttm_tt_is_partial(tt);
 
 	if (WARN_ON(ttm_tt_is_backed_up(tt)))
@@ -1256,7 +1260,9 @@ long ttm_pool_backup(struct ttm_pool *pool, struct ttm_tt *tt,
 	else
 		gfp = GFP_HIGHUSER;
 
-	alloc_gfp = GFP_KERNEL | __GFP_HIGH | __GFP_NOWARN | __GFP_RETRY_MAYFAIL;
+	/* Don't dip into kernel reserves unless @flags->may_writeback is set. */
+	alloc_gfp = GFP_KERNEL | __GFP_HIGH | __GFP_NOWARN |
+		    __GFP_RETRY_MAYFAIL | __GFP_NOMEMALLOC;
	alloc_gfp = GFP_KERNEL | __GFP_HIGH | __GFP_NOWARN |
		    __GFP_RETRY_MAYFAIL;
Quoted 6 lines
drivers/gpu/drm/ttm/ttm_pool.c +0 -0
 	num_pages = tt->num_pages;
 
@@ -1280,14 +1286,7 @@ long ttm_pool_backup(struct ttm_pool *pool, struct ttm_tt *tt,
 		order = ttm_pool_page_order(pool, page);
 		npages = 1UL << order;

drivers/gpu/drm/ttm/ttm_pool.c long ttm_pool_backup(struct ttm_pool *pool, struct ttm_tt *tt, · line 1289

Quoted 10 lines
drivers/gpu/drm/ttm/ttm_pool.c +1 -8
 
-		/*
-		 * We don't allow dipping kernel reserves for high order backup
-		 */
-		if (order)
-			alloc_gfp |= __GFP_NOMEMALLOC;
-		else
-			alloc_gfp &= ~__GFP_NOMEMALLOC;
-
+		dip_reserves = false;
		alloc_gfp |= __GFP_NOMEMALLOC;
Quoted 6 lines
drivers/gpu/drm/ttm/ttm_pool.c +0 -0
 		/*
 		 * Back up the compound atomically at its native order. If
 		 * fault injection truncated num_pages mid-compound, skip
@@ -1296,10 +1295,18 @@ long ttm_pool_backup(struct ttm_pool *pool, struct ttm_tt *tt,
 		if (unlikely(i + npages > num_pages))
 			break;

drivers/gpu/drm/ttm/ttm_pool.c long ttm_pool_backup(struct ttm_pool *pool, struct ttm_tt *tt, · line 1303

Quoted 10 lines
drivers/gpu/drm/ttm/ttm_pool.c +5 -3
 
+retry:
 		handle = ttm_backup_backup_folio(backup, page_folio(page),
-						 order, flags->writeback, i,
-						 gfp, alloc_gfp,
-						 &nr_backed);
+						 order, flags->force_writeback, i,
+						 gfp, dip_reserves ?
+						 alloc_gfp & ~__GFP_NOMEMALLOC :
+						 alloc_gfp, &nr_backed);
						 order, flags->force_writeback, i,
						 gfp, alloc_gfp,
						 &nr_backed);

drivers/gpu/drm/ttm/ttm_pool.c long ttm_pool_backup(struct ttm_pool *pool, struct ttm_tt *tt, · line 1308

Quoted 5 lines
drivers/gpu/drm/ttm/ttm_pool.c +5 -0
+		if (unlikely(handle == -ENOMEM && !nr_backed &&
+			     flags->may_writeback && !dip_reserves)) {
+			dip_reserves = true;
+			goto retry;
+		}
		if (unlikely(handle == -ENOMEM && !nr_backed &&
			     flags->may_writeback &&
			     (alloc_gfp & __GFP_NOMEMALLOC))) {
			alloc_gfp &= ~__GFP_NOMEMALLOC;
			goto retry;
		}

This is basically what the original logic already did, too. I think I liked that better.

Natalie

author maintainer
#11 lore raw

Re: [PATCH 4/4] drm/ttm, drm/xe: Gate reserve-dipping backup retries on may_writeback

Hi, Nathalie,

Thanks for reviewing.

Quoted 52 lines · Natalie Vock

Hi,

the general idea of this patch looks sensible. A few naming/style nitpicks
below:

Quoted 26 lines · On Wednesday, 4 November 2026 21:13 Thomas Hellström wrote:

Backup of a page allocates the shmem destination folio with __GFP_NOMEMALLOC for high-order pages, to avoid dipping into kernel memory reserves, but order-0 pages were always backed up without it.
When a high-order allocation fails mid-compound, the compound is split
and the remaining subpages are individually retried at order 0 without
__GFP_NOMEMALLOC.

That retry happened unconditionally, regardless of whether the caller
wanted writeback or could tolerate blocking. Retrying without writeback only grows dirty shmem rather than relieving the memory pressure that caused the original failure, and the retry itself may need to reclaim or block.

Back up all pages with __GFP_NOMEMALLOC first, and add two flags, may_writeback and force_writeback, to struct ttm_backup_flags, replacing the single writeback flag:
- may_writeback governs whether a failed backup allocation is retried
  without __GFP_NOMEMALLOC, splitting a high-order page if needed. When clear, the backup stops at the failure, keeping whatever progress was already made and leaving the remainder resident for a

Quoted 8 lines

  later retry.
- force_writeback replaces the old writeback flag and is honoured both
  for the regular backup and for any retry, so a caller that allows the
  retry can also choose to force it to actually complete and relieve
  memory pressure instead of just relocating it.

Can you explain why you'd call it "may_writeback"? The name implies that
no writeback is ever performed when unset, which isn't really accurate.
AFAICT, all this flag really does is govern how hard we try to allocate
backup shmem, and force_writeback still is the only thing that determines
whether to immediately do a writeback. Or am I misunderstanding?

Quoted 4 lines

Maybe replace may_writeback with something like use_kernel_reserves. Renaming writeback to force_writeback doesn't seem necessary as the semantics
are still the exact same, so that one can just stay.

It looks like I need to rework both the patch and the commit message quite a bit. The idea for "may_writeback" is that TTM should enable writeback when it dips in to the kernel reserves, and if it can't do that (may_writeback == false) it doesn't dip but returns a transient error. That may in turn increase the number of partially backed-up bos, hence the previous patches in the series.

Quoted 167 lines
Quoted 71 lines

Thread the two new flags all the way from the xe shrinker down through
xe_bo_shrink_flags and ttm_bo_shrink_flags to ttm_backup_flags. xe_shrinker_walk() now takes an explicit allow_writeback parameter (computed once from __GFP_IO and no_wait_gpu in xe_shrinker_scan()) rather than carrying that gfp-context permission
inside the per-call flags, and uses it to decide, pass by pass, whether
the retry is allowed (may_writeback) and whether it should be forced to completion (force_writeback).

---
 drivers/gpu/drm/ttm/ttm_bo_util.c |  3 +- drivers/gpu/drm/ttm/ttm_pool.c    | 47 +++++++++++++++++++++------
----
 drivers/gpu/drm/xe/xe_bo.c        |  6 ++-- drivers/gpu/drm/xe/xe_bo.h        |  9 ++++-- drivers/gpu/drm/xe/xe_shrinker.c  | 39 ++++++++++++++++++++----- include/drm/ttm/ttm_bo.h          |  9 ++++-- include/drm/ttm/ttm_tt.h          | 13 +++++++--

 7 files changed, 93 insertions(+), 33 deletions(-)
drivers/gpu/drm/ttm/ttm_bo_util.c +0 -0
index 975dea33075f..21317c212c27 100644
@@ -1122,7 +1122,8 @@ long ttm_bo_shrink(struct ttm_operation_ctx
 *ctx, struct ttm_buffer_object *bo,


  lret = ttm_tt_backup(bdev, bo->ttm, (struct ttm_backup_flags)
       {.purge = flags.purge,

drivers/gpu/drm/ttm/ttm_bo_util.c +1 -1
-			      .writeback = flags.writeback});
+			      .may_writeback =

flags.may_writeback,

drivers/gpu/drm/ttm/ttm_bo_util.c +1 -0
+			      .force_writeback =

flags.force_writeback});

  if (lret > 0 && !ttm_tt_is_partial(bo->ttm)) { spin_lock(&bdev->lru_lock);

drivers/gpu/drm/ttm/ttm_pool.c +0 -0
index 8f05257e4f54..87c1ac39af94 100644
@@ -1158,7 +1158,10 @@ static void ttm_pool_restore_abort(struct
 ttm_tt *tt)
   * If backup of a page fails for whatever reason, @ttm will still

be
  * partially backed up, retaining those pages for which backup fails.
  * In that case, this function can be retried, possibly after freeing up
- * memory resources.
+ * memory resources. In particular, if allocating backup memory fails
+ * without dipping into kernel reserves, and @flags->may_writeback is not
+ * set, the backup stops at that point, also leaving @ttm partially backed
+ * up.
  *
  * Return: Number of pages actually backed up or freed, or negative
  * error code on error.

drivers/gpu/drm/ttm/ttm_pool.c long ttm_pool_backup(struct ttm_pool *pool, · line 1181

Quoted 5 lines
drivers/gpu/drm/ttm/ttm_pool.c +1 -0
@@ -1174,6 +1177,7 @@ long ttm_pool_backup(struct ttm_pool *pool,
 struct ttm_tt *tt,
  	pgoff_t shrunken = 0;
  	pgoff_t i, j, num_pages, npages;
  	pgoff_t nr_backed;
+	bool dip_reserves;

It's a bit nitpicky, but I'm not sure I like the boolean here (in particular,
the ternary at high levels of indentation is uncomfortable to read).

How about removing the boolean and doing:

Quoted 12 lines
drivers/gpu/drm/ttm/ttm_pool.c +0 -0
  	bool partial = ttm_tt_is_partial(tt);


  if (WARN_ON(ttm_tt_is_backed_up(tt)))

drivers/gpu/drm/ttm/ttm_pool.c +0 -0
@@ -1256,7 +1260,9 @@ long ttm_pool_backup(struct ttm_pool *pool,
 struct ttm_tt *tt,

  else
  gfp = GFP_HIGHUSER;

drivers/gpu/drm/ttm/ttm_pool.c +0 -1
-	alloc_gfp = GFP_KERNEL | __GFP_HIGH | __GFP_NOWARN |

__GFP_RETRY_MAYFAIL;

drivers/gpu/drm/ttm/ttm_pool.c +1 -0
+	/* Don't dip into kernel reserves unless @flags-
Quoted 1 line

may_writeback is set. */

drivers/gpu/drm/ttm/ttm_pool.c long ttm_pool_backup(struct ttm_pool *pool, struct ttm_tt *tt, · line 1265

Quoted 2 lines
drivers/gpu/drm/ttm/ttm_pool.c +2 -0
+	alloc_gfp = GFP_KERNEL | __GFP_HIGH | __GFP_NOWARN |
+		    __GFP_RETRY_MAYFAIL | __GFP_NOMEMALLOC;
	alloc_gfp = GFP_KERNEL | __GFP_HIGH | __GFP_NOWARN |
		    __GFP_RETRY_MAYFAIL;
Quoted 11 lines


  num_pages = tt->num_pages;

drivers/gpu/drm/ttm/ttm_pool.c +0 -0
@@ -1280,14 +1286,7 @@ long ttm_pool_backup(struct ttm_pool *pool,
 struct ttm_tt *tt,
  		order = ttm_pool_page_order(pool, page);
  		npages = 1UL << order;

drivers/gpu/drm/ttm/ttm_pool.c +0 -2
-		/*
-		 * We don't allow dipping kernel reserves for high

order backup

drivers/gpu/drm/ttm/ttm_pool.c long ttm_pool_backup(struct ttm_pool *pool, struct ttm_tt *tt, · line 1289

Quoted 7 lines
drivers/gpu/drm/ttm/ttm_pool.c +1 -6
-		 */
-		if (order)
-			alloc_gfp |= __GFP_NOMEMALLOC;
-		else
-			alloc_gfp &= ~__GFP_NOMEMALLOC;
-
+		dip_reserves = false;
		alloc_gfp |= __GFP_NOMEMALLOC;
Quoted 24 lines

  /*
  * Back up the compound atomically at its native order. If
  * fault injection truncated num_pages mid- compound, skip

drivers/gpu/drm/ttm/ttm_pool.c +0 -0
@@ -1296,10 +1295,18 @@ long ttm_pool_backup(struct ttm_pool *pool,
 struct ttm_tt *tt,
  		if (unlikely(i + npages > num_pages))
  			break;


+retry:
  handle = ttm_backup_backup_folio(backup, page_folio(page),

drivers/gpu/drm/ttm/ttm_pool.c +0 -1
-						 order, flags-
Quoted 1 line

writeback, i,

drivers/gpu/drm/ttm/ttm_pool.c +1 -2
-						 gfp, alloc_gfp,
-						 &nr_backed);
+						 order, flags-
Quoted 1 line

force_writeback, i,

drivers/gpu/drm/ttm/ttm_pool.c +1 -0
+						 gfp, dip_reserves

?

drivers/gpu/drm/ttm/ttm_pool.c +1 -0
+						 alloc_gfp &

~__GFP_NOMEMALLOC :

drivers/gpu/drm/ttm/ttm_pool.c +1 -0
+						 alloc_gfp,
Quoted 1 line

&nr_backed);

order, flags-

Quoted 1 line

force_writeback, i,

						 gfp, alloc_gfp,
						 &nr_backed);

drivers/gpu/drm/ttm/ttm_pool.c long ttm_pool_backup(struct ttm_pool *pool, struct ttm_tt *tt, · line 1308

Quoted 6 lines
drivers/gpu/drm/ttm/ttm_pool.c +2 -0
+		if (unlikely(handle == -ENOMEM && !nr_backed &&
+			     flags->may_writeback &&

!dip_reserves)) {

drivers/gpu/drm/ttm/ttm_pool.c +3 -0
+			dip_reserves = true;
+			goto retry;
+		}
		if (unlikely(handle == -ENOMEM && !nr_backed &&
			     flags->may_writeback &&
			     (alloc_gfp & __GFP_NOMEMALLOC))) {
			alloc_gfp &= ~__GFP_NOMEMALLOC;
			goto retry;
		}
Quoted 4 lines

This is basically what the original logic already did, too. I think I liked that better.

Natalie

Agree. I'll take a look at that as well.

Thanks,
Thomas

#12 lore raw

✓ CI.KUnit: success for drm/ttm, drm/xe: Support partially backed-up ttm_tts

In reply to Thomas Hellström
== Series Details ==

== Series Details ==

Series: drm/ttm, drm/xe: Support partially backed-up ttm_tts
URL : https://patchwork.freedesktop.org/series/177782/
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
[20:21:19] Configuring KUnit Kernel ...
Generating .config ...
Populating config with:

$ make ARCH=um O=.kunit olddefconfig
[20:21:25] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48
[20:21:45] Starting KUnit Kernel (1/1)...
[20:21:45] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[20:21:45] ================= gpu_buddy (14 subtests) ==================
[20:21:45] [PASSED] gpu_test_buddy_alloc_limit
[20:21:45] [PASSED] gpu_test_buddy_alloc_optimistic
[20:21:45] [PASSED] gpu_test_buddy_alloc_pessimistic
[20:21:45] [PASSED] gpu_test_buddy_alloc_pathological
[20:21:45] [PASSED] gpu_test_buddy_alloc_contiguous
[20:21:45] [PASSED] gpu_test_buddy_alloc_clear
[20:21:45] [PASSED] gpu_test_buddy_alloc_range
[20:21:45] [PASSED] gpu_test_buddy_alloc_range_bias
[20:21:46] [PASSED] gpu_test_buddy_fragmentation_performance
[20:21:47] [PASSED] gpu_test_buddy_dirty_tracker_performance
[20:21:47] [PASSED] gpu_test_buddy_alloc_exceeds_max_order
[20:21:47] [PASSED] gpu_test_buddy_offset_aligned_allocation
[20:21:47] [PASSED] gpu_test_buddy_subtree_offset_alignment_stress
[20:21:47] [PASSED] gpu_test_buddy_addr_to_block
[20:21:47] ==================== [PASSED] gpu_buddy ====================
[20:21:47] ============================================================
[20:21:47] Testing complete. Ran 14 tests: passed: 14
[20:21:47] Elapsed time: 27.365s total, 5.128s configuring, 20.369s building, 1.819s 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 [20:21:47] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:

$ make ARCH=um O=.kunit olddefconfig
[20:21:49] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48
../drivers/gpu/drm/ttm/ttm_pool.c: In function ‘ttm_pool_restore_abort’:
../drivers/gpu/drm/ttm/ttm_pool.c:1076:24: warning: variable ‘mid’ set but not used [-Wunused-but-set-variable]
 1076 |         pgoff_t i, nr, mid;
      |                        ^~~
../drivers/gpu/drm/ttm/ttm_pool.c: In function ‘ttm_pool_backup’:
../drivers/gpu/drm/ttm/ttm_pool.c:1181:14: warning: unused variable ‘partial’ [-Wunused-variable]
 1181 |         bool partial = ttm_tt_is_partial(tt);
      |              ^~~~~~~

[20:22:27] Starting KUnit Kernel (1/1)...
[20:22:27] ============================================================ Running tests with:

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

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

$ make ARCH=um O=.kunit olddefconfig
[20:22:59] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48
../drivers/gpu/drm/ttm/ttm_pool.c: In function ‘ttm_pool_restore_abort’:
../drivers/gpu/drm/ttm/ttm_pool.c:1076:24: warning: variable ‘mid’ set but not used [-Wunused-but-set-variable]
 1076 |         pgoff_t i, nr, mid;
      |                        ^~~
../drivers/gpu/drm/ttm/ttm_pool.c: In function ‘ttm_pool_backup’:
../drivers/gpu/drm/ttm/ttm_pool.c:1181:14: warning: unused variable ‘partial’ [-Wunused-variable]
 1181 |         bool partial = ttm_tt_is_partial(tt);
      |              ^~~~~~~

[20:23:09] Starting KUnit Kernel (1/1)...
[20:23:09] ============================================================ Running tests with:

$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[20:23:09] ================= ttm_device (5 subtests) ==================
[20:23:09] [PASSED] ttm_device_init_basic
[20:23:09] [PASSED] ttm_device_init_multiple
[20:23:09] [PASSED] ttm_device_fini_basic
[20:23:09] [PASSED] ttm_device_init_no_vma_man
[20:23:09] ================== ttm_device_init_pools  ==================
[20:23:09] [PASSED] No DMA allocations, no DMA32 required
[20:23:09] [PASSED] DMA allocations, DMA32 required
[20:23:09] [PASSED] No DMA allocations, DMA32 required
[20:23:09] [PASSED] DMA allocations, no DMA32 required
[20:23:09] ============== [PASSED] ttm_device_init_pools ==============
[20:23:09] =================== [PASSED] ttm_device ====================
[20:23:09] ================== ttm_pool (8 subtests) ===================
[20:23:09] ================== ttm_pool_alloc_basic  ===================
[20:23:09] [PASSED] One page
[20:23:09] [PASSED] More than one page
[20:23:09] [PASSED] Above the allocation limit
[20:23:09] [PASSED] One page, with coherent DMA mappings enabled
[20:23:09] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[20:23:09] ============== [PASSED] ttm_pool_alloc_basic ===============
[20:23:09] ============== ttm_pool_alloc_basic_dma_addr  ==============
[20:23:09] [PASSED] One page
[20:23:09] [PASSED] More than one page
[20:23:09] [PASSED] Above the allocation limit
[20:23:09] [PASSED] One page, with coherent DMA mappings enabled
[20:23:09] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[20:23:09] ========== [PASSED] ttm_pool_alloc_basic_dma_addr ==========
[20:23:09] [PASSED] ttm_pool_alloc_order_caching_match
[20:23:09] [PASSED] ttm_pool_alloc_caching_mismatch
[20:23:09] [PASSED] ttm_pool_alloc_order_mismatch
[20:23:09] [PASSED] ttm_pool_free_dma_alloc
[20:23:09] [PASSED] ttm_pool_free_no_dma_alloc
[20:23:09] [PASSED] ttm_pool_fini_basic
[20:23:09] ==================== [PASSED] ttm_pool =====================
[20:23:09] ================ ttm_resource (8 subtests) =================
[20:23:09] ================= ttm_resource_init_basic  =================
[20:23:09] [PASSED] Init resource in TTM_PL_SYSTEM
[20:23:09] [PASSED] Init resource in TTM_PL_VRAM
[20:23:09] [PASSED] Init resource in a private placement
[20:23:09] [PASSED] Init resource in TTM_PL_SYSTEM, set placement flags
[20:23:09] ============= [PASSED] ttm_resource_init_basic =============
[20:23:09] [PASSED] ttm_resource_init_pinned
[20:23:09] [PASSED] ttm_resource_fini_basic
[20:23:09] [PASSED] ttm_resource_manager_init_basic
[20:23:09] [PASSED] ttm_resource_manager_usage_basic
[20:23:09] [PASSED] ttm_resource_manager_set_used_basic
[20:23:09] [PASSED] ttm_sys_man_alloc_basic
[20:23:09] [PASSED] ttm_sys_man_free_basic
[20:23:09] ================== [PASSED] ttm_resource ===================
[20:23:09] =================== ttm_tt (15 subtests) ===================
[20:23:09] ==================== ttm_tt_init_basic  ====================
[20:23:09] [PASSED] Page-aligned size
[20:23:09] [PASSED] Extra pages requested
[20:23:09] ================ [PASSED] ttm_tt_init_basic ================
[20:23:09] [PASSED] ttm_tt_init_misaligned
[20:23:09] [PASSED] ttm_tt_fini_basic
[20:23:09] [PASSED] ttm_tt_fini_sg
[20:23:09] [PASSED] ttm_tt_fini_shmem
[20:23:09] [PASSED] ttm_tt_create_basic
[20:23:09] [PASSED] ttm_tt_create_invalid_bo_type
[20:23:09] [PASSED] ttm_tt_create_ttm_exists
[20:23:09] [PASSED] ttm_tt_create_failed
[20:23:09] [PASSED] ttm_tt_destroy_basic
[20:23:09] [PASSED] ttm_tt_populate_null_ttm
[20:23:09] [PASSED] ttm_tt_populate_populated_ttm
[20:23:09] [PASSED] ttm_tt_unpopulate_basic
[20:23:09] [PASSED] ttm_tt_unpopulate_empty_ttm
[20:23:09] [PASSED] ttm_tt_swapin_basic
[20:23:09] ===================== [PASSED] ttm_tt ======================
[20:23:09] =================== ttm_bo (14 subtests) ===================
[20:23:09] =========== ttm_bo_reserve_optimistic_no_ticket  ===========
[20:23:09] [PASSED] Cannot be interrupted and sleeps
[20:23:09] [PASSED] Cannot be interrupted, locks straight away
[20:23:09] [PASSED] Can be interrupted, sleeps
[20:23:09] ======= [PASSED] ttm_bo_reserve_optimistic_no_ticket =======
[20:23:09] [PASSED] ttm_bo_reserve_locked_no_sleep
[20:23:09] [PASSED] ttm_bo_reserve_no_wait_ticket
[20:23:09] [PASSED] ttm_bo_reserve_double_resv
[20:23:09] [PASSED] ttm_bo_reserve_interrupted
[20:23:09] [PASSED] ttm_bo_reserve_deadlock
[20:23:09] [PASSED] ttm_bo_unreserve_basic
[20:23:09] [PASSED] ttm_bo_unreserve_pinned
[20:23:09] [PASSED] ttm_bo_unreserve_bulk
[20:23:09] [PASSED] ttm_bo_fini_basic
[20:23:09] [PASSED] ttm_bo_fini_shared_resv
[20:23:09] [PASSED] ttm_bo_pin_basic
[20:23:09] [PASSED] ttm_bo_pin_unpin_resource
[20:23:09] [PASSED] ttm_bo_multiple_pin_one_unpin
[20:23:09] ===================== [PASSED] ttm_bo ======================
[20:23:09] ============== ttm_bo_validate (22 subtests) ===============
[20:23:09] ============== ttm_bo_init_reserved_sys_man  ===============
[20:23:09] [PASSED] Buffer object for userspace
[20:23:09] [PASSED] Kernel buffer object
[20:23:09] [PASSED] Shared buffer object
[20:23:09] ========== [PASSED] ttm_bo_init_reserved_sys_man ===========
[20:23:09] ============== ttm_bo_init_reserved_mock_man  ==============
[20:23:09] [PASSED] Buffer object for userspace
[20:23:09] [PASSED] Kernel buffer object
[20:23:09] [PASSED] Shared buffer object
[20:23:09] ========== [PASSED] ttm_bo_init_reserved_mock_man ==========
[20:23:09] [PASSED] ttm_bo_init_reserved_resv
[20:23:09] ================== ttm_bo_validate_basic  ==================
[20:23:09] [PASSED] Buffer object for userspace
[20:23:09] [PASSED] Kernel buffer object
[20:23:09] [PASSED] Shared buffer object
[20:23:09] ============== [PASSED] ttm_bo_validate_basic ==============
[20:23:09] [PASSED] ttm_bo_validate_invalid_placement
[20:23:09] ============= ttm_bo_validate_same_placement  ==============
[20:23:09] [PASSED] System manager
[20:23:09] [PASSED] VRAM manager
[20:23:09] ========= [PASSED] ttm_bo_validate_same_placement ==========
[20:23:09] [PASSED] ttm_bo_validate_failed_alloc
[20:23:09] [PASSED] ttm_bo_validate_pinned
[20:23:09] [PASSED] ttm_bo_validate_busy_placement
[20:23:09] ================ ttm_bo_validate_multihop  =================
[20:23:09] [PASSED] Buffer object for userspace
[20:23:09] [PASSED] Kernel buffer object
[20:23:09] [PASSED] Shared buffer object
[20:23:09] ============ [PASSED] ttm_bo_validate_multihop =============
[20:23:09] ========== ttm_bo_validate_no_placement_signaled  ==========
[20:23:09] [PASSED] Buffer object in system domain, no page vector
[20:23:09] [PASSED] Buffer object in system domain with an existing page vector
[20:23:09] ====== [PASSED] ttm_bo_validate_no_placement_signaled ======
[20:23:09] ======== ttm_bo_validate_no_placement_not_signaled  ========
[20:23:09] [PASSED] Buffer object for userspace
[20:23:09] [PASSED] Kernel buffer object
[20:23:09] [PASSED] Shared buffer object
[20:23:09] ==== [PASSED] ttm_bo_validate_no_placement_not_signaled ====
[20:23:09] [PASSED] ttm_bo_validate_move_fence_signaled
[20:23:09] ========= ttm_bo_validate_move_fence_not_signaled  =========
[20:23:09] [PASSED] Waits for GPU
[20:23:09] [PASSED] Tries to lock straight away
[20:23:09] ===== [PASSED] ttm_bo_validate_move_fence_not_signaled =====
[20:23:09] [PASSED] ttm_bo_validate_swapout
[20:23:09] [PASSED] ttm_bo_validate_happy_evict
[20:23:09] [PASSED] ttm_bo_validate_all_pinned_evict
[20:23:09] [PASSED] ttm_bo_validate_allowed_only_evict
[20:23:09] [PASSED] ttm_bo_validate_deleted_evict
[20:23:09] [PASSED] ttm_bo_validate_busy_domain_evict
[20:23:09] [PASSED] ttm_bo_validate_evict_gutting
[20:23:09] [PASSED] ttm_bo_validate_recrusive_evict
[20:23:09] ================= [PASSED] ttm_bo_validate =================
[20:23:09] ============================================================
[20:23:09] Testing complete. Ran 102 tests: passed: 102
[20:23:09] Elapsed time: 12.851s total, 2.546s configuring, 10.090s building, 0.171s running

+ for kcfg in "${kunitconfigs[@]}"
+ [[ ! -f /kernel/drivers/dma-buf/.kunitconfig ]]
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/dma-buf/.kunitconfig [20:23:09] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:

$ make ARCH=um O=.kunit olddefconfig
[20:23:11] 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
[20:23:20] Starting KUnit Kernel (1/1)...
[20:23:20] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[20:23:20] =============== dma-buf-fence (12 subtests) ================
[20:23:20] [PASSED] test_sanitycheck
[20:23:20] [PASSED] test_signaling
[20:23:20] [PASSED] test_add_callback
[20:23:20] [PASSED] test_late_add_callback
[20:23:20] [PASSED] test_rm_callback
[20:23:20] [PASSED] test_late_rm_callback
[20:23:20] [PASSED] test_status
[20:23:20] [PASSED] test_error
[20:23:20] [PASSED] test_wait
[20:23:20] [PASSED] test_wait_timeout
[20:23:20] [PASSED] test_stub
[20:23:20] [SKIPPED] test_race_signal_callback (requires at least 2 CPUs)
[20:23:20] ================== [PASSED] dma-buf-fence ==================
[20:23:20] ============ dma-buf-fence-chain (11 subtests) =============
[20:23:20] [PASSED] test_sanitycheck
[20:23:20] [PASSED] test_find_seqno
[20:23:20] [PASSED] test_find_signaled
[20:23:20] [PASSED] test_find_out_of_order
[20:23:26] [PASSED] test_find_gap
[20:23:26] [PASSED] test_find_race
[20:23:26] [PASSED] test_signal_forward
[20:23:26] [PASSED] test_signal_backward
[20:23:26] [PASSED] test_wait_forward
[20:23:26] [PASSED] test_wait_backward
[20:23:26] [PASSED] test_wait_random
[20:23:26] =============== [PASSED] dma-buf-fence-chain ===============
[20:23:26] ============ dma-buf-fence-unwrap (11 subtests) ============
[20:23:26] [PASSED] test_sanitycheck
[20:23:26] [PASSED] test_unwrap_array
[20:23:26] [PASSED] test_unwrap_chain
[20:23:26] [PASSED] test_unwrap_chain_array
[20:23:26] [PASSED] test_unwrap_merge
[20:23:26] [PASSED] test_unwrap_merge_duplicate
[20:23:26] [PASSED] test_unwrap_merge_seqno
[20:23:26] [PASSED] test_unwrap_merge_order
[20:23:26] [PASSED] test_unwrap_merge_complex
[20:23:26] [PASSED] test_unwrap_merge_complex_seqno
[20:23:26] [PASSED] test_dedup_empty
[20:23:26] ============== [PASSED] dma-buf-fence-unwrap ===============
[20:23:26] ================ dma-buf-resv (5 subtests) =================
[20:23:26] [PASSED] test_sanitycheck
[20:23:26] ===================== test_signaling  ======================
[20:23:26] [PASSED] kernel
[20:23:26] [PASSED] write
[20:23:26] [PASSED] read
[20:23:26] [PASSED] bookkeep
[20:23:26] ================= [PASSED] test_signaling ==================
[20:23:26] ====================== test_for_each  ======================
[20:23:26] [PASSED] kernel
[20:23:26] [PASSED] write
[20:23:26] [PASSED] read
[20:23:26] [PASSED] bookkeep
[20:23:26] ================== [PASSED] test_for_each ==================
[20:23:26] ================= test_for_each_unlocked  ==================
[20:23:26] [PASSED] kernel
[20:23:26] [PASSED] write
[20:23:26] [PASSED] read
[20:23:26] [PASSED] bookkeep
[20:23:26] ============= [PASSED] test_for_each_unlocked ==============
[20:23:26] ===================== test_get_fences  =====================
[20:23:26] [PASSED] kernel
[20:23:26] [PASSED] write
[20:23:26] [PASSED] read
[20:23:26] [PASSED] bookkeep
[20:23:26] ================= [PASSED] test_get_fences =================
[20:23:26] ================== [PASSED] dma-buf-resv ===================
[20:23:26] ============================================================
[20:23:26] Testing complete. Ran 51 tests: passed: 50, skipped: 1
[20:23:26] Elapsed time: 16.739s total, 2.518s configuring, 8.849s building, 5.363s running

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

#13 lore raw

✓ Xe.CI.BAT: success for drm/ttm, drm/xe: Support partially backed-up ttm_tts

In reply to Thomas Hellström
== Series Details ==

== Series Details ==

Series: drm/ttm, drm/xe: Support partially backed-up ttm_tts
URL : https://patchwork.freedesktop.org/series/177782/
State : success

== Summary ==

CI Bug Log - changes from xe-6061-0c04a32b952ce54c8629218c2071051731965ae1_BAT -> xe-pw-177782v1_BAT
====================================================

Summary
-------

**SUCCESS**

No regressions found.

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

No changes in participating hosts

Changes
-------

No changes found

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

* Linux: xe-6061-0c04a32b952ce54c8629218c2071051731965ae1 -> xe-pw-177782v1

IGT_9177: 9177
xe-6061-0c04a32b952ce54c8629218c2071051731965ae1: 0c04a32b952ce54c8629218c2071051731965ae1
xe-pw-177782v1: 177782v1

== Logs ==

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

#14 lore raw

✓ CI.KUnit: success for drm/ttm, drm/xe: Support partially backed-up ttm_tts (rev2)

In reply to Thomas Hellström
== Series Details ==

== Series Details ==

Series: drm/ttm, drm/xe: Support partially backed-up ttm_tts (rev2)
URL : https://patchwork.freedesktop.org/series/177782/
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
[04:34:34] Configuring KUnit Kernel ...
Generating .config ...
Populating config with:

$ make ARCH=um O=.kunit olddefconfig
[04:34:39] 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
[04:34:59] Starting KUnit Kernel (1/1)...
[04:34:59] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[04:34:59] ================= gpu_buddy (14 subtests) ==================
[04:34:59] [PASSED] gpu_test_buddy_alloc_limit
[04:34:59] [PASSED] gpu_test_buddy_alloc_optimistic
[04:34:59] [PASSED] gpu_test_buddy_alloc_pessimistic
[04:34:59] [PASSED] gpu_test_buddy_alloc_pathological
[04:34:59] [PASSED] gpu_test_buddy_alloc_contiguous
[04:34:59] [PASSED] gpu_test_buddy_alloc_clear
[04:34:59] [PASSED] gpu_test_buddy_alloc_range
[04:34:59] [PASSED] gpu_test_buddy_alloc_range_bias
[04:35:00] [PASSED] gpu_test_buddy_fragmentation_performance
[04:35:01] [PASSED] gpu_test_buddy_dirty_tracker_performance
[04:35:01] [PASSED] gpu_test_buddy_alloc_exceeds_max_order
[04:35:01] [PASSED] gpu_test_buddy_offset_aligned_allocation
[04:35:01] [PASSED] gpu_test_buddy_subtree_offset_alignment_stress
[04:35:01] [PASSED] gpu_test_buddy_addr_to_block
[04:35:01] ==================== [PASSED] gpu_buddy ====================
[04:35:01] ============================================================
[04:35:01] Testing complete. Ran 14 tests: passed: 14
[04:35:01] Elapsed time: 27.259s total, 5.088s configuring, 20.303s building, 1.818s 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 [04:35:01] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:

$ make ARCH=um O=.kunit olddefconfig
[04:35:04] 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
../drivers/gpu/drm/ttm/ttm_pool.c: In function ‘ttm_pool_restore_abort’:
../drivers/gpu/drm/ttm/ttm_pool.c:1076:24: warning: variable ‘mid’ set but not used [-Wunused-but-set-variable]
 1076 |         pgoff_t i, nr, mid;
      |                        ^~~
../drivers/gpu/drm/ttm/ttm_pool.c: In function ‘ttm_pool_backup’:
../drivers/gpu/drm/ttm/ttm_pool.c:1181:14: warning: unused variable ‘partial’ [-Wunused-variable]
 1181 |         bool partial = ttm_tt_is_partial(tt);
      |              ^~~~~~~

[04:35:42] Starting KUnit Kernel (1/1)...
[04:35:42] ============================================================ Running tests with:

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

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

$ make ARCH=um O=.kunit olddefconfig
[04:36:14] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48
../drivers/gpu/drm/ttm/ttm_pool.c: In function ‘ttm_pool_restore_abort’:
../drivers/gpu/drm/ttm/ttm_pool.c:1076:24: warning: variable ‘mid’ set but not used [-Wunused-but-set-variable]
 1076 |         pgoff_t i, nr, mid;
      |                        ^~~
../drivers/gpu/drm/ttm/ttm_pool.c: In function ‘ttm_pool_backup’:
../drivers/gpu/drm/ttm/ttm_pool.c:1181:14: warning: unused variable ‘partial’ [-Wunused-variable]
 1181 |         bool partial = ttm_tt_is_partial(tt);
      |              ^~~~~~~

[04:36:24] Starting KUnit Kernel (1/1)...
[04:36:24] ============================================================ Running tests with:

$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[04:36:24] ================= ttm_device (5 subtests) ==================
[04:36:24] [PASSED] ttm_device_init_basic
[04:36:24] [PASSED] ttm_device_init_multiple
[04:36:24] [PASSED] ttm_device_fini_basic
[04:36:24] [PASSED] ttm_device_init_no_vma_man
[04:36:24] ================== ttm_device_init_pools  ==================
[04:36:24] [PASSED] No DMA allocations, no DMA32 required
[04:36:24] [PASSED] DMA allocations, DMA32 required
[04:36:24] [PASSED] No DMA allocations, DMA32 required
[04:36:24] [PASSED] DMA allocations, no DMA32 required
[04:36:24] ============== [PASSED] ttm_device_init_pools ==============
[04:36:24] =================== [PASSED] ttm_device ====================
[04:36:24] ================== ttm_pool (8 subtests) ===================
[04:36:24] ================== ttm_pool_alloc_basic  ===================
[04:36:24] [PASSED] One page
[04:36:24] [PASSED] More than one page
[04:36:24] [PASSED] Above the allocation limit
[04:36:24] [PASSED] One page, with coherent DMA mappings enabled
[04:36:24] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[04:36:24] ============== [PASSED] ttm_pool_alloc_basic ===============
[04:36:24] ============== ttm_pool_alloc_basic_dma_addr  ==============
[04:36:24] [PASSED] One page
[04:36:24] [PASSED] More than one page
[04:36:24] [PASSED] Above the allocation limit
[04:36:24] [PASSED] One page, with coherent DMA mappings enabled
[04:36:24] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[04:36:24] ========== [PASSED] ttm_pool_alloc_basic_dma_addr ==========
[04:36:24] [PASSED] ttm_pool_alloc_order_caching_match
[04:36:24] [PASSED] ttm_pool_alloc_caching_mismatch
[04:36:24] [PASSED] ttm_pool_alloc_order_mismatch
[04:36:24] [PASSED] ttm_pool_free_dma_alloc
[04:36:24] [PASSED] ttm_pool_free_no_dma_alloc
[04:36:24] [PASSED] ttm_pool_fini_basic
[04:36:24] ==================== [PASSED] ttm_pool =====================
[04:36:24] ================ ttm_resource (8 subtests) =================
[04:36:24] ================= ttm_resource_init_basic  =================
[04:36:24] [PASSED] Init resource in TTM_PL_SYSTEM
[04:36:24] [PASSED] Init resource in TTM_PL_VRAM
[04:36:24] [PASSED] Init resource in a private placement
[04:36:24] [PASSED] Init resource in TTM_PL_SYSTEM, set placement flags
[04:36:24] ============= [PASSED] ttm_resource_init_basic =============
[04:36:24] [PASSED] ttm_resource_init_pinned
[04:36:24] [PASSED] ttm_resource_fini_basic
[04:36:24] [PASSED] ttm_resource_manager_init_basic
[04:36:24] [PASSED] ttm_resource_manager_usage_basic
[04:36:24] [PASSED] ttm_resource_manager_set_used_basic
[04:36:24] [PASSED] ttm_sys_man_alloc_basic
[04:36:24] [PASSED] ttm_sys_man_free_basic
[04:36:24] ================== [PASSED] ttm_resource ===================
[04:36:24] =================== ttm_tt (15 subtests) ===================
[04:36:24] ==================== ttm_tt_init_basic  ====================
[04:36:24] [PASSED] Page-aligned size
[04:36:24] [PASSED] Extra pages requested
[04:36:24] ================ [PASSED] ttm_tt_init_basic ================
[04:36:24] [PASSED] ttm_tt_init_misaligned
[04:36:24] [PASSED] ttm_tt_fini_basic
[04:36:24] [PASSED] ttm_tt_fini_sg
[04:36:24] [PASSED] ttm_tt_fini_shmem
[04:36:24] [PASSED] ttm_tt_create_basic
[04:36:24] [PASSED] ttm_tt_create_invalid_bo_type
[04:36:24] [PASSED] ttm_tt_create_ttm_exists
[04:36:24] [PASSED] ttm_tt_create_failed
[04:36:24] [PASSED] ttm_tt_destroy_basic
[04:36:24] [PASSED] ttm_tt_populate_null_ttm
[04:36:24] [PASSED] ttm_tt_populate_populated_ttm
[04:36:24] [PASSED] ttm_tt_unpopulate_basic
[04:36:24] [PASSED] ttm_tt_unpopulate_empty_ttm
[04:36:24] [PASSED] ttm_tt_swapin_basic
[04:36:24] ===================== [PASSED] ttm_tt ======================
[04:36:24] =================== ttm_bo (14 subtests) ===================
[04:36:24] =========== ttm_bo_reserve_optimistic_no_ticket  ===========
[04:36:24] [PASSED] Cannot be interrupted and sleeps
[04:36:24] [PASSED] Cannot be interrupted, locks straight away
[04:36:24] [PASSED] Can be interrupted, sleeps
[04:36:24] ======= [PASSED] ttm_bo_reserve_optimistic_no_ticket =======
[04:36:24] [PASSED] ttm_bo_reserve_locked_no_sleep
[04:36:24] [PASSED] ttm_bo_reserve_no_wait_ticket
[04:36:24] [PASSED] ttm_bo_reserve_double_resv
[04:36:24] [PASSED] ttm_bo_reserve_interrupted
[04:36:24] [PASSED] ttm_bo_reserve_deadlock
[04:36:24] [PASSED] ttm_bo_unreserve_basic
[04:36:24] [PASSED] ttm_bo_unreserve_pinned
[04:36:24] [PASSED] ttm_bo_unreserve_bulk
[04:36:24] [PASSED] ttm_bo_fini_basic
[04:36:24] [PASSED] ttm_bo_fini_shared_resv
[04:36:24] [PASSED] ttm_bo_pin_basic
[04:36:24] [PASSED] ttm_bo_pin_unpin_resource
[04:36:24] [PASSED] ttm_bo_multiple_pin_one_unpin
[04:36:24] ===================== [PASSED] ttm_bo ======================
[04:36:24] ============== ttm_bo_validate (22 subtests) ===============
[04:36:24] ============== ttm_bo_init_reserved_sys_man  ===============
[04:36:24] [PASSED] Buffer object for userspace
[04:36:24] [PASSED] Kernel buffer object
[04:36:24] [PASSED] Shared buffer object
[04:36:24] ========== [PASSED] ttm_bo_init_reserved_sys_man ===========
[04:36:24] ============== ttm_bo_init_reserved_mock_man  ==============
[04:36:24] [PASSED] Buffer object for userspace
[04:36:24] [PASSED] Kernel buffer object
[04:36:24] [PASSED] Shared buffer object
[04:36:24] ========== [PASSED] ttm_bo_init_reserved_mock_man ==========
[04:36:24] [PASSED] ttm_bo_init_reserved_resv
[04:36:24] ================== ttm_bo_validate_basic  ==================
[04:36:24] [PASSED] Buffer object for userspace
[04:36:24] [PASSED] Kernel buffer object
[04:36:24] [PASSED] Shared buffer object
[04:36:24] ============== [PASSED] ttm_bo_validate_basic ==============
[04:36:24] [PASSED] ttm_bo_validate_invalid_placement
[04:36:24] ============= ttm_bo_validate_same_placement  ==============
[04:36:24] [PASSED] System manager
[04:36:24] [PASSED] VRAM manager
[04:36:24] ========= [PASSED] ttm_bo_validate_same_placement ==========
[04:36:24] [PASSED] ttm_bo_validate_failed_alloc
[04:36:24] [PASSED] ttm_bo_validate_pinned
[04:36:24] [PASSED] ttm_bo_validate_busy_placement
[04:36:24] ================ ttm_bo_validate_multihop  =================
[04:36:24] [PASSED] Buffer object for userspace
[04:36:24] [PASSED] Kernel buffer object
[04:36:24] [PASSED] Shared buffer object
[04:36:24] ============ [PASSED] ttm_bo_validate_multihop =============
[04:36:24] ========== ttm_bo_validate_no_placement_signaled  ==========
[04:36:24] [PASSED] Buffer object in system domain, no page vector
[04:36:24] [PASSED] Buffer object in system domain with an existing page vector
[04:36:24] ====== [PASSED] ttm_bo_validate_no_placement_signaled ======
[04:36:24] ======== ttm_bo_validate_no_placement_not_signaled  ========
[04:36:24] [PASSED] Buffer object for userspace
[04:36:24] [PASSED] Kernel buffer object
[04:36:24] [PASSED] Shared buffer object
[04:36:24] ==== [PASSED] ttm_bo_validate_no_placement_not_signaled ====
[04:36:24] [PASSED] ttm_bo_validate_move_fence_signaled
[04:36:24] ========= ttm_bo_validate_move_fence_not_signaled  =========
[04:36:24] [PASSED] Waits for GPU
[04:36:24] [PASSED] Tries to lock straight away
[04:36:24] ===== [PASSED] ttm_bo_validate_move_fence_not_signaled =====
[04:36:24] [PASSED] ttm_bo_validate_swapout
[04:36:24] [PASSED] ttm_bo_validate_happy_evict
[04:36:24] [PASSED] ttm_bo_validate_all_pinned_evict
[04:36:24] [PASSED] ttm_bo_validate_allowed_only_evict
[04:36:24] [PASSED] ttm_bo_validate_deleted_evict
[04:36:24] [PASSED] ttm_bo_validate_busy_domain_evict
[04:36:24] [PASSED] ttm_bo_validate_evict_gutting
[04:36:24] [PASSED] ttm_bo_validate_recrusive_evict
[04:36:24] ================= [PASSED] ttm_bo_validate =================
[04:36:24] ============================================================
[04:36:24] Testing complete. Ran 102 tests: passed: 102
[04:36:24] Elapsed time: 12.760s total, 2.483s configuring, 10.012s building, 0.227s running

+ for kcfg in "${kunitconfigs[@]}"
+ [[ ! -f /kernel/drivers/dma-buf/.kunitconfig ]]
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/dma-buf/.kunitconfig [04:36:24] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:

$ make ARCH=um O=.kunit olddefconfig
[04:36:27] 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
[04:36:35] Starting KUnit Kernel (1/1)...
[04:36:35] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[04:36:35] =============== dma-buf-fence (12 subtests) ================
[04:36:35] [PASSED] test_sanitycheck
[04:36:35] [PASSED] test_signaling
[04:36:35] [PASSED] test_add_callback
[04:36:35] [PASSED] test_late_add_callback
[04:36:35] [PASSED] test_rm_callback
[04:36:35] [PASSED] test_late_rm_callback
[04:36:35] [PASSED] test_status
[04:36:35] [PASSED] test_error
[04:36:35] [PASSED] test_wait
[04:36:35] [PASSED] test_wait_timeout
[04:36:35] [PASSED] test_stub
[04:36:35] [SKIPPED] test_race_signal_callback (requires at least 2 CPUs)
[04:36:35] ================== [PASSED] dma-buf-fence ==================
[04:36:35] ============ dma-buf-fence-chain (11 subtests) =============
[04:36:35] [PASSED] test_sanitycheck
[04:36:35] [PASSED] test_find_seqno
[04:36:35] [PASSED] test_find_signaled
[04:36:35] [PASSED] test_find_out_of_order
[04:36:40] [PASSED] test_find_gap
[04:36:40] [PASSED] test_find_race
[04:36:40] [PASSED] test_signal_forward
[04:36:41] [PASSED] test_signal_backward
[04:36:41] [PASSED] test_wait_forward
[04:36:41] [PASSED] test_wait_backward
[04:36:41] [PASSED] test_wait_random
[04:36:41] =============== [PASSED] dma-buf-fence-chain ===============
[04:36:41] ============ dma-buf-fence-unwrap (11 subtests) ============
[04:36:41] [PASSED] test_sanitycheck
[04:36:41] [PASSED] test_unwrap_array
[04:36:41] [PASSED] test_unwrap_chain
[04:36:41] [PASSED] test_unwrap_chain_array
[04:36:41] [PASSED] test_unwrap_merge
[04:36:41] [PASSED] test_unwrap_merge_duplicate
[04:36:41] [PASSED] test_unwrap_merge_seqno
[04:36:41] [PASSED] test_unwrap_merge_order
[04:36:41] [PASSED] test_unwrap_merge_complex
[04:36:41] [PASSED] test_unwrap_merge_complex_seqno
[04:36:41] [PASSED] test_dedup_empty
[04:36:41] ============== [PASSED] dma-buf-fence-unwrap ===============
[04:36:41] ================ dma-buf-resv (5 subtests) =================
[04:36:41] [PASSED] test_sanitycheck
[04:36:41] ===================== test_signaling  ======================
[04:36:41] [PASSED] kernel
[04:36:41] [PASSED] write
[04:36:41] [PASSED] read
[04:36:41] [PASSED] bookkeep
[04:36:41] ================= [PASSED] test_signaling ==================
[04:36:41] ====================== test_for_each  ======================
[04:36:41] [PASSED] kernel
[04:36:41] [PASSED] write
[04:36:41] [PASSED] read
[04:36:41] [PASSED] bookkeep
[04:36:41] ================== [PASSED] test_for_each ==================
[04:36:41] ================= test_for_each_unlocked  ==================
[04:36:41] [PASSED] kernel
[04:36:41] [PASSED] write
[04:36:41] [PASSED] read
[04:36:41] [PASSED] bookkeep
[04:36:41] ============= [PASSED] test_for_each_unlocked ==============
[04:36:41] ===================== test_get_fences  =====================
[04:36:41] [PASSED] kernel
[04:36:41] [PASSED] write
[04:36:41] [PASSED] read
[04:36:41] [PASSED] bookkeep
[04:36:41] ================= [PASSED] test_get_fences =================
[04:36:41] ================== [PASSED] dma-buf-resv ===================
[04:36:41] ============================================================
[04:36:41] Testing complete. Ran 51 tests: passed: 50, skipped: 1
[04:36:41] Elapsed time: 16.612s total, 2.519s configuring, 8.771s building, 5.271s running

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

#15 lore raw

✓ Xe.CI.BAT: success for drm/ttm, drm/xe: Support partially backed-up ttm_tts (rev2)

In reply to Thomas Hellström
== Series Details ==

== Series Details ==

Series: drm/ttm, drm/xe: Support partially backed-up ttm_tts (rev2)
URL : https://patchwork.freedesktop.org/series/177782/
State : success

== Summary ==

CI Bug Log - changes from xe-6064-3379b0f74f31bfc3746b692822a7700aeeebe15d_BAT -> xe-pw-177782v2_BAT
====================================================

Summary
-------

**SUCCESS**

No regressions found.

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

No changes in participating hosts

Changes
-------

No changes found

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

* Linux: xe-6064-3379b0f74f31bfc3746b692822a7700aeeebe15d -> xe-pw-177782v2

IGT_9177: 9177
xe-6064-3379b0f74f31bfc3746b692822a7700aeeebe15d: 3379b0f74f31bfc3746b692822a7700aeeebe15d
xe-pw-177782v2: 177782v2

== Logs ==

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

#16 lore raw

✓ Xe.CI.FULL: success for drm/ttm, drm/xe: Support partially backed-up ttm_tts (rev2)

In reply to Thomas Hellström
== Series Details ==

== Series Details ==

Series: drm/ttm, drm/xe: Support partially backed-up ttm_tts (rev2)
URL : https://patchwork.freedesktop.org/series/177782/
State : success

== Summary ==

CI Bug Log - changes from xe-6064-3379b0f74f31bfc3746b692822a7700aeeebe15d_FULL -> xe-pw-177782v2_FULL
====================================================

Summary
-------

**SUCCESS**

No regressions found.

Participating hosts (3 -> 3)
------------------------------

No changes in participating hosts

New tests
---------

New tests have been introduced between xe-6064-3379b0f74f31bfc3746b692822a7700aeeebe15d_FULL and xe-pw-177782v2_FULL:

### New IGT tests (4) ###

* igt@kms_pm_lpsp@kms-lpsp@pipe-a-edp-1:
- Statuses : 1 pass(s)
- Exec time: [0.33] s

* igt@xe_exec_store@cachelines:
- Statuses : 3 pass(s)
- Exec time: [0.15, 0.39] s

* igt@xe_exec_store@page-sized:
- Statuses :
- Exec time: [None] s

* igt@xe_vm@partial-unbinds:
- Statuses : 2 pass(s)
- Exec time: [0.02] s

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

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

### IGT changes ###

#### Issues hit ####

* igt@kms_big_fb@x-tiled-16bpp-rotate-270:
- shard-bmg: NOTRUN -> [SKIP][1] ([Intel XE#2327])
[1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177782v2/shard-bmg-2/igt@[email protected]

* igt@kms_big_fb@y-tiled-64bpp-rotate-90:
- shard-bmg: NOTRUN -> [SKIP][2] ([Intel XE#1124]) +6 other tests skip
[2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177782v2/shard-bmg-8/igt@[email protected]

* igt@kms_big_fb@yf-tiled-32bpp-rotate-0:
- shard-ptl: NOTRUN -> [SKIP][3] ([Intel XE#5808]) +2 other tests skip
[3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177782v2/shard-ptl-6/igt@[email protected]

* igt@kms_big_fb@yf-tiled-addfb:
- shard-bmg: NOTRUN -> [SKIP][4] ([Intel XE#2328] / [Intel XE#7367])
[4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177782v2/shard-bmg-4/igt@[email protected]

* igt@kms_bw@linear-tiling-2-displays-target-2160x1440p:
- shard-bmg: NOTRUN -> [SKIP][5] ([Intel XE#367])
[5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177782v2/shard-bmg-2/igt@[email protected]

* igt@kms_ccs@bad-aux-stride-4-tiled-mtl-rc-ccs-cc:
- shard-bmg: NOTRUN -> [SKIP][6] ([Intel XE#2887]) +8 other tests skip
[6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177782v2/shard-bmg-2/igt@[email protected]

* igt@kms_ccs@crc-primary-rotation-180-4-tiled-dg2-rc-ccs-cc:
- shard-ptl: NOTRUN -> [SKIP][7] ([Intel XE#5822]) +1 other test skip
[7]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177782v2/shard-ptl-6/igt@[email protected]

* igt@kms_ccs@crc-primary-suspend-y-tiled-gen12-rc-ccs:
- shard-bmg: NOTRUN -> [SKIP][8] ([Intel XE#3432])
[8]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177782v2/shard-bmg-8/igt@[email protected]

* igt@kms_chamelium_audio@hdmi-audio:
- shard-ptl: NOTRUN -> [SKIP][9] ([Intel XE#2252])
[9]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177782v2/shard-ptl-6/igt@[email protected]

* igt@kms_chamelium_color@degamma:
- shard-bmg: NOTRUN -> [SKIP][10] ([Intel XE#2325] / [Intel XE#7358]) +1 other test skip
[10]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177782v2/shard-bmg-8/igt@[email protected]

* igt@kms_chamelium_color_pipeline@plane-lut3d-green-only:
- shard-bmg: NOTRUN -> [SKIP][11] ([Intel XE#7358]) +2 other tests skip
[11]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177782v2/shard-bmg-8/igt@[email protected]

* igt@kms_chamelium_edid@dp-edid-change-during-hibernate:
- shard-bmg: NOTRUN -> [SKIP][12] ([Intel XE#2252]) +3 other tests skip
[12]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177782v2/shard-bmg-2/igt@[email protected]

* igt@kms_color_pipeline@plane-lut1d-pre-ctm3x4@pipe-d-plane-4:
- shard-bmg: NOTRUN -> [SKIP][13] ([Intel XE#6969]) +7 other tests skip
[13]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177782v2/shard-bmg-2/igt@kms_color_pipeline@[email protected]

* igt@kms_content_protection@atomic-dpms-hdcp14@pipe-a-dp-2:
- shard-bmg: NOTRUN -> [FAIL][14] ([Intel XE#3304] / [Intel XE#7374])
[14]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177782v2/shard-bmg-5/igt@kms_content_protection@[email protected]

* igt@kms_content_protection@atomic@pipe-a-dp-1:
- shard-bmg: NOTRUN -> [FAIL][15] ([Intel XE#3304])
[15]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177782v2/shard-bmg-7/igt@kms_content_protection@[email protected]

* igt@kms_content_protection@content-type-change:
- shard-bmg: NOTRUN -> [SKIP][16] ([Intel XE#7642])
[16]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177782v2/shard-bmg-4/igt@[email protected]

* igt@kms_content_protection@lic-type-0-hdcp14@pipe-a-dp-2:
- shard-bmg: NOTRUN -> [FAIL][17] ([Intel XE#1178] / [Intel XE#3304] / [Intel XE#7374]) +2 other tests fail
[17]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177782v2/shard-bmg-2/igt@kms_content_protection@[email protected]

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

* igt@kms_cursor_crc@cursor-offscreen-32x10:
- shard-bmg: NOTRUN -> [SKIP][19] ([Intel XE#2320]) +1 other test skip
[19]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177782v2/shard-bmg-2/igt@[email protected]

* igt@kms_cursor_crc@cursor-random-32x10:
- shard-ptl: NOTRUN -> [SKIP][20] ([Intel XE#5900]) +1 other test skip
[20]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177782v2/shard-ptl-6/igt@[email protected]

* igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions-varying-size:
- shard-bmg: NOTRUN -> [SKIP][21] ([Intel XE#2286] / [Intel XE#6035])
[21]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177782v2/shard-bmg-8/igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions-varying-size.html

* igt@kms_dp_link_training@uhbr-mst-tbtalt-train:
- shard-ptl: NOTRUN -> [SKIP][22] ([Intel XE#9531])
[22]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177782v2/shard-ptl-6/igt@[email protected]

* igt@kms_dp_link_training@uhbr-sst-direct-train:
- shard-bmg: NOTRUN -> [SKIP][23] ([Intel XE#9529])
[23]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177782v2/shard-bmg-4/igt@[email protected]

* igt@kms_dsc@dsc-fractional-bpp-with-bpc-bigjoiner:
- shard-bmg: NOTRUN -> [SKIP][24] ([Intel XE#8265]) +1 other test skip
[24]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177782v2/shard-bmg-8/igt@[email protected]

* igt@kms_fbc_dirty_rect@fbc-dirty-rectangle-different-formats:
- shard-bmg: NOTRUN -> [SKIP][25] ([Intel XE#4422] / [Intel XE#7442])
[25]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177782v2/shard-bmg-4/igt@[email protected]

* igt@kms_fbcon_fbt@fbc:
- shard-bmg: NOTRUN -> [SKIP][26] ([Intel XE#4156] / [Intel XE#7425])
[26]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177782v2/shard-bmg-2/igt@[email protected]

* igt@kms_feature_discovery@display-4x:
- shard-bmg: NOTRUN -> [SKIP][27] ([Intel XE#1138] / [Intel XE#7344])
[27]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177782v2/shard-bmg-2/igt@[email protected]

* igt@kms_flip@2x-modeset-vs-vblank-race-interruptible:
- shard-ptl: NOTRUN -> [SKIP][28] ([Intel XE#2316])
[28]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177782v2/shard-ptl-6/igt@[email protected]

* igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-32bpp-yftileccs-upscaling:
- shard-bmg: NOTRUN -> [SKIP][29] ([Intel XE#7178] / [Intel XE#7351]) +2 other tests skip
[29]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177782v2/shard-bmg-4/igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-32bpp-yftileccs-upscaling.html

* igt@kms_flip_scaled_crc@flip-nv12-linear-to-nv12-linear-reflect-x:
- shard-bmg: NOTRUN -> [SKIP][30] ([Intel XE#7179])
[30]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177782v2/shard-bmg-2/igt@kms_flip_scaled_crc@flip-nv12-linear-to-nv12-linear-reflect-x.html

* igt@kms_frontbuffer_tracking@drrs-rgb565-draw-render:
- shard-bmg: NOTRUN -> [SKIP][31] ([Intel XE#2311]) +35 other tests skip
[31]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177782v2/shard-bmg-8/igt@[email protected]

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

* igt@kms_frontbuffer_tracking@fbcdrrshdr-1p-offscreen-pri-indfb-draw-blt:
- shard-ptl: NOTRUN -> [SKIP][33] ([Intel XE#6312]) +1 other test skip
[33]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177782v2/shard-ptl-6/igt@kms_frontbuffer_tracking@fbcdrrshdr-1p-offscreen-pri-indfb-draw-blt.html

* igt@kms_frontbuffer_tracking@fbcdrrshdr-2p-primscrn-pri-indfb-draw-blt:
- shard-ptl: NOTRUN -> [SKIP][34] ([Intel XE#5812]) +13 other tests skip
[34]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177782v2/shard-ptl-6/igt@kms_frontbuffer_tracking@fbcdrrshdr-2p-primscrn-pri-indfb-draw-blt.html

* igt@kms_frontbuffer_tracking@fbcdrrshdr-argb161616f-draw-mmap-wc:
- shard-bmg: NOTRUN -> [SKIP][35] ([Intel XE#7061]) +1 other test skip
[35]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177782v2/shard-bmg-2/igt@kms_frontbuffer_tracking@fbcdrrshdr-argb161616f-draw-mmap-wc.html

* igt@kms_frontbuffer_tracking@fbchdr-argb161616f-draw-blt:
- shard-ptl: NOTRUN -> [SKIP][36] ([Intel XE#7061]) +1 other test skip
[36]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177782v2/shard-ptl-6/igt@[email protected]

* igt@kms_frontbuffer_tracking@psr-2p-primscrn-indfb-plflip-blt:
- shard-bmg: NOTRUN -> [SKIP][37] ([Intel XE#2313]) +23 other tests skip
[37]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177782v2/shard-bmg-4/igt@[email protected]

* igt@kms_frontbuffer_tracking@psrhdr-1p-primscrn-indfb-pgflip-blt:
- shard-ptl: NOTRUN -> [SKIP][38] ([Intel XE#7865]) +4 other tests skip
[38]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177782v2/shard-ptl-6/igt@kms_frontbuffer_tracking@psrhdr-1p-primscrn-indfb-pgflip-blt.html

* igt@kms_hdr@bpc-switch-suspend@pipe-a-hdmi-a-3-xrgb16161616f:
- shard-bmg: [PASS][39] -> [ABORT][40] ([Intel XE#9362] / [Intel XE#9438]) +1 other test abort
[39]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-6064-3379b0f74f31bfc3746b692822a7700aeeebe15d/shard-bmg-1/igt@kms_hdr@[email protected]
[40]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177782v2/shard-bmg-7/igt@kms_hdr@[email protected]

* igt@kms_panel_fitting@legacy:
- shard-bmg: NOTRUN -> [SKIP][41] ([Intel XE#2486])
[41]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177782v2/shard-bmg-4/igt@[email protected]

* igt@kms_plane@pixel-format-4-tiled-modifier@pipe-a-plane-5:
- shard-bmg: NOTRUN -> [SKIP][42] ([Intel XE#8303]) +1 other test skip
[42]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177782v2/shard-bmg-2/igt@kms_plane@[email protected]

* igt@kms_plane@pixel-format-y-tiled-gen12-rc-ccs-modifier:
- shard-ptl: NOTRUN -> [SKIP][43] ([Intel XE#7283])
[43]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177782v2/shard-ptl-6/igt@[email protected]

* igt@kms_plane@pixel-format-yf-tiled-modifier:
- shard-bmg: NOTRUN -> [SKIP][44] ([Intel XE#7283]) +1 other test skip
[44]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177782v2/shard-bmg-8/igt@[email protected]

* igt@kms_plane_lowres@tiling-y:
- shard-bmg: NOTRUN -> [SKIP][45] ([Intel XE#2393])
[45]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177782v2/shard-bmg-4/igt@[email protected]

* igt@kms_plane_multiple@tiling-yf:
- shard-bmg: NOTRUN -> [SKIP][46] ([Intel XE#5020] / [Intel XE#7348]) +1 other test skip
[46]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177782v2/shard-bmg-8/igt@[email protected]

* igt@kms_pm_dc@dc3co-after-dc6@pr-xrgb8888:
- shard-bmg: NOTRUN -> [SKIP][47] ([Intel XE#8395] / [Intel XE#8396]) +1 other test skip
[47]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177782v2/shard-bmg-8/igt@kms_pm_dc@[email protected]

* igt@kms_pm_dc@dc3co-after-dc6@psr2-yuv420:
- shard-bmg: NOTRUN -> [SKIP][48] ([Intel XE#8396]) +1 other test skip
[48]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177782v2/shard-bmg-8/igt@kms_pm_dc@[email protected]

* igt@kms_pm_dc@dc3co-vpb-simulation:
- shard-ptl: NOTRUN -> [SKIP][49] ([Intel XE#8395] / [Intel XE#8396]) +1 other test skip
[49]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177782v2/shard-ptl-6/igt@[email protected]

* igt@kms_pm_dc@dc3co-vpb-simulation@psr2-yuv420:
- shard-ptl: NOTRUN -> [SKIP][50] ([Intel XE#8396]) +1 other test skip
[50]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177782v2/shard-ptl-6/igt@kms_pm_dc@[email protected]

* igt@kms_pm_dc@deep-pkgc:
- shard-bmg: NOTRUN -> [SKIP][51] ([Intel XE#2505] / [Intel XE#7447])
[51]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177782v2/shard-bmg-8/igt@[email protected]

* igt@kms_psr2_sf@psr2-overlay-plane-move-continuous-sf:
- shard-bmg: NOTRUN -> [SKIP][52] ([Intel XE#1489]) +4 other tests skip
[52]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177782v2/shard-bmg-8/igt@[email protected]

* igt@kms_psr@psr-basic:
- shard-bmg: NOTRUN -> [SKIP][53] ([Intel XE#2234] / [Intel XE#2850]) +4 other tests skip
[53]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177782v2/shard-bmg-4/igt@[email protected]

* igt@kms_rotation_crc@primary-yf-tiled-reflect-x-90:
- shard-ptl: NOTRUN -> [SKIP][54] ([Intel XE#5821])
[54]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177782v2/shard-ptl-6/igt@[email protected]

* igt@kms_sharpness_filter@filter-dpms:
- shard-bmg: NOTRUN -> [SKIP][55] ([Intel XE#6503]) +1 other test skip
[55]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177782v2/shard-bmg-2/igt@[email protected]

* igt@kms_vrr@flip-basic:
- shard-ptl: [PASS][56] -> [FAIL][57] ([Intel XE#4227] / [Intel XE#7397]) +1 other test fail
[56]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-6064-3379b0f74f31bfc3746b692822a7700aeeebe15d/shard-ptl-3/igt@[email protected]
[57]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177782v2/shard-ptl-7/igt@[email protected]

* igt@kms_vrr@seamless-rr-switch-virtual:
- shard-bmg: NOTRUN -> [SKIP][58] ([Intel XE#1499] / [Intel XE#9271])
[58]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177782v2/shard-bmg-2/igt@[email protected]

* igt@xe_cw_post_sync@walker-post-sync:
- shard-ptl: NOTRUN -> [SKIP][59] ([Intel XE#8608])
[59]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177782v2/shard-ptl-6/igt@[email protected]

* igt@xe_exec_balancer@once-cm-virtual-userptr-invalidate-race:
- shard-ptl: NOTRUN -> [SKIP][60] ([Intel XE#7482]) +2 other tests skip
[60]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177782v2/shard-ptl-6/igt@[email protected]

* igt@xe_exec_basic@multigpu-many-execqueues-many-vm-userptr:
- shard-ptl: NOTRUN -> [SKIP][61] ([Intel XE#5575] / [Intel XE#7484]) +1 other test skip
[61]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177782v2/shard-ptl-6/igt@[email protected]

* igt@xe_exec_basic@multigpu-once-basic:
- shard-bmg: NOTRUN -> [SKIP][62] ([Intel XE#2322] / [Intel XE#7372]) +1 other test skip
[62]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177782v2/shard-bmg-8/igt@[email protected]

* igt@xe_exec_fault_mode@once-multi-queue-userptr-invalidate-race-prefetch:
- shard-bmg: NOTRUN -> [SKIP][63] ([Intel XE#8374]) +6 other tests skip
[63]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177782v2/shard-bmg-4/igt@xe_exec_fault_mode@once-multi-queue-userptr-invalidate-race-prefetch.html

* igt@xe_exec_fault_mode@twice-multi-queue-imm:
- shard-ptl: NOTRUN -> [SKIP][64] ([Intel XE#8374]) +1 other test skip
[64]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177782v2/shard-ptl-6/igt@[email protected]

* igt@xe_exec_multi_queue@max-queues-basic:
- shard-bmg: NOTRUN -> [SKIP][65] ([Intel XE#8364]) +13 other tests skip
[65]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177782v2/shard-bmg-2/igt@[email protected]

* igt@xe_exec_multi_queue@one-queue-preempt-mode-dyn-priority:
- shard-ptl: NOTRUN -> [SKIP][66] ([Intel XE#8364]) +4 other tests skip
[66]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177782v2/shard-ptl-6/igt@[email protected]

* igt@xe_exec_threads@threads-multi-queue-cm-fd-basic:
- shard-bmg: NOTRUN -> [SKIP][67] ([Intel XE#8378]) +2 other tests skip
[67]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177782v2/shard-bmg-2/igt@[email protected]

* igt@xe_exec_threads@threads-multi-queue-cm-fd-userptr-rebind:
- shard-ptl: NOTRUN -> [SKIP][68] ([Intel XE#8378]) +2 other tests skip
[68]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177782v2/shard-ptl-6/igt@[email protected]

* igt@xe_fault_injection@exec-queue-create-fail-xe_hw_engine_group_add_exec_queue:
- shard-bmg: NOTRUN -> [ABORT][69] ([Intel XE#9463])
[69]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177782v2/shard-bmg-8/igt@xe_fault_injection@exec-queue-create-fail-xe_hw_engine_group_add_exec_queue.html

* igt@xe_mmap@small-bar:
- shard-bmg: NOTRUN -> [SKIP][70] ([Intel XE#586] / [Intel XE#7323] / [Intel XE#7384])
[70]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177782v2/shard-bmg-4/igt@[email protected]

* igt@xe_multigpu_svm@mgpu-pagefault-prefetch:
- shard-bmg: NOTRUN -> [SKIP][71] ([Intel XE#6964]) +1 other test skip
[71]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177782v2/shard-bmg-2/igt@[email protected]

* igt@xe_peer2peer@read:
- shard-bmg: NOTRUN -> [SKIP][72] ([Intel XE#2427] / [Intel XE#6953] / [Intel XE#7326] / [Intel XE#7353])
[72]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177782v2/shard-bmg-8/igt@[email protected]

* igt@xe_pm@s4-basic-exec:
- shard-lnl: [PASS][73] -> [ABORT][74] ([Intel XE#9362])
[73]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-6064-3379b0f74f31bfc3746b692822a7700aeeebe15d/shard-lnl-4/igt@[email protected]
[74]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177782v2/shard-lnl-5/igt@[email protected]

* igt@xe_pm@s4-vm-bind-unbind-all:
- shard-ptl: [PASS][75] -> [ABORT][76] ([Intel XE#9362])
[75]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-6064-3379b0f74f31bfc3746b692822a7700aeeebe15d/shard-ptl-3/igt@[email protected]
[76]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177782v2/shard-ptl-3/igt@[email protected]

* igt@xe_pm_residency@gt-c6-freeze@gt0:
- shard-bmg: [PASS][77] -> [FAIL][78] ([Intel XE#9254]) +1 other test fail
[77]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-6064-3379b0f74f31bfc3746b692822a7700aeeebe15d/shard-bmg-8/igt@xe_pm_residency@[email protected]
[78]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177782v2/shard-bmg-4/igt@xe_pm_residency@[email protected]

* igt@xe_pxp@pxp-stale-bo-exec-post-rpm:
- shard-bmg: NOTRUN -> [SKIP][79] ([Intel XE#4733] / [Intel XE#7417])
[79]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177782v2/shard-bmg-2/igt@[email protected]

* igt@xe_query@multigpu-query-cs-cycles:
- shard-ptl: NOTRUN -> [SKIP][80] ([Intel XE#6019]) +1 other test skip
[80]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177782v2/shard-ptl-6/igt@[email protected]

* igt@xe_query@multigpu-query-mem-usage:
- shard-bmg: NOTRUN -> [SKIP][81] ([Intel XE#944]) +1 other test skip
[81]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177782v2/shard-bmg-2/igt@[email protected]

* igt@xe_sriov_flr@flr-twice:
- shard-bmg: NOTRUN -> [FAIL][82] ([Intel XE#6569])
[82]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177782v2/shard-bmg-8/igt@[email protected]

#### Possible fixes ####

* igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs:
- shard-bmg: [INCOMPLETE][83] ([Intel XE#7084] / [Intel XE#8150]) -> [PASS][84] +1 other test pass
[83]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-6064-3379b0f74f31bfc3746b692822a7700aeeebe15d/shard-bmg-4/igt@[email protected]
[84]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177782v2/shard-bmg-2/igt@[email protected]

* igt@kms_flip@flip-vs-expired-vblank-interruptible:
- shard-lnl: [FAIL][85] ([Intel XE#301]) -> [PASS][86] +1 other test pass
[85]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-6064-3379b0f74f31bfc3746b692822a7700aeeebe15d/shard-lnl-7/igt@[email protected]
[86]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177782v2/shard-lnl-5/igt@[email protected]

* igt@kms_vrr@flip-suspend@pipe-a-edp-1:
- shard-ptl: [FAIL][87] ([Intel XE#4227] / [Intel XE#7397]) -> [PASS][88] +1 other test pass
[87]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-6064-3379b0f74f31bfc3746b692822a7700aeeebe15d/shard-ptl-7/igt@kms_vrr@[email protected]
[88]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177782v2/shard-ptl-1/igt@kms_vrr@[email protected]

* igt@xe_exec_reset@gt-stress-reset-concurrent-submit-sync:
- shard-lnl: [DMESG-WARN][89] ([Intel XE#8652]) -> [PASS][90]
[89]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-6064-3379b0f74f31bfc3746b692822a7700aeeebe15d/shard-lnl-4/igt@[email protected]
[90]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177782v2/shard-lnl-1/igt@[email protected]

* igt@xe_pm@s2idle-mocs:
- shard-ptl: [ABORT][91] ([Intel XE#9362]) -> [PASS][92]
[91]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-6064-3379b0f74f31bfc3746b692822a7700aeeebe15d/shard-ptl-6/igt@[email protected]
[92]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177782v2/shard-ptl-6/igt@[email protected]

* igt@xe_pm_residency@idle-residency:
- shard-bmg: [FAIL][93] ([Intel XE#9254]) -> [PASS][94]
[93]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-6064-3379b0f74f31bfc3746b692822a7700aeeebe15d/shard-bmg-2/igt@[email protected]
[94]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177782v2/shard-bmg-4/igt@[email protected]

* igt@xe_pm_residency@idle-residency@gt0:
- shard-bmg: [FAIL][95] ([Intel XE#9725]) -> [PASS][96]
[95]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-6064-3379b0f74f31bfc3746b692822a7700aeeebe15d/shard-bmg-2/igt@xe_pm_residency@[email protected]
[96]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177782v2/shard-bmg-4/igt@xe_pm_residency@[email protected]

#### Warnings ####

* igt@kms_big_fb@4-tiled-8bpp-rotate-90:
- shard-lnl: [SKIP][97] ([Intel XE#1407]) -> [ABORT][98] ([Intel XE#4760])
[97]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-6064-3379b0f74f31bfc3746b692822a7700aeeebe15d/shard-lnl-5/igt@[email protected]
[98]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177782v2/shard-lnl-5/igt@[email protected]

* igt@kms_tiled_display@basic-test-pattern:
- shard-bmg: [SKIP][99] ([Intel XE#2426] / [Intel XE#5848]) -> [FAIL][100] ([Intel XE#1729] / [Intel XE#7424])
[99]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-6064-3379b0f74f31bfc3746b692822a7700aeeebe15d/shard-bmg-9/igt@[email protected]
[100]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177782v2/shard-bmg-1/igt@[email protected]

* igt@kms_tiled_display@basic-test-pattern-with-chamelium:
- shard-bmg: [SKIP][101] ([Intel XE#2426] / [Intel XE#5848]) -> [SKIP][102] ([Intel XE#2509] / [Intel XE#7437])
[101]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-6064-3379b0f74f31bfc3746b692822a7700aeeebe15d/shard-bmg-2/igt@[email protected]
[102]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177782v2/shard-bmg-4/igt@[email protected]

[Intel XE#1124]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1124
[Intel XE#1138]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1138
[Intel XE#1178]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1178
[Intel XE#1407]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1407
[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#1729]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1729
[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#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#2316]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2316
[Intel XE#2320]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2320
[Intel XE#2322]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2322
[Intel XE#2325]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2325
[Intel XE#2327]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2327
[Intel XE#2328]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2328
[Intel XE#2393]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2393
[Intel XE#2426]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2426
[Intel XE#2427]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2427
[Intel XE#2486]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2486
[Intel XE#2505]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2505
[Intel XE#2509]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2509
[Intel XE#2850]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2850
[Intel XE#2887]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2887
[Intel XE#301]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/301
[Intel XE#3304]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3304
[Intel XE#3432]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3432
[Intel XE#367]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/367
[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#4227]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4227
[Intel XE#4422]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4422
[Intel XE#4733]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4733
[Intel XE#4760]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4760
[Intel XE#5020]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5020
[Intel XE#5575]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5575
[Intel XE#5808]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5808
[Intel XE#5812]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5812
[Intel XE#5821]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5821
[Intel XE#5822]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5822
[Intel XE#5848]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5848
[Intel XE#586]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/586
[Intel XE#5900]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5900
[Intel XE#6019]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6019
[Intel XE#6035]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6035
[Intel XE#6312]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6312
[Intel XE#6503]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6503
[Intel XE#6569]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6569
[Intel XE#6707]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6707
[Intel XE#6953]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6953
[Intel XE#6964]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6964
[Intel XE#6969]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6969
[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#7178]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7178
[Intel XE#7179]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7179
[Intel XE#7283]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7283
[Intel XE#7323]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7323
[Intel XE#7326]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7326
[Intel XE#7344]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7344
[Intel XE#7348]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7348
[Intel XE#7351]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7351
[Intel XE#7353]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7353
[Intel XE#7358]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7358
[Intel XE#7367]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7367
[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#7384]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7384
[Intel XE#7397]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7397
[Intel XE#7417]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7417
[Intel XE#7424]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7424
[Intel XE#7425]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7425
[Intel XE#7437]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7437
[Intel XE#7439]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7439
[Intel XE#7442]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7442
[Intel XE#7447]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7447
[Intel XE#7482]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7482
[Intel XE#7484]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7484
[Intel XE#7642]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7642
[Intel XE#7865]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7865
[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#8303]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8303
[Intel XE#8364]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8364
[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#8395]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8395
[Intel XE#8396]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8396
[Intel XE#8608]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8608
[Intel XE#8652]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8652
[Intel XE#9254]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9254
[Intel XE#9271]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9271
[Intel XE#9362]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9362
[Intel XE#9438]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9438
[Intel XE#944]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/944
[Intel XE#9463]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9463
[Intel XE#9529]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9529
[Intel XE#9531]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9531
[Intel XE#9725]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9725

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

* Linux: xe-6064-3379b0f74f31bfc3746b692822a7700aeeebe15d -> xe-pw-177782v2

IGT_9177: 9177
xe-6064-3379b0f74f31bfc3746b692822a7700aeeebe15d: 3379b0f74f31bfc3746b692822a7700aeeebe15d
xe-pw-177782v2: 177782v2

== Logs ==

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