* [PATCH v5] mm: Fix a hmm_range_fault() livelock / starvation problem
@ 2026-02-10 11:56 Thomas Hellström
2026-02-10 12:56 ` ✓ CI.KUnit: success for mm: Fix a hmm_range_fault() livelock / starvation problem (rev4) Patchwork
` (5 more replies)
0 siblings, 6 replies; 13+ messages in thread
From: Thomas Hellström @ 2026-02-10 11:56 UTC (permalink / raw)
To: intel-xe
Cc: Thomas Hellström, Alistair Popple, Ralph Campbell,
Christoph Hellwig, Jason Gunthorpe, Jason Gunthorpe,
Leon Romanovsky, Andrew Morton, Matthew Brost, John Hubbard,
linux-mm, dri-devel, stable
If hmm_range_fault() fails a folio_trylock() in do_swap_page,
trying to acquire the lock of a device-private folio for migration,
to ram, the function will spin until it succeeds grabbing the lock.
However, if the process holding the lock is depending on a work
item to be completed, which is scheduled on the same CPU as the
spinning hmm_range_fault(), that work item might be starved and
we end up in a livelock / starvation situation which is never
resolved.
This can happen, for example if the process holding the
device-private folio lock is stuck in
migrate_device_unmap()->lru_add_drain_all()
sinc lru_add_drain_all() requires a short work-item
to be run on all online cpus to complete.
A prerequisite for this to happen is:
a) Both zone device and system memory folios are considered in
migrate_device_unmap(), so that there is a reason to call
lru_add_drain_all() for a system memory folio while a
folio lock is held on a zone device folio.
b) The zone device folio has an initial mapcount > 1 which causes
at least one migration PTE entry insertion to be deferred to
try_to_migrate(), which can happen after the call to
lru_add_drain_all().
c) No or voluntary only preemption.
This all seems pretty unlikely to happen, but indeed is hit by
the "xe_exec_system_allocator" igt test.
Resolve this by waiting for the folio to be unlocked if the
folio_trylock() fails in do_swap_page().
Rename migration_entry_wait_on_locked() to
softleaf_entry_wait_unlock() and update its documentation to
indicate the new use-case.
Future code improvements might consider moving
the lru_add_drain_all() call in migrate_device_unmap() to be
called *after* all pages have migration entries inserted.
That would eliminate also b) above.
v2:
- Instead of a cond_resched() in hmm_range_fault(),
eliminate the problem by waiting for the folio to be unlocked
in do_swap_page() (Alistair Popple, Andrew Morton)
v3:
- Add a stub migration_entry_wait_on_locked() for the
!CONFIG_MIGRATION case. (Kernel Test Robot)
v4:
- Rename migrate_entry_wait_on_locked() to
softleaf_entry_wait_on_locked() and update docs (Alistair Popple)
v5:
- Add a WARN_ON_ONCE() for the !CONFIG_MIGRATION
version of softleaf_entry_wait_on_locked().
- Modify wording around function names in the commit message
(Andrew Morton)
Suggested-by: Alistair Popple <apopple@nvidia.com>
Fixes: 1afaeb8293c9 ("mm/migrate: Trylock device page in do_swap_page")
Cc: Ralph Campbell <rcampbell@nvidia.com>
Cc: Christoph Hellwig <hch@lst.de>
Cc: Jason Gunthorpe <jgg@mellanox.com>
Cc: Jason Gunthorpe <jgg@ziepe.ca>
Cc: Leon Romanovsky <leon@kernel.org>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Matthew Brost <matthew.brost@intel.com>
Cc: John Hubbard <jhubbard@nvidia.com>
Cc: Alistair Popple <apopple@nvidia.com>
Cc: linux-mm@kvack.org
Cc: <dri-devel@lists.freedesktop.org>
Signed-off-by: Thomas Hellström <thomas.hellstrom@linux.intel.com>
Cc: <stable@vger.kernel.org> # v6.15+
Reviewed-by: John Hubbard <jhubbard@nvidia.com> #v3
---
include/linux/migrate.h | 10 +++++++++-
mm/filemap.c | 15 ++++++++++-----
mm/memory.c | 3 ++-
mm/migrate.c | 8 ++++----
mm/migrate_device.c | 2 +-
5 files changed, 26 insertions(+), 12 deletions(-)
diff --git a/include/linux/migrate.h b/include/linux/migrate.h
index 26ca00c325d9..d5af2b7f577b 100644
--- a/include/linux/migrate.h
+++ b/include/linux/migrate.h
@@ -65,7 +65,7 @@ bool isolate_folio_to_list(struct folio *folio, struct list_head *list);
int migrate_huge_page_move_mapping(struct address_space *mapping,
struct folio *dst, struct folio *src);
-void migration_entry_wait_on_locked(softleaf_t entry, spinlock_t *ptl)
+void softleaf_entry_wait_on_locked(softleaf_t entry, spinlock_t *ptl)
__releases(ptl);
void folio_migrate_flags(struct folio *newfolio, struct folio *folio);
int folio_migrate_mapping(struct address_space *mapping,
@@ -97,6 +97,14 @@ static inline int set_movable_ops(const struct movable_operations *ops, enum pag
return -ENOSYS;
}
+static inline void softleaf_entry_wait_on_locked(softleaf_t entry, spinlock_t *ptl)
+ __releases(ptl)
+{
+ WARN_ON_ONCE(1);
+
+ spin_unlock(ptl);
+}
+
#endif /* CONFIG_MIGRATION */
#ifdef CONFIG_NUMA_BALANCING
diff --git a/mm/filemap.c b/mm/filemap.c
index ebd75684cb0a..d98e4883f13d 100644
--- a/mm/filemap.c
+++ b/mm/filemap.c
@@ -1379,14 +1379,16 @@ static inline int folio_wait_bit_common(struct folio *folio, int bit_nr,
#ifdef CONFIG_MIGRATION
/**
- * migration_entry_wait_on_locked - Wait for a migration entry to be removed
- * @entry: migration swap entry.
+ * softleaf_entry_wait_on_locked - Wait for a migration entry or
+ * device_private entry to be removed.
+ * @entry: migration or device_private swap entry.
* @ptl: already locked ptl. This function will drop the lock.
*
- * Wait for a migration entry referencing the given page to be removed. This is
+ * Wait for a migration entry referencing the given page, or device_private
+ * entry referencing a dvice_private page to be unlocked. This is
* equivalent to folio_put_wait_locked(folio, TASK_UNINTERRUPTIBLE) except
* this can be called without taking a reference on the page. Instead this
- * should be called while holding the ptl for the migration entry referencing
+ * should be called while holding the ptl for @entry referencing
* the page.
*
* Returns after unlocking the ptl.
@@ -1394,7 +1396,7 @@ static inline int folio_wait_bit_common(struct folio *folio, int bit_nr,
* This follows the same logic as folio_wait_bit_common() so see the comments
* there.
*/
-void migration_entry_wait_on_locked(softleaf_t entry, spinlock_t *ptl)
+void softleaf_entry_wait_on_locked(softleaf_t entry, spinlock_t *ptl)
__releases(ptl)
{
struct wait_page_queue wait_page;
@@ -1428,6 +1430,9 @@ void migration_entry_wait_on_locked(softleaf_t entry, spinlock_t *ptl)
* If a migration entry exists for the page the migration path must hold
* a valid reference to the page, and it must take the ptl to remove the
* migration entry. So the page is valid until the ptl is dropped.
+ * Similarly any path attempting to drop the last reference to a
+ * device-private page needs to grab the ptl to remove the device-private
+ * entry.
*/
spin_unlock(ptl);
diff --git a/mm/memory.c b/mm/memory.c
index da360a6eb8a4..20172476a57f 100644
--- a/mm/memory.c
+++ b/mm/memory.c
@@ -4684,7 +4684,8 @@ vm_fault_t do_swap_page(struct vm_fault *vmf)
unlock_page(vmf->page);
put_page(vmf->page);
} else {
- pte_unmap_unlock(vmf->pte, vmf->ptl);
+ pte_unmap(vmf->pte);
+ softleaf_entry_wait_on_locked(entry, vmf->ptl);
}
} else if (softleaf_is_hwpoison(entry)) {
ret = VM_FAULT_HWPOISON;
diff --git a/mm/migrate.c b/mm/migrate.c
index 4688b9e38cd2..cf6449b4202e 100644
--- a/mm/migrate.c
+++ b/mm/migrate.c
@@ -499,7 +499,7 @@ void migration_entry_wait(struct mm_struct *mm, pmd_t *pmd,
if (!softleaf_is_migration(entry))
goto out;
- migration_entry_wait_on_locked(entry, ptl);
+ softleaf_entry_wait_on_locked(entry, ptl);
return;
out:
spin_unlock(ptl);
@@ -531,10 +531,10 @@ void migration_entry_wait_huge(struct vm_area_struct *vma, unsigned long addr, p
* If migration entry existed, safe to release vma lock
* here because the pgtable page won't be freed without the
* pgtable lock released. See comment right above pgtable
- * lock release in migration_entry_wait_on_locked().
+ * lock release in softleaf_entry_wait_on_locked().
*/
hugetlb_vma_unlock_read(vma);
- migration_entry_wait_on_locked(entry, ptl);
+ softleaf_entry_wait_on_locked(entry, ptl);
return;
}
@@ -552,7 +552,7 @@ void pmd_migration_entry_wait(struct mm_struct *mm, pmd_t *pmd)
ptl = pmd_lock(mm, pmd);
if (!pmd_is_migration_entry(*pmd))
goto unlock;
- migration_entry_wait_on_locked(softleaf_from_pmd(*pmd), ptl);
+ softleaf_entry_wait_on_locked(softleaf_from_pmd(*pmd), ptl);
return;
unlock:
spin_unlock(ptl);
diff --git a/mm/migrate_device.c b/mm/migrate_device.c
index 23379663b1e1..deab89fd4541 100644
--- a/mm/migrate_device.c
+++ b/mm/migrate_device.c
@@ -176,7 +176,7 @@ static int migrate_vma_collect_huge_pmd(pmd_t *pmdp, unsigned long start,
}
if (softleaf_is_migration(entry)) {
- migration_entry_wait_on_locked(entry, ptl);
+ softleaf_entry_wait_on_locked(entry, ptl);
spin_unlock(ptl);
return -EAGAIN;
}
--
2.52.0
^ permalink raw reply related [flat|nested] 13+ messages in thread
* ✓ CI.KUnit: success for mm: Fix a hmm_range_fault() livelock / starvation problem (rev4)
2026-02-10 11:56 [PATCH v5] mm: Fix a hmm_range_fault() livelock / starvation problem Thomas Hellström
@ 2026-02-10 12:56 ` Patchwork
2026-02-10 13:30 ` ✓ Xe.CI.BAT: " Patchwork
` (4 subsequent siblings)
5 siblings, 0 replies; 13+ messages in thread
From: Patchwork @ 2026-02-10 12:56 UTC (permalink / raw)
To: Thomas Hellström; +Cc: intel-xe
== Series Details ==
Series: mm: Fix a hmm_range_fault() livelock / starvation problem (rev4)
URL : https://patchwork.freedesktop.org/series/161081/
State : success
== Summary ==
+ trap cleanup EXIT
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/xe/.kunitconfig
[12:55:41] Configuring KUnit Kernel ...
Generating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[12:55: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
[12:56:17] Starting KUnit Kernel (1/1)...
[12:56:17] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[12:56:17] ================== guc_buf (11 subtests) ===================
[12:56:17] [PASSED] test_smallest
[12:56:17] [PASSED] test_largest
[12:56:17] [PASSED] test_granular
[12:56:17] [PASSED] test_unique
[12:56:17] [PASSED] test_overlap
[12:56:17] [PASSED] test_reusable
[12:56:17] [PASSED] test_too_big
[12:56:17] [PASSED] test_flush
[12:56:17] [PASSED] test_lookup
[12:56:17] [PASSED] test_data
[12:56:17] [PASSED] test_class
[12:56:17] ===================== [PASSED] guc_buf =====================
[12:56:17] =================== guc_dbm (7 subtests) ===================
[12:56:17] [PASSED] test_empty
[12:56:17] [PASSED] test_default
[12:56:17] ======================== test_size ========================
[12:56:17] [PASSED] 4
[12:56:17] [PASSED] 8
[12:56:17] [PASSED] 32
[12:56:17] [PASSED] 256
[12:56:17] ==================== [PASSED] test_size ====================
[12:56:17] ======================= test_reuse ========================
[12:56:17] [PASSED] 4
[12:56:17] [PASSED] 8
[12:56:17] [PASSED] 32
[12:56:17] [PASSED] 256
[12:56:17] =================== [PASSED] test_reuse ====================
[12:56:17] =================== test_range_overlap ====================
[12:56:17] [PASSED] 4
[12:56:17] [PASSED] 8
[12:56:17] [PASSED] 32
[12:56:17] [PASSED] 256
[12:56:17] =============== [PASSED] test_range_overlap ================
[12:56:17] =================== test_range_compact ====================
[12:56:17] [PASSED] 4
[12:56:17] [PASSED] 8
[12:56:17] [PASSED] 32
[12:56:17] [PASSED] 256
[12:56:17] =============== [PASSED] test_range_compact ================
[12:56:17] ==================== test_range_spare =====================
[12:56:17] [PASSED] 4
[12:56:17] [PASSED] 8
[12:56:17] [PASSED] 32
[12:56:17] [PASSED] 256
[12:56:17] ================ [PASSED] test_range_spare =================
[12:56:17] ===================== [PASSED] guc_dbm =====================
[12:56:17] =================== guc_idm (6 subtests) ===================
[12:56:17] [PASSED] bad_init
[12:56:17] [PASSED] no_init
[12:56:17] [PASSED] init_fini
[12:56:17] [PASSED] check_used
[12:56:17] [PASSED] check_quota
[12:56:17] [PASSED] check_all
[12:56:17] ===================== [PASSED] guc_idm =====================
[12:56:17] ================== no_relay (3 subtests) ===================
[12:56:17] [PASSED] xe_drops_guc2pf_if_not_ready
[12:56:17] [PASSED] xe_drops_guc2vf_if_not_ready
[12:56:17] [PASSED] xe_rejects_send_if_not_ready
[12:56:17] ==================== [PASSED] no_relay =====================
[12:56:17] ================== pf_relay (14 subtests) ==================
[12:56:17] [PASSED] pf_rejects_guc2pf_too_short
[12:56:17] [PASSED] pf_rejects_guc2pf_too_long
[12:56:17] [PASSED] pf_rejects_guc2pf_no_payload
[12:56:17] [PASSED] pf_fails_no_payload
[12:56:17] [PASSED] pf_fails_bad_origin
[12:56:17] [PASSED] pf_fails_bad_type
[12:56:17] [PASSED] pf_txn_reports_error
[12:56:17] [PASSED] pf_txn_sends_pf2guc
[12:56:17] [PASSED] pf_sends_pf2guc
[12:56:17] [SKIPPED] pf_loopback_nop
[12:56:17] [SKIPPED] pf_loopback_echo
[12:56:17] [SKIPPED] pf_loopback_fail
[12:56:17] [SKIPPED] pf_loopback_busy
[12:56:17] [SKIPPED] pf_loopback_retry
[12:56:17] ==================== [PASSED] pf_relay =====================
[12:56:17] ================== vf_relay (3 subtests) ===================
[12:56:17] [PASSED] vf_rejects_guc2vf_too_short
[12:56:17] [PASSED] vf_rejects_guc2vf_too_long
[12:56:17] [PASSED] vf_rejects_guc2vf_no_payload
[12:56:17] ==================== [PASSED] vf_relay =====================
[12:56:17] ================ pf_gt_config (6 subtests) =================
[12:56:17] [PASSED] fair_contexts_1vf
[12:56:17] [PASSED] fair_doorbells_1vf
[12:56:17] [PASSED] fair_ggtt_1vf
[12:56:17] ====================== fair_contexts ======================
[12:56:17] [PASSED] 1 VF
[12:56:17] [PASSED] 2 VFs
[12:56:17] [PASSED] 3 VFs
[12:56:17] [PASSED] 4 VFs
[12:56:17] [PASSED] 5 VFs
[12:56:17] [PASSED] 6 VFs
[12:56:17] [PASSED] 7 VFs
[12:56:17] [PASSED] 8 VFs
[12:56:17] [PASSED] 9 VFs
[12:56:17] [PASSED] 10 VFs
[12:56:17] [PASSED] 11 VFs
[12:56:17] [PASSED] 12 VFs
[12:56:17] [PASSED] 13 VFs
[12:56:17] [PASSED] 14 VFs
[12:56:17] [PASSED] 15 VFs
[12:56:17] [PASSED] 16 VFs
[12:56:17] [PASSED] 17 VFs
[12:56:17] [PASSED] 18 VFs
[12:56:17] [PASSED] 19 VFs
[12:56:17] [PASSED] 20 VFs
[12:56:17] [PASSED] 21 VFs
[12:56:17] [PASSED] 22 VFs
[12:56:17] [PASSED] 23 VFs
[12:56:17] [PASSED] 24 VFs
[12:56:17] [PASSED] 25 VFs
[12:56:17] [PASSED] 26 VFs
[12:56:17] [PASSED] 27 VFs
[12:56:17] [PASSED] 28 VFs
[12:56:17] [PASSED] 29 VFs
[12:56:17] [PASSED] 30 VFs
[12:56:17] [PASSED] 31 VFs
[12:56:17] [PASSED] 32 VFs
[12:56:17] [PASSED] 33 VFs
[12:56:17] [PASSED] 34 VFs
[12:56:17] [PASSED] 35 VFs
[12:56:17] [PASSED] 36 VFs
[12:56:17] [PASSED] 37 VFs
[12:56:17] [PASSED] 38 VFs
[12:56:17] [PASSED] 39 VFs
[12:56:17] [PASSED] 40 VFs
[12:56:17] [PASSED] 41 VFs
[12:56:17] [PASSED] 42 VFs
[12:56:17] [PASSED] 43 VFs
[12:56:17] [PASSED] 44 VFs
[12:56:17] [PASSED] 45 VFs
[12:56:17] [PASSED] 46 VFs
[12:56:17] [PASSED] 47 VFs
[12:56:17] [PASSED] 48 VFs
[12:56:17] [PASSED] 49 VFs
[12:56:17] [PASSED] 50 VFs
[12:56:17] [PASSED] 51 VFs
[12:56:17] [PASSED] 52 VFs
[12:56:17] [PASSED] 53 VFs
[12:56:17] [PASSED] 54 VFs
[12:56:17] [PASSED] 55 VFs
[12:56:17] [PASSED] 56 VFs
[12:56:17] [PASSED] 57 VFs
[12:56:17] [PASSED] 58 VFs
[12:56:17] [PASSED] 59 VFs
[12:56:17] [PASSED] 60 VFs
[12:56:17] [PASSED] 61 VFs
[12:56:17] [PASSED] 62 VFs
[12:56:17] [PASSED] 63 VFs
[12:56:17] ================== [PASSED] fair_contexts ==================
[12:56:17] ===================== fair_doorbells ======================
[12:56:17] [PASSED] 1 VF
[12:56:17] [PASSED] 2 VFs
[12:56:17] [PASSED] 3 VFs
[12:56:17] [PASSED] 4 VFs
[12:56:17] [PASSED] 5 VFs
[12:56:17] [PASSED] 6 VFs
[12:56:17] [PASSED] 7 VFs
[12:56:17] [PASSED] 8 VFs
[12:56:17] [PASSED] 9 VFs
[12:56:17] [PASSED] 10 VFs
[12:56:17] [PASSED] 11 VFs
[12:56:17] [PASSED] 12 VFs
[12:56:17] [PASSED] 13 VFs
[12:56:17] [PASSED] 14 VFs
[12:56:17] [PASSED] 15 VFs
[12:56:17] [PASSED] 16 VFs
[12:56:17] [PASSED] 17 VFs
[12:56:17] [PASSED] 18 VFs
[12:56:17] [PASSED] 19 VFs
[12:56:17] [PASSED] 20 VFs
[12:56:17] [PASSED] 21 VFs
[12:56:17] [PASSED] 22 VFs
[12:56:17] [PASSED] 23 VFs
[12:56:17] [PASSED] 24 VFs
[12:56:17] [PASSED] 25 VFs
[12:56:17] [PASSED] 26 VFs
[12:56:17] [PASSED] 27 VFs
[12:56:17] [PASSED] 28 VFs
[12:56:17] [PASSED] 29 VFs
[12:56:17] [PASSED] 30 VFs
[12:56:17] [PASSED] 31 VFs
[12:56:17] [PASSED] 32 VFs
[12:56:17] [PASSED] 33 VFs
[12:56:17] [PASSED] 34 VFs
[12:56:17] [PASSED] 35 VFs
[12:56:17] [PASSED] 36 VFs
[12:56:17] [PASSED] 37 VFs
[12:56:17] [PASSED] 38 VFs
[12:56:17] [PASSED] 39 VFs
[12:56:17] [PASSED] 40 VFs
[12:56:17] [PASSED] 41 VFs
[12:56:17] [PASSED] 42 VFs
[12:56:17] [PASSED] 43 VFs
[12:56:17] [PASSED] 44 VFs
[12:56:17] [PASSED] 45 VFs
[12:56:17] [PASSED] 46 VFs
[12:56:17] [PASSED] 47 VFs
[12:56:17] [PASSED] 48 VFs
[12:56:17] [PASSED] 49 VFs
[12:56:17] [PASSED] 50 VFs
[12:56:17] [PASSED] 51 VFs
[12:56:17] [PASSED] 52 VFs
[12:56:17] [PASSED] 53 VFs
[12:56:17] [PASSED] 54 VFs
[12:56:17] [PASSED] 55 VFs
[12:56:17] [PASSED] 56 VFs
[12:56:17] [PASSED] 57 VFs
[12:56:17] [PASSED] 58 VFs
[12:56:17] [PASSED] 59 VFs
[12:56:17] [PASSED] 60 VFs
[12:56:17] [PASSED] 61 VFs
[12:56:17] [PASSED] 62 VFs
[12:56:17] [PASSED] 63 VFs
[12:56:17] ================= [PASSED] fair_doorbells ==================
[12:56:17] ======================== fair_ggtt ========================
[12:56:17] [PASSED] 1 VF
[12:56:17] [PASSED] 2 VFs
[12:56:17] [PASSED] 3 VFs
[12:56:17] [PASSED] 4 VFs
[12:56:17] [PASSED] 5 VFs
[12:56:17] [PASSED] 6 VFs
[12:56:17] [PASSED] 7 VFs
[12:56:17] [PASSED] 8 VFs
[12:56:17] [PASSED] 9 VFs
[12:56:17] [PASSED] 10 VFs
[12:56:17] [PASSED] 11 VFs
[12:56:17] [PASSED] 12 VFs
[12:56:17] [PASSED] 13 VFs
[12:56:17] [PASSED] 14 VFs
[12:56:17] [PASSED] 15 VFs
[12:56:17] [PASSED] 16 VFs
[12:56:17] [PASSED] 17 VFs
[12:56:17] [PASSED] 18 VFs
[12:56:17] [PASSED] 19 VFs
[12:56:17] [PASSED] 20 VFs
[12:56:17] [PASSED] 21 VFs
[12:56:17] [PASSED] 22 VFs
[12:56:17] [PASSED] 23 VFs
[12:56:17] [PASSED] 24 VFs
[12:56:17] [PASSED] 25 VFs
[12:56:17] [PASSED] 26 VFs
[12:56:17] [PASSED] 27 VFs
[12:56:17] [PASSED] 28 VFs
[12:56:17] [PASSED] 29 VFs
[12:56:17] [PASSED] 30 VFs
[12:56:17] [PASSED] 31 VFs
[12:56:17] [PASSED] 32 VFs
[12:56:17] [PASSED] 33 VFs
[12:56:17] [PASSED] 34 VFs
[12:56:17] [PASSED] 35 VFs
[12:56:17] [PASSED] 36 VFs
[12:56:17] [PASSED] 37 VFs
[12:56:17] [PASSED] 38 VFs
[12:56:17] [PASSED] 39 VFs
[12:56:17] [PASSED] 40 VFs
[12:56:17] [PASSED] 41 VFs
[12:56:17] [PASSED] 42 VFs
[12:56:17] [PASSED] 43 VFs
[12:56:17] [PASSED] 44 VFs
[12:56:17] [PASSED] 45 VFs
[12:56:17] [PASSED] 46 VFs
[12:56:17] [PASSED] 47 VFs
[12:56:17] [PASSED] 48 VFs
[12:56:17] [PASSED] 49 VFs
[12:56:17] [PASSED] 50 VFs
[12:56:17] [PASSED] 51 VFs
[12:56:17] [PASSED] 52 VFs
[12:56:17] [PASSED] 53 VFs
[12:56:17] [PASSED] 54 VFs
[12:56:17] [PASSED] 55 VFs
[12:56:17] [PASSED] 56 VFs
[12:56:17] [PASSED] 57 VFs
[12:56:17] [PASSED] 58 VFs
[12:56:17] [PASSED] 59 VFs
[12:56:17] [PASSED] 60 VFs
[12:56:17] [PASSED] 61 VFs
[12:56:17] [PASSED] 62 VFs
[12:56:17] [PASSED] 63 VFs
[12:56:17] ==================== [PASSED] fair_ggtt ====================
[12:56:17] ================== [PASSED] pf_gt_config ===================
[12:56:17] ===================== lmtt (1 subtest) =====================
[12:56:17] ======================== test_ops =========================
[12:56:17] [PASSED] 2-level
[12:56:17] [PASSED] multi-level
[12:56:17] ==================== [PASSED] test_ops =====================
[12:56:17] ====================== [PASSED] lmtt =======================
[12:56:17] ================= pf_service (11 subtests) =================
[12:56:17] [PASSED] pf_negotiate_any
[12:56:17] [PASSED] pf_negotiate_base_match
[12:56:17] [PASSED] pf_negotiate_base_newer
[12:56:17] [PASSED] pf_negotiate_base_next
[12:56:17] [SKIPPED] pf_negotiate_base_older
[12:56:17] [PASSED] pf_negotiate_base_prev
[12:56:17] [PASSED] pf_negotiate_latest_match
[12:56:17] [PASSED] pf_negotiate_latest_newer
[12:56:17] [PASSED] pf_negotiate_latest_next
[12:56:17] [SKIPPED] pf_negotiate_latest_older
[12:56:17] [SKIPPED] pf_negotiate_latest_prev
[12:56:17] =================== [PASSED] pf_service ====================
[12:56:17] ================= xe_guc_g2g (2 subtests) ==================
[12:56:17] ============== xe_live_guc_g2g_kunit_default ==============
[12:56:17] ========= [SKIPPED] xe_live_guc_g2g_kunit_default ==========
[12:56:17] ============== xe_live_guc_g2g_kunit_allmem ===============
[12:56:17] ========== [SKIPPED] xe_live_guc_g2g_kunit_allmem ==========
[12:56:17] =================== [SKIPPED] xe_guc_g2g ===================
[12:56:17] =================== xe_mocs (2 subtests) ===================
[12:56:17] ================ xe_live_mocs_kernel_kunit ================
[12:56:17] =========== [SKIPPED] xe_live_mocs_kernel_kunit ============
[12:56:17] ================ xe_live_mocs_reset_kunit =================
[12:56:17] ============ [SKIPPED] xe_live_mocs_reset_kunit ============
[12:56:17] ==================== [SKIPPED] xe_mocs =====================
[12:56:17] ================= xe_migrate (2 subtests) ==================
[12:56:17] ================= xe_migrate_sanity_kunit =================
[12:56:17] ============ [SKIPPED] xe_migrate_sanity_kunit =============
[12:56:17] ================== xe_validate_ccs_kunit ==================
[12:56:17] ============= [SKIPPED] xe_validate_ccs_kunit ==============
[12:56:17] =================== [SKIPPED] xe_migrate ===================
[12:56:17] ================== xe_dma_buf (1 subtest) ==================
[12:56:17] ==================== xe_dma_buf_kunit =====================
[12:56:17] ================ [SKIPPED] xe_dma_buf_kunit ================
[12:56:17] =================== [SKIPPED] xe_dma_buf ===================
[12:56:17] ================= xe_bo_shrink (1 subtest) =================
[12:56:17] =================== xe_bo_shrink_kunit ====================
[12:56:17] =============== [SKIPPED] xe_bo_shrink_kunit ===============
[12:56:17] ================== [SKIPPED] xe_bo_shrink ==================
[12:56:17] ==================== xe_bo (2 subtests) ====================
[12:56:17] ================== xe_ccs_migrate_kunit ===================
[12:56:17] ============== [SKIPPED] xe_ccs_migrate_kunit ==============
[12:56:17] ==================== xe_bo_evict_kunit ====================
[12:56:17] =============== [SKIPPED] xe_bo_evict_kunit ================
[12:56:17] ===================== [SKIPPED] xe_bo ======================
[12:56:17] ==================== args (13 subtests) ====================
[12:56:17] [PASSED] count_args_test
[12:56:17] [PASSED] call_args_example
[12:56:17] [PASSED] call_args_test
[12:56:17] [PASSED] drop_first_arg_example
[12:56:17] [PASSED] drop_first_arg_test
[12:56:17] [PASSED] first_arg_example
[12:56:17] [PASSED] first_arg_test
[12:56:17] [PASSED] last_arg_example
[12:56:17] [PASSED] last_arg_test
[12:56:17] [PASSED] pick_arg_example
[12:56:17] [PASSED] if_args_example
[12:56:17] [PASSED] if_args_test
[12:56:17] [PASSED] sep_comma_example
[12:56:17] ====================== [PASSED] args =======================
[12:56:17] =================== xe_pci (3 subtests) ====================
[12:56:17] ==================== check_graphics_ip ====================
[12:56:17] [PASSED] 12.00 Xe_LP
[12:56:17] [PASSED] 12.10 Xe_LP+
[12:56:17] [PASSED] 12.55 Xe_HPG
[12:56:17] [PASSED] 12.60 Xe_HPC
[12:56:17] [PASSED] 12.70 Xe_LPG
[12:56:17] [PASSED] 12.71 Xe_LPG
[12:56:17] [PASSED] 12.74 Xe_LPG+
[12:56:17] [PASSED] 20.01 Xe2_HPG
[12:56:17] [PASSED] 20.02 Xe2_HPG
[12:56:17] [PASSED] 20.04 Xe2_LPG
[12:56:17] [PASSED] 30.00 Xe3_LPG
[12:56:17] [PASSED] 30.01 Xe3_LPG
[12:56:17] [PASSED] 30.03 Xe3_LPG
[12:56:17] [PASSED] 30.04 Xe3_LPG
[12:56:17] [PASSED] 30.05 Xe3_LPG
[12:56:17] [PASSED] 35.11 Xe3p_XPC
[12:56:17] ================ [PASSED] check_graphics_ip ================
[12:56:17] ===================== check_media_ip ======================
[12:56:17] [PASSED] 12.00 Xe_M
[12:56:17] [PASSED] 12.55 Xe_HPM
[12:56:17] [PASSED] 13.00 Xe_LPM+
[12:56:17] [PASSED] 13.01 Xe2_HPM
[12:56:17] [PASSED] 20.00 Xe2_LPM
[12:56:17] [PASSED] 30.00 Xe3_LPM
[12:56:17] [PASSED] 30.02 Xe3_LPM
[12:56:17] [PASSED] 35.00 Xe3p_LPM
[12:56:17] [PASSED] 35.03 Xe3p_HPM
[12:56:17] ================= [PASSED] check_media_ip ==================
[12:56:17] =================== check_platform_desc ===================
[12:56:17] [PASSED] 0x9A60 (TIGERLAKE)
[12:56:17] [PASSED] 0x9A68 (TIGERLAKE)
[12:56:17] [PASSED] 0x9A70 (TIGERLAKE)
[12:56:17] [PASSED] 0x9A40 (TIGERLAKE)
[12:56:17] [PASSED] 0x9A49 (TIGERLAKE)
[12:56:17] [PASSED] 0x9A59 (TIGERLAKE)
[12:56:17] [PASSED] 0x9A78 (TIGERLAKE)
[12:56:17] [PASSED] 0x9AC0 (TIGERLAKE)
[12:56:17] [PASSED] 0x9AC9 (TIGERLAKE)
[12:56:17] [PASSED] 0x9AD9 (TIGERLAKE)
[12:56:17] [PASSED] 0x9AF8 (TIGERLAKE)
[12:56:17] [PASSED] 0x4C80 (ROCKETLAKE)
[12:56:17] [PASSED] 0x4C8A (ROCKETLAKE)
[12:56:17] [PASSED] 0x4C8B (ROCKETLAKE)
[12:56:17] [PASSED] 0x4C8C (ROCKETLAKE)
[12:56:17] [PASSED] 0x4C90 (ROCKETLAKE)
[12:56:17] [PASSED] 0x4C9A (ROCKETLAKE)
[12:56:17] [PASSED] 0x4680 (ALDERLAKE_S)
[12:56:17] [PASSED] 0x4682 (ALDERLAKE_S)
[12:56:17] [PASSED] 0x4688 (ALDERLAKE_S)
[12:56:17] [PASSED] 0x468A (ALDERLAKE_S)
[12:56:17] [PASSED] 0x468B (ALDERLAKE_S)
[12:56:17] [PASSED] 0x4690 (ALDERLAKE_S)
[12:56:17] [PASSED] 0x4692 (ALDERLAKE_S)
[12:56:17] [PASSED] 0x4693 (ALDERLAKE_S)
[12:56:17] [PASSED] 0x46A0 (ALDERLAKE_P)
[12:56:17] [PASSED] 0x46A1 (ALDERLAKE_P)
[12:56:17] [PASSED] 0x46A2 (ALDERLAKE_P)
[12:56:17] [PASSED] 0x46A3 (ALDERLAKE_P)
[12:56:17] [PASSED] 0x46A6 (ALDERLAKE_P)
[12:56:17] [PASSED] 0x46A8 (ALDERLAKE_P)
[12:56:17] [PASSED] 0x46AA (ALDERLAKE_P)
[12:56:17] [PASSED] 0x462A (ALDERLAKE_P)
[12:56:17] [PASSED] 0x4626 (ALDERLAKE_P)
[12:56:17] [PASSED] 0x4628 (ALDERLAKE_P)
stty: 'standard input': Inappropriate ioctl for device
[12:56:17] [PASSED] 0x46B0 (ALDERLAKE_P)
[12:56:17] [PASSED] 0x46B1 (ALDERLAKE_P)
[12:56:17] [PASSED] 0x46B2 (ALDERLAKE_P)
[12:56:17] [PASSED] 0x46B3 (ALDERLAKE_P)
[12:56:17] [PASSED] 0x46C0 (ALDERLAKE_P)
[12:56:17] [PASSED] 0x46C1 (ALDERLAKE_P)
[12:56:17] [PASSED] 0x46C2 (ALDERLAKE_P)
[12:56:17] [PASSED] 0x46C3 (ALDERLAKE_P)
[12:56:17] [PASSED] 0x46D0 (ALDERLAKE_N)
[12:56:17] [PASSED] 0x46D1 (ALDERLAKE_N)
[12:56:17] [PASSED] 0x46D2 (ALDERLAKE_N)
[12:56:17] [PASSED] 0x46D3 (ALDERLAKE_N)
[12:56:17] [PASSED] 0x46D4 (ALDERLAKE_N)
[12:56:17] [PASSED] 0xA721 (ALDERLAKE_P)
[12:56:17] [PASSED] 0xA7A1 (ALDERLAKE_P)
[12:56:17] [PASSED] 0xA7A9 (ALDERLAKE_P)
[12:56:17] [PASSED] 0xA7AC (ALDERLAKE_P)
[12:56:17] [PASSED] 0xA7AD (ALDERLAKE_P)
[12:56:17] [PASSED] 0xA720 (ALDERLAKE_P)
[12:56:17] [PASSED] 0xA7A0 (ALDERLAKE_P)
[12:56:17] [PASSED] 0xA7A8 (ALDERLAKE_P)
[12:56:17] [PASSED] 0xA7AA (ALDERLAKE_P)
[12:56:17] [PASSED] 0xA7AB (ALDERLAKE_P)
[12:56:17] [PASSED] 0xA780 (ALDERLAKE_S)
[12:56:17] [PASSED] 0xA781 (ALDERLAKE_S)
[12:56:17] [PASSED] 0xA782 (ALDERLAKE_S)
[12:56:17] [PASSED] 0xA783 (ALDERLAKE_S)
[12:56:17] [PASSED] 0xA788 (ALDERLAKE_S)
[12:56:17] [PASSED] 0xA789 (ALDERLAKE_S)
[12:56:17] [PASSED] 0xA78A (ALDERLAKE_S)
[12:56:17] [PASSED] 0xA78B (ALDERLAKE_S)
[12:56:17] [PASSED] 0x4905 (DG1)
[12:56:17] [PASSED] 0x4906 (DG1)
[12:56:17] [PASSED] 0x4907 (DG1)
[12:56:17] [PASSED] 0x4908 (DG1)
[12:56:17] [PASSED] 0x4909 (DG1)
[12:56:17] [PASSED] 0x56C0 (DG2)
[12:56:17] [PASSED] 0x56C2 (DG2)
[12:56:17] [PASSED] 0x56C1 (DG2)
[12:56:17] [PASSED] 0x7D51 (METEORLAKE)
[12:56:17] [PASSED] 0x7DD1 (METEORLAKE)
[12:56:17] [PASSED] 0x7D41 (METEORLAKE)
[12:56:17] [PASSED] 0x7D67 (METEORLAKE)
[12:56:17] [PASSED] 0xB640 (METEORLAKE)
[12:56:17] [PASSED] 0x56A0 (DG2)
[12:56:17] [PASSED] 0x56A1 (DG2)
[12:56:17] [PASSED] 0x56A2 (DG2)
[12:56:17] [PASSED] 0x56BE (DG2)
[12:56:17] [PASSED] 0x56BF (DG2)
[12:56:17] [PASSED] 0x5690 (DG2)
[12:56:17] [PASSED] 0x5691 (DG2)
[12:56:17] [PASSED] 0x5692 (DG2)
[12:56:17] [PASSED] 0x56A5 (DG2)
[12:56:17] [PASSED] 0x56A6 (DG2)
[12:56:17] [PASSED] 0x56B0 (DG2)
[12:56:17] [PASSED] 0x56B1 (DG2)
[12:56:17] [PASSED] 0x56BA (DG2)
[12:56:17] [PASSED] 0x56BB (DG2)
[12:56:17] [PASSED] 0x56BC (DG2)
[12:56:17] [PASSED] 0x56BD (DG2)
[12:56:17] [PASSED] 0x5693 (DG2)
[12:56:17] [PASSED] 0x5694 (DG2)
[12:56:17] [PASSED] 0x5695 (DG2)
[12:56:17] [PASSED] 0x56A3 (DG2)
[12:56:17] [PASSED] 0x56A4 (DG2)
[12:56:17] [PASSED] 0x56B2 (DG2)
[12:56:17] [PASSED] 0x56B3 (DG2)
[12:56:17] [PASSED] 0x5696 (DG2)
[12:56:17] [PASSED] 0x5697 (DG2)
[12:56:17] [PASSED] 0xB69 (PVC)
[12:56:17] [PASSED] 0xB6E (PVC)
[12:56:17] [PASSED] 0xBD4 (PVC)
[12:56:17] [PASSED] 0xBD5 (PVC)
[12:56:17] [PASSED] 0xBD6 (PVC)
[12:56:17] [PASSED] 0xBD7 (PVC)
[12:56:17] [PASSED] 0xBD8 (PVC)
[12:56:17] [PASSED] 0xBD9 (PVC)
[12:56:17] [PASSED] 0xBDA (PVC)
[12:56:17] [PASSED] 0xBDB (PVC)
[12:56:17] [PASSED] 0xBE0 (PVC)
[12:56:17] [PASSED] 0xBE1 (PVC)
[12:56:17] [PASSED] 0xBE5 (PVC)
[12:56:17] [PASSED] 0x7D40 (METEORLAKE)
[12:56:17] [PASSED] 0x7D45 (METEORLAKE)
[12:56:17] [PASSED] 0x7D55 (METEORLAKE)
[12:56:17] [PASSED] 0x7D60 (METEORLAKE)
[12:56:17] [PASSED] 0x7DD5 (METEORLAKE)
[12:56:17] [PASSED] 0x6420 (LUNARLAKE)
[12:56:17] [PASSED] 0x64A0 (LUNARLAKE)
[12:56:17] [PASSED] 0x64B0 (LUNARLAKE)
[12:56:17] [PASSED] 0xE202 (BATTLEMAGE)
[12:56:17] [PASSED] 0xE209 (BATTLEMAGE)
[12:56:17] [PASSED] 0xE20B (BATTLEMAGE)
[12:56:17] [PASSED] 0xE20C (BATTLEMAGE)
[12:56:17] [PASSED] 0xE20D (BATTLEMAGE)
[12:56:17] [PASSED] 0xE210 (BATTLEMAGE)
[12:56:17] [PASSED] 0xE211 (BATTLEMAGE)
[12:56:17] [PASSED] 0xE212 (BATTLEMAGE)
[12:56:17] [PASSED] 0xE216 (BATTLEMAGE)
[12:56:17] [PASSED] 0xE220 (BATTLEMAGE)
[12:56:17] [PASSED] 0xE221 (BATTLEMAGE)
[12:56:17] [PASSED] 0xE222 (BATTLEMAGE)
[12:56:17] [PASSED] 0xE223 (BATTLEMAGE)
[12:56:17] [PASSED] 0xB080 (PANTHERLAKE)
[12:56:17] [PASSED] 0xB081 (PANTHERLAKE)
[12:56:17] [PASSED] 0xB082 (PANTHERLAKE)
[12:56:17] [PASSED] 0xB083 (PANTHERLAKE)
[12:56:17] [PASSED] 0xB084 (PANTHERLAKE)
[12:56:17] [PASSED] 0xB085 (PANTHERLAKE)
[12:56:17] [PASSED] 0xB086 (PANTHERLAKE)
[12:56:17] [PASSED] 0xB087 (PANTHERLAKE)
[12:56:17] [PASSED] 0xB08F (PANTHERLAKE)
[12:56:17] [PASSED] 0xB090 (PANTHERLAKE)
[12:56:17] [PASSED] 0xB0A0 (PANTHERLAKE)
[12:56:17] [PASSED] 0xB0B0 (PANTHERLAKE)
[12:56:17] [PASSED] 0xFD80 (PANTHERLAKE)
[12:56:17] [PASSED] 0xFD81 (PANTHERLAKE)
[12:56:17] [PASSED] 0xD740 (NOVALAKE_S)
[12:56:17] [PASSED] 0xD741 (NOVALAKE_S)
[12:56:17] [PASSED] 0xD742 (NOVALAKE_S)
[12:56:17] [PASSED] 0xD743 (NOVALAKE_S)
[12:56:17] [PASSED] 0xD744 (NOVALAKE_S)
[12:56:17] [PASSED] 0xD745 (NOVALAKE_S)
[12:56:17] [PASSED] 0x674C (CRESCENTISLAND)
[12:56:17] =============== [PASSED] check_platform_desc ===============
[12:56:17] ===================== [PASSED] xe_pci ======================
[12:56:17] =================== xe_rtp (2 subtests) ====================
[12:56:17] =============== xe_rtp_process_to_sr_tests ================
[12:56:17] [PASSED] coalesce-same-reg
[12:56:17] [PASSED] no-match-no-add
[12:56:17] [PASSED] match-or
[12:56:17] [PASSED] match-or-xfail
[12:56:17] [PASSED] no-match-no-add-multiple-rules
[12:56:17] [PASSED] two-regs-two-entries
[12:56:17] [PASSED] clr-one-set-other
[12:56:17] [PASSED] set-field
[12:56:17] [PASSED] conflict-duplicate
[12:56:17] [PASSED] conflict-not-disjoint
[12:56:17] [PASSED] conflict-reg-type
[12:56:17] =========== [PASSED] xe_rtp_process_to_sr_tests ============
[12:56:17] ================== xe_rtp_process_tests ===================
[12:56:17] [PASSED] active1
[12:56:17] [PASSED] active2
[12:56:17] [PASSED] active-inactive
[12:56:17] [PASSED] inactive-active
[12:56:17] [PASSED] inactive-1st_or_active-inactive
[12:56:17] [PASSED] inactive-2nd_or_active-inactive
[12:56:17] [PASSED] inactive-last_or_active-inactive
[12:56:17] [PASSED] inactive-no_or_active-inactive
[12:56:17] ============== [PASSED] xe_rtp_process_tests ===============
[12:56:17] ===================== [PASSED] xe_rtp ======================
[12:56:17] ==================== xe_wa (1 subtest) =====================
[12:56:17] ======================== xe_wa_gt =========================
[12:56:17] [PASSED] TIGERLAKE B0
[12:56:17] [PASSED] DG1 A0
[12:56:17] [PASSED] DG1 B0
[12:56:17] [PASSED] ALDERLAKE_S A0
[12:56:17] [PASSED] ALDERLAKE_S B0
[12:56:17] [PASSED] ALDERLAKE_S C0
[12:56:17] [PASSED] ALDERLAKE_S D0
[12:56:17] [PASSED] ALDERLAKE_P A0
[12:56:17] [PASSED] ALDERLAKE_P B0
[12:56:17] [PASSED] ALDERLAKE_P C0
[12:56:17] [PASSED] ALDERLAKE_S RPLS D0
[12:56:17] [PASSED] ALDERLAKE_P RPLU E0
[12:56:17] [PASSED] DG2 G10 C0
[12:56:17] [PASSED] DG2 G11 B1
[12:56:17] [PASSED] DG2 G12 A1
[12:56:17] [PASSED] METEORLAKE 12.70(Xe_LPG) A0 13.00(Xe_LPM+) A0
[12:56:17] [PASSED] METEORLAKE 12.71(Xe_LPG) A0 13.00(Xe_LPM+) A0
[12:56:17] [PASSED] METEORLAKE 12.74(Xe_LPG+) A0 13.00(Xe_LPM+) A0
[12:56:17] [PASSED] LUNARLAKE 20.04(Xe2_LPG) A0 20.00(Xe2_LPM) A0
[12:56:17] [PASSED] LUNARLAKE 20.04(Xe2_LPG) B0 20.00(Xe2_LPM) A0
[12:56:17] [PASSED] BATTLEMAGE 20.01(Xe2_HPG) A0 13.01(Xe2_HPM) A1
[12:56:17] [PASSED] PANTHERLAKE 30.00(Xe3_LPG) A0 30.00(Xe3_LPM) A0
[12:56:17] ==================== [PASSED] xe_wa_gt =====================
[12:56:17] ====================== [PASSED] xe_wa ======================
[12:56:17] ============================================================
[12:56:17] Testing complete. Ran 512 tests: passed: 494, skipped: 18
[12:56:17] Elapsed time: 36.623s total, 4.264s configuring, 31.842s building, 0.469s running
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/tests/.kunitconfig
[12:56:18] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[12:56:19] 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
[12:56:45] Starting KUnit Kernel (1/1)...
[12:56:45] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[12:56:45] ============ drm_test_pick_cmdline (2 subtests) ============
[12:56:45] [PASSED] drm_test_pick_cmdline_res_1920_1080_60
[12:56:45] =============== drm_test_pick_cmdline_named ===============
[12:56:45] [PASSED] NTSC
[12:56:45] [PASSED] NTSC-J
[12:56:45] [PASSED] PAL
[12:56:45] [PASSED] PAL-M
[12:56:45] =========== [PASSED] drm_test_pick_cmdline_named ===========
[12:56:45] ============== [PASSED] drm_test_pick_cmdline ==============
[12:56:45] == drm_test_atomic_get_connector_for_encoder (1 subtest) ===
[12:56:45] [PASSED] drm_test_drm_atomic_get_connector_for_encoder
[12:56:45] ==== [PASSED] drm_test_atomic_get_connector_for_encoder ====
[12:56:45] =========== drm_validate_clone_mode (2 subtests) ===========
[12:56:45] ============== drm_test_check_in_clone_mode ===============
[12:56:45] [PASSED] in_clone_mode
[12:56:45] [PASSED] not_in_clone_mode
[12:56:45] ========== [PASSED] drm_test_check_in_clone_mode ===========
[12:56:45] =============== drm_test_check_valid_clones ===============
[12:56:45] [PASSED] not_in_clone_mode
[12:56:45] [PASSED] valid_clone
[12:56:45] [PASSED] invalid_clone
[12:56:45] =========== [PASSED] drm_test_check_valid_clones ===========
[12:56:45] ============= [PASSED] drm_validate_clone_mode =============
[12:56:45] ============= drm_validate_modeset (1 subtest) =============
[12:56:45] [PASSED] drm_test_check_connector_changed_modeset
[12:56:45] ============== [PASSED] drm_validate_modeset ===============
[12:56:45] ====== drm_test_bridge_get_current_state (2 subtests) ======
[12:56:45] [PASSED] drm_test_drm_bridge_get_current_state_atomic
[12:56:45] [PASSED] drm_test_drm_bridge_get_current_state_legacy
[12:56:45] ======== [PASSED] drm_test_bridge_get_current_state ========
[12:56:45] ====== drm_test_bridge_helper_reset_crtc (3 subtests) ======
[12:56:45] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic
[12:56:45] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic_disabled
[12:56:45] [PASSED] drm_test_drm_bridge_helper_reset_crtc_legacy
[12:56:45] ======== [PASSED] drm_test_bridge_helper_reset_crtc ========
[12:56:45] ============== drm_bridge_alloc (2 subtests) ===============
[12:56:45] [PASSED] drm_test_drm_bridge_alloc_basic
[12:56:45] [PASSED] drm_test_drm_bridge_alloc_get_put
[12:56:45] ================ [PASSED] drm_bridge_alloc =================
[12:56:45] ============= drm_cmdline_parser (40 subtests) =============
[12:56:45] [PASSED] drm_test_cmdline_force_d_only
[12:56:45] [PASSED] drm_test_cmdline_force_D_only_dvi
[12:56:45] [PASSED] drm_test_cmdline_force_D_only_hdmi
[12:56:45] [PASSED] drm_test_cmdline_force_D_only_not_digital
[12:56:45] [PASSED] drm_test_cmdline_force_e_only
[12:56:45] [PASSED] drm_test_cmdline_res
[12:56:45] [PASSED] drm_test_cmdline_res_vesa
[12:56:45] [PASSED] drm_test_cmdline_res_vesa_rblank
[12:56:45] [PASSED] drm_test_cmdline_res_rblank
[12:56:45] [PASSED] drm_test_cmdline_res_bpp
[12:56:45] [PASSED] drm_test_cmdline_res_refresh
[12:56:45] [PASSED] drm_test_cmdline_res_bpp_refresh
[12:56:45] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced
[12:56:45] [PASSED] drm_test_cmdline_res_bpp_refresh_margins
[12:56:45] [PASSED] drm_test_cmdline_res_bpp_refresh_force_off
[12:56:45] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on
[12:56:45] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_analog
[12:56:45] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_digital
[12:56:45] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced_margins_force_on
[12:56:45] [PASSED] drm_test_cmdline_res_margins_force_on
[12:56:45] [PASSED] drm_test_cmdline_res_vesa_margins
[12:56:45] [PASSED] drm_test_cmdline_name
[12:56:45] [PASSED] drm_test_cmdline_name_bpp
[12:56:45] [PASSED] drm_test_cmdline_name_option
[12:56:45] [PASSED] drm_test_cmdline_name_bpp_option
[12:56:45] [PASSED] drm_test_cmdline_rotate_0
[12:56:45] [PASSED] drm_test_cmdline_rotate_90
[12:56:45] [PASSED] drm_test_cmdline_rotate_180
[12:56:45] [PASSED] drm_test_cmdline_rotate_270
[12:56:45] [PASSED] drm_test_cmdline_hmirror
[12:56:45] [PASSED] drm_test_cmdline_vmirror
[12:56:45] [PASSED] drm_test_cmdline_margin_options
[12:56:45] [PASSED] drm_test_cmdline_multiple_options
[12:56:45] [PASSED] drm_test_cmdline_bpp_extra_and_option
[12:56:45] [PASSED] drm_test_cmdline_extra_and_option
[12:56:45] [PASSED] drm_test_cmdline_freestanding_options
[12:56:45] [PASSED] drm_test_cmdline_freestanding_force_e_and_options
[12:56:45] [PASSED] drm_test_cmdline_panel_orientation
[12:56:45] ================ drm_test_cmdline_invalid =================
[12:56:45] [PASSED] margin_only
[12:56:45] [PASSED] interlace_only
[12:56:45] [PASSED] res_missing_x
[12:56:45] [PASSED] res_missing_y
[12:56:45] [PASSED] res_bad_y
[12:56:45] [PASSED] res_missing_y_bpp
[12:56:45] [PASSED] res_bad_bpp
[12:56:45] [PASSED] res_bad_refresh
[12:56:45] [PASSED] res_bpp_refresh_force_on_off
[12:56:45] [PASSED] res_invalid_mode
[12:56:45] [PASSED] res_bpp_wrong_place_mode
[12:56:45] [PASSED] name_bpp_refresh
[12:56:45] [PASSED] name_refresh
[12:56:45] [PASSED] name_refresh_wrong_mode
[12:56:45] [PASSED] name_refresh_invalid_mode
[12:56:45] [PASSED] rotate_multiple
[12:56:45] [PASSED] rotate_invalid_val
[12:56:45] [PASSED] rotate_truncated
[12:56:45] [PASSED] invalid_option
[12:56:45] [PASSED] invalid_tv_option
[12:56:45] [PASSED] truncated_tv_option
[12:56:45] ============ [PASSED] drm_test_cmdline_invalid =============
[12:56:45] =============== drm_test_cmdline_tv_options ===============
[12:56:45] [PASSED] NTSC
[12:56:45] [PASSED] NTSC_443
[12:56:45] [PASSED] NTSC_J
[12:56:45] [PASSED] PAL
[12:56:45] [PASSED] PAL_M
[12:56:45] [PASSED] PAL_N
[12:56:45] [PASSED] SECAM
[12:56:45] [PASSED] MONO_525
[12:56:45] [PASSED] MONO_625
[12:56:45] =========== [PASSED] drm_test_cmdline_tv_options ===========
[12:56:45] =============== [PASSED] drm_cmdline_parser ================
[12:56:45] ========== drmm_connector_hdmi_init (20 subtests) ==========
[12:56:45] [PASSED] drm_test_connector_hdmi_init_valid
[12:56:45] [PASSED] drm_test_connector_hdmi_init_bpc_8
[12:56:45] [PASSED] drm_test_connector_hdmi_init_bpc_10
[12:56:45] [PASSED] drm_test_connector_hdmi_init_bpc_12
[12:56:45] [PASSED] drm_test_connector_hdmi_init_bpc_invalid
[12:56:45] [PASSED] drm_test_connector_hdmi_init_bpc_null
[12:56:45] [PASSED] drm_test_connector_hdmi_init_formats_empty
[12:56:45] [PASSED] drm_test_connector_hdmi_init_formats_no_rgb
[12:56:45] === drm_test_connector_hdmi_init_formats_yuv420_allowed ===
[12:56:45] [PASSED] supported_formats=0x9 yuv420_allowed=1
[12:56:45] [PASSED] supported_formats=0x9 yuv420_allowed=0
[12:56:45] [PASSED] supported_formats=0x3 yuv420_allowed=1
[12:56:45] [PASSED] supported_formats=0x3 yuv420_allowed=0
[12:56:45] === [PASSED] drm_test_connector_hdmi_init_formats_yuv420_allowed ===
[12:56:45] [PASSED] drm_test_connector_hdmi_init_null_ddc
[12:56:45] [PASSED] drm_test_connector_hdmi_init_null_product
[12:56:45] [PASSED] drm_test_connector_hdmi_init_null_vendor
[12:56:45] [PASSED] drm_test_connector_hdmi_init_product_length_exact
[12:56:45] [PASSED] drm_test_connector_hdmi_init_product_length_too_long
[12:56:45] [PASSED] drm_test_connector_hdmi_init_product_valid
[12:56:45] [PASSED] drm_test_connector_hdmi_init_vendor_length_exact
[12:56:45] [PASSED] drm_test_connector_hdmi_init_vendor_length_too_long
[12:56:45] [PASSED] drm_test_connector_hdmi_init_vendor_valid
[12:56:45] ========= drm_test_connector_hdmi_init_type_valid =========
[12:56:45] [PASSED] HDMI-A
[12:56:45] [PASSED] HDMI-B
[12:56:45] ===== [PASSED] drm_test_connector_hdmi_init_type_valid =====
[12:56:45] ======== drm_test_connector_hdmi_init_type_invalid ========
[12:56:45] [PASSED] Unknown
[12:56:45] [PASSED] VGA
[12:56:45] [PASSED] DVI-I
[12:56:45] [PASSED] DVI-D
[12:56:45] [PASSED] DVI-A
[12:56:45] [PASSED] Composite
[12:56:45] [PASSED] SVIDEO
[12:56:45] [PASSED] LVDS
[12:56:45] [PASSED] Component
[12:56:45] [PASSED] DIN
[12:56:45] [PASSED] DP
[12:56:45] [PASSED] TV
[12:56:45] [PASSED] eDP
[12:56:45] [PASSED] Virtual
[12:56:45] [PASSED] DSI
[12:56:45] [PASSED] DPI
[12:56:45] [PASSED] Writeback
[12:56:45] [PASSED] SPI
[12:56:45] [PASSED] USB
[12:56:45] ==== [PASSED] drm_test_connector_hdmi_init_type_invalid ====
[12:56:45] ============ [PASSED] drmm_connector_hdmi_init =============
[12:56:45] ============= drmm_connector_init (3 subtests) =============
[12:56:45] [PASSED] drm_test_drmm_connector_init
[12:56:45] [PASSED] drm_test_drmm_connector_init_null_ddc
[12:56:45] ========= drm_test_drmm_connector_init_type_valid =========
[12:56:45] [PASSED] Unknown
[12:56:45] [PASSED] VGA
[12:56:45] [PASSED] DVI-I
[12:56:45] [PASSED] DVI-D
[12:56:45] [PASSED] DVI-A
[12:56:45] [PASSED] Composite
[12:56:45] [PASSED] SVIDEO
[12:56:45] [PASSED] LVDS
[12:56:45] [PASSED] Component
[12:56:45] [PASSED] DIN
[12:56:45] [PASSED] DP
[12:56:45] [PASSED] HDMI-A
[12:56:45] [PASSED] HDMI-B
[12:56:45] [PASSED] TV
[12:56:45] [PASSED] eDP
[12:56:45] [PASSED] Virtual
[12:56:45] [PASSED] DSI
[12:56:45] [PASSED] DPI
[12:56:45] [PASSED] Writeback
[12:56:45] [PASSED] SPI
[12:56:45] [PASSED] USB
[12:56:45] ===== [PASSED] drm_test_drmm_connector_init_type_valid =====
[12:56:45] =============== [PASSED] drmm_connector_init ===============
[12:56:45] ========= drm_connector_dynamic_init (6 subtests) ==========
[12:56:45] [PASSED] drm_test_drm_connector_dynamic_init
[12:56:45] [PASSED] drm_test_drm_connector_dynamic_init_null_ddc
[12:56:45] [PASSED] drm_test_drm_connector_dynamic_init_not_added
[12:56:45] [PASSED] drm_test_drm_connector_dynamic_init_properties
[12:56:45] ===== drm_test_drm_connector_dynamic_init_type_valid ======
[12:56:45] [PASSED] Unknown
[12:56:45] [PASSED] VGA
[12:56:45] [PASSED] DVI-I
[12:56:45] [PASSED] DVI-D
[12:56:45] [PASSED] DVI-A
[12:56:45] [PASSED] Composite
[12:56:45] [PASSED] SVIDEO
[12:56:45] [PASSED] LVDS
[12:56:45] [PASSED] Component
[12:56:45] [PASSED] DIN
[12:56:45] [PASSED] DP
[12:56:45] [PASSED] HDMI-A
[12:56:45] [PASSED] HDMI-B
[12:56:45] [PASSED] TV
[12:56:45] [PASSED] eDP
[12:56:45] [PASSED] Virtual
[12:56:45] [PASSED] DSI
[12:56:45] [PASSED] DPI
[12:56:45] [PASSED] Writeback
[12:56:45] [PASSED] SPI
[12:56:45] [PASSED] USB
[12:56:45] = [PASSED] drm_test_drm_connector_dynamic_init_type_valid ==
[12:56:45] ======== drm_test_drm_connector_dynamic_init_name =========
[12:56:45] [PASSED] Unknown
[12:56:45] [PASSED] VGA
[12:56:45] [PASSED] DVI-I
[12:56:45] [PASSED] DVI-D
[12:56:45] [PASSED] DVI-A
[12:56:45] [PASSED] Composite
[12:56:45] [PASSED] SVIDEO
[12:56:45] [PASSED] LVDS
[12:56:45] [PASSED] Component
[12:56:45] [PASSED] DIN
[12:56:45] [PASSED] DP
[12:56:45] [PASSED] HDMI-A
[12:56:45] [PASSED] HDMI-B
[12:56:45] [PASSED] TV
[12:56:45] [PASSED] eDP
[12:56:45] [PASSED] Virtual
[12:56:45] [PASSED] DSI
[12:56:45] [PASSED] DPI
[12:56:45] [PASSED] Writeback
[12:56:45] [PASSED] SPI
[12:56:45] [PASSED] USB
[12:56:45] ==== [PASSED] drm_test_drm_connector_dynamic_init_name =====
[12:56:45] =========== [PASSED] drm_connector_dynamic_init ============
[12:56:45] ==== drm_connector_dynamic_register_early (4 subtests) =====
[12:56:45] [PASSED] drm_test_drm_connector_dynamic_register_early_on_list
[12:56:45] [PASSED] drm_test_drm_connector_dynamic_register_early_defer
[12:56:45] [PASSED] drm_test_drm_connector_dynamic_register_early_no_init
[12:56:45] [PASSED] drm_test_drm_connector_dynamic_register_early_no_mode_object
[12:56:45] ====== [PASSED] drm_connector_dynamic_register_early =======
[12:56:45] ======= drm_connector_dynamic_register (7 subtests) ========
[12:56:45] [PASSED] drm_test_drm_connector_dynamic_register_on_list
[12:56:45] [PASSED] drm_test_drm_connector_dynamic_register_no_defer
[12:56:45] [PASSED] drm_test_drm_connector_dynamic_register_no_init
[12:56:45] [PASSED] drm_test_drm_connector_dynamic_register_mode_object
[12:56:45] [PASSED] drm_test_drm_connector_dynamic_register_sysfs
[12:56:45] [PASSED] drm_test_drm_connector_dynamic_register_sysfs_name
[12:56:45] [PASSED] drm_test_drm_connector_dynamic_register_debugfs
[12:56:45] ========= [PASSED] drm_connector_dynamic_register ==========
[12:56:45] = drm_connector_attach_broadcast_rgb_property (2 subtests) =
[12:56:45] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property
[12:56:45] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property_hdmi_connector
[12:56:45] === [PASSED] drm_connector_attach_broadcast_rgb_property ===
[12:56:45] ========== drm_get_tv_mode_from_name (2 subtests) ==========
[12:56:45] ========== drm_test_get_tv_mode_from_name_valid ===========
[12:56:45] [PASSED] NTSC
[12:56:45] [PASSED] NTSC-443
[12:56:45] [PASSED] NTSC-J
[12:56:45] [PASSED] PAL
[12:56:45] [PASSED] PAL-M
[12:56:45] [PASSED] PAL-N
[12:56:45] [PASSED] SECAM
[12:56:45] [PASSED] Mono
[12:56:45] ====== [PASSED] drm_test_get_tv_mode_from_name_valid =======
[12:56:45] [PASSED] drm_test_get_tv_mode_from_name_truncated
[12:56:45] ============ [PASSED] drm_get_tv_mode_from_name ============
[12:56:45] = drm_test_connector_hdmi_compute_mode_clock (12 subtests) =
[12:56:45] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb
[12:56:45] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc
[12:56:45] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc_vic_1
[12:56:45] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc
[12:56:45] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc_vic_1
[12:56:45] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_double
[12:56:45] = drm_test_connector_hdmi_compute_mode_clock_yuv420_valid =
[12:56:45] [PASSED] VIC 96
[12:56:45] [PASSED] VIC 97
[12:56:45] [PASSED] VIC 101
[12:56:45] [PASSED] VIC 102
[12:56:45] [PASSED] VIC 106
[12:56:45] [PASSED] VIC 107
[12:56:45] === [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_valid ===
[12:56:45] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_10_bpc
[12:56:45] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_12_bpc
[12:56:45] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_8_bpc
[12:56:45] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_10_bpc
[12:56:45] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_12_bpc
[12:56:45] === [PASSED] drm_test_connector_hdmi_compute_mode_clock ====
[12:56:45] == drm_hdmi_connector_get_broadcast_rgb_name (2 subtests) ==
[12:56:45] === drm_test_drm_hdmi_connector_get_broadcast_rgb_name ====
[12:56:45] [PASSED] Automatic
[12:56:45] [PASSED] Full
[12:56:45] [PASSED] Limited 16:235
[12:56:45] === [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name ===
[12:56:45] [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name_invalid
[12:56:45] ==== [PASSED] drm_hdmi_connector_get_broadcast_rgb_name ====
[12:56:45] == drm_hdmi_connector_get_output_format_name (2 subtests) ==
[12:56:45] === drm_test_drm_hdmi_connector_get_output_format_name ====
[12:56:45] [PASSED] RGB
[12:56:45] [PASSED] YUV 4:2:0
[12:56:45] [PASSED] YUV 4:2:2
[12:56:45] [PASSED] YUV 4:4:4
[12:56:45] === [PASSED] drm_test_drm_hdmi_connector_get_output_format_name ===
[12:56:45] [PASSED] drm_test_drm_hdmi_connector_get_output_format_name_invalid
[12:56:45] ==== [PASSED] drm_hdmi_connector_get_output_format_name ====
[12:56:45] ============= drm_damage_helper (21 subtests) ==============
[12:56:45] [PASSED] drm_test_damage_iter_no_damage
[12:56:45] [PASSED] drm_test_damage_iter_no_damage_fractional_src
[12:56:45] [PASSED] drm_test_damage_iter_no_damage_src_moved
[12:56:45] [PASSED] drm_test_damage_iter_no_damage_fractional_src_moved
[12:56:45] [PASSED] drm_test_damage_iter_no_damage_not_visible
[12:56:45] [PASSED] drm_test_damage_iter_no_damage_no_crtc
[12:56:45] [PASSED] drm_test_damage_iter_no_damage_no_fb
[12:56:45] [PASSED] drm_test_damage_iter_simple_damage
[12:56:45] [PASSED] drm_test_damage_iter_single_damage
[12:56:45] [PASSED] drm_test_damage_iter_single_damage_intersect_src
[12:56:45] [PASSED] drm_test_damage_iter_single_damage_outside_src
[12:56:45] [PASSED] drm_test_damage_iter_single_damage_fractional_src
[12:56:45] [PASSED] drm_test_damage_iter_single_damage_intersect_fractional_src
[12:56:45] [PASSED] drm_test_damage_iter_single_damage_outside_fractional_src
[12:56:45] [PASSED] drm_test_damage_iter_single_damage_src_moved
[12:56:45] [PASSED] drm_test_damage_iter_single_damage_fractional_src_moved
[12:56:45] [PASSED] drm_test_damage_iter_damage
[12:56:45] [PASSED] drm_test_damage_iter_damage_one_intersect
[12:56:45] [PASSED] drm_test_damage_iter_damage_one_outside
[12:56:45] [PASSED] drm_test_damage_iter_damage_src_moved
[12:56:45] [PASSED] drm_test_damage_iter_damage_not_visible
[12:56:45] ================ [PASSED] drm_damage_helper ================
[12:56:45] ============== drm_dp_mst_helper (3 subtests) ==============
[12:56:45] ============== drm_test_dp_mst_calc_pbn_mode ==============
[12:56:45] [PASSED] Clock 154000 BPP 30 DSC disabled
[12:56:45] [PASSED] Clock 234000 BPP 30 DSC disabled
[12:56:45] [PASSED] Clock 297000 BPP 24 DSC disabled
[12:56:45] [PASSED] Clock 332880 BPP 24 DSC enabled
[12:56:45] [PASSED] Clock 324540 BPP 24 DSC enabled
[12:56:45] ========== [PASSED] drm_test_dp_mst_calc_pbn_mode ==========
[12:56:45] ============== drm_test_dp_mst_calc_pbn_div ===============
[12:56:45] [PASSED] Link rate 2000000 lane count 4
[12:56:45] [PASSED] Link rate 2000000 lane count 2
[12:56:45] [PASSED] Link rate 2000000 lane count 1
[12:56:45] [PASSED] Link rate 1350000 lane count 4
[12:56:45] [PASSED] Link rate 1350000 lane count 2
[12:56:45] [PASSED] Link rate 1350000 lane count 1
[12:56:45] [PASSED] Link rate 1000000 lane count 4
[12:56:45] [PASSED] Link rate 1000000 lane count 2
[12:56:45] [PASSED] Link rate 1000000 lane count 1
[12:56:45] [PASSED] Link rate 810000 lane count 4
[12:56:45] [PASSED] Link rate 810000 lane count 2
[12:56:45] [PASSED] Link rate 810000 lane count 1
[12:56:45] [PASSED] Link rate 540000 lane count 4
[12:56:45] [PASSED] Link rate 540000 lane count 2
[12:56:45] [PASSED] Link rate 540000 lane count 1
[12:56:45] [PASSED] Link rate 270000 lane count 4
[12:56:45] [PASSED] Link rate 270000 lane count 2
[12:56:45] [PASSED] Link rate 270000 lane count 1
[12:56:45] [PASSED] Link rate 162000 lane count 4
[12:56:45] [PASSED] Link rate 162000 lane count 2
[12:56:45] [PASSED] Link rate 162000 lane count 1
[12:56:45] ========== [PASSED] drm_test_dp_mst_calc_pbn_div ===========
[12:56:45] ========= drm_test_dp_mst_sideband_msg_req_decode =========
[12:56:45] [PASSED] DP_ENUM_PATH_RESOURCES with port number
[12:56:45] [PASSED] DP_POWER_UP_PHY with port number
[12:56:45] [PASSED] DP_POWER_DOWN_PHY with port number
[12:56:45] [PASSED] DP_ALLOCATE_PAYLOAD with SDP stream sinks
[12:56:45] [PASSED] DP_ALLOCATE_PAYLOAD with port number
[12:56:45] [PASSED] DP_ALLOCATE_PAYLOAD with VCPI
[12:56:45] [PASSED] DP_ALLOCATE_PAYLOAD with PBN
[12:56:45] [PASSED] DP_QUERY_PAYLOAD with port number
[12:56:45] [PASSED] DP_QUERY_PAYLOAD with VCPI
[12:56:45] [PASSED] DP_REMOTE_DPCD_READ with port number
[12:56:45] [PASSED] DP_REMOTE_DPCD_READ with DPCD address
[12:56:45] [PASSED] DP_REMOTE_DPCD_READ with max number of bytes
[12:56:45] [PASSED] DP_REMOTE_DPCD_WRITE with port number
[12:56:45] [PASSED] DP_REMOTE_DPCD_WRITE with DPCD address
[12:56:45] [PASSED] DP_REMOTE_DPCD_WRITE with data array
[12:56:45] [PASSED] DP_REMOTE_I2C_READ with port number
[12:56:45] [PASSED] DP_REMOTE_I2C_READ with I2C device ID
[12:56:45] [PASSED] DP_REMOTE_I2C_READ with transactions array
[12:56:45] [PASSED] DP_REMOTE_I2C_WRITE with port number
[12:56:45] [PASSED] DP_REMOTE_I2C_WRITE with I2C device ID
[12:56:45] [PASSED] DP_REMOTE_I2C_WRITE with data array
[12:56:45] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream ID
[12:56:45] [PASSED] DP_QUERY_STREAM_ENC_STATUS with client ID
[12:56:45] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream event
[12:56:45] [PASSED] DP_QUERY_STREAM_ENC_STATUS with valid stream event
[12:56:45] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream behavior
[12:56:45] [PASSED] DP_QUERY_STREAM_ENC_STATUS with a valid stream behavior
[12:56:45] ===== [PASSED] drm_test_dp_mst_sideband_msg_req_decode =====
[12:56:45] ================ [PASSED] drm_dp_mst_helper ================
[12:56:45] ================== drm_exec (7 subtests) ===================
[12:56:45] [PASSED] sanitycheck
[12:56:45] [PASSED] test_lock
[12:56:45] [PASSED] test_lock_unlock
[12:56:45] [PASSED] test_duplicates
[12:56:45] [PASSED] test_prepare
[12:56:45] [PASSED] test_prepare_array
[12:56:45] [PASSED] test_multiple_loops
[12:56:45] ==================== [PASSED] drm_exec =====================
[12:56:45] =========== drm_format_helper_test (17 subtests) ===========
[12:56:45] ============== drm_test_fb_xrgb8888_to_gray8 ==============
[12:56:45] [PASSED] single_pixel_source_buffer
[12:56:45] [PASSED] single_pixel_clip_rectangle
[12:56:45] [PASSED] well_known_colors
[12:56:45] [PASSED] destination_pitch
[12:56:45] ========== [PASSED] drm_test_fb_xrgb8888_to_gray8 ==========
[12:56:45] ============= drm_test_fb_xrgb8888_to_rgb332 ==============
[12:56:45] [PASSED] single_pixel_source_buffer
[12:56:45] [PASSED] single_pixel_clip_rectangle
[12:56:45] [PASSED] well_known_colors
[12:56:45] [PASSED] destination_pitch
[12:56:45] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb332 ==========
[12:56:45] ============= drm_test_fb_xrgb8888_to_rgb565 ==============
[12:56:45] [PASSED] single_pixel_source_buffer
[12:56:45] [PASSED] single_pixel_clip_rectangle
[12:56:45] [PASSED] well_known_colors
[12:56:45] [PASSED] destination_pitch
[12:56:45] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb565 ==========
[12:56:45] ============ drm_test_fb_xrgb8888_to_xrgb1555 =============
[12:56:45] [PASSED] single_pixel_source_buffer
[12:56:45] [PASSED] single_pixel_clip_rectangle
[12:56:45] [PASSED] well_known_colors
[12:56:45] [PASSED] destination_pitch
[12:56:45] ======== [PASSED] drm_test_fb_xrgb8888_to_xrgb1555 =========
[12:56:45] ============ drm_test_fb_xrgb8888_to_argb1555 =============
[12:56:45] [PASSED] single_pixel_source_buffer
[12:56:45] [PASSED] single_pixel_clip_rectangle
[12:56:45] [PASSED] well_known_colors
[12:56:45] [PASSED] destination_pitch
[12:56:45] ======== [PASSED] drm_test_fb_xrgb8888_to_argb1555 =========
[12:56:45] ============ drm_test_fb_xrgb8888_to_rgba5551 =============
[12:56:45] [PASSED] single_pixel_source_buffer
[12:56:45] [PASSED] single_pixel_clip_rectangle
[12:56:45] [PASSED] well_known_colors
[12:56:45] [PASSED] destination_pitch
[12:56:45] ======== [PASSED] drm_test_fb_xrgb8888_to_rgba5551 =========
[12:56:45] ============= drm_test_fb_xrgb8888_to_rgb888 ==============
[12:56:45] [PASSED] single_pixel_source_buffer
[12:56:45] [PASSED] single_pixel_clip_rectangle
[12:56:45] [PASSED] well_known_colors
[12:56:45] [PASSED] destination_pitch
[12:56:45] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb888 ==========
[12:56:45] ============= drm_test_fb_xrgb8888_to_bgr888 ==============
[12:56:45] [PASSED] single_pixel_source_buffer
[12:56:45] [PASSED] single_pixel_clip_rectangle
[12:56:45] [PASSED] well_known_colors
[12:56:45] [PASSED] destination_pitch
[12:56:45] ========= [PASSED] drm_test_fb_xrgb8888_to_bgr888 ==========
[12:56:45] ============ drm_test_fb_xrgb8888_to_argb8888 =============
[12:56:45] [PASSED] single_pixel_source_buffer
[12:56:45] [PASSED] single_pixel_clip_rectangle
[12:56:45] [PASSED] well_known_colors
[12:56:45] [PASSED] destination_pitch
[12:56:45] ======== [PASSED] drm_test_fb_xrgb8888_to_argb8888 =========
[12:56:45] =========== drm_test_fb_xrgb8888_to_xrgb2101010 ===========
[12:56:45] [PASSED] single_pixel_source_buffer
[12:56:45] [PASSED] single_pixel_clip_rectangle
[12:56:45] [PASSED] well_known_colors
[12:56:45] [PASSED] destination_pitch
[12:56:45] ======= [PASSED] drm_test_fb_xrgb8888_to_xrgb2101010 =======
[12:56:45] =========== drm_test_fb_xrgb8888_to_argb2101010 ===========
[12:56:45] [PASSED] single_pixel_source_buffer
[12:56:45] [PASSED] single_pixel_clip_rectangle
[12:56:45] [PASSED] well_known_colors
[12:56:45] [PASSED] destination_pitch
[12:56:45] ======= [PASSED] drm_test_fb_xrgb8888_to_argb2101010 =======
[12:56:45] ============== drm_test_fb_xrgb8888_to_mono ===============
[12:56:45] [PASSED] single_pixel_source_buffer
[12:56:45] [PASSED] single_pixel_clip_rectangle
[12:56:45] [PASSED] well_known_colors
[12:56:45] [PASSED] destination_pitch
[12:56:45] ========== [PASSED] drm_test_fb_xrgb8888_to_mono ===========
[12:56:45] ==================== drm_test_fb_swab =====================
[12:56:45] [PASSED] single_pixel_source_buffer
[12:56:45] [PASSED] single_pixel_clip_rectangle
[12:56:45] [PASSED] well_known_colors
[12:56:45] [PASSED] destination_pitch
[12:56:45] ================ [PASSED] drm_test_fb_swab =================
[12:56:45] ============ drm_test_fb_xrgb8888_to_xbgr8888 =============
[12:56:45] [PASSED] single_pixel_source_buffer
[12:56:45] [PASSED] single_pixel_clip_rectangle
[12:56:45] [PASSED] well_known_colors
[12:56:45] [PASSED] destination_pitch
[12:56:45] ======== [PASSED] drm_test_fb_xrgb8888_to_xbgr8888 =========
[12:56:45] ============ drm_test_fb_xrgb8888_to_abgr8888 =============
[12:56:45] [PASSED] single_pixel_source_buffer
[12:56:45] [PASSED] single_pixel_clip_rectangle
[12:56:45] [PASSED] well_known_colors
[12:56:45] [PASSED] destination_pitch
[12:56:45] ======== [PASSED] drm_test_fb_xrgb8888_to_abgr8888 =========
[12:56:45] ================= drm_test_fb_clip_offset =================
[12:56:45] [PASSED] pass through
[12:56:45] [PASSED] horizontal offset
[12:56:45] [PASSED] vertical offset
[12:56:45] [PASSED] horizontal and vertical offset
[12:56:45] [PASSED] horizontal offset (custom pitch)
[12:56:45] [PASSED] vertical offset (custom pitch)
[12:56:45] [PASSED] horizontal and vertical offset (custom pitch)
[12:56:45] ============= [PASSED] drm_test_fb_clip_offset =============
[12:56:45] =================== drm_test_fb_memcpy ====================
[12:56:45] [PASSED] single_pixel_source_buffer: XR24 little-endian (0x34325258)
[12:56:45] [PASSED] single_pixel_source_buffer: XRA8 little-endian (0x38415258)
[12:56:45] [PASSED] single_pixel_source_buffer: YU24 little-endian (0x34325559)
[12:56:45] [PASSED] single_pixel_clip_rectangle: XB24 little-endian (0x34324258)
[12:56:45] [PASSED] single_pixel_clip_rectangle: XRA8 little-endian (0x38415258)
[12:56:45] [PASSED] single_pixel_clip_rectangle: YU24 little-endian (0x34325559)
[12:56:45] [PASSED] well_known_colors: XB24 little-endian (0x34324258)
[12:56:45] [PASSED] well_known_colors: XRA8 little-endian (0x38415258)
[12:56:45] [PASSED] well_known_colors: YU24 little-endian (0x34325559)
[12:56:45] [PASSED] destination_pitch: XB24 little-endian (0x34324258)
[12:56:45] [PASSED] destination_pitch: XRA8 little-endian (0x38415258)
[12:56:45] [PASSED] destination_pitch: YU24 little-endian (0x34325559)
[12:56:45] =============== [PASSED] drm_test_fb_memcpy ================
[12:56:45] ============= [PASSED] drm_format_helper_test ==============
[12:56:45] ================= drm_format (18 subtests) =================
[12:56:45] [PASSED] drm_test_format_block_width_invalid
[12:56:45] [PASSED] drm_test_format_block_width_one_plane
[12:56:45] [PASSED] drm_test_format_block_width_two_plane
[12:56:45] [PASSED] drm_test_format_block_width_three_plane
[12:56:45] [PASSED] drm_test_format_block_width_tiled
[12:56:45] [PASSED] drm_test_format_block_height_invalid
[12:56:45] [PASSED] drm_test_format_block_height_one_plane
[12:56:45] [PASSED] drm_test_format_block_height_two_plane
[12:56:45] [PASSED] drm_test_format_block_height_three_plane
[12:56:45] [PASSED] drm_test_format_block_height_tiled
[12:56:45] [PASSED] drm_test_format_min_pitch_invalid
[12:56:45] [PASSED] drm_test_format_min_pitch_one_plane_8bpp
[12:56:45] [PASSED] drm_test_format_min_pitch_one_plane_16bpp
[12:56:45] [PASSED] drm_test_format_min_pitch_one_plane_24bpp
[12:56:45] [PASSED] drm_test_format_min_pitch_one_plane_32bpp
[12:56:45] [PASSED] drm_test_format_min_pitch_two_plane
[12:56:45] [PASSED] drm_test_format_min_pitch_three_plane_8bpp
[12:56:45] [PASSED] drm_test_format_min_pitch_tiled
[12:56:45] =================== [PASSED] drm_format ====================
[12:56:45] ============== drm_framebuffer (10 subtests) ===============
[12:56:45] ========== drm_test_framebuffer_check_src_coords ==========
[12:56:45] [PASSED] Success: source fits into fb
[12:56:45] [PASSED] Fail: overflowing fb with x-axis coordinate
[12:56:45] [PASSED] Fail: overflowing fb with y-axis coordinate
[12:56:45] [PASSED] Fail: overflowing fb with source width
[12:56:45] [PASSED] Fail: overflowing fb with source height
[12:56:45] ====== [PASSED] drm_test_framebuffer_check_src_coords ======
[12:56:45] [PASSED] drm_test_framebuffer_cleanup
[12:56:45] =============== drm_test_framebuffer_create ===============
[12:56:45] [PASSED] ABGR8888 normal sizes
[12:56:45] [PASSED] ABGR8888 max sizes
[12:56:45] [PASSED] ABGR8888 pitch greater than min required
[12:56:45] [PASSED] ABGR8888 pitch less than min required
[12:56:45] [PASSED] ABGR8888 Invalid width
[12:56:45] [PASSED] ABGR8888 Invalid buffer handle
[12:56:45] [PASSED] No pixel format
[12:56:45] [PASSED] ABGR8888 Width 0
[12:56:45] [PASSED] ABGR8888 Height 0
[12:56:45] [PASSED] ABGR8888 Out of bound height * pitch combination
[12:56:45] [PASSED] ABGR8888 Large buffer offset
[12:56:45] [PASSED] ABGR8888 Buffer offset for inexistent plane
[12:56:45] [PASSED] ABGR8888 Invalid flag
[12:56:45] [PASSED] ABGR8888 Set DRM_MODE_FB_MODIFIERS without modifiers
[12:56:45] [PASSED] ABGR8888 Valid buffer modifier
[12:56:45] [PASSED] ABGR8888 Invalid buffer modifier(DRM_FORMAT_MOD_SAMSUNG_64_32_TILE)
[12:56:45] [PASSED] ABGR8888 Extra pitches without DRM_MODE_FB_MODIFIERS
[12:56:45] [PASSED] ABGR8888 Extra pitches with DRM_MODE_FB_MODIFIERS
[12:56:45] [PASSED] NV12 Normal sizes
[12:56:45] [PASSED] NV12 Max sizes
[12:56:45] [PASSED] NV12 Invalid pitch
[12:56:45] [PASSED] NV12 Invalid modifier/missing DRM_MODE_FB_MODIFIERS flag
[12:56:45] [PASSED] NV12 different modifier per-plane
[12:56:45] [PASSED] NV12 with DRM_FORMAT_MOD_SAMSUNG_64_32_TILE
[12:56:45] [PASSED] NV12 Valid modifiers without DRM_MODE_FB_MODIFIERS
[12:56:45] [PASSED] NV12 Modifier for inexistent plane
[12:56:45] [PASSED] NV12 Handle for inexistent plane
[12:56:45] [PASSED] NV12 Handle for inexistent plane without DRM_MODE_FB_MODIFIERS
[12:56:45] [PASSED] YVU420 DRM_MODE_FB_MODIFIERS set without modifier
[12:56:45] [PASSED] YVU420 Normal sizes
[12:56:45] [PASSED] YVU420 Max sizes
[12:56:45] [PASSED] YVU420 Invalid pitch
[12:56:45] [PASSED] YVU420 Different pitches
[12:56:45] [PASSED] YVU420 Different buffer offsets/pitches
[12:56:45] [PASSED] YVU420 Modifier set just for plane 0, without DRM_MODE_FB_MODIFIERS
[12:56:45] [PASSED] YVU420 Modifier set just for planes 0, 1, without DRM_MODE_FB_MODIFIERS
[12:56:45] [PASSED] YVU420 Modifier set just for plane 0, 1, with DRM_MODE_FB_MODIFIERS
[12:56:45] [PASSED] YVU420 Valid modifier
[12:56:45] [PASSED] YVU420 Different modifiers per plane
[12:56:45] [PASSED] YVU420 Modifier for inexistent plane
[12:56:45] [PASSED] YUV420_10BIT Invalid modifier(DRM_FORMAT_MOD_LINEAR)
[12:56:45] [PASSED] X0L2 Normal sizes
[12:56:45] [PASSED] X0L2 Max sizes
[12:56:45] [PASSED] X0L2 Invalid pitch
[12:56:45] [PASSED] X0L2 Pitch greater than minimum required
[12:56:45] [PASSED] X0L2 Handle for inexistent plane
[12:56:45] [PASSED] X0L2 Offset for inexistent plane, without DRM_MODE_FB_MODIFIERS set
[12:56:45] [PASSED] X0L2 Modifier without DRM_MODE_FB_MODIFIERS set
[12:56:45] [PASSED] X0L2 Valid modifier
[12:56:45] [PASSED] X0L2 Modifier for inexistent plane
[12:56:45] =========== [PASSED] drm_test_framebuffer_create ===========
[12:56:45] [PASSED] drm_test_framebuffer_free
[12:56:45] [PASSED] drm_test_framebuffer_init
[12:56:45] [PASSED] drm_test_framebuffer_init_bad_format
[12:56:45] [PASSED] drm_test_framebuffer_init_dev_mismatch
[12:56:45] [PASSED] drm_test_framebuffer_lookup
[12:56:45] [PASSED] drm_test_framebuffer_lookup_inexistent
[12:56:45] [PASSED] drm_test_framebuffer_modifiers_not_supported
[12:56:45] ================= [PASSED] drm_framebuffer =================
[12:56:45] ================ drm_gem_shmem (8 subtests) ================
[12:56:45] [PASSED] drm_gem_shmem_test_obj_create
[12:56:45] [PASSED] drm_gem_shmem_test_obj_create_private
[12:56:45] [PASSED] drm_gem_shmem_test_pin_pages
[12:56:45] [PASSED] drm_gem_shmem_test_vmap
[12:56:45] [PASSED] drm_gem_shmem_test_get_sg_table
[12:56:45] [PASSED] drm_gem_shmem_test_get_pages_sgt
[12:56:45] [PASSED] drm_gem_shmem_test_madvise
[12:56:45] [PASSED] drm_gem_shmem_test_purge
[12:56:45] ================== [PASSED] drm_gem_shmem ==================
[12:56:45] === drm_atomic_helper_connector_hdmi_check (27 subtests) ===
[12:56:45] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode
[12:56:45] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode_vic_1
[12:56:45] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode
[12:56:45] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode_vic_1
[12:56:45] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode
[12:56:45] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode_vic_1
[12:56:45] ====== drm_test_check_broadcast_rgb_cea_mode_yuv420 =======
[12:56:45] [PASSED] Automatic
[12:56:45] [PASSED] Full
[12:56:45] [PASSED] Limited 16:235
[12:56:45] == [PASSED] drm_test_check_broadcast_rgb_cea_mode_yuv420 ===
[12:56:45] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_changed
[12:56:45] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_not_changed
[12:56:45] [PASSED] drm_test_check_disable_connector
[12:56:45] [PASSED] drm_test_check_hdmi_funcs_reject_rate
[12:56:45] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_rgb
[12:56:45] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_yuv420
[12:56:45] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv422
[12:56:45] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv420
[12:56:45] [PASSED] drm_test_check_driver_unsupported_fallback_yuv420
[12:56:45] [PASSED] drm_test_check_output_bpc_crtc_mode_changed
[12:56:45] [PASSED] drm_test_check_output_bpc_crtc_mode_not_changed
[12:56:45] [PASSED] drm_test_check_output_bpc_dvi
[12:56:45] [PASSED] drm_test_check_output_bpc_format_vic_1
[12:56:45] [PASSED] drm_test_check_output_bpc_format_display_8bpc_only
[12:56:45] [PASSED] drm_test_check_output_bpc_format_display_rgb_only
[12:56:45] [PASSED] drm_test_check_output_bpc_format_driver_8bpc_only
[12:56:45] [PASSED] drm_test_check_output_bpc_format_driver_rgb_only
[12:56:45] [PASSED] drm_test_check_tmds_char_rate_rgb_8bpc
[12:56:45] [PASSED] drm_test_check_tmds_char_rate_rgb_10bpc
[12:56:45] [PASSED] drm_test_check_tmds_char_rate_rgb_12bpc
[12:56:45] ===== [PASSED] drm_atomic_helper_connector_hdmi_check ======
[12:56:45] === drm_atomic_helper_connector_hdmi_reset (6 subtests) ====
[12:56:45] [PASSED] drm_test_check_broadcast_rgb_value
[12:56:45] [PASSED] drm_test_check_bpc_8_value
[12:56:45] [PASSED] drm_test_check_bpc_10_value
[12:56:45] [PASSED] drm_test_check_bpc_12_value
[12:56:45] [PASSED] drm_test_check_format_value
[12:56:45] [PASSED] drm_test_check_tmds_char_value
[12:56:45] ===== [PASSED] drm_atomic_helper_connector_hdmi_reset ======
[12:56:45] = drm_atomic_helper_connector_hdmi_mode_valid (4 subtests) =
[12:56:45] [PASSED] drm_test_check_mode_valid
[12:56:45] [PASSED] drm_test_check_mode_valid_reject
[12:56:45] [PASSED] drm_test_check_mode_valid_reject_rate
[12:56:45] [PASSED] drm_test_check_mode_valid_reject_max_clock
[12:56:45] === [PASSED] drm_atomic_helper_connector_hdmi_mode_valid ===
[12:56:45] = drm_atomic_helper_connector_hdmi_infoframes (5 subtests) =
[12:56:45] [PASSED] drm_test_check_infoframes
[12:56:45] [PASSED] drm_test_check_reject_avi_infoframe
[12:56:45] [PASSED] drm_test_check_reject_hdr_infoframe_bpc_8
[12:56:45] [PASSED] drm_test_check_reject_hdr_infoframe_bpc_10
[12:56:45] [PASSED] drm_test_check_reject_audio_infoframe
[12:56:45] === [PASSED] drm_atomic_helper_connector_hdmi_infoframes ===
[12:56:45] ================= drm_managed (2 subtests) =================
[12:56:45] [PASSED] drm_test_managed_release_action
[12:56:45] [PASSED] drm_test_managed_run_action
[12:56:45] =================== [PASSED] drm_managed ===================
[12:56:45] =================== drm_mm (6 subtests) ====================
[12:56:45] [PASSED] drm_test_mm_init
[12:56:45] [PASSED] drm_test_mm_debug
[12:56:45] [PASSED] drm_test_mm_align32
[12:56:45] [PASSED] drm_test_mm_align64
[12:56:45] [PASSED] drm_test_mm_lowest
[12:56:45] [PASSED] drm_test_mm_highest
[12:56:45] ===================== [PASSED] drm_mm ======================
[12:56:45] ============= drm_modes_analog_tv (5 subtests) =============
[12:56:45] [PASSED] drm_test_modes_analog_tv_mono_576i
[12:56:45] [PASSED] drm_test_modes_analog_tv_ntsc_480i
[12:56:45] [PASSED] drm_test_modes_analog_tv_ntsc_480i_inlined
[12:56:45] [PASSED] drm_test_modes_analog_tv_pal_576i
[12:56:45] [PASSED] drm_test_modes_analog_tv_pal_576i_inlined
[12:56:45] =============== [PASSED] drm_modes_analog_tv ===============
[12:56:45] ============== drm_plane_helper (2 subtests) ===============
[12:56:45] =============== drm_test_check_plane_state ================
[12:56:45] [PASSED] clipping_simple
[12:56:45] [PASSED] clipping_rotate_reflect
[12:56:45] [PASSED] positioning_simple
[12:56:45] [PASSED] upscaling
[12:56:45] [PASSED] downscaling
[12:56:45] [PASSED] rounding1
[12:56:45] [PASSED] rounding2
[12:56:45] [PASSED] rounding3
[12:56:45] [PASSED] rounding4
[12:56:45] =========== [PASSED] drm_test_check_plane_state ============
[12:56:45] =========== drm_test_check_invalid_plane_state ============
[12:56:45] [PASSED] positioning_invalid
[12:56:45] [PASSED] upscaling_invalid
[12:56:45] [PASSED] downscaling_invalid
[12:56:45] ======= [PASSED] drm_test_check_invalid_plane_state ========
[12:56:45] ================ [PASSED] drm_plane_helper =================
[12:56:45] ====== drm_connector_helper_tv_get_modes (1 subtest) =======
[12:56:45] ====== drm_test_connector_helper_tv_get_modes_check =======
[12:56:45] [PASSED] None
[12:56:45] [PASSED] PAL
[12:56:45] [PASSED] NTSC
[12:56:45] [PASSED] Both, NTSC Default
[12:56:45] [PASSED] Both, PAL Default
[12:56:45] [PASSED] Both, NTSC Default, with PAL on command-line
[12:56:45] [PASSED] Both, PAL Default, with NTSC on command-line
[12:56:45] == [PASSED] drm_test_connector_helper_tv_get_modes_check ===
[12:56:45] ======== [PASSED] drm_connector_helper_tv_get_modes ========
[12:56:45] ================== drm_rect (9 subtests) ===================
[12:56:45] [PASSED] drm_test_rect_clip_scaled_div_by_zero
[12:56:45] [PASSED] drm_test_rect_clip_scaled_not_clipped
[12:56:45] [PASSED] drm_test_rect_clip_scaled_clipped
[12:56:45] [PASSED] drm_test_rect_clip_scaled_signed_vs_unsigned
[12:56:45] ================= drm_test_rect_intersect =================
[12:56:45] [PASSED] top-left x bottom-right: 2x2+1+1 x 2x2+0+0
[12:56:45] [PASSED] top-right x bottom-left: 2x2+0+0 x 2x2+1-1
[12:56:45] [PASSED] bottom-left x top-right: 2x2+1-1 x 2x2+0+0
[12:56:45] [PASSED] bottom-right x top-left: 2x2+0+0 x 2x2+1+1
[12:56:45] [PASSED] right x left: 2x1+0+0 x 3x1+1+0
[12:56:45] [PASSED] left x right: 3x1+1+0 x 2x1+0+0
[12:56:45] [PASSED] up x bottom: 1x2+0+0 x 1x3+0-1
[12:56:45] [PASSED] bottom x up: 1x3+0-1 x 1x2+0+0
[12:56:45] [PASSED] touching corner: 1x1+0+0 x 2x2+1+1
[12:56:45] [PASSED] touching side: 1x1+0+0 x 1x1+1+0
[12:56:45] [PASSED] equal rects: 2x2+0+0 x 2x2+0+0
[12:56:45] [PASSED] inside another: 2x2+0+0 x 1x1+1+1
[12:56:45] [PASSED] far away: 1x1+0+0 x 1x1+3+6
[12:56:45] [PASSED] points intersecting: 0x0+5+10 x 0x0+5+10
[12:56:45] [PASSED] points not intersecting: 0x0+0+0 x 0x0+5+10
[12:56:45] ============= [PASSED] drm_test_rect_intersect =============
[12:56:45] ================ drm_test_rect_calc_hscale ================
[12:56:45] [PASSED] normal use
[12:56:45] [PASSED] out of max range
[12:56:45] [PASSED] out of min range
[12:56:45] [PASSED] zero dst
[12:56:45] [PASSED] negative src
[12:56:45] [PASSED] negative dst
[12:56:45] ============ [PASSED] drm_test_rect_calc_hscale ============
[12:56:45] ================ drm_test_rect_calc_vscale ================
[12:56:45] [PASSED] normal use
[12:56:45] [PASSED] out of max range
[12:56:45] [PASSED] out of min range
[12:56:45] [PASSED] zero dst
[12:56:45] [PASSED] negative src
[12:56:45] [PASSED] negative dst
stty: 'standard input': Inappropriate ioctl for device
[12:56:45] ============ [PASSED] drm_test_rect_calc_vscale ============
[12:56:45] ================== drm_test_rect_rotate ===================
[12:56:45] [PASSED] reflect-x
[12:56:45] [PASSED] reflect-y
[12:56:45] [PASSED] rotate-0
[12:56:45] [PASSED] rotate-90
[12:56:45] [PASSED] rotate-180
[12:56:45] [PASSED] rotate-270
[12:56:45] ============== [PASSED] drm_test_rect_rotate ===============
[12:56:45] ================ drm_test_rect_rotate_inv =================
[12:56:45] [PASSED] reflect-x
[12:56:45] [PASSED] reflect-y
[12:56:45] [PASSED] rotate-0
[12:56:45] [PASSED] rotate-90
[12:56:45] [PASSED] rotate-180
[12:56:45] [PASSED] rotate-270
[12:56:45] ============ [PASSED] drm_test_rect_rotate_inv =============
[12:56:45] ==================== [PASSED] drm_rect =====================
[12:56:45] ============ drm_sysfb_modeset_test (1 subtest) ============
[12:56:45] ============ drm_test_sysfb_build_fourcc_list =============
[12:56:45] [PASSED] no native formats
[12:56:45] [PASSED] XRGB8888 as native format
[12:56:45] [PASSED] remove duplicates
[12:56:45] [PASSED] convert alpha formats
[12:56:45] [PASSED] random formats
[12:56:45] ======== [PASSED] drm_test_sysfb_build_fourcc_list =========
[12:56:45] ============= [PASSED] drm_sysfb_modeset_test ==============
[12:56:45] ================== drm_fixp (2 subtests) ===================
[12:56:45] [PASSED] drm_test_int2fixp
[12:56:45] [PASSED] drm_test_sm2fixp
[12:56:45] ==================== [PASSED] drm_fixp =====================
[12:56:45] ============================================================
[12:56:45] Testing complete. Ran 621 tests: passed: 621
[12:56:45] Elapsed time: 27.211s total, 1.707s configuring, 25.330s building, 0.173s running
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/ttm/tests/.kunitconfig
[12:56:45] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[12:56:47] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48
[12:56:56] Starting KUnit Kernel (1/1)...
[12:56:56] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[12:56:56] ================= ttm_device (5 subtests) ==================
[12:56:56] [PASSED] ttm_device_init_basic
[12:56:56] [PASSED] ttm_device_init_multiple
[12:56:56] [PASSED] ttm_device_fini_basic
[12:56:56] [PASSED] ttm_device_init_no_vma_man
[12:56:56] ================== ttm_device_init_pools ==================
[12:56:56] [PASSED] No DMA allocations, no DMA32 required
[12:56:56] [PASSED] DMA allocations, DMA32 required
[12:56:56] [PASSED] No DMA allocations, DMA32 required
[12:56:56] [PASSED] DMA allocations, no DMA32 required
[12:56:56] ============== [PASSED] ttm_device_init_pools ==============
[12:56:56] =================== [PASSED] ttm_device ====================
[12:56:56] ================== ttm_pool (8 subtests) ===================
[12:56:56] ================== ttm_pool_alloc_basic ===================
[12:56:56] [PASSED] One page
[12:56:56] [PASSED] More than one page
[12:56:56] [PASSED] Above the allocation limit
[12:56:56] [PASSED] One page, with coherent DMA mappings enabled
[12:56:56] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[12:56:56] ============== [PASSED] ttm_pool_alloc_basic ===============
[12:56:56] ============== ttm_pool_alloc_basic_dma_addr ==============
[12:56:56] [PASSED] One page
[12:56:56] [PASSED] More than one page
[12:56:56] [PASSED] Above the allocation limit
[12:56:56] [PASSED] One page, with coherent DMA mappings enabled
[12:56:56] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[12:56:56] ========== [PASSED] ttm_pool_alloc_basic_dma_addr ==========
[12:56:56] [PASSED] ttm_pool_alloc_order_caching_match
[12:56:56] [PASSED] ttm_pool_alloc_caching_mismatch
[12:56:56] [PASSED] ttm_pool_alloc_order_mismatch
[12:56:56] [PASSED] ttm_pool_free_dma_alloc
[12:56:56] [PASSED] ttm_pool_free_no_dma_alloc
[12:56:56] [PASSED] ttm_pool_fini_basic
[12:56:56] ==================== [PASSED] ttm_pool =====================
[12:56:56] ================ ttm_resource (8 subtests) =================
[12:56:56] ================= ttm_resource_init_basic =================
[12:56:56] [PASSED] Init resource in TTM_PL_SYSTEM
[12:56:56] [PASSED] Init resource in TTM_PL_VRAM
[12:56:56] [PASSED] Init resource in a private placement
[12:56:56] [PASSED] Init resource in TTM_PL_SYSTEM, set placement flags
[12:56:56] ============= [PASSED] ttm_resource_init_basic =============
[12:56:56] [PASSED] ttm_resource_init_pinned
[12:56:56] [PASSED] ttm_resource_fini_basic
[12:56:56] [PASSED] ttm_resource_manager_init_basic
[12:56:56] [PASSED] ttm_resource_manager_usage_basic
[12:56:56] [PASSED] ttm_resource_manager_set_used_basic
[12:56:56] [PASSED] ttm_sys_man_alloc_basic
[12:56:56] [PASSED] ttm_sys_man_free_basic
[12:56:56] ================== [PASSED] ttm_resource ===================
[12:56:56] =================== ttm_tt (15 subtests) ===================
[12:56:56] ==================== ttm_tt_init_basic ====================
[12:56:56] [PASSED] Page-aligned size
[12:56:56] [PASSED] Extra pages requested
[12:56:56] ================ [PASSED] ttm_tt_init_basic ================
[12:56:56] [PASSED] ttm_tt_init_misaligned
[12:56:56] [PASSED] ttm_tt_fini_basic
[12:56:56] [PASSED] ttm_tt_fini_sg
[12:56:56] [PASSED] ttm_tt_fini_shmem
[12:56:56] [PASSED] ttm_tt_create_basic
[12:56:56] [PASSED] ttm_tt_create_invalid_bo_type
[12:56:56] [PASSED] ttm_tt_create_ttm_exists
[12:56:56] [PASSED] ttm_tt_create_failed
[12:56:56] [PASSED] ttm_tt_destroy_basic
[12:56:56] [PASSED] ttm_tt_populate_null_ttm
[12:56:56] [PASSED] ttm_tt_populate_populated_ttm
[12:56:56] [PASSED] ttm_tt_unpopulate_basic
[12:56:56] [PASSED] ttm_tt_unpopulate_empty_ttm
[12:56:56] [PASSED] ttm_tt_swapin_basic
[12:56:56] ===================== [PASSED] ttm_tt ======================
[12:56:56] =================== ttm_bo (14 subtests) ===================
[12:56:56] =========== ttm_bo_reserve_optimistic_no_ticket ===========
[12:56:56] [PASSED] Cannot be interrupted and sleeps
[12:56:56] [PASSED] Cannot be interrupted, locks straight away
[12:56:56] [PASSED] Can be interrupted, sleeps
[12:56:56] ======= [PASSED] ttm_bo_reserve_optimistic_no_ticket =======
[12:56:56] [PASSED] ttm_bo_reserve_locked_no_sleep
[12:56:56] [PASSED] ttm_bo_reserve_no_wait_ticket
[12:56:56] [PASSED] ttm_bo_reserve_double_resv
[12:56:56] [PASSED] ttm_bo_reserve_interrupted
[12:56:56] [PASSED] ttm_bo_reserve_deadlock
[12:56:56] [PASSED] ttm_bo_unreserve_basic
[12:56:56] [PASSED] ttm_bo_unreserve_pinned
[12:56:56] [PASSED] ttm_bo_unreserve_bulk
[12:56:56] [PASSED] ttm_bo_fini_basic
[12:56:56] [PASSED] ttm_bo_fini_shared_resv
[12:56:56] [PASSED] ttm_bo_pin_basic
[12:56:56] [PASSED] ttm_bo_pin_unpin_resource
[12:56:56] [PASSED] ttm_bo_multiple_pin_one_unpin
[12:56:56] ===================== [PASSED] ttm_bo ======================
[12:56:56] ============== ttm_bo_validate (21 subtests) ===============
[12:56:56] ============== ttm_bo_init_reserved_sys_man ===============
[12:56:56] [PASSED] Buffer object for userspace
[12:56:56] [PASSED] Kernel buffer object
[12:56:56] [PASSED] Shared buffer object
[12:56:56] ========== [PASSED] ttm_bo_init_reserved_sys_man ===========
[12:56:56] ============== ttm_bo_init_reserved_mock_man ==============
[12:56:56] [PASSED] Buffer object for userspace
[12:56:56] [PASSED] Kernel buffer object
[12:56:56] [PASSED] Shared buffer object
[12:56:56] ========== [PASSED] ttm_bo_init_reserved_mock_man ==========
[12:56:56] [PASSED] ttm_bo_init_reserved_resv
[12:56:56] ================== ttm_bo_validate_basic ==================
[12:56:56] [PASSED] Buffer object for userspace
[12:56:56] [PASSED] Kernel buffer object
[12:56:56] [PASSED] Shared buffer object
[12:56:56] ============== [PASSED] ttm_bo_validate_basic ==============
[12:56:56] [PASSED] ttm_bo_validate_invalid_placement
[12:56:56] ============= ttm_bo_validate_same_placement ==============
[12:56:56] [PASSED] System manager
[12:56:56] [PASSED] VRAM manager
[12:56:56] ========= [PASSED] ttm_bo_validate_same_placement ==========
[12:56:56] [PASSED] ttm_bo_validate_failed_alloc
[12:56:56] [PASSED] ttm_bo_validate_pinned
[12:56:56] [PASSED] ttm_bo_validate_busy_placement
[12:56:56] ================ ttm_bo_validate_multihop =================
[12:56:56] [PASSED] Buffer object for userspace
[12:56:56] [PASSED] Kernel buffer object
[12:56:56] [PASSED] Shared buffer object
[12:56:56] ============ [PASSED] ttm_bo_validate_multihop =============
[12:56:56] ========== ttm_bo_validate_no_placement_signaled ==========
[12:56:56] [PASSED] Buffer object in system domain, no page vector
[12:56:56] [PASSED] Buffer object in system domain with an existing page vector
[12:56:56] ====== [PASSED] ttm_bo_validate_no_placement_signaled ======
[12:56:56] ======== ttm_bo_validate_no_placement_not_signaled ========
[12:56:56] [PASSED] Buffer object for userspace
[12:56:56] [PASSED] Kernel buffer object
[12:56:56] [PASSED] Shared buffer object
[12:56:56] ==== [PASSED] ttm_bo_validate_no_placement_not_signaled ====
[12:56:56] [PASSED] ttm_bo_validate_move_fence_signaled
[12:56:56] ========= ttm_bo_validate_move_fence_not_signaled =========
[12:56:56] [PASSED] Waits for GPU
[12:56:56] [PASSED] Tries to lock straight away
[12:56:56] ===== [PASSED] ttm_bo_validate_move_fence_not_signaled =====
[12:56:56] [PASSED] ttm_bo_validate_happy_evict
[12:56:56] [PASSED] ttm_bo_validate_all_pinned_evict
[12:56:56] [PASSED] ttm_bo_validate_allowed_only_evict
[12:56:56] [PASSED] ttm_bo_validate_deleted_evict
[12:56:56] [PASSED] ttm_bo_validate_busy_domain_evict
[12:56:56] [PASSED] ttm_bo_validate_evict_gutting
[12:56:56] [PASSED] ttm_bo_validate_recrusive_evict
stty: 'standard input': Inappropriate ioctl for device
[12:56:56] ================= [PASSED] ttm_bo_validate =================
[12:56:56] ============================================================
[12:56:56] Testing complete. Ran 101 tests: passed: 101
[12:56:56] Elapsed time: 11.258s total, 1.666s configuring, 9.375s building, 0.182s running
+ cleanup
++ stat -c %u:%g /kernel
+ chown -R 1003:1003 /kernel
^ permalink raw reply [flat|nested] 13+ messages in thread
* ✓ Xe.CI.BAT: success for mm: Fix a hmm_range_fault() livelock / starvation problem (rev4)
2026-02-10 11:56 [PATCH v5] mm: Fix a hmm_range_fault() livelock / starvation problem Thomas Hellström
2026-02-10 12:56 ` ✓ CI.KUnit: success for mm: Fix a hmm_range_fault() livelock / starvation problem (rev4) Patchwork
@ 2026-02-10 13:30 ` Patchwork
2026-02-10 16:51 ` ✓ Xe.CI.FULL: " Patchwork
` (3 subsequent siblings)
5 siblings, 0 replies; 13+ messages in thread
From: Patchwork @ 2026-02-10 13:30 UTC (permalink / raw)
To: Thomas Hellström; +Cc: intel-xe
[-- Attachment #1: Type: text/plain, Size: 887 bytes --]
== Series Details ==
Series: mm: Fix a hmm_range_fault() livelock / starvation problem (rev4)
URL : https://patchwork.freedesktop.org/series/161081/
State : success
== Summary ==
CI Bug Log - changes from xe-4535-2637e3e3f987796fa954e6bb245309de218079b5_BAT -> xe-pw-161081v4_BAT
====================================================
Summary
-------
**SUCCESS**
No regressions found.
Participating hosts (12 -> 12)
------------------------------
No changes in participating hosts
Changes
-------
No changes found
Build changes
-------------
* Linux: xe-4535-2637e3e3f987796fa954e6bb245309de218079b5 -> xe-pw-161081v4
IGT_8746: 8746
xe-4535-2637e3e3f987796fa954e6bb245309de218079b5: 2637e3e3f987796fa954e6bb245309de218079b5
xe-pw-161081v4: 161081v4
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161081v4/index.html
[-- Attachment #2: Type: text/html, Size: 1435 bytes --]
^ permalink raw reply [flat|nested] 13+ messages in thread
* ✓ Xe.CI.FULL: success for mm: Fix a hmm_range_fault() livelock / starvation problem (rev4)
2026-02-10 11:56 [PATCH v5] mm: Fix a hmm_range_fault() livelock / starvation problem Thomas Hellström
2026-02-10 12:56 ` ✓ CI.KUnit: success for mm: Fix a hmm_range_fault() livelock / starvation problem (rev4) Patchwork
2026-02-10 13:30 ` ✓ Xe.CI.BAT: " Patchwork
@ 2026-02-10 16:51 ` Patchwork
2026-02-10 22:40 ` [PATCH v5] mm: Fix a hmm_range_fault() livelock / starvation problem Alistair Popple
` (2 subsequent siblings)
5 siblings, 0 replies; 13+ messages in thread
From: Patchwork @ 2026-02-10 16:51 UTC (permalink / raw)
To: Thomas Hellström; +Cc: intel-xe
[-- Attachment #1: Type: text/plain, Size: 29497 bytes --]
== Series Details ==
Series: mm: Fix a hmm_range_fault() livelock / starvation problem (rev4)
URL : https://patchwork.freedesktop.org/series/161081/
State : success
== Summary ==
CI Bug Log - changes from xe-4535-2637e3e3f987796fa954e6bb245309de218079b5_FULL -> xe-pw-161081v4_FULL
====================================================
Summary
-------
**SUCCESS**
No regressions found.
Participating hosts (2 -> 2)
------------------------------
No changes in participating hosts
Known issues
------------
Here are the changes found in xe-pw-161081v4_FULL that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@kms_big_fb@yf-tiled-64bpp-rotate-270:
- shard-bmg: NOTRUN -> [SKIP][1] ([Intel XE#1124]) +3 other tests skip
[1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161081v4/shard-bmg-4/igt@kms_big_fb@yf-tiled-64bpp-rotate-270.html
* igt@kms_bw@connected-linear-tiling-2-displays-2160x1440p:
- shard-bmg: [PASS][2] -> [SKIP][3] ([Intel XE#2314] / [Intel XE#2894])
[2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4535-2637e3e3f987796fa954e6bb245309de218079b5/shard-bmg-9/igt@kms_bw@connected-linear-tiling-2-displays-2160x1440p.html
[3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161081v4/shard-bmg-5/igt@kms_bw@connected-linear-tiling-2-displays-2160x1440p.html
* igt@kms_bw@connected-linear-tiling-4-displays-3840x2160p:
- shard-bmg: NOTRUN -> [SKIP][4] ([Intel XE#2314] / [Intel XE#2894]) +1 other test skip
[4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161081v4/shard-bmg-8/igt@kms_bw@connected-linear-tiling-4-displays-3840x2160p.html
* igt@kms_bw@linear-tiling-2-displays-3840x2160p:
- shard-bmg: NOTRUN -> [SKIP][5] ([Intel XE#367])
[5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161081v4/shard-bmg-6/igt@kms_bw@linear-tiling-2-displays-3840x2160p.html
* igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs:
- shard-bmg: [PASS][6] -> [INCOMPLETE][7] ([Intel XE#7084]) +1 other test incomplete
[6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4535-2637e3e3f987796fa954e6bb245309de218079b5/shard-bmg-5/igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs.html
[7]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161081v4/shard-bmg-10/igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs.html
* igt@kms_ccs@crc-sprite-planes-basic-y-tiled-ccs:
- shard-bmg: NOTRUN -> [SKIP][8] ([Intel XE#2887]) +5 other tests skip
[8]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161081v4/shard-bmg-6/igt@kms_ccs@crc-sprite-planes-basic-y-tiled-ccs.html
* igt@kms_ccs@random-ccs-data-4-tiled-lnl-ccs@pipe-c-dp-2:
- shard-bmg: NOTRUN -> [SKIP][9] ([Intel XE#2652] / [Intel XE#787]) +16 other tests skip
[9]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161081v4/shard-bmg-7/igt@kms_ccs@random-ccs-data-4-tiled-lnl-ccs@pipe-c-dp-2.html
* igt@kms_chamelium_color@degamma:
- shard-bmg: NOTRUN -> [SKIP][10] ([Intel XE#2325])
[10]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161081v4/shard-bmg-6/igt@kms_chamelium_color@degamma.html
* igt@kms_chamelium_hpd@dp-hpd:
- shard-bmg: NOTRUN -> [SKIP][11] ([Intel XE#2252]) +1 other test skip
[11]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161081v4/shard-bmg-8/igt@kms_chamelium_hpd@dp-hpd.html
* igt@kms_content_protection@legacy:
- shard-bmg: NOTRUN -> [SKIP][12] ([Intel XE#2341])
[12]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161081v4/shard-bmg-5/igt@kms_content_protection@legacy.html
* igt@kms_content_protection@lic-type-0@pipe-a-dp-2:
- shard-bmg: NOTRUN -> [FAIL][13] ([Intel XE#1178] / [Intel XE#3304])
[13]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161081v4/shard-bmg-4/igt@kms_content_protection@lic-type-0@pipe-a-dp-2.html
* igt@kms_content_protection@suspend-resume:
- shard-bmg: NOTRUN -> [SKIP][14] ([Intel XE#6705])
[14]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161081v4/shard-bmg-6/igt@kms_content_protection@suspend-resume.html
* igt@kms_content_protection@uevent-hdcp14:
- shard-bmg: NOTRUN -> [FAIL][15] ([Intel XE#6707]) +1 other test fail
[15]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161081v4/shard-bmg-8/igt@kms_content_protection@uevent-hdcp14.html
* igt@kms_cursor_crc@cursor-offscreen-512x170:
- shard-bmg: NOTRUN -> [SKIP][16] ([Intel XE#2321])
[16]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161081v4/shard-bmg-6/igt@kms_cursor_crc@cursor-offscreen-512x170.html
* igt@kms_cursor_legacy@cursorb-vs-flipb-legacy:
- shard-bmg: [PASS][17] -> [SKIP][18] ([Intel XE#2291]) +1 other test skip
[17]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4535-2637e3e3f987796fa954e6bb245309de218079b5/shard-bmg-9/igt@kms_cursor_legacy@cursorb-vs-flipb-legacy.html
[18]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161081v4/shard-bmg-5/igt@kms_cursor_legacy@cursorb-vs-flipb-legacy.html
* igt@kms_dp_link_training@non-uhbr-sst:
- shard-bmg: [PASS][19] -> [SKIP][20] ([Intel XE#4354])
[19]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4535-2637e3e3f987796fa954e6bb245309de218079b5/shard-bmg-10/igt@kms_dp_link_training@non-uhbr-sst.html
[20]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161081v4/shard-bmg-5/igt@kms_dp_link_training@non-uhbr-sst.html
* igt@kms_dsc@dsc-with-output-formats:
- shard-bmg: NOTRUN -> [SKIP][21] ([Intel XE#2244]) +1 other test skip
[21]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161081v4/shard-bmg-8/igt@kms_dsc@dsc-with-output-formats.html
* igt@kms_fbcon_fbt@fbc-suspend:
- shard-bmg: NOTRUN -> [SKIP][22] ([Intel XE#4156])
[22]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161081v4/shard-bmg-8/igt@kms_fbcon_fbt@fbc-suspend.html
* igt@kms_flip@2x-blocking-absolute-wf_vblank-interruptible:
- shard-bmg: NOTRUN -> [SKIP][23] ([Intel XE#2316])
[23]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161081v4/shard-bmg-6/igt@kms_flip@2x-blocking-absolute-wf_vblank-interruptible.html
* igt@kms_flip@2x-nonexisting-fb:
- shard-bmg: [PASS][24] -> [SKIP][25] ([Intel XE#2316]) +8 other tests skip
[24]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4535-2637e3e3f987796fa954e6bb245309de218079b5/shard-bmg-8/igt@kms_flip@2x-nonexisting-fb.html
[25]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161081v4/shard-bmg-6/igt@kms_flip@2x-nonexisting-fb.html
* igt@kms_frontbuffer_tracking@drrs-1p-primscrn-pri-indfb-draw-render:
- shard-bmg: NOTRUN -> [SKIP][26] ([Intel XE#2311]) +5 other tests skip
[26]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161081v4/shard-bmg-6/igt@kms_frontbuffer_tracking@drrs-1p-primscrn-pri-indfb-draw-render.html
* igt@kms_frontbuffer_tracking@drrs-2p-primscrn-pri-indfb-draw-mmap-wc:
- shard-bmg: NOTRUN -> [SKIP][27] ([Intel XE#2312]) +5 other tests skip
[27]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161081v4/shard-bmg-6/igt@kms_frontbuffer_tracking@drrs-2p-primscrn-pri-indfb-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@drrs-abgr161616f-draw-render:
- shard-bmg: NOTRUN -> [SKIP][28] ([Intel XE#7061]) +2 other tests skip
[28]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161081v4/shard-bmg-6/igt@kms_frontbuffer_tracking@drrs-abgr161616f-draw-render.html
* igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-onoff:
- shard-bmg: NOTRUN -> [SKIP][29] ([Intel XE#4141]) +5 other tests skip
[29]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161081v4/shard-bmg-8/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-onoff.html
* igt@kms_frontbuffer_tracking@fbcpsr-1p-offscreen-pri-indfb-draw-mmap-wc:
- shard-bmg: NOTRUN -> [SKIP][30] ([Intel XE#2313]) +8 other tests skip
[30]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161081v4/shard-bmg-8/igt@kms_frontbuffer_tracking@fbcpsr-1p-offscreen-pri-indfb-draw-mmap-wc.html
* igt@kms_pipe_stress@stress-xrgb8888-yftiled:
- shard-bmg: NOTRUN -> [SKIP][31] ([Intel XE#6912])
[31]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161081v4/shard-bmg-5/igt@kms_pipe_stress@stress-xrgb8888-yftiled.html
* igt@kms_plane@pixel-format-y-tiled-gen12-mc-ccs-modifier-source-clamping:
- shard-bmg: NOTRUN -> [SKIP][32] ([Intel XE#7111] / [Intel XE#7130] / [Intel XE#7131]) +1 other test skip
[32]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161081v4/shard-bmg-5/igt@kms_plane@pixel-format-y-tiled-gen12-mc-ccs-modifier-source-clamping.html
* igt@kms_plane@pixel-format-y-tiled-gen12-mc-ccs-modifier-source-clamping@pipe-b-plane-5:
- shard-bmg: NOTRUN -> [SKIP][33] ([Intel XE#7111] / [Intel XE#7131]) +1 other test skip
[33]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161081v4/shard-bmg-5/igt@kms_plane@pixel-format-y-tiled-gen12-mc-ccs-modifier-source-clamping@pipe-b-plane-5.html
* igt@kms_plane@pixel-format-yf-tiled-ccs-modifier-source-clamping@pipe-a-plane-3:
- shard-bmg: NOTRUN -> [SKIP][34] ([Intel XE#7130]) +7 other tests skip
[34]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161081v4/shard-bmg-8/igt@kms_plane@pixel-format-yf-tiled-ccs-modifier-source-clamping@pipe-a-plane-3.html
* igt@kms_plane@pixel-format-yf-tiled-ccs-modifier-source-clamping@pipe-a-plane-5:
- shard-bmg: NOTRUN -> [SKIP][35] ([Intel XE#7131]) +1 other test skip
[35]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161081v4/shard-bmg-8/igt@kms_plane@pixel-format-yf-tiled-ccs-modifier-source-clamping@pipe-a-plane-5.html
* igt@kms_plane_multiple@2x-tiling-none:
- shard-bmg: NOTRUN -> [SKIP][36] ([Intel XE#4596])
[36]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161081v4/shard-bmg-6/igt@kms_plane_multiple@2x-tiling-none.html
* igt@kms_plane_multiple@2x-tiling-y:
- shard-bmg: NOTRUN -> [SKIP][37] ([Intel XE#5021])
[37]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161081v4/shard-bmg-8/igt@kms_plane_multiple@2x-tiling-y.html
* igt@kms_pm_backlight@bad-brightness:
- shard-bmg: NOTRUN -> [SKIP][38] ([Intel XE#870])
[38]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161081v4/shard-bmg-6/igt@kms_pm_backlight@bad-brightness.html
* igt@kms_pm_dc@dc6-psr:
- shard-bmg: NOTRUN -> [SKIP][39] ([Intel XE#2392])
[39]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161081v4/shard-bmg-8/igt@kms_pm_dc@dc6-psr.html
* igt@kms_psr2_sf@psr2-overlay-plane-move-continuous-sf:
- shard-bmg: NOTRUN -> [SKIP][40] ([Intel XE#1406] / [Intel XE#1489]) +1 other test skip
[40]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161081v4/shard-bmg-8/igt@kms_psr2_sf@psr2-overlay-plane-move-continuous-sf.html
* igt@kms_psr2_su@page_flip-xrgb8888:
- shard-bmg: NOTRUN -> [SKIP][41] ([Intel XE#1406] / [Intel XE#2387])
[41]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161081v4/shard-bmg-5/igt@kms_psr2_su@page_flip-xrgb8888.html
* igt@kms_psr@fbc-psr2-cursor-plane-move:
- shard-bmg: NOTRUN -> [SKIP][42] ([Intel XE#1406] / [Intel XE#2234] / [Intel XE#2850]) +2 other tests skip
[42]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161081v4/shard-bmg-8/igt@kms_psr@fbc-psr2-cursor-plane-move.html
* igt@kms_setmode@basic@pipe-b-edp-1:
- shard-lnl: [PASS][43] -> [FAIL][44] ([Intel XE#6361]) +2 other tests fail
[43]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4535-2637e3e3f987796fa954e6bb245309de218079b5/shard-lnl-8/igt@kms_setmode@basic@pipe-b-edp-1.html
[44]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161081v4/shard-lnl-3/igt@kms_setmode@basic@pipe-b-edp-1.html
* igt@xe_eudebug@basic-vms:
- shard-bmg: NOTRUN -> [SKIP][45] ([Intel XE#4837]) +2 other tests skip
[45]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161081v4/shard-bmg-6/igt@xe_eudebug@basic-vms.html
* igt@xe_eudebug_online@writes-caching-sram-bb-vram-target-sram:
- shard-bmg: NOTRUN -> [SKIP][46] ([Intel XE#4837] / [Intel XE#6665])
[46]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161081v4/shard-bmg-6/igt@xe_eudebug_online@writes-caching-sram-bb-vram-target-sram.html
* igt@xe_evict@evict-beng-mixed-many-threads-small:
- shard-bmg: [PASS][47] -> [INCOMPLETE][48] ([Intel XE#6321])
[47]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4535-2637e3e3f987796fa954e6bb245309de218079b5/shard-bmg-3/igt@xe_evict@evict-beng-mixed-many-threads-small.html
[48]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161081v4/shard-bmg-5/igt@xe_evict@evict-beng-mixed-many-threads-small.html
* igt@xe_exec_basic@multigpu-once-null-rebind:
- shard-bmg: NOTRUN -> [SKIP][49] ([Intel XE#2322]) +3 other tests skip
[49]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161081v4/shard-bmg-6/igt@xe_exec_basic@multigpu-once-null-rebind.html
* igt@xe_exec_fault_mode@many-multi-queue-rebind-prefetch:
- shard-bmg: NOTRUN -> [SKIP][50] ([Intel XE#7136]) +2 other tests skip
[50]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161081v4/shard-bmg-6/igt@xe_exec_fault_mode@many-multi-queue-rebind-prefetch.html
* igt@xe_exec_multi_queue@max-queues-preempt-mode-basic:
- shard-bmg: NOTRUN -> [SKIP][51] ([Intel XE#6874]) +7 other tests skip
[51]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161081v4/shard-bmg-6/igt@xe_exec_multi_queue@max-queues-preempt-mode-basic.html
* igt@xe_exec_reset@cm-gt-reset:
- shard-lnl: [PASS][52] -> [INCOMPLETE][53] ([Intel XE#2594])
[52]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4535-2637e3e3f987796fa954e6bb245309de218079b5/shard-lnl-8/igt@xe_exec_reset@cm-gt-reset.html
[53]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161081v4/shard-lnl-3/igt@xe_exec_reset@cm-gt-reset.html
* igt@xe_exec_system_allocator@process-many-execqueues-mmap-new-huge:
- shard-bmg: NOTRUN -> [SKIP][54] ([Intel XE#4943]) +2 other tests skip
[54]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161081v4/shard-bmg-8/igt@xe_exec_system_allocator@process-many-execqueues-mmap-new-huge.html
* igt@xe_exec_threads@threads-multi-queue-mixed-userptr-invalidate:
- shard-bmg: NOTRUN -> [SKIP][55] ([Intel XE#7138]) +3 other tests skip
[55]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161081v4/shard-bmg-4/igt@xe_exec_threads@threads-multi-queue-mixed-userptr-invalidate.html
* igt@xe_multigpu_svm@mgpu-coherency-fail-basic:
- shard-bmg: NOTRUN -> [SKIP][56] ([Intel XE#6964]) +1 other test skip
[56]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161081v4/shard-bmg-8/igt@xe_multigpu_svm@mgpu-coherency-fail-basic.html
* igt@xe_pm@s4-d3cold-basic-exec:
- shard-bmg: NOTRUN -> [SKIP][57] ([Intel XE#2284]) +1 other test skip
[57]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161081v4/shard-bmg-6/igt@xe_pm@s4-d3cold-basic-exec.html
* igt@xe_query@multigpu-query-invalid-size:
- shard-bmg: NOTRUN -> [SKIP][58] ([Intel XE#944])
[58]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161081v4/shard-bmg-8/igt@xe_query@multigpu-query-invalid-size.html
#### Possible fixes ####
* igt@kms_bw@connected-linear-tiling-2-displays-1920x1080p:
- shard-bmg: [SKIP][59] ([Intel XE#2314] / [Intel XE#2894]) -> [PASS][60]
[59]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4535-2637e3e3f987796fa954e6bb245309de218079b5/shard-bmg-5/igt@kms_bw@connected-linear-tiling-2-displays-1920x1080p.html
[60]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161081v4/shard-bmg-1/igt@kms_bw@connected-linear-tiling-2-displays-1920x1080p.html
* igt@kms_cursor_legacy@cursora-vs-flipb-legacy:
- shard-bmg: [SKIP][61] ([Intel XE#2291]) -> [PASS][62] +7 other tests pass
[61]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4535-2637e3e3f987796fa954e6bb245309de218079b5/shard-bmg-5/igt@kms_cursor_legacy@cursora-vs-flipb-legacy.html
[62]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161081v4/shard-bmg-3/igt@kms_cursor_legacy@cursora-vs-flipb-legacy.html
* igt@kms_dither@fb-8bpc-vs-panel-6bpc:
- shard-bmg: [SKIP][63] ([Intel XE#1340]) -> [PASS][64]
[63]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4535-2637e3e3f987796fa954e6bb245309de218079b5/shard-bmg-6/igt@kms_dither@fb-8bpc-vs-panel-6bpc.html
[64]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161081v4/shard-bmg-7/igt@kms_dither@fb-8bpc-vs-panel-6bpc.html
* igt@kms_dp_aux_dev:
- shard-bmg: [SKIP][65] ([Intel XE#3009]) -> [PASS][66]
[65]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4535-2637e3e3f987796fa954e6bb245309de218079b5/shard-bmg-5/igt@kms_dp_aux_dev.html
[66]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161081v4/shard-bmg-10/igt@kms_dp_aux_dev.html
* igt@kms_flip@2x-flip-vs-dpms-on-nop-interruptible:
- shard-bmg: [SKIP][67] ([Intel XE#2316]) -> [PASS][68] +6 other tests pass
[67]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4535-2637e3e3f987796fa954e6bb245309de218079b5/shard-bmg-5/igt@kms_flip@2x-flip-vs-dpms-on-nop-interruptible.html
[68]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161081v4/shard-bmg-3/igt@kms_flip@2x-flip-vs-dpms-on-nop-interruptible.html
* igt@kms_flip@flip-vs-expired-vblank-interruptible:
- shard-lnl: [FAIL][69] ([Intel XE#301]) -> [PASS][70] +1 other test pass
[69]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4535-2637e3e3f987796fa954e6bb245309de218079b5/shard-lnl-4/igt@kms_flip@flip-vs-expired-vblank-interruptible.html
[70]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161081v4/shard-lnl-8/igt@kms_flip@flip-vs-expired-vblank-interruptible.html
* igt@kms_plane_multiple@2x-tiling-x:
- shard-bmg: [SKIP][71] ([Intel XE#4596]) -> [PASS][72]
[71]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4535-2637e3e3f987796fa954e6bb245309de218079b5/shard-bmg-6/igt@kms_plane_multiple@2x-tiling-x.html
[72]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161081v4/shard-bmg-7/igt@kms_plane_multiple@2x-tiling-x.html
* igt@kms_plane_scaling@2x-scaler-multi-pipe:
- shard-bmg: [SKIP][73] ([Intel XE#2571]) -> [PASS][74]
[73]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4535-2637e3e3f987796fa954e6bb245309de218079b5/shard-bmg-6/igt@kms_plane_scaling@2x-scaler-multi-pipe.html
[74]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161081v4/shard-bmg-7/igt@kms_plane_scaling@2x-scaler-multi-pipe.html
* igt@kms_vrr@negative-basic:
- shard-bmg: [SKIP][75] ([Intel XE#1499]) -> [PASS][76]
[75]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4535-2637e3e3f987796fa954e6bb245309de218079b5/shard-bmg-5/igt@kms_vrr@negative-basic.html
[76]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161081v4/shard-bmg-3/igt@kms_vrr@negative-basic.html
* igt@xe_evict@evict-mixed-many-threads-small:
- shard-bmg: [INCOMPLETE][77] ([Intel XE#6321]) -> [PASS][78]
[77]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4535-2637e3e3f987796fa954e6bb245309de218079b5/shard-bmg-8/igt@xe_evict@evict-mixed-many-threads-small.html
[78]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161081v4/shard-bmg-3/igt@xe_evict@evict-mixed-many-threads-small.html
* igt@xe_exec_system_allocator@unaligned-alloc:
- shard-bmg: [INCOMPLETE][79] ([Intel XE#2594]) -> [PASS][80]
[79]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4535-2637e3e3f987796fa954e6bb245309de218079b5/shard-bmg-9/igt@xe_exec_system_allocator@unaligned-alloc.html
[80]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161081v4/shard-bmg-5/igt@xe_exec_system_allocator@unaligned-alloc.html
* igt@xe_pm_residency@aspm_link_residency:
- shard-bmg: [SKIP][81] -> [PASS][82]
[81]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4535-2637e3e3f987796fa954e6bb245309de218079b5/shard-bmg-5/igt@xe_pm_residency@aspm_link_residency.html
[82]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161081v4/shard-bmg-1/igt@xe_pm_residency@aspm_link_residency.html
#### Warnings ####
* igt@kms_content_protection@atomic-dpms-hdcp14:
- shard-bmg: [FAIL][83] ([Intel XE#3304]) -> [SKIP][84] ([Intel XE#7194])
[83]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4535-2637e3e3f987796fa954e6bb245309de218079b5/shard-bmg-9/igt@kms_content_protection@atomic-dpms-hdcp14.html
[84]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161081v4/shard-bmg-5/igt@kms_content_protection@atomic-dpms-hdcp14.html
* igt@kms_content_protection@lic-type-0:
- shard-bmg: [SKIP][85] ([Intel XE#2341]) -> [FAIL][86] ([Intel XE#1178] / [Intel XE#3304])
[85]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4535-2637e3e3f987796fa954e6bb245309de218079b5/shard-bmg-6/igt@kms_content_protection@lic-type-0.html
[86]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161081v4/shard-bmg-4/igt@kms_content_protection@lic-type-0.html
* igt@kms_frontbuffer_tracking@drrs-2p-primscrn-cur-indfb-move:
- shard-bmg: [SKIP][87] ([Intel XE#2312]) -> [SKIP][88] ([Intel XE#2311]) +20 other tests skip
[87]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4535-2637e3e3f987796fa954e6bb245309de218079b5/shard-bmg-5/igt@kms_frontbuffer_tracking@drrs-2p-primscrn-cur-indfb-move.html
[88]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161081v4/shard-bmg-1/igt@kms_frontbuffer_tracking@drrs-2p-primscrn-cur-indfb-move.html
* igt@kms_frontbuffer_tracking@fbc-2p-primscrn-indfb-pgflip-blt:
- shard-bmg: [SKIP][89] ([Intel XE#4141]) -> [SKIP][90] ([Intel XE#2312]) +7 other tests skip
[89]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4535-2637e3e3f987796fa954e6bb245309de218079b5/shard-bmg-3/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-indfb-pgflip-blt.html
[90]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161081v4/shard-bmg-5/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-indfb-pgflip-blt.html
* igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-draw-render:
- shard-bmg: [SKIP][91] ([Intel XE#2312]) -> [SKIP][92] ([Intel XE#4141]) +9 other tests skip
[91]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4535-2637e3e3f987796fa954e6bb245309de218079b5/shard-bmg-6/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-draw-render.html
[92]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161081v4/shard-bmg-7/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-draw-render.html
* igt@kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-shrfb-plflip-blt:
- shard-bmg: [SKIP][93] ([Intel XE#2311]) -> [SKIP][94] ([Intel XE#2312]) +12 other tests skip
[93]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4535-2637e3e3f987796fa954e6bb245309de218079b5/shard-bmg-8/igt@kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-shrfb-plflip-blt.html
[94]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161081v4/shard-bmg-6/igt@kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-shrfb-plflip-blt.html
* igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-indfb-msflip-blt:
- shard-bmg: [SKIP][95] ([Intel XE#2313]) -> [SKIP][96] ([Intel XE#2312]) +16 other tests skip
[95]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4535-2637e3e3f987796fa954e6bb245309de218079b5/shard-bmg-8/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-indfb-msflip-blt.html
[96]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161081v4/shard-bmg-6/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-indfb-msflip-blt.html
* igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-shrfb-plflip-blt:
- shard-bmg: [SKIP][97] ([Intel XE#2312]) -> [SKIP][98] ([Intel XE#2313]) +22 other tests skip
[97]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4535-2637e3e3f987796fa954e6bb245309de218079b5/shard-bmg-6/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-shrfb-plflip-blt.html
[98]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161081v4/shard-bmg-7/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-shrfb-plflip-blt.html
* igt@xe_fault_injection@probe-fail-guc-xe_guc_ct_send_recv:
- shard-bmg: [ABORT][99] ([Intel XE#5466]) -> [ABORT][100] ([Intel XE#5466] / [Intel XE#6652])
[99]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4535-2637e3e3f987796fa954e6bb245309de218079b5/shard-bmg-9/igt@xe_fault_injection@probe-fail-guc-xe_guc_ct_send_recv.html
[100]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161081v4/shard-bmg-5/igt@xe_fault_injection@probe-fail-guc-xe_guc_ct_send_recv.html
[Intel XE#1124]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1124
[Intel XE#1178]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1178
[Intel XE#1340]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1340
[Intel XE#1406]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1406
[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#2234]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2234
[Intel XE#2244]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2244
[Intel XE#2252]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2252
[Intel XE#2284]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2284
[Intel XE#2291]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2291
[Intel XE#2311]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2311
[Intel XE#2312]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2312
[Intel XE#2313]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2313
[Intel XE#2314]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2314
[Intel XE#2316]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2316
[Intel XE#2321]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2321
[Intel XE#2322]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2322
[Intel XE#2325]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2325
[Intel XE#2341]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2341
[Intel XE#2387]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2387
[Intel XE#2392]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2392
[Intel XE#2571]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2571
[Intel XE#2594]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2594
[Intel XE#2652]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2652
[Intel XE#2850]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2850
[Intel XE#2887]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2887
[Intel XE#2894]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2894
[Intel XE#3009]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3009
[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#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#4354]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4354
[Intel XE#4596]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4596
[Intel XE#4837]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4837
[Intel XE#4943]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4943
[Intel XE#5021]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5021
[Intel XE#5466]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5466
[Intel XE#6321]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6321
[Intel XE#6361]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6361
[Intel XE#6652]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6652
[Intel XE#6665]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6665
[Intel XE#6705]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6705
[Intel XE#6707]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6707
[Intel XE#6874]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6874
[Intel XE#6912]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6912
[Intel XE#6964]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6964
[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#7111]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7111
[Intel XE#7130]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7130
[Intel XE#7131]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7131
[Intel XE#7136]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7136
[Intel XE#7138]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7138
[Intel XE#7194]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7194
[Intel XE#787]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/787
[Intel XE#870]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/870
[Intel XE#944]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/944
Build changes
-------------
* Linux: xe-4535-2637e3e3f987796fa954e6bb245309de218079b5 -> xe-pw-161081v4
IGT_8746: 8746
xe-4535-2637e3e3f987796fa954e6bb245309de218079b5: 2637e3e3f987796fa954e6bb245309de218079b5
xe-pw-161081v4: 161081v4
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161081v4/index.html
[-- Attachment #2: Type: text/html, Size: 34035 bytes --]
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v5] mm: Fix a hmm_range_fault() livelock / starvation problem
2026-02-10 11:56 [PATCH v5] mm: Fix a hmm_range_fault() livelock / starvation problem Thomas Hellström
` (2 preceding siblings ...)
2026-02-10 16:51 ` ✓ Xe.CI.FULL: " Patchwork
@ 2026-02-10 22:40 ` Alistair Popple
2026-02-11 22:23 ` Davidlohr Bueso
2026-04-06 12:54 ` Lorenzo Stoakes (Oracle)
5 siblings, 0 replies; 13+ messages in thread
From: Alistair Popple @ 2026-02-10 22:40 UTC (permalink / raw)
To: Thomas Hellström
Cc: intel-xe, Ralph Campbell, Christoph Hellwig, Jason Gunthorpe,
Jason Gunthorpe, Leon Romanovsky, Andrew Morton, Matthew Brost,
John Hubbard, linux-mm, dri-devel, stable
On 2026-02-10 at 22:56 +1100, Thomas Hellström <thomas.hellstrom@linux.intel.com> wrote...
> If hmm_range_fault() fails a folio_trylock() in do_swap_page,
> trying to acquire the lock of a device-private folio for migration,
> to ram, the function will spin until it succeeds grabbing the lock.
>
> However, if the process holding the lock is depending on a work
> item to be completed, which is scheduled on the same CPU as the
> spinning hmm_range_fault(), that work item might be starved and
> we end up in a livelock / starvation situation which is never
> resolved.
>
> This can happen, for example if the process holding the
> device-private folio lock is stuck in
> migrate_device_unmap()->lru_add_drain_all()
> sinc lru_add_drain_all() requires a short work-item
> to be run on all online cpus to complete.
>
> A prerequisite for this to happen is:
> a) Both zone device and system memory folios are considered in
> migrate_device_unmap(), so that there is a reason to call
> lru_add_drain_all() for a system memory folio while a
> folio lock is held on a zone device folio.
> b) The zone device folio has an initial mapcount > 1 which causes
> at least one migration PTE entry insertion to be deferred to
> try_to_migrate(), which can happen after the call to
> lru_add_drain_all().
> c) No or voluntary only preemption.
>
> This all seems pretty unlikely to happen, but indeed is hit by
> the "xe_exec_system_allocator" igt test.
>
> Resolve this by waiting for the folio to be unlocked if the
> folio_trylock() fails in do_swap_page().
>
> Rename migration_entry_wait_on_locked() to
> softleaf_entry_wait_unlock() and update its documentation to
> indicate the new use-case.
>
> Future code improvements might consider moving
> the lru_add_drain_all() call in migrate_device_unmap() to be
> called *after* all pages have migration entries inserted.
> That would eliminate also b) above.
>
> v2:
> - Instead of a cond_resched() in hmm_range_fault(),
> eliminate the problem by waiting for the folio to be unlocked
> in do_swap_page() (Alistair Popple, Andrew Morton)
> v3:
> - Add a stub migration_entry_wait_on_locked() for the
> !CONFIG_MIGRATION case. (Kernel Test Robot)
> v4:
> - Rename migrate_entry_wait_on_locked() to
> softleaf_entry_wait_on_locked() and update docs (Alistair Popple)
> v5:
> - Add a WARN_ON_ONCE() for the !CONFIG_MIGRATION
> version of softleaf_entry_wait_on_locked().
Thanks!
Reviewed-by: Alistair Popple <apopple@nvidia.com>
> - Modify wording around function names in the commit message
> (Andrew Morton)
>
> Suggested-by: Alistair Popple <apopple@nvidia.com>
> Fixes: 1afaeb8293c9 ("mm/migrate: Trylock device page in do_swap_page")
> Cc: Ralph Campbell <rcampbell@nvidia.com>
> Cc: Christoph Hellwig <hch@lst.de>
> Cc: Jason Gunthorpe <jgg@mellanox.com>
> Cc: Jason Gunthorpe <jgg@ziepe.ca>
> Cc: Leon Romanovsky <leon@kernel.org>
> Cc: Andrew Morton <akpm@linux-foundation.org>
> Cc: Matthew Brost <matthew.brost@intel.com>
> Cc: John Hubbard <jhubbard@nvidia.com>
> Cc: Alistair Popple <apopple@nvidia.com>
> Cc: linux-mm@kvack.org
> Cc: <dri-devel@lists.freedesktop.org>
> Signed-off-by: Thomas Hellström <thomas.hellstrom@linux.intel.com>
> Cc: <stable@vger.kernel.org> # v6.15+
> Reviewed-by: John Hubbard <jhubbard@nvidia.com> #v3
> ---
> include/linux/migrate.h | 10 +++++++++-
> mm/filemap.c | 15 ++++++++++-----
> mm/memory.c | 3 ++-
> mm/migrate.c | 8 ++++----
> mm/migrate_device.c | 2 +-
> 5 files changed, 26 insertions(+), 12 deletions(-)
>
> diff --git a/include/linux/migrate.h b/include/linux/migrate.h
> index 26ca00c325d9..d5af2b7f577b 100644
> --- a/include/linux/migrate.h
> +++ b/include/linux/migrate.h
> @@ -65,7 +65,7 @@ bool isolate_folio_to_list(struct folio *folio, struct list_head *list);
>
> int migrate_huge_page_move_mapping(struct address_space *mapping,
> struct folio *dst, struct folio *src);
> -void migration_entry_wait_on_locked(softleaf_t entry, spinlock_t *ptl)
> +void softleaf_entry_wait_on_locked(softleaf_t entry, spinlock_t *ptl)
> __releases(ptl);
> void folio_migrate_flags(struct folio *newfolio, struct folio *folio);
> int folio_migrate_mapping(struct address_space *mapping,
> @@ -97,6 +97,14 @@ static inline int set_movable_ops(const struct movable_operations *ops, enum pag
> return -ENOSYS;
> }
>
> +static inline void softleaf_entry_wait_on_locked(softleaf_t entry, spinlock_t *ptl)
> + __releases(ptl)
> +{
> + WARN_ON_ONCE(1);
> +
> + spin_unlock(ptl);
> +}
> +
> #endif /* CONFIG_MIGRATION */
>
> #ifdef CONFIG_NUMA_BALANCING
> diff --git a/mm/filemap.c b/mm/filemap.c
> index ebd75684cb0a..d98e4883f13d 100644
> --- a/mm/filemap.c
> +++ b/mm/filemap.c
> @@ -1379,14 +1379,16 @@ static inline int folio_wait_bit_common(struct folio *folio, int bit_nr,
>
> #ifdef CONFIG_MIGRATION
> /**
> - * migration_entry_wait_on_locked - Wait for a migration entry to be removed
> - * @entry: migration swap entry.
> + * softleaf_entry_wait_on_locked - Wait for a migration entry or
> + * device_private entry to be removed.
> + * @entry: migration or device_private swap entry.
> * @ptl: already locked ptl. This function will drop the lock.
> *
> - * Wait for a migration entry referencing the given page to be removed. This is
> + * Wait for a migration entry referencing the given page, or device_private
> + * entry referencing a dvice_private page to be unlocked. This is
> * equivalent to folio_put_wait_locked(folio, TASK_UNINTERRUPTIBLE) except
> * this can be called without taking a reference on the page. Instead this
> - * should be called while holding the ptl for the migration entry referencing
> + * should be called while holding the ptl for @entry referencing
> * the page.
> *
> * Returns after unlocking the ptl.
> @@ -1394,7 +1396,7 @@ static inline int folio_wait_bit_common(struct folio *folio, int bit_nr,
> * This follows the same logic as folio_wait_bit_common() so see the comments
> * there.
> */
> -void migration_entry_wait_on_locked(softleaf_t entry, spinlock_t *ptl)
> +void softleaf_entry_wait_on_locked(softleaf_t entry, spinlock_t *ptl)
> __releases(ptl)
> {
> struct wait_page_queue wait_page;
> @@ -1428,6 +1430,9 @@ void migration_entry_wait_on_locked(softleaf_t entry, spinlock_t *ptl)
> * If a migration entry exists for the page the migration path must hold
> * a valid reference to the page, and it must take the ptl to remove the
> * migration entry. So the page is valid until the ptl is dropped.
> + * Similarly any path attempting to drop the last reference to a
> + * device-private page needs to grab the ptl to remove the device-private
> + * entry.
> */
> spin_unlock(ptl);
>
> diff --git a/mm/memory.c b/mm/memory.c
> index da360a6eb8a4..20172476a57f 100644
> --- a/mm/memory.c
> +++ b/mm/memory.c
> @@ -4684,7 +4684,8 @@ vm_fault_t do_swap_page(struct vm_fault *vmf)
> unlock_page(vmf->page);
> put_page(vmf->page);
> } else {
> - pte_unmap_unlock(vmf->pte, vmf->ptl);
> + pte_unmap(vmf->pte);
> + softleaf_entry_wait_on_locked(entry, vmf->ptl);
> }
> } else if (softleaf_is_hwpoison(entry)) {
> ret = VM_FAULT_HWPOISON;
> diff --git a/mm/migrate.c b/mm/migrate.c
> index 4688b9e38cd2..cf6449b4202e 100644
> --- a/mm/migrate.c
> +++ b/mm/migrate.c
> @@ -499,7 +499,7 @@ void migration_entry_wait(struct mm_struct *mm, pmd_t *pmd,
> if (!softleaf_is_migration(entry))
> goto out;
>
> - migration_entry_wait_on_locked(entry, ptl);
> + softleaf_entry_wait_on_locked(entry, ptl);
> return;
> out:
> spin_unlock(ptl);
> @@ -531,10 +531,10 @@ void migration_entry_wait_huge(struct vm_area_struct *vma, unsigned long addr, p
> * If migration entry existed, safe to release vma lock
> * here because the pgtable page won't be freed without the
> * pgtable lock released. See comment right above pgtable
> - * lock release in migration_entry_wait_on_locked().
> + * lock release in softleaf_entry_wait_on_locked().
> */
> hugetlb_vma_unlock_read(vma);
> - migration_entry_wait_on_locked(entry, ptl);
> + softleaf_entry_wait_on_locked(entry, ptl);
> return;
> }
>
> @@ -552,7 +552,7 @@ void pmd_migration_entry_wait(struct mm_struct *mm, pmd_t *pmd)
> ptl = pmd_lock(mm, pmd);
> if (!pmd_is_migration_entry(*pmd))
> goto unlock;
> - migration_entry_wait_on_locked(softleaf_from_pmd(*pmd), ptl);
> + softleaf_entry_wait_on_locked(softleaf_from_pmd(*pmd), ptl);
> return;
> unlock:
> spin_unlock(ptl);
> diff --git a/mm/migrate_device.c b/mm/migrate_device.c
> index 23379663b1e1..deab89fd4541 100644
> --- a/mm/migrate_device.c
> +++ b/mm/migrate_device.c
> @@ -176,7 +176,7 @@ static int migrate_vma_collect_huge_pmd(pmd_t *pmdp, unsigned long start,
> }
>
> if (softleaf_is_migration(entry)) {
> - migration_entry_wait_on_locked(entry, ptl);
> + softleaf_entry_wait_on_locked(entry, ptl);
> spin_unlock(ptl);
> return -EAGAIN;
> }
> --
> 2.52.0
>
>
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v5] mm: Fix a hmm_range_fault() livelock / starvation problem
2026-02-10 11:56 [PATCH v5] mm: Fix a hmm_range_fault() livelock / starvation problem Thomas Hellström
` (3 preceding siblings ...)
2026-02-10 22:40 ` [PATCH v5] mm: Fix a hmm_range_fault() livelock / starvation problem Alistair Popple
@ 2026-02-11 22:23 ` Davidlohr Bueso
2026-02-11 22:54 ` Alistair Popple
2026-04-06 12:54 ` Lorenzo Stoakes (Oracle)
5 siblings, 1 reply; 13+ messages in thread
From: Davidlohr Bueso @ 2026-02-11 22:23 UTC (permalink / raw)
To: Thomas Hellstr�m
Cc: intel-xe, Alistair Popple, Ralph Campbell, Christoph Hellwig,
Jason Gunthorpe, Jason Gunthorpe, Leon Romanovsky, Andrew Morton,
Matthew Brost, John Hubbard, linux-mm, dri-devel, stable
On Tue, 10 Feb 2026, Thomas Hellstr�m wrote:
>@@ -176,7 +176,7 @@ static int migrate_vma_collect_huge_pmd(pmd_t *pmdp, unsigned long start,
> }
>
> if (softleaf_is_migration(entry)) {
>- migration_entry_wait_on_locked(entry, ptl);
>+ softleaf_entry_wait_on_locked(entry, ptl);
> spin_unlock(ptl);
softleaf_entry_wait_on_locked() unconditionally drops the ptl.
> return -EAGAIN;
> }
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v5] mm: Fix a hmm_range_fault() livelock / starvation problem
2026-02-11 22:23 ` Davidlohr Bueso
@ 2026-02-11 22:54 ` Alistair Popple
2026-02-11 23:22 ` Matthew Brost
0 siblings, 1 reply; 13+ messages in thread
From: Alistair Popple @ 2026-02-11 22:54 UTC (permalink / raw)
To: Thomas Hellstr�m, intel-xe, Ralph Campbell,
Christoph Hellwig, Jason Gunthorpe, Jason Gunthorpe,
Leon Romanovsky, Andrew Morton, Matthew Brost, John Hubbard,
linux-mm, dri-devel, stable
On 2026-02-12 at 09:23 +1100, Davidlohr Bueso <dave@stgolabs.net> wrote...
> On Tue, 10 Feb 2026, Thomas Hellstr�m wrote:
>
> > @@ -176,7 +176,7 @@ static int migrate_vma_collect_huge_pmd(pmd_t *pmdp, unsigned long start,
> > }
> >
> > if (softleaf_is_migration(entry)) {
> > - migration_entry_wait_on_locked(entry, ptl);
> > + softleaf_entry_wait_on_locked(entry, ptl);
> > spin_unlock(ptl);
>
> softleaf_entry_wait_on_locked() unconditionally drops the ptl.
As does migration_entry_wait_on_locked() so obviously a pre-existing issue.
I'm not sure why we would wait on a migration entry here though, maybe Balbir
can help?
> > return -EAGAIN;
> > }
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v5] mm: Fix a hmm_range_fault() livelock / starvation problem
2026-02-11 22:54 ` Alistair Popple
@ 2026-02-11 23:22 ` Matthew Brost
0 siblings, 0 replies; 13+ messages in thread
From: Matthew Brost @ 2026-02-11 23:22 UTC (permalink / raw)
To: Alistair Popple
Cc: Thomas Hellstr�m, intel-xe, Ralph Campbell,
Christoph Hellwig, Jason Gunthorpe, Jason Gunthorpe,
Leon Romanovsky, Andrew Morton, John Hubbard, linux-mm, dri-devel,
stable
On Thu, Feb 12, 2026 at 09:54:50AM +1100, Alistair Popple wrote:
> On 2026-02-12 at 09:23 +1100, Davidlohr Bueso <dave@stgolabs.net> wrote...
> > On Tue, 10 Feb 2026, Thomas Hellstr�m wrote:
> >
> > > @@ -176,7 +176,7 @@ static int migrate_vma_collect_huge_pmd(pmd_t *pmdp, unsigned long start,
> > > }
> > >
> > > if (softleaf_is_migration(entry)) {
> > > - migration_entry_wait_on_locked(entry, ptl);
> > > + softleaf_entry_wait_on_locked(entry, ptl);
> > > spin_unlock(ptl);
> >
> > softleaf_entry_wait_on_locked() unconditionally drops the ptl.
>
> As does migration_entry_wait_on_locked() so obviously a pre-existing issue.
> I'm not sure why we would wait on a migration entry here though, maybe Balbir
> can help?
I noticed this recently as being odd, given that we don’t wait on PTE
migration entries.
Looking again, this is unreachable code, since we bail out just above
this if statement on !softleaf_is_device_private(entry). So we should
just delete this entire if statement.
Matt
>
> > > return -EAGAIN;
> > > }
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v5] mm: Fix a hmm_range_fault() livelock / starvation problem
2026-02-10 11:56 [PATCH v5] mm: Fix a hmm_range_fault() livelock / starvation problem Thomas Hellström
` (4 preceding siblings ...)
2026-02-11 22:23 ` Davidlohr Bueso
@ 2026-04-06 12:54 ` Lorenzo Stoakes (Oracle)
2026-04-06 12:56 ` Lorenzo Stoakes (Oracle)
2026-04-06 14:08 ` Jason Gunthorpe
5 siblings, 2 replies; 13+ messages in thread
From: Lorenzo Stoakes (Oracle) @ 2026-04-06 12:54 UTC (permalink / raw)
To: Thomas Hellström
Cc: intel-xe, Alistair Popple, Ralph Campbell, Christoph Hellwig,
Jason Gunthorpe, Jason Gunthorpe, Leon Romanovsky, Andrew Morton,
Matthew Brost, John Hubbard, linux-mm, dri-devel, stable,
linux-fsdevel, David Hildenbrand, Zi Yan, Joshua Hahn, Rakie Kim,
Byungchul Park, Gregory Price, Ying Huang,
Matthew Wilcox (Oracle), Liam R. Howlett, Vlastimil Babka,
Mike Rapoport, Suren Baghdasaryan, Michal Hocko
Hi guys,
+cc missing M/R, fsdevel list
So this was merged upstream, and touches mm/, and even has a mm:
prefix... but was taken through a non-mm tree.
I'm confused as to why an mm: patch didn't go through the mm tree, but when
we do stuff like this, isn't the done thing to get maintainer signoff
before doing something like that, anyway?
I see John gave a tag (and he's great so that gives me confidence here),
but we should really follow the procedure on this properly.
So:
$ scripts/get_maintainer.pl --no-git include/linux/migrate.h mm/filemap.c mm/memory.c mm/migrate.c mm/migrate_device.c | grep maintainer
Andrew Morton <akpm@linux-foundation.org> (maintainer:MEMORY MANAGEMENT - MEMORY POLICY AND MIGRATION)
David Hildenbrand <david@kernel.org> (maintainer:MEMORY MANAGEMENT - MEMORY POLICY AND MIGRATION)
"Matthew Wilcox (Oracle)" <willy@infradead.org> (maintainer:PAGE CACHE)
Are the maintainers, and there are also 14 reviewers too.
None were even cc'd here which isn't helpful :)
I realise mm process has _perhaps_ not been quite so prescriptive as this
in the past, but we definitely require this going forward, and in general
you should run get_maintainers.pl and cc relevant people to help with the
pain that is kernel email :)
As I don't _think_ anybody noticed it, unfortunately. linux-mm is just too
busy to keep track there, generally.
We are semi-tetchy about this as we've had... fun in the past with some
bigger changes that went through other trees. This is, at least, very
isolated.
Thanks, Lorenzo
On Tue, Feb 10, 2026 at 12:56:53PM +0100, Thomas Hellström wrote:
> If hmm_range_fault() fails a folio_trylock() in do_swap_page,
> trying to acquire the lock of a device-private folio for migration,
> to ram, the function will spin until it succeeds grabbing the lock.
>
> However, if the process holding the lock is depending on a work
> item to be completed, which is scheduled on the same CPU as the
> spinning hmm_range_fault(), that work item might be starved and
> we end up in a livelock / starvation situation which is never
> resolved.
>
> This can happen, for example if the process holding the
> device-private folio lock is stuck in
> migrate_device_unmap()->lru_add_drain_all()
> sinc lru_add_drain_all() requires a short work-item
> to be run on all online cpus to complete.
>
> A prerequisite for this to happen is:
> a) Both zone device and system memory folios are considered in
> migrate_device_unmap(), so that there is a reason to call
> lru_add_drain_all() for a system memory folio while a
> folio lock is held on a zone device folio.
> b) The zone device folio has an initial mapcount > 1 which causes
> at least one migration PTE entry insertion to be deferred to
> try_to_migrate(), which can happen after the call to
> lru_add_drain_all().
> c) No or voluntary only preemption.
>
> This all seems pretty unlikely to happen, but indeed is hit by
> the "xe_exec_system_allocator" igt test.
>
> Resolve this by waiting for the folio to be unlocked if the
> folio_trylock() fails in do_swap_page().
>
> Rename migration_entry_wait_on_locked() to
> softleaf_entry_wait_unlock() and update its documentation to
> indicate the new use-case.
>
> Future code improvements might consider moving
> the lru_add_drain_all() call in migrate_device_unmap() to be
> called *after* all pages have migration entries inserted.
> That would eliminate also b) above.
>
> v2:
> - Instead of a cond_resched() in hmm_range_fault(),
> eliminate the problem by waiting for the folio to be unlocked
> in do_swap_page() (Alistair Popple, Andrew Morton)
> v3:
> - Add a stub migration_entry_wait_on_locked() for the
> !CONFIG_MIGRATION case. (Kernel Test Robot)
> v4:
> - Rename migrate_entry_wait_on_locked() to
> softleaf_entry_wait_on_locked() and update docs (Alistair Popple)
> v5:
> - Add a WARN_ON_ONCE() for the !CONFIG_MIGRATION
> version of softleaf_entry_wait_on_locked().
> - Modify wording around function names in the commit message
> (Andrew Morton)
>
> Suggested-by: Alistair Popple <apopple@nvidia.com>
> Fixes: 1afaeb8293c9 ("mm/migrate: Trylock device page in do_swap_page")
> Cc: Ralph Campbell <rcampbell@nvidia.com>
> Cc: Christoph Hellwig <hch@lst.de>
> Cc: Jason Gunthorpe <jgg@mellanox.com>
> Cc: Jason Gunthorpe <jgg@ziepe.ca>
> Cc: Leon Romanovsky <leon@kernel.org>
> Cc: Andrew Morton <akpm@linux-foundation.org>
> Cc: Matthew Brost <matthew.brost@intel.com>
> Cc: John Hubbard <jhubbard@nvidia.com>
> Cc: Alistair Popple <apopple@nvidia.com>
> Cc: linux-mm@kvack.org
> Cc: <dri-devel@lists.freedesktop.org>
> Signed-off-by: Thomas Hellström <thomas.hellstrom@linux.intel.com>
> Cc: <stable@vger.kernel.org> # v6.15+
> Reviewed-by: John Hubbard <jhubbard@nvidia.com> #v3
> ---
> include/linux/migrate.h | 10 +++++++++-
> mm/filemap.c | 15 ++++++++++-----
> mm/memory.c | 3 ++-
> mm/migrate.c | 8 ++++----
> mm/migrate_device.c | 2 +-
> 5 files changed, 26 insertions(+), 12 deletions(-)
>
> diff --git a/include/linux/migrate.h b/include/linux/migrate.h
> index 26ca00c325d9..d5af2b7f577b 100644
> --- a/include/linux/migrate.h
> +++ b/include/linux/migrate.h
> @@ -65,7 +65,7 @@ bool isolate_folio_to_list(struct folio *folio, struct list_head *list);
>
> int migrate_huge_page_move_mapping(struct address_space *mapping,
> struct folio *dst, struct folio *src);
> -void migration_entry_wait_on_locked(softleaf_t entry, spinlock_t *ptl)
> +void softleaf_entry_wait_on_locked(softleaf_t entry, spinlock_t *ptl)
> __releases(ptl);
> void folio_migrate_flags(struct folio *newfolio, struct folio *folio);
> int folio_migrate_mapping(struct address_space *mapping,
> @@ -97,6 +97,14 @@ static inline int set_movable_ops(const struct movable_operations *ops, enum pag
> return -ENOSYS;
> }
>
> +static inline void softleaf_entry_wait_on_locked(softleaf_t entry, spinlock_t *ptl)
> + __releases(ptl)
> +{
> + WARN_ON_ONCE(1);
> +
> + spin_unlock(ptl);
> +}
> +
> #endif /* CONFIG_MIGRATION */
>
> #ifdef CONFIG_NUMA_BALANCING
> diff --git a/mm/filemap.c b/mm/filemap.c
> index ebd75684cb0a..d98e4883f13d 100644
> --- a/mm/filemap.c
> +++ b/mm/filemap.c
> @@ -1379,14 +1379,16 @@ static inline int folio_wait_bit_common(struct folio *folio, int bit_nr,
>
> #ifdef CONFIG_MIGRATION
> /**
> - * migration_entry_wait_on_locked - Wait for a migration entry to be removed
> - * @entry: migration swap entry.
> + * softleaf_entry_wait_on_locked - Wait for a migration entry or
> + * device_private entry to be removed.
> + * @entry: migration or device_private swap entry.
> * @ptl: already locked ptl. This function will drop the lock.
> *
> - * Wait for a migration entry referencing the given page to be removed. This is
> + * Wait for a migration entry referencing the given page, or device_private
> + * entry referencing a dvice_private page to be unlocked. This is
> * equivalent to folio_put_wait_locked(folio, TASK_UNINTERRUPTIBLE) except
> * this can be called without taking a reference on the page. Instead this
> - * should be called while holding the ptl for the migration entry referencing
> + * should be called while holding the ptl for @entry referencing
> * the page.
> *
> * Returns after unlocking the ptl.
> @@ -1394,7 +1396,7 @@ static inline int folio_wait_bit_common(struct folio *folio, int bit_nr,
> * This follows the same logic as folio_wait_bit_common() so see the comments
> * there.
> */
> -void migration_entry_wait_on_locked(softleaf_t entry, spinlock_t *ptl)
> +void softleaf_entry_wait_on_locked(softleaf_t entry, spinlock_t *ptl)
> __releases(ptl)
I mean I have to say though I'm happy you propagated the softleaf thing
further at least ;)
> {
> struct wait_page_queue wait_page;
> @@ -1428,6 +1430,9 @@ void migration_entry_wait_on_locked(softleaf_t entry, spinlock_t *ptl)
> * If a migration entry exists for the page the migration path must hold
> * a valid reference to the page, and it must take the ptl to remove the
> * migration entry. So the page is valid until the ptl is dropped.
> + * Similarly any path attempting to drop the last reference to a
> + * device-private page needs to grab the ptl to remove the device-private
> + * entry.
> */
> spin_unlock(ptl);
>
> diff --git a/mm/memory.c b/mm/memory.c
> index da360a6eb8a4..20172476a57f 100644
> --- a/mm/memory.c
> +++ b/mm/memory.c
> @@ -4684,7 +4684,8 @@ vm_fault_t do_swap_page(struct vm_fault *vmf)
> unlock_page(vmf->page);
> put_page(vmf->page);
> } else {
> - pte_unmap_unlock(vmf->pte, vmf->ptl);
> + pte_unmap(vmf->pte);
> + softleaf_entry_wait_on_locked(entry, vmf->ptl);
> }
> } else if (softleaf_is_hwpoison(entry)) {
> ret = VM_FAULT_HWPOISON;
> diff --git a/mm/migrate.c b/mm/migrate.c
> index 4688b9e38cd2..cf6449b4202e 100644
> --- a/mm/migrate.c
> +++ b/mm/migrate.c
> @@ -499,7 +499,7 @@ void migration_entry_wait(struct mm_struct *mm, pmd_t *pmd,
> if (!softleaf_is_migration(entry))
> goto out;
>
> - migration_entry_wait_on_locked(entry, ptl);
> + softleaf_entry_wait_on_locked(entry, ptl);
> return;
> out:
> spin_unlock(ptl);
> @@ -531,10 +531,10 @@ void migration_entry_wait_huge(struct vm_area_struct *vma, unsigned long addr, p
> * If migration entry existed, safe to release vma lock
> * here because the pgtable page won't be freed without the
> * pgtable lock released. See comment right above pgtable
> - * lock release in migration_entry_wait_on_locked().
> + * lock release in softleaf_entry_wait_on_locked().
> */
> hugetlb_vma_unlock_read(vma);
> - migration_entry_wait_on_locked(entry, ptl);
> + softleaf_entry_wait_on_locked(entry, ptl);
> return;
> }
>
> @@ -552,7 +552,7 @@ void pmd_migration_entry_wait(struct mm_struct *mm, pmd_t *pmd)
> ptl = pmd_lock(mm, pmd);
> if (!pmd_is_migration_entry(*pmd))
> goto unlock;
> - migration_entry_wait_on_locked(softleaf_from_pmd(*pmd), ptl);
> + softleaf_entry_wait_on_locked(softleaf_from_pmd(*pmd), ptl);
> return;
> unlock:
> spin_unlock(ptl);
> diff --git a/mm/migrate_device.c b/mm/migrate_device.c
> index 23379663b1e1..deab89fd4541 100644
> --- a/mm/migrate_device.c
> +++ b/mm/migrate_device.c
> @@ -176,7 +176,7 @@ static int migrate_vma_collect_huge_pmd(pmd_t *pmdp, unsigned long start,
> }
>
> if (softleaf_is_migration(entry)) {
> - migration_entry_wait_on_locked(entry, ptl);
> + softleaf_entry_wait_on_locked(entry, ptl);
> spin_unlock(ptl);
> return -EAGAIN;
> }
> --
> 2.52.0
>
>
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v5] mm: Fix a hmm_range_fault() livelock / starvation problem
2026-04-06 12:54 ` Lorenzo Stoakes (Oracle)
@ 2026-04-06 12:56 ` Lorenzo Stoakes (Oracle)
2026-04-06 19:11 ` Matthew Brost
2026-04-06 14:08 ` Jason Gunthorpe
1 sibling, 1 reply; 13+ messages in thread
From: Lorenzo Stoakes (Oracle) @ 2026-04-06 12:56 UTC (permalink / raw)
To: Thomas Hellström
Cc: intel-xe, Alistair Popple, Ralph Campbell, Christoph Hellwig,
Jason Gunthorpe, Jason Gunthorpe, Leon Romanovsky, Andrew Morton,
Matthew Brost, John Hubbard, linux-mm, dri-devel, stable,
linux-fsdevel, David Hildenbrand, Zi Yan, Joshua Hahn, Rakie Kim,
Byungchul Park, Gregory Price, Ying Huang,
Matthew Wilcox (Oracle), Liam R. Howlett, Vlastimil Babka,
Mike Rapoport, Suren Baghdasaryan, Michal Hocko
On Mon, Apr 06, 2026 at 01:54:13PM +0100, Lorenzo Stoakes (Oracle) wrote:
> I see John gave a tag (and he's great so that gives me confidence here),
> but we should really follow the procedure on this properly.
Oh and just noticed Alastair also :) so that adds further confidence, so this is
really a point about cc/M signoff requirement going forwards.
Thanks, Lorenzo
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v5] mm: Fix a hmm_range_fault() livelock / starvation problem
2026-04-06 12:54 ` Lorenzo Stoakes (Oracle)
2026-04-06 12:56 ` Lorenzo Stoakes (Oracle)
@ 2026-04-06 14:08 ` Jason Gunthorpe
1 sibling, 0 replies; 13+ messages in thread
From: Jason Gunthorpe @ 2026-04-06 14:08 UTC (permalink / raw)
To: Lorenzo Stoakes (Oracle)
Cc: Thomas Hellström, intel-xe, Alistair Popple, Ralph Campbell,
Christoph Hellwig, Leon Romanovsky, Andrew Morton, Matthew Brost,
John Hubbard, linux-mm, dri-devel, stable, linux-fsdevel,
David Hildenbrand, Zi Yan, Joshua Hahn, Rakie Kim, Byungchul Park,
Gregory Price, Ying Huang, Matthew Wilcox (Oracle),
Liam R. Howlett, Vlastimil Babka, Mike Rapoport,
Suren Baghdasaryan, Michal Hocko
On Mon, Apr 06, 2026 at 01:54:13PM +0100, Lorenzo Stoakes (Oracle) wrote:
> Hi guys,
>
> +cc missing M/R, fsdevel list
>
> So this was merged upstream, and touches mm/, and even has a mm:
> prefix... but was taken through a non-mm tree.
Also, how come there is no email on lore reporting someone accepted it?
Jason
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v5] mm: Fix a hmm_range_fault() livelock / starvation problem
2026-04-06 12:56 ` Lorenzo Stoakes (Oracle)
@ 2026-04-06 19:11 ` Matthew Brost
2026-04-07 10:10 ` Lorenzo Stoakes (Oracle)
0 siblings, 1 reply; 13+ messages in thread
From: Matthew Brost @ 2026-04-06 19:11 UTC (permalink / raw)
To: Lorenzo Stoakes (Oracle)
Cc: Thomas Hellström, intel-xe, Alistair Popple, Ralph Campbell,
Christoph Hellwig, Jason Gunthorpe, Jason Gunthorpe,
Leon Romanovsky, Andrew Morton, John Hubbard, linux-mm, dri-devel,
stable, linux-fsdevel, David Hildenbrand, Zi Yan, Joshua Hahn,
Rakie Kim, Byungchul Park, Gregory Price, Ying Huang,
Matthew Wilcox (Oracle), Liam R. Howlett, Vlastimil Babka,
Mike Rapoport, Suren Baghdasaryan, Michal Hocko
On Mon, Apr 06, 2026 at 01:56:49PM +0100, Lorenzo Stoakes (Oracle) wrote:
> On Mon, Apr 06, 2026 at 01:54:13PM +0100, Lorenzo Stoakes (Oracle) wrote:
> > I see John gave a tag (and he's great so that gives me confidence here),
> > but we should really follow the procedure on this properly.
>
> Oh and just noticed Alastair also :) so that adds further confidence, so this is
> really a point about cc/M signoff requirement going forwards.
+1.
Andrew did ACK this via DRM here [1].
When we take external subsystem patches through DRM, our merge script
requires ACKs from an external maintainer, as determined by
get_maintainers.pl.
I’m not sure what happened here, but it looks like Andrew’s ACK was lost
on the patch, and somehow our merge tool allowed it to go in regardless.
We will be more diligent going forward.
Matt
[1] https://patchwork.freedesktop.org/patch/703183/?series=161082&rev=3#comment_1294670
>
> Thanks, Lorenzo
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v5] mm: Fix a hmm_range_fault() livelock / starvation problem
2026-04-06 19:11 ` Matthew Brost
@ 2026-04-07 10:10 ` Lorenzo Stoakes (Oracle)
0 siblings, 0 replies; 13+ messages in thread
From: Lorenzo Stoakes (Oracle) @ 2026-04-07 10:10 UTC (permalink / raw)
To: Matthew Brost
Cc: Thomas Hellström, intel-xe, Alistair Popple, Ralph Campbell,
Christoph Hellwig, Jason Gunthorpe, Jason Gunthorpe,
Leon Romanovsky, Andrew Morton, John Hubbard, linux-mm, dri-devel,
stable, linux-fsdevel, David Hildenbrand, Zi Yan, Joshua Hahn,
Rakie Kim, Byungchul Park, Gregory Price, Ying Huang,
Matthew Wilcox (Oracle), Liam R. Howlett, Vlastimil Babka,
Mike Rapoport, Suren Baghdasaryan, Michal Hocko
On Mon, Apr 06, 2026 at 12:11:28PM -0700, Matthew Brost wrote:
> On Mon, Apr 06, 2026 at 01:56:49PM +0100, Lorenzo Stoakes (Oracle) wrote:
> > On Mon, Apr 06, 2026 at 01:54:13PM +0100, Lorenzo Stoakes (Oracle) wrote:
> > > I see John gave a tag (and he's great so that gives me confidence here),
> > > but we should really follow the procedure on this properly.
> >
> > Oh and just noticed Alastair also :) so that adds further confidence, so this is
> > really a point about cc/M signoff requirement going forwards.
>
> +1.
>
> Andrew did ACK this via DRM here [1].
>
> When we take external subsystem patches through DRM, our merge script
> requires ACKs from an external maintainer, as determined by
> get_maintainers.pl.
>
> I’m not sure what happened here, but it looks like Andrew’s ACK was lost
> on the patch, and somehow our merge tool allowed it to go in regardless.
> We will be more diligent going forward.
ACK on that... ack :), but please make sure to cc- at least the relevant
maintainers on these series going forwards also.
I realise mm has changed somewhat in its approach with this so forgiveable you
missed it :>) but - at least for me - reading mailing lists is just out due to
bandwidth limitations.
>
> Matt
>
> [1] https://patchwork.freedesktop.org/patch/703183/?series=161082&rev=3#comment_1294670
>
> >
Thanks, Lorenzo
^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2026-04-07 10:10 UTC | newest]
Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-02-10 11:56 [PATCH v5] mm: Fix a hmm_range_fault() livelock / starvation problem Thomas Hellström
2026-02-10 12:56 ` ✓ CI.KUnit: success for mm: Fix a hmm_range_fault() livelock / starvation problem (rev4) Patchwork
2026-02-10 13:30 ` ✓ Xe.CI.BAT: " Patchwork
2026-02-10 16:51 ` ✓ Xe.CI.FULL: " Patchwork
2026-02-10 22:40 ` [PATCH v5] mm: Fix a hmm_range_fault() livelock / starvation problem Alistair Popple
2026-02-11 22:23 ` Davidlohr Bueso
2026-02-11 22:54 ` Alistair Popple
2026-02-11 23:22 ` Matthew Brost
2026-04-06 12:54 ` Lorenzo Stoakes (Oracle)
2026-04-06 12:56 ` Lorenzo Stoakes (Oracle)
2026-04-06 19:11 ` Matthew Brost
2026-04-07 10:10 ` Lorenzo Stoakes (Oracle)
2026-04-06 14:08 ` Jason Gunthorpe
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox