* [PATCH 0/3] drm/ttm, drm/xe: Avoid reclaim/eviction loops under fragmentation
@ 2026-04-21 1:26 Matthew Brost
2026-04-21 1:26 ` [PATCH 1/3] drm/ttm: Issue direct reclaim at beneficial_order Matthew Brost
` (5 more replies)
0 siblings, 6 replies; 16+ messages in thread
From: Matthew Brost @ 2026-04-21 1:26 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
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.
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, 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
[1] https://patchwork.freedesktop.org/patch/716404/?series=164353&rev=1
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>
Matthew Brost (3):
drm/ttm: Issue direct reclaim at beneficial_order
drm/xe: Set TTM device beneficial_order to 9 (2M)
drm/xe: Avoid shrinker reclaim from kswapd under fragmentation
drivers/gpu/drm/ttm/ttm_pool.c | 4 ++--
drivers/gpu/drm/xe/xe_device.c | 3 ++-
drivers/gpu/drm/xe/xe_shrinker.c | 13 +++++++++++++
3 files changed, 17 insertions(+), 3 deletions(-)
--
2.34.1
^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH 1/3] drm/ttm: Issue direct reclaim at beneficial_order
2026-04-21 1:26 [PATCH 0/3] drm/ttm, drm/xe: Avoid reclaim/eviction loops under fragmentation Matthew Brost
@ 2026-04-21 1:26 ` Matthew Brost
2026-04-21 6:11 ` Christian König
2026-04-22 7:32 ` Tvrtko Ursulin
2026-04-21 1:26 ` [PATCH 2/3] drm/xe: Set TTM device beneficial_order to 9 (2M) Matthew Brost
` (4 subsequent siblings)
5 siblings, 2 replies; 16+ messages in thread
From: Matthew Brost @ 2026-04-21 1:26 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
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: 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_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 2/3] drm/xe: Set TTM device beneficial_order to 9 (2M)
2026-04-21 1:26 [PATCH 0/3] drm/ttm, drm/xe: Avoid reclaim/eviction loops under fragmentation Matthew Brost
2026-04-21 1:26 ` [PATCH 1/3] drm/ttm: Issue direct reclaim at beneficial_order Matthew Brost
@ 2026-04-21 1:26 ` Matthew Brost
2026-04-21 1:26 ` [PATCH 3/3] drm/xe: Avoid shrinker reclaim from kswapd under fragmentation Matthew Brost
` (3 subsequent siblings)
5 siblings, 0 replies; 16+ messages in thread
From: Matthew Brost @ 2026-04-21 1:26 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 3/3] drm/xe: Avoid shrinker reclaim from kswapd under fragmentation
2026-04-21 1:26 [PATCH 0/3] drm/ttm, drm/xe: Avoid reclaim/eviction loops under fragmentation Matthew Brost
2026-04-21 1:26 ` [PATCH 1/3] drm/ttm: Issue direct reclaim at beneficial_order Matthew Brost
2026-04-21 1:26 ` [PATCH 2/3] drm/xe: Set TTM device beneficial_order to 9 (2M) Matthew Brost
@ 2026-04-21 1:26 ` Matthew Brost
2026-04-22 8:22 ` Thomas Hellström
2026-04-21 5:56 ` ✓ CI.KUnit: success for drm/ttm, drm/xe: Avoid reclaim/eviction loops " Patchwork
` (2 subsequent siblings)
5 siblings, 1 reply; 16+ messages in thread
From: Matthew Brost @ 2026-04-21 1:26 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 ZONE_NORMAL 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 ZONE_NORMAL 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 | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/drivers/gpu/drm/xe/xe_shrinker.c b/drivers/gpu/drm/xe/xe_shrinker.c
index 83374cd57660..e56afde83de6 100644
--- a/drivers/gpu/drm/xe/xe_shrinker.c
+++ b/drivers/gpu/drm/xe/xe_shrinker.c
@@ -236,6 +236,19 @@ static unsigned long xe_shrinker_scan(struct shrinker *shrink, struct shrink_con
if (nr_scanned >= nr_to_scan || !can_backup)
goto out;
+ if (current_is_kswapd()) {
+ struct zone *zone = &NODE_DATA(sc->nid)->node_zones[ZONE_NORMAL];
+ unsigned long free_pages = zone_page_state(zone, NR_FREE_PAGES);
+ unsigned long high_wmark = high_wmark_pages(zone);
+
+ /*
+ * If we have 2x the high watermark free, this is definitely
+ * fragmentation
+ */
+ if (free_pages > (high_wmark * 2))
+ 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 drm/ttm, drm/xe: Avoid reclaim/eviction loops under fragmentation
2026-04-21 1:26 [PATCH 0/3] drm/ttm, drm/xe: Avoid reclaim/eviction loops under fragmentation Matthew Brost
` (2 preceding siblings ...)
2026-04-21 1:26 ` [PATCH 3/3] drm/xe: Avoid shrinker reclaim from kswapd under fragmentation Matthew Brost
@ 2026-04-21 5:56 ` Patchwork
2026-04-21 6:43 ` ✓ Xe.CI.BAT: " Patchwork
2026-04-21 8:29 ` ✗ Xe.CI.FULL: failure " Patchwork
5 siblings, 0 replies; 16+ messages in thread
From: Patchwork @ 2026-04-21 5:56 UTC (permalink / raw)
To: Matthew Brost; +Cc: intel-xe
== Series Details ==
Series: drm/ttm, drm/xe: Avoid reclaim/eviction loops under fragmentation
URL : https://patchwork.freedesktop.org/series/165196/
State : success
== Summary ==
+ trap cleanup EXIT
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/xe/.kunitconfig
[05:55:10] Configuring KUnit Kernel ...
Generating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[05:55:14] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48
[05:55:45] Starting KUnit Kernel (1/1)...
[05:55:45] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[05:55:45] ================== guc_buf (11 subtests) ===================
[05:55:45] [PASSED] test_smallest
[05:55:45] [PASSED] test_largest
[05:55:45] [PASSED] test_granular
[05:55:45] [PASSED] test_unique
[05:55:45] [PASSED] test_overlap
[05:55:45] [PASSED] test_reusable
[05:55:45] [PASSED] test_too_big
[05:55:45] [PASSED] test_flush
[05:55:45] [PASSED] test_lookup
[05:55:45] [PASSED] test_data
[05:55:45] [PASSED] test_class
[05:55:45] ===================== [PASSED] guc_buf =====================
[05:55:45] =================== guc_dbm (7 subtests) ===================
[05:55:45] [PASSED] test_empty
[05:55:45] [PASSED] test_default
[05:55:45] ======================== test_size ========================
[05:55:45] [PASSED] 4
[05:55:45] [PASSED] 8
[05:55:45] [PASSED] 32
[05:55:45] [PASSED] 256
[05:55:45] ==================== [PASSED] test_size ====================
[05:55:45] ======================= test_reuse ========================
[05:55:45] [PASSED] 4
[05:55:45] [PASSED] 8
[05:55:45] [PASSED] 32
[05:55:45] [PASSED] 256
[05:55:45] =================== [PASSED] test_reuse ====================
[05:55:45] =================== test_range_overlap ====================
[05:55:45] [PASSED] 4
[05:55:45] [PASSED] 8
[05:55:45] [PASSED] 32
[05:55:45] [PASSED] 256
[05:55:45] =============== [PASSED] test_range_overlap ================
[05:55:45] =================== test_range_compact ====================
[05:55:45] [PASSED] 4
[05:55:45] [PASSED] 8
[05:55:45] [PASSED] 32
[05:55:45] [PASSED] 256
[05:55:45] =============== [PASSED] test_range_compact ================
[05:55:45] ==================== test_range_spare =====================
[05:55:45] [PASSED] 4
[05:55:45] [PASSED] 8
[05:55:45] [PASSED] 32
[05:55:45] [PASSED] 256
[05:55:45] ================ [PASSED] test_range_spare =================
[05:55:45] ===================== [PASSED] guc_dbm =====================
[05:55:45] =================== guc_idm (6 subtests) ===================
[05:55:45] [PASSED] bad_init
[05:55:45] [PASSED] no_init
[05:55:45] [PASSED] init_fini
[05:55:45] [PASSED] check_used
[05:55:45] [PASSED] check_quota
[05:55:45] [PASSED] check_all
[05:55:45] ===================== [PASSED] guc_idm =====================
[05:55:45] ================== no_relay (3 subtests) ===================
[05:55:45] [PASSED] xe_drops_guc2pf_if_not_ready
[05:55:45] [PASSED] xe_drops_guc2vf_if_not_ready
[05:55:45] [PASSED] xe_rejects_send_if_not_ready
[05:55:45] ==================== [PASSED] no_relay =====================
[05:55:45] ================== pf_relay (14 subtests) ==================
[05:55:45] [PASSED] pf_rejects_guc2pf_too_short
[05:55:45] [PASSED] pf_rejects_guc2pf_too_long
[05:55:45] [PASSED] pf_rejects_guc2pf_no_payload
[05:55:45] [PASSED] pf_fails_no_payload
[05:55:45] [PASSED] pf_fails_bad_origin
[05:55:45] [PASSED] pf_fails_bad_type
[05:55:45] [PASSED] pf_txn_reports_error
[05:55:45] [PASSED] pf_txn_sends_pf2guc
[05:55:45] [PASSED] pf_sends_pf2guc
[05:55:45] [SKIPPED] pf_loopback_nop
[05:55:45] [SKIPPED] pf_loopback_echo
[05:55:45] [SKIPPED] pf_loopback_fail
[05:55:45] [SKIPPED] pf_loopback_busy
[05:55:45] [SKIPPED] pf_loopback_retry
[05:55:45] ==================== [PASSED] pf_relay =====================
[05:55:45] ================== vf_relay (3 subtests) ===================
[05:55:45] [PASSED] vf_rejects_guc2vf_too_short
[05:55:45] [PASSED] vf_rejects_guc2vf_too_long
[05:55:45] [PASSED] vf_rejects_guc2vf_no_payload
[05:55:45] ==================== [PASSED] vf_relay =====================
[05:55:45] ================ pf_gt_config (9 subtests) =================
[05:55:45] [PASSED] fair_contexts_1vf
[05:55:45] [PASSED] fair_doorbells_1vf
[05:55:45] [PASSED] fair_ggtt_1vf
[05:55:45] ====================== fair_vram_1vf ======================
[05:55:45] [PASSED] 3.50 GiB
[05:55:45] [PASSED] 11.5 GiB
[05:55:45] [PASSED] 15.5 GiB
[05:55:45] [PASSED] 31.5 GiB
[05:55:45] [PASSED] 63.5 GiB
[05:55:45] [PASSED] 1.91 GiB
[05:55:45] ================== [PASSED] fair_vram_1vf ==================
[05:55:45] ================ fair_vram_1vf_admin_only =================
[05:55:45] [PASSED] 3.50 GiB
[05:55:45] [PASSED] 11.5 GiB
[05:55:45] [PASSED] 15.5 GiB
[05:55:45] [PASSED] 31.5 GiB
[05:55:45] [PASSED] 63.5 GiB
[05:55:45] [PASSED] 1.91 GiB
[05:55:45] ============ [PASSED] fair_vram_1vf_admin_only =============
[05:55:45] ====================== fair_contexts ======================
[05:55:45] [PASSED] 1 VF
[05:55:45] [PASSED] 2 VFs
[05:55:45] [PASSED] 3 VFs
[05:55:45] [PASSED] 4 VFs
[05:55:45] [PASSED] 5 VFs
[05:55:45] [PASSED] 6 VFs
[05:55:45] [PASSED] 7 VFs
[05:55:45] [PASSED] 8 VFs
[05:55:45] [PASSED] 9 VFs
[05:55:45] [PASSED] 10 VFs
[05:55:45] [PASSED] 11 VFs
[05:55:45] [PASSED] 12 VFs
[05:55:45] [PASSED] 13 VFs
[05:55:45] [PASSED] 14 VFs
[05:55:45] [PASSED] 15 VFs
[05:55:45] [PASSED] 16 VFs
[05:55:45] [PASSED] 17 VFs
[05:55:45] [PASSED] 18 VFs
[05:55:45] [PASSED] 19 VFs
[05:55:45] [PASSED] 20 VFs
[05:55:45] [PASSED] 21 VFs
[05:55:45] [PASSED] 22 VFs
[05:55:45] [PASSED] 23 VFs
[05:55:45] [PASSED] 24 VFs
[05:55:45] [PASSED] 25 VFs
[05:55:45] [PASSED] 26 VFs
[05:55:45] [PASSED] 27 VFs
[05:55:45] [PASSED] 28 VFs
[05:55:45] [PASSED] 29 VFs
[05:55:45] [PASSED] 30 VFs
[05:55:45] [PASSED] 31 VFs
[05:55:45] [PASSED] 32 VFs
[05:55:45] [PASSED] 33 VFs
[05:55:45] [PASSED] 34 VFs
[05:55:45] [PASSED] 35 VFs
[05:55:45] [PASSED] 36 VFs
[05:55:45] [PASSED] 37 VFs
[05:55:45] [PASSED] 38 VFs
[05:55:45] [PASSED] 39 VFs
[05:55:45] [PASSED] 40 VFs
[05:55:45] [PASSED] 41 VFs
[05:55:45] [PASSED] 42 VFs
[05:55:45] [PASSED] 43 VFs
[05:55:45] [PASSED] 44 VFs
[05:55:45] [PASSED] 45 VFs
[05:55:45] [PASSED] 46 VFs
[05:55:45] [PASSED] 47 VFs
[05:55:45] [PASSED] 48 VFs
[05:55:45] [PASSED] 49 VFs
[05:55:45] [PASSED] 50 VFs
[05:55:45] [PASSED] 51 VFs
[05:55:45] [PASSED] 52 VFs
[05:55:45] [PASSED] 53 VFs
[05:55:45] [PASSED] 54 VFs
[05:55:45] [PASSED] 55 VFs
[05:55:45] [PASSED] 56 VFs
[05:55:45] [PASSED] 57 VFs
[05:55:45] [PASSED] 58 VFs
[05:55:45] [PASSED] 59 VFs
[05:55:45] [PASSED] 60 VFs
[05:55:45] [PASSED] 61 VFs
[05:55:45] [PASSED] 62 VFs
[05:55:45] [PASSED] 63 VFs
[05:55:45] ================== [PASSED] fair_contexts ==================
[05:55:45] ===================== fair_doorbells ======================
[05:55:45] [PASSED] 1 VF
[05:55:45] [PASSED] 2 VFs
[05:55:45] [PASSED] 3 VFs
[05:55:45] [PASSED] 4 VFs
[05:55:45] [PASSED] 5 VFs
[05:55:45] [PASSED] 6 VFs
[05:55:45] [PASSED] 7 VFs
[05:55:45] [PASSED] 8 VFs
[05:55:45] [PASSED] 9 VFs
[05:55:45] [PASSED] 10 VFs
[05:55:45] [PASSED] 11 VFs
[05:55:45] [PASSED] 12 VFs
[05:55:45] [PASSED] 13 VFs
[05:55:45] [PASSED] 14 VFs
[05:55:45] [PASSED] 15 VFs
[05:55:45] [PASSED] 16 VFs
[05:55:45] [PASSED] 17 VFs
[05:55:45] [PASSED] 18 VFs
[05:55:45] [PASSED] 19 VFs
[05:55:45] [PASSED] 20 VFs
[05:55:45] [PASSED] 21 VFs
[05:55:45] [PASSED] 22 VFs
[05:55:45] [PASSED] 23 VFs
[05:55:45] [PASSED] 24 VFs
[05:55:45] [PASSED] 25 VFs
[05:55:45] [PASSED] 26 VFs
[05:55:45] [PASSED] 27 VFs
[05:55:45] [PASSED] 28 VFs
[05:55:45] [PASSED] 29 VFs
[05:55:45] [PASSED] 30 VFs
[05:55:45] [PASSED] 31 VFs
[05:55:45] [PASSED] 32 VFs
[05:55:45] [PASSED] 33 VFs
[05:55:45] [PASSED] 34 VFs
[05:55:45] [PASSED] 35 VFs
[05:55:45] [PASSED] 36 VFs
[05:55:45] [PASSED] 37 VFs
[05:55:45] [PASSED] 38 VFs
[05:55:45] [PASSED] 39 VFs
[05:55:45] [PASSED] 40 VFs
[05:55:45] [PASSED] 41 VFs
[05:55:45] [PASSED] 42 VFs
[05:55:45] [PASSED] 43 VFs
[05:55:45] [PASSED] 44 VFs
[05:55:45] [PASSED] 45 VFs
[05:55:45] [PASSED] 46 VFs
[05:55:45] [PASSED] 47 VFs
[05:55:45] [PASSED] 48 VFs
[05:55:45] [PASSED] 49 VFs
[05:55:45] [PASSED] 50 VFs
[05:55:45] [PASSED] 51 VFs
[05:55:45] [PASSED] 52 VFs
[05:55:45] [PASSED] 53 VFs
[05:55:45] [PASSED] 54 VFs
[05:55:45] [PASSED] 55 VFs
[05:55:45] [PASSED] 56 VFs
[05:55:45] [PASSED] 57 VFs
[05:55:45] [PASSED] 58 VFs
[05:55:45] [PASSED] 59 VFs
[05:55:45] [PASSED] 60 VFs
[05:55:45] [PASSED] 61 VFs
[05:55:45] [PASSED] 62 VFs
[05:55:45] [PASSED] 63 VFs
[05:55:45] ================= [PASSED] fair_doorbells ==================
[05:55:45] ======================== fair_ggtt ========================
[05:55:45] [PASSED] 1 VF
[05:55:45] [PASSED] 2 VFs
[05:55:45] [PASSED] 3 VFs
[05:55:45] [PASSED] 4 VFs
[05:55:45] [PASSED] 5 VFs
[05:55:45] [PASSED] 6 VFs
[05:55:45] [PASSED] 7 VFs
[05:55:45] [PASSED] 8 VFs
[05:55:45] [PASSED] 9 VFs
[05:55:45] [PASSED] 10 VFs
[05:55:45] [PASSED] 11 VFs
[05:55:45] [PASSED] 12 VFs
[05:55:45] [PASSED] 13 VFs
[05:55:45] [PASSED] 14 VFs
[05:55:45] [PASSED] 15 VFs
[05:55:45] [PASSED] 16 VFs
[05:55:45] [PASSED] 17 VFs
[05:55:45] [PASSED] 18 VFs
[05:55:45] [PASSED] 19 VFs
[05:55:45] [PASSED] 20 VFs
[05:55:45] [PASSED] 21 VFs
[05:55:45] [PASSED] 22 VFs
[05:55:45] [PASSED] 23 VFs
[05:55:45] [PASSED] 24 VFs
[05:55:45] [PASSED] 25 VFs
[05:55:45] [PASSED] 26 VFs
[05:55:45] [PASSED] 27 VFs
[05:55:45] [PASSED] 28 VFs
[05:55:45] [PASSED] 29 VFs
[05:55:45] [PASSED] 30 VFs
[05:55:45] [PASSED] 31 VFs
[05:55:45] [PASSED] 32 VFs
[05:55:45] [PASSED] 33 VFs
[05:55:45] [PASSED] 34 VFs
[05:55:45] [PASSED] 35 VFs
[05:55:45] [PASSED] 36 VFs
[05:55:45] [PASSED] 37 VFs
[05:55:45] [PASSED] 38 VFs
[05:55:45] [PASSED] 39 VFs
[05:55:45] [PASSED] 40 VFs
[05:55:45] [PASSED] 41 VFs
[05:55:45] [PASSED] 42 VFs
[05:55:45] [PASSED] 43 VFs
[05:55:45] [PASSED] 44 VFs
[05:55:45] [PASSED] 45 VFs
[05:55:45] [PASSED] 46 VFs
[05:55:45] [PASSED] 47 VFs
[05:55:45] [PASSED] 48 VFs
[05:55:45] [PASSED] 49 VFs
[05:55:45] [PASSED] 50 VFs
[05:55:45] [PASSED] 51 VFs
[05:55:45] [PASSED] 52 VFs
[05:55:45] [PASSED] 53 VFs
[05:55:45] [PASSED] 54 VFs
[05:55:45] [PASSED] 55 VFs
[05:55:45] [PASSED] 56 VFs
[05:55:45] [PASSED] 57 VFs
[05:55:45] [PASSED] 58 VFs
[05:55:45] [PASSED] 59 VFs
[05:55:45] [PASSED] 60 VFs
[05:55:45] [PASSED] 61 VFs
[05:55:45] [PASSED] 62 VFs
[05:55:45] [PASSED] 63 VFs
[05:55:45] ==================== [PASSED] fair_ggtt ====================
[05:55:45] ======================== fair_vram ========================
[05:55:45] [PASSED] 1 VF
[05:55:45] [PASSED] 2 VFs
[05:55:45] [PASSED] 3 VFs
[05:55:45] [PASSED] 4 VFs
[05:55:45] [PASSED] 5 VFs
[05:55:45] [PASSED] 6 VFs
[05:55:45] [PASSED] 7 VFs
[05:55:45] [PASSED] 8 VFs
[05:55:45] [PASSED] 9 VFs
[05:55:45] [PASSED] 10 VFs
[05:55:45] [PASSED] 11 VFs
[05:55:45] [PASSED] 12 VFs
[05:55:45] [PASSED] 13 VFs
[05:55:45] [PASSED] 14 VFs
[05:55:45] [PASSED] 15 VFs
[05:55:45] [PASSED] 16 VFs
[05:55:45] [PASSED] 17 VFs
[05:55:45] [PASSED] 18 VFs
[05:55:45] [PASSED] 19 VFs
[05:55:45] [PASSED] 20 VFs
[05:55:45] [PASSED] 21 VFs
[05:55:45] [PASSED] 22 VFs
[05:55:45] [PASSED] 23 VFs
[05:55:45] [PASSED] 24 VFs
[05:55:45] [PASSED] 25 VFs
[05:55:45] [PASSED] 26 VFs
[05:55:45] [PASSED] 27 VFs
[05:55:45] [PASSED] 28 VFs
[05:55:45] [PASSED] 29 VFs
[05:55:45] [PASSED] 30 VFs
[05:55:45] [PASSED] 31 VFs
[05:55:45] [PASSED] 32 VFs
[05:55:45] [PASSED] 33 VFs
[05:55:45] [PASSED] 34 VFs
[05:55:45] [PASSED] 35 VFs
[05:55:45] [PASSED] 36 VFs
[05:55:45] [PASSED] 37 VFs
[05:55:45] [PASSED] 38 VFs
[05:55:45] [PASSED] 39 VFs
[05:55:45] [PASSED] 40 VFs
[05:55:45] [PASSED] 41 VFs
[05:55:45] [PASSED] 42 VFs
[05:55:45] [PASSED] 43 VFs
[05:55:45] [PASSED] 44 VFs
[05:55:45] [PASSED] 45 VFs
[05:55:45] [PASSED] 46 VFs
[05:55:45] [PASSED] 47 VFs
[05:55:45] [PASSED] 48 VFs
[05:55:46] [PASSED] 49 VFs
[05:55:46] [PASSED] 50 VFs
[05:55:46] [PASSED] 51 VFs
[05:55:46] [PASSED] 52 VFs
[05:55:46] [PASSED] 53 VFs
[05:55:46] [PASSED] 54 VFs
[05:55:46] [PASSED] 55 VFs
[05:55:46] [PASSED] 56 VFs
[05:55:46] [PASSED] 57 VFs
[05:55:46] [PASSED] 58 VFs
[05:55:46] [PASSED] 59 VFs
[05:55:46] [PASSED] 60 VFs
[05:55:46] [PASSED] 61 VFs
[05:55:46] [PASSED] 62 VFs
[05:55:46] [PASSED] 63 VFs
[05:55:46] ==================== [PASSED] fair_vram ====================
[05:55:46] ================== [PASSED] pf_gt_config ===================
[05:55:46] ===================== lmtt (1 subtest) =====================
[05:55:46] ======================== test_ops =========================
[05:55:46] [PASSED] 2-level
[05:55:46] [PASSED] multi-level
[05:55:46] ==================== [PASSED] test_ops =====================
[05:55:46] ====================== [PASSED] lmtt =======================
[05:55:46] ================= pf_service (11 subtests) =================
[05:55:46] [PASSED] pf_negotiate_any
[05:55:46] [PASSED] pf_negotiate_base_match
[05:55:46] [PASSED] pf_negotiate_base_newer
[05:55:46] [PASSED] pf_negotiate_base_next
[05:55:46] [SKIPPED] pf_negotiate_base_older
[05:55:46] [PASSED] pf_negotiate_base_prev
[05:55:46] [PASSED] pf_negotiate_latest_match
[05:55:46] [PASSED] pf_negotiate_latest_newer
[05:55:46] [PASSED] pf_negotiate_latest_next
[05:55:46] [SKIPPED] pf_negotiate_latest_older
[05:55:46] [SKIPPED] pf_negotiate_latest_prev
[05:55:46] =================== [PASSED] pf_service ====================
[05:55:46] ================= xe_guc_g2g (2 subtests) ==================
[05:55:46] ============== xe_live_guc_g2g_kunit_default ==============
[05:55:46] ========= [SKIPPED] xe_live_guc_g2g_kunit_default ==========
[05:55:46] ============== xe_live_guc_g2g_kunit_allmem ===============
[05:55:46] ========== [SKIPPED] xe_live_guc_g2g_kunit_allmem ==========
[05:55:46] =================== [SKIPPED] xe_guc_g2g ===================
[05:55:46] =================== xe_mocs (2 subtests) ===================
[05:55:46] ================ xe_live_mocs_kernel_kunit ================
[05:55:46] =========== [SKIPPED] xe_live_mocs_kernel_kunit ============
[05:55:46] ================ xe_live_mocs_reset_kunit =================
[05:55:46] ============ [SKIPPED] xe_live_mocs_reset_kunit ============
[05:55:46] ==================== [SKIPPED] xe_mocs =====================
[05:55:46] ================= xe_migrate (2 subtests) ==================
[05:55:46] ================= xe_migrate_sanity_kunit =================
[05:55:46] ============ [SKIPPED] xe_migrate_sanity_kunit =============
[05:55:46] ================== xe_validate_ccs_kunit ==================
[05:55:46] ============= [SKIPPED] xe_validate_ccs_kunit ==============
[05:55:46] =================== [SKIPPED] xe_migrate ===================
[05:55:46] ================== xe_dma_buf (1 subtest) ==================
[05:55:46] ==================== xe_dma_buf_kunit =====================
[05:55:46] ================ [SKIPPED] xe_dma_buf_kunit ================
[05:55:46] =================== [SKIPPED] xe_dma_buf ===================
[05:55:46] ================= xe_bo_shrink (1 subtest) =================
[05:55:46] =================== xe_bo_shrink_kunit ====================
[05:55:46] =============== [SKIPPED] xe_bo_shrink_kunit ===============
[05:55:46] ================== [SKIPPED] xe_bo_shrink ==================
[05:55:46] ==================== xe_bo (2 subtests) ====================
[05:55:46] ================== xe_ccs_migrate_kunit ===================
[05:55:46] ============== [SKIPPED] xe_ccs_migrate_kunit ==============
[05:55:46] ==================== xe_bo_evict_kunit ====================
[05:55:46] =============== [SKIPPED] xe_bo_evict_kunit ================
[05:55:46] ===================== [SKIPPED] xe_bo ======================
[05:55:46] ==================== args (13 subtests) ====================
[05:55:46] [PASSED] count_args_test
[05:55:46] [PASSED] call_args_example
[05:55:46] [PASSED] call_args_test
[05:55:46] [PASSED] drop_first_arg_example
[05:55:46] [PASSED] drop_first_arg_test
[05:55:46] [PASSED] first_arg_example
[05:55:46] [PASSED] first_arg_test
[05:55:46] [PASSED] last_arg_example
[05:55:46] [PASSED] last_arg_test
[05:55:46] [PASSED] pick_arg_example
[05:55:46] [PASSED] if_args_example
[05:55:46] [PASSED] if_args_test
[05:55:46] [PASSED] sep_comma_example
[05:55:46] ====================== [PASSED] args =======================
[05:55:46] =================== xe_pci (3 subtests) ====================
[05:55:46] ==================== check_graphics_ip ====================
[05:55:46] [PASSED] 12.00 Xe_LP
[05:55:46] [PASSED] 12.10 Xe_LP+
[05:55:46] [PASSED] 12.55 Xe_HPG
[05:55:46] [PASSED] 12.60 Xe_HPC
[05:55:46] [PASSED] 12.70 Xe_LPG
[05:55:46] [PASSED] 12.71 Xe_LPG
[05:55:46] [PASSED] 12.74 Xe_LPG+
[05:55:46] [PASSED] 20.01 Xe2_HPG
[05:55:46] [PASSED] 20.02 Xe2_HPG
[05:55:46] [PASSED] 20.04 Xe2_LPG
[05:55:46] [PASSED] 30.00 Xe3_LPG
[05:55:46] [PASSED] 30.01 Xe3_LPG
[05:55:46] [PASSED] 30.03 Xe3_LPG
[05:55:46] [PASSED] 30.04 Xe3_LPG
[05:55:46] [PASSED] 30.05 Xe3_LPG
[05:55:46] [PASSED] 35.10 Xe3p_LPG
[05:55:46] [PASSED] 35.11 Xe3p_XPC
[05:55:46] ================ [PASSED] check_graphics_ip ================
[05:55:46] ===================== check_media_ip ======================
[05:55:46] [PASSED] 12.00 Xe_M
[05:55:46] [PASSED] 12.55 Xe_HPM
[05:55:46] [PASSED] 13.00 Xe_LPM+
[05:55:46] [PASSED] 13.01 Xe2_HPM
[05:55:46] [PASSED] 20.00 Xe2_LPM
[05:55:46] [PASSED] 30.00 Xe3_LPM
[05:55:46] [PASSED] 30.02 Xe3_LPM
[05:55:46] [PASSED] 35.00 Xe3p_LPM
[05:55:46] [PASSED] 35.03 Xe3p_HPM
[05:55:46] ================= [PASSED] check_media_ip ==================
[05:55:46] =================== check_platform_desc ===================
[05:55:46] [PASSED] 0x9A60 (TIGERLAKE)
[05:55:46] [PASSED] 0x9A68 (TIGERLAKE)
[05:55:46] [PASSED] 0x9A70 (TIGERLAKE)
[05:55:46] [PASSED] 0x9A40 (TIGERLAKE)
[05:55:46] [PASSED] 0x9A49 (TIGERLAKE)
[05:55:46] [PASSED] 0x9A59 (TIGERLAKE)
[05:55:46] [PASSED] 0x9A78 (TIGERLAKE)
[05:55:46] [PASSED] 0x9AC0 (TIGERLAKE)
[05:55:46] [PASSED] 0x9AC9 (TIGERLAKE)
[05:55:46] [PASSED] 0x9AD9 (TIGERLAKE)
[05:55:46] [PASSED] 0x9AF8 (TIGERLAKE)
[05:55:46] [PASSED] 0x4C80 (ROCKETLAKE)
[05:55:46] [PASSED] 0x4C8A (ROCKETLAKE)
[05:55:46] [PASSED] 0x4C8B (ROCKETLAKE)
[05:55:46] [PASSED] 0x4C8C (ROCKETLAKE)
[05:55:46] [PASSED] 0x4C90 (ROCKETLAKE)
[05:55:46] [PASSED] 0x4C9A (ROCKETLAKE)
[05:55:46] [PASSED] 0x4680 (ALDERLAKE_S)
[05:55:46] [PASSED] 0x4682 (ALDERLAKE_S)
[05:55:46] [PASSED] 0x4688 (ALDERLAKE_S)
[05:55:46] [PASSED] 0x468A (ALDERLAKE_S)
[05:55:46] [PASSED] 0x468B (ALDERLAKE_S)
[05:55:46] [PASSED] 0x4690 (ALDERLAKE_S)
[05:55:46] [PASSED] 0x4692 (ALDERLAKE_S)
[05:55:46] [PASSED] 0x4693 (ALDERLAKE_S)
[05:55:46] [PASSED] 0x46A0 (ALDERLAKE_P)
[05:55:46] [PASSED] 0x46A1 (ALDERLAKE_P)
[05:55:46] [PASSED] 0x46A2 (ALDERLAKE_P)
[05:55:46] [PASSED] 0x46A3 (ALDERLAKE_P)
[05:55:46] [PASSED] 0x46A6 (ALDERLAKE_P)
[05:55:46] [PASSED] 0x46A8 (ALDERLAKE_P)
[05:55:46] [PASSED] 0x46AA (ALDERLAKE_P)
[05:55:46] [PASSED] 0x462A (ALDERLAKE_P)
[05:55:46] [PASSED] 0x4626 (ALDERLAKE_P)
[05:55:46] [PASSED] 0x4628 (ALDERLAKE_P)
[05:55:46] [PASSED] 0x46B0 (ALDERLAKE_P)
[05:55:46] [PASSED] 0x46B1 (ALDERLAKE_P)
[05:55:46] [PASSED] 0x46B2 (ALDERLAKE_P)
[05:55:46] [PASSED] 0x46B3 (ALDERLAKE_P)
[05:55:46] [PASSED] 0x46C0 (ALDERLAKE_P)
[05:55:46] [PASSED] 0x46C1 (ALDERLAKE_P)
[05:55:46] [PASSED] 0x46C2 (ALDERLAKE_P)
[05:55:46] [PASSED] 0x46C3 (ALDERLAKE_P)
[05:55:46] [PASSED] 0x46D0 (ALDERLAKE_N)
[05:55:46] [PASSED] 0x46D1 (ALDERLAKE_N)
[05:55:46] [PASSED] 0x46D2 (ALDERLAKE_N)
[05:55:46] [PASSED] 0x46D3 (ALDERLAKE_N)
[05:55:46] [PASSED] 0x46D4 (ALDERLAKE_N)
[05:55:46] [PASSED] 0xA721 (ALDERLAKE_P)
[05:55:46] [PASSED] 0xA7A1 (ALDERLAKE_P)
[05:55:46] [PASSED] 0xA7A9 (ALDERLAKE_P)
[05:55:46] [PASSED] 0xA7AC (ALDERLAKE_P)
[05:55:46] [PASSED] 0xA7AD (ALDERLAKE_P)
[05:55:46] [PASSED] 0xA720 (ALDERLAKE_P)
[05:55:46] [PASSED] 0xA7A0 (ALDERLAKE_P)
[05:55:46] [PASSED] 0xA7A8 (ALDERLAKE_P)
[05:55:46] [PASSED] 0xA7AA (ALDERLAKE_P)
[05:55:46] [PASSED] 0xA7AB (ALDERLAKE_P)
[05:55:46] [PASSED] 0xA780 (ALDERLAKE_S)
[05:55:46] [PASSED] 0xA781 (ALDERLAKE_S)
[05:55:46] [PASSED] 0xA782 (ALDERLAKE_S)
[05:55:46] [PASSED] 0xA783 (ALDERLAKE_S)
[05:55:46] [PASSED] 0xA788 (ALDERLAKE_S)
[05:55:46] [PASSED] 0xA789 (ALDERLAKE_S)
[05:55:46] [PASSED] 0xA78A (ALDERLAKE_S)
[05:55:46] [PASSED] 0xA78B (ALDERLAKE_S)
[05:55:46] [PASSED] 0x4905 (DG1)
[05:55:46] [PASSED] 0x4906 (DG1)
[05:55:46] [PASSED] 0x4907 (DG1)
[05:55:46] [PASSED] 0x4908 (DG1)
[05:55:46] [PASSED] 0x4909 (DG1)
[05:55:46] [PASSED] 0x56C0 (DG2)
[05:55:46] [PASSED] 0x56C2 (DG2)
[05:55:46] [PASSED] 0x56C1 (DG2)
[05:55:46] [PASSED] 0x7D51 (METEORLAKE)
[05:55:46] [PASSED] 0x7DD1 (METEORLAKE)
[05:55:46] [PASSED] 0x7D41 (METEORLAKE)
[05:55:46] [PASSED] 0x7D67 (METEORLAKE)
[05:55:46] [PASSED] 0xB640 (METEORLAKE)
[05:55:46] [PASSED] 0x56A0 (DG2)
[05:55:46] [PASSED] 0x56A1 (DG2)
[05:55:46] [PASSED] 0x56A2 (DG2)
[05:55:46] [PASSED] 0x56BE (DG2)
[05:55:46] [PASSED] 0x56BF (DG2)
[05:55:46] [PASSED] 0x5690 (DG2)
[05:55:46] [PASSED] 0x5691 (DG2)
[05:55:46] [PASSED] 0x5692 (DG2)
[05:55:46] [PASSED] 0x56A5 (DG2)
[05:55:46] [PASSED] 0x56A6 (DG2)
[05:55:46] [PASSED] 0x56B0 (DG2)
[05:55:46] [PASSED] 0x56B1 (DG2)
[05:55:46] [PASSED] 0x56BA (DG2)
[05:55:46] [PASSED] 0x56BB (DG2)
[05:55:46] [PASSED] 0x56BC (DG2)
[05:55:46] [PASSED] 0x56BD (DG2)
[05:55:46] [PASSED] 0x5693 (DG2)
[05:55:46] [PASSED] 0x5694 (DG2)
[05:55:46] [PASSED] 0x5695 (DG2)
[05:55:46] [PASSED] 0x56A3 (DG2)
[05:55:46] [PASSED] 0x56A4 (DG2)
[05:55:46] [PASSED] 0x56B2 (DG2)
[05:55:46] [PASSED] 0x56B3 (DG2)
[05:55:46] [PASSED] 0x5696 (DG2)
[05:55:46] [PASSED] 0x5697 (DG2)
[05:55:46] [PASSED] 0xB69 (PVC)
[05:55:46] [PASSED] 0xB6E (PVC)
[05:55:46] [PASSED] 0xBD4 (PVC)
[05:55:46] [PASSED] 0xBD5 (PVC)
[05:55:46] [PASSED] 0xBD6 (PVC)
[05:55:46] [PASSED] 0xBD7 (PVC)
[05:55:46] [PASSED] 0xBD8 (PVC)
[05:55:46] [PASSED] 0xBD9 (PVC)
[05:55:46] [PASSED] 0xBDA (PVC)
[05:55:46] [PASSED] 0xBDB (PVC)
[05:55:46] [PASSED] 0xBE0 (PVC)
[05:55:46] [PASSED] 0xBE1 (PVC)
[05:55:46] [PASSED] 0xBE5 (PVC)
[05:55:46] [PASSED] 0x7D40 (METEORLAKE)
[05:55:46] [PASSED] 0x7D45 (METEORLAKE)
[05:55:46] [PASSED] 0x7D55 (METEORLAKE)
[05:55:46] [PASSED] 0x7D60 (METEORLAKE)
[05:55:46] [PASSED] 0x7DD5 (METEORLAKE)
[05:55:46] [PASSED] 0x6420 (LUNARLAKE)
[05:55:46] [PASSED] 0x64A0 (LUNARLAKE)
[05:55:46] [PASSED] 0x64B0 (LUNARLAKE)
[05:55:46] [PASSED] 0xE202 (BATTLEMAGE)
[05:55:46] [PASSED] 0xE209 (BATTLEMAGE)
[05:55:46] [PASSED] 0xE20B (BATTLEMAGE)
[05:55:46] [PASSED] 0xE20C (BATTLEMAGE)
[05:55:46] [PASSED] 0xE20D (BATTLEMAGE)
[05:55:46] [PASSED] 0xE210 (BATTLEMAGE)
[05:55:46] [PASSED] 0xE211 (BATTLEMAGE)
[05:55:46] [PASSED] 0xE212 (BATTLEMAGE)
[05:55:46] [PASSED] 0xE216 (BATTLEMAGE)
[05:55:46] [PASSED] 0xE220 (BATTLEMAGE)
[05:55:46] [PASSED] 0xE221 (BATTLEMAGE)
[05:55:46] [PASSED] 0xE222 (BATTLEMAGE)
[05:55:46] [PASSED] 0xE223 (BATTLEMAGE)
[05:55:46] [PASSED] 0xB080 (PANTHERLAKE)
[05:55:46] [PASSED] 0xB081 (PANTHERLAKE)
[05:55:46] [PASSED] 0xB082 (PANTHERLAKE)
[05:55:46] [PASSED] 0xB083 (PANTHERLAKE)
[05:55:46] [PASSED] 0xB084 (PANTHERLAKE)
[05:55:46] [PASSED] 0xB085 (PANTHERLAKE)
[05:55:46] [PASSED] 0xB086 (PANTHERLAKE)
[05:55:46] [PASSED] 0xB087 (PANTHERLAKE)
[05:55:46] [PASSED] 0xB08F (PANTHERLAKE)
[05:55:46] [PASSED] 0xB090 (PANTHERLAKE)
[05:55:46] [PASSED] 0xB0A0 (PANTHERLAKE)
[05:55:46] [PASSED] 0xB0B0 (PANTHERLAKE)
[05:55:46] [PASSED] 0xFD80 (PANTHERLAKE)
[05:55:46] [PASSED] 0xFD81 (PANTHERLAKE)
[05:55:46] [PASSED] 0xD740 (NOVALAKE_S)
[05:55:46] [PASSED] 0xD741 (NOVALAKE_S)
[05:55:46] [PASSED] 0xD742 (NOVALAKE_S)
[05:55:46] [PASSED] 0xD743 (NOVALAKE_S)
[05:55:46] [PASSED] 0xD744 (NOVALAKE_S)
[05:55:46] [PASSED] 0xD745 (NOVALAKE_S)
[05:55:46] [PASSED] 0x674C (CRESCENTISLAND)
[05:55:46] [PASSED] 0xD750 (NOVALAKE_P)
[05:55:46] [PASSED] 0xD751 (NOVALAKE_P)
[05:55:46] [PASSED] 0xD752 (NOVALAKE_P)
[05:55:46] [PASSED] 0xD753 (NOVALAKE_P)
[05:55:46] [PASSED] 0xD754 (NOVALAKE_P)
[05:55:46] [PASSED] 0xD755 (NOVALAKE_P)
[05:55:46] [PASSED] 0xD756 (NOVALAKE_P)
[05:55:46] [PASSED] 0xD757 (NOVALAKE_P)
[05:55:46] [PASSED] 0xD75F (NOVALAKE_P)
[05:55:46] =============== [PASSED] check_platform_desc ===============
[05:55:46] ===================== [PASSED] xe_pci ======================
[05:55:46] =================== xe_rtp (2 subtests) ====================
[05:55:46] =============== xe_rtp_process_to_sr_tests ================
[05:55:46] [PASSED] coalesce-same-reg
[05:55:46] [PASSED] no-match-no-add
[05:55:46] [PASSED] match-or
[05:55:46] [PASSED] match-or-xfail
[05:55:46] [PASSED] no-match-no-add-multiple-rules
[05:55:46] [PASSED] two-regs-two-entries
[05:55:46] [PASSED] clr-one-set-other
[05:55:46] [PASSED] set-field
[05:55:46] [PASSED] conflict-duplicate
stty: 'standard input': Inappropriate ioctl for device
[05:55:46] [PASSED] conflict-not-disjoint
[05:55:46] [PASSED] conflict-reg-type
[05:55:46] =========== [PASSED] xe_rtp_process_to_sr_tests ============
[05:55:46] ================== xe_rtp_process_tests ===================
[05:55:46] [PASSED] active1
[05:55:46] [PASSED] active2
[05:55:46] [PASSED] active-inactive
[05:55:46] [PASSED] inactive-active
[05:55:46] [PASSED] inactive-1st_or_active-inactive
[05:55:46] [PASSED] inactive-2nd_or_active-inactive
[05:55:46] [PASSED] inactive-last_or_active-inactive
[05:55:46] [PASSED] inactive-no_or_active-inactive
[05:55:46] ============== [PASSED] xe_rtp_process_tests ===============
[05:55:46] ===================== [PASSED] xe_rtp ======================
[05:55:46] ==================== xe_wa (1 subtest) =====================
[05:55:46] ======================== xe_wa_gt =========================
[05:55:46] [PASSED] TIGERLAKE B0
[05:55:46] [PASSED] DG1 A0
[05:55:46] [PASSED] DG1 B0
[05:55:46] [PASSED] ALDERLAKE_S A0
[05:55:46] [PASSED] ALDERLAKE_S B0
[05:55:46] [PASSED] ALDERLAKE_S C0
[05:55:46] [PASSED] ALDERLAKE_S D0
[05:55:46] [PASSED] ALDERLAKE_P A0
[05:55:46] [PASSED] ALDERLAKE_P B0
[05:55:46] [PASSED] ALDERLAKE_P C0
[05:55:46] [PASSED] ALDERLAKE_S RPLS D0
[05:55:46] [PASSED] ALDERLAKE_P RPLU E0
[05:55:46] [PASSED] DG2 G10 C0
[05:55:46] [PASSED] DG2 G11 B1
[05:55:46] [PASSED] DG2 G12 A1
[05:55:46] [PASSED] METEORLAKE 12.70(Xe_LPG) A0 13.00(Xe_LPM+) A0
[05:55:46] [PASSED] METEORLAKE 12.71(Xe_LPG) A0 13.00(Xe_LPM+) A0
[05:55:46] [PASSED] METEORLAKE 12.74(Xe_LPG+) A0 13.00(Xe_LPM+) A0
[05:55:46] [PASSED] LUNARLAKE 20.04(Xe2_LPG) A0 20.00(Xe2_LPM) A0
[05:55:46] [PASSED] LUNARLAKE 20.04(Xe2_LPG) B0 20.00(Xe2_LPM) A0
[05:55:46] [PASSED] BATTLEMAGE 20.01(Xe2_HPG) A0 13.01(Xe2_HPM) A1
[05:55:46] [PASSED] PANTHERLAKE 30.00(Xe3_LPG) A0 30.00(Xe3_LPM) A0
[05:55:46] ==================== [PASSED] xe_wa_gt =====================
[05:55:46] ====================== [PASSED] xe_wa ======================
[05:55:46] ============================================================
[05:55:46] Testing complete. Ran 597 tests: passed: 579, skipped: 18
[05:55:46] Elapsed time: 35.684s total, 4.245s configuring, 30.821s building, 0.604s running
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/tests/.kunitconfig
[05:55:46] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[05:55:47] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48
[05:56:11] Starting KUnit Kernel (1/1)...
[05:56:11] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[05:56:11] ============ drm_test_pick_cmdline (2 subtests) ============
[05:56:11] [PASSED] drm_test_pick_cmdline_res_1920_1080_60
[05:56:11] =============== drm_test_pick_cmdline_named ===============
[05:56:11] [PASSED] NTSC
[05:56:11] [PASSED] NTSC-J
[05:56:11] [PASSED] PAL
[05:56:11] [PASSED] PAL-M
[05:56:11] =========== [PASSED] drm_test_pick_cmdline_named ===========
[05:56:11] ============== [PASSED] drm_test_pick_cmdline ==============
[05:56:11] == drm_test_atomic_get_connector_for_encoder (1 subtest) ===
[05:56:11] [PASSED] drm_test_drm_atomic_get_connector_for_encoder
[05:56:11] ==== [PASSED] drm_test_atomic_get_connector_for_encoder ====
[05:56:11] =========== drm_validate_clone_mode (2 subtests) ===========
[05:56:11] ============== drm_test_check_in_clone_mode ===============
[05:56:11] [PASSED] in_clone_mode
[05:56:11] [PASSED] not_in_clone_mode
[05:56:11] ========== [PASSED] drm_test_check_in_clone_mode ===========
[05:56:11] =============== drm_test_check_valid_clones ===============
[05:56:11] [PASSED] not_in_clone_mode
[05:56:11] [PASSED] valid_clone
[05:56:11] [PASSED] invalid_clone
[05:56:11] =========== [PASSED] drm_test_check_valid_clones ===========
[05:56:11] ============= [PASSED] drm_validate_clone_mode =============
[05:56:11] ============= drm_validate_modeset (1 subtest) =============
[05:56:11] [PASSED] drm_test_check_connector_changed_modeset
[05:56:11] ============== [PASSED] drm_validate_modeset ===============
[05:56:11] ====== drm_test_bridge_get_current_state (2 subtests) ======
[05:56:11] [PASSED] drm_test_drm_bridge_get_current_state_atomic
[05:56:11] [PASSED] drm_test_drm_bridge_get_current_state_legacy
[05:56:11] ======== [PASSED] drm_test_bridge_get_current_state ========
[05:56:11] ====== drm_test_bridge_helper_reset_crtc (3 subtests) ======
[05:56:11] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic
[05:56:11] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic_disabled
[05:56:11] [PASSED] drm_test_drm_bridge_helper_reset_crtc_legacy
[05:56:11] ======== [PASSED] drm_test_bridge_helper_reset_crtc ========
[05:56:11] ============== drm_bridge_alloc (2 subtests) ===============
[05:56:11] [PASSED] drm_test_drm_bridge_alloc_basic
[05:56:11] [PASSED] drm_test_drm_bridge_alloc_get_put
[05:56:11] ================ [PASSED] drm_bridge_alloc =================
[05:56:11] ============= drm_cmdline_parser (40 subtests) =============
[05:56:11] [PASSED] drm_test_cmdline_force_d_only
[05:56:11] [PASSED] drm_test_cmdline_force_D_only_dvi
[05:56:11] [PASSED] drm_test_cmdline_force_D_only_hdmi
[05:56:11] [PASSED] drm_test_cmdline_force_D_only_not_digital
[05:56:11] [PASSED] drm_test_cmdline_force_e_only
[05:56:11] [PASSED] drm_test_cmdline_res
[05:56:11] [PASSED] drm_test_cmdline_res_vesa
[05:56:11] [PASSED] drm_test_cmdline_res_vesa_rblank
[05:56:11] [PASSED] drm_test_cmdline_res_rblank
[05:56:11] [PASSED] drm_test_cmdline_res_bpp
[05:56:11] [PASSED] drm_test_cmdline_res_refresh
[05:56:11] [PASSED] drm_test_cmdline_res_bpp_refresh
[05:56:11] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced
[05:56:11] [PASSED] drm_test_cmdline_res_bpp_refresh_margins
[05:56:11] [PASSED] drm_test_cmdline_res_bpp_refresh_force_off
[05:56:11] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on
[05:56:11] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_analog
[05:56:11] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_digital
[05:56:11] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced_margins_force_on
[05:56:11] [PASSED] drm_test_cmdline_res_margins_force_on
[05:56:11] [PASSED] drm_test_cmdline_res_vesa_margins
[05:56:11] [PASSED] drm_test_cmdline_name
[05:56:11] [PASSED] drm_test_cmdline_name_bpp
[05:56:11] [PASSED] drm_test_cmdline_name_option
[05:56:11] [PASSED] drm_test_cmdline_name_bpp_option
[05:56:11] [PASSED] drm_test_cmdline_rotate_0
[05:56:11] [PASSED] drm_test_cmdline_rotate_90
[05:56:11] [PASSED] drm_test_cmdline_rotate_180
[05:56:11] [PASSED] drm_test_cmdline_rotate_270
[05:56:11] [PASSED] drm_test_cmdline_hmirror
[05:56:11] [PASSED] drm_test_cmdline_vmirror
[05:56:11] [PASSED] drm_test_cmdline_margin_options
[05:56:11] [PASSED] drm_test_cmdline_multiple_options
[05:56:11] [PASSED] drm_test_cmdline_bpp_extra_and_option
[05:56:11] [PASSED] drm_test_cmdline_extra_and_option
[05:56:11] [PASSED] drm_test_cmdline_freestanding_options
[05:56:11] [PASSED] drm_test_cmdline_freestanding_force_e_and_options
[05:56:11] [PASSED] drm_test_cmdline_panel_orientation
[05:56:11] ================ drm_test_cmdline_invalid =================
[05:56:11] [PASSED] margin_only
[05:56:11] [PASSED] interlace_only
[05:56:11] [PASSED] res_missing_x
[05:56:11] [PASSED] res_missing_y
[05:56:11] [PASSED] res_bad_y
[05:56:11] [PASSED] res_missing_y_bpp
[05:56:11] [PASSED] res_bad_bpp
[05:56:11] [PASSED] res_bad_refresh
[05:56:11] [PASSED] res_bpp_refresh_force_on_off
[05:56:11] [PASSED] res_invalid_mode
[05:56:11] [PASSED] res_bpp_wrong_place_mode
[05:56:11] [PASSED] name_bpp_refresh
[05:56:11] [PASSED] name_refresh
[05:56:11] [PASSED] name_refresh_wrong_mode
[05:56:11] [PASSED] name_refresh_invalid_mode
[05:56:11] [PASSED] rotate_multiple
[05:56:11] [PASSED] rotate_invalid_val
[05:56:11] [PASSED] rotate_truncated
[05:56:11] [PASSED] invalid_option
[05:56:11] [PASSED] invalid_tv_option
[05:56:11] [PASSED] truncated_tv_option
[05:56:11] ============ [PASSED] drm_test_cmdline_invalid =============
[05:56:11] =============== drm_test_cmdline_tv_options ===============
[05:56:11] [PASSED] NTSC
[05:56:11] [PASSED] NTSC_443
[05:56:11] [PASSED] NTSC_J
[05:56:11] [PASSED] PAL
[05:56:11] [PASSED] PAL_M
[05:56:11] [PASSED] PAL_N
[05:56:11] [PASSED] SECAM
[05:56:11] [PASSED] MONO_525
[05:56:11] [PASSED] MONO_625
[05:56:11] =========== [PASSED] drm_test_cmdline_tv_options ===========
[05:56:11] =============== [PASSED] drm_cmdline_parser ================
[05:56:11] ========== drmm_connector_hdmi_init (20 subtests) ==========
[05:56:11] [PASSED] drm_test_connector_hdmi_init_valid
[05:56:11] [PASSED] drm_test_connector_hdmi_init_bpc_8
[05:56:11] [PASSED] drm_test_connector_hdmi_init_bpc_10
[05:56:11] [PASSED] drm_test_connector_hdmi_init_bpc_12
[05:56:11] [PASSED] drm_test_connector_hdmi_init_bpc_invalid
[05:56:11] [PASSED] drm_test_connector_hdmi_init_bpc_null
[05:56:11] [PASSED] drm_test_connector_hdmi_init_formats_empty
[05:56:11] [PASSED] drm_test_connector_hdmi_init_formats_no_rgb
[05:56:11] === drm_test_connector_hdmi_init_formats_yuv420_allowed ===
[05:56:11] [PASSED] supported_formats=0x9 yuv420_allowed=1
[05:56:11] [PASSED] supported_formats=0x9 yuv420_allowed=0
[05:56:11] [PASSED] supported_formats=0x5 yuv420_allowed=1
[05:56:11] [PASSED] supported_formats=0x5 yuv420_allowed=0
[05:56:11] === [PASSED] drm_test_connector_hdmi_init_formats_yuv420_allowed ===
[05:56:11] [PASSED] drm_test_connector_hdmi_init_null_ddc
[05:56:11] [PASSED] drm_test_connector_hdmi_init_null_product
[05:56:11] [PASSED] drm_test_connector_hdmi_init_null_vendor
[05:56:11] [PASSED] drm_test_connector_hdmi_init_product_length_exact
[05:56:11] [PASSED] drm_test_connector_hdmi_init_product_length_too_long
[05:56:11] [PASSED] drm_test_connector_hdmi_init_product_valid
[05:56:11] [PASSED] drm_test_connector_hdmi_init_vendor_length_exact
[05:56:11] [PASSED] drm_test_connector_hdmi_init_vendor_length_too_long
[05:56:11] [PASSED] drm_test_connector_hdmi_init_vendor_valid
[05:56:11] ========= drm_test_connector_hdmi_init_type_valid =========
[05:56:11] [PASSED] HDMI-A
[05:56:11] [PASSED] HDMI-B
[05:56:11] ===== [PASSED] drm_test_connector_hdmi_init_type_valid =====
[05:56:11] ======== drm_test_connector_hdmi_init_type_invalid ========
[05:56:11] [PASSED] Unknown
[05:56:11] [PASSED] VGA
[05:56:11] [PASSED] DVI-I
[05:56:11] [PASSED] DVI-D
[05:56:11] [PASSED] DVI-A
[05:56:11] [PASSED] Composite
[05:56:11] [PASSED] SVIDEO
[05:56:11] [PASSED] LVDS
[05:56:11] [PASSED] Component
[05:56:11] [PASSED] DIN
[05:56:11] [PASSED] DP
[05:56:11] [PASSED] TV
[05:56:11] [PASSED] eDP
[05:56:11] [PASSED] Virtual
[05:56:11] [PASSED] DSI
[05:56:11] [PASSED] DPI
[05:56:11] [PASSED] Writeback
[05:56:11] [PASSED] SPI
[05:56:11] [PASSED] USB
[05:56:11] ==== [PASSED] drm_test_connector_hdmi_init_type_invalid ====
[05:56:11] ============ [PASSED] drmm_connector_hdmi_init =============
[05:56:11] ============= drmm_connector_init (3 subtests) =============
[05:56:11] [PASSED] drm_test_drmm_connector_init
[05:56:11] [PASSED] drm_test_drmm_connector_init_null_ddc
[05:56:11] ========= drm_test_drmm_connector_init_type_valid =========
[05:56:11] [PASSED] Unknown
[05:56:11] [PASSED] VGA
[05:56:11] [PASSED] DVI-I
[05:56:11] [PASSED] DVI-D
[05:56:11] [PASSED] DVI-A
[05:56:11] [PASSED] Composite
[05:56:11] [PASSED] SVIDEO
[05:56:11] [PASSED] LVDS
[05:56:11] [PASSED] Component
[05:56:11] [PASSED] DIN
[05:56:11] [PASSED] DP
[05:56:11] [PASSED] HDMI-A
[05:56:11] [PASSED] HDMI-B
[05:56:11] [PASSED] TV
[05:56:11] [PASSED] eDP
[05:56:11] [PASSED] Virtual
[05:56:11] [PASSED] DSI
[05:56:11] [PASSED] DPI
[05:56:11] [PASSED] Writeback
[05:56:11] [PASSED] SPI
[05:56:11] [PASSED] USB
[05:56:11] ===== [PASSED] drm_test_drmm_connector_init_type_valid =====
[05:56:11] =============== [PASSED] drmm_connector_init ===============
[05:56:11] ========= drm_connector_dynamic_init (6 subtests) ==========
[05:56:11] [PASSED] drm_test_drm_connector_dynamic_init
[05:56:11] [PASSED] drm_test_drm_connector_dynamic_init_null_ddc
[05:56:11] [PASSED] drm_test_drm_connector_dynamic_init_not_added
[05:56:11] [PASSED] drm_test_drm_connector_dynamic_init_properties
[05:56:11] ===== drm_test_drm_connector_dynamic_init_type_valid ======
[05:56:11] [PASSED] Unknown
[05:56:11] [PASSED] VGA
[05:56:11] [PASSED] DVI-I
[05:56:11] [PASSED] DVI-D
[05:56:11] [PASSED] DVI-A
[05:56:11] [PASSED] Composite
[05:56:11] [PASSED] SVIDEO
[05:56:11] [PASSED] LVDS
[05:56:11] [PASSED] Component
[05:56:11] [PASSED] DIN
[05:56:11] [PASSED] DP
[05:56:11] [PASSED] HDMI-A
[05:56:11] [PASSED] HDMI-B
[05:56:11] [PASSED] TV
[05:56:11] [PASSED] eDP
[05:56:11] [PASSED] Virtual
[05:56:11] [PASSED] DSI
[05:56:11] [PASSED] DPI
[05:56:11] [PASSED] Writeback
[05:56:11] [PASSED] SPI
[05:56:11] [PASSED] USB
[05:56:11] = [PASSED] drm_test_drm_connector_dynamic_init_type_valid ==
[05:56:11] ======== drm_test_drm_connector_dynamic_init_name =========
[05:56:11] [PASSED] Unknown
[05:56:11] [PASSED] VGA
[05:56:11] [PASSED] DVI-I
[05:56:11] [PASSED] DVI-D
[05:56:11] [PASSED] DVI-A
[05:56:11] [PASSED] Composite
[05:56:11] [PASSED] SVIDEO
[05:56:11] [PASSED] LVDS
[05:56:11] [PASSED] Component
[05:56:11] [PASSED] DIN
[05:56:11] [PASSED] DP
[05:56:11] [PASSED] HDMI-A
[05:56:11] [PASSED] HDMI-B
[05:56:11] [PASSED] TV
[05:56:11] [PASSED] eDP
[05:56:11] [PASSED] Virtual
[05:56:11] [PASSED] DSI
[05:56:11] [PASSED] DPI
[05:56:11] [PASSED] Writeback
[05:56:11] [PASSED] SPI
[05:56:11] [PASSED] USB
[05:56:11] ==== [PASSED] drm_test_drm_connector_dynamic_init_name =====
[05:56:11] =========== [PASSED] drm_connector_dynamic_init ============
[05:56:11] ==== drm_connector_dynamic_register_early (4 subtests) =====
[05:56:11] [PASSED] drm_test_drm_connector_dynamic_register_early_on_list
[05:56:11] [PASSED] drm_test_drm_connector_dynamic_register_early_defer
[05:56:11] [PASSED] drm_test_drm_connector_dynamic_register_early_no_init
[05:56:11] [PASSED] drm_test_drm_connector_dynamic_register_early_no_mode_object
[05:56:11] ====== [PASSED] drm_connector_dynamic_register_early =======
[05:56:11] ======= drm_connector_dynamic_register (7 subtests) ========
[05:56:11] [PASSED] drm_test_drm_connector_dynamic_register_on_list
[05:56:11] [PASSED] drm_test_drm_connector_dynamic_register_no_defer
[05:56:11] [PASSED] drm_test_drm_connector_dynamic_register_no_init
[05:56:11] [PASSED] drm_test_drm_connector_dynamic_register_mode_object
[05:56:11] [PASSED] drm_test_drm_connector_dynamic_register_sysfs
[05:56:11] [PASSED] drm_test_drm_connector_dynamic_register_sysfs_name
[05:56:11] [PASSED] drm_test_drm_connector_dynamic_register_debugfs
[05:56:11] ========= [PASSED] drm_connector_dynamic_register ==========
[05:56:11] = drm_connector_attach_broadcast_rgb_property (2 subtests) =
[05:56:11] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property
[05:56:11] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property_hdmi_connector
[05:56:11] === [PASSED] drm_connector_attach_broadcast_rgb_property ===
[05:56:11] ========== drm_get_tv_mode_from_name (2 subtests) ==========
[05:56:11] ========== drm_test_get_tv_mode_from_name_valid ===========
[05:56:11] [PASSED] NTSC
[05:56:11] [PASSED] NTSC-443
[05:56:11] [PASSED] NTSC-J
[05:56:11] [PASSED] PAL
[05:56:11] [PASSED] PAL-M
[05:56:11] [PASSED] PAL-N
[05:56:11] [PASSED] SECAM
[05:56:11] [PASSED] Mono
[05:56:11] ====== [PASSED] drm_test_get_tv_mode_from_name_valid =======
[05:56:11] [PASSED] drm_test_get_tv_mode_from_name_truncated
[05:56:11] ============ [PASSED] drm_get_tv_mode_from_name ============
[05:56:11] = drm_test_connector_hdmi_compute_mode_clock (12 subtests) =
[05:56:11] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb
[05:56:11] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc
[05:56:11] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc_vic_1
[05:56:11] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc
[05:56:11] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc_vic_1
[05:56:11] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_double
[05:56:11] = drm_test_connector_hdmi_compute_mode_clock_yuv420_valid =
[05:56:11] [PASSED] VIC 96
[05:56:11] [PASSED] VIC 97
[05:56:11] [PASSED] VIC 101
[05:56:11] [PASSED] VIC 102
[05:56:11] [PASSED] VIC 106
[05:56:11] [PASSED] VIC 107
[05:56:11] === [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_valid ===
[05:56:11] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_10_bpc
[05:56:11] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_12_bpc
[05:56:11] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_8_bpc
[05:56:11] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_10_bpc
[05:56:11] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_12_bpc
[05:56:11] === [PASSED] drm_test_connector_hdmi_compute_mode_clock ====
[05:56:11] == drm_hdmi_connector_get_broadcast_rgb_name (2 subtests) ==
[05:56:11] === drm_test_drm_hdmi_connector_get_broadcast_rgb_name ====
[05:56:11] [PASSED] Automatic
[05:56:11] [PASSED] Full
[05:56:11] [PASSED] Limited 16:235
[05:56:11] === [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name ===
[05:56:11] [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name_invalid
[05:56:11] ==== [PASSED] drm_hdmi_connector_get_broadcast_rgb_name ====
[05:56:11] == drm_hdmi_connector_get_output_format_name (2 subtests) ==
[05:56:11] === drm_test_drm_hdmi_connector_get_output_format_name ====
[05:56:11] [PASSED] RGB
[05:56:11] [PASSED] YUV 4:2:0
[05:56:11] [PASSED] YUV 4:2:2
[05:56:11] [PASSED] YUV 4:4:4
[05:56:11] === [PASSED] drm_test_drm_hdmi_connector_get_output_format_name ===
[05:56:11] [PASSED] drm_test_drm_hdmi_connector_get_output_format_name_invalid
[05:56:11] ==== [PASSED] drm_hdmi_connector_get_output_format_name ====
[05:56:11] ============= drm_damage_helper (21 subtests) ==============
[05:56:11] [PASSED] drm_test_damage_iter_no_damage
[05:56:11] [PASSED] drm_test_damage_iter_no_damage_fractional_src
[05:56:11] [PASSED] drm_test_damage_iter_no_damage_src_moved
[05:56:11] [PASSED] drm_test_damage_iter_no_damage_fractional_src_moved
[05:56:11] [PASSED] drm_test_damage_iter_no_damage_not_visible
[05:56:11] [PASSED] drm_test_damage_iter_no_damage_no_crtc
[05:56:11] [PASSED] drm_test_damage_iter_no_damage_no_fb
[05:56:11] [PASSED] drm_test_damage_iter_simple_damage
[05:56:11] [PASSED] drm_test_damage_iter_single_damage
[05:56:11] [PASSED] drm_test_damage_iter_single_damage_intersect_src
[05:56:11] [PASSED] drm_test_damage_iter_single_damage_outside_src
[05:56:11] [PASSED] drm_test_damage_iter_single_damage_fractional_src
[05:56:11] [PASSED] drm_test_damage_iter_single_damage_intersect_fractional_src
[05:56:11] [PASSED] drm_test_damage_iter_single_damage_outside_fractional_src
[05:56:11] [PASSED] drm_test_damage_iter_single_damage_src_moved
[05:56:11] [PASSED] drm_test_damage_iter_single_damage_fractional_src_moved
[05:56:11] [PASSED] drm_test_damage_iter_damage
[05:56:11] [PASSED] drm_test_damage_iter_damage_one_intersect
[05:56:11] [PASSED] drm_test_damage_iter_damage_one_outside
[05:56:11] [PASSED] drm_test_damage_iter_damage_src_moved
[05:56:11] [PASSED] drm_test_damage_iter_damage_not_visible
[05:56:11] ================ [PASSED] drm_damage_helper ================
[05:56:11] ============== drm_dp_mst_helper (3 subtests) ==============
[05:56:11] ============== drm_test_dp_mst_calc_pbn_mode ==============
[05:56:11] [PASSED] Clock 154000 BPP 30 DSC disabled
[05:56:11] [PASSED] Clock 234000 BPP 30 DSC disabled
[05:56:11] [PASSED] Clock 297000 BPP 24 DSC disabled
[05:56:11] [PASSED] Clock 332880 BPP 24 DSC enabled
[05:56:11] [PASSED] Clock 324540 BPP 24 DSC enabled
[05:56:11] ========== [PASSED] drm_test_dp_mst_calc_pbn_mode ==========
[05:56:11] ============== drm_test_dp_mst_calc_pbn_div ===============
[05:56:11] [PASSED] Link rate 2000000 lane count 4
[05:56:11] [PASSED] Link rate 2000000 lane count 2
[05:56:11] [PASSED] Link rate 2000000 lane count 1
[05:56:11] [PASSED] Link rate 1350000 lane count 4
[05:56:11] [PASSED] Link rate 1350000 lane count 2
[05:56:11] [PASSED] Link rate 1350000 lane count 1
[05:56:11] [PASSED] Link rate 1000000 lane count 4
[05:56:11] [PASSED] Link rate 1000000 lane count 2
[05:56:11] [PASSED] Link rate 1000000 lane count 1
[05:56:11] [PASSED] Link rate 810000 lane count 4
[05:56:11] [PASSED] Link rate 810000 lane count 2
[05:56:11] [PASSED] Link rate 810000 lane count 1
[05:56:11] [PASSED] Link rate 540000 lane count 4
[05:56:11] [PASSED] Link rate 540000 lane count 2
[05:56:11] [PASSED] Link rate 540000 lane count 1
[05:56:11] [PASSED] Link rate 270000 lane count 4
[05:56:11] [PASSED] Link rate 270000 lane count 2
[05:56:11] [PASSED] Link rate 270000 lane count 1
[05:56:11] [PASSED] Link rate 162000 lane count 4
[05:56:11] [PASSED] Link rate 162000 lane count 2
[05:56:11] [PASSED] Link rate 162000 lane count 1
[05:56:11] ========== [PASSED] drm_test_dp_mst_calc_pbn_div ===========
[05:56:11] ========= drm_test_dp_mst_sideband_msg_req_decode =========
[05:56:11] [PASSED] DP_ENUM_PATH_RESOURCES with port number
[05:56:11] [PASSED] DP_POWER_UP_PHY with port number
[05:56:11] [PASSED] DP_POWER_DOWN_PHY with port number
[05:56:11] [PASSED] DP_ALLOCATE_PAYLOAD with SDP stream sinks
[05:56:11] [PASSED] DP_ALLOCATE_PAYLOAD with port number
[05:56:11] [PASSED] DP_ALLOCATE_PAYLOAD with VCPI
[05:56:11] [PASSED] DP_ALLOCATE_PAYLOAD with PBN
[05:56:11] [PASSED] DP_QUERY_PAYLOAD with port number
[05:56:11] [PASSED] DP_QUERY_PAYLOAD with VCPI
[05:56:11] [PASSED] DP_REMOTE_DPCD_READ with port number
[05:56:11] [PASSED] DP_REMOTE_DPCD_READ with DPCD address
[05:56:11] [PASSED] DP_REMOTE_DPCD_READ with max number of bytes
[05:56:11] [PASSED] DP_REMOTE_DPCD_WRITE with port number
[05:56:11] [PASSED] DP_REMOTE_DPCD_WRITE with DPCD address
[05:56:11] [PASSED] DP_REMOTE_DPCD_WRITE with data array
[05:56:11] [PASSED] DP_REMOTE_I2C_READ with port number
[05:56:11] [PASSED] DP_REMOTE_I2C_READ with I2C device ID
[05:56:11] [PASSED] DP_REMOTE_I2C_READ with transactions array
[05:56:11] [PASSED] DP_REMOTE_I2C_WRITE with port number
[05:56:11] [PASSED] DP_REMOTE_I2C_WRITE with I2C device ID
[05:56:11] [PASSED] DP_REMOTE_I2C_WRITE with data array
[05:56:11] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream ID
[05:56:11] [PASSED] DP_QUERY_STREAM_ENC_STATUS with client ID
[05:56:11] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream event
[05:56:11] [PASSED] DP_QUERY_STREAM_ENC_STATUS with valid stream event
[05:56:11] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream behavior
[05:56:11] [PASSED] DP_QUERY_STREAM_ENC_STATUS with a valid stream behavior
[05:56:11] ===== [PASSED] drm_test_dp_mst_sideband_msg_req_decode =====
[05:56:11] ================ [PASSED] drm_dp_mst_helper ================
[05:56:11] ================== drm_exec (7 subtests) ===================
[05:56:11] [PASSED] sanitycheck
[05:56:11] [PASSED] test_lock
[05:56:11] [PASSED] test_lock_unlock
[05:56:11] [PASSED] test_duplicates
[05:56:11] [PASSED] test_prepare
[05:56:11] [PASSED] test_prepare_array
[05:56:11] [PASSED] test_multiple_loops
[05:56:11] ==================== [PASSED] drm_exec =====================
[05:56:11] =========== drm_format_helper_test (17 subtests) ===========
[05:56:11] ============== drm_test_fb_xrgb8888_to_gray8 ==============
[05:56:11] [PASSED] single_pixel_source_buffer
[05:56:11] [PASSED] single_pixel_clip_rectangle
[05:56:11] [PASSED] well_known_colors
[05:56:11] [PASSED] destination_pitch
[05:56:11] ========== [PASSED] drm_test_fb_xrgb8888_to_gray8 ==========
[05:56:11] ============= drm_test_fb_xrgb8888_to_rgb332 ==============
[05:56:11] [PASSED] single_pixel_source_buffer
[05:56:11] [PASSED] single_pixel_clip_rectangle
[05:56:11] [PASSED] well_known_colors
[05:56:11] [PASSED] destination_pitch
[05:56:11] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb332 ==========
[05:56:11] ============= drm_test_fb_xrgb8888_to_rgb565 ==============
[05:56:11] [PASSED] single_pixel_source_buffer
[05:56:11] [PASSED] single_pixel_clip_rectangle
[05:56:11] [PASSED] well_known_colors
[05:56:11] [PASSED] destination_pitch
[05:56:11] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb565 ==========
[05:56:11] ============ drm_test_fb_xrgb8888_to_xrgb1555 =============
[05:56:11] [PASSED] single_pixel_source_buffer
[05:56:11] [PASSED] single_pixel_clip_rectangle
[05:56:11] [PASSED] well_known_colors
[05:56:11] [PASSED] destination_pitch
[05:56:11] ======== [PASSED] drm_test_fb_xrgb8888_to_xrgb1555 =========
[05:56:11] ============ drm_test_fb_xrgb8888_to_argb1555 =============
[05:56:11] [PASSED] single_pixel_source_buffer
[05:56:11] [PASSED] single_pixel_clip_rectangle
[05:56:11] [PASSED] well_known_colors
[05:56:11] [PASSED] destination_pitch
[05:56:11] ======== [PASSED] drm_test_fb_xrgb8888_to_argb1555 =========
[05:56:11] ============ drm_test_fb_xrgb8888_to_rgba5551 =============
[05:56:11] [PASSED] single_pixel_source_buffer
[05:56:11] [PASSED] single_pixel_clip_rectangle
[05:56:11] [PASSED] well_known_colors
[05:56:11] [PASSED] destination_pitch
[05:56:11] ======== [PASSED] drm_test_fb_xrgb8888_to_rgba5551 =========
[05:56:11] ============= drm_test_fb_xrgb8888_to_rgb888 ==============
[05:56:11] [PASSED] single_pixel_source_buffer
[05:56:11] [PASSED] single_pixel_clip_rectangle
[05:56:11] [PASSED] well_known_colors
[05:56:11] [PASSED] destination_pitch
[05:56:11] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb888 ==========
[05:56:11] ============= drm_test_fb_xrgb8888_to_bgr888 ==============
[05:56:11] [PASSED] single_pixel_source_buffer
[05:56:11] [PASSED] single_pixel_clip_rectangle
[05:56:11] [PASSED] well_known_colors
[05:56:11] [PASSED] destination_pitch
[05:56:11] ========= [PASSED] drm_test_fb_xrgb8888_to_bgr888 ==========
[05:56:11] ============ drm_test_fb_xrgb8888_to_argb8888 =============
[05:56:11] [PASSED] single_pixel_source_buffer
[05:56:11] [PASSED] single_pixel_clip_rectangle
[05:56:11] [PASSED] well_known_colors
[05:56:11] [PASSED] destination_pitch
[05:56:11] ======== [PASSED] drm_test_fb_xrgb8888_to_argb8888 =========
[05:56:11] =========== drm_test_fb_xrgb8888_to_xrgb2101010 ===========
[05:56:11] [PASSED] single_pixel_source_buffer
[05:56:11] [PASSED] single_pixel_clip_rectangle
[05:56:11] [PASSED] well_known_colors
[05:56:11] [PASSED] destination_pitch
[05:56:11] ======= [PASSED] drm_test_fb_xrgb8888_to_xrgb2101010 =======
[05:56:11] =========== drm_test_fb_xrgb8888_to_argb2101010 ===========
[05:56:11] [PASSED] single_pixel_source_buffer
[05:56:11] [PASSED] single_pixel_clip_rectangle
[05:56:11] [PASSED] well_known_colors
[05:56:11] [PASSED] destination_pitch
[05:56:11] ======= [PASSED] drm_test_fb_xrgb8888_to_argb2101010 =======
[05:56:11] ============== drm_test_fb_xrgb8888_to_mono ===============
[05:56:11] [PASSED] single_pixel_source_buffer
[05:56:11] [PASSED] single_pixel_clip_rectangle
[05:56:11] [PASSED] well_known_colors
[05:56:11] [PASSED] destination_pitch
[05:56:11] ========== [PASSED] drm_test_fb_xrgb8888_to_mono ===========
[05:56:11] ==================== drm_test_fb_swab =====================
[05:56:11] [PASSED] single_pixel_source_buffer
[05:56:11] [PASSED] single_pixel_clip_rectangle
[05:56:11] [PASSED] well_known_colors
[05:56:11] [PASSED] destination_pitch
[05:56:11] ================ [PASSED] drm_test_fb_swab =================
[05:56:11] ============ drm_test_fb_xrgb8888_to_xbgr8888 =============
[05:56:11] [PASSED] single_pixel_source_buffer
[05:56:11] [PASSED] single_pixel_clip_rectangle
[05:56:11] [PASSED] well_known_colors
[05:56:11] [PASSED] destination_pitch
[05:56:11] ======== [PASSED] drm_test_fb_xrgb8888_to_xbgr8888 =========
[05:56:11] ============ drm_test_fb_xrgb8888_to_abgr8888 =============
[05:56:11] [PASSED] single_pixel_source_buffer
[05:56:11] [PASSED] single_pixel_clip_rectangle
[05:56:11] [PASSED] well_known_colors
[05:56:11] [PASSED] destination_pitch
[05:56:11] ======== [PASSED] drm_test_fb_xrgb8888_to_abgr8888 =========
[05:56:11] ================= drm_test_fb_clip_offset =================
[05:56:11] [PASSED] pass through
[05:56:11] [PASSED] horizontal offset
[05:56:11] [PASSED] vertical offset
[05:56:11] [PASSED] horizontal and vertical offset
[05:56:11] [PASSED] horizontal offset (custom pitch)
[05:56:11] [PASSED] vertical offset (custom pitch)
[05:56:11] [PASSED] horizontal and vertical offset (custom pitch)
[05:56:11] ============= [PASSED] drm_test_fb_clip_offset =============
[05:56:11] =================== drm_test_fb_memcpy ====================
[05:56:11] [PASSED] single_pixel_source_buffer: XR24 little-endian (0x34325258)
[05:56:11] [PASSED] single_pixel_source_buffer: XRA8 little-endian (0x38415258)
[05:56:11] [PASSED] single_pixel_source_buffer: YU24 little-endian (0x34325559)
[05:56:11] [PASSED] single_pixel_clip_rectangle: XB24 little-endian (0x34324258)
[05:56:11] [PASSED] single_pixel_clip_rectangle: XRA8 little-endian (0x38415258)
[05:56:11] [PASSED] single_pixel_clip_rectangle: YU24 little-endian (0x34325559)
[05:56:11] [PASSED] well_known_colors: XB24 little-endian (0x34324258)
[05:56:11] [PASSED] well_known_colors: XRA8 little-endian (0x38415258)
[05:56:11] [PASSED] well_known_colors: YU24 little-endian (0x34325559)
[05:56:11] [PASSED] destination_pitch: XB24 little-endian (0x34324258)
[05:56:11] [PASSED] destination_pitch: XRA8 little-endian (0x38415258)
[05:56:11] [PASSED] destination_pitch: YU24 little-endian (0x34325559)
[05:56:11] =============== [PASSED] drm_test_fb_memcpy ================
[05:56:11] ============= [PASSED] drm_format_helper_test ==============
[05:56:11] ================= drm_format (18 subtests) =================
[05:56:11] [PASSED] drm_test_format_block_width_invalid
[05:56:11] [PASSED] drm_test_format_block_width_one_plane
[05:56:11] [PASSED] drm_test_format_block_width_two_plane
[05:56:11] [PASSED] drm_test_format_block_width_three_plane
[05:56:11] [PASSED] drm_test_format_block_width_tiled
[05:56:11] [PASSED] drm_test_format_block_height_invalid
[05:56:11] [PASSED] drm_test_format_block_height_one_plane
[05:56:11] [PASSED] drm_test_format_block_height_two_plane
[05:56:11] [PASSED] drm_test_format_block_height_three_plane
[05:56:11] [PASSED] drm_test_format_block_height_tiled
[05:56:11] [PASSED] drm_test_format_min_pitch_invalid
[05:56:11] [PASSED] drm_test_format_min_pitch_one_plane_8bpp
[05:56:11] [PASSED] drm_test_format_min_pitch_one_plane_16bpp
[05:56:11] [PASSED] drm_test_format_min_pitch_one_plane_24bpp
[05:56:11] [PASSED] drm_test_format_min_pitch_one_plane_32bpp
[05:56:11] [PASSED] drm_test_format_min_pitch_two_plane
[05:56:11] [PASSED] drm_test_format_min_pitch_three_plane_8bpp
[05:56:11] [PASSED] drm_test_format_min_pitch_tiled
[05:56:11] =================== [PASSED] drm_format ====================
[05:56:11] ============== drm_framebuffer (10 subtests) ===============
[05:56:11] ========== drm_test_framebuffer_check_src_coords ==========
[05:56:11] [PASSED] Success: source fits into fb
[05:56:11] [PASSED] Fail: overflowing fb with x-axis coordinate
[05:56:11] [PASSED] Fail: overflowing fb with y-axis coordinate
[05:56:11] [PASSED] Fail: overflowing fb with source width
[05:56:11] [PASSED] Fail: overflowing fb with source height
[05:56:11] ====== [PASSED] drm_test_framebuffer_check_src_coords ======
[05:56:11] [PASSED] drm_test_framebuffer_cleanup
[05:56:11] =============== drm_test_framebuffer_create ===============
[05:56:11] [PASSED] ABGR8888 normal sizes
[05:56:11] [PASSED] ABGR8888 max sizes
[05:56:11] [PASSED] ABGR8888 pitch greater than min required
[05:56:11] [PASSED] ABGR8888 pitch less than min required
[05:56:11] [PASSED] ABGR8888 Invalid width
[05:56:11] [PASSED] ABGR8888 Invalid buffer handle
[05:56:11] [PASSED] No pixel format
[05:56:11] [PASSED] ABGR8888 Width 0
[05:56:11] [PASSED] ABGR8888 Height 0
[05:56:11] [PASSED] ABGR8888 Out of bound height * pitch combination
[05:56:11] [PASSED] ABGR8888 Large buffer offset
[05:56:11] [PASSED] ABGR8888 Buffer offset for inexistent plane
[05:56:11] [PASSED] ABGR8888 Invalid flag
[05:56:11] [PASSED] ABGR8888 Set DRM_MODE_FB_MODIFIERS without modifiers
[05:56:11] [PASSED] ABGR8888 Valid buffer modifier
[05:56:11] [PASSED] ABGR8888 Invalid buffer modifier(DRM_FORMAT_MOD_SAMSUNG_64_32_TILE)
[05:56:11] [PASSED] ABGR8888 Extra pitches without DRM_MODE_FB_MODIFIERS
[05:56:11] [PASSED] ABGR8888 Extra pitches with DRM_MODE_FB_MODIFIERS
[05:56:11] [PASSED] NV12 Normal sizes
[05:56:11] [PASSED] NV12 Max sizes
[05:56:11] [PASSED] NV12 Invalid pitch
[05:56:11] [PASSED] NV12 Invalid modifier/missing DRM_MODE_FB_MODIFIERS flag
[05:56:11] [PASSED] NV12 different modifier per-plane
[05:56:11] [PASSED] NV12 with DRM_FORMAT_MOD_SAMSUNG_64_32_TILE
[05:56:11] [PASSED] NV12 Valid modifiers without DRM_MODE_FB_MODIFIERS
[05:56:11] [PASSED] NV12 Modifier for inexistent plane
[05:56:11] [PASSED] NV12 Handle for inexistent plane
[05:56:11] [PASSED] NV12 Handle for inexistent plane without DRM_MODE_FB_MODIFIERS
[05:56:11] [PASSED] YVU420 DRM_MODE_FB_MODIFIERS set without modifier
[05:56:11] [PASSED] YVU420 Normal sizes
[05:56:11] [PASSED] YVU420 Max sizes
[05:56:11] [PASSED] YVU420 Invalid pitch
[05:56:11] [PASSED] YVU420 Different pitches
[05:56:11] [PASSED] YVU420 Different buffer offsets/pitches
[05:56:11] [PASSED] YVU420 Modifier set just for plane 0, without DRM_MODE_FB_MODIFIERS
[05:56:11] [PASSED] YVU420 Modifier set just for planes 0, 1, without DRM_MODE_FB_MODIFIERS
[05:56:11] [PASSED] YVU420 Modifier set just for plane 0, 1, with DRM_MODE_FB_MODIFIERS
[05:56:11] [PASSED] YVU420 Valid modifier
[05:56:11] [PASSED] YVU420 Different modifiers per plane
[05:56:11] [PASSED] YVU420 Modifier for inexistent plane
[05:56:11] [PASSED] YUV420_10BIT Invalid modifier(DRM_FORMAT_MOD_LINEAR)
[05:56:11] [PASSED] X0L2 Normal sizes
[05:56:11] [PASSED] X0L2 Max sizes
[05:56:11] [PASSED] X0L2 Invalid pitch
[05:56:11] [PASSED] X0L2 Pitch greater than minimum required
[05:56:11] [PASSED] X0L2 Handle for inexistent plane
[05:56:11] [PASSED] X0L2 Offset for inexistent plane, without DRM_MODE_FB_MODIFIERS set
[05:56:11] [PASSED] X0L2 Modifier without DRM_MODE_FB_MODIFIERS set
[05:56:11] [PASSED] X0L2 Valid modifier
[05:56:11] [PASSED] X0L2 Modifier for inexistent plane
[05:56:11] =========== [PASSED] drm_test_framebuffer_create ===========
[05:56:11] [PASSED] drm_test_framebuffer_free
[05:56:11] [PASSED] drm_test_framebuffer_init
[05:56:11] [PASSED] drm_test_framebuffer_init_bad_format
[05:56:11] [PASSED] drm_test_framebuffer_init_dev_mismatch
[05:56:11] [PASSED] drm_test_framebuffer_lookup
[05:56:11] [PASSED] drm_test_framebuffer_lookup_inexistent
[05:56:11] [PASSED] drm_test_framebuffer_modifiers_not_supported
[05:56:11] ================= [PASSED] drm_framebuffer =================
[05:56:11] ================ drm_gem_shmem (8 subtests) ================
[05:56:11] [PASSED] drm_gem_shmem_test_obj_create
[05:56:11] [PASSED] drm_gem_shmem_test_obj_create_private
[05:56:11] [PASSED] drm_gem_shmem_test_pin_pages
[05:56:11] [PASSED] drm_gem_shmem_test_vmap
[05:56:11] [PASSED] drm_gem_shmem_test_get_sg_table
[05:56:11] [PASSED] drm_gem_shmem_test_get_pages_sgt
[05:56:11] [PASSED] drm_gem_shmem_test_madvise
[05:56:11] [PASSED] drm_gem_shmem_test_purge
[05:56:11] ================== [PASSED] drm_gem_shmem ==================
[05:56:11] === drm_atomic_helper_connector_hdmi_check (27 subtests) ===
[05:56:11] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode
[05:56:11] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode_vic_1
[05:56:11] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode
[05:56:11] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode_vic_1
[05:56:11] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode
[05:56:11] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode_vic_1
[05:56:11] ====== drm_test_check_broadcast_rgb_cea_mode_yuv420 =======
[05:56:11] [PASSED] Automatic
[05:56:11] [PASSED] Full
[05:56:11] [PASSED] Limited 16:235
[05:56:11] == [PASSED] drm_test_check_broadcast_rgb_cea_mode_yuv420 ===
[05:56:11] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_changed
[05:56:11] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_not_changed
[05:56:11] [PASSED] drm_test_check_disable_connector
[05:56:11] [PASSED] drm_test_check_hdmi_funcs_reject_rate
[05:56:11] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_rgb
[05:56:11] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_yuv420
[05:56:11] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv422
[05:56:11] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv420
[05:56:11] [PASSED] drm_test_check_driver_unsupported_fallback_yuv420
[05:56:11] [PASSED] drm_test_check_output_bpc_crtc_mode_changed
[05:56:11] [PASSED] drm_test_check_output_bpc_crtc_mode_not_changed
[05:56:11] [PASSED] drm_test_check_output_bpc_dvi
[05:56:11] [PASSED] drm_test_check_output_bpc_format_vic_1
[05:56:11] [PASSED] drm_test_check_output_bpc_format_display_8bpc_only
[05:56:11] [PASSED] drm_test_check_output_bpc_format_display_rgb_only
[05:56:11] [PASSED] drm_test_check_output_bpc_format_driver_8bpc_only
[05:56:11] [PASSED] drm_test_check_output_bpc_format_driver_rgb_only
[05:56:11] [PASSED] drm_test_check_tmds_char_rate_rgb_8bpc
[05:56:11] [PASSED] drm_test_check_tmds_char_rate_rgb_10bpc
[05:56:11] [PASSED] drm_test_check_tmds_char_rate_rgb_12bpc
[05:56:11] ===== [PASSED] drm_atomic_helper_connector_hdmi_check ======
[05:56:11] === drm_atomic_helper_connector_hdmi_reset (6 subtests) ====
[05:56:11] [PASSED] drm_test_check_broadcast_rgb_value
[05:56:11] [PASSED] drm_test_check_bpc_8_value
[05:56:11] [PASSED] drm_test_check_bpc_10_value
[05:56:11] [PASSED] drm_test_check_bpc_12_value
[05:56:11] [PASSED] drm_test_check_format_value
[05:56:11] [PASSED] drm_test_check_tmds_char_value
[05:56:11] ===== [PASSED] drm_atomic_helper_connector_hdmi_reset ======
[05:56:11] = drm_atomic_helper_connector_hdmi_mode_valid (4 subtests) =
[05:56:11] [PASSED] drm_test_check_mode_valid
[05:56:11] [PASSED] drm_test_check_mode_valid_reject
[05:56:11] [PASSED] drm_test_check_mode_valid_reject_rate
[05:56:11] [PASSED] drm_test_check_mode_valid_reject_max_clock
[05:56:11] === [PASSED] drm_atomic_helper_connector_hdmi_mode_valid ===
[05:56:11] = drm_atomic_helper_connector_hdmi_infoframes (5 subtests) =
[05:56:11] [PASSED] drm_test_check_infoframes
[05:56:11] [PASSED] drm_test_check_reject_avi_infoframe
[05:56:11] [PASSED] drm_test_check_reject_hdr_infoframe_bpc_8
[05:56:11] [PASSED] drm_test_check_reject_hdr_infoframe_bpc_10
[05:56:11] [PASSED] drm_test_check_reject_audio_infoframe
[05:56:11] === [PASSED] drm_atomic_helper_connector_hdmi_infoframes ===
[05:56:11] ================= drm_managed (2 subtests) =================
[05:56:11] [PASSED] drm_test_managed_release_action
[05:56:11] [PASSED] drm_test_managed_run_action
[05:56:11] =================== [PASSED] drm_managed ===================
[05:56:11] =================== drm_mm (6 subtests) ====================
[05:56:11] [PASSED] drm_test_mm_init
[05:56:11] [PASSED] drm_test_mm_debug
[05:56:11] [PASSED] drm_test_mm_align32
[05:56:11] [PASSED] drm_test_mm_align64
[05:56:11] [PASSED] drm_test_mm_lowest
[05:56:11] [PASSED] drm_test_mm_highest
[05:56:11] ===================== [PASSED] drm_mm ======================
[05:56:11] ============= drm_modes_analog_tv (5 subtests) =============
[05:56:11] [PASSED] drm_test_modes_analog_tv_mono_576i
[05:56:11] [PASSED] drm_test_modes_analog_tv_ntsc_480i
[05:56:11] [PASSED] drm_test_modes_analog_tv_ntsc_480i_inlined
[05:56:11] [PASSED] drm_test_modes_analog_tv_pal_576i
[05:56:11] [PASSED] drm_test_modes_analog_tv_pal_576i_inlined
[05:56:11] =============== [PASSED] drm_modes_analog_tv ===============
[05:56:11] ============== drm_plane_helper (2 subtests) ===============
[05:56:11] =============== drm_test_check_plane_state ================
[05:56:11] [PASSED] clipping_simple
[05:56:11] [PASSED] clipping_rotate_reflect
[05:56:11] [PASSED] positioning_simple
[05:56:11] [PASSED] upscaling
[05:56:11] [PASSED] downscaling
[05:56:11] [PASSED] rounding1
[05:56:11] [PASSED] rounding2
[05:56:11] [PASSED] rounding3
[05:56:11] [PASSED] rounding4
[05:56:11] =========== [PASSED] drm_test_check_plane_state ============
[05:56:11] =========== drm_test_check_invalid_plane_state ============
[05:56:11] [PASSED] positioning_invalid
[05:56:11] [PASSED] upscaling_invalid
[05:56:11] [PASSED] downscaling_invalid
[05:56:11] ======= [PASSED] drm_test_check_invalid_plane_state ========
[05:56:11] ================ [PASSED] drm_plane_helper =================
[05:56:11] ====== drm_connector_helper_tv_get_modes (1 subtest) =======
[05:56:11] ====== drm_test_connector_helper_tv_get_modes_check =======
[05:56:11] [PASSED] None
[05:56:11] [PASSED] PAL
[05:56:11] [PASSED] NTSC
[05:56:11] [PASSED] Both, NTSC Default
[05:56:11] [PASSED] Both, PAL Default
[05:56:11] [PASSED] Both, NTSC Default, with PAL on command-line
[05:56:11] [PASSED] Both, PAL Default, with NTSC on command-line
[05:56:11] == [PASSED] drm_test_connector_helper_tv_get_modes_check ===
[05:56:11] ======== [PASSED] drm_connector_helper_tv_get_modes ========
[05:56:11] ================== drm_rect (9 subtests) ===================
[05:56:11] [PASSED] drm_test_rect_clip_scaled_div_by_zero
[05:56:11] [PASSED] drm_test_rect_clip_scaled_not_clipped
[05:56:11] [PASSED] drm_test_rect_clip_scaled_clipped
[05:56:11] [PASSED] drm_test_rect_clip_scaled_signed_vs_unsigned
[05:56:11] ================= drm_test_rect_intersect =================
[05:56:11] [PASSED] top-left x bottom-right: 2x2+1+1 x 2x2+0+0
[05:56:11] [PASSED] top-right x bottom-left: 2x2+0+0 x 2x2+1-1
[05:56:11] [PASSED] bottom-left x top-right: 2x2+1-1 x 2x2+0+0
[05:56:11] [PASSED] bottom-right x top-left: 2x2+0+0 x 2x2+1+1
[05:56:11] [PASSED] right x left: 2x1+0+0 x 3x1+1+0
[05:56:11] [PASSED] left x right: 3x1+1+0 x 2x1+0+0
[05:56:11] [PASSED] up x bottom: 1x2+0+0 x 1x3+0-1
[05:56:11] [PASSED] bottom x up: 1x3+0-1 x 1x2+0+0
[05:56:11] [PASSED] touching corner: 1x1+0+0 x 2x2+1+1
[05:56:11] [PASSED] touching side: 1x1+0+0 x 1x1+1+0
[05:56:11] [PASSED] equal rects: 2x2+0+0 x 2x2+0+0
[05:56:11] [PASSED] inside another: 2x2+0+0 x 1x1+1+1
[05:56:11] [PASSED] far away: 1x1+0+0 x 1x1+3+6
[05:56:11] [PASSED] points intersecting: 0x0+5+10 x 0x0+5+10
[05:56:11] [PASSED] points not intersecting: 0x0+0+0 x 0x0+5+10
[05:56:11] ============= [PASSED] drm_test_rect_intersect =============
[05:56:11] ================ drm_test_rect_calc_hscale ================
[05:56:11] [PASSED] normal use
[05:56:11] [PASSED] out of max range
[05:56:11] [PASSED] out of min range
[05:56:11] [PASSED] zero dst
[05:56:11] [PASSED] negative src
[05:56:11] [PASSED] negative dst
[05:56:11] ============ [PASSED] drm_test_rect_calc_hscale ============
[05:56:11] ================ drm_test_rect_calc_vscale ================
[05:56:11] [PASSED] normal use
[05:56:11] [PASSED] out of max range
[05:56:11] [PASSED] out of min range
[05:56:11] [PASSED] zero dst
[05:56:11] [PASSED] negative src
[05:56:11] [PASSED] negative dst
stty: 'standard input': Inappropriate ioctl for device
[05:56:11] ============ [PASSED] drm_test_rect_calc_vscale ============
[05:56:11] ================== drm_test_rect_rotate ===================
[05:56:11] [PASSED] reflect-x
[05:56:11] [PASSED] reflect-y
[05:56:11] [PASSED] rotate-0
[05:56:11] [PASSED] rotate-90
[05:56:11] [PASSED] rotate-180
[05:56:11] [PASSED] rotate-270
[05:56:11] ============== [PASSED] drm_test_rect_rotate ===============
[05:56:11] ================ drm_test_rect_rotate_inv =================
[05:56:11] [PASSED] reflect-x
[05:56:11] [PASSED] reflect-y
[05:56:11] [PASSED] rotate-0
[05:56:11] [PASSED] rotate-90
[05:56:11] [PASSED] rotate-180
[05:56:11] [PASSED] rotate-270
[05:56:11] ============ [PASSED] drm_test_rect_rotate_inv =============
[05:56:11] ==================== [PASSED] drm_rect =====================
[05:56:11] ============ drm_sysfb_modeset_test (1 subtest) ============
[05:56:11] ============ drm_test_sysfb_build_fourcc_list =============
[05:56:11] [PASSED] no native formats
[05:56:11] [PASSED] XRGB8888 as native format
[05:56:11] [PASSED] remove duplicates
[05:56:11] [PASSED] convert alpha formats
[05:56:11] [PASSED] random formats
[05:56:11] ======== [PASSED] drm_test_sysfb_build_fourcc_list =========
[05:56:11] ============= [PASSED] drm_sysfb_modeset_test ==============
[05:56:11] ================== drm_fixp (2 subtests) ===================
[05:56:11] [PASSED] drm_test_int2fixp
[05:56:11] [PASSED] drm_test_sm2fixp
[05:56:11] ==================== [PASSED] drm_fixp =====================
[05:56:11] ============================================================
[05:56:11] Testing complete. Ran 621 tests: passed: 621
[05:56:11] Elapsed time: 25.755s total, 1.690s configuring, 23.895s building, 0.168s running
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/ttm/tests/.kunitconfig
[05:56:12] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[05:56:13] 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
[05:56:23] Starting KUnit Kernel (1/1)...
[05:56:23] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[05:56:23] ================= ttm_device (5 subtests) ==================
[05:56:23] [PASSED] ttm_device_init_basic
[05:56:23] [PASSED] ttm_device_init_multiple
[05:56:23] [PASSED] ttm_device_fini_basic
[05:56:23] [PASSED] ttm_device_init_no_vma_man
[05:56:23] ================== ttm_device_init_pools ==================
[05:56:23] [PASSED] No DMA allocations, no DMA32 required
[05:56:23] [PASSED] DMA allocations, DMA32 required
[05:56:23] [PASSED] No DMA allocations, DMA32 required
[05:56:23] [PASSED] DMA allocations, no DMA32 required
[05:56:23] ============== [PASSED] ttm_device_init_pools ==============
[05:56:23] =================== [PASSED] ttm_device ====================
[05:56:23] ================== ttm_pool (8 subtests) ===================
[05:56:23] ================== ttm_pool_alloc_basic ===================
[05:56:23] [PASSED] One page
[05:56:23] [PASSED] More than one page
[05:56:23] [PASSED] Above the allocation limit
[05:56:23] [PASSED] One page, with coherent DMA mappings enabled
[05:56:23] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[05:56:23] ============== [PASSED] ttm_pool_alloc_basic ===============
[05:56:23] ============== ttm_pool_alloc_basic_dma_addr ==============
[05:56:23] [PASSED] One page
[05:56:23] [PASSED] More than one page
[05:56:23] [PASSED] Above the allocation limit
[05:56:23] [PASSED] One page, with coherent DMA mappings enabled
[05:56:23] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[05:56:23] ========== [PASSED] ttm_pool_alloc_basic_dma_addr ==========
[05:56:23] [PASSED] ttm_pool_alloc_order_caching_match
[05:56:23] [PASSED] ttm_pool_alloc_caching_mismatch
[05:56:23] [PASSED] ttm_pool_alloc_order_mismatch
[05:56:23] [PASSED] ttm_pool_free_dma_alloc
[05:56:23] [PASSED] ttm_pool_free_no_dma_alloc
[05:56:23] [PASSED] ttm_pool_fini_basic
[05:56:23] ==================== [PASSED] ttm_pool =====================
[05:56:23] ================ ttm_resource (8 subtests) =================
[05:56:23] ================= ttm_resource_init_basic =================
[05:56:23] [PASSED] Init resource in TTM_PL_SYSTEM
[05:56:23] [PASSED] Init resource in TTM_PL_VRAM
[05:56:23] [PASSED] Init resource in a private placement
[05:56:23] [PASSED] Init resource in TTM_PL_SYSTEM, set placement flags
[05:56:23] ============= [PASSED] ttm_resource_init_basic =============
[05:56:23] [PASSED] ttm_resource_init_pinned
[05:56:23] [PASSED] ttm_resource_fini_basic
[05:56:23] [PASSED] ttm_resource_manager_init_basic
[05:56:23] [PASSED] ttm_resource_manager_usage_basic
[05:56:23] [PASSED] ttm_resource_manager_set_used_basic
[05:56:23] [PASSED] ttm_sys_man_alloc_basic
[05:56:23] [PASSED] ttm_sys_man_free_basic
[05:56:23] ================== [PASSED] ttm_resource ===================
[05:56:23] =================== ttm_tt (15 subtests) ===================
[05:56:23] ==================== ttm_tt_init_basic ====================
[05:56:23] [PASSED] Page-aligned size
[05:56:23] [PASSED] Extra pages requested
[05:56:23] ================ [PASSED] ttm_tt_init_basic ================
[05:56:23] [PASSED] ttm_tt_init_misaligned
[05:56:23] [PASSED] ttm_tt_fini_basic
[05:56:23] [PASSED] ttm_tt_fini_sg
[05:56:23] [PASSED] ttm_tt_fini_shmem
[05:56:23] [PASSED] ttm_tt_create_basic
[05:56:23] [PASSED] ttm_tt_create_invalid_bo_type
[05:56:23] [PASSED] ttm_tt_create_ttm_exists
[05:56:23] [PASSED] ttm_tt_create_failed
[05:56:23] [PASSED] ttm_tt_destroy_basic
[05:56:23] [PASSED] ttm_tt_populate_null_ttm
[05:56:23] [PASSED] ttm_tt_populate_populated_ttm
[05:56:23] [PASSED] ttm_tt_unpopulate_basic
[05:56:23] [PASSED] ttm_tt_unpopulate_empty_ttm
[05:56:23] [PASSED] ttm_tt_swapin_basic
[05:56:23] ===================== [PASSED] ttm_tt ======================
[05:56:23] =================== ttm_bo (14 subtests) ===================
[05:56:23] =========== ttm_bo_reserve_optimistic_no_ticket ===========
[05:56:23] [PASSED] Cannot be interrupted and sleeps
[05:56:23] [PASSED] Cannot be interrupted, locks straight away
[05:56:23] [PASSED] Can be interrupted, sleeps
[05:56:23] ======= [PASSED] ttm_bo_reserve_optimistic_no_ticket =======
[05:56:23] [PASSED] ttm_bo_reserve_locked_no_sleep
[05:56:23] [PASSED] ttm_bo_reserve_no_wait_ticket
[05:56:23] [PASSED] ttm_bo_reserve_double_resv
[05:56:23] [PASSED] ttm_bo_reserve_interrupted
[05:56:23] [PASSED] ttm_bo_reserve_deadlock
[05:56:23] [PASSED] ttm_bo_unreserve_basic
[05:56:23] [PASSED] ttm_bo_unreserve_pinned
[05:56:23] [PASSED] ttm_bo_unreserve_bulk
[05:56:23] [PASSED] ttm_bo_fini_basic
[05:56:23] [PASSED] ttm_bo_fini_shared_resv
[05:56:23] [PASSED] ttm_bo_pin_basic
[05:56:23] [PASSED] ttm_bo_pin_unpin_resource
[05:56:23] [PASSED] ttm_bo_multiple_pin_one_unpin
[05:56:23] ===================== [PASSED] ttm_bo ======================
[05:56:23] ============== ttm_bo_validate (22 subtests) ===============
[05:56:23] ============== ttm_bo_init_reserved_sys_man ===============
[05:56:23] [PASSED] Buffer object for userspace
[05:56:23] [PASSED] Kernel buffer object
[05:56:23] [PASSED] Shared buffer object
[05:56:23] ========== [PASSED] ttm_bo_init_reserved_sys_man ===========
[05:56:23] ============== ttm_bo_init_reserved_mock_man ==============
[05:56:23] [PASSED] Buffer object for userspace
[05:56:23] [PASSED] Kernel buffer object
[05:56:23] [PASSED] Shared buffer object
[05:56:23] ========== [PASSED] ttm_bo_init_reserved_mock_man ==========
[05:56:23] [PASSED] ttm_bo_init_reserved_resv
[05:56:23] ================== ttm_bo_validate_basic ==================
[05:56:23] [PASSED] Buffer object for userspace
[05:56:23] [PASSED] Kernel buffer object
[05:56:23] [PASSED] Shared buffer object
[05:56:23] ============== [PASSED] ttm_bo_validate_basic ==============
[05:56:23] [PASSED] ttm_bo_validate_invalid_placement
[05:56:23] ============= ttm_bo_validate_same_placement ==============
[05:56:23] [PASSED] System manager
[05:56:23] [PASSED] VRAM manager
[05:56:23] ========= [PASSED] ttm_bo_validate_same_placement ==========
[05:56:23] [PASSED] ttm_bo_validate_failed_alloc
[05:56:23] [PASSED] ttm_bo_validate_pinned
[05:56:23] [PASSED] ttm_bo_validate_busy_placement
[05:56:23] ================ ttm_bo_validate_multihop =================
[05:56:23] [PASSED] Buffer object for userspace
[05:56:23] [PASSED] Kernel buffer object
[05:56:23] [PASSED] Shared buffer object
[05:56:23] ============ [PASSED] ttm_bo_validate_multihop =============
[05:56:23] ========== ttm_bo_validate_no_placement_signaled ==========
[05:56:23] [PASSED] Buffer object in system domain, no page vector
[05:56:23] [PASSED] Buffer object in system domain with an existing page vector
[05:56:23] ====== [PASSED] ttm_bo_validate_no_placement_signaled ======
[05:56:23] ======== ttm_bo_validate_no_placement_not_signaled ========
[05:56:23] [PASSED] Buffer object for userspace
[05:56:23] [PASSED] Kernel buffer object
[05:56:23] [PASSED] Shared buffer object
[05:56:23] ==== [PASSED] ttm_bo_validate_no_placement_not_signaled ====
[05:56:23] [PASSED] ttm_bo_validate_move_fence_signaled
[05:56:23] ========= ttm_bo_validate_move_fence_not_signaled =========
[05:56:23] [PASSED] Waits for GPU
[05:56:23] [PASSED] Tries to lock straight away
[05:56:23] ===== [PASSED] ttm_bo_validate_move_fence_not_signaled =====
[05:56:23] [PASSED] ttm_bo_validate_swapout
[05:56:23] [PASSED] ttm_bo_validate_happy_evict
[05:56:23] [PASSED] ttm_bo_validate_all_pinned_evict
[05:56:23] [PASSED] ttm_bo_validate_allowed_only_evict
[05:56:23] [PASSED] ttm_bo_validate_deleted_evict
[05:56:23] [PASSED] ttm_bo_validate_busy_domain_evict
[05:56:23] [PASSED] ttm_bo_validate_evict_gutting
[05:56:23] [PASSED] ttm_bo_validate_recrusive_evict
stty: 'standard input': Inappropriate ioctl for device
[05:56:23] ================= [PASSED] ttm_bo_validate =================
[05:56:23] ============================================================
[05:56:23] Testing complete. Ran 102 tests: passed: 102
[05:56:23] Elapsed time: 11.469s total, 1.678s configuring, 9.525s building, 0.227s running
+ cleanup
++ stat -c %u:%g /kernel
+ chown -R 1003:1003 /kernel
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH 1/3] drm/ttm: Issue direct reclaim at beneficial_order
2026-04-21 1:26 ` [PATCH 1/3] drm/ttm: Issue direct reclaim at beneficial_order Matthew Brost
@ 2026-04-21 6:11 ` Christian König
2026-04-22 4:12 ` Matthew Brost
2026-04-22 7:32 ` Tvrtko Ursulin
1 sibling, 1 reply; 16+ messages in thread
From: Christian König @ 2026-04-21 6:11 UTC (permalink / raw)
To: Matthew Brost, intel-xe, dri-devel
Cc: Thomas Hellström, Carlos Santa, Huang Rui, Matthew Auld,
Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, David Airlie,
Simona Vetter, Daniel Colascione
On 4/21/26 03:26, Matthew Brost wrote:
> 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: 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 König <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);
^ permalink raw reply [flat|nested] 16+ messages in thread
* ✓ Xe.CI.BAT: success for drm/ttm, drm/xe: Avoid reclaim/eviction loops under fragmentation
2026-04-21 1:26 [PATCH 0/3] drm/ttm, drm/xe: Avoid reclaim/eviction loops under fragmentation Matthew Brost
` (3 preceding siblings ...)
2026-04-21 5:56 ` ✓ CI.KUnit: success for drm/ttm, drm/xe: Avoid reclaim/eviction loops " Patchwork
@ 2026-04-21 6:43 ` Patchwork
2026-04-21 8:29 ` ✗ Xe.CI.FULL: failure " Patchwork
5 siblings, 0 replies; 16+ messages in thread
From: Patchwork @ 2026-04-21 6:43 UTC (permalink / raw)
To: Matthew Brost; +Cc: intel-xe
[-- Attachment #1: Type: text/plain, Size: 979 bytes --]
== Series Details ==
Series: drm/ttm, drm/xe: Avoid reclaim/eviction loops under fragmentation
URL : https://patchwork.freedesktop.org/series/165196/
State : success
== Summary ==
CI Bug Log - changes from xe-4920-da91cb4e6137507f74e4da41c39d0260b4cd1201_BAT -> xe-pw-165196v1_BAT
====================================================
Summary
-------
**SUCCESS**
No regressions found.
Participating hosts (12 -> 12)
------------------------------
No changes in participating hosts
Changes
-------
No changes found
Build changes
-------------
* Linux: xe-4920-da91cb4e6137507f74e4da41c39d0260b4cd1201 -> xe-pw-165196v1
IGT_8863: 5b279a8b71dc1672099205a1a9e8135c7c7fadb5 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
xe-4920-da91cb4e6137507f74e4da41c39d0260b4cd1201: da91cb4e6137507f74e4da41c39d0260b4cd1201
xe-pw-165196v1: 165196v1
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165196v1/index.html
[-- Attachment #2: Type: text/html, Size: 1527 bytes --]
^ permalink raw reply [flat|nested] 16+ messages in thread
* ✗ Xe.CI.FULL: failure for drm/ttm, drm/xe: Avoid reclaim/eviction loops under fragmentation
2026-04-21 1:26 [PATCH 0/3] drm/ttm, drm/xe: Avoid reclaim/eviction loops under fragmentation Matthew Brost
` (4 preceding siblings ...)
2026-04-21 6:43 ` ✓ Xe.CI.BAT: " Patchwork
@ 2026-04-21 8:29 ` Patchwork
5 siblings, 0 replies; 16+ messages in thread
From: Patchwork @ 2026-04-21 8:29 UTC (permalink / raw)
To: Matthew Brost; +Cc: intel-xe
[-- Attachment #1: Type: text/plain, Size: 21308 bytes --]
== Series Details ==
Series: drm/ttm, drm/xe: Avoid reclaim/eviction loops under fragmentation
URL : https://patchwork.freedesktop.org/series/165196/
State : failure
== Summary ==
CI Bug Log - changes from xe-4920-da91cb4e6137507f74e4da41c39d0260b4cd1201_FULL -> xe-pw-165196v1_FULL
====================================================
Summary
-------
**FAILURE**
Serious unknown changes coming with xe-pw-165196v1_FULL absolutely need to be
verified manually.
If you think the reported changes have nothing to do with the changes
introduced in xe-pw-165196v1_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-165196v1_FULL:
### IGT changes ###
#### Possible regressions ####
* igt@kms_plane_cursor@viewport:
- shard-bmg: [PASS][1] -> [FAIL][2] +2 other tests fail
[1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4920-da91cb4e6137507f74e4da41c39d0260b4cd1201/shard-bmg-1/igt@kms_plane_cursor@viewport.html
[2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165196v1/shard-bmg-2/igt@kms_plane_cursor@viewport.html
* igt@xe_exec_system_allocator@many-64k-mmap-new-huge-nomemset:
- shard-bmg: [PASS][3] -> [INCOMPLETE][4]
[3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4920-da91cb4e6137507f74e4da41c39d0260b4cd1201/shard-bmg-8/igt@xe_exec_system_allocator@many-64k-mmap-new-huge-nomemset.html
[4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165196v1/shard-bmg-6/igt@xe_exec_system_allocator@many-64k-mmap-new-huge-nomemset.html
* igt@xe_module_load@many-reload:
- shard-bmg: [PASS][5] -> [DMESG-WARN][6]
[5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4920-da91cb4e6137507f74e4da41c39d0260b4cd1201/shard-bmg-10/igt@xe_module_load@many-reload.html
[6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165196v1/shard-bmg-6/igt@xe_module_load@many-reload.html
Known issues
------------
Here are the changes found in xe-pw-165196v1_FULL that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@kms_ccs@bad-rotation-90-4-tiled-lnl-ccs@pipe-c-dp-2:
- shard-bmg: NOTRUN -> [SKIP][7] ([Intel XE#2652]) +7 other tests skip
[7]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165196v1/shard-bmg-1/igt@kms_ccs@bad-rotation-90-4-tiled-lnl-ccs@pipe-c-dp-2.html
* igt@kms_flip@flip-vs-expired-vblank@a-edp1:
- shard-lnl: [PASS][8] -> [FAIL][9] ([Intel XE#301]) +1 other test fail
[8]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4920-da91cb4e6137507f74e4da41c39d0260b4cd1201/shard-lnl-5/igt@kms_flip@flip-vs-expired-vblank@a-edp1.html
[9]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165196v1/shard-lnl-7/igt@kms_flip@flip-vs-expired-vblank@a-edp1.html
* igt@kms_hdr@static-toggle-suspend:
- shard-bmg: [PASS][10] -> [DMESG-WARN][11] ([Intel XE#7725]) +1 other test dmesg-warn
[10]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4920-da91cb4e6137507f74e4da41c39d0260b4cd1201/shard-bmg-10/igt@kms_hdr@static-toggle-suspend.html
[11]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165196v1/shard-bmg-6/igt@kms_hdr@static-toggle-suspend.html
* igt@kms_vrr@flipline:
- shard-lnl: [PASS][12] -> [FAIL][13] ([Intel XE#4227] / [Intel XE#7397]) +1 other test fail
[12]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4920-da91cb4e6137507f74e4da41c39d0260b4cd1201/shard-lnl-1/igt@kms_vrr@flipline.html
[13]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165196v1/shard-lnl-1/igt@kms_vrr@flipline.html
#### Possible fixes ####
* igt@kms_atomic_transition@plane-all-modeset-transition-fencing:
- shard-bmg: [DMESG-FAIL][14] ([Intel XE#5545]) -> [PASS][15] +1 other test pass
[14]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4920-da91cb4e6137507f74e4da41c39d0260b4cd1201/shard-bmg-2/igt@kms_atomic_transition@plane-all-modeset-transition-fencing.html
[15]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165196v1/shard-bmg-1/igt@kms_atomic_transition@plane-all-modeset-transition-fencing.html
* igt@kms_vrr@cmrr@pipe-a-edp-1:
- shard-lnl: [FAIL][16] ([Intel XE#4459]) -> [PASS][17] +1 other test pass
[16]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4920-da91cb4e6137507f74e4da41c39d0260b4cd1201/shard-lnl-3/igt@kms_vrr@cmrr@pipe-a-edp-1.html
[17]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165196v1/shard-lnl-3/igt@kms_vrr@cmrr@pipe-a-edp-1.html
* igt@xe_exec_system_allocator@pat-index-madvise-pat-idx-uc-multi-vma:
- shard-lnl: [FAIL][18] ([Intel XE#5625]) -> [PASS][19]
[18]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4920-da91cb4e6137507f74e4da41c39d0260b4cd1201/shard-lnl-3/igt@xe_exec_system_allocator@pat-index-madvise-pat-idx-uc-multi-vma.html
[19]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165196v1/shard-lnl-3/igt@xe_exec_system_allocator@pat-index-madvise-pat-idx-uc-multi-vma.html
* igt@xe_exec_system_allocator@threads-many-stride-malloc-nomemset:
- shard-bmg: [SKIP][20] ([Intel XE#6703]) -> [PASS][21] +89 other tests pass
[20]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4920-da91cb4e6137507f74e4da41c39d0260b4cd1201/shard-bmg-2/igt@xe_exec_system_allocator@threads-many-stride-malloc-nomemset.html
[21]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165196v1/shard-bmg-1/igt@xe_exec_system_allocator@threads-many-stride-malloc-nomemset.html
#### Warnings ####
* igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-0-hflip:
- shard-bmg: [SKIP][22] ([Intel XE#6703]) -> [SKIP][23] ([Intel XE#1124])
[22]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4920-da91cb4e6137507f74e4da41c39d0260b4cd1201/shard-bmg-2/igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-0-hflip.html
[23]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165196v1/shard-bmg-1/igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-0-hflip.html
* igt@kms_bw@linear-tiling-2-displays-3840x2160p:
- shard-bmg: [SKIP][24] ([Intel XE#6703]) -> [SKIP][25] ([Intel XE#367] / [Intel XE#7354])
[24]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4920-da91cb4e6137507f74e4da41c39d0260b4cd1201/shard-bmg-2/igt@kms_bw@linear-tiling-2-displays-3840x2160p.html
[25]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165196v1/shard-bmg-1/igt@kms_bw@linear-tiling-2-displays-3840x2160p.html
* igt@kms_ccs@bad-rotation-90-4-tiled-lnl-ccs:
- shard-bmg: [SKIP][26] ([Intel XE#6703]) -> [SKIP][27] ([Intel XE#2652])
[26]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4920-da91cb4e6137507f74e4da41c39d0260b4cd1201/shard-bmg-2/igt@kms_ccs@bad-rotation-90-4-tiled-lnl-ccs.html
[27]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165196v1/shard-bmg-1/igt@kms_ccs@bad-rotation-90-4-tiled-lnl-ccs.html
* igt@kms_ccs@crc-sprite-planes-basic-y-tiled-ccs:
- shard-bmg: [SKIP][28] ([Intel XE#6703]) -> [SKIP][29] ([Intel XE#2887]) +1 other test skip
[28]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4920-da91cb4e6137507f74e4da41c39d0260b4cd1201/shard-bmg-2/igt@kms_ccs@crc-sprite-planes-basic-y-tiled-ccs.html
[29]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165196v1/shard-bmg-1/igt@kms_ccs@crc-sprite-planes-basic-y-tiled-ccs.html
* igt@kms_chamelium_hpd@dp-hpd-with-enabled-mode:
- shard-bmg: [SKIP][30] ([Intel XE#6703]) -> [SKIP][31] ([Intel XE#2252])
[30]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4920-da91cb4e6137507f74e4da41c39d0260b4cd1201/shard-bmg-2/igt@kms_chamelium_hpd@dp-hpd-with-enabled-mode.html
[31]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165196v1/shard-bmg-1/igt@kms_chamelium_hpd@dp-hpd-with-enabled-mode.html
* igt@kms_cursor_crc@cursor-random-max-size:
- shard-bmg: [SKIP][32] ([Intel XE#6703]) -> [SKIP][33] ([Intel XE#2320])
[32]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4920-da91cb4e6137507f74e4da41c39d0260b4cd1201/shard-bmg-2/igt@kms_cursor_crc@cursor-random-max-size.html
[33]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165196v1/shard-bmg-1/igt@kms_cursor_crc@cursor-random-max-size.html
* igt@kms_fbcon_fbt@psr:
- shard-bmg: [SKIP][34] ([Intel XE#6703]) -> [SKIP][35] ([Intel XE#6126] / [Intel XE#776])
[34]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4920-da91cb4e6137507f74e4da41c39d0260b4cd1201/shard-bmg-2/igt@kms_fbcon_fbt@psr.html
[35]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165196v1/shard-bmg-1/igt@kms_fbcon_fbt@psr.html
* igt@kms_frontbuffer_tracking@fbc-1p-primscrn-pri-shrfb-draw-render:
- shard-bmg: [SKIP][36] ([Intel XE#6703]) -> [SKIP][37] ([Intel XE#4141]) +3 other tests skip
[36]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4920-da91cb4e6137507f74e4da41c39d0260b4cd1201/shard-bmg-2/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-pri-shrfb-draw-render.html
[37]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165196v1/shard-bmg-1/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-pri-shrfb-draw-render.html
* igt@kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-cur-indfb-draw-mmap-wc:
- shard-bmg: [SKIP][38] ([Intel XE#6703]) -> [SKIP][39] ([Intel XE#2311]) +1 other test skip
[38]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4920-da91cb4e6137507f74e4da41c39d0260b4cd1201/shard-bmg-2/igt@kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-cur-indfb-draw-mmap-wc.html
[39]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165196v1/shard-bmg-1/igt@kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-cur-indfb-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-cur-indfb-move:
- shard-bmg: [SKIP][40] ([Intel XE#6703]) -> [SKIP][41] ([Intel XE#2313]) +2 other tests skip
[40]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4920-da91cb4e6137507f74e4da41c39d0260b4cd1201/shard-bmg-2/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-cur-indfb-move.html
[41]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165196v1/shard-bmg-1/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-cur-indfb-move.html
* igt@kms_frontbuffer_tracking@psr-2p-pri-indfb-multidraw:
- shard-bmg: [SKIP][42] ([Intel XE#2312]) -> [SKIP][43] ([Intel XE#2313])
[42]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4920-da91cb4e6137507f74e4da41c39d0260b4cd1201/shard-bmg-3/igt@kms_frontbuffer_tracking@psr-2p-pri-indfb-multidraw.html
[43]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165196v1/shard-bmg-5/igt@kms_frontbuffer_tracking@psr-2p-pri-indfb-multidraw.html
* igt@kms_joiner@switch-modeset-ultra-joiner-big-joiner:
- shard-bmg: [SKIP][44] ([Intel XE#6703]) -> [SKIP][45] ([Intel XE#4090] / [Intel XE#7443])
[44]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4920-da91cb4e6137507f74e4da41c39d0260b4cd1201/shard-bmg-2/igt@kms_joiner@switch-modeset-ultra-joiner-big-joiner.html
[45]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165196v1/shard-bmg-1/igt@kms_joiner@switch-modeset-ultra-joiner-big-joiner.html
* igt@kms_plane@pixel-format-y-tiled-ccs-modifier:
- shard-bmg: [SKIP][46] ([Intel XE#6703]) -> [SKIP][47] ([Intel XE#7283])
[46]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4920-da91cb4e6137507f74e4da41c39d0260b4cd1201/shard-bmg-2/igt@kms_plane@pixel-format-y-tiled-ccs-modifier.html
[47]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165196v1/shard-bmg-1/igt@kms_plane@pixel-format-y-tiled-ccs-modifier.html
* igt@kms_pm_lpsp@kms-lpsp:
- shard-bmg: [SKIP][48] ([Intel XE#6703]) -> [SKIP][49] ([Intel XE#2499])
[48]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4920-da91cb4e6137507f74e4da41c39d0260b4cd1201/shard-bmg-2/igt@kms_pm_lpsp@kms-lpsp.html
[49]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165196v1/shard-bmg-1/igt@kms_pm_lpsp@kms-lpsp.html
* igt@kms_psr@psr-basic:
- shard-bmg: [SKIP][50] ([Intel XE#6703]) -> [SKIP][51] ([Intel XE#2234] / [Intel XE#2850]) +1 other test skip
[50]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4920-da91cb4e6137507f74e4da41c39d0260b4cd1201/shard-bmg-2/igt@kms_psr@psr-basic.html
[51]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165196v1/shard-bmg-1/igt@kms_psr@psr-basic.html
* igt@kms_setmode@basic-clone-single-crtc:
- shard-bmg: [SKIP][52] ([Intel XE#6703]) -> [SKIP][53] ([Intel XE#1435])
[52]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4920-da91cb4e6137507f74e4da41c39d0260b4cd1201/shard-bmg-2/igt@kms_setmode@basic-clone-single-crtc.html
[53]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165196v1/shard-bmg-1/igt@kms_setmode@basic-clone-single-crtc.html
* igt@kms_sharpness_filter@invalid-filter-with-scaling-mode:
- shard-bmg: [SKIP][54] ([Intel XE#6703]) -> [SKIP][55] ([Intel XE#6503])
[54]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4920-da91cb4e6137507f74e4da41c39d0260b4cd1201/shard-bmg-2/igt@kms_sharpness_filter@invalid-filter-with-scaling-mode.html
[55]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165196v1/shard-bmg-1/igt@kms_sharpness_filter@invalid-filter-with-scaling-mode.html
* igt@kms_tiled_display@basic-test-pattern:
- shard-bmg: [FAIL][56] ([Intel XE#1729] / [Intel XE#7424]) -> [SKIP][57] ([Intel XE#2426] / [Intel XE#5848])
[56]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4920-da91cb4e6137507f74e4da41c39d0260b4cd1201/shard-bmg-10/igt@kms_tiled_display@basic-test-pattern.html
[57]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165196v1/shard-bmg-7/igt@kms_tiled_display@basic-test-pattern.html
* igt@kms_tiled_display@basic-test-pattern-with-chamelium:
- shard-bmg: [SKIP][58] ([Intel XE#2426] / [Intel XE#5848]) -> [SKIP][59] ([Intel XE#2509] / [Intel XE#7437])
[58]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4920-da91cb4e6137507f74e4da41c39d0260b4cd1201/shard-bmg-5/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html
[59]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165196v1/shard-bmg-2/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html
* igt@xe_eudebug@basic-exec-queues-enable:
- shard-bmg: [SKIP][60] ([Intel XE#6703]) -> [SKIP][61] ([Intel XE#7636]) +1 other test skip
[60]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4920-da91cb4e6137507f74e4da41c39d0260b4cd1201/shard-bmg-2/igt@xe_eudebug@basic-exec-queues-enable.html
[61]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165196v1/shard-bmg-1/igt@xe_eudebug@basic-exec-queues-enable.html
* igt@xe_evict@evict-small-multi-queue:
- shard-bmg: [SKIP][62] ([Intel XE#6703]) -> [SKIP][63] ([Intel XE#7140])
[62]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4920-da91cb4e6137507f74e4da41c39d0260b4cd1201/shard-bmg-2/igt@xe_evict@evict-small-multi-queue.html
[63]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165196v1/shard-bmg-1/igt@xe_evict@evict-small-multi-queue.html
* igt@xe_exec_basic@multigpu-many-execqueues-many-vm-bindexecqueue:
- shard-bmg: [SKIP][64] ([Intel XE#6703]) -> [SKIP][65] ([Intel XE#2322] / [Intel XE#7372]) +1 other test skip
[64]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4920-da91cb4e6137507f74e4da41c39d0260b4cd1201/shard-bmg-2/igt@xe_exec_basic@multigpu-many-execqueues-many-vm-bindexecqueue.html
[65]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165196v1/shard-bmg-1/igt@xe_exec_basic@multigpu-many-execqueues-many-vm-bindexecqueue.html
* igt@xe_exec_fault_mode@many-multi-queue-userptr-imm:
- shard-bmg: [SKIP][66] ([Intel XE#6703]) -> [SKIP][67] ([Intel XE#7136])
[66]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4920-da91cb4e6137507f74e4da41c39d0260b4cd1201/shard-bmg-2/igt@xe_exec_fault_mode@many-multi-queue-userptr-imm.html
[67]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165196v1/shard-bmg-1/igt@xe_exec_fault_mode@many-multi-queue-userptr-imm.html
* igt@xe_exec_multi_queue@many-queues-preempt-mode-basic:
- shard-bmg: [SKIP][68] ([Intel XE#6703]) -> [SKIP][69] ([Intel XE#6874]) +2 other tests skip
[68]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4920-da91cb4e6137507f74e4da41c39d0260b4cd1201/shard-bmg-2/igt@xe_exec_multi_queue@many-queues-preempt-mode-basic.html
[69]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165196v1/shard-bmg-1/igt@xe_exec_multi_queue@many-queues-preempt-mode-basic.html
* igt@xe_exec_threads@threads-multi-queue-cm-shared-vm-userptr-rebind:
- shard-bmg: [SKIP][70] ([Intel XE#6703]) -> [SKIP][71] ([Intel XE#7138])
[70]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4920-da91cb4e6137507f74e4da41c39d0260b4cd1201/shard-bmg-2/igt@xe_exec_threads@threads-multi-queue-cm-shared-vm-userptr-rebind.html
[71]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165196v1/shard-bmg-1/igt@xe_exec_threads@threads-multi-queue-cm-shared-vm-userptr-rebind.html
* igt@xe_wedged@wedged-at-any-timeout:
- shard-bmg: [DMESG-WARN][72] ([Intel XE#5545]) -> [ABORT][73] ([Intel XE#7578])
[72]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4920-da91cb4e6137507f74e4da41c39d0260b4cd1201/shard-bmg-1/igt@xe_wedged@wedged-at-any-timeout.html
[73]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165196v1/shard-bmg-1/igt@xe_wedged@wedged-at-any-timeout.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#1435]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1435
[Intel XE#1729]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1729
[Intel XE#2234]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2234
[Intel XE#2252]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2252
[Intel XE#2311]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2311
[Intel XE#2312]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2312
[Intel XE#2313]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2313
[Intel XE#2320]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2320
[Intel XE#2322]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2322
[Intel XE#2426]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2426
[Intel XE#2499]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2499
[Intel XE#2509]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2509
[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#301]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/301
[Intel XE#367]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/367
[Intel XE#4090]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4090
[Intel XE#4141]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4141
[Intel XE#4227]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4227
[Intel XE#4459]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4459
[Intel XE#5545]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5545
[Intel XE#5625]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5625
[Intel XE#5848]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5848
[Intel XE#6126]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6126
[Intel XE#6503]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6503
[Intel XE#6703]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6703
[Intel XE#6874]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6874
[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#7283]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7283
[Intel XE#7354]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7354
[Intel XE#7372]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7372
[Intel XE#7397]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7397
[Intel XE#7424]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7424
[Intel XE#7437]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7437
[Intel XE#7443]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7443
[Intel XE#7578]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7578
[Intel XE#7636]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7636
[Intel XE#7725]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7725
[Intel XE#776]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/776
Build changes
-------------
* Linux: xe-4920-da91cb4e6137507f74e4da41c39d0260b4cd1201 -> xe-pw-165196v1
IGT_8863: 5b279a8b71dc1672099205a1a9e8135c7c7fadb5 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
xe-4920-da91cb4e6137507f74e4da41c39d0260b4cd1201: da91cb4e6137507f74e4da41c39d0260b4cd1201
xe-pw-165196v1: 165196v1
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-165196v1/index.html
[-- Attachment #2: Type: text/html, Size: 24517 bytes --]
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH 1/3] drm/ttm: Issue direct reclaim at beneficial_order
2026-04-21 6:11 ` Christian König
@ 2026-04-22 4:12 ` Matthew Brost
2026-04-22 6:41 ` Christian König
0 siblings, 1 reply; 16+ messages in thread
From: Matthew Brost @ 2026-04-22 4:12 UTC (permalink / raw)
To: Christian König
Cc: intel-xe, dri-devel, Thomas Hellström, Carlos Santa,
Huang Rui, Matthew Auld, Maarten Lankhorst, Maxime Ripard,
Thomas Zimmermann, David Airlie, Simona Vetter, Daniel Colascione
On Tue, Apr 21, 2026 at 08:11:17AM +0200, Christian König wrote:
> On 4/21/26 03:26, Matthew Brost wrote:
> > 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: 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 König <christian.koenig@amd.com>
>
Thanks! I'm going to merge this patch to independently to drm-misc-next
unless you object - the Xe side heuristics of the shrinker will take a
bit longer to land on an agreed upon design.
Matt
> > ---
> > 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);
>
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH 1/3] drm/ttm: Issue direct reclaim at beneficial_order
2026-04-22 4:12 ` Matthew Brost
@ 2026-04-22 6:41 ` Christian König
0 siblings, 0 replies; 16+ messages in thread
From: Christian König @ 2026-04-22 6:41 UTC (permalink / raw)
To: Matthew Brost
Cc: intel-xe, dri-devel, Thomas Hellström, Carlos Santa,
Huang Rui, Matthew Auld, Maarten Lankhorst, Maxime Ripard,
Thomas Zimmermann, David Airlie, Simona Vetter, Daniel Colascione
On 4/22/26 06:12, Matthew Brost wrote:
> On Tue, Apr 21, 2026 at 08:11:17AM +0200, Christian König wrote:
>> On 4/21/26 03:26, Matthew Brost wrote:
>>> 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: 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 König <christian.koenig@amd.com>
>>
>
> Thanks! I'm going to merge this patch to independently to drm-misc-next
> unless you object - the Xe side heuristics of the shrinker will take a
> bit longer to land on an agreed upon design.
Yeah feel free to push it upstream through the XE tree, the two liner is probably small enough that it won't cause conflict.
Christian
>
> Matt
>
>>> ---
>>> 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);
>>
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH 1/3] drm/ttm: Issue direct reclaim at beneficial_order
2026-04-21 1:26 ` [PATCH 1/3] drm/ttm: Issue direct reclaim at beneficial_order Matthew Brost
2026-04-21 6:11 ` Christian König
@ 2026-04-22 7:32 ` Tvrtko Ursulin
2026-04-22 7:41 ` Christian König
1 sibling, 1 reply; 16+ messages in thread
From: Tvrtko Ursulin @ 2026-04-22 7:32 UTC (permalink / raw)
To: Matthew Brost, 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
On 21/04/2026 02:26, Matthew Brost wrote:
> 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: 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_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);
I missed this conversation so don't know if this was discussed -
having less of 64k pages is not a concern? I mean slightly higher TLB
pressure etc on hardware which supports this PTE size.
Also, does clearing __GFP_RECLAIM disable compaction completely and is
that wanted?
Regards,
Tvrtko
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH 1/3] drm/ttm: Issue direct reclaim at beneficial_order
2026-04-22 7:32 ` Tvrtko Ursulin
@ 2026-04-22 7:41 ` Christian König
2026-04-22 20:41 ` Matthew Brost
0 siblings, 1 reply; 16+ messages in thread
From: Christian König @ 2026-04-22 7:41 UTC (permalink / raw)
To: Tvrtko Ursulin, Matthew Brost, intel-xe, dri-devel
Cc: Thomas Hellström, Carlos Santa, Huang Rui, Matthew Auld,
Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, David Airlie,
Simona Vetter, Daniel Colascione
On 4/22/26 09:32, Tvrtko Ursulin wrote:
>
> On 21/04/2026 02:26, Matthew Brost wrote:
>> 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: 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_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);
>
> I missed this conversation so don't know if this was discussed -
> having less of 64k pages is not a concern? I mean slightly higher TLB pressure etc on hardware which supports this PTE size.
At least for AMD GPUs 64k doesn't matter at all.
There was a large push from the Windows side to use that size, but we have more than enough evidence to prove that this size is actually completely nonsense for almost all use cases.
I have no idea how we ended up with that in the first place.
It could be that there is still HW out there which can only handle that size, but in that case such HW should just set beneficial_order to 64k.
> Also, does clearing __GFP_RECLAIM disable compaction completely and is that wanted?
Oh good point, most likely not.
Regards,
Christian.
>
> Regards,
>
> Tvrtko
>
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH 3/3] drm/xe: Avoid shrinker reclaim from kswapd under fragmentation
2026-04-21 1:26 ` [PATCH 3/3] drm/xe: Avoid shrinker reclaim from kswapd under fragmentation Matthew Brost
@ 2026-04-22 8:22 ` Thomas Hellström
2026-04-22 20:27 ` Matthew Brost
0 siblings, 1 reply; 16+ messages in thread
From: Thomas Hellström @ 2026-04-22 8:22 UTC (permalink / raw)
To: Matthew Brost, intel-xe, dri-devel; +Cc: Carlos Santa, Matthew Auld
Hi,
On Mon, 2026-04-20 at 18:26 -0700, Matthew Brost wrote:
> When the Xe shrinker is invoked from kswapd, a large amount of free
> memory in ZONE_NORMAL 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 ZONE_NORMAL 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 | 13 +++++++++++++
> 1 file changed, 13 insertions(+)
>
> diff --git a/drivers/gpu/drm/xe/xe_shrinker.c
> b/drivers/gpu/drm/xe/xe_shrinker.c
> index 83374cd57660..e56afde83de6 100644
> --- a/drivers/gpu/drm/xe/xe_shrinker.c
> +++ b/drivers/gpu/drm/xe/xe_shrinker.c
> @@ -236,6 +236,19 @@ static unsigned long xe_shrinker_scan(struct
> shrinker *shrink, struct shrink_con
> if (nr_scanned >= nr_to_scan || !can_backup)
> goto out;
>
> + if (current_is_kswapd()) {
> + struct zone *zone = &NODE_DATA(sc->nid)-
> >node_zones[ZONE_NORMAL];
> + unsigned long free_pages = zone_page_state(zone,
> NR_FREE_PAGES);
> + unsigned long high_wmark = high_wmark_pages(zone);
> +
> + /*
> + * If we have 2x the high watermark free, this is
> definitely
> + * fragmentation
> + */
> + if (free_pages > (high_wmark * 2))
> + goto out;
> + }
> +
While this or a similar check might make sense, That should ideally be
in the TTM shrinker helpers. And probably we should ask core mm for a
proper indication whether this is indeed fragmentation-driven.
Thanks,
Thomas
> /* 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);
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH 3/3] drm/xe: Avoid shrinker reclaim from kswapd under fragmentation
2026-04-22 8:22 ` Thomas Hellström
@ 2026-04-22 20:27 ` Matthew Brost
0 siblings, 0 replies; 16+ messages in thread
From: Matthew Brost @ 2026-04-22 20:27 UTC (permalink / raw)
To: Thomas Hellström; +Cc: intel-xe, dri-devel, Carlos Santa, Matthew Auld
On Wed, Apr 22, 2026 at 10:22:56AM +0200, Thomas Hellström wrote:
> Hi,
>
> On Mon, 2026-04-20 at 18:26 -0700, Matthew Brost wrote:
> > When the Xe shrinker is invoked from kswapd, a large amount of free
> > memory in ZONE_NORMAL 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 ZONE_NORMAL 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 | 13 +++++++++++++
> > 1 file changed, 13 insertions(+)
> >
> > diff --git a/drivers/gpu/drm/xe/xe_shrinker.c
> > b/drivers/gpu/drm/xe/xe_shrinker.c
> > index 83374cd57660..e56afde83de6 100644
> > --- a/drivers/gpu/drm/xe/xe_shrinker.c
> > +++ b/drivers/gpu/drm/xe/xe_shrinker.c
> > @@ -236,6 +236,19 @@ static unsigned long xe_shrinker_scan(struct
> > shrinker *shrink, struct shrink_con
> > if (nr_scanned >= nr_to_scan || !can_backup)
> > goto out;
> >
> > + if (current_is_kswapd()) {
> > + struct zone *zone = &NODE_DATA(sc->nid)-
> > >node_zones[ZONE_NORMAL];
> > + unsigned long free_pages = zone_page_state(zone,
> > NR_FREE_PAGES);
> > + unsigned long high_wmark = high_wmark_pages(zone);
> > +
> > + /*
> > + * If we have 2x the high watermark free, this is
> > definitely
> > + * fragmentation
> > + */
> > + if (free_pages > (high_wmark * 2))
> > + goto out;
> > + }
> > +
>
> While this or a similar check might make sense, That should ideally be
> in the TTM shrinker helpers. And probably we should ask core mm for a
> proper indication whether this is indeed fragmentation-driven.
>
Yes, moving this to a TTM shrinker helper—or even a core MM helper—makes
more sense. This is the best heuristic I could come up with based on
what is available in the core MM today. However, this is still not 100%
correct, as I don’t think ZONE_NORMAL is used on systems with less than
4GB of memory; instead, ZONE_DMA32 is used. This might get even worse
when considering Kconfig combonations. Asking the core MM via a helper
whether memory is fragmented is likely the best solution.
Matt
> Thanks,
> Thomas
>
>
>
> > /* 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);
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH 1/3] drm/ttm: Issue direct reclaim at beneficial_order
2026-04-22 7:41 ` Christian König
@ 2026-04-22 20:41 ` Matthew Brost
2026-04-23 8:44 ` Christian König
0 siblings, 1 reply; 16+ messages in thread
From: Matthew Brost @ 2026-04-22 20:41 UTC (permalink / raw)
To: Christian König
Cc: Tvrtko Ursulin, intel-xe, dri-devel, Thomas Hellström,
Carlos Santa, Huang Rui, Matthew Auld, Maarten Lankhorst,
Maxime Ripard, Thomas Zimmermann, David Airlie, Simona Vetter,
Daniel Colascione
On Wed, Apr 22, 2026 at 09:41:54AM +0200, Christian König wrote:
> On 4/22/26 09:32, Tvrtko Ursulin wrote:
> >
> > On 21/04/2026 02:26, Matthew Brost wrote:
> >> 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: 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_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);
> >
> > I missed this conversation so don't know if this was discussed -
I meant to CC you here, but missed including you.
> > having less of 64k pages is not a concern? I mean slightly higher TLB pressure etc on hardware which supports this PTE size.
>
> At least for AMD GPUs 64k doesn't matter at all.
>
Same on Intel GPUs for system memory mappings - it is either 4k or 2M
GPU pages. VRAM can we 64k pages but that isn't involved here.
> There was a large push from the Windows side to use that size, but we have more than enough evidence to prove that this size is actually completely nonsense for almost all use cases.
>
> I have no idea how we ended up with that in the first place.
>
> It could be that there is still HW out there which can only handle that size, but in that case such HW should just set beneficial_order to 64k.
>
Or we move to a table config if we find drivers have multiple
beneficial_orders.
> > Also, does clearing __GFP_RECLAIM disable compaction completely and is that wanted?
>
> Oh good point, most likely not.
>
Without completely reverse engineering the core MM, I'm not sure here.
I just read the kernel doc for __GFP_KSWAPD_RECLAIM [1] and this to
indicate if this is clear compaction won't be entered.
Matt
[1] https://elixir.bootlin.com/linux/v7.0/source/include/linux/gfp_types.h#L198
> Regards,
> Christian.
>
> >
> > Regards,
> >
> > Tvrtko
> >
>
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH 1/3] drm/ttm: Issue direct reclaim at beneficial_order
2026-04-22 20:41 ` Matthew Brost
@ 2026-04-23 8:44 ` Christian König
0 siblings, 0 replies; 16+ messages in thread
From: Christian König @ 2026-04-23 8:44 UTC (permalink / raw)
To: Matthew Brost
Cc: Tvrtko Ursulin, intel-xe, dri-devel, Thomas Hellström,
Carlos Santa, Huang Rui, Matthew Auld, Maarten Lankhorst,
Maxime Ripard, Thomas Zimmermann, David Airlie, Simona Vetter,
Daniel Colascione
On 4/22/26 22:41, Matthew Brost wrote:
> On Wed, Apr 22, 2026 at 09:41:54AM +0200, Christian König wrote:
>> On 4/22/26 09:32, Tvrtko Ursulin wrote:
>>>
>>> On 21/04/2026 02:26, Matthew Brost wrote:
>>>> 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: 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_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);
>>>
>>> I missed this conversation so don't know if this was discussed -
>
> I meant to CC you here, but missed including you.
>
>>> having less of 64k pages is not a concern? I mean slightly higher TLB pressure etc on hardware which supports this PTE size.
>>
>> At least for AMD GPUs 64k doesn't matter at all.
>>
>
> Same on Intel GPUs for system memory mappings - it is either 4k or 2M
> GPU pages. VRAM can we 64k pages but that isn't involved here.
>
>> There was a large push from the Windows side to use that size, but we have more than enough evidence to prove that this size is actually completely nonsense for almost all use cases.
>>
>> I have no idea how we ended up with that in the first place.
>>
>> It could be that there is still HW out there which can only handle that size, but in that case such HW should just set beneficial_order to 64k.
>>
>
> Or we move to a table config if we find drivers have multiple
> beneficial_orders.
>
>>> Also, does clearing __GFP_RECLAIM disable compaction completely and is that wanted?
>>
>> Oh good point, most likely not.
>>
>
> Without completely reverse engineering the core MM, I'm not sure here.
IIRC (and I'm seriously not an expert for all the details here):
__GFP_DIRECT_RECLAIM is throwing things out which we can trivially reload from file system, e.g. memory backing mapped files.
__GFP_KSWAPD_RECLAIM unmaps anonymous pages and eventually queues them up to be written into the swap. And the hope is that when those are faulted in again they eat up only single 4k pages instead of blocking a larger order.
If I'm not completely mistaken pages actually don't need to reach the swap for this to work, it's mostly just defragmentation of the pages into larger orders.
__GFP_RECLAIM is both of the above together.
> I just read the kernel doc for __GFP_KSWAPD_RECLAIM [1] and this to
> indicate if this is clear compaction won't be entered.
I think we want to avoid only direct reclaim, because __GFP_KSWAPD_RECLAIM just eats up idle CPU cycles (you need to be OOM before it starts to actually use swap) but I'm not 100% sure either.
Regards,
Christian.
>
> Matt
>
> [1] https://elixir.bootlin.com/linux/v7.0/source/include/linux/gfp_types.h#L198
>
>> Regards,
>> Christian.
>>
>>>
>>> Regards,
>>>
>>> Tvrtko
>>>
>>
^ permalink raw reply [flat|nested] 16+ messages in thread
end of thread, other threads:[~2026-04-23 8:44 UTC | newest]
Thread overview: 16+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-04-21 1:26 [PATCH 0/3] drm/ttm, drm/xe: Avoid reclaim/eviction loops under fragmentation Matthew Brost
2026-04-21 1:26 ` [PATCH 1/3] drm/ttm: Issue direct reclaim at beneficial_order Matthew Brost
2026-04-21 6:11 ` Christian König
2026-04-22 4:12 ` Matthew Brost
2026-04-22 6:41 ` Christian König
2026-04-22 7:32 ` Tvrtko Ursulin
2026-04-22 7:41 ` Christian König
2026-04-22 20:41 ` Matthew Brost
2026-04-23 8:44 ` Christian König
2026-04-21 1:26 ` [PATCH 2/3] drm/xe: Set TTM device beneficial_order to 9 (2M) Matthew Brost
2026-04-21 1:26 ` [PATCH 3/3] drm/xe: Avoid shrinker reclaim from kswapd under fragmentation Matthew Brost
2026-04-22 8:22 ` Thomas Hellström
2026-04-22 20:27 ` Matthew Brost
2026-04-21 5:56 ` ✓ CI.KUnit: success for drm/ttm, drm/xe: Avoid reclaim/eviction loops " Patchwork
2026-04-21 6:43 ` ✓ Xe.CI.BAT: " Patchwork
2026-04-21 8:29 ` ✗ 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