* [PATCH v2 0/5] mm, drm/ttm, drm/xe: Avoid reclaim/eviction loops under fragmentation
@ 2026-04-23 5:56 Matthew Brost
2026-04-23 5:56 ` [PATCH v2 1/5] mm: Introduce zone_appears_fragmented() Matthew Brost
` (7 more replies)
0 siblings, 8 replies; 16+ messages in thread
From: Matthew Brost @ 2026-04-23 5:56 UTC (permalink / raw)
To: intel-xe, dri-devel
Cc: Tvrtko Ursulin, Thomas Hellström, Carlos Santa,
Christian Koenig, Huang Rui, Matthew Auld, Maarten Lankhorst,
Maxime Ripard, Thomas Zimmermann, David Airlie, Simona Vetter,
Daniel Colascione, Andrew Morton, David Hildenbrand,
Lorenzo Stoakes, Liam R. Howlett, Vlastimil Babka, Mike Rapoport,
Suren Baghdasaryan, Michal Hocko, linux-mm, linux-kernel
TTM allocations at higher orders can drive Xe into a pathological
reclaim loop when memory is fragmented:
kswapd → shrinker → eviction → rebind (exec ioctl) → repeat
In this state, reclaim is triggered despite substantial free memory,
but fails to produce contiguous higher-order pages. The Xe shrinker then
evicts active buffer objects, increasing faulting and rebind activity
and further feeding the loop. The result is high CPU overhead and poor
GPU forward progress.
This issue was first reported in [1] and independently observed
internally and by Google.
A simple reproducer is:
- Boot an iGPU system with mem=8G
- Launch 10 Chrome tabs running the WebGL aquarium demo
- Configure each tab with ~5k fish
Under this workload, ftrace shows a continuous loop of:
xe_shrinker_scan (kswapd)
xe_vma_rebind_exec
Performance degrades significantly, with each tab dropping to ~2 FPS on
PTL (Ubuntu 24.04).
At the same time, /proc/buddyinfo shows substantial free memory but no
higher-order availability. For example, the Normal zone:
Count: 4063 4595 3455 3400 3139 2762 2293 1655 643 0 0
This corresponds to ~2.8GB free memory, but no order-9 (2MB) blocks,
indicating severe fragmentation.
This series addresses the issue in two ways:
TTM: Restrict direct reclaim to beneficial_order. Larger allocations
use __GFP_NORETRY to fail quickly rather than triggering reclaim.
Xe: Introduce a heuristic in the shrinker to avoid eviction when
running under kswapd and the system appears memory-rich but
fragmented.
With these changes, the reclaim/eviction loop is eliminated. The same
workload improves to ~10 FPS per tab (Ubuntu 24.04) or ~15 FPS per tab
(Ubuntu 24.10), and kswapd activity subsides.
Buddyinfo after applying this series shows restored higher-order
availability:
Count: 8526 7067 3092 1959 1292 660 194 28 20 13 1
Matt
v2:
- Layer with core MM / TTM helpers (Thomas)
[1] https://patchwork.freedesktop.org/patch/716404/?series=164353&rev=1
Cc: Tvrtko Ursulin <tvrtko.ursulin@igalia.com>
Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com>
Cc: Carlos Santa <carlos.santa@intel.com>
Cc: Christian Koenig <christian.koenig@amd.com>
Cc: Huang Rui <ray.huang@amd.com>
Cc: Matthew Auld <matthew.auld@intel.com>
Cc: Matthew Brost <matthew.brost@intel.com>
Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Cc: Maxime Ripard <mripard@kernel.org>
Cc: Thomas Zimmermann <tzimmermann@suse.de>
Cc: David Airlie <airlied@gmail.com>
Cc: Simona Vetter <simona@ffwll.ch>
CC: dri-devel@lists.freedesktop.org
Cc: Daniel Colascione <dancol@dancol.org>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: David Hildenbrand <david@kernel.org>
Cc: Lorenzo Stoakes <ljs@kernel.org>
Cc: "Liam R. Howlett" <Liam.Howlett@oracle.com>
Cc: Vlastimil Babka <vbabka@kernel.org>
Cc: Mike Rapoport <rppt@kernel.org>
Cc: Suren Baghdasaryan <surenb@google.com>
Cc: Michal Hocko <mhocko@suse.com>
Cc: linux-mm@kvack.org
Cc: linux-kernel@vger.kernel.org
Matthew Brost (5):
mm: Introduce zone_appears_fragmented()
drm/ttm: Issue direct reclaim at beneficial_order
drm/ttm: Introduce ttm_bo_shrink_kswap_fragmented()
drm/xe: Set TTM device beneficial_order to 9 (2M)
drm/xe: Avoid shrinker reclaim from kswapd under fragmentation
drivers/gpu/drm/ttm/ttm_bo_util.c | 34 +++++++++++++++++++++++++++++++
drivers/gpu/drm/ttm/ttm_pool.c | 4 ++--
drivers/gpu/drm/xe/xe_device.c | 3 ++-
drivers/gpu/drm/xe/xe_shrinker.c | 3 +++
include/drm/ttm/ttm_bo.h | 2 ++
include/linux/vmstat.h | 13 ++++++++++++
6 files changed, 56 insertions(+), 3 deletions(-)
--
2.34.1
^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH v2 1/5] mm: Introduce zone_appears_fragmented()
2026-04-23 5:56 [PATCH v2 0/5] mm, drm/ttm, drm/xe: Avoid reclaim/eviction loops under fragmentation Matthew Brost
@ 2026-04-23 5:56 ` Matthew Brost
2026-04-23 6:04 ` Balbir Singh
2026-04-23 10:27 ` David Hildenbrand (Arm)
2026-04-23 5:56 ` [PATCH v2 2/5] drm/ttm: Issue direct reclaim at beneficial_order Matthew Brost
` (6 subsequent siblings)
7 siblings, 2 replies; 16+ messages in thread
From: Matthew Brost @ 2026-04-23 5:56 UTC (permalink / raw)
To: intel-xe, dri-devel
Cc: Thomas Hellström, Andrew Morton, David Hildenbrand,
Lorenzo Stoakes, Liam R. Howlett, Vlastimil Babka, Mike Rapoport,
Suren Baghdasaryan, Michal Hocko, linux-mm, linux-kernel
Introduce zone_appears_fragmented() as a lightweight helper to allow
subsystems to make coarse decisions about reclaim behavior in the
presence of likely fragmentation.
The helper implements a simple heuristic: if the number of free pages
in a zone exceeds twice the high watermark, the zone is considered to
have ample free memory and allocation failures are more likely due to
fragmentation than overall memory pressure.
This is intentionally imprecise and is not meant to replace the core
MM compaction or fragmentation accounting logic. Instead, it provides
a cheap signal for callers (e.g., shrinkers) that wish to avoid
overly aggressive reclaim when sufficient free memory exists but
high-order allocations may still fail.
No functional changes; this is a preparatory helper for future users.
Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: David Hildenbrand <david@kernel.org>
Cc: Lorenzo Stoakes <ljs@kernel.org>
Cc: "Liam R. Howlett" <Liam.Howlett@oracle.com>
Cc: Vlastimil Babka <vbabka@kernel.org>
Cc: Mike Rapoport <rppt@kernel.org>
Cc: Suren Baghdasaryan <surenb@google.com>
Cc: Michal Hocko <mhocko@suse.com>
Cc: linux-mm@kvack.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Matthew Brost <matthew.brost@intel.com>
---
include/linux/vmstat.h | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/include/linux/vmstat.h b/include/linux/vmstat.h
index 3c9c266cf782..568d9f4f1a1f 100644
--- a/include/linux/vmstat.h
+++ b/include/linux/vmstat.h
@@ -483,6 +483,19 @@ static inline const char *zone_stat_name(enum zone_stat_item item)
return vmstat_text[item];
}
+static inline bool zone_appears_fragmented(struct zone *zone)
+{
+ /*
+ * Simple heuristic: if the number of free pages is more than twice the
+ * high watermark, this strongly suggests that the zone is heavily
+ * fragmented when called from a shrinker.
+ */
+ if (zone_page_state(zone, NR_FREE_PAGES) > high_wmark_pages(zone) * 2)
+ return true;
+
+ return false;
+}
+
#ifdef CONFIG_NUMA
static inline const char *numa_stat_name(enum numa_stat_item item)
{
--
2.34.1
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH v2 2/5] drm/ttm: Issue direct reclaim at beneficial_order
2026-04-23 5:56 [PATCH v2 0/5] mm, drm/ttm, drm/xe: Avoid reclaim/eviction loops under fragmentation Matthew Brost
2026-04-23 5:56 ` [PATCH v2 1/5] mm: Introduce zone_appears_fragmented() Matthew Brost
@ 2026-04-23 5:56 ` Matthew Brost
2026-04-23 5:56 ` [PATCH v2 3/5] drm/ttm: Introduce ttm_bo_shrink_kswap_fragmented() Matthew Brost
` (5 subsequent siblings)
7 siblings, 0 replies; 16+ messages in thread
From: Matthew Brost @ 2026-04-23 5:56 UTC (permalink / raw)
To: intel-xe, dri-devel
Cc: Tvrtko Ursulin, Thomas Hellström, Carlos Santa,
Christian Koenig, Huang Rui, Matthew Auld, Maarten Lankhorst,
Maxime Ripard, Thomas Zimmermann, David Airlie, Simona Vetter,
Daniel Colascione
Triggering kswap at an order higher than beneficial_order makes little
sense, as the driver has already indicated the optimal order at which
reclaim is effective. Similarly, issuing direct reclaim or triggering
kswap at a lower order than beneficial_order is ineffective, since the
driver does not benefit from reclaiming lower-order pages.
As a result, direct reclaim should only be issued with __GFP_NORETRY at
exactly beneficial_order, or as a fallback, direct reclaim without
__GFP_NORETRY at order 0 when failure is not an option.
Cc: Tvrtko Ursulin <tvrtko.ursulin@igalia.com>
Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com>
Cc: Carlos Santa <carlos.santa@intel.com>
Cc: Christian Koenig <christian.koenig@amd.com>
Cc: Huang Rui <ray.huang@amd.com>
Cc: Matthew Auld <matthew.auld@intel.com>
Cc: Matthew Brost <matthew.brost@intel.com>
Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Cc: Maxime Ripard <mripard@kernel.org>
Cc: Thomas Zimmermann <tzimmermann@suse.de>
Cc: David Airlie <airlied@gmail.com>
Cc: Simona Vetter <simona@ffwll.ch>
CC: dri-devel@lists.freedesktop.org
Cc: Daniel Colascione <dancol@dancol.org>
Signed-off-by: Matthew Brost <matthew.brost@intel.com>
Reviewed-by: Christian Koenig <christian.koenig@amd.com>
---
drivers/gpu/drm/ttm/ttm_pool.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/ttm/ttm_pool.c b/drivers/gpu/drm/ttm/ttm_pool.c
index 26a3689e5fd9..8425dbcc6c68 100644
--- a/drivers/gpu/drm/ttm/ttm_pool.c
+++ b/drivers/gpu/drm/ttm/ttm_pool.c
@@ -165,8 +165,8 @@ static struct page *ttm_pool_alloc_page(struct ttm_pool *pool, gfp_t gfp_flags,
* Do not add latency to the allocation path for allocations orders
* device tolds us do not bring them additional performance gains.
*/
- if (beneficial_order && order > beneficial_order)
- gfp_flags &= ~__GFP_DIRECT_RECLAIM;
+ if (order && beneficial_order && order != beneficial_order)
+ gfp_flags &= ~__GFP_RECLAIM;
if (!ttm_pool_uses_dma_alloc(pool)) {
p = alloc_pages_node(pool->nid, gfp_flags, order);
--
2.34.1
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH v2 3/5] drm/ttm: Introduce ttm_bo_shrink_kswap_fragmented()
2026-04-23 5:56 [PATCH v2 0/5] mm, drm/ttm, drm/xe: Avoid reclaim/eviction loops under fragmentation Matthew Brost
2026-04-23 5:56 ` [PATCH v2 1/5] mm: Introduce zone_appears_fragmented() Matthew Brost
2026-04-23 5:56 ` [PATCH v2 2/5] drm/ttm: Issue direct reclaim at beneficial_order Matthew Brost
@ 2026-04-23 5:56 ` Matthew Brost
2026-04-23 5:56 ` [PATCH v2 4/5] drm/xe: Set TTM device beneficial_order to 9 (2M) Matthew Brost
` (4 subsequent siblings)
7 siblings, 0 replies; 16+ messages in thread
From: Matthew Brost @ 2026-04-23 5:56 UTC (permalink / raw)
To: intel-xe, dri-devel
Cc: Thomas Hellström, Carlos Santa, Christian Koenig, Huang Rui,
Matthew Auld, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann,
David Airlie, Simona Vetter, Daniel Colascione
Introduce ttm_bo_shrink_kswap_fragmented() to allow TTM users to
distinguish background reclaim from kswapd that is likely driven by
high-order allocation failures under fragmentation.
The helper returns true when:
- reclaim is running in kswapd, and
- the target node is valid, and
- one of the relevant zones reports free pages significantly above
its high watermark (via zone_appears_fragmented()).
This provides a coarse signal that overall free memory is available,
and that reclaim activity may be driven by fragmentation rather than
true memory pressure.
The intent is to allow drivers to adjust shrinker behavior in this
case, for example by preferring purgeable or low-value objects instead
of aggressively evicting active working sets in the background reclaim
path.
The heuristic is intentionally simple and conservative, and is not
intended to replace core MM fragmentation or compaction decisions.
No functional change; this is a preparatory helper for TTM users.
Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com>
Cc: Carlos Santa <carlos.santa@intel.com>
Cc: Christian Koenig <christian.koenig@amd.com>
Cc: Huang Rui <ray.huang@amd.com>
Cc: Matthew Auld <matthew.auld@intel.com>
Cc: Matthew Brost <matthew.brost@intel.com>
Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Cc: Maxime Ripard <mripard@kernel.org>
Cc: Thomas Zimmermann <tzimmermann@suse.de>
Cc: David Airlie <airlied@gmail.com>
Cc: Simona Vetter <simona@ffwll.ch>
CC: dri-devel@lists.freedesktop.org
Cc: Daniel Colascione <dancol@dancol.org>
Signed-off-by: Matthew Brost <matthew.brost@intel.com>
---
drivers/gpu/drm/ttm/ttm_bo_util.c | 34 +++++++++++++++++++++++++++++++
include/drm/ttm/ttm_bo.h | 2 ++
2 files changed, 36 insertions(+)
diff --git a/drivers/gpu/drm/ttm/ttm_bo_util.c b/drivers/gpu/drm/ttm/ttm_bo_util.c
index f83b7d5ec6c6..46adcb7d9a0c 100644
--- a/drivers/gpu/drm/ttm/ttm_bo_util.c
+++ b/drivers/gpu/drm/ttm/ttm_bo_util.c
@@ -1169,3 +1169,37 @@ bool ttm_bo_shrink_avoid_wait(void)
return !current_is_kswapd();
}
EXPORT_SYMBOL(ttm_bo_shrink_avoid_wait);
+
+/**
+ * ttm_bo_shrink_kswap_fragmented() - Whether in kswap and memory appears
+ * fragmented
+ * @nid: current node being shrunk
+ *
+ * Return: true if in kswap and memory appears fragmented, false is not.
+ */
+bool ttm_bo_shrink_kswap_fragmented(int nid)
+{
+ enum zone_type zone_type;
+
+ if (!current_is_kswapd())
+ return false;
+
+ if (!numa_valid_node(nid))
+ return false;
+
+#if IS_ENABLED(CONFIG_ZONE_DMA32)
+ zone_type = ZONE_DMA32;
+#else
+ zone_type = ZONE_NORMAL;
+#endif
+
+ for (; zone_type <= ZONE_NORMAL; ++zone_type) {
+ struct zone *zone = &NODE_DATA(nid)->node_zones[zone_type];
+
+ if (zone_appears_fragmented(zone))
+ return true;
+ }
+
+ return false;
+}
+EXPORT_SYMBOL(ttm_bo_shrink_kswap_fragmented);
diff --git a/include/drm/ttm/ttm_bo.h b/include/drm/ttm/ttm_bo.h
index 8310bc3d55f9..9a457fd667bb 100644
--- a/include/drm/ttm/ttm_bo.h
+++ b/include/drm/ttm/ttm_bo.h
@@ -262,6 +262,8 @@ bool ttm_bo_shrink_suitable(struct ttm_buffer_object *bo, struct ttm_operation_c
bool ttm_bo_shrink_avoid_wait(void);
+bool ttm_bo_shrink_kswap_fragmented(int nid);
+
/**
* ttm_bo_reserve:
*
--
2.34.1
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH v2 4/5] drm/xe: Set TTM device beneficial_order to 9 (2M)
2026-04-23 5:56 [PATCH v2 0/5] mm, drm/ttm, drm/xe: Avoid reclaim/eviction loops under fragmentation Matthew Brost
` (2 preceding siblings ...)
2026-04-23 5:56 ` [PATCH v2 3/5] drm/ttm: Introduce ttm_bo_shrink_kswap_fragmented() Matthew Brost
@ 2026-04-23 5:56 ` Matthew Brost
2026-04-23 5:56 ` [PATCH v2 5/5] drm/xe: Avoid shrinker reclaim from kswapd under fragmentation Matthew Brost
` (3 subsequent siblings)
7 siblings, 0 replies; 16+ messages in thread
From: Matthew Brost @ 2026-04-23 5:56 UTC (permalink / raw)
To: intel-xe, dri-devel; +Cc: Thomas Hellström, Carlos Santa, Matthew Auld
Set the TTM device beneficial_order to 9 (2M), which is the sweet
spot for Xe when attempting reclaim on system memory BOs, as it matches
the large GPU page size. This ensures reclaim is attempted at the most
effective order for the driver.
Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com>
Cc: Carlos Santa <carlos.santa@intel.com>
Cc: Matthew Auld <matthew.auld@intel.com>
Signed-off-by: Matthew Brost <matthew.brost@intel.com>
---
drivers/gpu/drm/xe/xe_device.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/xe_device.c
index 4b45b617a039..3f719ab08d1c 100644
--- a/drivers/gpu/drm/xe/xe_device.c
+++ b/drivers/gpu/drm/xe/xe_device.c
@@ -500,7 +500,8 @@ struct xe_device *xe_device_create(struct pci_dev *pdev,
err = ttm_device_init(&xe->ttm, &xe_ttm_funcs, xe->drm.dev,
xe->drm.anon_inode->i_mapping,
- xe->drm.vma_offset_manager, 0);
+ xe->drm.vma_offset_manager,
+ TTM_ALLOCATION_POOL_BENEFICIAL_ORDER(get_order(SZ_2M)));
if (WARN_ON(err))
return ERR_PTR(err);
--
2.34.1
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH v2 5/5] drm/xe: Avoid shrinker reclaim from kswapd under fragmentation
2026-04-23 5:56 [PATCH v2 0/5] mm, drm/ttm, drm/xe: Avoid reclaim/eviction loops under fragmentation Matthew Brost
` (3 preceding siblings ...)
2026-04-23 5:56 ` [PATCH v2 4/5] drm/xe: Set TTM device beneficial_order to 9 (2M) Matthew Brost
@ 2026-04-23 5:56 ` Matthew Brost
2026-04-23 6:04 ` ✓ CI.KUnit: success for mm, drm/ttm, drm/xe: Avoid reclaim/eviction loops " Patchwork
` (2 subsequent siblings)
7 siblings, 0 replies; 16+ messages in thread
From: Matthew Brost @ 2026-04-23 5:56 UTC (permalink / raw)
To: intel-xe, dri-devel; +Cc: Thomas Hellström, Carlos Santa, Matthew Auld
When the Xe shrinker is invoked from kswapd, a large amount of free
memory in usable zones relative to the high watermark is a strong
signal that reclaim is being driven by fragmentation rather than true
memory pressure.
In this case, shrinking Xe memory is unlikely to help kswapd make
forward progress. Instead it can evict active GPU memory despite the
system still having substantial free memory, increasing residency churn
and reducing GPU forward progress.
Detect this case and bail out early from the Xe shrinker when running in
kswapd and any usable zone has more than 2x its high watermark free.
Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com>
Cc: Carlos Santa <carlos.santa@intel.com>
Cc: Matthew Auld <matthew.auld@intel.com>
Signed-off-by: Matthew Brost <matthew.brost@intel.com>
---
drivers/gpu/drm/xe/xe_shrinker.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/drivers/gpu/drm/xe/xe_shrinker.c b/drivers/gpu/drm/xe/xe_shrinker.c
index 83374cd57660..e28e5e90c198 100644
--- a/drivers/gpu/drm/xe/xe_shrinker.c
+++ b/drivers/gpu/drm/xe/xe_shrinker.c
@@ -236,6 +236,9 @@ static unsigned long xe_shrinker_scan(struct shrinker *shrink, struct shrink_con
if (nr_scanned >= nr_to_scan || !can_backup)
goto out;
+ if (ttm_bo_shrink_kswap_fragmented(sc->nid))
+ goto out;
+
/* If we didn't wake before, try to do it now if needed. */
if (!runtime_pm)
runtime_pm = xe_shrinker_runtime_pm_get(shrinker, true, 0, can_backup);
--
2.34.1
^ permalink raw reply related [flat|nested] 16+ messages in thread
* ✓ CI.KUnit: success for mm, drm/ttm, drm/xe: Avoid reclaim/eviction loops under fragmentation
2026-04-23 5:56 [PATCH v2 0/5] mm, drm/ttm, drm/xe: Avoid reclaim/eviction loops under fragmentation Matthew Brost
` (4 preceding siblings ...)
2026-04-23 5:56 ` [PATCH v2 5/5] drm/xe: Avoid shrinker reclaim from kswapd under fragmentation Matthew Brost
@ 2026-04-23 6:04 ` Patchwork
2026-04-23 6:53 ` ✓ Xe.CI.BAT: " Patchwork
2026-04-23 17:30 ` ✗ Xe.CI.FULL: failure " Patchwork
7 siblings, 0 replies; 16+ messages in thread
From: Patchwork @ 2026-04-23 6:04 UTC (permalink / raw)
To: Matthew Brost; +Cc: intel-xe
== Series Details ==
Series: mm, drm/ttm, drm/xe: Avoid reclaim/eviction loops under fragmentation
URL : https://patchwork.freedesktop.org/series/165329/
State : success
== Summary ==
+ trap cleanup EXIT
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/xe/.kunitconfig
[06:02:56] Configuring KUnit Kernel ...
Generating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[06:03:00] 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
[06:03:31] Starting KUnit Kernel (1/1)...
[06:03:31] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[06:03:31] ================== guc_buf (11 subtests) ===================
[06:03:31] [PASSED] test_smallest
[06:03:31] [PASSED] test_largest
[06:03:31] [PASSED] test_granular
[06:03:31] [PASSED] test_unique
[06:03:31] [PASSED] test_overlap
[06:03:31] [PASSED] test_reusable
[06:03:31] [PASSED] test_too_big
[06:03:31] [PASSED] test_flush
[06:03:31] [PASSED] test_lookup
[06:03:31] [PASSED] test_data
[06:03:31] [PASSED] test_class
[06:03:31] ===================== [PASSED] guc_buf =====================
[06:03:31] =================== guc_dbm (7 subtests) ===================
[06:03:31] [PASSED] test_empty
[06:03:31] [PASSED] test_default
[06:03:31] ======================== test_size ========================
[06:03:31] [PASSED] 4
[06:03:31] [PASSED] 8
[06:03:31] [PASSED] 32
[06:03:31] [PASSED] 256
[06:03:31] ==================== [PASSED] test_size ====================
[06:03:31] ======================= test_reuse ========================
[06:03:31] [PASSED] 4
[06:03:31] [PASSED] 8
[06:03:31] [PASSED] 32
[06:03:31] [PASSED] 256
[06:03:31] =================== [PASSED] test_reuse ====================
[06:03:31] =================== test_range_overlap ====================
[06:03:31] [PASSED] 4
[06:03:31] [PASSED] 8
[06:03:31] [PASSED] 32
[06:03:31] [PASSED] 256
[06:03:31] =============== [PASSED] test_range_overlap ================
[06:03:31] =================== test_range_compact ====================
[06:03:31] [PASSED] 4
[06:03:31] [PASSED] 8
[06:03:31] [PASSED] 32
[06:03:31] [PASSED] 256
[06:03:31] =============== [PASSED] test_range_compact ================
[06:03:31] ==================== test_range_spare =====================
[06:03:31] [PASSED] 4
[06:03:31] [PASSED] 8
[06:03:31] [PASSED] 32
[06:03:31] [PASSED] 256
[06:03:31] ================ [PASSED] test_range_spare =================
[06:03:31] ===================== [PASSED] guc_dbm =====================
[06:03:31] =================== guc_idm (6 subtests) ===================
[06:03:31] [PASSED] bad_init
[06:03:31] [PASSED] no_init
[06:03:31] [PASSED] init_fini
[06:03:31] [PASSED] check_used
[06:03:31] [PASSED] check_quota
[06:03:31] [PASSED] check_all
[06:03:31] ===================== [PASSED] guc_idm =====================
[06:03:31] ================== no_relay (3 subtests) ===================
[06:03:31] [PASSED] xe_drops_guc2pf_if_not_ready
[06:03:31] [PASSED] xe_drops_guc2vf_if_not_ready
[06:03:31] [PASSED] xe_rejects_send_if_not_ready
[06:03:31] ==================== [PASSED] no_relay =====================
[06:03:31] ================== pf_relay (14 subtests) ==================
[06:03:31] [PASSED] pf_rejects_guc2pf_too_short
[06:03:31] [PASSED] pf_rejects_guc2pf_too_long
[06:03:31] [PASSED] pf_rejects_guc2pf_no_payload
[06:03:31] [PASSED] pf_fails_no_payload
[06:03:31] [PASSED] pf_fails_bad_origin
[06:03:31] [PASSED] pf_fails_bad_type
[06:03:31] [PASSED] pf_txn_reports_error
[06:03:31] [PASSED] pf_txn_sends_pf2guc
[06:03:31] [PASSED] pf_sends_pf2guc
[06:03:31] [SKIPPED] pf_loopback_nop
[06:03:31] [SKIPPED] pf_loopback_echo
[06:03:31] [SKIPPED] pf_loopback_fail
[06:03:31] [SKIPPED] pf_loopback_busy
[06:03:31] [SKIPPED] pf_loopback_retry
[06:03:31] ==================== [PASSED] pf_relay =====================
[06:03:31] ================== vf_relay (3 subtests) ===================
[06:03:31] [PASSED] vf_rejects_guc2vf_too_short
[06:03:31] [PASSED] vf_rejects_guc2vf_too_long
[06:03:31] [PASSED] vf_rejects_guc2vf_no_payload
[06:03:31] ==================== [PASSED] vf_relay =====================
[06:03:31] ================ pf_gt_config (9 subtests) =================
[06:03:31] [PASSED] fair_contexts_1vf
[06:03:31] [PASSED] fair_doorbells_1vf
[06:03:31] [PASSED] fair_ggtt_1vf
[06:03:31] ====================== fair_vram_1vf ======================
[06:03:31] [PASSED] 3.50 GiB
[06:03:31] [PASSED] 11.5 GiB
[06:03:31] [PASSED] 15.5 GiB
[06:03:31] [PASSED] 31.5 GiB
[06:03:31] [PASSED] 63.5 GiB
[06:03:31] [PASSED] 1.91 GiB
[06:03:31] ================== [PASSED] fair_vram_1vf ==================
[06:03:31] ================ fair_vram_1vf_admin_only =================
[06:03:31] [PASSED] 3.50 GiB
[06:03:31] [PASSED] 11.5 GiB
[06:03:31] [PASSED] 15.5 GiB
[06:03:31] [PASSED] 31.5 GiB
[06:03:31] [PASSED] 63.5 GiB
[06:03:31] [PASSED] 1.91 GiB
[06:03:31] ============ [PASSED] fair_vram_1vf_admin_only =============
[06:03:31] ====================== fair_contexts ======================
[06:03:31] [PASSED] 1 VF
[06:03:31] [PASSED] 2 VFs
[06:03:31] [PASSED] 3 VFs
[06:03:31] [PASSED] 4 VFs
[06:03:31] [PASSED] 5 VFs
[06:03:31] [PASSED] 6 VFs
[06:03:31] [PASSED] 7 VFs
[06:03:31] [PASSED] 8 VFs
[06:03:31] [PASSED] 9 VFs
[06:03:31] [PASSED] 10 VFs
[06:03:31] [PASSED] 11 VFs
[06:03:31] [PASSED] 12 VFs
[06:03:31] [PASSED] 13 VFs
[06:03:31] [PASSED] 14 VFs
[06:03:31] [PASSED] 15 VFs
[06:03:31] [PASSED] 16 VFs
[06:03:31] [PASSED] 17 VFs
[06:03:31] [PASSED] 18 VFs
[06:03:31] [PASSED] 19 VFs
[06:03:31] [PASSED] 20 VFs
[06:03:31] [PASSED] 21 VFs
[06:03:31] [PASSED] 22 VFs
[06:03:31] [PASSED] 23 VFs
[06:03:31] [PASSED] 24 VFs
[06:03:31] [PASSED] 25 VFs
[06:03:31] [PASSED] 26 VFs
[06:03:31] [PASSED] 27 VFs
[06:03:31] [PASSED] 28 VFs
[06:03:31] [PASSED] 29 VFs
[06:03:31] [PASSED] 30 VFs
[06:03:31] [PASSED] 31 VFs
[06:03:31] [PASSED] 32 VFs
[06:03:31] [PASSED] 33 VFs
[06:03:31] [PASSED] 34 VFs
[06:03:31] [PASSED] 35 VFs
[06:03:31] [PASSED] 36 VFs
[06:03:31] [PASSED] 37 VFs
[06:03:31] [PASSED] 38 VFs
[06:03:31] [PASSED] 39 VFs
[06:03:31] [PASSED] 40 VFs
[06:03:31] [PASSED] 41 VFs
[06:03:31] [PASSED] 42 VFs
[06:03:31] [PASSED] 43 VFs
[06:03:31] [PASSED] 44 VFs
[06:03:31] [PASSED] 45 VFs
[06:03:31] [PASSED] 46 VFs
[06:03:31] [PASSED] 47 VFs
[06:03:31] [PASSED] 48 VFs
[06:03:31] [PASSED] 49 VFs
[06:03:31] [PASSED] 50 VFs
[06:03:31] [PASSED] 51 VFs
[06:03:31] [PASSED] 52 VFs
[06:03:31] [PASSED] 53 VFs
[06:03:31] [PASSED] 54 VFs
[06:03:31] [PASSED] 55 VFs
[06:03:31] [PASSED] 56 VFs
[06:03:31] [PASSED] 57 VFs
[06:03:31] [PASSED] 58 VFs
[06:03:31] [PASSED] 59 VFs
[06:03:31] [PASSED] 60 VFs
[06:03:31] [PASSED] 61 VFs
[06:03:31] [PASSED] 62 VFs
[06:03:31] [PASSED] 63 VFs
[06:03:31] ================== [PASSED] fair_contexts ==================
[06:03:31] ===================== fair_doorbells ======================
[06:03:31] [PASSED] 1 VF
[06:03:31] [PASSED] 2 VFs
[06:03:31] [PASSED] 3 VFs
[06:03:31] [PASSED] 4 VFs
[06:03:31] [PASSED] 5 VFs
[06:03:31] [PASSED] 6 VFs
[06:03:31] [PASSED] 7 VFs
[06:03:31] [PASSED] 8 VFs
[06:03:31] [PASSED] 9 VFs
[06:03:31] [PASSED] 10 VFs
[06:03:31] [PASSED] 11 VFs
[06:03:31] [PASSED] 12 VFs
[06:03:31] [PASSED] 13 VFs
[06:03:31] [PASSED] 14 VFs
[06:03:31] [PASSED] 15 VFs
[06:03:31] [PASSED] 16 VFs
[06:03:31] [PASSED] 17 VFs
[06:03:31] [PASSED] 18 VFs
[06:03:31] [PASSED] 19 VFs
[06:03:31] [PASSED] 20 VFs
[06:03:31] [PASSED] 21 VFs
[06:03:31] [PASSED] 22 VFs
[06:03:31] [PASSED] 23 VFs
[06:03:31] [PASSED] 24 VFs
[06:03:31] [PASSED] 25 VFs
[06:03:31] [PASSED] 26 VFs
[06:03:31] [PASSED] 27 VFs
[06:03:31] [PASSED] 28 VFs
[06:03:31] [PASSED] 29 VFs
[06:03:31] [PASSED] 30 VFs
[06:03:31] [PASSED] 31 VFs
[06:03:31] [PASSED] 32 VFs
[06:03:31] [PASSED] 33 VFs
[06:03:31] [PASSED] 34 VFs
[06:03:31] [PASSED] 35 VFs
[06:03:31] [PASSED] 36 VFs
[06:03:31] [PASSED] 37 VFs
[06:03:31] [PASSED] 38 VFs
[06:03:31] [PASSED] 39 VFs
[06:03:31] [PASSED] 40 VFs
[06:03:31] [PASSED] 41 VFs
[06:03:31] [PASSED] 42 VFs
[06:03:31] [PASSED] 43 VFs
[06:03:31] [PASSED] 44 VFs
[06:03:31] [PASSED] 45 VFs
[06:03:31] [PASSED] 46 VFs
[06:03:31] [PASSED] 47 VFs
[06:03:31] [PASSED] 48 VFs
[06:03:31] [PASSED] 49 VFs
[06:03:31] [PASSED] 50 VFs
[06:03:31] [PASSED] 51 VFs
[06:03:31] [PASSED] 52 VFs
[06:03:31] [PASSED] 53 VFs
[06:03:31] [PASSED] 54 VFs
[06:03:31] [PASSED] 55 VFs
[06:03:31] [PASSED] 56 VFs
[06:03:31] [PASSED] 57 VFs
[06:03:31] [PASSED] 58 VFs
[06:03:31] [PASSED] 59 VFs
[06:03:31] [PASSED] 60 VFs
[06:03:31] [PASSED] 61 VFs
[06:03:31] [PASSED] 62 VFs
[06:03:31] [PASSED] 63 VFs
[06:03:31] ================= [PASSED] fair_doorbells ==================
[06:03:31] ======================== fair_ggtt ========================
[06:03:31] [PASSED] 1 VF
[06:03:31] [PASSED] 2 VFs
[06:03:31] [PASSED] 3 VFs
[06:03:31] [PASSED] 4 VFs
[06:03:31] [PASSED] 5 VFs
[06:03:31] [PASSED] 6 VFs
[06:03:31] [PASSED] 7 VFs
[06:03:31] [PASSED] 8 VFs
[06:03:31] [PASSED] 9 VFs
[06:03:31] [PASSED] 10 VFs
[06:03:31] [PASSED] 11 VFs
[06:03:31] [PASSED] 12 VFs
[06:03:31] [PASSED] 13 VFs
[06:03:31] [PASSED] 14 VFs
[06:03:31] [PASSED] 15 VFs
[06:03:31] [PASSED] 16 VFs
[06:03:31] [PASSED] 17 VFs
[06:03:31] [PASSED] 18 VFs
[06:03:31] [PASSED] 19 VFs
[06:03:31] [PASSED] 20 VFs
[06:03:31] [PASSED] 21 VFs
[06:03:31] [PASSED] 22 VFs
[06:03:31] [PASSED] 23 VFs
[06:03:31] [PASSED] 24 VFs
[06:03:31] [PASSED] 25 VFs
[06:03:31] [PASSED] 26 VFs
[06:03:31] [PASSED] 27 VFs
[06:03:31] [PASSED] 28 VFs
[06:03:31] [PASSED] 29 VFs
[06:03:31] [PASSED] 30 VFs
[06:03:31] [PASSED] 31 VFs
[06:03:31] [PASSED] 32 VFs
[06:03:31] [PASSED] 33 VFs
[06:03:31] [PASSED] 34 VFs
[06:03:31] [PASSED] 35 VFs
[06:03:31] [PASSED] 36 VFs
[06:03:31] [PASSED] 37 VFs
[06:03:31] [PASSED] 38 VFs
[06:03:31] [PASSED] 39 VFs
[06:03:31] [PASSED] 40 VFs
[06:03:31] [PASSED] 41 VFs
[06:03:31] [PASSED] 42 VFs
[06:03:31] [PASSED] 43 VFs
[06:03:31] [PASSED] 44 VFs
[06:03:31] [PASSED] 45 VFs
[06:03:31] [PASSED] 46 VFs
[06:03:31] [PASSED] 47 VFs
[06:03:31] [PASSED] 48 VFs
[06:03:31] [PASSED] 49 VFs
[06:03:31] [PASSED] 50 VFs
[06:03:31] [PASSED] 51 VFs
[06:03:31] [PASSED] 52 VFs
[06:03:31] [PASSED] 53 VFs
[06:03:31] [PASSED] 54 VFs
[06:03:31] [PASSED] 55 VFs
[06:03:31] [PASSED] 56 VFs
[06:03:31] [PASSED] 57 VFs
[06:03:31] [PASSED] 58 VFs
[06:03:31] [PASSED] 59 VFs
[06:03:31] [PASSED] 60 VFs
[06:03:31] [PASSED] 61 VFs
[06:03:31] [PASSED] 62 VFs
[06:03:31] [PASSED] 63 VFs
[06:03:31] ==================== [PASSED] fair_ggtt ====================
[06:03:31] ======================== fair_vram ========================
[06:03:31] [PASSED] 1 VF
[06:03:31] [PASSED] 2 VFs
[06:03:31] [PASSED] 3 VFs
[06:03:31] [PASSED] 4 VFs
[06:03:31] [PASSED] 5 VFs
[06:03:31] [PASSED] 6 VFs
[06:03:31] [PASSED] 7 VFs
[06:03:31] [PASSED] 8 VFs
[06:03:31] [PASSED] 9 VFs
[06:03:31] [PASSED] 10 VFs
[06:03:31] [PASSED] 11 VFs
[06:03:31] [PASSED] 12 VFs
[06:03:31] [PASSED] 13 VFs
[06:03:31] [PASSED] 14 VFs
[06:03:31] [PASSED] 15 VFs
[06:03:31] [PASSED] 16 VFs
[06:03:31] [PASSED] 17 VFs
[06:03:31] [PASSED] 18 VFs
[06:03:31] [PASSED] 19 VFs
[06:03:31] [PASSED] 20 VFs
[06:03:31] [PASSED] 21 VFs
[06:03:31] [PASSED] 22 VFs
[06:03:31] [PASSED] 23 VFs
[06:03:31] [PASSED] 24 VFs
[06:03:31] [PASSED] 25 VFs
[06:03:31] [PASSED] 26 VFs
[06:03:31] [PASSED] 27 VFs
[06:03:31] [PASSED] 28 VFs
[06:03:31] [PASSED] 29 VFs
[06:03:31] [PASSED] 30 VFs
[06:03:31] [PASSED] 31 VFs
[06:03:31] [PASSED] 32 VFs
[06:03:31] [PASSED] 33 VFs
[06:03:31] [PASSED] 34 VFs
[06:03:31] [PASSED] 35 VFs
[06:03:31] [PASSED] 36 VFs
[06:03:31] [PASSED] 37 VFs
[06:03:31] [PASSED] 38 VFs
[06:03:31] [PASSED] 39 VFs
[06:03:31] [PASSED] 40 VFs
[06:03:31] [PASSED] 41 VFs
[06:03:31] [PASSED] 42 VFs
[06:03:31] [PASSED] 43 VFs
[06:03:31] [PASSED] 44 VFs
[06:03:31] [PASSED] 45 VFs
[06:03:31] [PASSED] 46 VFs
[06:03:31] [PASSED] 47 VFs
[06:03:31] [PASSED] 48 VFs
[06:03:31] [PASSED] 49 VFs
[06:03:31] [PASSED] 50 VFs
[06:03:31] [PASSED] 51 VFs
[06:03:31] [PASSED] 52 VFs
[06:03:31] [PASSED] 53 VFs
[06:03:31] [PASSED] 54 VFs
[06:03:31] [PASSED] 55 VFs
[06:03:31] [PASSED] 56 VFs
[06:03:31] [PASSED] 57 VFs
[06:03:31] [PASSED] 58 VFs
[06:03:31] [PASSED] 59 VFs
[06:03:31] [PASSED] 60 VFs
[06:03:31] [PASSED] 61 VFs
[06:03:31] [PASSED] 62 VFs
[06:03:31] [PASSED] 63 VFs
[06:03:31] ==================== [PASSED] fair_vram ====================
[06:03:31] ================== [PASSED] pf_gt_config ===================
[06:03:31] ===================== lmtt (1 subtest) =====================
[06:03:31] ======================== test_ops =========================
[06:03:31] [PASSED] 2-level
[06:03:31] [PASSED] multi-level
[06:03:31] ==================== [PASSED] test_ops =====================
[06:03:31] ====================== [PASSED] lmtt =======================
[06:03:31] ================= pf_service (11 subtests) =================
[06:03:31] [PASSED] pf_negotiate_any
[06:03:31] [PASSED] pf_negotiate_base_match
[06:03:31] [PASSED] pf_negotiate_base_newer
[06:03:31] [PASSED] pf_negotiate_base_next
[06:03:31] [SKIPPED] pf_negotiate_base_older
[06:03:31] [PASSED] pf_negotiate_base_prev
[06:03:31] [PASSED] pf_negotiate_latest_match
[06:03:31] [PASSED] pf_negotiate_latest_newer
[06:03:31] [PASSED] pf_negotiate_latest_next
[06:03:31] [SKIPPED] pf_negotiate_latest_older
[06:03:31] [SKIPPED] pf_negotiate_latest_prev
[06:03:31] =================== [PASSED] pf_service ====================
[06:03:31] ================= xe_guc_g2g (2 subtests) ==================
[06:03:31] ============== xe_live_guc_g2g_kunit_default ==============
[06:03:31] ========= [SKIPPED] xe_live_guc_g2g_kunit_default ==========
[06:03:31] ============== xe_live_guc_g2g_kunit_allmem ===============
[06:03:31] ========== [SKIPPED] xe_live_guc_g2g_kunit_allmem ==========
[06:03:31] =================== [SKIPPED] xe_guc_g2g ===================
[06:03:31] =================== xe_mocs (2 subtests) ===================
[06:03:31] ================ xe_live_mocs_kernel_kunit ================
[06:03:31] =========== [SKIPPED] xe_live_mocs_kernel_kunit ============
[06:03:31] ================ xe_live_mocs_reset_kunit =================
[06:03:31] ============ [SKIPPED] xe_live_mocs_reset_kunit ============
[06:03:31] ==================== [SKIPPED] xe_mocs =====================
[06:03:31] ================= xe_migrate (2 subtests) ==================
[06:03:31] ================= xe_migrate_sanity_kunit =================
[06:03:31] ============ [SKIPPED] xe_migrate_sanity_kunit =============
[06:03:31] ================== xe_validate_ccs_kunit ==================
[06:03:31] ============= [SKIPPED] xe_validate_ccs_kunit ==============
[06:03:31] =================== [SKIPPED] xe_migrate ===================
[06:03:31] ================== xe_dma_buf (1 subtest) ==================
[06:03:31] ==================== xe_dma_buf_kunit =====================
[06:03:31] ================ [SKIPPED] xe_dma_buf_kunit ================
[06:03:31] =================== [SKIPPED] xe_dma_buf ===================
[06:03:31] ================= xe_bo_shrink (1 subtest) =================
[06:03:31] =================== xe_bo_shrink_kunit ====================
[06:03:31] =============== [SKIPPED] xe_bo_shrink_kunit ===============
[06:03:31] ================== [SKIPPED] xe_bo_shrink ==================
[06:03:31] ==================== xe_bo (2 subtests) ====================
[06:03:31] ================== xe_ccs_migrate_kunit ===================
[06:03:31] ============== [SKIPPED] xe_ccs_migrate_kunit ==============
[06:03:31] ==================== xe_bo_evict_kunit ====================
[06:03:31] =============== [SKIPPED] xe_bo_evict_kunit ================
[06:03:31] ===================== [SKIPPED] xe_bo ======================
[06:03:31] ==================== args (13 subtests) ====================
[06:03:31] [PASSED] count_args_test
[06:03:31] [PASSED] call_args_example
[06:03:31] [PASSED] call_args_test
[06:03:31] [PASSED] drop_first_arg_example
[06:03:31] [PASSED] drop_first_arg_test
[06:03:31] [PASSED] first_arg_example
[06:03:31] [PASSED] first_arg_test
[06:03:31] [PASSED] last_arg_example
[06:03:31] [PASSED] last_arg_test
[06:03:31] [PASSED] pick_arg_example
[06:03:31] [PASSED] if_args_example
[06:03:31] [PASSED] if_args_test
[06:03:31] [PASSED] sep_comma_example
[06:03:31] ====================== [PASSED] args =======================
[06:03:31] =================== xe_pci (3 subtests) ====================
[06:03:31] ==================== check_graphics_ip ====================
[06:03:31] [PASSED] 12.00 Xe_LP
[06:03:31] [PASSED] 12.10 Xe_LP+
[06:03:31] [PASSED] 12.55 Xe_HPG
[06:03:31] [PASSED] 12.60 Xe_HPC
[06:03:31] [PASSED] 12.70 Xe_LPG
[06:03:31] [PASSED] 12.71 Xe_LPG
[06:03:31] [PASSED] 12.74 Xe_LPG+
[06:03:31] [PASSED] 20.01 Xe2_HPG
[06:03:31] [PASSED] 20.02 Xe2_HPG
[06:03:31] [PASSED] 20.04 Xe2_LPG
[06:03:31] [PASSED] 30.00 Xe3_LPG
[06:03:31] [PASSED] 30.01 Xe3_LPG
[06:03:31] [PASSED] 30.03 Xe3_LPG
[06:03:31] [PASSED] 30.04 Xe3_LPG
[06:03:31] [PASSED] 30.05 Xe3_LPG
[06:03:31] [PASSED] 35.10 Xe3p_LPG
[06:03:31] [PASSED] 35.11 Xe3p_XPC
[06:03:31] ================ [PASSED] check_graphics_ip ================
[06:03:31] ===================== check_media_ip ======================
[06:03:31] [PASSED] 12.00 Xe_M
[06:03:31] [PASSED] 12.55 Xe_HPM
[06:03:31] [PASSED] 13.00 Xe_LPM+
[06:03:31] [PASSED] 13.01 Xe2_HPM
[06:03:31] [PASSED] 20.00 Xe2_LPM
[06:03:31] [PASSED] 30.00 Xe3_LPM
[06:03:31] [PASSED] 30.02 Xe3_LPM
[06:03:31] [PASSED] 35.00 Xe3p_LPM
[06:03:31] [PASSED] 35.03 Xe3p_HPM
[06:03:31] ================= [PASSED] check_media_ip ==================
[06:03:31] =================== check_platform_desc ===================
[06:03:31] [PASSED] 0x9A60 (TIGERLAKE)
[06:03:31] [PASSED] 0x9A68 (TIGERLAKE)
[06:03:31] [PASSED] 0x9A70 (TIGERLAKE)
[06:03:31] [PASSED] 0x9A40 (TIGERLAKE)
[06:03:31] [PASSED] 0x9A49 (TIGERLAKE)
[06:03:31] [PASSED] 0x9A59 (TIGERLAKE)
[06:03:31] [PASSED] 0x9A78 (TIGERLAKE)
[06:03:31] [PASSED] 0x9AC0 (TIGERLAKE)
[06:03:31] [PASSED] 0x9AC9 (TIGERLAKE)
[06:03:31] [PASSED] 0x9AD9 (TIGERLAKE)
[06:03:31] [PASSED] 0x9AF8 (TIGERLAKE)
[06:03:31] [PASSED] 0x4C80 (ROCKETLAKE)
[06:03:31] [PASSED] 0x4C8A (ROCKETLAKE)
[06:03:31] [PASSED] 0x4C8B (ROCKETLAKE)
[06:03:31] [PASSED] 0x4C8C (ROCKETLAKE)
[06:03:31] [PASSED] 0x4C90 (ROCKETLAKE)
[06:03:31] [PASSED] 0x4C9A (ROCKETLAKE)
[06:03:31] [PASSED] 0x4680 (ALDERLAKE_S)
[06:03:31] [PASSED] 0x4682 (ALDERLAKE_S)
[06:03:31] [PASSED] 0x4688 (ALDERLAKE_S)
[06:03:31] [PASSED] 0x468A (ALDERLAKE_S)
[06:03:31] [PASSED] 0x468B (ALDERLAKE_S)
[06:03:31] [PASSED] 0x4690 (ALDERLAKE_S)
[06:03:31] [PASSED] 0x4692 (ALDERLAKE_S)
[06:03:31] [PASSED] 0x4693 (ALDERLAKE_S)
[06:03:31] [PASSED] 0x46A0 (ALDERLAKE_P)
[06:03:31] [PASSED] 0x46A1 (ALDERLAKE_P)
[06:03:31] [PASSED] 0x46A2 (ALDERLAKE_P)
[06:03:31] [PASSED] 0x46A3 (ALDERLAKE_P)
[06:03:31] [PASSED] 0x46A6 (ALDERLAKE_P)
[06:03:31] [PASSED] 0x46A8 (ALDERLAKE_P)
[06:03:31] [PASSED] 0x46AA (ALDERLAKE_P)
[06:03:31] [PASSED] 0x462A (ALDERLAKE_P)
[06:03:31] [PASSED] 0x4626 (ALDERLAKE_P)
[06:03:31] [PASSED] 0x4628 (ALDERLAKE_P)
[06:03:31] [PASSED] 0x46B0 (ALDERLAKE_P)
[06:03:31] [PASSED] 0x46B1 (ALDERLAKE_P)
[06:03:31] [PASSED] 0x46B2 (ALDERLAKE_P)
[06:03:31] [PASSED] 0x46B3 (ALDERLAKE_P)
[06:03:31] [PASSED] 0x46C0 (ALDERLAKE_P)
[06:03:31] [PASSED] 0x46C1 (ALDERLAKE_P)
[06:03:31] [PASSED] 0x46C2 (ALDERLAKE_P)
[06:03:31] [PASSED] 0x46C3 (ALDERLAKE_P)
[06:03:31] [PASSED] 0x46D0 (ALDERLAKE_N)
[06:03:31] [PASSED] 0x46D1 (ALDERLAKE_N)
[06:03:31] [PASSED] 0x46D2 (ALDERLAKE_N)
[06:03:31] [PASSED] 0x46D3 (ALDERLAKE_N)
[06:03:31] [PASSED] 0x46D4 (ALDERLAKE_N)
[06:03:31] [PASSED] 0xA721 (ALDERLAKE_P)
[06:03:31] [PASSED] 0xA7A1 (ALDERLAKE_P)
[06:03:31] [PASSED] 0xA7A9 (ALDERLAKE_P)
[06:03:31] [PASSED] 0xA7AC (ALDERLAKE_P)
[06:03:31] [PASSED] 0xA7AD (ALDERLAKE_P)
[06:03:31] [PASSED] 0xA720 (ALDERLAKE_P)
[06:03:31] [PASSED] 0xA7A0 (ALDERLAKE_P)
[06:03:31] [PASSED] 0xA7A8 (ALDERLAKE_P)
[06:03:31] [PASSED] 0xA7AA (ALDERLAKE_P)
[06:03:31] [PASSED] 0xA7AB (ALDERLAKE_P)
[06:03:31] [PASSED] 0xA780 (ALDERLAKE_S)
[06:03:31] [PASSED] 0xA781 (ALDERLAKE_S)
[06:03:31] [PASSED] 0xA782 (ALDERLAKE_S)
[06:03:31] [PASSED] 0xA783 (ALDERLAKE_S)
[06:03:31] [PASSED] 0xA788 (ALDERLAKE_S)
[06:03:31] [PASSED] 0xA789 (ALDERLAKE_S)
[06:03:31] [PASSED] 0xA78A (ALDERLAKE_S)
[06:03:31] [PASSED] 0xA78B (ALDERLAKE_S)
[06:03:31] [PASSED] 0x4905 (DG1)
[06:03:31] [PASSED] 0x4906 (DG1)
[06:03:31] [PASSED] 0x4907 (DG1)
[06:03:31] [PASSED] 0x4908 (DG1)
[06:03:31] [PASSED] 0x4909 (DG1)
[06:03:31] [PASSED] 0x56C0 (DG2)
[06:03:31] [PASSED] 0x56C2 (DG2)
[06:03:31] [PASSED] 0x56C1 (DG2)
[06:03:31] [PASSED] 0x7D51 (METEORLAKE)
[06:03:31] [PASSED] 0x7DD1 (METEORLAKE)
[06:03:31] [PASSED] 0x7D41 (METEORLAKE)
[06:03:31] [PASSED] 0x7D67 (METEORLAKE)
[06:03:31] [PASSED] 0xB640 (METEORLAKE)
[06:03:31] [PASSED] 0x56A0 (DG2)
[06:03:31] [PASSED] 0x56A1 (DG2)
[06:03:31] [PASSED] 0x56A2 (DG2)
[06:03:31] [PASSED] 0x56BE (DG2)
[06:03:31] [PASSED] 0x56BF (DG2)
[06:03:31] [PASSED] 0x5690 (DG2)
[06:03:31] [PASSED] 0x5691 (DG2)
[06:03:31] [PASSED] 0x5692 (DG2)
[06:03:31] [PASSED] 0x56A5 (DG2)
[06:03:31] [PASSED] 0x56A6 (DG2)
[06:03:31] [PASSED] 0x56B0 (DG2)
[06:03:31] [PASSED] 0x56B1 (DG2)
[06:03:31] [PASSED] 0x56BA (DG2)
[06:03:31] [PASSED] 0x56BB (DG2)
[06:03:31] [PASSED] 0x56BC (DG2)
[06:03:31] [PASSED] 0x56BD (DG2)
[06:03:31] [PASSED] 0x5693 (DG2)
[06:03:31] [PASSED] 0x5694 (DG2)
[06:03:31] [PASSED] 0x5695 (DG2)
[06:03:31] [PASSED] 0x56A3 (DG2)
[06:03:31] [PASSED] 0x56A4 (DG2)
[06:03:31] [PASSED] 0x56B2 (DG2)
[06:03:31] [PASSED] 0x56B3 (DG2)
[06:03:31] [PASSED] 0x5696 (DG2)
[06:03:31] [PASSED] 0x5697 (DG2)
[06:03:31] [PASSED] 0xB69 (PVC)
[06:03:31] [PASSED] 0xB6E (PVC)
[06:03:31] [PASSED] 0xBD4 (PVC)
[06:03:31] [PASSED] 0xBD5 (PVC)
[06:03:31] [PASSED] 0xBD6 (PVC)
[06:03:31] [PASSED] 0xBD7 (PVC)
[06:03:31] [PASSED] 0xBD8 (PVC)
[06:03:31] [PASSED] 0xBD9 (PVC)
[06:03:31] [PASSED] 0xBDA (PVC)
[06:03:31] [PASSED] 0xBDB (PVC)
[06:03:31] [PASSED] 0xBE0 (PVC)
[06:03:31] [PASSED] 0xBE1 (PVC)
[06:03:31] [PASSED] 0xBE5 (PVC)
[06:03:31] [PASSED] 0x7D40 (METEORLAKE)
[06:03:31] [PASSED] 0x7D45 (METEORLAKE)
[06:03:31] [PASSED] 0x7D55 (METEORLAKE)
[06:03:31] [PASSED] 0x7D60 (METEORLAKE)
[06:03:31] [PASSED] 0x7DD5 (METEORLAKE)
[06:03:31] [PASSED] 0x6420 (LUNARLAKE)
[06:03:31] [PASSED] 0x64A0 (LUNARLAKE)
[06:03:31] [PASSED] 0x64B0 (LUNARLAKE)
[06:03:31] [PASSED] 0xE202 (BATTLEMAGE)
[06:03:31] [PASSED] 0xE209 (BATTLEMAGE)
[06:03:31] [PASSED] 0xE20B (BATTLEMAGE)
[06:03:31] [PASSED] 0xE20C (BATTLEMAGE)
[06:03:31] [PASSED] 0xE20D (BATTLEMAGE)
[06:03:31] [PASSED] 0xE210 (BATTLEMAGE)
[06:03:31] [PASSED] 0xE211 (BATTLEMAGE)
[06:03:31] [PASSED] 0xE212 (BATTLEMAGE)
[06:03:31] [PASSED] 0xE216 (BATTLEMAGE)
[06:03:31] [PASSED] 0xE220 (BATTLEMAGE)
[06:03:31] [PASSED] 0xE221 (BATTLEMAGE)
[06:03:31] [PASSED] 0xE222 (BATTLEMAGE)
[06:03:31] [PASSED] 0xE223 (BATTLEMAGE)
[06:03:31] [PASSED] 0xB080 (PANTHERLAKE)
[06:03:31] [PASSED] 0xB081 (PANTHERLAKE)
[06:03:31] [PASSED] 0xB082 (PANTHERLAKE)
[06:03:31] [PASSED] 0xB083 (PANTHERLAKE)
[06:03:31] [PASSED] 0xB084 (PANTHERLAKE)
[06:03:31] [PASSED] 0xB085 (PANTHERLAKE)
[06:03:31] [PASSED] 0xB086 (PANTHERLAKE)
[06:03:31] [PASSED] 0xB087 (PANTHERLAKE)
[06:03:31] [PASSED] 0xB08F (PANTHERLAKE)
[06:03:31] [PASSED] 0xB090 (PANTHERLAKE)
[06:03:31] [PASSED] 0xB0A0 (PANTHERLAKE)
[06:03:31] [PASSED] 0xB0B0 (PANTHERLAKE)
[06:03:31] [PASSED] 0xFD80 (PANTHERLAKE)
[06:03:31] [PASSED] 0xFD81 (PANTHERLAKE)
[06:03:31] [PASSED] 0xD740 (NOVALAKE_S)
[06:03:31] [PASSED] 0xD741 (NOVALAKE_S)
[06:03:31] [PASSED] 0xD742 (NOVALAKE_S)
[06:03:31] [PASSED] 0xD743 (NOVALAKE_S)
[06:03:31] [PASSED] 0xD744 (NOVALAKE_S)
[06:03:31] [PASSED] 0xD745 (NOVALAKE_S)
[06:03:31] [PASSED] 0x674C (CRESCENTISLAND)
[06:03:31] [PASSED] 0xD750 (NOVALAKE_P)
[06:03:31] [PASSED] 0xD751 (NOVALAKE_P)
[06:03:31] [PASSED] 0xD752 (NOVALAKE_P)
[06:03:31] [PASSED] 0xD753 (NOVALAKE_P)
[06:03:31] [PASSED] 0xD754 (NOVALAKE_P)
[06:03:31] [PASSED] 0xD755 (NOVALAKE_P)
[06:03:31] [PASSED] 0xD756 (NOVALAKE_P)
[06:03:31] [PASSED] 0xD757 (NOVALAKE_P)
[06:03:31] [PASSED] 0xD75F (NOVALAKE_P)
[06:03:31] =============== [PASSED] check_platform_desc ===============
[06:03:31] ===================== [PASSED] xe_pci ======================
[06:03:31] =================== xe_rtp (2 subtests) ====================
[06:03:31] =============== xe_rtp_process_to_sr_tests ================
[06:03:31] [PASSED] coalesce-same-reg
[06:03:31] [PASSED] no-match-no-add
[06:03:31] [PASSED] match-or
[06:03:31] [PASSED] match-or-xfail
[06:03:31] [PASSED] no-match-no-add-multiple-rules
[06:03:31] [PASSED] two-regs-two-entries
[06:03:31] [PASSED] clr-one-set-other
[06:03:31] [PASSED] set-field
[06:03:31] [PASSED] conflict-duplicate
stty: 'standard input': Inappropriate ioctl for device
[06:03:31] [PASSED] conflict-not-disjoint
[06:03:31] [PASSED] conflict-reg-type
[06:03:31] =========== [PASSED] xe_rtp_process_to_sr_tests ============
[06:03:31] ================== xe_rtp_process_tests ===================
[06:03:31] [PASSED] active1
[06:03:31] [PASSED] active2
[06:03:31] [PASSED] active-inactive
[06:03:31] [PASSED] inactive-active
[06:03:31] [PASSED] inactive-1st_or_active-inactive
[06:03:31] [PASSED] inactive-2nd_or_active-inactive
[06:03:31] [PASSED] inactive-last_or_active-inactive
[06:03:31] [PASSED] inactive-no_or_active-inactive
[06:03:31] ============== [PASSED] xe_rtp_process_tests ===============
[06:03:31] ===================== [PASSED] xe_rtp ======================
[06:03:31] ==================== xe_wa (1 subtest) =====================
[06:03:31] ======================== xe_wa_gt =========================
[06:03:31] [PASSED] TIGERLAKE B0
[06:03:31] [PASSED] DG1 A0
[06:03:31] [PASSED] DG1 B0
[06:03:31] [PASSED] ALDERLAKE_S A0
[06:03:31] [PASSED] ALDERLAKE_S B0
[06:03:31] [PASSED] ALDERLAKE_S C0
[06:03:31] [PASSED] ALDERLAKE_S D0
[06:03:31] [PASSED] ALDERLAKE_P A0
[06:03:31] [PASSED] ALDERLAKE_P B0
[06:03:31] [PASSED] ALDERLAKE_P C0
[06:03:31] [PASSED] ALDERLAKE_S RPLS D0
[06:03:31] [PASSED] ALDERLAKE_P RPLU E0
[06:03:31] [PASSED] DG2 G10 C0
[06:03:31] [PASSED] DG2 G11 B1
[06:03:31] [PASSED] DG2 G12 A1
[06:03:31] [PASSED] METEORLAKE 12.70(Xe_LPG) A0 13.00(Xe_LPM+) A0
[06:03:31] [PASSED] METEORLAKE 12.71(Xe_LPG) A0 13.00(Xe_LPM+) A0
[06:03:31] [PASSED] METEORLAKE 12.74(Xe_LPG+) A0 13.00(Xe_LPM+) A0
[06:03:31] [PASSED] LUNARLAKE 20.04(Xe2_LPG) A0 20.00(Xe2_LPM) A0
[06:03:31] [PASSED] LUNARLAKE 20.04(Xe2_LPG) B0 20.00(Xe2_LPM) A0
[06:03:31] [PASSED] BATTLEMAGE 20.01(Xe2_HPG) A0 13.01(Xe2_HPM) A1
[06:03:31] [PASSED] PANTHERLAKE 30.00(Xe3_LPG) A0 30.00(Xe3_LPM) A0
[06:03:31] ==================== [PASSED] xe_wa_gt =====================
[06:03:31] ====================== [PASSED] xe_wa ======================
[06:03:31] ============================================================
[06:03:31] Testing complete. Ran 597 tests: passed: 579, skipped: 18
[06:03:31] Elapsed time: 35.721s total, 4.236s configuring, 30.867s building, 0.599s running
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/tests/.kunitconfig
[06:03:31] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[06:03:33] 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
[06:03:57] Starting KUnit Kernel (1/1)...
[06:03:57] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[06:03:57] ============ drm_test_pick_cmdline (2 subtests) ============
[06:03:57] [PASSED] drm_test_pick_cmdline_res_1920_1080_60
[06:03:57] =============== drm_test_pick_cmdline_named ===============
[06:03:57] [PASSED] NTSC
[06:03:57] [PASSED] NTSC-J
[06:03:57] [PASSED] PAL
[06:03:57] [PASSED] PAL-M
[06:03:57] =========== [PASSED] drm_test_pick_cmdline_named ===========
[06:03:57] ============== [PASSED] drm_test_pick_cmdline ==============
[06:03:57] == drm_test_atomic_get_connector_for_encoder (1 subtest) ===
[06:03:57] [PASSED] drm_test_drm_atomic_get_connector_for_encoder
[06:03:57] ==== [PASSED] drm_test_atomic_get_connector_for_encoder ====
[06:03:57] =========== drm_validate_clone_mode (2 subtests) ===========
[06:03:57] ============== drm_test_check_in_clone_mode ===============
[06:03:57] [PASSED] in_clone_mode
[06:03:57] [PASSED] not_in_clone_mode
[06:03:57] ========== [PASSED] drm_test_check_in_clone_mode ===========
[06:03:57] =============== drm_test_check_valid_clones ===============
[06:03:57] [PASSED] not_in_clone_mode
[06:03:57] [PASSED] valid_clone
[06:03:57] [PASSED] invalid_clone
[06:03:57] =========== [PASSED] drm_test_check_valid_clones ===========
[06:03:57] ============= [PASSED] drm_validate_clone_mode =============
[06:03:57] ============= drm_validate_modeset (1 subtest) =============
[06:03:57] [PASSED] drm_test_check_connector_changed_modeset
[06:03:57] ============== [PASSED] drm_validate_modeset ===============
[06:03:57] ====== drm_test_bridge_get_current_state (2 subtests) ======
[06:03:57] [PASSED] drm_test_drm_bridge_get_current_state_atomic
[06:03:57] [PASSED] drm_test_drm_bridge_get_current_state_legacy
[06:03:57] ======== [PASSED] drm_test_bridge_get_current_state ========
[06:03:57] ====== drm_test_bridge_helper_reset_crtc (3 subtests) ======
[06:03:57] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic
[06:03:57] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic_disabled
[06:03:57] [PASSED] drm_test_drm_bridge_helper_reset_crtc_legacy
[06:03:57] ======== [PASSED] drm_test_bridge_helper_reset_crtc ========
[06:03:57] ============== drm_bridge_alloc (2 subtests) ===============
[06:03:57] [PASSED] drm_test_drm_bridge_alloc_basic
[06:03:57] [PASSED] drm_test_drm_bridge_alloc_get_put
[06:03:57] ================ [PASSED] drm_bridge_alloc =================
[06:03:57] ============= drm_cmdline_parser (40 subtests) =============
[06:03:57] [PASSED] drm_test_cmdline_force_d_only
[06:03:57] [PASSED] drm_test_cmdline_force_D_only_dvi
[06:03:57] [PASSED] drm_test_cmdline_force_D_only_hdmi
[06:03:57] [PASSED] drm_test_cmdline_force_D_only_not_digital
[06:03:57] [PASSED] drm_test_cmdline_force_e_only
[06:03:57] [PASSED] drm_test_cmdline_res
[06:03:57] [PASSED] drm_test_cmdline_res_vesa
[06:03:57] [PASSED] drm_test_cmdline_res_vesa_rblank
[06:03:57] [PASSED] drm_test_cmdline_res_rblank
[06:03:57] [PASSED] drm_test_cmdline_res_bpp
[06:03:57] [PASSED] drm_test_cmdline_res_refresh
[06:03:57] [PASSED] drm_test_cmdline_res_bpp_refresh
[06:03:57] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced
[06:03:57] [PASSED] drm_test_cmdline_res_bpp_refresh_margins
[06:03:57] [PASSED] drm_test_cmdline_res_bpp_refresh_force_off
[06:03:57] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on
[06:03:57] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_analog
[06:03:57] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_digital
[06:03:57] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced_margins_force_on
[06:03:57] [PASSED] drm_test_cmdline_res_margins_force_on
[06:03:57] [PASSED] drm_test_cmdline_res_vesa_margins
[06:03:57] [PASSED] drm_test_cmdline_name
[06:03:57] [PASSED] drm_test_cmdline_name_bpp
[06:03:57] [PASSED] drm_test_cmdline_name_option
[06:03:57] [PASSED] drm_test_cmdline_name_bpp_option
[06:03:57] [PASSED] drm_test_cmdline_rotate_0
[06:03:57] [PASSED] drm_test_cmdline_rotate_90
[06:03:57] [PASSED] drm_test_cmdline_rotate_180
[06:03:57] [PASSED] drm_test_cmdline_rotate_270
[06:03:57] [PASSED] drm_test_cmdline_hmirror
[06:03:57] [PASSED] drm_test_cmdline_vmirror
[06:03:57] [PASSED] drm_test_cmdline_margin_options
[06:03:57] [PASSED] drm_test_cmdline_multiple_options
[06:03:57] [PASSED] drm_test_cmdline_bpp_extra_and_option
[06:03:57] [PASSED] drm_test_cmdline_extra_and_option
[06:03:57] [PASSED] drm_test_cmdline_freestanding_options
[06:03:57] [PASSED] drm_test_cmdline_freestanding_force_e_and_options
[06:03:57] [PASSED] drm_test_cmdline_panel_orientation
[06:03:57] ================ drm_test_cmdline_invalid =================
[06:03:57] [PASSED] margin_only
[06:03:57] [PASSED] interlace_only
[06:03:57] [PASSED] res_missing_x
[06:03:57] [PASSED] res_missing_y
[06:03:57] [PASSED] res_bad_y
[06:03:57] [PASSED] res_missing_y_bpp
[06:03:57] [PASSED] res_bad_bpp
[06:03:57] [PASSED] res_bad_refresh
[06:03:57] [PASSED] res_bpp_refresh_force_on_off
[06:03:57] [PASSED] res_invalid_mode
[06:03:57] [PASSED] res_bpp_wrong_place_mode
[06:03:57] [PASSED] name_bpp_refresh
[06:03:57] [PASSED] name_refresh
[06:03:57] [PASSED] name_refresh_wrong_mode
[06:03:57] [PASSED] name_refresh_invalid_mode
[06:03:57] [PASSED] rotate_multiple
[06:03:57] [PASSED] rotate_invalid_val
[06:03:57] [PASSED] rotate_truncated
[06:03:57] [PASSED] invalid_option
[06:03:57] [PASSED] invalid_tv_option
[06:03:57] [PASSED] truncated_tv_option
[06:03:57] ============ [PASSED] drm_test_cmdline_invalid =============
[06:03:57] =============== drm_test_cmdline_tv_options ===============
[06:03:57] [PASSED] NTSC
[06:03:57] [PASSED] NTSC_443
[06:03:57] [PASSED] NTSC_J
[06:03:57] [PASSED] PAL
[06:03:57] [PASSED] PAL_M
[06:03:57] [PASSED] PAL_N
[06:03:57] [PASSED] SECAM
[06:03:57] [PASSED] MONO_525
[06:03:57] [PASSED] MONO_625
[06:03:57] =========== [PASSED] drm_test_cmdline_tv_options ===========
[06:03:57] =============== [PASSED] drm_cmdline_parser ================
[06:03:57] ========== drmm_connector_hdmi_init (20 subtests) ==========
[06:03:57] [PASSED] drm_test_connector_hdmi_init_valid
[06:03:57] [PASSED] drm_test_connector_hdmi_init_bpc_8
[06:03:57] [PASSED] drm_test_connector_hdmi_init_bpc_10
[06:03:57] [PASSED] drm_test_connector_hdmi_init_bpc_12
[06:03:57] [PASSED] drm_test_connector_hdmi_init_bpc_invalid
[06:03:57] [PASSED] drm_test_connector_hdmi_init_bpc_null
[06:03:57] [PASSED] drm_test_connector_hdmi_init_formats_empty
[06:03:57] [PASSED] drm_test_connector_hdmi_init_formats_no_rgb
[06:03:57] === drm_test_connector_hdmi_init_formats_yuv420_allowed ===
[06:03:57] [PASSED] supported_formats=0x9 yuv420_allowed=1
[06:03:57] [PASSED] supported_formats=0x9 yuv420_allowed=0
[06:03:57] [PASSED] supported_formats=0x5 yuv420_allowed=1
[06:03:57] [PASSED] supported_formats=0x5 yuv420_allowed=0
[06:03:57] === [PASSED] drm_test_connector_hdmi_init_formats_yuv420_allowed ===
[06:03:57] [PASSED] drm_test_connector_hdmi_init_null_ddc
[06:03:57] [PASSED] drm_test_connector_hdmi_init_null_product
[06:03:57] [PASSED] drm_test_connector_hdmi_init_null_vendor
[06:03:57] [PASSED] drm_test_connector_hdmi_init_product_length_exact
[06:03:57] [PASSED] drm_test_connector_hdmi_init_product_length_too_long
[06:03:57] [PASSED] drm_test_connector_hdmi_init_product_valid
[06:03:57] [PASSED] drm_test_connector_hdmi_init_vendor_length_exact
[06:03:57] [PASSED] drm_test_connector_hdmi_init_vendor_length_too_long
[06:03:57] [PASSED] drm_test_connector_hdmi_init_vendor_valid
[06:03:57] ========= drm_test_connector_hdmi_init_type_valid =========
[06:03:57] [PASSED] HDMI-A
[06:03:57] [PASSED] HDMI-B
[06:03:57] ===== [PASSED] drm_test_connector_hdmi_init_type_valid =====
[06:03:57] ======== drm_test_connector_hdmi_init_type_invalid ========
[06:03:57] [PASSED] Unknown
[06:03:57] [PASSED] VGA
[06:03:57] [PASSED] DVI-I
[06:03:57] [PASSED] DVI-D
[06:03:57] [PASSED] DVI-A
[06:03:57] [PASSED] Composite
[06:03:57] [PASSED] SVIDEO
[06:03:57] [PASSED] LVDS
[06:03:57] [PASSED] Component
[06:03:57] [PASSED] DIN
[06:03:57] [PASSED] DP
[06:03:57] [PASSED] TV
[06:03:57] [PASSED] eDP
[06:03:57] [PASSED] Virtual
[06:03:57] [PASSED] DSI
[06:03:57] [PASSED] DPI
[06:03:57] [PASSED] Writeback
[06:03:57] [PASSED] SPI
[06:03:57] [PASSED] USB
[06:03:57] ==== [PASSED] drm_test_connector_hdmi_init_type_invalid ====
[06:03:57] ============ [PASSED] drmm_connector_hdmi_init =============
[06:03:57] ============= drmm_connector_init (3 subtests) =============
[06:03:57] [PASSED] drm_test_drmm_connector_init
[06:03:57] [PASSED] drm_test_drmm_connector_init_null_ddc
[06:03:57] ========= drm_test_drmm_connector_init_type_valid =========
[06:03:57] [PASSED] Unknown
[06:03:57] [PASSED] VGA
[06:03:57] [PASSED] DVI-I
[06:03:57] [PASSED] DVI-D
[06:03:57] [PASSED] DVI-A
[06:03:57] [PASSED] Composite
[06:03:57] [PASSED] SVIDEO
[06:03:57] [PASSED] LVDS
[06:03:57] [PASSED] Component
[06:03:57] [PASSED] DIN
[06:03:57] [PASSED] DP
[06:03:57] [PASSED] HDMI-A
[06:03:57] [PASSED] HDMI-B
[06:03:57] [PASSED] TV
[06:03:57] [PASSED] eDP
[06:03:57] [PASSED] Virtual
[06:03:57] [PASSED] DSI
[06:03:57] [PASSED] DPI
[06:03:57] [PASSED] Writeback
[06:03:57] [PASSED] SPI
[06:03:57] [PASSED] USB
[06:03:57] ===== [PASSED] drm_test_drmm_connector_init_type_valid =====
[06:03:57] =============== [PASSED] drmm_connector_init ===============
[06:03:57] ========= drm_connector_dynamic_init (6 subtests) ==========
[06:03:57] [PASSED] drm_test_drm_connector_dynamic_init
[06:03:57] [PASSED] drm_test_drm_connector_dynamic_init_null_ddc
[06:03:57] [PASSED] drm_test_drm_connector_dynamic_init_not_added
[06:03:57] [PASSED] drm_test_drm_connector_dynamic_init_properties
[06:03:57] ===== drm_test_drm_connector_dynamic_init_type_valid ======
[06:03:57] [PASSED] Unknown
[06:03:57] [PASSED] VGA
[06:03:57] [PASSED] DVI-I
[06:03:57] [PASSED] DVI-D
[06:03:57] [PASSED] DVI-A
[06:03:57] [PASSED] Composite
[06:03:57] [PASSED] SVIDEO
[06:03:57] [PASSED] LVDS
[06:03:57] [PASSED] Component
[06:03:57] [PASSED] DIN
[06:03:57] [PASSED] DP
[06:03:57] [PASSED] HDMI-A
[06:03:57] [PASSED] HDMI-B
[06:03:57] [PASSED] TV
[06:03:57] [PASSED] eDP
[06:03:57] [PASSED] Virtual
[06:03:57] [PASSED] DSI
[06:03:57] [PASSED] DPI
[06:03:57] [PASSED] Writeback
[06:03:57] [PASSED] SPI
[06:03:57] [PASSED] USB
[06:03:57] = [PASSED] drm_test_drm_connector_dynamic_init_type_valid ==
[06:03:57] ======== drm_test_drm_connector_dynamic_init_name =========
[06:03:57] [PASSED] Unknown
[06:03:57] [PASSED] VGA
[06:03:57] [PASSED] DVI-I
[06:03:57] [PASSED] DVI-D
[06:03:57] [PASSED] DVI-A
[06:03:57] [PASSED] Composite
[06:03:57] [PASSED] SVIDEO
[06:03:57] [PASSED] LVDS
[06:03:57] [PASSED] Component
[06:03:57] [PASSED] DIN
[06:03:57] [PASSED] DP
[06:03:57] [PASSED] HDMI-A
[06:03:57] [PASSED] HDMI-B
[06:03:57] [PASSED] TV
[06:03:57] [PASSED] eDP
[06:03:57] [PASSED] Virtual
[06:03:57] [PASSED] DSI
[06:03:57] [PASSED] DPI
[06:03:57] [PASSED] Writeback
[06:03:57] [PASSED] SPI
[06:03:57] [PASSED] USB
[06:03:57] ==== [PASSED] drm_test_drm_connector_dynamic_init_name =====
[06:03:57] =========== [PASSED] drm_connector_dynamic_init ============
[06:03:57] ==== drm_connector_dynamic_register_early (4 subtests) =====
[06:03:57] [PASSED] drm_test_drm_connector_dynamic_register_early_on_list
[06:03:57] [PASSED] drm_test_drm_connector_dynamic_register_early_defer
[06:03:57] [PASSED] drm_test_drm_connector_dynamic_register_early_no_init
[06:03:57] [PASSED] drm_test_drm_connector_dynamic_register_early_no_mode_object
[06:03:57] ====== [PASSED] drm_connector_dynamic_register_early =======
[06:03:57] ======= drm_connector_dynamic_register (7 subtests) ========
[06:03:57] [PASSED] drm_test_drm_connector_dynamic_register_on_list
[06:03:57] [PASSED] drm_test_drm_connector_dynamic_register_no_defer
[06:03:57] [PASSED] drm_test_drm_connector_dynamic_register_no_init
[06:03:57] [PASSED] drm_test_drm_connector_dynamic_register_mode_object
[06:03:57] [PASSED] drm_test_drm_connector_dynamic_register_sysfs
[06:03:57] [PASSED] drm_test_drm_connector_dynamic_register_sysfs_name
[06:03:57] [PASSED] drm_test_drm_connector_dynamic_register_debugfs
[06:03:57] ========= [PASSED] drm_connector_dynamic_register ==========
[06:03:57] = drm_connector_attach_broadcast_rgb_property (2 subtests) =
[06:03:57] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property
[06:03:57] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property_hdmi_connector
[06:03:57] === [PASSED] drm_connector_attach_broadcast_rgb_property ===
[06:03:57] ========== drm_get_tv_mode_from_name (2 subtests) ==========
[06:03:57] ========== drm_test_get_tv_mode_from_name_valid ===========
[06:03:57] [PASSED] NTSC
[06:03:57] [PASSED] NTSC-443
[06:03:57] [PASSED] NTSC-J
[06:03:57] [PASSED] PAL
[06:03:57] [PASSED] PAL-M
[06:03:57] [PASSED] PAL-N
[06:03:57] [PASSED] SECAM
[06:03:57] [PASSED] Mono
[06:03:57] ====== [PASSED] drm_test_get_tv_mode_from_name_valid =======
[06:03:57] [PASSED] drm_test_get_tv_mode_from_name_truncated
[06:03:57] ============ [PASSED] drm_get_tv_mode_from_name ============
[06:03:57] = drm_test_connector_hdmi_compute_mode_clock (12 subtests) =
[06:03:57] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb
[06:03:57] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc
[06:03:57] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc_vic_1
[06:03:57] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc
[06:03:57] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc_vic_1
[06:03:57] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_double
[06:03:57] = drm_test_connector_hdmi_compute_mode_clock_yuv420_valid =
[06:03:57] [PASSED] VIC 96
[06:03:57] [PASSED] VIC 97
[06:03:57] [PASSED] VIC 101
[06:03:57] [PASSED] VIC 102
[06:03:57] [PASSED] VIC 106
[06:03:57] [PASSED] VIC 107
[06:03:57] === [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_valid ===
[06:03:57] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_10_bpc
[06:03:57] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_12_bpc
[06:03:57] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_8_bpc
[06:03:57] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_10_bpc
[06:03:57] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_12_bpc
[06:03:57] === [PASSED] drm_test_connector_hdmi_compute_mode_clock ====
[06:03:57] == drm_hdmi_connector_get_broadcast_rgb_name (2 subtests) ==
[06:03:57] === drm_test_drm_hdmi_connector_get_broadcast_rgb_name ====
[06:03:57] [PASSED] Automatic
[06:03:57] [PASSED] Full
[06:03:57] [PASSED] Limited 16:235
[06:03:57] === [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name ===
[06:03:57] [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name_invalid
[06:03:57] ==== [PASSED] drm_hdmi_connector_get_broadcast_rgb_name ====
[06:03:57] == drm_hdmi_connector_get_output_format_name (2 subtests) ==
[06:03:57] === drm_test_drm_hdmi_connector_get_output_format_name ====
[06:03:57] [PASSED] RGB
[06:03:57] [PASSED] YUV 4:2:0
[06:03:57] [PASSED] YUV 4:2:2
[06:03:57] [PASSED] YUV 4:4:4
[06:03:57] === [PASSED] drm_test_drm_hdmi_connector_get_output_format_name ===
[06:03:57] [PASSED] drm_test_drm_hdmi_connector_get_output_format_name_invalid
[06:03:57] ==== [PASSED] drm_hdmi_connector_get_output_format_name ====
[06:03:57] ============= drm_damage_helper (21 subtests) ==============
[06:03:57] [PASSED] drm_test_damage_iter_no_damage
[06:03:57] [PASSED] drm_test_damage_iter_no_damage_fractional_src
[06:03:57] [PASSED] drm_test_damage_iter_no_damage_src_moved
[06:03:57] [PASSED] drm_test_damage_iter_no_damage_fractional_src_moved
[06:03:57] [PASSED] drm_test_damage_iter_no_damage_not_visible
[06:03:57] [PASSED] drm_test_damage_iter_no_damage_no_crtc
[06:03:57] [PASSED] drm_test_damage_iter_no_damage_no_fb
[06:03:57] [PASSED] drm_test_damage_iter_simple_damage
[06:03:57] [PASSED] drm_test_damage_iter_single_damage
[06:03:57] [PASSED] drm_test_damage_iter_single_damage_intersect_src
[06:03:57] [PASSED] drm_test_damage_iter_single_damage_outside_src
[06:03:57] [PASSED] drm_test_damage_iter_single_damage_fractional_src
[06:03:57] [PASSED] drm_test_damage_iter_single_damage_intersect_fractional_src
[06:03:57] [PASSED] drm_test_damage_iter_single_damage_outside_fractional_src
[06:03:57] [PASSED] drm_test_damage_iter_single_damage_src_moved
[06:03:57] [PASSED] drm_test_damage_iter_single_damage_fractional_src_moved
[06:03:57] [PASSED] drm_test_damage_iter_damage
[06:03:57] [PASSED] drm_test_damage_iter_damage_one_intersect
[06:03:57] [PASSED] drm_test_damage_iter_damage_one_outside
[06:03:57] [PASSED] drm_test_damage_iter_damage_src_moved
[06:03:57] [PASSED] drm_test_damage_iter_damage_not_visible
[06:03:57] ================ [PASSED] drm_damage_helper ================
[06:03:57] ============== drm_dp_mst_helper (3 subtests) ==============
[06:03:57] ============== drm_test_dp_mst_calc_pbn_mode ==============
[06:03:57] [PASSED] Clock 154000 BPP 30 DSC disabled
[06:03:57] [PASSED] Clock 234000 BPP 30 DSC disabled
[06:03:57] [PASSED] Clock 297000 BPP 24 DSC disabled
[06:03:57] [PASSED] Clock 332880 BPP 24 DSC enabled
[06:03:57] [PASSED] Clock 324540 BPP 24 DSC enabled
[06:03:57] ========== [PASSED] drm_test_dp_mst_calc_pbn_mode ==========
[06:03:57] ============== drm_test_dp_mst_calc_pbn_div ===============
[06:03:57] [PASSED] Link rate 2000000 lane count 4
[06:03:57] [PASSED] Link rate 2000000 lane count 2
[06:03:57] [PASSED] Link rate 2000000 lane count 1
[06:03:57] [PASSED] Link rate 1350000 lane count 4
[06:03:57] [PASSED] Link rate 1350000 lane count 2
[06:03:57] [PASSED] Link rate 1350000 lane count 1
[06:03:57] [PASSED] Link rate 1000000 lane count 4
[06:03:57] [PASSED] Link rate 1000000 lane count 2
[06:03:57] [PASSED] Link rate 1000000 lane count 1
[06:03:57] [PASSED] Link rate 810000 lane count 4
[06:03:57] [PASSED] Link rate 810000 lane count 2
[06:03:57] [PASSED] Link rate 810000 lane count 1
[06:03:57] [PASSED] Link rate 540000 lane count 4
[06:03:57] [PASSED] Link rate 540000 lane count 2
[06:03:57] [PASSED] Link rate 540000 lane count 1
[06:03:57] [PASSED] Link rate 270000 lane count 4
[06:03:57] [PASSED] Link rate 270000 lane count 2
[06:03:57] [PASSED] Link rate 270000 lane count 1
[06:03:57] [PASSED] Link rate 162000 lane count 4
[06:03:57] [PASSED] Link rate 162000 lane count 2
[06:03:57] [PASSED] Link rate 162000 lane count 1
[06:03:57] ========== [PASSED] drm_test_dp_mst_calc_pbn_div ===========
[06:03:57] ========= drm_test_dp_mst_sideband_msg_req_decode =========
[06:03:57] [PASSED] DP_ENUM_PATH_RESOURCES with port number
[06:03:57] [PASSED] DP_POWER_UP_PHY with port number
[06:03:57] [PASSED] DP_POWER_DOWN_PHY with port number
[06:03:57] [PASSED] DP_ALLOCATE_PAYLOAD with SDP stream sinks
[06:03:57] [PASSED] DP_ALLOCATE_PAYLOAD with port number
[06:03:57] [PASSED] DP_ALLOCATE_PAYLOAD with VCPI
[06:03:57] [PASSED] DP_ALLOCATE_PAYLOAD with PBN
[06:03:57] [PASSED] DP_QUERY_PAYLOAD with port number
[06:03:57] [PASSED] DP_QUERY_PAYLOAD with VCPI
[06:03:57] [PASSED] DP_REMOTE_DPCD_READ with port number
[06:03:57] [PASSED] DP_REMOTE_DPCD_READ with DPCD address
[06:03:57] [PASSED] DP_REMOTE_DPCD_READ with max number of bytes
[06:03:57] [PASSED] DP_REMOTE_DPCD_WRITE with port number
[06:03:57] [PASSED] DP_REMOTE_DPCD_WRITE with DPCD address
[06:03:57] [PASSED] DP_REMOTE_DPCD_WRITE with data array
[06:03:57] [PASSED] DP_REMOTE_I2C_READ with port number
[06:03:57] [PASSED] DP_REMOTE_I2C_READ with I2C device ID
[06:03:57] [PASSED] DP_REMOTE_I2C_READ with transactions array
[06:03:57] [PASSED] DP_REMOTE_I2C_WRITE with port number
[06:03:57] [PASSED] DP_REMOTE_I2C_WRITE with I2C device ID
[06:03:57] [PASSED] DP_REMOTE_I2C_WRITE with data array
[06:03:57] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream ID
[06:03:57] [PASSED] DP_QUERY_STREAM_ENC_STATUS with client ID
[06:03:57] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream event
[06:03:57] [PASSED] DP_QUERY_STREAM_ENC_STATUS with valid stream event
[06:03:57] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream behavior
[06:03:57] [PASSED] DP_QUERY_STREAM_ENC_STATUS with a valid stream behavior
[06:03:57] ===== [PASSED] drm_test_dp_mst_sideband_msg_req_decode =====
[06:03:57] ================ [PASSED] drm_dp_mst_helper ================
[06:03:57] ================== drm_exec (7 subtests) ===================
[06:03:57] [PASSED] sanitycheck
[06:03:57] [PASSED] test_lock
[06:03:57] [PASSED] test_lock_unlock
[06:03:57] [PASSED] test_duplicates
[06:03:57] [PASSED] test_prepare
[06:03:57] [PASSED] test_prepare_array
[06:03:57] [PASSED] test_multiple_loops
[06:03:57] ==================== [PASSED] drm_exec =====================
[06:03:57] =========== drm_format_helper_test (17 subtests) ===========
[06:03:57] ============== drm_test_fb_xrgb8888_to_gray8 ==============
[06:03:57] [PASSED] single_pixel_source_buffer
[06:03:57] [PASSED] single_pixel_clip_rectangle
[06:03:57] [PASSED] well_known_colors
[06:03:57] [PASSED] destination_pitch
[06:03:57] ========== [PASSED] drm_test_fb_xrgb8888_to_gray8 ==========
[06:03:57] ============= drm_test_fb_xrgb8888_to_rgb332 ==============
[06:03:57] [PASSED] single_pixel_source_buffer
[06:03:57] [PASSED] single_pixel_clip_rectangle
[06:03:57] [PASSED] well_known_colors
[06:03:57] [PASSED] destination_pitch
[06:03:57] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb332 ==========
[06:03:57] ============= drm_test_fb_xrgb8888_to_rgb565 ==============
[06:03:57] [PASSED] single_pixel_source_buffer
[06:03:57] [PASSED] single_pixel_clip_rectangle
[06:03:57] [PASSED] well_known_colors
[06:03:57] [PASSED] destination_pitch
[06:03:57] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb565 ==========
[06:03:57] ============ drm_test_fb_xrgb8888_to_xrgb1555 =============
[06:03:57] [PASSED] single_pixel_source_buffer
[06:03:57] [PASSED] single_pixel_clip_rectangle
[06:03:57] [PASSED] well_known_colors
[06:03:57] [PASSED] destination_pitch
[06:03:57] ======== [PASSED] drm_test_fb_xrgb8888_to_xrgb1555 =========
[06:03:57] ============ drm_test_fb_xrgb8888_to_argb1555 =============
[06:03:57] [PASSED] single_pixel_source_buffer
[06:03:57] [PASSED] single_pixel_clip_rectangle
[06:03:57] [PASSED] well_known_colors
[06:03:57] [PASSED] destination_pitch
[06:03:57] ======== [PASSED] drm_test_fb_xrgb8888_to_argb1555 =========
[06:03:57] ============ drm_test_fb_xrgb8888_to_rgba5551 =============
[06:03:57] [PASSED] single_pixel_source_buffer
[06:03:57] [PASSED] single_pixel_clip_rectangle
[06:03:57] [PASSED] well_known_colors
[06:03:57] [PASSED] destination_pitch
[06:03:57] ======== [PASSED] drm_test_fb_xrgb8888_to_rgba5551 =========
[06:03:57] ============= drm_test_fb_xrgb8888_to_rgb888 ==============
[06:03:57] [PASSED] single_pixel_source_buffer
[06:03:57] [PASSED] single_pixel_clip_rectangle
[06:03:57] [PASSED] well_known_colors
[06:03:57] [PASSED] destination_pitch
[06:03:57] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb888 ==========
[06:03:57] ============= drm_test_fb_xrgb8888_to_bgr888 ==============
[06:03:57] [PASSED] single_pixel_source_buffer
[06:03:57] [PASSED] single_pixel_clip_rectangle
[06:03:57] [PASSED] well_known_colors
[06:03:57] [PASSED] destination_pitch
[06:03:57] ========= [PASSED] drm_test_fb_xrgb8888_to_bgr888 ==========
[06:03:57] ============ drm_test_fb_xrgb8888_to_argb8888 =============
[06:03:57] [PASSED] single_pixel_source_buffer
[06:03:57] [PASSED] single_pixel_clip_rectangle
[06:03:57] [PASSED] well_known_colors
[06:03:57] [PASSED] destination_pitch
[06:03:57] ======== [PASSED] drm_test_fb_xrgb8888_to_argb8888 =========
[06:03:57] =========== drm_test_fb_xrgb8888_to_xrgb2101010 ===========
[06:03:57] [PASSED] single_pixel_source_buffer
[06:03:57] [PASSED] single_pixel_clip_rectangle
[06:03:57] [PASSED] well_known_colors
[06:03:57] [PASSED] destination_pitch
[06:03:57] ======= [PASSED] drm_test_fb_xrgb8888_to_xrgb2101010 =======
[06:03:57] =========== drm_test_fb_xrgb8888_to_argb2101010 ===========
[06:03:57] [PASSED] single_pixel_source_buffer
[06:03:57] [PASSED] single_pixel_clip_rectangle
[06:03:57] [PASSED] well_known_colors
[06:03:57] [PASSED] destination_pitch
[06:03:57] ======= [PASSED] drm_test_fb_xrgb8888_to_argb2101010 =======
[06:03:57] ============== drm_test_fb_xrgb8888_to_mono ===============
[06:03:57] [PASSED] single_pixel_source_buffer
[06:03:57] [PASSED] single_pixel_clip_rectangle
[06:03:57] [PASSED] well_known_colors
[06:03:57] [PASSED] destination_pitch
[06:03:57] ========== [PASSED] drm_test_fb_xrgb8888_to_mono ===========
[06:03:57] ==================== drm_test_fb_swab =====================
[06:03:57] [PASSED] single_pixel_source_buffer
[06:03:57] [PASSED] single_pixel_clip_rectangle
[06:03:57] [PASSED] well_known_colors
[06:03:57] [PASSED] destination_pitch
[06:03:57] ================ [PASSED] drm_test_fb_swab =================
[06:03:57] ============ drm_test_fb_xrgb8888_to_xbgr8888 =============
[06:03:57] [PASSED] single_pixel_source_buffer
[06:03:57] [PASSED] single_pixel_clip_rectangle
[06:03:57] [PASSED] well_known_colors
[06:03:57] [PASSED] destination_pitch
[06:03:57] ======== [PASSED] drm_test_fb_xrgb8888_to_xbgr8888 =========
[06:03:57] ============ drm_test_fb_xrgb8888_to_abgr8888 =============
[06:03:57] [PASSED] single_pixel_source_buffer
[06:03:57] [PASSED] single_pixel_clip_rectangle
[06:03:57] [PASSED] well_known_colors
[06:03:57] [PASSED] destination_pitch
[06:03:57] ======== [PASSED] drm_test_fb_xrgb8888_to_abgr8888 =========
[06:03:57] ================= drm_test_fb_clip_offset =================
[06:03:57] [PASSED] pass through
[06:03:57] [PASSED] horizontal offset
[06:03:57] [PASSED] vertical offset
[06:03:57] [PASSED] horizontal and vertical offset
[06:03:57] [PASSED] horizontal offset (custom pitch)
[06:03:57] [PASSED] vertical offset (custom pitch)
[06:03:57] [PASSED] horizontal and vertical offset (custom pitch)
[06:03:57] ============= [PASSED] drm_test_fb_clip_offset =============
[06:03:57] =================== drm_test_fb_memcpy ====================
[06:03:57] [PASSED] single_pixel_source_buffer: XR24 little-endian (0x34325258)
[06:03:57] [PASSED] single_pixel_source_buffer: XRA8 little-endian (0x38415258)
[06:03:57] [PASSED] single_pixel_source_buffer: YU24 little-endian (0x34325559)
[06:03:57] [PASSED] single_pixel_clip_rectangle: XB24 little-endian (0x34324258)
[06:03:57] [PASSED] single_pixel_clip_rectangle: XRA8 little-endian (0x38415258)
[06:03:57] [PASSED] single_pixel_clip_rectangle: YU24 little-endian (0x34325559)
[06:03:57] [PASSED] well_known_colors: XB24 little-endian (0x34324258)
[06:03:57] [PASSED] well_known_colors: XRA8 little-endian (0x38415258)
[06:03:57] [PASSED] well_known_colors: YU24 little-endian (0x34325559)
[06:03:57] [PASSED] destination_pitch: XB24 little-endian (0x34324258)
[06:03:57] [PASSED] destination_pitch: XRA8 little-endian (0x38415258)
[06:03:57] [PASSED] destination_pitch: YU24 little-endian (0x34325559)
[06:03:57] =============== [PASSED] drm_test_fb_memcpy ================
[06:03:57] ============= [PASSED] drm_format_helper_test ==============
[06:03:57] ================= drm_format (18 subtests) =================
[06:03:57] [PASSED] drm_test_format_block_width_invalid
[06:03:57] [PASSED] drm_test_format_block_width_one_plane
[06:03:57] [PASSED] drm_test_format_block_width_two_plane
[06:03:57] [PASSED] drm_test_format_block_width_three_plane
[06:03:57] [PASSED] drm_test_format_block_width_tiled
[06:03:57] [PASSED] drm_test_format_block_height_invalid
[06:03:57] [PASSED] drm_test_format_block_height_one_plane
[06:03:57] [PASSED] drm_test_format_block_height_two_plane
[06:03:57] [PASSED] drm_test_format_block_height_three_plane
[06:03:57] [PASSED] drm_test_format_block_height_tiled
[06:03:57] [PASSED] drm_test_format_min_pitch_invalid
[06:03:57] [PASSED] drm_test_format_min_pitch_one_plane_8bpp
[06:03:57] [PASSED] drm_test_format_min_pitch_one_plane_16bpp
[06:03:57] [PASSED] drm_test_format_min_pitch_one_plane_24bpp
[06:03:57] [PASSED] drm_test_format_min_pitch_one_plane_32bpp
[06:03:57] [PASSED] drm_test_format_min_pitch_two_plane
[06:03:57] [PASSED] drm_test_format_min_pitch_three_plane_8bpp
[06:03:57] [PASSED] drm_test_format_min_pitch_tiled
[06:03:57] =================== [PASSED] drm_format ====================
[06:03:57] ============== drm_framebuffer (10 subtests) ===============
[06:03:57] ========== drm_test_framebuffer_check_src_coords ==========
[06:03:57] [PASSED] Success: source fits into fb
[06:03:57] [PASSED] Fail: overflowing fb with x-axis coordinate
[06:03:57] [PASSED] Fail: overflowing fb with y-axis coordinate
[06:03:57] [PASSED] Fail: overflowing fb with source width
[06:03:57] [PASSED] Fail: overflowing fb with source height
[06:03:57] ====== [PASSED] drm_test_framebuffer_check_src_coords ======
[06:03:57] [PASSED] drm_test_framebuffer_cleanup
[06:03:57] =============== drm_test_framebuffer_create ===============
[06:03:57] [PASSED] ABGR8888 normal sizes
[06:03:57] [PASSED] ABGR8888 max sizes
[06:03:57] [PASSED] ABGR8888 pitch greater than min required
[06:03:57] [PASSED] ABGR8888 pitch less than min required
[06:03:57] [PASSED] ABGR8888 Invalid width
[06:03:57] [PASSED] ABGR8888 Invalid buffer handle
[06:03:57] [PASSED] No pixel format
[06:03:57] [PASSED] ABGR8888 Width 0
[06:03:57] [PASSED] ABGR8888 Height 0
[06:03:57] [PASSED] ABGR8888 Out of bound height * pitch combination
[06:03:57] [PASSED] ABGR8888 Large buffer offset
[06:03:57] [PASSED] ABGR8888 Buffer offset for inexistent plane
[06:03:57] [PASSED] ABGR8888 Invalid flag
[06:03:57] [PASSED] ABGR8888 Set DRM_MODE_FB_MODIFIERS without modifiers
[06:03:57] [PASSED] ABGR8888 Valid buffer modifier
[06:03:57] [PASSED] ABGR8888 Invalid buffer modifier(DRM_FORMAT_MOD_SAMSUNG_64_32_TILE)
[06:03:57] [PASSED] ABGR8888 Extra pitches without DRM_MODE_FB_MODIFIERS
[06:03:57] [PASSED] ABGR8888 Extra pitches with DRM_MODE_FB_MODIFIERS
[06:03:57] [PASSED] NV12 Normal sizes
[06:03:57] [PASSED] NV12 Max sizes
[06:03:57] [PASSED] NV12 Invalid pitch
[06:03:57] [PASSED] NV12 Invalid modifier/missing DRM_MODE_FB_MODIFIERS flag
[06:03:57] [PASSED] NV12 different modifier per-plane
[06:03:57] [PASSED] NV12 with DRM_FORMAT_MOD_SAMSUNG_64_32_TILE
[06:03:57] [PASSED] NV12 Valid modifiers without DRM_MODE_FB_MODIFIERS
[06:03:57] [PASSED] NV12 Modifier for inexistent plane
[06:03:57] [PASSED] NV12 Handle for inexistent plane
[06:03:57] [PASSED] NV12 Handle for inexistent plane without DRM_MODE_FB_MODIFIERS
[06:03:57] [PASSED] YVU420 DRM_MODE_FB_MODIFIERS set without modifier
[06:03:57] [PASSED] YVU420 Normal sizes
[06:03:57] [PASSED] YVU420 Max sizes
[06:03:57] [PASSED] YVU420 Invalid pitch
[06:03:57] [PASSED] YVU420 Different pitches
[06:03:57] [PASSED] YVU420 Different buffer offsets/pitches
[06:03:57] [PASSED] YVU420 Modifier set just for plane 0, without DRM_MODE_FB_MODIFIERS
[06:03:57] [PASSED] YVU420 Modifier set just for planes 0, 1, without DRM_MODE_FB_MODIFIERS
[06:03:57] [PASSED] YVU420 Modifier set just for plane 0, 1, with DRM_MODE_FB_MODIFIERS
[06:03:57] [PASSED] YVU420 Valid modifier
[06:03:57] [PASSED] YVU420 Different modifiers per plane
[06:03:57] [PASSED] YVU420 Modifier for inexistent plane
[06:03:57] [PASSED] YUV420_10BIT Invalid modifier(DRM_FORMAT_MOD_LINEAR)
[06:03:57] [PASSED] X0L2 Normal sizes
[06:03:57] [PASSED] X0L2 Max sizes
[06:03:57] [PASSED] X0L2 Invalid pitch
[06:03:57] [PASSED] X0L2 Pitch greater than minimum required
[06:03:57] [PASSED] X0L2 Handle for inexistent plane
[06:03:57] [PASSED] X0L2 Offset for inexistent plane, without DRM_MODE_FB_MODIFIERS set
[06:03:57] [PASSED] X0L2 Modifier without DRM_MODE_FB_MODIFIERS set
[06:03:57] [PASSED] X0L2 Valid modifier
[06:03:57] [PASSED] X0L2 Modifier for inexistent plane
[06:03:57] =========== [PASSED] drm_test_framebuffer_create ===========
[06:03:57] [PASSED] drm_test_framebuffer_free
[06:03:57] [PASSED] drm_test_framebuffer_init
[06:03:57] [PASSED] drm_test_framebuffer_init_bad_format
[06:03:57] [PASSED] drm_test_framebuffer_init_dev_mismatch
[06:03:57] [PASSED] drm_test_framebuffer_lookup
[06:03:57] [PASSED] drm_test_framebuffer_lookup_inexistent
[06:03:57] [PASSED] drm_test_framebuffer_modifiers_not_supported
[06:03:57] ================= [PASSED] drm_framebuffer =================
[06:03:57] ================ drm_gem_shmem (8 subtests) ================
[06:03:57] [PASSED] drm_gem_shmem_test_obj_create
[06:03:57] [PASSED] drm_gem_shmem_test_obj_create_private
[06:03:57] [PASSED] drm_gem_shmem_test_pin_pages
[06:03:57] [PASSED] drm_gem_shmem_test_vmap
[06:03:57] [PASSED] drm_gem_shmem_test_get_sg_table
[06:03:57] [PASSED] drm_gem_shmem_test_get_pages_sgt
[06:03:57] [PASSED] drm_gem_shmem_test_madvise
[06:03:57] [PASSED] drm_gem_shmem_test_purge
[06:03:57] ================== [PASSED] drm_gem_shmem ==================
[06:03:57] === drm_atomic_helper_connector_hdmi_check (27 subtests) ===
[06:03:57] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode
[06:03:57] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode_vic_1
[06:03:57] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode
[06:03:57] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode_vic_1
[06:03:57] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode
[06:03:57] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode_vic_1
[06:03:57] ====== drm_test_check_broadcast_rgb_cea_mode_yuv420 =======
[06:03:57] [PASSED] Automatic
[06:03:57] [PASSED] Full
[06:03:57] [PASSED] Limited 16:235
[06:03:57] == [PASSED] drm_test_check_broadcast_rgb_cea_mode_yuv420 ===
[06:03:57] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_changed
[06:03:57] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_not_changed
[06:03:57] [PASSED] drm_test_check_disable_connector
[06:03:57] [PASSED] drm_test_check_hdmi_funcs_reject_rate
[06:03:57] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_rgb
[06:03:57] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_yuv420
[06:03:57] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv422
[06:03:57] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv420
[06:03:57] [PASSED] drm_test_check_driver_unsupported_fallback_yuv420
[06:03:57] [PASSED] drm_test_check_output_bpc_crtc_mode_changed
[06:03:57] [PASSED] drm_test_check_output_bpc_crtc_mode_not_changed
[06:03:57] [PASSED] drm_test_check_output_bpc_dvi
[06:03:57] [PASSED] drm_test_check_output_bpc_format_vic_1
[06:03:57] [PASSED] drm_test_check_output_bpc_format_display_8bpc_only
[06:03:57] [PASSED] drm_test_check_output_bpc_format_display_rgb_only
[06:03:57] [PASSED] drm_test_check_output_bpc_format_driver_8bpc_only
[06:03:57] [PASSED] drm_test_check_output_bpc_format_driver_rgb_only
[06:03:57] [PASSED] drm_test_check_tmds_char_rate_rgb_8bpc
[06:03:57] [PASSED] drm_test_check_tmds_char_rate_rgb_10bpc
[06:03:57] [PASSED] drm_test_check_tmds_char_rate_rgb_12bpc
[06:03:57] ===== [PASSED] drm_atomic_helper_connector_hdmi_check ======
[06:03:57] === drm_atomic_helper_connector_hdmi_reset (6 subtests) ====
[06:03:57] [PASSED] drm_test_check_broadcast_rgb_value
[06:03:57] [PASSED] drm_test_check_bpc_8_value
[06:03:57] [PASSED] drm_test_check_bpc_10_value
[06:03:57] [PASSED] drm_test_check_bpc_12_value
[06:03:57] [PASSED] drm_test_check_format_value
[06:03:57] [PASSED] drm_test_check_tmds_char_value
[06:03:57] ===== [PASSED] drm_atomic_helper_connector_hdmi_reset ======
[06:03:57] = drm_atomic_helper_connector_hdmi_mode_valid (4 subtests) =
[06:03:57] [PASSED] drm_test_check_mode_valid
[06:03:57] [PASSED] drm_test_check_mode_valid_reject
[06:03:57] [PASSED] drm_test_check_mode_valid_reject_rate
[06:03:57] [PASSED] drm_test_check_mode_valid_reject_max_clock
[06:03:57] === [PASSED] drm_atomic_helper_connector_hdmi_mode_valid ===
[06:03:57] = drm_atomic_helper_connector_hdmi_infoframes (5 subtests) =
[06:03:57] [PASSED] drm_test_check_infoframes
[06:03:57] [PASSED] drm_test_check_reject_avi_infoframe
[06:03:57] [PASSED] drm_test_check_reject_hdr_infoframe_bpc_8
[06:03:57] [PASSED] drm_test_check_reject_hdr_infoframe_bpc_10
[06:03:57] [PASSED] drm_test_check_reject_audio_infoframe
[06:03:57] === [PASSED] drm_atomic_helper_connector_hdmi_infoframes ===
[06:03:57] ================= drm_managed (2 subtests) =================
[06:03:57] [PASSED] drm_test_managed_release_action
[06:03:57] [PASSED] drm_test_managed_run_action
[06:03:57] =================== [PASSED] drm_managed ===================
[06:03:57] =================== drm_mm (6 subtests) ====================
[06:03:57] [PASSED] drm_test_mm_init
[06:03:57] [PASSED] drm_test_mm_debug
[06:03:57] [PASSED] drm_test_mm_align32
[06:03:57] [PASSED] drm_test_mm_align64
[06:03:57] [PASSED] drm_test_mm_lowest
[06:03:57] [PASSED] drm_test_mm_highest
[06:03:57] ===================== [PASSED] drm_mm ======================
[06:03:57] ============= drm_modes_analog_tv (5 subtests) =============
[06:03:57] [PASSED] drm_test_modes_analog_tv_mono_576i
[06:03:57] [PASSED] drm_test_modes_analog_tv_ntsc_480i
[06:03:57] [PASSED] drm_test_modes_analog_tv_ntsc_480i_inlined
[06:03:57] [PASSED] drm_test_modes_analog_tv_pal_576i
[06:03:57] [PASSED] drm_test_modes_analog_tv_pal_576i_inlined
[06:03:57] =============== [PASSED] drm_modes_analog_tv ===============
[06:03:57] ============== drm_plane_helper (2 subtests) ===============
[06:03:57] =============== drm_test_check_plane_state ================
[06:03:57] [PASSED] clipping_simple
[06:03:57] [PASSED] clipping_rotate_reflect
[06:03:57] [PASSED] positioning_simple
[06:03:57] [PASSED] upscaling
[06:03:57] [PASSED] downscaling
[06:03:57] [PASSED] rounding1
[06:03:57] [PASSED] rounding2
[06:03:57] [PASSED] rounding3
[06:03:57] [PASSED] rounding4
[06:03:57] =========== [PASSED] drm_test_check_plane_state ============
[06:03:57] =========== drm_test_check_invalid_plane_state ============
[06:03:57] [PASSED] positioning_invalid
[06:03:57] [PASSED] upscaling_invalid
[06:03:57] [PASSED] downscaling_invalid
[06:03:57] ======= [PASSED] drm_test_check_invalid_plane_state ========
[06:03:57] ================ [PASSED] drm_plane_helper =================
[06:03:57] ====== drm_connector_helper_tv_get_modes (1 subtest) =======
[06:03:57] ====== drm_test_connector_helper_tv_get_modes_check =======
[06:03:57] [PASSED] None
[06:03:57] [PASSED] PAL
[06:03:57] [PASSED] NTSC
[06:03:57] [PASSED] Both, NTSC Default
[06:03:57] [PASSED] Both, PAL Default
[06:03:57] [PASSED] Both, NTSC Default, with PAL on command-line
[06:03:57] [PASSED] Both, PAL Default, with NTSC on command-line
[06:03:57] == [PASSED] drm_test_connector_helper_tv_get_modes_check ===
[06:03:57] ======== [PASSED] drm_connector_helper_tv_get_modes ========
[06:03:57] ================== drm_rect (9 subtests) ===================
[06:03:57] [PASSED] drm_test_rect_clip_scaled_div_by_zero
[06:03:57] [PASSED] drm_test_rect_clip_scaled_not_clipped
[06:03:57] [PASSED] drm_test_rect_clip_scaled_clipped
[06:03:57] [PASSED] drm_test_rect_clip_scaled_signed_vs_unsigned
[06:03:57] ================= drm_test_rect_intersect =================
[06:03:57] [PASSED] top-left x bottom-right: 2x2+1+1 x 2x2+0+0
[06:03:57] [PASSED] top-right x bottom-left: 2x2+0+0 x 2x2+1-1
[06:03:57] [PASSED] bottom-left x top-right: 2x2+1-1 x 2x2+0+0
[06:03:57] [PASSED] bottom-right x top-left: 2x2+0+0 x 2x2+1+1
[06:03:57] [PASSED] right x left: 2x1+0+0 x 3x1+1+0
[06:03:57] [PASSED] left x right: 3x1+1+0 x 2x1+0+0
[06:03:57] [PASSED] up x bottom: 1x2+0+0 x 1x3+0-1
[06:03:57] [PASSED] bottom x up: 1x3+0-1 x 1x2+0+0
[06:03:57] [PASSED] touching corner: 1x1+0+0 x 2x2+1+1
[06:03:57] [PASSED] touching side: 1x1+0+0 x 1x1+1+0
[06:03:57] [PASSED] equal rects: 2x2+0+0 x 2x2+0+0
[06:03:57] [PASSED] inside another: 2x2+0+0 x 1x1+1+1
[06:03:57] [PASSED] far away: 1x1+0+0 x 1x1+3+6
[06:03:57] [PASSED] points intersecting: 0x0+5+10 x 0x0+5+10
[06:03:57] [PASSED] points not intersecting: 0x0+0+0 x 0x0+5+10
[06:03:57] ============= [PASSED] drm_test_rect_intersect =============
[06:03:57] ================ drm_test_rect_calc_hscale ================
[06:03:57] [PASSED] normal use
[06:03:57] [PASSED] out of max range
[06:03:57] [PASSED] out of min range
[06:03:57] [PASSED] zero dst
[06:03:57] [PASSED] negative src
[06:03:57] [PASSED] negative dst
[06:03:57] ============ [PASSED] drm_test_rect_calc_hscale ============
[06:03:57] ================ drm_test_rect_calc_vscale ================
[06:03:57] [PASSED] normal use
[06:03:57] [PASSED] out of max range
[06:03:57] [PASSED] out of min range
[06:03:57] [PASSED] zero dst
[06:03:57] [PASSED] negative src
[06:03:57] [PASSED] negative dst
stty: 'standard input': Inappropriate ioctl for device
[06:03:57] ============ [PASSED] drm_test_rect_calc_vscale ============
[06:03:57] ================== drm_test_rect_rotate ===================
[06:03:57] [PASSED] reflect-x
[06:03:57] [PASSED] reflect-y
[06:03:57] [PASSED] rotate-0
[06:03:57] [PASSED] rotate-90
[06:03:57] [PASSED] rotate-180
[06:03:57] [PASSED] rotate-270
[06:03:57] ============== [PASSED] drm_test_rect_rotate ===============
[06:03:57] ================ drm_test_rect_rotate_inv =================
[06:03:57] [PASSED] reflect-x
[06:03:57] [PASSED] reflect-y
[06:03:57] [PASSED] rotate-0
[06:03:57] [PASSED] rotate-90
[06:03:57] [PASSED] rotate-180
[06:03:57] [PASSED] rotate-270
[06:03:57] ============ [PASSED] drm_test_rect_rotate_inv =============
[06:03:57] ==================== [PASSED] drm_rect =====================
[06:03:57] ============ drm_sysfb_modeset_test (1 subtest) ============
[06:03:57] ============ drm_test_sysfb_build_fourcc_list =============
[06:03:57] [PASSED] no native formats
[06:03:57] [PASSED] XRGB8888 as native format
[06:03:57] [PASSED] remove duplicates
[06:03:57] [PASSED] convert alpha formats
[06:03:57] [PASSED] random formats
[06:03:57] ======== [PASSED] drm_test_sysfb_build_fourcc_list =========
[06:03:57] ============= [PASSED] drm_sysfb_modeset_test ==============
[06:03:57] ================== drm_fixp (2 subtests) ===================
[06:03:57] [PASSED] drm_test_int2fixp
[06:03:57] [PASSED] drm_test_sm2fixp
[06:03:57] ==================== [PASSED] drm_fixp =====================
[06:03:57] ============================================================
[06:03:57] Testing complete. Ran 621 tests: passed: 621
[06:03:57] Elapsed time: 25.687s total, 1.756s configuring, 23.764s building, 0.131s running
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/ttm/tests/.kunitconfig
[06:03:57] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[06:03:59] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48
[06:04:08] Starting KUnit Kernel (1/1)...
[06:04:08] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[06:04:08] ================= ttm_device (5 subtests) ==================
[06:04:08] [PASSED] ttm_device_init_basic
[06:04:08] [PASSED] ttm_device_init_multiple
[06:04:08] [PASSED] ttm_device_fini_basic
[06:04:08] [PASSED] ttm_device_init_no_vma_man
[06:04:08] ================== ttm_device_init_pools ==================
[06:04:08] [PASSED] No DMA allocations, no DMA32 required
[06:04:08] [PASSED] DMA allocations, DMA32 required
[06:04:08] [PASSED] No DMA allocations, DMA32 required
[06:04:08] [PASSED] DMA allocations, no DMA32 required
[06:04:08] ============== [PASSED] ttm_device_init_pools ==============
[06:04:08] =================== [PASSED] ttm_device ====================
[06:04:08] ================== ttm_pool (8 subtests) ===================
[06:04:08] ================== ttm_pool_alloc_basic ===================
[06:04:08] [PASSED] One page
[06:04:08] [PASSED] More than one page
[06:04:08] [PASSED] Above the allocation limit
[06:04:08] [PASSED] One page, with coherent DMA mappings enabled
[06:04:08] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[06:04:08] ============== [PASSED] ttm_pool_alloc_basic ===============
[06:04:08] ============== ttm_pool_alloc_basic_dma_addr ==============
[06:04:08] [PASSED] One page
[06:04:08] [PASSED] More than one page
[06:04:08] [PASSED] Above the allocation limit
[06:04:08] [PASSED] One page, with coherent DMA mappings enabled
[06:04:08] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[06:04:08] ========== [PASSED] ttm_pool_alloc_basic_dma_addr ==========
[06:04:08] [PASSED] ttm_pool_alloc_order_caching_match
[06:04:08] [PASSED] ttm_pool_alloc_caching_mismatch
[06:04:08] [PASSED] ttm_pool_alloc_order_mismatch
[06:04:08] [PASSED] ttm_pool_free_dma_alloc
[06:04:08] [PASSED] ttm_pool_free_no_dma_alloc
[06:04:08] [PASSED] ttm_pool_fini_basic
[06:04:08] ==================== [PASSED] ttm_pool =====================
[06:04:08] ================ ttm_resource (8 subtests) =================
[06:04:08] ================= ttm_resource_init_basic =================
[06:04:08] [PASSED] Init resource in TTM_PL_SYSTEM
[06:04:08] [PASSED] Init resource in TTM_PL_VRAM
[06:04:08] [PASSED] Init resource in a private placement
[06:04:08] [PASSED] Init resource in TTM_PL_SYSTEM, set placement flags
[06:04:08] ============= [PASSED] ttm_resource_init_basic =============
[06:04:08] [PASSED] ttm_resource_init_pinned
[06:04:08] [PASSED] ttm_resource_fini_basic
[06:04:08] [PASSED] ttm_resource_manager_init_basic
[06:04:08] [PASSED] ttm_resource_manager_usage_basic
[06:04:08] [PASSED] ttm_resource_manager_set_used_basic
[06:04:08] [PASSED] ttm_sys_man_alloc_basic
[06:04:08] [PASSED] ttm_sys_man_free_basic
[06:04:08] ================== [PASSED] ttm_resource ===================
[06:04:08] =================== ttm_tt (15 subtests) ===================
[06:04:08] ==================== ttm_tt_init_basic ====================
[06:04:08] [PASSED] Page-aligned size
[06:04:08] [PASSED] Extra pages requested
[06:04:08] ================ [PASSED] ttm_tt_init_basic ================
[06:04:08] [PASSED] ttm_tt_init_misaligned
[06:04:08] [PASSED] ttm_tt_fini_basic
[06:04:08] [PASSED] ttm_tt_fini_sg
[06:04:08] [PASSED] ttm_tt_fini_shmem
[06:04:08] [PASSED] ttm_tt_create_basic
[06:04:08] [PASSED] ttm_tt_create_invalid_bo_type
[06:04:08] [PASSED] ttm_tt_create_ttm_exists
[06:04:08] [PASSED] ttm_tt_create_failed
[06:04:08] [PASSED] ttm_tt_destroy_basic
[06:04:08] [PASSED] ttm_tt_populate_null_ttm
[06:04:08] [PASSED] ttm_tt_populate_populated_ttm
[06:04:08] [PASSED] ttm_tt_unpopulate_basic
[06:04:08] [PASSED] ttm_tt_unpopulate_empty_ttm
[06:04:08] [PASSED] ttm_tt_swapin_basic
[06:04:08] ===================== [PASSED] ttm_tt ======================
[06:04:08] =================== ttm_bo (14 subtests) ===================
[06:04:08] =========== ttm_bo_reserve_optimistic_no_ticket ===========
[06:04:08] [PASSED] Cannot be interrupted and sleeps
[06:04:08] [PASSED] Cannot be interrupted, locks straight away
[06:04:08] [PASSED] Can be interrupted, sleeps
[06:04:08] ======= [PASSED] ttm_bo_reserve_optimistic_no_ticket =======
[06:04:08] [PASSED] ttm_bo_reserve_locked_no_sleep
[06:04:08] [PASSED] ttm_bo_reserve_no_wait_ticket
[06:04:08] [PASSED] ttm_bo_reserve_double_resv
[06:04:08] [PASSED] ttm_bo_reserve_interrupted
[06:04:08] [PASSED] ttm_bo_reserve_deadlock
[06:04:08] [PASSED] ttm_bo_unreserve_basic
[06:04:08] [PASSED] ttm_bo_unreserve_pinned
[06:04:08] [PASSED] ttm_bo_unreserve_bulk
[06:04:08] [PASSED] ttm_bo_fini_basic
[06:04:08] [PASSED] ttm_bo_fini_shared_resv
[06:04:08] [PASSED] ttm_bo_pin_basic
[06:04:08] [PASSED] ttm_bo_pin_unpin_resource
[06:04:08] [PASSED] ttm_bo_multiple_pin_one_unpin
[06:04:08] ===================== [PASSED] ttm_bo ======================
[06:04:08] ============== ttm_bo_validate (22 subtests) ===============
[06:04:08] ============== ttm_bo_init_reserved_sys_man ===============
[06:04:08] [PASSED] Buffer object for userspace
[06:04:08] [PASSED] Kernel buffer object
[06:04:08] [PASSED] Shared buffer object
[06:04:08] ========== [PASSED] ttm_bo_init_reserved_sys_man ===========
[06:04:08] ============== ttm_bo_init_reserved_mock_man ==============
[06:04:08] [PASSED] Buffer object for userspace
[06:04:08] [PASSED] Kernel buffer object
[06:04:08] [PASSED] Shared buffer object
[06:04:08] ========== [PASSED] ttm_bo_init_reserved_mock_man ==========
[06:04:08] [PASSED] ttm_bo_init_reserved_resv
[06:04:08] ================== ttm_bo_validate_basic ==================
[06:04:08] [PASSED] Buffer object for userspace
[06:04:08] [PASSED] Kernel buffer object
[06:04:08] [PASSED] Shared buffer object
[06:04:08] ============== [PASSED] ttm_bo_validate_basic ==============
[06:04:08] [PASSED] ttm_bo_validate_invalid_placement
[06:04:08] ============= ttm_bo_validate_same_placement ==============
[06:04:08] [PASSED] System manager
[06:04:08] [PASSED] VRAM manager
[06:04:08] ========= [PASSED] ttm_bo_validate_same_placement ==========
[06:04:08] [PASSED] ttm_bo_validate_failed_alloc
[06:04:08] [PASSED] ttm_bo_validate_pinned
[06:04:08] [PASSED] ttm_bo_validate_busy_placement
[06:04:08] ================ ttm_bo_validate_multihop =================
[06:04:08] [PASSED] Buffer object for userspace
[06:04:08] [PASSED] Kernel buffer object
[06:04:08] [PASSED] Shared buffer object
[06:04:08] ============ [PASSED] ttm_bo_validate_multihop =============
[06:04:08] ========== ttm_bo_validate_no_placement_signaled ==========
[06:04:08] [PASSED] Buffer object in system domain, no page vector
[06:04:08] [PASSED] Buffer object in system domain with an existing page vector
[06:04:08] ====== [PASSED] ttm_bo_validate_no_placement_signaled ======
[06:04:08] ======== ttm_bo_validate_no_placement_not_signaled ========
[06:04:08] [PASSED] Buffer object for userspace
[06:04:08] [PASSED] Kernel buffer object
[06:04:08] [PASSED] Shared buffer object
[06:04:08] ==== [PASSED] ttm_bo_validate_no_placement_not_signaled ====
[06:04:08] [PASSED] ttm_bo_validate_move_fence_signaled
[06:04:09] ========= ttm_bo_validate_move_fence_not_signaled =========
[06:04:09] [PASSED] Waits for GPU
[06:04:09] [PASSED] Tries to lock straight away
[06:04:09] ===== [PASSED] ttm_bo_validate_move_fence_not_signaled =====
[06:04:09] [PASSED] ttm_bo_validate_swapout
[06:04:09] [PASSED] ttm_bo_validate_happy_evict
[06:04:09] [PASSED] ttm_bo_validate_all_pinned_evict
[06:04:09] [PASSED] ttm_bo_validate_allowed_only_evict
[06:04:09] [PASSED] ttm_bo_validate_deleted_evict
[06:04:09] [PASSED] ttm_bo_validate_busy_domain_evict
[06:04:09] [PASSED] ttm_bo_validate_evict_gutting
[06:04:09] [PASSED] ttm_bo_validate_recrusive_evict
stty: 'standard input': Inappropriate ioctl for device
[06:04:09] ================= [PASSED] ttm_bo_validate =================
[06:04:09] ============================================================
[06:04:09] Testing complete. Ran 102 tests: passed: 102
[06:04:09] Elapsed time: 11.336s total, 1.745s configuring, 9.375s building, 0.176s running
+ cleanup
++ stat -c %u:%g /kernel
+ chown -R 1003:1003 /kernel
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH v2 1/5] mm: Introduce zone_appears_fragmented()
2026-04-23 5:56 ` [PATCH v2 1/5] mm: Introduce zone_appears_fragmented() Matthew Brost
@ 2026-04-23 6:04 ` Balbir Singh
2026-04-23 6:16 ` Matthew Brost
2026-04-23 10:27 ` David Hildenbrand (Arm)
1 sibling, 1 reply; 16+ messages in thread
From: Balbir Singh @ 2026-04-23 6:04 UTC (permalink / raw)
To: Matthew Brost, intel-xe, dri-devel
Cc: Thomas Hellström, Andrew Morton, David Hildenbrand,
Lorenzo Stoakes, Liam R. Howlett, Vlastimil Babka, Mike Rapoport,
Suren Baghdasaryan, Michal Hocko, linux-mm, linux-kernel
On 4/23/26 15:56, Matthew Brost wrote:
> Introduce zone_appears_fragmented() as a lightweight helper to allow
> subsystems to make coarse decisions about reclaim behavior in the
> presence of likely fragmentation.
>
> The helper implements a simple heuristic: if the number of free pages
> in a zone exceeds twice the high watermark, the zone is considered to
> have ample free memory and allocation failures are more likely due to
> fragmentation than overall memory pressure.
>
> This is intentionally imprecise and is not meant to replace the core
> MM compaction or fragmentation accounting logic. Instead, it provides
> a cheap signal for callers (e.g., shrinkers) that wish to avoid
> overly aggressive reclaim when sufficient free memory exists but
> high-order allocations may still fail.
>
> No functional changes; this is a preparatory helper for future users.
>
> Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com>
> Cc: Andrew Morton <akpm@linux-foundation.org>
> Cc: David Hildenbrand <david@kernel.org>
> Cc: Lorenzo Stoakes <ljs@kernel.org>
> Cc: "Liam R. Howlett" <Liam.Howlett@oracle.com>
> Cc: Vlastimil Babka <vbabka@kernel.org>
> Cc: Mike Rapoport <rppt@kernel.org>
> Cc: Suren Baghdasaryan <surenb@google.com>
> Cc: Michal Hocko <mhocko@suse.com>
> Cc: linux-mm@kvack.org
> Cc: linux-kernel@vger.kernel.org
> Signed-off-by: Matthew Brost <matthew.brost@intel.com>
> ---
> include/linux/vmstat.h | 13 +++++++++++++
> 1 file changed, 13 insertions(+)
>
> diff --git a/include/linux/vmstat.h b/include/linux/vmstat.h
> index 3c9c266cf782..568d9f4f1a1f 100644
> --- a/include/linux/vmstat.h
> +++ b/include/linux/vmstat.h
> @@ -483,6 +483,19 @@ static inline const char *zone_stat_name(enum zone_stat_item item)
> return vmstat_text[item];
> }
>
> +static inline bool zone_appears_fragmented(struct zone *zone)
> +{
> + /*
> + * Simple heuristic: if the number of free pages is more than twice the
> + * high watermark, this strongly suggests that the zone is heavily
> + * fragmented when called from a shrinker.
> + */
> + if (zone_page_state(zone, NR_FREE_PAGES) > high_wmark_pages(zone) * 2)
> + return true;
> +
> + return false;
> +}
> +
> #ifdef CONFIG_NUMA
> static inline const char *numa_stat_name(enum numa_stat_item item)
> {
Without any usage/users, this is hard to review. I don't understand the heuristic
or it's logic as applied to fragmentation either.
Balbir
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH v2 1/5] mm: Introduce zone_appears_fragmented()
2026-04-23 6:04 ` Balbir Singh
@ 2026-04-23 6:16 ` Matthew Brost
2026-04-23 6:27 ` Matthew Brost
0 siblings, 1 reply; 16+ messages in thread
From: Matthew Brost @ 2026-04-23 6:16 UTC (permalink / raw)
To: Balbir Singh
Cc: intel-xe, dri-devel, Thomas Hellström, Andrew Morton,
David Hildenbrand, Lorenzo Stoakes, Liam R. Howlett,
Vlastimil Babka, Mike Rapoport, Suren Baghdasaryan, Michal Hocko,
linux-mm, linux-kernel
On Thu, Apr 23, 2026 at 04:04:32PM +1000, Balbir Singh wrote:
> On 4/23/26 15:56, Matthew Brost wrote:
> > Introduce zone_appears_fragmented() as a lightweight helper to allow
> > subsystems to make coarse decisions about reclaim behavior in the
> > presence of likely fragmentation.
> >
> > The helper implements a simple heuristic: if the number of free pages
> > in a zone exceeds twice the high watermark, the zone is considered to
> > have ample free memory and allocation failures are more likely due to
> > fragmentation than overall memory pressure.
> >
> > This is intentionally imprecise and is not meant to replace the core
> > MM compaction or fragmentation accounting logic. Instead, it provides
> > a cheap signal for callers (e.g., shrinkers) that wish to avoid
> > overly aggressive reclaim when sufficient free memory exists but
> > high-order allocations may still fail.
> >
> > No functional changes; this is a preparatory helper for future users.
> >
> > Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com>
> > Cc: Andrew Morton <akpm@linux-foundation.org>
> > Cc: David Hildenbrand <david@kernel.org>
> > Cc: Lorenzo Stoakes <ljs@kernel.org>
> > Cc: "Liam R. Howlett" <Liam.Howlett@oracle.com>
> > Cc: Vlastimil Babka <vbabka@kernel.org>
> > Cc: Mike Rapoport <rppt@kernel.org>
> > Cc: Suren Baghdasaryan <surenb@google.com>
> > Cc: Michal Hocko <mhocko@suse.com>
> > Cc: linux-mm@kvack.org
> > Cc: linux-kernel@vger.kernel.org
> > Signed-off-by: Matthew Brost <matthew.brost@intel.com>
> > ---
> > include/linux/vmstat.h | 13 +++++++++++++
> > 1 file changed, 13 insertions(+)
> >
> > diff --git a/include/linux/vmstat.h b/include/linux/vmstat.h
> > index 3c9c266cf782..568d9f4f1a1f 100644
> > --- a/include/linux/vmstat.h
> > +++ b/include/linux/vmstat.h
> > @@ -483,6 +483,19 @@ static inline const char *zone_stat_name(enum zone_stat_item item)
> > return vmstat_text[item];
> > }
> >
> > +static inline bool zone_appears_fragmented(struct zone *zone)
> > +{
> > + /*
> > + * Simple heuristic: if the number of free pages is more than twice the
> > + * high watermark, this strongly suggests that the zone is heavily
> > + * fragmented when called from a shrinker.
> > + */
> > + if (zone_page_state(zone, NR_FREE_PAGES) > high_wmark_pages(zone) * 2)
> > + return true;
> > +
> > + return false;
> > +}
> > +
> > #ifdef CONFIG_NUMA
> > static inline const char *numa_stat_name(enum numa_stat_item item)
> > {
>
>
> Without any usage/users, this is hard to review. I don't understand the heuristic
> or it's logic as applied to fragmentation either.
>
Sorry—it’s always confusing who to CC on cross-subsystem series. Last
time this occurred, we agreed to CC everyone listed in the cover letter,
which I did. Anyway, let me provide the Patchwork links...
Cover letter: https://patchwork.freedesktop.org/series/165329/
TTM patch which uses this: https://patchwork.freedesktop.org/patch/720036/?series=165329&rev=1
Xe side which uses the TTM helper: https://patchwork.freedesktop.org/patch/720031/?series=165329&rev=1
Matt
> Balbir
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH v2 1/5] mm: Introduce zone_appears_fragmented()
2026-04-23 6:16 ` Matthew Brost
@ 2026-04-23 6:27 ` Matthew Brost
0 siblings, 0 replies; 16+ messages in thread
From: Matthew Brost @ 2026-04-23 6:27 UTC (permalink / raw)
To: Balbir Singh
Cc: intel-xe, dri-devel, Thomas Hellström, Andrew Morton,
David Hildenbrand, Lorenzo Stoakes, Liam R. Howlett,
Vlastimil Babka, Mike Rapoport, Suren Baghdasaryan, Michal Hocko,
linux-mm, linux-kernel
On Wed, Apr 22, 2026 at 11:16:37PM -0700, Matthew Brost wrote:
> On Thu, Apr 23, 2026 at 04:04:32PM +1000, Balbir Singh wrote:
> > On 4/23/26 15:56, Matthew Brost wrote:
> > > Introduce zone_appears_fragmented() as a lightweight helper to allow
> > > subsystems to make coarse decisions about reclaim behavior in the
> > > presence of likely fragmentation.
> > >
> > > The helper implements a simple heuristic: if the number of free pages
> > > in a zone exceeds twice the high watermark, the zone is considered to
> > > have ample free memory and allocation failures are more likely due to
> > > fragmentation than overall memory pressure.
> > >
> > > This is intentionally imprecise and is not meant to replace the core
> > > MM compaction or fragmentation accounting logic. Instead, it provides
> > > a cheap signal for callers (e.g., shrinkers) that wish to avoid
> > > overly aggressive reclaim when sufficient free memory exists but
> > > high-order allocations may still fail.
> > >
> > > No functional changes; this is a preparatory helper for future users.
> > >
> > > Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com>
> > > Cc: Andrew Morton <akpm@linux-foundation.org>
> > > Cc: David Hildenbrand <david@kernel.org>
> > > Cc: Lorenzo Stoakes <ljs@kernel.org>
> > > Cc: "Liam R. Howlett" <Liam.Howlett@oracle.com>
> > > Cc: Vlastimil Babka <vbabka@kernel.org>
> > > Cc: Mike Rapoport <rppt@kernel.org>
> > > Cc: Suren Baghdasaryan <surenb@google.com>
> > > Cc: Michal Hocko <mhocko@suse.com>
> > > Cc: linux-mm@kvack.org
> > > Cc: linux-kernel@vger.kernel.org
> > > Signed-off-by: Matthew Brost <matthew.brost@intel.com>
> > > ---
> > > include/linux/vmstat.h | 13 +++++++++++++
> > > 1 file changed, 13 insertions(+)
> > >
> > > diff --git a/include/linux/vmstat.h b/include/linux/vmstat.h
> > > index 3c9c266cf782..568d9f4f1a1f 100644
> > > --- a/include/linux/vmstat.h
> > > +++ b/include/linux/vmstat.h
> > > @@ -483,6 +483,19 @@ static inline const char *zone_stat_name(enum zone_stat_item item)
> > > return vmstat_text[item];
> > > }
> > >
> > > +static inline bool zone_appears_fragmented(struct zone *zone)
> > > +{
> > > + /*
> > > + * Simple heuristic: if the number of free pages is more than twice the
> > > + * high watermark, this strongly suggests that the zone is heavily
> > > + * fragmented when called from a shrinker.
> > > + */
> > > + if (zone_page_state(zone, NR_FREE_PAGES) > high_wmark_pages(zone) * 2)
> > > + return true;
> > > +
> > > + return false;
> > > +}
> > > +
> > > #ifdef CONFIG_NUMA
> > > static inline const char *numa_stat_name(enum numa_stat_item item)
> > > {
> >
> >
> > Without any usage/users, this is hard to review. I don't understand the heuristic
> > or it's logic as applied to fragmentation either.
> >
>
> Sorry—it’s always confusing who to CC on cross-subsystem series. Last
> time this occurred, we agreed to CC everyone listed in the cover letter,
> which I did. Anyway, let me provide the Patchwork links...
>
> Cover letter: https://patchwork.freedesktop.org/series/165329/
> TTM patch which uses this: https://patchwork.freedesktop.org/patch/720036/?series=165329&rev=1
> Xe side which uses the TTM helper: https://patchwork.freedesktop.org/patch/720031/?series=165329&rev=1
>
Also if you want grab whole series locally here is what I do when I'm
missed on a Cc:
b4 mbox <msg-id>
mutt -f <msg-id>
So here, with msg-id from cover letter:
b4 mbox 20260423055656.1696379-1-matthew.brost@intel.com
mutt -f ./20260423055656.1696379-1-matthew.brost@intel.com.mbx
Matt
> Matt
>
> > Balbir
^ permalink raw reply [flat|nested] 16+ messages in thread
* ✓ Xe.CI.BAT: success for mm, drm/ttm, drm/xe: Avoid reclaim/eviction loops under fragmentation
2026-04-23 5:56 [PATCH v2 0/5] mm, drm/ttm, drm/xe: Avoid reclaim/eviction loops under fragmentation Matthew Brost
` (5 preceding siblings ...)
2026-04-23 6:04 ` ✓ CI.KUnit: success for mm, drm/ttm, drm/xe: Avoid reclaim/eviction loops " Patchwork
@ 2026-04-23 6:53 ` Patchwork
2026-04-23 17:30 ` ✗ Xe.CI.FULL: failure " Patchwork
7 siblings, 0 replies; 16+ messages in thread
From: Patchwork @ 2026-04-23 6:53 UTC (permalink / raw)
To: Matthew Brost; +Cc: intel-xe
[-- Attachment #1: Type: text/plain, Size: 983 bytes --]
== Series Details ==
Series: mm, drm/ttm, drm/xe: Avoid reclaim/eviction loops under fragmentation
URL : https://patchwork.freedesktop.org/series/165329/
State : success
== Summary ==
CI Bug Log - changes from xe-4927-9917a06970fd6775b7b4259be6cca21cb4e2b165_BAT -> xe-pw-165329v1_BAT
====================================================
Summary
-------
**SUCCESS**
No regressions found.
Participating hosts (13 -> 13)
------------------------------
No changes in participating hosts
Changes
-------
No changes found
Build changes
-------------
* Linux: xe-4927-9917a06970fd6775b7b4259be6cca21cb4e2b165 -> xe-pw-165329v1
IGT_8870: 1aba4b364b6dbdf7926cc78501e7281d5176b029 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
xe-4927-9917a06970fd6775b7b4259be6cca21cb4e2b165: 9917a06970fd6775b7b4259be6cca21cb4e2b165
xe-pw-165329v1: 165329v1
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/index.html
[-- Attachment #2: Type: text/html, Size: 1531 bytes --]
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH v2 1/5] mm: Introduce zone_appears_fragmented()
2026-04-23 5:56 ` [PATCH v2 1/5] mm: Introduce zone_appears_fragmented() Matthew Brost
2026-04-23 6:04 ` Balbir Singh
@ 2026-04-23 10:27 ` David Hildenbrand (Arm)
2026-04-23 11:27 ` Thomas Hellström
1 sibling, 1 reply; 16+ messages in thread
From: David Hildenbrand (Arm) @ 2026-04-23 10:27 UTC (permalink / raw)
To: Matthew Brost, intel-xe, dri-devel
Cc: Thomas Hellström, Andrew Morton, Lorenzo Stoakes,
Liam R. Howlett, Vlastimil Babka, Mike Rapoport,
Suren Baghdasaryan, Michal Hocko, linux-mm, linux-kernel,
Johannes Weiner, Michal Hocko
On 4/23/26 07:56, Matthew Brost wrote:
> Introduce zone_appears_fragmented() as a lightweight helper to allow
> subsystems to make coarse decisions about reclaim behavior in the
> presence of likely fragmentation.
>
> The helper implements a simple heuristic: if the number of free pages
> in a zone exceeds twice the high watermark, the zone is considered to
> have ample free memory and allocation failures are more likely due to
> fragmentation than overall memory pressure.
>
> This is intentionally imprecise and is not meant to replace the core
> MM compaction or fragmentation accounting logic. Instead, it provides
> a cheap signal for callers (e.g., shrinkers) that wish to avoid
> overly aggressive reclaim when sufficient free memory exists but
> high-order allocations may still fail.
>
> No functional changes; this is a preparatory helper for future users.
>
> Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com>
> Cc: Andrew Morton <akpm@linux-foundation.org>
> Cc: David Hildenbrand <david@kernel.org>
> Cc: Lorenzo Stoakes <ljs@kernel.org>
> Cc: "Liam R. Howlett" <Liam.Howlett@oracle.com>
> Cc: Vlastimil Babka <vbabka@kernel.org>
> Cc: Mike Rapoport <rppt@kernel.org>
> Cc: Suren Baghdasaryan <surenb@google.com>
> Cc: Michal Hocko <mhocko@suse.com>
> Cc: linux-mm@kvack.org
> Cc: linux-kernel@vger.kernel.org
> Signed-off-by: Matthew Brost <matthew.brost@intel.com>
> ---
> include/linux/vmstat.h | 13 +++++++++++++
> 1 file changed, 13 insertions(+)
>
> diff --git a/include/linux/vmstat.h b/include/linux/vmstat.h
> index 3c9c266cf782..568d9f4f1a1f 100644
> --- a/include/linux/vmstat.h
> +++ b/include/linux/vmstat.h
> @@ -483,6 +483,19 @@ static inline const char *zone_stat_name(enum zone_stat_item item)
> return vmstat_text[item];
> }
>
> +static inline bool zone_appears_fragmented(struct zone *zone)
> +{
"zone_likely_fragmented" or "zone_maybe_fragmented" might be clearer, depending
on the actual semantics.
> + /*
> + * Simple heuristic: if the number of free pages is more than twice the
> + * high watermark, this strongly suggests that the zone is heavily
> + * fragmented when called from a shrinker.
> + */
I'll cc some more people. But the "when called from a shrinker" bit is
concerning. Are there additional semantics that should be expressed in the
function name, for example?
Something that implies that this function only gives you a reasonable answer in
a certain context.
--
Cheers,
David
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH v2 1/5] mm: Introduce zone_appears_fragmented()
2026-04-23 10:27 ` David Hildenbrand (Arm)
@ 2026-04-23 11:27 ` Thomas Hellström
2026-04-23 19:08 ` Matthew Brost
0 siblings, 1 reply; 16+ messages in thread
From: Thomas Hellström @ 2026-04-23 11:27 UTC (permalink / raw)
To: David Hildenbrand (Arm), Matthew Brost, intel-xe, dri-devel
Cc: Andrew Morton, Lorenzo Stoakes, Liam R. Howlett, Vlastimil Babka,
Mike Rapoport, Suren Baghdasaryan, Michal Hocko, linux-mm,
linux-kernel, Johannes Weiner
On Thu, 2026-04-23 at 12:27 +0200, David Hildenbrand (Arm) wrote:
> On 4/23/26 07:56, Matthew Brost wrote:
> > Introduce zone_appears_fragmented() as a lightweight helper to
> > allow
> > subsystems to make coarse decisions about reclaim behavior in the
> > presence of likely fragmentation.
> >
> > The helper implements a simple heuristic: if the number of free
> > pages
> > in a zone exceeds twice the high watermark, the zone is considered
> > to
> > have ample free memory and allocation failures are more likely due
> > to
> > fragmentation than overall memory pressure.
> >
> > This is intentionally imprecise and is not meant to replace the
> > core
> > MM compaction or fragmentation accounting logic. Instead, it
> > provides
> > a cheap signal for callers (e.g., shrinkers) that wish to avoid
> > overly aggressive reclaim when sufficient free memory exists but
> > high-order allocations may still fail.
> >
> > No functional changes; this is a preparatory helper for future
> > users.
> >
> > Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com>
> > Cc: Andrew Morton <akpm@linux-foundation.org>
> > Cc: David Hildenbrand <david@kernel.org>
> > Cc: Lorenzo Stoakes <ljs@kernel.org>
> > Cc: "Liam R. Howlett" <Liam.Howlett@oracle.com>
> > Cc: Vlastimil Babka <vbabka@kernel.org>
> > Cc: Mike Rapoport <rppt@kernel.org>
> > Cc: Suren Baghdasaryan <surenb@google.com>
> > Cc: Michal Hocko <mhocko@suse.com>
> > Cc: linux-mm@kvack.org
> > Cc: linux-kernel@vger.kernel.org
> > Signed-off-by: Matthew Brost <matthew.brost@intel.com>
> > ---
> > include/linux/vmstat.h | 13 +++++++++++++
> > 1 file changed, 13 insertions(+)
> >
> > diff --git a/include/linux/vmstat.h b/include/linux/vmstat.h
> > index 3c9c266cf782..568d9f4f1a1f 100644
> > --- a/include/linux/vmstat.h
> > +++ b/include/linux/vmstat.h
> > @@ -483,6 +483,19 @@ static inline const char *zone_stat_name(enum
> > zone_stat_item item)
> > return vmstat_text[item];
> > }
> >
> > +static inline bool zone_appears_fragmented(struct zone *zone)
> > +{
>
> "zone_likely_fragmented" or "zone_maybe_fragmented" might be clearer,
> depending
> on the actual semantics.
>
> > + /*
> > + * Simple heuristic: if the number of free pages is more
> > than twice the
> > + * high watermark, this strongly suggests that the zone is
> > heavily
> > + * fragmented when called from a shrinker.
> > + */
>
> I'll cc some more people. But the "when called from a shrinker" bit
> is
> concerning. Are there additional semantics that should be expressed
> in the
> function name, for example?
>
> Something that implies that this function only gives you a reasonable
> answer in
> a certain context.
I think that test would not be relevant for cgroup-aware shrinking.
What about trying to pass something in the struct shrink_control? Like
if we pass the struct scan_control's order field also in struct
shrink_control, really expensive shrinkers could duck reclaim attempts
from higher-order allocations that may fail anyway:
if (sc->order > PAGE_ALLOC_COSTLY_ORDER &&
(sc->gfp_mask & (__GFP_NORETRY | __GFP_RETRY_MAYFAIL)) &&
!(sc->gfp_mask & __GFP_NOFAIL))
return SHRINK_STOP;
Possibly exposed as an inline helper in the shrinker interface?
/Thomas
^ permalink raw reply [flat|nested] 16+ messages in thread
* ✗ Xe.CI.FULL: failure for mm, drm/ttm, drm/xe: Avoid reclaim/eviction loops under fragmentation
2026-04-23 5:56 [PATCH v2 0/5] mm, drm/ttm, drm/xe: Avoid reclaim/eviction loops under fragmentation Matthew Brost
` (6 preceding siblings ...)
2026-04-23 6:53 ` ✓ Xe.CI.BAT: " Patchwork
@ 2026-04-23 17:30 ` Patchwork
7 siblings, 0 replies; 16+ messages in thread
From: Patchwork @ 2026-04-23 17:30 UTC (permalink / raw)
To: Matthew Brost; +Cc: intel-xe
[-- Attachment #1: Type: text/plain, Size: 42668 bytes --]
== Series Details ==
Series: mm, drm/ttm, drm/xe: Avoid reclaim/eviction loops under fragmentation
URL : https://patchwork.freedesktop.org/series/165329/
State : failure
== Summary ==
CI Bug Log - changes from xe-4927-9917a06970fd6775b7b4259be6cca21cb4e2b165_FULL -> xe-pw-165329v1_FULL
====================================================
Summary
-------
**FAILURE**
Serious unknown changes coming with xe-pw-165329v1_FULL absolutely need to be
verified manually.
If you think the reported changes have nothing to do with the changes
introduced in xe-pw-165329v1_FULL, please notify your bug team (I915-ci-infra@lists.freedesktop.org) to allow them
to document this new failure mode, which will reduce false positives in CI.
Participating hosts (2 -> 2)
------------------------------
No changes in participating hosts
Possible new issues
-------------------
Here are the unknown changes that may have been introduced in xe-pw-165329v1_FULL:
### IGT changes ###
#### Possible regressions ####
* igt@kms_flip@2x-flip-vs-expired-vblank@bc-dp2-hdmi-a3:
- shard-bmg: [PASS][1] -> [INCOMPLETE][2] +1 other test incomplete
[1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4927-9917a06970fd6775b7b4259be6cca21cb4e2b165/shard-bmg-5/igt@kms_flip@2x-flip-vs-expired-vblank@bc-dp2-hdmi-a3.html
[2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-2/igt@kms_flip@2x-flip-vs-expired-vblank@bc-dp2-hdmi-a3.html
* igt@kms_vblank@query-forked-busy@pipe-a-dp-2:
- shard-bmg: NOTRUN -> [FAIL][3] +1 other test fail
[3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-3/igt@kms_vblank@query-forked-busy@pipe-a-dp-2.html
Known issues
------------
Here are the changes found in xe-pw-165329v1_FULL that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@kms_addfb_basic@addfb25-y-tiled-small-legacy:
- shard-bmg: NOTRUN -> [SKIP][4] ([Intel XE#2233])
[4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-3/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
* igt@kms_big_fb@linear-max-hw-stride-64bpp-rotate-0-hflip:
- shard-bmg: NOTRUN -> [SKIP][5] ([Intel XE#7059] / [Intel XE#7085]) +1 other test skip
[5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-3/igt@kms_big_fb@linear-max-hw-stride-64bpp-rotate-0-hflip.html
* igt@kms_big_fb@x-tiled-32bpp-rotate-90:
- shard-bmg: NOTRUN -> [SKIP][6] ([Intel XE#2327]) +4 other tests skip
[6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-5/igt@kms_big_fb@x-tiled-32bpp-rotate-90.html
* igt@kms_big_fb@y-tiled-addfb:
- shard-bmg: NOTRUN -> [SKIP][7] ([Intel XE#2328] / [Intel XE#7367])
[7]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-5/igt@kms_big_fb@y-tiled-addfb.html
* igt@kms_big_fb@y-tiled-addfb-size-offset-overflow:
- shard-bmg: NOTRUN -> [SKIP][8] ([Intel XE#607] / [Intel XE#7361])
[8]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-3/igt@kms_big_fb@y-tiled-addfb-size-offset-overflow.html
* igt@kms_big_fb@y-tiled-addfb-size-overflow:
- shard-bmg: NOTRUN -> [SKIP][9] ([Intel XE#610] / [Intel XE#7387])
[9]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-7/igt@kms_big_fb@y-tiled-addfb-size-overflow.html
* igt@kms_big_fb@yf-tiled-32bpp-rotate-0:
- shard-bmg: NOTRUN -> [SKIP][10] ([Intel XE#1124]) +17 other tests skip
[10]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-8/igt@kms_big_fb@yf-tiled-32bpp-rotate-0.html
* igt@kms_ccs@crc-primary-suspend-4-tiled-dg2-mc-ccs:
- shard-bmg: NOTRUN -> [SKIP][11] ([Intel XE#3432]) +1 other test skip
[11]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-7/igt@kms_ccs@crc-primary-suspend-4-tiled-dg2-mc-ccs.html
* igt@kms_ccs@crc-sprite-planes-basic-4-tiled-dg2-rc-ccs-cc:
- shard-bmg: NOTRUN -> [SKIP][12] ([Intel XE#2887]) +26 other tests skip
[12]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-3/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-dg2-rc-ccs-cc.html
* igt@kms_ccs@random-ccs-data-4-tiled-lnl-ccs@pipe-c-dp-2:
- shard-bmg: NOTRUN -> [SKIP][13] ([Intel XE#2652]) +8 other tests skip
[13]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-7/igt@kms_ccs@random-ccs-data-4-tiled-lnl-ccs@pipe-c-dp-2.html
* igt@kms_chamelium_color@ctm-green-to-red:
- shard-bmg: NOTRUN -> [SKIP][14] ([Intel XE#2325] / [Intel XE#7358]) +3 other tests skip
[14]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-6/igt@kms_chamelium_color@ctm-green-to-red.html
* igt@kms_chamelium_edid@dp-edid-change-during-hibernate:
- shard-bmg: NOTRUN -> [SKIP][15] ([Intel XE#2252]) +13 other tests skip
[15]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-3/igt@kms_chamelium_edid@dp-edid-change-during-hibernate.html
* igt@kms_content_protection@atomic-hdcp14:
- shard-bmg: NOTRUN -> [FAIL][16] ([Intel XE#1178] / [Intel XE#3304] / [Intel XE#7374]) +5 other tests fail
[16]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-3/igt@kms_content_protection@atomic-hdcp14.html
* igt@kms_content_protection@content-type-change:
- shard-bmg: NOTRUN -> [SKIP][17] ([Intel XE#7642])
[17]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-3/igt@kms_content_protection@content-type-change.html
* igt@kms_content_protection@dp-mst-lic-type-0:
- shard-bmg: NOTRUN -> [SKIP][18] ([Intel XE#2390] / [Intel XE#6974])
[18]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-1/igt@kms_content_protection@dp-mst-lic-type-0.html
* igt@kms_content_protection@uevent:
- shard-bmg: NOTRUN -> [FAIL][19] ([Intel XE#6707] / [Intel XE#7439]) +1 other test fail
[19]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-8/igt@kms_content_protection@uevent.html
* igt@kms_cursor_crc@cursor-offscreen-128x42:
- shard-bmg: NOTRUN -> [SKIP][20] ([Intel XE#2320]) +5 other tests skip
[20]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-3/igt@kms_cursor_crc@cursor-offscreen-128x42.html
* igt@kms_cursor_crc@cursor-random-512x512:
- shard-bmg: NOTRUN -> [SKIP][21] ([Intel XE#2321] / [Intel XE#7355]) +2 other tests skip
[21]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-7/igt@kms_cursor_crc@cursor-random-512x512.html
* igt@kms_cursor_legacy@cursor-vs-flip-atomic-transitions-varying-size:
- shard-bmg: NOTRUN -> [DMESG-WARN][22] ([Intel XE#5354])
[22]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-3/igt@kms_cursor_legacy@cursor-vs-flip-atomic-transitions-varying-size.html
* igt@kms_cursor_legacy@flip-vs-cursor-atomic:
- shard-bmg: NOTRUN -> [FAIL][23] ([Intel XE#7809])
[23]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-3/igt@kms_cursor_legacy@flip-vs-cursor-atomic.html
* igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions:
- shard-bmg: NOTRUN -> [SKIP][24] ([Intel XE#2286] / [Intel XE#6035])
[24]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-3/igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions.html
* igt@kms_dither@fb-8bpc-vs-panel-6bpc@pipe-a-hdmi-a-3:
- shard-bmg: NOTRUN -> [SKIP][25] ([Intel XE#1340] / [Intel XE#7435])
[25]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-1/igt@kms_dither@fb-8bpc-vs-panel-6bpc@pipe-a-hdmi-a-3.html
* igt@kms_dp_linktrain_fallback@dsc-fallback:
- shard-bmg: NOTRUN -> [SKIP][26] ([Intel XE#4331] / [Intel XE#7227])
[26]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-7/igt@kms_dp_linktrain_fallback@dsc-fallback.html
* igt@kms_dsc@dsc-with-output-formats:
- shard-bmg: NOTRUN -> [SKIP][27] ([Intel XE#2244]) +3 other tests skip
[27]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-6/igt@kms_dsc@dsc-with-output-formats.html
* igt@kms_fbc_dirty_rect@fbc-dirty-rectangle-dirtyfb-tests:
- shard-bmg: NOTRUN -> [SKIP][28] ([Intel XE#4422] / [Intel XE#7442])
[28]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-1/igt@kms_fbc_dirty_rect@fbc-dirty-rectangle-dirtyfb-tests.html
* igt@kms_fbcon_fbt@fbc-suspend:
- shard-bmg: NOTRUN -> [SKIP][29] ([Intel XE#4156] / [Intel XE#7425]) +1 other test skip
[29]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-1/igt@kms_fbcon_fbt@fbc-suspend.html
* igt@kms_fbcon_fbt@psr-suspend:
- shard-bmg: NOTRUN -> [SKIP][30] ([Intel XE#6126] / [Intel XE#776])
[30]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-3/igt@kms_fbcon_fbt@psr-suspend.html
* igt@kms_feature_discovery@dp-mst:
- shard-bmg: NOTRUN -> [SKIP][31] ([Intel XE#2375])
[31]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-5/igt@kms_feature_discovery@dp-mst.html
* igt@kms_feature_discovery@psr1:
- shard-bmg: NOTRUN -> [SKIP][32] ([Intel XE#2374] / [Intel XE#6127])
[32]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-1/igt@kms_feature_discovery@psr1.html
* igt@kms_feature_discovery@psr2:
- shard-bmg: NOTRUN -> [SKIP][33] ([Intel XE#2374] / [Intel XE#6128])
[33]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-3/igt@kms_feature_discovery@psr2.html
* igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs-upscaling:
- shard-bmg: NOTRUN -> [SKIP][34] ([Intel XE#7178] / [Intel XE#7351]) +6 other tests skip
[34]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-5/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs-upscaling.html
* igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-pri-indfb-draw-mmap-wc:
- shard-bmg: NOTRUN -> [SKIP][35] ([Intel XE#2311]) +53 other tests skip
[35]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-3/igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-pri-indfb-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@fbc-1p-offscreen-pri-shrfb-draw-blt:
- shard-bmg: NOTRUN -> [SKIP][36] ([Intel XE#4141]) +21 other tests skip
[36]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-3/igt@kms_frontbuffer_tracking@fbc-1p-offscreen-pri-shrfb-draw-blt.html
* igt@kms_frontbuffer_tracking@fbcpsr-abgr161616f-draw-blt:
- shard-bmg: NOTRUN -> [SKIP][37] ([Intel XE#7061] / [Intel XE#7356]) +4 other tests skip
[37]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-6/igt@kms_frontbuffer_tracking@fbcpsr-abgr161616f-draw-blt.html
* igt@kms_frontbuffer_tracking@fbcpsr-tiling-y:
- shard-bmg: NOTRUN -> [SKIP][38] ([Intel XE#2352] / [Intel XE#7399]) +1 other test skip
[38]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-8/igt@kms_frontbuffer_tracking@fbcpsr-tiling-y.html
* igt@kms_frontbuffer_tracking@psr-2p-primscrn-indfb-plflip-blt:
- shard-bmg: NOTRUN -> [SKIP][39] ([Intel XE#2313]) +50 other tests skip
[39]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-7/igt@kms_frontbuffer_tracking@psr-2p-primscrn-indfb-plflip-blt.html
* igt@kms_joiner@invalid-modeset-ultra-joiner:
- shard-bmg: NOTRUN -> [SKIP][40] ([Intel XE#6911] / [Intel XE#7378])
[40]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-8/igt@kms_joiner@invalid-modeset-ultra-joiner.html
* igt@kms_multipipe_modeset@basic-max-pipe-crc-check:
- shard-bmg: NOTRUN -> [SKIP][41] ([Intel XE#7591])
[41]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-7/igt@kms_multipipe_modeset@basic-max-pipe-crc-check.html
* igt@kms_panel_fitting@atomic-fastset:
- shard-bmg: NOTRUN -> [SKIP][42] ([Intel XE#2486])
[42]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-6/igt@kms_panel_fitting@atomic-fastset.html
* igt@kms_plane@pixel-format-4-tiled-bmg-ccs-modifier@pipe-a-plane-5:
- shard-bmg: NOTRUN -> [SKIP][43] ([Intel XE#7130]) +1 other test skip
[43]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-6/igt@kms_plane@pixel-format-4-tiled-bmg-ccs-modifier@pipe-a-plane-5.html
* igt@kms_plane@pixel-format-4-tiled-dg2-rc-ccs-cc-modifier-source-clamping:
- shard-bmg: NOTRUN -> [SKIP][44] ([Intel XE#7283]) +3 other tests skip
[44]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-5/igt@kms_plane@pixel-format-4-tiled-dg2-rc-ccs-cc-modifier-source-clamping.html
* igt@kms_plane_lowres@tiling-y:
- shard-bmg: NOTRUN -> [SKIP][45] ([Intel XE#2393])
[45]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-1/igt@kms_plane_lowres@tiling-y.html
* igt@kms_plane_multiple@2x-tiling-y:
- shard-bmg: NOTRUN -> [SKIP][46] ([Intel XE#5021] / [Intel XE#7377])
[46]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-3/igt@kms_plane_multiple@2x-tiling-y.html
* igt@kms_pm_backlight@fade-with-suspend:
- shard-bmg: NOTRUN -> [SKIP][47] ([Intel XE#7376] / [Intel XE#870])
[47]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-7/igt@kms_pm_backlight@fade-with-suspend.html
* igt@kms_pm_dc@dc3co-vpb-simulation:
- shard-bmg: NOTRUN -> [SKIP][48] ([Intel XE#7794])
[48]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-5/igt@kms_pm_dc@dc3co-vpb-simulation.html
* igt@kms_pm_rpm@dpms-mode-unset-lpsp:
- shard-bmg: NOTRUN -> [SKIP][49] ([Intel XE#1439] / [Intel XE#7402] / [Intel XE#836])
[49]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-3/igt@kms_pm_rpm@dpms-mode-unset-lpsp.html
* igt@kms_psr2_sf@psr2-cursor-plane-move-continuous-exceed-fully-sf:
- shard-bmg: NOTRUN -> [SKIP][50] ([Intel XE#1489]) +12 other tests skip
[50]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-1/igt@kms_psr2_sf@psr2-cursor-plane-move-continuous-exceed-fully-sf.html
* igt@kms_psr2_su@frontbuffer-xrgb8888:
- shard-bmg: NOTRUN -> [SKIP][51] ([Intel XE#2387] / [Intel XE#7429])
[51]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-3/igt@kms_psr2_su@frontbuffer-xrgb8888.html
* igt@kms_psr@fbc-psr-primary-render:
- shard-bmg: NOTRUN -> [SKIP][52] ([Intel XE#2234] / [Intel XE#2850]) +24 other tests skip
[52]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-7/igt@kms_psr@fbc-psr-primary-render.html
* igt@kms_rotation_crc@primary-rotation-90:
- shard-bmg: NOTRUN -> [SKIP][53] ([Intel XE#3904] / [Intel XE#7342]) +2 other tests skip
[53]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-3/igt@kms_rotation_crc@primary-rotation-90.html
* igt@kms_scaling_modes@scaling-mode-full-aspect:
- shard-bmg: NOTRUN -> [SKIP][54] ([Intel XE#2413]) +1 other test skip
[54]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-7/igt@kms_scaling_modes@scaling-mode-full-aspect.html
* igt@kms_setmode@basic-clone-single-crtc:
- shard-bmg: NOTRUN -> [SKIP][55] ([Intel XE#1435]) +1 other test skip
[55]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-3/igt@kms_setmode@basic-clone-single-crtc.html
* igt@kms_sharpness_filter@filter-formats:
- shard-bmg: NOTRUN -> [SKIP][56] ([Intel XE#6503]) +2 other tests skip
[56]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-3/igt@kms_sharpness_filter@filter-formats.html
* igt@kms_vrr@seamless-rr-switch-virtual@pipe-a-edp-1:
- shard-lnl: [PASS][57] -> [FAIL][58] ([Intel XE#2142]) +1 other test fail
[57]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4927-9917a06970fd6775b7b4259be6cca21cb4e2b165/shard-lnl-1/igt@kms_vrr@seamless-rr-switch-virtual@pipe-a-edp-1.html
[58]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-lnl-2/igt@kms_vrr@seamless-rr-switch-virtual@pipe-a-edp-1.html
* igt@kms_vrr@seamless-rr-switch-vrr:
- shard-bmg: NOTRUN -> [SKIP][59] ([Intel XE#1499]) +2 other tests skip
[59]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-5/igt@kms_vrr@seamless-rr-switch-vrr.html
* igt@xe_compute@ccs-mode-basic:
- shard-bmg: NOTRUN -> [SKIP][60] ([Intel XE#6599])
[60]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-3/igt@xe_compute@ccs-mode-basic.html
* igt@xe_create@multigpu-create-massive-size:
- shard-bmg: NOTRUN -> [SKIP][61] ([Intel XE#2504] / [Intel XE#7319] / [Intel XE#7350])
[61]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-8/igt@xe_create@multigpu-create-massive-size.html
* igt@xe_eudebug@discovery-empty:
- shard-bmg: NOTRUN -> [SKIP][62] ([Intel XE#7636]) +24 other tests skip
[62]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-3/igt@xe_eudebug@discovery-empty.html
* igt@xe_eudebug_sriov@deny-sriov:
- shard-bmg: NOTRUN -> [SKIP][63] ([Intel XE#5793] / [Intel XE#7320] / [Intel XE#7464])
[63]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-3/igt@xe_eudebug_sriov@deny-sriov.html
* igt@xe_evict@evict-small-multi-queue-priority-cm:
- shard-bmg: NOTRUN -> [SKIP][64] ([Intel XE#7140]) +2 other tests skip
[64]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-8/igt@xe_evict@evict-small-multi-queue-priority-cm.html
* igt@xe_exec_basic@multigpu-once-null-rebind:
- shard-bmg: NOTRUN -> [SKIP][65] ([Intel XE#2322] / [Intel XE#7372]) +15 other tests skip
[65]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-7/igt@xe_exec_basic@multigpu-once-null-rebind.html
* igt@xe_exec_fault_mode@many-execqueues-multi-queue-rebind-prefetch:
- shard-bmg: NOTRUN -> [SKIP][66] ([Intel XE#7136]) +20 other tests skip
[66]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-8/igt@xe_exec_fault_mode@many-execqueues-multi-queue-rebind-prefetch.html
* igt@xe_exec_multi_queue@few-execs-preempt-mode-priority:
- shard-bmg: NOTRUN -> [SKIP][67] ([Intel XE#6874]) +52 other tests skip
[67]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-7/igt@xe_exec_multi_queue@few-execs-preempt-mode-priority.html
* igt@xe_exec_threads@threads-multi-queue-rebind-err:
- shard-bmg: NOTRUN -> [SKIP][68] ([Intel XE#7138]) +16 other tests skip
[68]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-3/igt@xe_exec_threads@threads-multi-queue-rebind-err.html
* igt@xe_multigpu_svm@mgpu-atomic-op-basic:
- shard-bmg: NOTRUN -> [SKIP][69] ([Intel XE#6964]) +6 other tests skip
[69]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-1/igt@xe_multigpu_svm@mgpu-atomic-op-basic.html
* igt@xe_non_msix@walker-interrupt-notification-non-msix:
- shard-bmg: NOTRUN -> [SKIP][70] ([Intel XE#7622])
[70]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-3/igt@xe_non_msix@walker-interrupt-notification-non-msix.html
* igt@xe_page_reclaim@basic-mixed:
- shard-bmg: NOTRUN -> [SKIP][71] ([Intel XE#7793]) +1 other test skip
[71]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-1/igt@xe_page_reclaim@basic-mixed.html
* igt@xe_pat@pat-index-xelp:
- shard-bmg: NOTRUN -> [SKIP][72] ([Intel XE#2245] / [Intel XE#7590])
[72]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-5/igt@xe_pat@pat-index-xelp.html
* igt@xe_pat@pat-sw-hw-suspend:
- shard-bmg: NOTRUN -> [SKIP][73] ([Intel XE#7590]) +1 other test skip
[73]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-1/igt@xe_pat@pat-sw-hw-suspend.html
* igt@xe_peer2peer@read:
- shard-bmg: NOTRUN -> [SKIP][74] ([Intel XE#2427] / [Intel XE#6953] / [Intel XE#7326] / [Intel XE#7353]) +1 other test skip
[74]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-3/igt@xe_peer2peer@read.html
* igt@xe_pm@d3cold-i2c:
- shard-bmg: NOTRUN -> [SKIP][75] ([Intel XE#5694] / [Intel XE#7370])
[75]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-7/igt@xe_pm@d3cold-i2c.html
* igt@xe_pm@s4-d3cold-basic-exec:
- shard-bmg: NOTRUN -> [SKIP][76] ([Intel XE#2284] / [Intel XE#7370])
[76]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-3/igt@xe_pm@s4-d3cold-basic-exec.html
* igt@xe_pm@vram-d3cold-threshold:
- shard-bmg: NOTRUN -> [SKIP][77] ([Intel XE#579] / [Intel XE#7329] / [Intel XE#7517])
[77]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-3/igt@xe_pm@vram-d3cold-threshold.html
* igt@xe_prefetch_fault@prefetch-fault-svm:
- shard-bmg: NOTRUN -> [SKIP][78] ([Intel XE#7599])
[78]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-1/igt@xe_prefetch_fault@prefetch-fault-svm.html
* igt@xe_pxp@pxp-stale-bo-exec-post-suspend:
- shard-bmg: NOTRUN -> [SKIP][79] ([Intel XE#4733] / [Intel XE#7417]) +4 other tests skip
[79]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-6/igt@xe_pxp@pxp-stale-bo-exec-post-suspend.html
* igt@xe_query@multigpu-query-invalid-uc-fw-version-mbz:
- shard-bmg: NOTRUN -> [SKIP][80] ([Intel XE#944]) +3 other tests skip
[80]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-5/igt@xe_query@multigpu-query-invalid-uc-fw-version-mbz.html
* igt@xe_sriov_flr@flr-each-isolation:
- shard-bmg: NOTRUN -> [FAIL][81] ([Intel XE#6569])
[81]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-3/igt@xe_sriov_flr@flr-each-isolation.html
#### Possible fixes ####
* igt@kms_cursor_crc@cursor-size-change:
- shard-bmg: [DMESG-FAIL][82] ([Intel XE#6652]) -> [PASS][83] +1 other test pass
[82]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4927-9917a06970fd6775b7b4259be6cca21cb4e2b165/shard-bmg-2/igt@kms_cursor_crc@cursor-size-change.html
[83]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-6/igt@kms_cursor_crc@cursor-size-change.html
* igt@kms_hdr@invalid-hdr:
- shard-bmg: [SKIP][84] ([Intel XE#1503]) -> [PASS][85]
[84]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4927-9917a06970fd6775b7b4259be6cca21cb4e2b165/shard-bmg-9/igt@kms_hdr@invalid-hdr.html
[85]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-1/igt@kms_hdr@invalid-hdr.html
* igt@kms_vrr@cmrr@pipe-a-edp-1:
- shard-lnl: [FAIL][86] ([Intel XE#4459]) -> [PASS][87] +1 other test pass
[86]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4927-9917a06970fd6775b7b4259be6cca21cb4e2b165/shard-lnl-2/igt@kms_vrr@cmrr@pipe-a-edp-1.html
[87]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-lnl-7/igt@kms_vrr@cmrr@pipe-a-edp-1.html
* igt@xe_evict@evict-mixed-many-threads-small:
- shard-bmg: [INCOMPLETE][88] ([Intel XE#6321]) -> [PASS][89]
[88]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4927-9917a06970fd6775b7b4259be6cca21cb4e2b165/shard-bmg-3/igt@xe_evict@evict-mixed-many-threads-small.html
[89]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-10/igt@xe_evict@evict-mixed-many-threads-small.html
#### Warnings ####
* igt@kms_hdr@brightness-with-hdr:
- shard-bmg: [SKIP][90] ([Intel XE#3374] / [Intel XE#3544]) -> [SKIP][91] ([Intel XE#3544])
[90]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4927-9917a06970fd6775b7b4259be6cca21cb4e2b165/shard-bmg-7/igt@kms_hdr@brightness-with-hdr.html
[91]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-2/igt@kms_hdr@brightness-with-hdr.html
* igt@kms_tiled_display@basic-test-pattern:
- shard-bmg: [SKIP][92] ([Intel XE#2426] / [Intel XE#5848]) -> [FAIL][93] ([Intel XE#1729] / [Intel XE#7424])
[92]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4927-9917a06970fd6775b7b4259be6cca21cb4e2b165/shard-bmg-3/igt@kms_tiled_display@basic-test-pattern.html
[93]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-10/igt@kms_tiled_display@basic-test-pattern.html
* igt@xe_module_load@load:
- shard-bmg: ([PASS][94], [PASS][95], [PASS][96], [PASS][97], [PASS][98], [PASS][99], [PASS][100], [DMESG-WARN][101], [DMESG-WARN][102], [PASS][103], [DMESG-WARN][104], [DMESG-WARN][105], [DMESG-WARN][106], [DMESG-WARN][107], [DMESG-WARN][108], [PASS][109], [PASS][110], [PASS][111], [PASS][112], [PASS][113], [SKIP][114], [PASS][115], [PASS][116], [PASS][117], [PASS][118], [PASS][119]) ([Intel XE#2457] / [Intel XE#7405] / [Intel XE#7725]) -> ([PASS][120], [PASS][121], [PASS][122], [PASS][123], [PASS][124], [PASS][125], [PASS][126], [PASS][127], [PASS][128], [PASS][129], [PASS][130], [PASS][131], [PASS][132], [PASS][133], [PASS][134], [PASS][135], [SKIP][136], [PASS][137], [PASS][138], [PASS][139], [PASS][140], [PASS][141], [PASS][142], [PASS][143], [PASS][144]) ([Intel XE#2457] / [Intel XE#7405])
[94]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4927-9917a06970fd6775b7b4259be6cca21cb4e2b165/shard-bmg-9/igt@xe_module_load@load.html
[95]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4927-9917a06970fd6775b7b4259be6cca21cb4e2b165/shard-bmg-5/igt@xe_module_load@load.html
[96]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4927-9917a06970fd6775b7b4259be6cca21cb4e2b165/shard-bmg-2/igt@xe_module_load@load.html
[97]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4927-9917a06970fd6775b7b4259be6cca21cb4e2b165/shard-bmg-8/igt@xe_module_load@load.html
[98]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4927-9917a06970fd6775b7b4259be6cca21cb4e2b165/shard-bmg-2/igt@xe_module_load@load.html
[99]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4927-9917a06970fd6775b7b4259be6cca21cb4e2b165/shard-bmg-7/igt@xe_module_load@load.html
[100]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4927-9917a06970fd6775b7b4259be6cca21cb4e2b165/shard-bmg-1/igt@xe_module_load@load.html
[101]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4927-9917a06970fd6775b7b4259be6cca21cb4e2b165/shard-bmg-6/igt@xe_module_load@load.html
[102]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4927-9917a06970fd6775b7b4259be6cca21cb4e2b165/shard-bmg-6/igt@xe_module_load@load.html
[103]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4927-9917a06970fd6775b7b4259be6cca21cb4e2b165/shard-bmg-1/igt@xe_module_load@load.html
[104]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4927-9917a06970fd6775b7b4259be6cca21cb4e2b165/shard-bmg-6/igt@xe_module_load@load.html
[105]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4927-9917a06970fd6775b7b4259be6cca21cb4e2b165/shard-bmg-6/igt@xe_module_load@load.html
[106]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4927-9917a06970fd6775b7b4259be6cca21cb4e2b165/shard-bmg-6/igt@xe_module_load@load.html
[107]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4927-9917a06970fd6775b7b4259be6cca21cb4e2b165/shard-bmg-6/igt@xe_module_load@load.html
[108]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4927-9917a06970fd6775b7b4259be6cca21cb4e2b165/shard-bmg-6/igt@xe_module_load@load.html
[109]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4927-9917a06970fd6775b7b4259be6cca21cb4e2b165/shard-bmg-7/igt@xe_module_load@load.html
[110]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4927-9917a06970fd6775b7b4259be6cca21cb4e2b165/shard-bmg-7/igt@xe_module_load@load.html
[111]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4927-9917a06970fd6775b7b4259be6cca21cb4e2b165/shard-bmg-9/igt@xe_module_load@load.html
[112]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4927-9917a06970fd6775b7b4259be6cca21cb4e2b165/shard-bmg-9/igt@xe_module_load@load.html
[113]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4927-9917a06970fd6775b7b4259be6cca21cb4e2b165/shard-bmg-3/igt@xe_module_load@load.html
[114]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4927-9917a06970fd6775b7b4259be6cca21cb4e2b165/shard-bmg-8/igt@xe_module_load@load.html
[115]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4927-9917a06970fd6775b7b4259be6cca21cb4e2b165/shard-bmg-10/igt@xe_module_load@load.html
[116]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4927-9917a06970fd6775b7b4259be6cca21cb4e2b165/shard-bmg-10/igt@xe_module_load@load.html
[117]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4927-9917a06970fd6775b7b4259be6cca21cb4e2b165/shard-bmg-3/igt@xe_module_load@load.html
[118]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4927-9917a06970fd6775b7b4259be6cca21cb4e2b165/shard-bmg-5/igt@xe_module_load@load.html
[119]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4927-9917a06970fd6775b7b4259be6cca21cb4e2b165/shard-bmg-8/igt@xe_module_load@load.html
[120]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-8/igt@xe_module_load@load.html
[121]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-9/igt@xe_module_load@load.html
[122]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-7/igt@xe_module_load@load.html
[123]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-2/igt@xe_module_load@load.html
[124]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-3/igt@xe_module_load@load.html
[125]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-3/igt@xe_module_load@load.html
[126]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-3/igt@xe_module_load@load.html
[127]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-6/igt@xe_module_load@load.html
[128]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-6/igt@xe_module_load@load.html
[129]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-1/igt@xe_module_load@load.html
[130]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-1/igt@xe_module_load@load.html
[131]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-1/igt@xe_module_load@load.html
[132]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-7/igt@xe_module_load@load.html
[133]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-2/igt@xe_module_load@load.html
[134]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-2/igt@xe_module_load@load.html
[135]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-10/igt@xe_module_load@load.html
[136]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-1/igt@xe_module_load@load.html
[137]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-10/igt@xe_module_load@load.html
[138]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-8/igt@xe_module_load@load.html
[139]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-8/igt@xe_module_load@load.html
[140]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-5/igt@xe_module_load@load.html
[141]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-5/igt@xe_module_load@load.html
[142]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-5/igt@xe_module_load@load.html
[143]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-5/igt@xe_module_load@load.html
[144]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/shard-bmg-7/igt@xe_module_load@load.html
{name}: This element is suppressed. This means it is ignored when computing
the status of the difference (SUCCESS, WARNING, or FAILURE).
[Intel XE#1124]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1124
[Intel XE#1178]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1178
[Intel XE#1340]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1340
[Intel XE#1435]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1435
[Intel XE#1439]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1439
[Intel XE#1489]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1489
[Intel XE#1499]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1499
[Intel XE#1503]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1503
[Intel XE#1729]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1729
[Intel XE#2142]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2142
[Intel XE#2233]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2233
[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#2245]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2245
[Intel XE#2252]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2252
[Intel XE#2284]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2284
[Intel XE#2286]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2286
[Intel XE#2311]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2311
[Intel XE#2313]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2313
[Intel XE#2320]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2320
[Intel XE#2321]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2321
[Intel XE#2322]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2322
[Intel XE#2325]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2325
[Intel XE#2327]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2327
[Intel XE#2328]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2328
[Intel XE#2352]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2352
[Intel XE#2374]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2374
[Intel XE#2375]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2375
[Intel XE#2387]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2387
[Intel XE#2390]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2390
[Intel XE#2393]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2393
[Intel XE#2413]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2413
[Intel XE#2426]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2426
[Intel XE#2427]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2427
[Intel XE#2457]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2457
[Intel XE#2486]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2486
[Intel XE#2504]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2504
[Intel XE#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#3304]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3304
[Intel XE#3374]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3374
[Intel XE#3432]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3432
[Intel XE#3544]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3544
[Intel XE#367]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/367
[Intel XE#3904]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3904
[Intel XE#4141]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4141
[Intel XE#4156]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4156
[Intel XE#4331]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4331
[Intel XE#4422]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4422
[Intel XE#4459]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4459
[Intel XE#4733]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4733
[Intel XE#5021]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5021
[Intel XE#5354]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5354
[Intel XE#5694]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5694
[Intel XE#579]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/579
[Intel XE#5793]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5793
[Intel XE#5848]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5848
[Intel XE#6035]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6035
[Intel XE#607]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/607
[Intel XE#610]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/610
[Intel XE#6126]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6126
[Intel XE#6127]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6127
[Intel XE#6128]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6128
[Intel XE#6321]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6321
[Intel XE#6503]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6503
[Intel XE#6569]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6569
[Intel XE#6599]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6599
[Intel XE#6652]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6652
[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#6911]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6911
[Intel XE#6953]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6953
[Intel XE#6964]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6964
[Intel XE#6974]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6974
[Intel XE#7059]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7059
[Intel XE#7061]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7061
[Intel XE#7085]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7085
[Intel XE#7130]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7130
[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#7140]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7140
[Intel XE#7178]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7178
[Intel XE#7227]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7227
[Intel XE#7283]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7283
[Intel XE#7319]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7319
[Intel XE#7320]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7320
[Intel XE#7326]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7326
[Intel XE#7329]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7329
[Intel XE#7342]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7342
[Intel XE#7350]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7350
[Intel XE#7351]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7351
[Intel XE#7353]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7353
[Intel XE#7355]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7355
[Intel XE#7356]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7356
[Intel XE#7358]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7358
[Intel XE#7361]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7361
[Intel XE#7367]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7367
[Intel XE#7370]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7370
[Intel XE#7372]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7372
[Intel XE#7374]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7374
[Intel XE#7376]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7376
[Intel XE#7377]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7377
[Intel XE#7378]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7378
[Intel XE#7387]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7387
[Intel XE#7399]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7399
[Intel XE#7402]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7402
[Intel XE#7405]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7405
[Intel XE#7417]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7417
[Intel XE#7424]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7424
[Intel XE#7425]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7425
[Intel XE#7429]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7429
[Intel XE#7435]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7435
[Intel XE#7439]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7439
[Intel XE#7442]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7442
[Intel XE#7464]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7464
[Intel XE#7517]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7517
[Intel XE#7590]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7590
[Intel XE#7591]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7591
[Intel XE#7599]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7599
[Intel XE#7622]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7622
[Intel XE#7636]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7636
[Intel XE#7642]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7642
[Intel XE#7679]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7679
[Intel XE#7725]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7725
[Intel XE#776]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/776
[Intel XE#7793]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7793
[Intel XE#7794]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7794
[Intel XE#7809]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7809
[Intel XE#836]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/836
[Intel XE#870]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/870
[Intel XE#944]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/944
Build changes
-------------
* Linux: xe-4927-9917a06970fd6775b7b4259be6cca21cb4e2b165 -> xe-pw-165329v1
IGT_8870: 1aba4b364b6dbdf7926cc78501e7281d5176b029 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
xe-4927-9917a06970fd6775b7b4259be6cca21cb4e2b165: 9917a06970fd6775b7b4259be6cca21cb4e2b165
xe-pw-165329v1: 165329v1
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165329v1/index.html
[-- Attachment #2: Type: text/html, Size: 45562 bytes --]
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH v2 1/5] mm: Introduce zone_appears_fragmented()
2026-04-23 11:27 ` Thomas Hellström
@ 2026-04-23 19:08 ` Matthew Brost
2026-04-23 22:21 ` Matthew Brost
0 siblings, 1 reply; 16+ messages in thread
From: Matthew Brost @ 2026-04-23 19:08 UTC (permalink / raw)
To: Thomas Hellström
Cc: David Hildenbrand (Arm), intel-xe, dri-devel, Andrew Morton,
Lorenzo Stoakes, Liam R. Howlett, Vlastimil Babka, Mike Rapoport,
Suren Baghdasaryan, Michal Hocko, linux-mm, linux-kernel,
Johannes Weiner
On Thu, Apr 23, 2026 at 01:27:11PM +0200, Thomas Hellström wrote:
> On Thu, 2026-04-23 at 12:27 +0200, David Hildenbrand (Arm) wrote:
> > On 4/23/26 07:56, Matthew Brost wrote:
> > > Introduce zone_appears_fragmented() as a lightweight helper to
> > > allow
> > > subsystems to make coarse decisions about reclaim behavior in the
> > > presence of likely fragmentation.
> > >
> > > The helper implements a simple heuristic: if the number of free
> > > pages
> > > in a zone exceeds twice the high watermark, the zone is considered
> > > to
> > > have ample free memory and allocation failures are more likely due
> > > to
> > > fragmentation than overall memory pressure.
> > >
> > > This is intentionally imprecise and is not meant to replace the
> > > core
> > > MM compaction or fragmentation accounting logic. Instead, it
> > > provides
> > > a cheap signal for callers (e.g., shrinkers) that wish to avoid
> > > overly aggressive reclaim when sufficient free memory exists but
> > > high-order allocations may still fail.
> > >
> > > No functional changes; this is a preparatory helper for future
> > > users.
> > >
> > > Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com>
> > > Cc: Andrew Morton <akpm@linux-foundation.org>
> > > Cc: David Hildenbrand <david@kernel.org>
> > > Cc: Lorenzo Stoakes <ljs@kernel.org>
> > > Cc: "Liam R. Howlett" <Liam.Howlett@oracle.com>
> > > Cc: Vlastimil Babka <vbabka@kernel.org>
> > > Cc: Mike Rapoport <rppt@kernel.org>
> > > Cc: Suren Baghdasaryan <surenb@google.com>
> > > Cc: Michal Hocko <mhocko@suse.com>
> > > Cc: linux-mm@kvack.org
> > > Cc: linux-kernel@vger.kernel.org
> > > Signed-off-by: Matthew Brost <matthew.brost@intel.com>
> > > ---
> > > include/linux/vmstat.h | 13 +++++++++++++
> > > 1 file changed, 13 insertions(+)
> > >
> > > diff --git a/include/linux/vmstat.h b/include/linux/vmstat.h
> > > index 3c9c266cf782..568d9f4f1a1f 100644
> > > --- a/include/linux/vmstat.h
> > > +++ b/include/linux/vmstat.h
> > > @@ -483,6 +483,19 @@ static inline const char *zone_stat_name(enum
> > > zone_stat_item item)
> > > return vmstat_text[item];
> > > }
> > >
> > > +static inline bool zone_appears_fragmented(struct zone *zone)
> > > +{
> >
> > "zone_likely_fragmented" or "zone_maybe_fragmented" might be clearer,
> > depending
> > on the actual semantics.
> >
> > > + /*
> > > + * Simple heuristic: if the number of free pages is more
> > > than twice the
> > > + * high watermark, this strongly suggests that the zone is
> > > heavily
> > > + * fragmented when called from a shrinker.
> > > + */
> >
> > I'll cc some more people. But the "when called from a shrinker" bit
> > is
> > concerning. Are there additional semantics that should be expressed
> > in the
> > function name, for example?
> >
> > Something that implies that this function only gives you a reasonable
> > answer in
> > a certain context.
>
> I think that test would not be relevant for cgroup-aware shrinking.
>
> What about trying to pass something in the struct shrink_control? Like
> if we pass the struct scan_control's order field also in struct
If the order were included in shrink_control, there is about a 95%
certain that this change would allow TTM / Xe to break the problematic
kswapd feedback loop. This may also better express the intent of the
problem we are trying to fix here.
For reference, the cover letter [1] details the problem.
Any guidance from the core MM folks would be appreciated—would adding
the order to shrink_control be an acceptable solution?
Matt
[1] https://patchwork.freedesktop.org/series/165330/
> shrink_control, really expensive shrinkers could duck reclaim attempts
> from higher-order allocations that may fail anyway:
>
> if (sc->order > PAGE_ALLOC_COSTLY_ORDER &&
> (sc->gfp_mask & (__GFP_NORETRY | __GFP_RETRY_MAYFAIL)) &&
> !(sc->gfp_mask & __GFP_NOFAIL))
> return SHRINK_STOP;
>
> Possibly exposed as an inline helper in the shrinker interface?
>
> /Thomas
>
>
>
>
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH v2 1/5] mm: Introduce zone_appears_fragmented()
2026-04-23 19:08 ` Matthew Brost
@ 2026-04-23 22:21 ` Matthew Brost
0 siblings, 0 replies; 16+ messages in thread
From: Matthew Brost @ 2026-04-23 22:21 UTC (permalink / raw)
To: Thomas Hellström
Cc: David Hildenbrand (Arm), intel-xe, dri-devel, Andrew Morton,
Lorenzo Stoakes, Liam R. Howlett, Vlastimil Babka, Mike Rapoport,
Suren Baghdasaryan, Michal Hocko, linux-mm, linux-kernel,
Johannes Weiner
On Thu, Apr 23, 2026 at 12:08:36PM -0700, Matthew Brost wrote:
> On Thu, Apr 23, 2026 at 01:27:11PM +0200, Thomas Hellström wrote:
> > On Thu, 2026-04-23 at 12:27 +0200, David Hildenbrand (Arm) wrote:
> > > On 4/23/26 07:56, Matthew Brost wrote:
> > > > Introduce zone_appears_fragmented() as a lightweight helper to
> > > > allow
> > > > subsystems to make coarse decisions about reclaim behavior in the
> > > > presence of likely fragmentation.
> > > >
> > > > The helper implements a simple heuristic: if the number of free
> > > > pages
> > > > in a zone exceeds twice the high watermark, the zone is considered
> > > > to
> > > > have ample free memory and allocation failures are more likely due
> > > > to
> > > > fragmentation than overall memory pressure.
> > > >
> > > > This is intentionally imprecise and is not meant to replace the
> > > > core
> > > > MM compaction or fragmentation accounting logic. Instead, it
> > > > provides
> > > > a cheap signal for callers (e.g., shrinkers) that wish to avoid
> > > > overly aggressive reclaim when sufficient free memory exists but
> > > > high-order allocations may still fail.
> > > >
> > > > No functional changes; this is a preparatory helper for future
> > > > users.
> > > >
> > > > Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com>
> > > > Cc: Andrew Morton <akpm@linux-foundation.org>
> > > > Cc: David Hildenbrand <david@kernel.org>
> > > > Cc: Lorenzo Stoakes <ljs@kernel.org>
> > > > Cc: "Liam R. Howlett" <Liam.Howlett@oracle.com>
> > > > Cc: Vlastimil Babka <vbabka@kernel.org>
> > > > Cc: Mike Rapoport <rppt@kernel.org>
> > > > Cc: Suren Baghdasaryan <surenb@google.com>
> > > > Cc: Michal Hocko <mhocko@suse.com>
> > > > Cc: linux-mm@kvack.org
> > > > Cc: linux-kernel@vger.kernel.org
> > > > Signed-off-by: Matthew Brost <matthew.brost@intel.com>
> > > > ---
> > > > include/linux/vmstat.h | 13 +++++++++++++
> > > > 1 file changed, 13 insertions(+)
> > > >
> > > > diff --git a/include/linux/vmstat.h b/include/linux/vmstat.h
> > > > index 3c9c266cf782..568d9f4f1a1f 100644
> > > > --- a/include/linux/vmstat.h
> > > > +++ b/include/linux/vmstat.h
> > > > @@ -483,6 +483,19 @@ static inline const char *zone_stat_name(enum
> > > > zone_stat_item item)
> > > > return vmstat_text[item];
> > > > }
> > > >
> > > > +static inline bool zone_appears_fragmented(struct zone *zone)
> > > > +{
> > >
> > > "zone_likely_fragmented" or "zone_maybe_fragmented" might be clearer,
> > > depending
> > > on the actual semantics.
> > >
> > > > + /*
> > > > + * Simple heuristic: if the number of free pages is more
> > > > than twice the
> > > > + * high watermark, this strongly suggests that the zone is
> > > > heavily
> > > > + * fragmented when called from a shrinker.
> > > > + */
> > >
> > > I'll cc some more people. But the "when called from a shrinker" bit
> > > is
> > > concerning. Are there additional semantics that should be expressed
> > > in the
> > > function name, for example?
> > >
> > > Something that implies that this function only gives you a reasonable
> > > answer in
> > > a certain context.
> >
> > I think that test would not be relevant for cgroup-aware shrinking.
> >
> > What about trying to pass something in the struct shrink_control? Like
> > if we pass the struct scan_control's order field also in struct
>
> If the order were included in shrink_control, there is about a 95%
> certain that this change would allow TTM / Xe to break the problematic
> kswapd feedback loop. This may also better express the intent of the
> problem we are trying to fix here.
>
> For reference, the cover letter [1] details the problem.
>
> Any guidance from the core MM folks would be appreciated—would adding
> the order to shrink_control be an acceptable solution?
>
> Matt
>
> [1] https://patchwork.freedesktop.org/series/165330/
>
> > shrink_control, really expensive shrinkers could duck reclaim attempts
> > from higher-order allocations that may fail anyway:
> >
> > if (sc->order > PAGE_ALLOC_COSTLY_ORDER &&
> > (sc->gfp_mask & (__GFP_NORETRY | __GFP_RETRY_MAYFAIL)) &&
> > !(sc->gfp_mask & __GFP_NOFAIL))
It doesn't look like __GFP_NORETRY, __GFP_RETRY_MAYFAIL, __GFP_NOFAIL
make it to the sc->gfp_mask flags from the caller and get into kswapd
loop...
1182 [ 394.049058] xe_shrinker_scan: no skip order=9, gfp=0x0000000000000cc0
1183 [ 394.049061] CPU: 2 UID: 0 PID: 110 Comm: kswapd0 Not tainted 7.0.0-xe+ #355 PREEMPT(full)
1184 [ 394.049062] Hardware name: Intel Corporation Panther Lake Client Platform/PTL-UH LP5 T3 RVP1, BIOS PTLPFWI1.R00.3332.D05.2509011438 09/01/2025
1185 [ 394.049063] Call Trace:
1186 [ 394.049065] <TASK>
1187 [ 394.049066] dump_stack_lvl+0x55/0x70
1188 [ 394.049073] xe_shrinker_scan+0x274/0x280 [xe]
1189 [ 394.049181] do_shrink_slab+0x132/0x360
1190 [ 394.049184] shrink_slab+0xf0/0x3e0
1191 [ 394.049186] shrink_node+0x2bd/0x800
1192 [ 394.049188] balance_pgdat+0x323/0x760
1193 [ 394.049189] kswapd+0x1c3/0x340
1194 [ 394.049190] ? __pfx_autoremove_wake_function+0x10/0x10
1195 [ 394.049193] ? __pfx_kswapd+0x10/0x10
1196 [ 394.049194] kthread+0xdf/0x120
1197 [ 394.049196] ? __pfx_kthread+0x10/0x10
1198 [ 394.049197] ret_from_fork+0x1d0/0x220
1199 [ 394.049200] ? __pfx_kthread+0x10/0x10
1200 [ 394.049200] ret_from_fork_asm+0x1a/0x30
1201 [ 394.049202] </TASK>
Will look into if this is fixable, but again any core MM guidance would
helpful.
Matt
> > return SHRINK_STOP;
> >
> > Possibly exposed as an inline helper in the shrinker interface?
> >
> > /Thomas
> >
> >
> >
> >
^ permalink raw reply [flat|nested] 16+ messages in thread
end of thread, other threads:[~2026-04-23 22:21 UTC | newest]
Thread overview: 16+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-04-23 5:56 [PATCH v2 0/5] mm, drm/ttm, drm/xe: Avoid reclaim/eviction loops under fragmentation Matthew Brost
2026-04-23 5:56 ` [PATCH v2 1/5] mm: Introduce zone_appears_fragmented() Matthew Brost
2026-04-23 6:04 ` Balbir Singh
2026-04-23 6:16 ` Matthew Brost
2026-04-23 6:27 ` Matthew Brost
2026-04-23 10:27 ` David Hildenbrand (Arm)
2026-04-23 11:27 ` Thomas Hellström
2026-04-23 19:08 ` Matthew Brost
2026-04-23 22:21 ` Matthew Brost
2026-04-23 5:56 ` [PATCH v2 2/5] drm/ttm: Issue direct reclaim at beneficial_order Matthew Brost
2026-04-23 5:56 ` [PATCH v2 3/5] drm/ttm: Introduce ttm_bo_shrink_kswap_fragmented() Matthew Brost
2026-04-23 5:56 ` [PATCH v2 4/5] drm/xe: Set TTM device beneficial_order to 9 (2M) Matthew Brost
2026-04-23 5:56 ` [PATCH v2 5/5] drm/xe: Avoid shrinker reclaim from kswapd under fragmentation Matthew Brost
2026-04-23 6:04 ` ✓ CI.KUnit: success for mm, drm/ttm, drm/xe: Avoid reclaim/eviction loops " Patchwork
2026-04-23 6:53 ` ✓ Xe.CI.BAT: " Patchwork
2026-04-23 17:30 ` ✗ Xe.CI.FULL: failure " Patchwork
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox