* [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; 24+ 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] 24+ 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; 24+ 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] 24+ 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; 24+ 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] 24+ 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; 24+ 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] 24+ 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; 24+ 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] 24+ 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; 24+ 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] 24+ 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; 24+ 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] 24+ 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 ` (2 more replies) 0 siblings, 3 replies; 24+ 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] 24+ 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 2026-04-28 13:45 ` Tvrtko Ursulin 2026-05-01 20:04 ` Thadeu Lima de Souza Cascardo 2 siblings, 0 replies; 24+ 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] 24+ 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 @ 2026-04-28 13:45 ` Tvrtko Ursulin 2026-04-29 22:52 ` Daniel Colascione 2026-04-30 3:00 ` Matthew Brost 2026-05-01 20:04 ` Thadeu Lima de Souza Cascardo 2 siblings, 2 replies; 24+ messages in thread From: Tvrtko Ursulin @ 2026-04-28 13:45 UTC (permalink / raw) To: Matthew Brost, 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 22/04/2026 21: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. Or a bitmask of direct reclaim orders? I am not saying it is required to be "smarter" than this patch does it, for AMD and Intel apparently isn't, but for other drivers I don't know so it does need looking into. Regards, Tvrtko > >>> 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] 24+ messages in thread
* Re: [PATCH 1/3] drm/ttm: Issue direct reclaim at beneficial_order 2026-04-28 13:45 ` Tvrtko Ursulin @ 2026-04-29 22:52 ` Daniel Colascione 2026-04-30 0:11 ` Dave Airlie 2026-04-30 7:34 ` Christian König 2026-04-30 3:00 ` Matthew Brost 1 sibling, 2 replies; 24+ messages in thread From: Daniel Colascione @ 2026-04-29 22:52 UTC (permalink / raw) To: Tvrtko Ursulin Cc: Matthew Brost, Christian König, intel-xe, dri-devel, Thomas Hellström, Carlos Santa, Huang Rui, Matthew Auld, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, David Airlie, Simona Vetter Tvrtko Ursulin <tursulin@ursulin.net> writes: > On 22/04/2026 21: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. > > Or a bitmask of direct reclaim orders? > > I am not saying it is required to be "smarter" than this patch does > it, for AMD and Intel apparently isn't, but for other drivers I don't > know so it does need looking into. > > Regards, > > Tvrtko Probably stupid question: for systems like my Lunar Lake Xe2, which has unified memory and (IIUC) no special cache-type or write-mode constraints for GPU mappings, would it be possible to use regular system-provided pages (e.g. from shmem) instead of going through the TTM pool and allow mTHP to provide the aligned and contiguous backing storage that the GPU wants? Something like GEM has, but maybe inside the TTM API? ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH 1/3] drm/ttm: Issue direct reclaim at beneficial_order 2026-04-29 22:52 ` Daniel Colascione @ 2026-04-30 0:11 ` Dave Airlie 2026-04-30 7:59 ` Thomas Hellström 2026-04-30 7:34 ` Christian König 1 sibling, 1 reply; 24+ messages in thread From: Dave Airlie @ 2026-04-30 0:11 UTC (permalink / raw) To: Daniel Colascione Cc: Tvrtko Ursulin, Matthew Brost, Christian König, intel-xe, dri-devel, Thomas Hellström, Carlos Santa, Huang Rui, Matthew Auld, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, Simona Vetter > > Probably stupid question: for systems like my Lunar Lake Xe2, which has > unified memory and (IIUC) no special cache-type or write-mode > constraints for GPU mappings, would it be possible to use regular > system-provided pages (e.g. from shmem) instead of going through the TTM > pool and allow mTHP to provide the aligned and contiguous backing > storage that the GPU wants? Something like GEM has, but maybe inside the > TTM API? TTM pool doesn't get used for system memory allocations in that case, if you are asking for cached memory. Dave. ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH 1/3] drm/ttm: Issue direct reclaim at beneficial_order 2026-04-30 0:11 ` Dave Airlie @ 2026-04-30 7:59 ` Thomas Hellström 2026-04-30 8:14 ` Christian König 0 siblings, 1 reply; 24+ messages in thread From: Thomas Hellström @ 2026-04-30 7:59 UTC (permalink / raw) To: Dave Airlie, Daniel Colascione Cc: Tvrtko Ursulin, Matthew Brost, Christian König, intel-xe, dri-devel, Carlos Santa, Huang Rui, Matthew Auld, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, Simona Vetter On Thu, 2026-04-30 at 10:11 +1000, Dave Airlie wrote: > > > > Probably stupid question: for systems like my Lunar Lake Xe2, which > > has > > unified memory and (IIUC) no special cache-type or write-mode > > constraints for GPU mappings, would it be possible to use regular > > system-provided pages (e.g. from shmem) instead of going through > > the TTM > > pool and allow mTHP to provide the aligned and contiguous backing > > storage that the GPU wants? Something like GEM has, but maybe > > inside the > > TTM API? > > TTM pool doesn't get used for system memory allocations in that case, > if you are asking for cached memory. Both Lunar Lake and Panther Lake use write-combined memory for buffer objects in performance-critical paths. So the pools are indeed getting used. And while it is possible to change caching on shmem pages if they are pinned/unevictable, trying to pool them quickly becomes messy. /Thomas > > Dave. ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH 1/3] drm/ttm: Issue direct reclaim at beneficial_order 2026-04-30 7:59 ` Thomas Hellström @ 2026-04-30 8:14 ` Christian König 0 siblings, 0 replies; 24+ messages in thread From: Christian König @ 2026-04-30 8:14 UTC (permalink / raw) To: Thomas Hellström, Dave Airlie, Daniel Colascione Cc: Tvrtko Ursulin, Matthew Brost, intel-xe, dri-devel, Carlos Santa, Huang Rui, Matthew Auld, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, Simona Vetter On 4/30/26 09:59, Thomas Hellström wrote: > On Thu, 2026-04-30 at 10:11 +1000, Dave Airlie wrote: >>> >>> Probably stupid question: for systems like my Lunar Lake Xe2, which >>> has >>> unified memory and (IIUC) no special cache-type or write-mode >>> constraints for GPU mappings, would it be possible to use regular >>> system-provided pages (e.g. from shmem) instead of going through >>> the TTM >>> pool and allow mTHP to provide the aligned and contiguous backing >>> storage that the GPU wants? Something like GEM has, but maybe >>> inside the >>> TTM API? >> >> TTM pool doesn't get used for system memory allocations in that case, >> if you are asking for cached memory. > > Both Lunar Lake and Panther Lake use write-combined memory for buffer > objects in performance-critical paths. So the pools are indeed getting > used. > > And while it is possible to change caching on shmem pages if they are > pinned/unevictable, trying to pool them quickly becomes messy. Yeah the issue is just that this functionality is strongly x86 specific. From what I know basically every architecture came up with a distinct way of handling this. We could move all of this behind GFP flags and into proper architecture abstraction in the core memory management. But while the functionality was basically mandatory 30 years ago by todays standard it has only a handful of use cases left, so I'm not sure if that's really worth the effort. On the other hand it would indeed make things *much* cleaner and interestingly at least x86 already tracks the UC/WC state in the struct page. Christian. > > /Thomas > > >> >> Dave. ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH 1/3] drm/ttm: Issue direct reclaim at beneficial_order 2026-04-29 22:52 ` Daniel Colascione 2026-04-30 0:11 ` Dave Airlie @ 2026-04-30 7:34 ` Christian König 1 sibling, 0 replies; 24+ messages in thread From: Christian König @ 2026-04-30 7:34 UTC (permalink / raw) To: Daniel Colascione, Tvrtko Ursulin Cc: Matthew Brost, intel-xe, dri-devel, Thomas Hellström, Carlos Santa, Huang Rui, Matthew Auld, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, David Airlie, Simona Vetter On 4/30/26 00:52, Daniel Colascione wrote: > Tvrtko Ursulin <tursulin@ursulin.net> writes: > >> On 22/04/2026 21: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. >> >> Or a bitmask of direct reclaim orders? >> >> I am not saying it is required to be "smarter" than this patch does >> it, for AMD and Intel apparently isn't, but for other drivers I don't >> know so it does need looking into. Yeah if we ever run into such a GPU just making the single value a bitmask sounds fine to me as well. >> >> Regards, >> >> Tvrtko > > Probably stupid question: for systems like my Lunar Lake Xe2, which has > unified memory and (IIUC) no special cache-type or write-mode > constraints for GPU mappings, would it be possible to use regular > system-provided pages (e.g. from shmem) instead of going through the TTM > pool and allow mTHP to provide the aligned and contiguous backing > storage that the GPU wants? Something like GEM has, but maybe inside the > TTM API? We already have that through DMA-buf heaps and udma-buf, additional to that TTM already bypasses the pool for such allocations as optimizations. The problem is usually that THP is often to lax trying to make bigger pages again. So you sometimes end up with performance problems. The Linux memory management is generally optimized for CPU use cases and fitting in GPU use cases is rather tricky. Regards, Christian. ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH 1/3] drm/ttm: Issue direct reclaim at beneficial_order 2026-04-28 13:45 ` Tvrtko Ursulin 2026-04-29 22:52 ` Daniel Colascione @ 2026-04-30 3:00 ` Matthew Brost 1 sibling, 0 replies; 24+ messages in thread From: Matthew Brost @ 2026-04-30 3:00 UTC (permalink / raw) To: Tvrtko Ursulin Cc: Christian König, 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 28, 2026 at 02:45:52PM +0100, Tvrtko Ursulin wrote: > > On 22/04/2026 21: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. > > Or a bitmask of direct reclaim orders? > Yes, mask makes more sense actually. I thought of this after I replied. I'm going to respin this tomorrow and if a mask is preferred we can start with this and build in more control if needed too. Matt > I am not saying it is required to be "smarter" than this patch does it, for > AMD and Intel apparently isn't, but for other drivers I don't know so it > does need looking into. > > Regards, > > Tvrtko > > > > > > > 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] 24+ 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 2026-04-28 13:45 ` Tvrtko Ursulin @ 2026-05-01 20:04 ` Thadeu Lima de Souza Cascardo 2 siblings, 0 replies; 24+ messages in thread From: Thadeu Lima de Souza Cascardo @ 2026-05-01 20:04 UTC (permalink / raw) To: Matthew Brost Cc: Christian König, 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 01:41:37PM -0700, 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. > > I just read the kernel doc for __GFP_KSWAPD_RECLAIM [1] and this to > indicate if this is clear compaction won't be entered. > AFAIU, clearing __GFP_DIRECT_RECLAIM will prevent direct compaction, but kswapd might still start compaction. Since clearing __GFP_KSWAPD_RECLAIM prevents the wakeup of kswapd, then clearing both will stop any compaction (and shrinking) from those allocations. I wonder if this change alone (well, with the other one setting the beneficial order for Xe) would prevent the issue you are observing, as you mentioned in the cover letter that this happens under kswapd. By the way, that reminded me that GPU drivers trying to allocate high order pages was one of the reasons __GFP_NO_KSWAPD (and thus __GFP_KSWAPD_RECLAIM) were kept. See caf491916b1c1. Cascardo. > 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] 24+ 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; 24+ 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] 24+ 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; 24+ 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] 24+ 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; 24+ 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] 24+ 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; 24+ 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] 24+ 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; 24+ 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] 24+ 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; 24+ 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] 24+ 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; 24+ 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] 24+ messages in thread
end of thread, other threads:[~2026-05-04 12:43 UTC | newest] Thread overview: 24+ 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-28 13:45 ` Tvrtko Ursulin 2026-04-29 22:52 ` Daniel Colascione 2026-04-30 0:11 ` Dave Airlie 2026-04-30 7:59 ` Thomas Hellström 2026-04-30 8:14 ` Christian König 2026-04-30 7:34 ` Christian König 2026-04-30 3:00 ` Matthew Brost 2026-05-01 20:04 ` Thadeu Lima de Souza Cascardo 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