* [PATCH v5 0/3] Fix fs_reclaim deadlock caused by CCS save/restore
@ 2026-02-17 12:07 Satyanarayana K V P
2026-02-17 12:07 ` [PATCH v5 1/3] drm/sa: Split drm_suballoc_new() into SA alloc and init helpers Satyanarayana K V P
` (6 more replies)
0 siblings, 7 replies; 11+ messages in thread
From: Satyanarayana K V P @ 2026-02-17 12:07 UTC (permalink / raw)
To: intel-xe; +Cc: Satyanarayana K V P
CCS save/restore batch buffers are attached during BO allocation and
detached during BO teardown. The shrinker triggers xe_bo_move(), which is
used for both allocation and deletion paths.
When BO allocation and shrinking occur concurrently, a circular locking
dependency involving fs_reclaim and swap_guard can occur, leading to a
deadlock such as:
======================================================
WARNING: possible circular locking dependency detected
------------------------------------------------------
CPU0 CPU1
---- ----
lock(fs_reclaim);
lock(&sa_manager->swap_guard);
lock(fs_reclaim);
lock(&sa_manager->swap_guard);
*** DEADLOCK ***
=====================================================
To avoid this, the BB pointer and SA are allocated using xe_bb_alloc()
before taking lock and SA is initialized using xe_bb_init() preventing
reclaim from being invoked in this context.
V4 -> V5:
- Fixed some nits (Michal).
V3 -> V4:
- Fixed some nits (Michal).
V2 -> V3:
- Created new functions xe_sa_bo_alloc(), xe_sa_bo_release() and
xe_sa_bo_init(). (Thomas)
- Created new functions xe_bb_alloc(), xe_bb_release and
xe_bb_init(). (Thomas)
- Updated guard() to scoped_guard() in xe_migrate_ccs_rw_copy(). (Thomas)
- Removed timeout logic from drm_suballoc_init(). (Thomas & Christian).
V1 -> V2:
- Split drm_suballoc_new() into drm_suballoc_alloc() and
drm_suballoc_init() (Thomas).
- Used drm_suballoc_alloc() and drm_suballoc_init() for BB allocation
(Thomas).
Satyanarayana K V P (3):
drm/sa: Split drm_suballoc_new() into SA alloc and init helpers
drm/xe/vf: Fix fs_reclaim warning with CCS save/restore BB allocation
drm/xe/sa: Add lockdep annotations for SA manager swap_guard
drivers/gpu/drm/drm_suballoc.c | 110 ++++++++++++++++++++++++++------
drivers/gpu/drm/xe/xe_bb.c | 72 ++++++++++++++++-----
drivers/gpu/drm/xe/xe_bb.h | 7 +-
drivers/gpu/drm/xe/xe_migrate.c | 99 +++++++++++++++-------------
drivers/gpu/drm/xe/xe_sa.c | 45 +++++++++++++
drivers/gpu/drm/xe/xe_sa.h | 3 +
include/drm/drm_suballoc.h | 8 +++
7 files changed, 259 insertions(+), 85 deletions(-)
--
2.43.0
^ permalink raw reply [flat|nested] 11+ messages in thread* [PATCH v5 1/3] drm/sa: Split drm_suballoc_new() into SA alloc and init helpers 2026-02-17 12:07 [PATCH v5 0/3] Fix fs_reclaim deadlock caused by CCS save/restore Satyanarayana K V P @ 2026-02-17 12:07 ` Satyanarayana K V P 2026-02-17 12:07 ` [PATCH v5 2/3] drm/xe/vf: Fix fs_reclaim warning with CCS save/restore BB allocation Satyanarayana K V P ` (5 subsequent siblings) 6 siblings, 0 replies; 11+ messages in thread From: Satyanarayana K V P @ 2026-02-17 12:07 UTC (permalink / raw) To: intel-xe Cc: Satyanarayana K V P, Matthew Brost, Thomas Hellström, Michal Wajdeczko, Matthew Auld, Christian König, dri-devel drm_suballoc_new() currently both allocates the SA object using kmalloc() and searches for a suitable hole in the sub-allocator for the requested size. If SA allocation is done by holding sub-allocator mutex, this design can lead to reclaim safety issues. By splitting the kmalloc() step outside of the critical section, we allow the memory allocation to use GFP_KERNEL (reclaim-safe) while ensuring that the initialization step that holds reclaim-tainted locks (sub-allocator mutex) operates in a reclaim-unsafe context with pre-allocated memory. This separation prevents potential deadlocks where memory reclaim could attempt to acquire locks that are already held during the sub-allocator operations. Signed-off-by: Satyanarayana K V P <satyanarayana.k.v.p@intel.com> Suggested-by: Matthew Brost <matthew.brost@intel.com> Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com> Cc: Michal Wajdeczko <michal.wajdeczko@intel.com> Cc: Matthew Auld <matthew.auld@intel.com> Cc: Christian König <christian.koenig@amd.com> Cc: dri-devel@lists.freedesktop.org Reviewed-by: Thomas Hellström <thomas.hellstrom@linux.intel.com> Reviewed-by: Matthew Brost <matthew.brost@intel.com> Reviewed-by: Christian König <christian.koenig@amd.com> --- V4 -> V5: - None. V3 -> V4: - None. V2 -> V3: - Updated commit message (Matt, Thomas & Christian). - Removed timeout logic from drm_suballoc_init(). (Thomas & Christian). V1 -> V2: - Splitted drm_suballoc_new() into drm_suballoc_alloc() and drm_suballoc_init() (Thomas). --- drivers/gpu/drm/drm_suballoc.c | 110 ++++++++++++++++++++++++++------- include/drm/drm_suballoc.h | 8 +++ 2 files changed, 97 insertions(+), 21 deletions(-) diff --git a/drivers/gpu/drm/drm_suballoc.c b/drivers/gpu/drm/drm_suballoc.c index 879ea33dbbc4..b97ffcd98d45 100644 --- a/drivers/gpu/drm/drm_suballoc.c +++ b/drivers/gpu/drm/drm_suballoc.c @@ -123,7 +123,7 @@ static void drm_suballoc_remove_locked(struct drm_suballoc *sa) list_del_init(&sa->olist); list_del_init(&sa->flist); dma_fence_put(sa->fence); - kfree(sa); + drm_suballoc_release(sa); } static void drm_suballoc_try_free(struct drm_suballoc_manager *sa_manager) @@ -293,45 +293,74 @@ static bool drm_suballoc_next_hole(struct drm_suballoc_manager *sa_manager, } /** - * drm_suballoc_new() - Make a suballocation. + * drm_suballoc_alloc() - Allocate uninitialized suballoc object. + * @gfp: gfp flags used for memory allocation. + * + * Allocate memory for an uninitialized suballoc object. Intended usage is + * allocate memory for suballoc object outside of a reclaim tainted context + * and then be initialized at a later time in a reclaim tainted context. + * + * @drm_suballoc_release should be used to release the memory if returned + * suballoc object is in uninitialized state. + * + * Return: a new uninitialized suballoc object, or an ERR_PTR(-ENOMEM). + */ +struct drm_suballoc *drm_suballoc_alloc(gfp_t gfp) +{ + struct drm_suballoc *sa; + + sa = kmalloc(sizeof(*sa), gfp); + if (!sa) + return ERR_PTR(-ENOMEM); + + return sa; +} +EXPORT_SYMBOL(drm_suballoc_alloc); + +/** + * drm_suballoc_release() - Release memory for suballocation. + * @sa: The struct drm_suballoc. + */ +void drm_suballoc_release(struct drm_suballoc *sa) +{ + kfree(sa); +} +EXPORT_SYMBOL(drm_suballoc_release); + +/** + * drm_suballoc_init() - Initialize a suballocation. * @sa_manager: pointer to the sa_manager + * @sa: The struct drm_suballoc. * @size: number of bytes we want to suballocate. - * @gfp: gfp flags used for memory allocation. Typically GFP_KERNEL but - * the argument is provided for suballocations from reclaim context or - * where the caller wants to avoid pipelining rather than wait for - * reclaim. * @intr: Whether to perform waits interruptible. This should typically * always be true, unless the caller needs to propagate a * non-interruptible context from above layers. * @align: Alignment. Must not exceed the default manager alignment. * If @align is zero, then the manager alignment is used. * - * Try to make a suballocation of size @size, which will be rounded - * up to the alignment specified in specified in drm_suballoc_manager_init(). + * Try to make a suballocation on a pre-allocated suballoc object of size @size, + * which will be rounded up to the alignment specified in specified in + * drm_suballoc_manager_init(). * - * Return: a new suballocated bo, or an ERR_PTR. + * Return: zero on success, errno on failure. */ -struct drm_suballoc * -drm_suballoc_new(struct drm_suballoc_manager *sa_manager, size_t size, - gfp_t gfp, bool intr, size_t align) +int drm_suballoc_init(struct drm_suballoc_manager *sa_manager, + struct drm_suballoc *sa, size_t size, + bool intr, size_t align) { struct dma_fence *fences[DRM_SUBALLOC_MAX_QUEUES]; unsigned int tries[DRM_SUBALLOC_MAX_QUEUES]; unsigned int count; int i, r; - struct drm_suballoc *sa; if (WARN_ON_ONCE(align > sa_manager->align)) - return ERR_PTR(-EINVAL); + return -EINVAL; if (WARN_ON_ONCE(size > sa_manager->size || !size)) - return ERR_PTR(-EINVAL); + return -EINVAL; if (!align) align = sa_manager->align; - sa = kmalloc(sizeof(*sa), gfp); - if (!sa) - return ERR_PTR(-ENOMEM); sa->manager = sa_manager; sa->fence = NULL; INIT_LIST_HEAD(&sa->olist); @@ -348,7 +377,7 @@ drm_suballoc_new(struct drm_suballoc_manager *sa_manager, size_t size, if (drm_suballoc_try_alloc(sa_manager, sa, size, align)) { spin_unlock(&sa_manager->wq.lock); - return sa; + return 0; } /* see if we can skip over some allocations */ @@ -385,8 +414,47 @@ drm_suballoc_new(struct drm_suballoc_manager *sa_manager, size_t size, } while (!r); spin_unlock(&sa_manager->wq.lock); - kfree(sa); - return ERR_PTR(r); + return r; +} +EXPORT_SYMBOL(drm_suballoc_init); + +/** + * drm_suballoc_new() - Make a suballocation. + * @sa_manager: pointer to the sa_manager + * @size: number of bytes we want to suballocate. + * @gfp: gfp flags used for memory allocation. Typically GFP_KERNEL but + * the argument is provided for suballocations from reclaim context or + * where the caller wants to avoid pipelining rather than wait for + * reclaim. + * @intr: Whether to perform waits interruptible. This should typically + * always be true, unless the caller needs to propagate a + * non-interruptible context from above layers. + * @align: Alignment. Must not exceed the default manager alignment. + * If @align is zero, then the manager alignment is used. + * + * Try to make a suballocation of size @size, which will be rounded + * up to the alignment specified in specified in drm_suballoc_manager_init(). + * + * Return: a new suballocated bo, or an ERR_PTR. + */ +struct drm_suballoc * +drm_suballoc_new(struct drm_suballoc_manager *sa_manager, size_t size, + gfp_t gfp, bool intr, size_t align) +{ + struct drm_suballoc *sa; + int err; + + sa = drm_suballoc_alloc(gfp); + if (IS_ERR(sa)) + return sa; + + err = drm_suballoc_init(sa_manager, sa, size, intr, align); + if (err) { + drm_suballoc_release(sa); + return ERR_PTR(err); + } + + return sa; } EXPORT_SYMBOL(drm_suballoc_new); diff --git a/include/drm/drm_suballoc.h b/include/drm/drm_suballoc.h index 7ba72a81a808..b8d1d5449fd8 100644 --- a/include/drm/drm_suballoc.h +++ b/include/drm/drm_suballoc.h @@ -53,6 +53,14 @@ void drm_suballoc_manager_init(struct drm_suballoc_manager *sa_manager, void drm_suballoc_manager_fini(struct drm_suballoc_manager *sa_manager); +struct drm_suballoc *drm_suballoc_alloc(gfp_t gfp); + +void drm_suballoc_release(struct drm_suballoc *sa); + +int drm_suballoc_init(struct drm_suballoc_manager *sa_manager, + struct drm_suballoc *sa, size_t size, bool intr, + size_t align); + struct drm_suballoc * drm_suballoc_new(struct drm_suballoc_manager *sa_manager, size_t size, gfp_t gfp, bool intr, size_t align); -- 2.43.0 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH v5 2/3] drm/xe/vf: Fix fs_reclaim warning with CCS save/restore BB allocation 2026-02-17 12:07 [PATCH v5 0/3] Fix fs_reclaim deadlock caused by CCS save/restore Satyanarayana K V P 2026-02-17 12:07 ` [PATCH v5 1/3] drm/sa: Split drm_suballoc_new() into SA alloc and init helpers Satyanarayana K V P @ 2026-02-17 12:07 ` Satyanarayana K V P 2026-02-17 13:22 ` Thomas Hellström 2026-02-18 9:51 ` [v5, " Maarten Lankhorst 2026-02-17 12:07 ` [PATCH v5 3/3] drm/xe/sa: Add lockdep annotations for SA manager swap_guard Satyanarayana K V P ` (4 subsequent siblings) 6 siblings, 2 replies; 11+ messages in thread From: Satyanarayana K V P @ 2026-02-17 12:07 UTC (permalink / raw) To: intel-xe Cc: Satyanarayana K V P, Matthew Brost, Michal Wajdeczko, Matthew Auld, Thomas Hellström CCS save/restore batch buffers are attached during BO allocation and detached during BO teardown. The shrinker triggers xe_bo_move(), which is used for both allocation and deletion paths. When BO allocation and shrinking occur concurrently, a circular locking dependency involving fs_reclaim and swap_guard can occur, leading to a deadlock such as: ====================================================== WARNING: possible circular locking dependency detected ------------------------------------------------------ CPU0 CPU1 ---- ---- lock(fs_reclaim); lock(&sa_manager->swap_guard); lock(fs_reclaim); lock(&sa_manager->swap_guard); *** DEADLOCK *** ===================================================== To avoid this, the BB pointer and SA are allocated using xe_bb_alloc() before taking lock and SA is initialized using xe_bb_init() preventing reclaim from being invoked in this context. Fixes: 864690cf4dd62 ("drm/xe/vf: Attach and detach CCS copy commands with BO") Signed-off-by: Satyanarayana K V P <satyanarayana.k.v.p@intel.com> Cc: Matthew Brost <matthew.brost@intel.com> Cc: Michal Wajdeczko <michal.wajdeczko@intel.com> Cc: Matthew Auld <matthew.auld@intel.com> Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com> Reviewed-by: Thomas Hellström <thomas.hellstrom@linux.intel.com> --- V4 -> V5: - Removed enum xe_sriov_vf_ccs_rw_ctxs from xe_bb.h as it is not used any more (Michal). V3 -> V4: - Fixed some nits (Michal). V2 -> V3: - Updated commit message (Matt, Thomas & Christian). - Removed timeout logic from drm_suballoc_init(). (Thomas & Christian). V1 -> V2: - Splitted drm_suballoc_new() into drm_suballoc_alloc() and drm_suballoc_init() (Thomas). --- drivers/gpu/drm/xe/xe_bb.c | 72 ++++++++++++++++++------ drivers/gpu/drm/xe/xe_bb.h | 7 ++- drivers/gpu/drm/xe/xe_migrate.c | 99 ++++++++++++++++++--------------- drivers/gpu/drm/xe/xe_sa.c | 39 +++++++++++++ drivers/gpu/drm/xe/xe_sa.h | 3 + 5 files changed, 156 insertions(+), 64 deletions(-) diff --git a/drivers/gpu/drm/xe/xe_bb.c b/drivers/gpu/drm/xe/xe_bb.c index 8b678297aaa2..a991d9db8164 100644 --- a/drivers/gpu/drm/xe/xe_bb.c +++ b/drivers/gpu/drm/xe/xe_bb.c @@ -59,16 +59,64 @@ struct xe_bb *xe_bb_new(struct xe_gt *gt, u32 dwords, bool usm) return ERR_PTR(err); } -struct xe_bb *xe_bb_ccs_new(struct xe_gt *gt, u32 dwords, - enum xe_sriov_vf_ccs_rw_ctxs ctx_id) +/** + * xe_bb_alloc() - Allocate a new batch buffer structure + * @gt: the &xe_gt + * + * Allocates and initializes a new xe_bb structure with an associated + * uninitialized suballoc object. + * + * Returns: Batch buffer structure or an ERR_PTR(-ENOMEM). + */ +struct xe_bb *xe_bb_alloc(struct xe_gt *gt) { struct xe_bb *bb = kmalloc(sizeof(*bb), GFP_KERNEL); - struct xe_device *xe = gt_to_xe(gt); - struct xe_sa_manager *bb_pool; int err; if (!bb) return ERR_PTR(-ENOMEM); + + bb->bo = xe_sa_bo_alloc(GFP_KERNEL); + if (IS_ERR(bb->bo)) { + err = PTR_ERR(bb->bo); + goto err; + } + + return bb; + +err: + kfree(bb); + return ERR_PTR(err); +} + +/** + * xe_bb_release() - Release and free a batch buffer structure + * @bb: Batch buffer structure to release + * + * Releases the sub-allocated buffer object associated with the batch buffer + * and frees the xe_bb structure memory. + */ +void xe_bb_release(struct xe_bb *bb) +{ + xe_sa_bo_release(bb->bo); + kfree(bb); +} + +/** + * xe_bb_init() - Initialize a batch buffer with memory from a sub-allocator pool + * @bb: Batch buffer structure to initialize + * @bb_pool: Suballoc memory pool to allocate from + * @dwords: Number of dwords to be allocated + * + * Initializes the batch buffer by allocating memory from the specified + * suballoc pool. + * + * Return: 0 on success, negative error code on failure. + */ +int xe_bb_init(struct xe_bb *bb, struct xe_sa_manager *bb_pool, u32 dwords) +{ + int err; + /* * We need to allocate space for the requested number of dwords & * one additional MI_BATCH_BUFFER_END dword. Since the whole SA @@ -76,22 +124,14 @@ struct xe_bb *xe_bb_ccs_new(struct xe_gt *gt, u32 dwords, * is not over written when the last chunk of SA is allocated for BB. * So, this extra DW acts as a guard here. */ - - bb_pool = xe->sriov.vf.ccs.contexts[ctx_id].mem.ccs_bb_pool; - bb->bo = xe_sa_bo_new(bb_pool, 4 * (dwords + 1)); - - if (IS_ERR(bb->bo)) { - err = PTR_ERR(bb->bo); - goto err; - } + err = xe_sa_bo_init(bb_pool, bb->bo, 4 * (dwords + 1)); + if (err) + return err; bb->cs = xe_sa_bo_cpu_addr(bb->bo); bb->len = 0; - return bb; -err: - kfree(bb); - return ERR_PTR(err); + return 0; } static struct xe_sched_job * diff --git a/drivers/gpu/drm/xe/xe_bb.h b/drivers/gpu/drm/xe/xe_bb.h index 2a8adc9a6dee..5778699149ec 100644 --- a/drivers/gpu/drm/xe/xe_bb.h +++ b/drivers/gpu/drm/xe/xe_bb.h @@ -12,12 +12,13 @@ struct dma_fence; struct xe_gt; struct xe_exec_queue; +struct xe_sa_manager; struct xe_sched_job; -enum xe_sriov_vf_ccs_rw_ctxs; struct xe_bb *xe_bb_new(struct xe_gt *gt, u32 dwords, bool usm); -struct xe_bb *xe_bb_ccs_new(struct xe_gt *gt, u32 dwords, - enum xe_sriov_vf_ccs_rw_ctxs ctx_id); +struct xe_bb *xe_bb_alloc(struct xe_gt *gt); +void xe_bb_release(struct xe_bb *bb); +int xe_bb_init(struct xe_bb *bb, struct xe_sa_manager *bb_pool, u32 dwords); struct xe_sched_job *xe_bb_create_job(struct xe_exec_queue *q, struct xe_bb *bb); struct xe_sched_job *xe_bb_create_migration_job(struct xe_exec_queue *q, diff --git a/drivers/gpu/drm/xe/xe_migrate.c b/drivers/gpu/drm/xe/xe_migrate.c index 078a9bc2821d..d4cfc54d614b 100644 --- a/drivers/gpu/drm/xe/xe_migrate.c +++ b/drivers/gpu/drm/xe/xe_migrate.c @@ -25,6 +25,7 @@ #include "xe_exec_queue.h" #include "xe_ggtt.h" #include "xe_gt.h" +#include "xe_gt_printk.h" #include "xe_hw_engine.h" #include "xe_lrc.h" #include "xe_map.h" @@ -1148,65 +1149,73 @@ int xe_migrate_ccs_rw_copy(struct xe_tile *tile, struct xe_exec_queue *q, size -= src_L0; } + bb = xe_bb_alloc(gt); + if (IS_ERR(bb)) + return PTR_ERR(bb); + bb_pool = ctx->mem.ccs_bb_pool; - guard(mutex) (xe_sa_bo_swap_guard(bb_pool)); - xe_sa_bo_swap_shadow(bb_pool); + scoped_guard(mutex, xe_sa_bo_swap_guard(bb_pool)) { + xe_sa_bo_swap_shadow(bb_pool); + + err = xe_bb_init(bb, bb_pool, batch_size); + if (err) { + xe_gt_err(gt, "BB allocation failed.\n"); + xe_bb_release(bb); + return err; + } - bb = xe_bb_ccs_new(gt, batch_size, read_write); - if (IS_ERR(bb)) { - drm_err(&xe->drm, "BB allocation failed.\n"); - err = PTR_ERR(bb); - return err; - } + batch_size_allocated = batch_size; + size = xe_bo_size(src_bo); + batch_size = 0; - batch_size_allocated = batch_size; - size = xe_bo_size(src_bo); - batch_size = 0; + /* + * Emit PTE and copy commands here. + * The CCS copy command can only support limited size. If the size to be + * copied is more than the limit, divide copy into chunks. So, calculate + * sizes here again before copy command is emitted. + */ - /* - * Emit PTE and copy commands here. - * The CCS copy command can only support limited size. If the size to be - * copied is more than the limit, divide copy into chunks. So, calculate - * sizes here again before copy command is emitted. - */ - while (size) { - batch_size += 10; /* Flush + ggtt addr + 2 NOP */ - u32 flush_flags = 0; - u64 ccs_ofs, ccs_size; - u32 ccs_pt; + while (size) { + batch_size += 10; /* Flush + ggtt addr + 2 NOP */ + u32 flush_flags = 0; + u64 ccs_ofs, ccs_size; + u32 ccs_pt; - u32 avail_pts = max_mem_transfer_per_pass(xe) / LEVEL0_PAGE_TABLE_ENCODE_SIZE; + u32 avail_pts = max_mem_transfer_per_pass(xe) / + LEVEL0_PAGE_TABLE_ENCODE_SIZE; - src_L0 = xe_migrate_res_sizes(m, &src_it); + src_L0 = xe_migrate_res_sizes(m, &src_it); - batch_size += pte_update_size(m, false, src, &src_it, &src_L0, - &src_L0_ofs, &src_L0_pt, 0, 0, - avail_pts); + batch_size += pte_update_size(m, false, src, &src_it, &src_L0, + &src_L0_ofs, &src_L0_pt, 0, 0, + avail_pts); - ccs_size = xe_device_ccs_bytes(xe, src_L0); - batch_size += pte_update_size(m, 0, NULL, &ccs_it, &ccs_size, &ccs_ofs, - &ccs_pt, 0, avail_pts, avail_pts); - xe_assert(xe, IS_ALIGNED(ccs_it.start, PAGE_SIZE)); - batch_size += EMIT_COPY_CCS_DW; + ccs_size = xe_device_ccs_bytes(xe, src_L0); + batch_size += pte_update_size(m, 0, NULL, &ccs_it, &ccs_size, &ccs_ofs, + &ccs_pt, 0, avail_pts, avail_pts); + xe_assert(xe, IS_ALIGNED(ccs_it.start, PAGE_SIZE)); + batch_size += EMIT_COPY_CCS_DW; - emit_pte(m, bb, src_L0_pt, false, true, &src_it, src_L0, src); + emit_pte(m, bb, src_L0_pt, false, true, &src_it, src_L0, src); - emit_pte(m, bb, ccs_pt, false, false, &ccs_it, ccs_size, src); + emit_pte(m, bb, ccs_pt, false, false, &ccs_it, ccs_size, src); - bb->len = emit_flush_invalidate(bb->cs, bb->len, flush_flags); - flush_flags = xe_migrate_ccs_copy(m, bb, src_L0_ofs, src_is_pltt, - src_L0_ofs, dst_is_pltt, - src_L0, ccs_ofs, true); - bb->len = emit_flush_invalidate(bb->cs, bb->len, flush_flags); + bb->len = emit_flush_invalidate(bb->cs, bb->len, flush_flags); + flush_flags = xe_migrate_ccs_copy(m, bb, src_L0_ofs, src_is_pltt, + src_L0_ofs, dst_is_pltt, + src_L0, ccs_ofs, true); + bb->len = emit_flush_invalidate(bb->cs, bb->len, flush_flags); - size -= src_L0; - } + size -= src_L0; + } - xe_assert(xe, (batch_size_allocated == bb->len)); - src_bo->bb_ccs[read_write] = bb; + xe_assert(xe, (batch_size_allocated == bb->len)); + src_bo->bb_ccs[read_write] = bb; + + xe_sriov_vf_ccs_rw_update_bb_addr(ctx); + xe_sa_bo_sync_shadow(bb->bo); + } - xe_sriov_vf_ccs_rw_update_bb_addr(ctx); - xe_sa_bo_sync_shadow(bb->bo); return 0; } diff --git a/drivers/gpu/drm/xe/xe_sa.c b/drivers/gpu/drm/xe/xe_sa.c index b738102575d4..4b3dcc7e5ae0 100644 --- a/drivers/gpu/drm/xe/xe_sa.c +++ b/drivers/gpu/drm/xe/xe_sa.c @@ -175,6 +175,45 @@ struct drm_suballoc *__xe_sa_bo_new(struct xe_sa_manager *sa_manager, u32 size, return drm_suballoc_new(&sa_manager->base, size, gfp, true, 0); } +/** + * xe_sa_bo_alloc() - Allocate uninitialized suballoc object. + * @gfp: gfp flags used for memory allocation. + * + * Allocate memory for an uninitialized suballoc object. Intended usage is + * allocate memory for suballoc object outside of a reclaim tainted context + * and then be initialized at a later time in a reclaim tainted context. + * + * Return: a new uninitialized suballoc object, or an ERR_PTR(-ENOMEM). + */ +struct drm_suballoc *xe_sa_bo_alloc(gfp_t gfp) +{ + return drm_suballoc_alloc(gfp); +} + +/** + * xe_sa_bo_release() - Release memory for suballocation. + * @sa: The struct drm_suballoc. + */ +void xe_sa_bo_release(struct drm_suballoc *sa) +{ + drm_suballoc_release(sa); +} + +/** + * xe_sa_bo_init() - Initialize a suballocation. + * @sa_manager: pointer to the sa_manager + * @sa: The struct drm_suballoc. + * @size: number of bytes we want to suballocate. + * + * Try to make a suballocation on a pre-allocated suballoc object of size @size. + * + * Return: zero on success, errno on failure. + */ +int xe_sa_bo_init(struct xe_sa_manager *sa_manager, struct drm_suballoc *sa, size_t size) +{ + return drm_suballoc_init(&sa_manager->base, sa, size, true, 0); +} + /** * xe_sa_bo_flush_write() - Copy the data from the sub-allocation to the GPU memory. * @sa_bo: the &drm_suballoc to flush diff --git a/drivers/gpu/drm/xe/xe_sa.h b/drivers/gpu/drm/xe/xe_sa.h index 05e9a4e00e78..156b6e6fa14b 100644 --- a/drivers/gpu/drm/xe/xe_sa.h +++ b/drivers/gpu/drm/xe/xe_sa.h @@ -38,6 +38,9 @@ static inline struct drm_suballoc *xe_sa_bo_new(struct xe_sa_manager *sa_manager return __xe_sa_bo_new(sa_manager, size, GFP_KERNEL); } +struct drm_suballoc *xe_sa_bo_alloc(gfp_t gfp); +void xe_sa_bo_release(struct drm_suballoc *sa); +int xe_sa_bo_init(struct xe_sa_manager *sa_manager, struct drm_suballoc *sa, size_t size); void xe_sa_bo_flush_write(struct drm_suballoc *sa_bo); void xe_sa_bo_sync_read(struct drm_suballoc *sa_bo); void xe_sa_bo_free(struct drm_suballoc *sa_bo, struct dma_fence *fence); -- 2.43.0 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH v5 2/3] drm/xe/vf: Fix fs_reclaim warning with CCS save/restore BB allocation 2026-02-17 12:07 ` [PATCH v5 2/3] drm/xe/vf: Fix fs_reclaim warning with CCS save/restore BB allocation Satyanarayana K V P @ 2026-02-17 13:22 ` Thomas Hellström 2026-02-18 9:51 ` [v5, " Maarten Lankhorst 1 sibling, 0 replies; 11+ messages in thread From: Thomas Hellström @ 2026-02-17 13:22 UTC (permalink / raw) To: Satyanarayana K V P, intel-xe Cc: Matthew Brost, Michal Wajdeczko, Matthew Auld On Tue, 2026-02-17 at 12:07 +0000, Satyanarayana K V P wrote: > CCS save/restore batch buffers are attached during BO allocation and > detached during BO teardown. The shrinker triggers xe_bo_move(), > which is > used for both allocation and deletion paths. > > When BO allocation and shrinking occur concurrently, a circular > locking > dependency involving fs_reclaim and swap_guard can occur, leading to > a > deadlock such as: > ====================================================== > WARNING: possible circular locking dependency detected > ------------------------------------------------------ > > CPU0 CPU1 > ---- ---- > lock(fs_reclaim); > lock(&sa_manager->swap_guard); > lock(fs_reclaim); > lock(&sa_manager->swap_guard); > > *** DEADLOCK *** > ===================================================== > > To avoid this, the BB pointer and SA are allocated using > xe_bb_alloc() > before taking lock and SA is initialized using xe_bb_init() > preventing > reclaim from being invoked in this context. > > Fixes: 864690cf4dd62 ("drm/xe/vf: Attach and detach CCS copy commands > with BO") > Signed-off-by: Satyanarayana K V P <satyanarayana.k.v.p@intel.com> > Cc: Matthew Brost <matthew.brost@intel.com> > Cc: Michal Wajdeczko <michal.wajdeczko@intel.com> > Cc: Matthew Auld <matthew.auld@intel.com> > Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com> > Reviewed-by: Thomas Hellström <thomas.hellstrom@linux.intel.com> Reviewed-by: Thomas Hellström <thomas.hellstrom@linux.intel.com> Still holds. /Thomas > > --- > V4 -> V5: > - Removed enum xe_sriov_vf_ccs_rw_ctxs from xe_bb.h as it is not used > any more (Michal). > > V3 -> V4: > - Fixed some nits (Michal). > > V2 -> V3: > - Updated commit message (Matt, Thomas & Christian). > - Removed timeout logic from drm_suballoc_init(). (Thomas & > Christian). > > V1 -> V2: > - Splitted drm_suballoc_new() into drm_suballoc_alloc() and > drm_suballoc_init() (Thomas). > --- > drivers/gpu/drm/xe/xe_bb.c | 72 ++++++++++++++++++------ > drivers/gpu/drm/xe/xe_bb.h | 7 ++- > drivers/gpu/drm/xe/xe_migrate.c | 99 ++++++++++++++++++------------- > -- > drivers/gpu/drm/xe/xe_sa.c | 39 +++++++++++++ > drivers/gpu/drm/xe/xe_sa.h | 3 + > 5 files changed, 156 insertions(+), 64 deletions(-) > > diff --git a/drivers/gpu/drm/xe/xe_bb.c b/drivers/gpu/drm/xe/xe_bb.c > index 8b678297aaa2..a991d9db8164 100644 > --- a/drivers/gpu/drm/xe/xe_bb.c > +++ b/drivers/gpu/drm/xe/xe_bb.c > @@ -59,16 +59,64 @@ struct xe_bb *xe_bb_new(struct xe_gt *gt, u32 > dwords, bool usm) > return ERR_PTR(err); > } > > -struct xe_bb *xe_bb_ccs_new(struct xe_gt *gt, u32 dwords, > - enum xe_sriov_vf_ccs_rw_ctxs ctx_id) > +/** > + * xe_bb_alloc() - Allocate a new batch buffer structure > + * @gt: the &xe_gt > + * > + * Allocates and initializes a new xe_bb structure with an > associated > + * uninitialized suballoc object. > + * > + * Returns: Batch buffer structure or an ERR_PTR(-ENOMEM). > + */ > +struct xe_bb *xe_bb_alloc(struct xe_gt *gt) > { > struct xe_bb *bb = kmalloc(sizeof(*bb), GFP_KERNEL); > - struct xe_device *xe = gt_to_xe(gt); > - struct xe_sa_manager *bb_pool; > int err; > > if (!bb) > return ERR_PTR(-ENOMEM); > + > + bb->bo = xe_sa_bo_alloc(GFP_KERNEL); > + if (IS_ERR(bb->bo)) { > + err = PTR_ERR(bb->bo); > + goto err; > + } > + > + return bb; > + > +err: > + kfree(bb); > + return ERR_PTR(err); > +} > + > +/** > + * xe_bb_release() - Release and free a batch buffer structure > + * @bb: Batch buffer structure to release > + * > + * Releases the sub-allocated buffer object associated with the > batch buffer > + * and frees the xe_bb structure memory. > + */ > +void xe_bb_release(struct xe_bb *bb) > +{ > + xe_sa_bo_release(bb->bo); > + kfree(bb); > +} > + > +/** > + * xe_bb_init() - Initialize a batch buffer with memory from a sub- > allocator pool > + * @bb: Batch buffer structure to initialize > + * @bb_pool: Suballoc memory pool to allocate from > + * @dwords: Number of dwords to be allocated > + * > + * Initializes the batch buffer by allocating memory from the > specified > + * suballoc pool. > + * > + * Return: 0 on success, negative error code on failure. > + */ > +int xe_bb_init(struct xe_bb *bb, struct xe_sa_manager *bb_pool, u32 > dwords) > +{ > + int err; > + > /* > * We need to allocate space for the requested number of > dwords & > * one additional MI_BATCH_BUFFER_END dword. Since the whole > SA > @@ -76,22 +124,14 @@ struct xe_bb *xe_bb_ccs_new(struct xe_gt *gt, > u32 dwords, > * is not over written when the last chunk of SA is > allocated for BB. > * So, this extra DW acts as a guard here. > */ > - > - bb_pool = xe->sriov.vf.ccs.contexts[ctx_id].mem.ccs_bb_pool; > - bb->bo = xe_sa_bo_new(bb_pool, 4 * (dwords + 1)); > - > - if (IS_ERR(bb->bo)) { > - err = PTR_ERR(bb->bo); > - goto err; > - } > + err = xe_sa_bo_init(bb_pool, bb->bo, 4 * (dwords + 1)); > + if (err) > + return err; > > bb->cs = xe_sa_bo_cpu_addr(bb->bo); > bb->len = 0; > > - return bb; > -err: > - kfree(bb); > - return ERR_PTR(err); > + return 0; > } > > static struct xe_sched_job * > diff --git a/drivers/gpu/drm/xe/xe_bb.h b/drivers/gpu/drm/xe/xe_bb.h > index 2a8adc9a6dee..5778699149ec 100644 > --- a/drivers/gpu/drm/xe/xe_bb.h > +++ b/drivers/gpu/drm/xe/xe_bb.h > @@ -12,12 +12,13 @@ struct dma_fence; > > struct xe_gt; > struct xe_exec_queue; > +struct xe_sa_manager; > struct xe_sched_job; > -enum xe_sriov_vf_ccs_rw_ctxs; > > struct xe_bb *xe_bb_new(struct xe_gt *gt, u32 dwords, bool usm); > -struct xe_bb *xe_bb_ccs_new(struct xe_gt *gt, u32 dwords, > - enum xe_sriov_vf_ccs_rw_ctxs ctx_id); > +struct xe_bb *xe_bb_alloc(struct xe_gt *gt); > +void xe_bb_release(struct xe_bb *bb); > +int xe_bb_init(struct xe_bb *bb, struct xe_sa_manager *bb_pool, u32 > dwords); > struct xe_sched_job *xe_bb_create_job(struct xe_exec_queue *q, > struct xe_bb *bb); > struct xe_sched_job *xe_bb_create_migration_job(struct xe_exec_queue > *q, > diff --git a/drivers/gpu/drm/xe/xe_migrate.c > b/drivers/gpu/drm/xe/xe_migrate.c > index 078a9bc2821d..d4cfc54d614b 100644 > --- a/drivers/gpu/drm/xe/xe_migrate.c > +++ b/drivers/gpu/drm/xe/xe_migrate.c > @@ -25,6 +25,7 @@ > #include "xe_exec_queue.h" > #include "xe_ggtt.h" > #include "xe_gt.h" > +#include "xe_gt_printk.h" > #include "xe_hw_engine.h" > #include "xe_lrc.h" > #include "xe_map.h" > @@ -1148,65 +1149,73 @@ int xe_migrate_ccs_rw_copy(struct xe_tile > *tile, struct xe_exec_queue *q, > size -= src_L0; > } > > + bb = xe_bb_alloc(gt); > + if (IS_ERR(bb)) > + return PTR_ERR(bb); > + > bb_pool = ctx->mem.ccs_bb_pool; > - guard(mutex) (xe_sa_bo_swap_guard(bb_pool)); > - xe_sa_bo_swap_shadow(bb_pool); > + scoped_guard(mutex, xe_sa_bo_swap_guard(bb_pool)) { > + xe_sa_bo_swap_shadow(bb_pool); > + > + err = xe_bb_init(bb, bb_pool, batch_size); > + if (err) { > + xe_gt_err(gt, "BB allocation failed.\n"); > + xe_bb_release(bb); > + return err; > + } > > - bb = xe_bb_ccs_new(gt, batch_size, read_write); > - if (IS_ERR(bb)) { > - drm_err(&xe->drm, "BB allocation failed.\n"); > - err = PTR_ERR(bb); > - return err; > - } > + batch_size_allocated = batch_size; > + size = xe_bo_size(src_bo); > + batch_size = 0; > > - batch_size_allocated = batch_size; > - size = xe_bo_size(src_bo); > - batch_size = 0; > + /* > + * Emit PTE and copy commands here. > + * The CCS copy command can only support limited > size. If the size to be > + * copied is more than the limit, divide copy into > chunks. So, calculate > + * sizes here again before copy command is emitted. > + */ > > - /* > - * Emit PTE and copy commands here. > - * The CCS copy command can only support limited size. If > the size to be > - * copied is more than the limit, divide copy into chunks. > So, calculate > - * sizes here again before copy command is emitted. > - */ > - while (size) { > - batch_size += 10; /* Flush + ggtt addr + 2 NOP */ > - u32 flush_flags = 0; > - u64 ccs_ofs, ccs_size; > - u32 ccs_pt; > + while (size) { > + batch_size += 10; /* Flush + ggtt addr + 2 > NOP */ > + u32 flush_flags = 0; > + u64 ccs_ofs, ccs_size; > + u32 ccs_pt; > > - u32 avail_pts = max_mem_transfer_per_pass(xe) / > LEVEL0_PAGE_TABLE_ENCODE_SIZE; > + u32 avail_pts = > max_mem_transfer_per_pass(xe) / > + LEVEL0_PAGE_TABLE_ENCODE_SIZ > E; > > - src_L0 = xe_migrate_res_sizes(m, &src_it); > + src_L0 = xe_migrate_res_sizes(m, &src_it); > > - batch_size += pte_update_size(m, false, src, > &src_it, &src_L0, > - &src_L0_ofs, > &src_L0_pt, 0, 0, > - avail_pts); > + batch_size += pte_update_size(m, false, src, > &src_it, &src_L0, > + &src_L0_ofs, > &src_L0_pt, 0, 0, > + avail_pts); > > - ccs_size = xe_device_ccs_bytes(xe, src_L0); > - batch_size += pte_update_size(m, 0, NULL, &ccs_it, > &ccs_size, &ccs_ofs, > - &ccs_pt, 0, avail_pts, > avail_pts); > - xe_assert(xe, IS_ALIGNED(ccs_it.start, PAGE_SIZE)); > - batch_size += EMIT_COPY_CCS_DW; > + ccs_size = xe_device_ccs_bytes(xe, src_L0); > + batch_size += pte_update_size(m, 0, NULL, > &ccs_it, &ccs_size, &ccs_ofs, > + &ccs_pt, 0, > avail_pts, avail_pts); > + xe_assert(xe, IS_ALIGNED(ccs_it.start, > PAGE_SIZE)); > + batch_size += EMIT_COPY_CCS_DW; > > - emit_pte(m, bb, src_L0_pt, false, true, &src_it, > src_L0, src); > + emit_pte(m, bb, src_L0_pt, false, true, > &src_it, src_L0, src); > > - emit_pte(m, bb, ccs_pt, false, false, &ccs_it, > ccs_size, src); > + emit_pte(m, bb, ccs_pt, false, false, > &ccs_it, ccs_size, src); > > - bb->len = emit_flush_invalidate(bb->cs, bb->len, > flush_flags); > - flush_flags = xe_migrate_ccs_copy(m, bb, src_L0_ofs, > src_is_pltt, > - src_L0_ofs, > dst_is_pltt, > - src_L0, ccs_ofs, > true); > - bb->len = emit_flush_invalidate(bb->cs, bb->len, > flush_flags); > + bb->len = emit_flush_invalidate(bb->cs, bb- > >len, flush_flags); > + flush_flags = xe_migrate_ccs_copy(m, bb, > src_L0_ofs, src_is_pltt, > + > src_L0_ofs, dst_is_pltt, > + src_L0, > ccs_ofs, true); > + bb->len = emit_flush_invalidate(bb->cs, bb- > >len, flush_flags); > > - size -= src_L0; > - } > + size -= src_L0; > + } > > - xe_assert(xe, (batch_size_allocated == bb->len)); > - src_bo->bb_ccs[read_write] = bb; > + xe_assert(xe, (batch_size_allocated == bb->len)); > + src_bo->bb_ccs[read_write] = bb; > + > + xe_sriov_vf_ccs_rw_update_bb_addr(ctx); > + xe_sa_bo_sync_shadow(bb->bo); > + } > > - xe_sriov_vf_ccs_rw_update_bb_addr(ctx); > - xe_sa_bo_sync_shadow(bb->bo); > return 0; > } > > diff --git a/drivers/gpu/drm/xe/xe_sa.c b/drivers/gpu/drm/xe/xe_sa.c > index b738102575d4..4b3dcc7e5ae0 100644 > --- a/drivers/gpu/drm/xe/xe_sa.c > +++ b/drivers/gpu/drm/xe/xe_sa.c > @@ -175,6 +175,45 @@ struct drm_suballoc *__xe_sa_bo_new(struct > xe_sa_manager *sa_manager, u32 size, > return drm_suballoc_new(&sa_manager->base, size, gfp, true, > 0); > } > > +/** > + * xe_sa_bo_alloc() - Allocate uninitialized suballoc object. > + * @gfp: gfp flags used for memory allocation. > + * > + * Allocate memory for an uninitialized suballoc object. Intended > usage is > + * allocate memory for suballoc object outside of a reclaim tainted > context > + * and then be initialized at a later time in a reclaim tainted > context. > + * > + * Return: a new uninitialized suballoc object, or an ERR_PTR(- > ENOMEM). > + */ > +struct drm_suballoc *xe_sa_bo_alloc(gfp_t gfp) > +{ > + return drm_suballoc_alloc(gfp); > +} > + > +/** > + * xe_sa_bo_release() - Release memory for suballocation. > + * @sa: The struct drm_suballoc. > + */ > +void xe_sa_bo_release(struct drm_suballoc *sa) > +{ > + drm_suballoc_release(sa); > +} > + > +/** > + * xe_sa_bo_init() - Initialize a suballocation. > + * @sa_manager: pointer to the sa_manager > + * @sa: The struct drm_suballoc. > + * @size: number of bytes we want to suballocate. > + * > + * Try to make a suballocation on a pre-allocated suballoc object of > size @size. > + * > + * Return: zero on success, errno on failure. > + */ > +int xe_sa_bo_init(struct xe_sa_manager *sa_manager, struct > drm_suballoc *sa, size_t size) > +{ > + return drm_suballoc_init(&sa_manager->base, sa, size, true, > 0); > +} > + > /** > * xe_sa_bo_flush_write() - Copy the data from the sub-allocation to > the GPU memory. > * @sa_bo: the &drm_suballoc to flush > diff --git a/drivers/gpu/drm/xe/xe_sa.h b/drivers/gpu/drm/xe/xe_sa.h > index 05e9a4e00e78..156b6e6fa14b 100644 > --- a/drivers/gpu/drm/xe/xe_sa.h > +++ b/drivers/gpu/drm/xe/xe_sa.h > @@ -38,6 +38,9 @@ static inline struct drm_suballoc > *xe_sa_bo_new(struct xe_sa_manager *sa_manager > return __xe_sa_bo_new(sa_manager, size, GFP_KERNEL); > } > > +struct drm_suballoc *xe_sa_bo_alloc(gfp_t gfp); > +void xe_sa_bo_release(struct drm_suballoc *sa); > +int xe_sa_bo_init(struct xe_sa_manager *sa_manager, struct > drm_suballoc *sa, size_t size); > void xe_sa_bo_flush_write(struct drm_suballoc *sa_bo); > void xe_sa_bo_sync_read(struct drm_suballoc *sa_bo); > void xe_sa_bo_free(struct drm_suballoc *sa_bo, struct dma_fence > *fence); ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [v5, 2/3] drm/xe/vf: Fix fs_reclaim warning with CCS save/restore BB allocation 2026-02-17 12:07 ` [PATCH v5 2/3] drm/xe/vf: Fix fs_reclaim warning with CCS save/restore BB allocation Satyanarayana K V P 2026-02-17 13:22 ` Thomas Hellström @ 2026-02-18 9:51 ` Maarten Lankhorst 2026-02-18 15:52 ` K V P, Satyanarayana 1 sibling, 1 reply; 11+ messages in thread From: Maarten Lankhorst @ 2026-02-18 9:51 UTC (permalink / raw) To: Satyanarayana K V P, intel-xe Cc: Matthew Brost, Michal Wajdeczko, Matthew Auld, Thomas Hellström Hey, A quick look at the series. It's a good idea to separate allocation from insertion in this case, but it seems some small issues with the API remain. The first one is that you introduce another free function. It would be better to set sa->manager = NULL in drm_suballoc_alloc(), and check for that in drm_suballoc_free(). That removes the requirement of adding another free function, and making a mistake there. And it nicely pairs alloc() with free() Additionally, you now have both drm_suballoc_init() and drm_suballoc_new(). I'd recommend renaming drm_suballoc_init() to drm_suballoc_insert(), and optionally convert all existing users to use drm_suballoc_insert() After that you only have a single API, and made the usage of it slightly more comprehensible. :-) With these changes, the flow is really nice: - drm_suballoc_alloc() - drm_suballoc_insert() - Error checking, do some stuff here, finally - drm_suballoc_free() And then you convert the existing users 1 by 1, until you can finally remove drm_suballoc_init(). Kind regards, ~Maarten Lankhorst Den 2026-02-17 kl. 13:07, skrev Satyanarayana K V P: > CCS save/restore batch buffers are attached during BO allocation and > detached during BO teardown. The shrinker triggers xe_bo_move(), which is > used for both allocation and deletion paths. > > When BO allocation and shrinking occur concurrently, a circular locking > dependency involving fs_reclaim and swap_guard can occur, leading to a > deadlock such as: > Reviewed-by: Thomas Hellström <thomas.hellstrom@linux.intel.com> > > ====================================================== > WARNING: possible circular locking dependency detected > ------------------------------------------------------ > > CPU0 CPU1 > ---- ---- > lock(fs_reclaim); > lock(&sa_manager->swap_guard); > lock(fs_reclaim); > lock(&sa_manager->swap_guard); > > *** DEADLOCK *** > ===================================================== > > To avoid this, the BB pointer and SA are allocated using xe_bb_alloc() > before taking lock and SA is initialized using xe_bb_init() preventing > reclaim from being invoked in this context. > > Fixes: 864690cf4dd62 ("drm/xe/vf: Attach and detach CCS copy commands with BO") > Signed-off-by: Satyanarayana K V P <satyanarayana.k.v.p@intel.com> > Cc: Matthew Brost <matthew.brost@intel.com> > Cc: Michal Wajdeczko <michal.wajdeczko@intel.com> > Cc: Matthew Auld <matthew.auld@intel.com> > Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com> > Reviewed-by: Thomas Hellström <thomas.hellstrom@linux.intel.com> > > --- > V4 -> V5: > - Removed enum xe_sriov_vf_ccs_rw_ctxs from xe_bb.h as it is not used > any more (Michal). > > V3 -> V4: > - Fixed some nits (Michal). > > V2 -> V3: > - Updated commit message (Matt, Thomas & Christian). > - Removed timeout logic from drm_suballoc_init(). (Thomas & Christian). > > V1 -> V2: > - Splitted drm_suballoc_new() into drm_suballoc_alloc() and > drm_suballoc_init() (Thomas). > --- > drivers/gpu/drm/xe/xe_bb.c | 72 ++++++++++++++++++------ > drivers/gpu/drm/xe/xe_bb.h | 7 ++- > drivers/gpu/drm/xe/xe_migrate.c | 99 ++++++++++++++++++--------------- > drivers/gpu/drm/xe/xe_sa.c | 39 +++++++++++++ > drivers/gpu/drm/xe/xe_sa.h | 3 + > 5 files changed, 156 insertions(+), 64 deletions(-) > > diff --git a/drivers/gpu/drm/xe/xe_bb.c b/drivers/gpu/drm/xe/xe_bb.c > index 8b678297aaa2..a991d9db8164 100644 > --- a/drivers/gpu/drm/xe/xe_bb.c > +++ b/drivers/gpu/drm/xe/xe_bb.c > @@ -59,16 +59,64 @@ struct xe_bb *xe_bb_new(struct xe_gt *gt, u32 dwords, bool usm) > return ERR_PTR(err); > } > > -struct xe_bb *xe_bb_ccs_new(struct xe_gt *gt, u32 dwords, > - enum xe_sriov_vf_ccs_rw_ctxs ctx_id) > +/** > + * xe_bb_alloc() - Allocate a new batch buffer structure > + * @gt: the &xe_gt > + * > + * Allocates and initializes a new xe_bb structure with an associated > + * uninitialized suballoc object. > + * > + * Returns: Batch buffer structure or an ERR_PTR(-ENOMEM). > + */ > +struct xe_bb *xe_bb_alloc(struct xe_gt *gt) > { > struct xe_bb *bb = kmalloc(sizeof(*bb), GFP_KERNEL); > - struct xe_device *xe = gt_to_xe(gt); > - struct xe_sa_manager *bb_pool; > int err; > > if (!bb) > return ERR_PTR(-ENOMEM); > + > + bb->bo = xe_sa_bo_alloc(GFP_KERNEL); > + if (IS_ERR(bb->bo)) { > + err = PTR_ERR(bb->bo); > + goto err; > + } > + > + return bb; > + > +err: > + kfree(bb); > + return ERR_PTR(err); > +} > + > +/** > + * xe_bb_release() - Release and free a batch buffer structure > + * @bb: Batch buffer structure to release > + * > + * Releases the sub-allocated buffer object associated with the batch buffer > + * and frees the xe_bb structure memory. > + */ > +void xe_bb_release(struct xe_bb *bb) > +{ > + xe_sa_bo_release(bb->bo); > + kfree(bb); > +} > + > +/** > + * xe_bb_init() - Initialize a batch buffer with memory from a sub-allocator pool > + * @bb: Batch buffer structure to initialize > + * @bb_pool: Suballoc memory pool to allocate from > + * @dwords: Number of dwords to be allocated > + * > + * Initializes the batch buffer by allocating memory from the specified > + * suballoc pool. > + * > + * Return: 0 on success, negative error code on failure. > + */ > +int xe_bb_init(struct xe_bb *bb, struct xe_sa_manager *bb_pool, u32 dwords) > +{ > + int err; > + > /* > * We need to allocate space for the requested number of dwords & > * one additional MI_BATCH_BUFFER_END dword. Since the whole SA > @@ -76,22 +124,14 @@ struct xe_bb *xe_bb_ccs_new(struct xe_gt *gt, u32 dwords, > * is not over written when the last chunk of SA is allocated for BB. > * So, this extra DW acts as a guard here. > */ > - > - bb_pool = xe->sriov.vf.ccs.contexts[ctx_id].mem.ccs_bb_pool; > - bb->bo = xe_sa_bo_new(bb_pool, 4 * (dwords + 1)); > - > - if (IS_ERR(bb->bo)) { > - err = PTR_ERR(bb->bo); > - goto err; > - } > + err = xe_sa_bo_init(bb_pool, bb->bo, 4 * (dwords + 1)); > + if (err) > + return err; > > bb->cs = xe_sa_bo_cpu_addr(bb->bo); > bb->len = 0; > > - return bb; > -err: > - kfree(bb); > - return ERR_PTR(err); > + return 0; > } > > static struct xe_sched_job * > diff --git a/drivers/gpu/drm/xe/xe_bb.h b/drivers/gpu/drm/xe/xe_bb.h > index 2a8adc9a6dee..5778699149ec 100644 > --- a/drivers/gpu/drm/xe/xe_bb.h > +++ b/drivers/gpu/drm/xe/xe_bb.h > @@ -12,12 +12,13 @@ struct dma_fence; > > struct xe_gt; > struct xe_exec_queue; > +struct xe_sa_manager; > struct xe_sched_job; > -enum xe_sriov_vf_ccs_rw_ctxs; > > struct xe_bb *xe_bb_new(struct xe_gt *gt, u32 dwords, bool usm); > -struct xe_bb *xe_bb_ccs_new(struct xe_gt *gt, u32 dwords, > - enum xe_sriov_vf_ccs_rw_ctxs ctx_id); > +struct xe_bb *xe_bb_alloc(struct xe_gt *gt); > +void xe_bb_release(struct xe_bb *bb); > +int xe_bb_init(struct xe_bb *bb, struct xe_sa_manager *bb_pool, u32 dwords); > struct xe_sched_job *xe_bb_create_job(struct xe_exec_queue *q, > struct xe_bb *bb); > struct xe_sched_job *xe_bb_create_migration_job(struct xe_exec_queue *q, > diff --git a/drivers/gpu/drm/xe/xe_migrate.c b/drivers/gpu/drm/xe/xe_migrate.c > index 078a9bc2821d..d4cfc54d614b 100644 > --- a/drivers/gpu/drm/xe/xe_migrate.c > +++ b/drivers/gpu/drm/xe/xe_migrate.c > @@ -25,6 +25,7 @@ > #include "xe_exec_queue.h" > #include "xe_ggtt.h" > #include "xe_gt.h" > +#include "xe_gt_printk.h" > #include "xe_hw_engine.h" > #include "xe_lrc.h" > #include "xe_map.h" > @@ -1148,65 +1149,73 @@ int xe_migrate_ccs_rw_copy(struct xe_tile *tile, struct xe_exec_queue *q, > size -= src_L0; > } > > + bb = xe_bb_alloc(gt); > + if (IS_ERR(bb)) > + return PTR_ERR(bb); > + > bb_pool = ctx->mem.ccs_bb_pool; > - guard(mutex) (xe_sa_bo_swap_guard(bb_pool)); > - xe_sa_bo_swap_shadow(bb_pool); > + scoped_guard(mutex, xe_sa_bo_swap_guard(bb_pool)) { > + xe_sa_bo_swap_shadow(bb_pool); > + > + err = xe_bb_init(bb, bb_pool, batch_size); > + if (err) { > + xe_gt_err(gt, "BB allocation failed.\n"); > + xe_bb_release(bb); > + return err; > + } > > - bb = xe_bb_ccs_new(gt, batch_size, read_write); > - if (IS_ERR(bb)) { > - drm_err(&xe->drm, "BB allocation failed.\n"); > - err = PTR_ERR(bb); > - return err; > - } > + batch_size_allocated = batch_size; > + size = xe_bo_size(src_bo); > + batch_size = 0; > > - batch_size_allocated = batch_size; > - size = xe_bo_size(src_bo); > - batch_size = 0; > + /* > + * Emit PTE and copy commands here. > + * The CCS copy command can only support limited size. If the size to be > + * copied is more than the limit, divide copy into chunks. So, calculate > + * sizes here again before copy command is emitted. > + */ > > - /* > - * Emit PTE and copy commands here. > - * The CCS copy command can only support limited size. If the size to be > - * copied is more than the limit, divide copy into chunks. So, calculate > - * sizes here again before copy command is emitted. > - */ > - while (size) { > - batch_size += 10; /* Flush + ggtt addr + 2 NOP */ > - u32 flush_flags = 0; > - u64 ccs_ofs, ccs_size; > - u32 ccs_pt; > + while (size) { > + batch_size += 10; /* Flush + ggtt addr + 2 NOP */ > + u32 flush_flags = 0; > + u64 ccs_ofs, ccs_size; > + u32 ccs_pt; > > - u32 avail_pts = max_mem_transfer_per_pass(xe) / LEVEL0_PAGE_TABLE_ENCODE_SIZE; > + u32 avail_pts = max_mem_transfer_per_pass(xe) / > + LEVEL0_PAGE_TABLE_ENCODE_SIZE; > > - src_L0 = xe_migrate_res_sizes(m, &src_it); > + src_L0 = xe_migrate_res_sizes(m, &src_it); > > - batch_size += pte_update_size(m, false, src, &src_it, &src_L0, > - &src_L0_ofs, &src_L0_pt, 0, 0, > - avail_pts); > + batch_size += pte_update_size(m, false, src, &src_it, &src_L0, > + &src_L0_ofs, &src_L0_pt, 0, 0, > + avail_pts); > > - ccs_size = xe_device_ccs_bytes(xe, src_L0); > - batch_size += pte_update_size(m, 0, NULL, &ccs_it, &ccs_size, &ccs_ofs, > - &ccs_pt, 0, avail_pts, avail_pts); > - xe_assert(xe, IS_ALIGNED(ccs_it.start, PAGE_SIZE)); > - batch_size += EMIT_COPY_CCS_DW; > + ccs_size = xe_device_ccs_bytes(xe, src_L0); > + batch_size += pte_update_size(m, 0, NULL, &ccs_it, &ccs_size, &ccs_ofs, > + &ccs_pt, 0, avail_pts, avail_pts); > + xe_assert(xe, IS_ALIGNED(ccs_it.start, PAGE_SIZE)); > + batch_size += EMIT_COPY_CCS_DW; > > - emit_pte(m, bb, src_L0_pt, false, true, &src_it, src_L0, src); > + emit_pte(m, bb, src_L0_pt, false, true, &src_it, src_L0, src); > > - emit_pte(m, bb, ccs_pt, false, false, &ccs_it, ccs_size, src); > + emit_pte(m, bb, ccs_pt, false, false, &ccs_it, ccs_size, src); > > - bb->len = emit_flush_invalidate(bb->cs, bb->len, flush_flags); > - flush_flags = xe_migrate_ccs_copy(m, bb, src_L0_ofs, src_is_pltt, > - src_L0_ofs, dst_is_pltt, > - src_L0, ccs_ofs, true); > - bb->len = emit_flush_invalidate(bb->cs, bb->len, flush_flags); > + bb->len = emit_flush_invalidate(bb->cs, bb->len, flush_flags); > + flush_flags = xe_migrate_ccs_copy(m, bb, src_L0_ofs, src_is_pltt, > + src_L0_ofs, dst_is_pltt, > + src_L0, ccs_ofs, true); > + bb->len = emit_flush_invalidate(bb->cs, bb->len, flush_flags); > > - size -= src_L0; > - } > + size -= src_L0; > + } > > - xe_assert(xe, (batch_size_allocated == bb->len)); > - src_bo->bb_ccs[read_write] = bb; > + xe_assert(xe, (batch_size_allocated == bb->len)); > + src_bo->bb_ccs[read_write] = bb; > + > + xe_sriov_vf_ccs_rw_update_bb_addr(ctx); > + xe_sa_bo_sync_shadow(bb->bo); > + } > > - xe_sriov_vf_ccs_rw_update_bb_addr(ctx); > - xe_sa_bo_sync_shadow(bb->bo); > return 0; > } > > diff --git a/drivers/gpu/drm/xe/xe_sa.c b/drivers/gpu/drm/xe/xe_sa.c > index b738102575d4..4b3dcc7e5ae0 100644 > --- a/drivers/gpu/drm/xe/xe_sa.c > +++ b/drivers/gpu/drm/xe/xe_sa.c > @@ -175,6 +175,45 @@ struct drm_suballoc *__xe_sa_bo_new(struct xe_sa_manager *sa_manager, u32 size, > return drm_suballoc_new(&sa_manager->base, size, gfp, true, 0); > } > > +/** > + * xe_sa_bo_alloc() - Allocate uninitialized suballoc object. > + * @gfp: gfp flags used for memory allocation. > + * > + * Allocate memory for an uninitialized suballoc object. Intended usage is > + * allocate memory for suballoc object outside of a reclaim tainted context > + * and then be initialized at a later time in a reclaim tainted context. > + * > + * Return: a new uninitialized suballoc object, or an ERR_PTR(-ENOMEM). > + */ > +struct drm_suballoc *xe_sa_bo_alloc(gfp_t gfp) > +{ > + return drm_suballoc_alloc(gfp); > +} > + > +/** > + * xe_sa_bo_release() - Release memory for suballocation. > + * @sa: The struct drm_suballoc. > + */ > +void xe_sa_bo_release(struct drm_suballoc *sa) > +{ > + drm_suballoc_release(sa); > +} > + > +/** > + * xe_sa_bo_init() - Initialize a suballocation. > + * @sa_manager: pointer to the sa_manager > + * @sa: The struct drm_suballoc. > + * @size: number of bytes we want to suballocate. > + * > + * Try to make a suballocation on a pre-allocated suballoc object of size @size. > + * > + * Return: zero on success, errno on failure. > + */ > +int xe_sa_bo_init(struct xe_sa_manager *sa_manager, struct drm_suballoc *sa, size_t size) > +{ > + return drm_suballoc_init(&sa_manager->base, sa, size, true, 0); > +} > + > /** > * xe_sa_bo_flush_write() - Copy the data from the sub-allocation to the GPU memory. > * @sa_bo: the &drm_suballoc to flush > diff --git a/drivers/gpu/drm/xe/xe_sa.h b/drivers/gpu/drm/xe/xe_sa.h > index 05e9a4e00e78..156b6e6fa14b 100644 > --- a/drivers/gpu/drm/xe/xe_sa.h > +++ b/drivers/gpu/drm/xe/xe_sa.h > @@ -38,6 +38,9 @@ static inline struct drm_suballoc *xe_sa_bo_new(struct xe_sa_manager *sa_manager > return __xe_sa_bo_new(sa_manager, size, GFP_KERNEL); > } > > +struct drm_suballoc *xe_sa_bo_alloc(gfp_t gfp); > +void xe_sa_bo_release(struct drm_suballoc *sa); > +int xe_sa_bo_init(struct xe_sa_manager *sa_manager, struct drm_suballoc *sa, size_t size); > void xe_sa_bo_flush_write(struct drm_suballoc *sa_bo); > void xe_sa_bo_sync_read(struct drm_suballoc *sa_bo); > void xe_sa_bo_free(struct drm_suballoc *sa_bo, struct dma_fence *fence); ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [v5, 2/3] drm/xe/vf: Fix fs_reclaim warning with CCS save/restore BB allocation 2026-02-18 9:51 ` [v5, " Maarten Lankhorst @ 2026-02-18 15:52 ` K V P, Satyanarayana 0 siblings, 0 replies; 11+ messages in thread From: K V P, Satyanarayana @ 2026-02-18 15:52 UTC (permalink / raw) To: Maarten Lankhorst, intel-xe Cc: Matthew Brost, Michal Wajdeczko, Matthew Auld, Thomas Hellström [-- Attachment #1: Type: text/plain, Size: 14953 bytes --] On 18-Feb-26 3:21 PM, Maarten Lankhorst wrote: > Hey, > > A quick look at the series. It's a good idea to separate allocation from insertion > in this case, but it seems some small issues with the API remain. > > The first one is that you introduce another free function. It would be better to set > sa->manager = NULL in drm_suballoc_alloc(), and check for that in drm_suballoc_free(). > That removes the requirement of adding another free function, and making a mistake there. > And it nicely pairs alloc() with free() > > Additionally, you now have both drm_suballoc_init() and drm_suballoc_new(). > > I'd recommend renaming drm_suballoc_init() to drm_suballoc_insert(), and optionally > convert all existing users to use drm_suballoc_insert() > After that you only have a single API, and made the usage of it slightly more comprehensible. :-) > > With these changes, the flow is really nice: > - drm_suballoc_alloc() > - drm_suballoc_insert() > - Error checking, do some stuff here, finally > - drm_suballoc_free() > > And then you convert the existing users 1 by 1, until you can finally remove drm_suballoc_init(). Sent new version with drm_suballoc_init() updated to drm_suballoc_insert(). Will send a new series to remove drm_suballoc_new() later as this series is to fix an issue. -Satya. > Kind regards, > ~Maarten Lankhorst > > Den 2026-02-17 kl. 13:07, skrev Satyanarayana K V P: >> CCS save/restore batch buffers are attached during BO allocation and >> detached during BO teardown. The shrinker triggers xe_bo_move(), which is >> used for both allocation and deletion paths. >> >> When BO allocation and shrinking occur concurrently, a circular locking >> dependency involving fs_reclaim and swap_guard can occur, leading to a >> deadlock such as: >> Reviewed-by: Thomas Hellström<thomas.hellstrom@linux.intel.com> >> >> ====================================================== >> WARNING: possible circular locking dependency detected >> ------------------------------------------------------ >> >> CPU0 CPU1 >> ---- ---- >> lock(fs_reclaim); >> lock(&sa_manager->swap_guard); >> lock(fs_reclaim); >> lock(&sa_manager->swap_guard); >> >> *** DEADLOCK *** >> ===================================================== >> >> To avoid this, the BB pointer and SA are allocated using xe_bb_alloc() >> before taking lock and SA is initialized using xe_bb_init() preventing >> reclaim from being invoked in this context. >> >> Fixes: 864690cf4dd62 ("drm/xe/vf: Attach and detach CCS copy commands with BO") >> Signed-off-by: Satyanarayana K V P<satyanarayana.k.v.p@intel.com> >> Cc: Matthew Brost<matthew.brost@intel.com> >> Cc: Michal Wajdeczko<michal.wajdeczko@intel.com> >> Cc: Matthew Auld<matthew.auld@intel.com> >> Cc: Thomas Hellström<thomas.hellstrom@linux.intel.com> >> Reviewed-by: Thomas Hellström<thomas.hellstrom@linux.intel.com> >> >> --- >> V4 -> V5: >> - Removed enum xe_sriov_vf_ccs_rw_ctxs from xe_bb.h as it is not used >> any more (Michal). >> >> V3 -> V4: >> - Fixed some nits (Michal). >> >> V2 -> V3: >> - Updated commit message (Matt, Thomas & Christian). >> - Removed timeout logic from drm_suballoc_init(). (Thomas & Christian). >> >> V1 -> V2: >> - Splitted drm_suballoc_new() into drm_suballoc_alloc() and >> drm_suballoc_init() (Thomas). >> --- >> drivers/gpu/drm/xe/xe_bb.c | 72 ++++++++++++++++++------ >> drivers/gpu/drm/xe/xe_bb.h | 7 ++- >> drivers/gpu/drm/xe/xe_migrate.c | 99 ++++++++++++++++++--------------- >> drivers/gpu/drm/xe/xe_sa.c | 39 +++++++++++++ >> drivers/gpu/drm/xe/xe_sa.h | 3 + >> 5 files changed, 156 insertions(+), 64 deletions(-) >> >> diff --git a/drivers/gpu/drm/xe/xe_bb.c b/drivers/gpu/drm/xe/xe_bb.c >> index 8b678297aaa2..a991d9db8164 100644 >> --- a/drivers/gpu/drm/xe/xe_bb.c >> +++ b/drivers/gpu/drm/xe/xe_bb.c >> @@ -59,16 +59,64 @@ struct xe_bb *xe_bb_new(struct xe_gt *gt, u32 dwords, bool usm) >> return ERR_PTR(err); >> } >> >> -struct xe_bb *xe_bb_ccs_new(struct xe_gt *gt, u32 dwords, >> - enum xe_sriov_vf_ccs_rw_ctxs ctx_id) >> +/** >> + * xe_bb_alloc() - Allocate a new batch buffer structure >> + * @gt: the &xe_gt >> + * >> + * Allocates and initializes a new xe_bb structure with an associated >> + * uninitialized suballoc object. >> + * >> + * Returns: Batch buffer structure or an ERR_PTR(-ENOMEM). >> + */ >> +struct xe_bb *xe_bb_alloc(struct xe_gt *gt) >> { >> struct xe_bb *bb = kmalloc(sizeof(*bb), GFP_KERNEL); >> - struct xe_device *xe = gt_to_xe(gt); >> - struct xe_sa_manager *bb_pool; >> int err; >> >> if (!bb) >> return ERR_PTR(-ENOMEM); >> + >> + bb->bo = xe_sa_bo_alloc(GFP_KERNEL); >> + if (IS_ERR(bb->bo)) { >> + err = PTR_ERR(bb->bo); >> + goto err; >> + } >> + >> + return bb; >> + >> +err: >> + kfree(bb); >> + return ERR_PTR(err); >> +} >> + >> +/** >> + * xe_bb_release() - Release and free a batch buffer structure >> + * @bb: Batch buffer structure to release >> + * >> + * Releases the sub-allocated buffer object associated with the batch buffer >> + * and frees the xe_bb structure memory. >> + */ >> +void xe_bb_release(struct xe_bb *bb) >> +{ >> + xe_sa_bo_release(bb->bo); >> + kfree(bb); >> +} >> + >> +/** >> + * xe_bb_init() - Initialize a batch buffer with memory from a sub-allocator pool >> + * @bb: Batch buffer structure to initialize >> + * @bb_pool: Suballoc memory pool to allocate from >> + * @dwords: Number of dwords to be allocated >> + * >> + * Initializes the batch buffer by allocating memory from the specified >> + * suballoc pool. >> + * >> + * Return: 0 on success, negative error code on failure. >> + */ >> +int xe_bb_init(struct xe_bb *bb, struct xe_sa_manager *bb_pool, u32 dwords) >> +{ >> + int err; >> + >> /* >> * We need to allocate space for the requested number of dwords & >> * one additional MI_BATCH_BUFFER_END dword. Since the whole SA >> @@ -76,22 +124,14 @@ struct xe_bb *xe_bb_ccs_new(struct xe_gt *gt, u32 dwords, >> * is not over written when the last chunk of SA is allocated for BB. >> * So, this extra DW acts as a guard here. >> */ >> - >> - bb_pool = xe->sriov.vf.ccs.contexts[ctx_id].mem.ccs_bb_pool; >> - bb->bo = xe_sa_bo_new(bb_pool, 4 * (dwords + 1)); >> - >> - if (IS_ERR(bb->bo)) { >> - err = PTR_ERR(bb->bo); >> - goto err; >> - } >> + err = xe_sa_bo_init(bb_pool, bb->bo, 4 * (dwords + 1)); >> + if (err) >> + return err; >> >> bb->cs = xe_sa_bo_cpu_addr(bb->bo); >> bb->len = 0; >> >> - return bb; >> -err: >> - kfree(bb); >> - return ERR_PTR(err); >> + return 0; >> } >> >> static struct xe_sched_job * >> diff --git a/drivers/gpu/drm/xe/xe_bb.h b/drivers/gpu/drm/xe/xe_bb.h >> index 2a8adc9a6dee..5778699149ec 100644 >> --- a/drivers/gpu/drm/xe/xe_bb.h >> +++ b/drivers/gpu/drm/xe/xe_bb.h >> @@ -12,12 +12,13 @@ struct dma_fence; >> >> struct xe_gt; >> struct xe_exec_queue; >> +struct xe_sa_manager; >> struct xe_sched_job; >> -enum xe_sriov_vf_ccs_rw_ctxs; >> >> struct xe_bb *xe_bb_new(struct xe_gt *gt, u32 dwords, bool usm); >> -struct xe_bb *xe_bb_ccs_new(struct xe_gt *gt, u32 dwords, >> - enum xe_sriov_vf_ccs_rw_ctxs ctx_id); >> +struct xe_bb *xe_bb_alloc(struct xe_gt *gt); >> +void xe_bb_release(struct xe_bb *bb); >> +int xe_bb_init(struct xe_bb *bb, struct xe_sa_manager *bb_pool, u32 dwords); >> struct xe_sched_job *xe_bb_create_job(struct xe_exec_queue *q, >> struct xe_bb *bb); >> struct xe_sched_job *xe_bb_create_migration_job(struct xe_exec_queue *q, >> diff --git a/drivers/gpu/drm/xe/xe_migrate.c b/drivers/gpu/drm/xe/xe_migrate.c >> index 078a9bc2821d..d4cfc54d614b 100644 >> --- a/drivers/gpu/drm/xe/xe_migrate.c >> +++ b/drivers/gpu/drm/xe/xe_migrate.c >> @@ -25,6 +25,7 @@ >> #include "xe_exec_queue.h" >> #include "xe_ggtt.h" >> #include "xe_gt.h" >> +#include "xe_gt_printk.h" >> #include "xe_hw_engine.h" >> #include "xe_lrc.h" >> #include "xe_map.h" >> @@ -1148,65 +1149,73 @@ int xe_migrate_ccs_rw_copy(struct xe_tile *tile, struct xe_exec_queue *q, >> size -= src_L0; >> } >> >> + bb = xe_bb_alloc(gt); >> + if (IS_ERR(bb)) >> + return PTR_ERR(bb); >> + >> bb_pool = ctx->mem.ccs_bb_pool; >> - guard(mutex) (xe_sa_bo_swap_guard(bb_pool)); >> - xe_sa_bo_swap_shadow(bb_pool); >> + scoped_guard(mutex, xe_sa_bo_swap_guard(bb_pool)) { >> + xe_sa_bo_swap_shadow(bb_pool); >> + >> + err = xe_bb_init(bb, bb_pool, batch_size); >> + if (err) { >> + xe_gt_err(gt, "BB allocation failed.\n"); >> + xe_bb_release(bb); >> + return err; >> + } >> >> - bb = xe_bb_ccs_new(gt, batch_size, read_write); >> - if (IS_ERR(bb)) { >> - drm_err(&xe->drm, "BB allocation failed.\n"); >> - err = PTR_ERR(bb); >> - return err; >> - } >> + batch_size_allocated = batch_size; >> + size = xe_bo_size(src_bo); >> + batch_size = 0; >> >> - batch_size_allocated = batch_size; >> - size = xe_bo_size(src_bo); >> - batch_size = 0; >> + /* >> + * Emit PTE and copy commands here. >> + * The CCS copy command can only support limited size. If the size to be >> + * copied is more than the limit, divide copy into chunks. So, calculate >> + * sizes here again before copy command is emitted. >> + */ >> >> - /* >> - * Emit PTE and copy commands here. >> - * The CCS copy command can only support limited size. If the size to be >> - * copied is more than the limit, divide copy into chunks. So, calculate >> - * sizes here again before copy command is emitted. >> - */ >> - while (size) { >> - batch_size += 10; /* Flush + ggtt addr + 2 NOP */ >> - u32 flush_flags = 0; >> - u64 ccs_ofs, ccs_size; >> - u32 ccs_pt; >> + while (size) { >> + batch_size += 10; /* Flush + ggtt addr + 2 NOP */ >> + u32 flush_flags = 0; >> + u64 ccs_ofs, ccs_size; >> + u32 ccs_pt; >> >> - u32 avail_pts = max_mem_transfer_per_pass(xe) / LEVEL0_PAGE_TABLE_ENCODE_SIZE; >> + u32 avail_pts = max_mem_transfer_per_pass(xe) / >> + LEVEL0_PAGE_TABLE_ENCODE_SIZE; >> >> - src_L0 = xe_migrate_res_sizes(m, &src_it); >> + src_L0 = xe_migrate_res_sizes(m, &src_it); >> >> - batch_size += pte_update_size(m, false, src, &src_it, &src_L0, >> - &src_L0_ofs, &src_L0_pt, 0, 0, >> - avail_pts); >> + batch_size += pte_update_size(m, false, src, &src_it, &src_L0, >> + &src_L0_ofs, &src_L0_pt, 0, 0, >> + avail_pts); >> >> - ccs_size = xe_device_ccs_bytes(xe, src_L0); >> - batch_size += pte_update_size(m, 0, NULL, &ccs_it, &ccs_size, &ccs_ofs, >> - &ccs_pt, 0, avail_pts, avail_pts); >> - xe_assert(xe, IS_ALIGNED(ccs_it.start, PAGE_SIZE)); >> - batch_size += EMIT_COPY_CCS_DW; >> + ccs_size = xe_device_ccs_bytes(xe, src_L0); >> + batch_size += pte_update_size(m, 0, NULL, &ccs_it, &ccs_size, &ccs_ofs, >> + &ccs_pt, 0, avail_pts, avail_pts); >> + xe_assert(xe, IS_ALIGNED(ccs_it.start, PAGE_SIZE)); >> + batch_size += EMIT_COPY_CCS_DW; >> >> - emit_pte(m, bb, src_L0_pt, false, true, &src_it, src_L0, src); >> + emit_pte(m, bb, src_L0_pt, false, true, &src_it, src_L0, src); >> >> - emit_pte(m, bb, ccs_pt, false, false, &ccs_it, ccs_size, src); >> + emit_pte(m, bb, ccs_pt, false, false, &ccs_it, ccs_size, src); >> >> - bb->len = emit_flush_invalidate(bb->cs, bb->len, flush_flags); >> - flush_flags = xe_migrate_ccs_copy(m, bb, src_L0_ofs, src_is_pltt, >> - src_L0_ofs, dst_is_pltt, >> - src_L0, ccs_ofs, true); >> - bb->len = emit_flush_invalidate(bb->cs, bb->len, flush_flags); >> + bb->len = emit_flush_invalidate(bb->cs, bb->len, flush_flags); >> + flush_flags = xe_migrate_ccs_copy(m, bb, src_L0_ofs, src_is_pltt, >> + src_L0_ofs, dst_is_pltt, >> + src_L0, ccs_ofs, true); >> + bb->len = emit_flush_invalidate(bb->cs, bb->len, flush_flags); >> >> - size -= src_L0; >> - } >> + size -= src_L0; >> + } >> >> - xe_assert(xe, (batch_size_allocated == bb->len)); >> - src_bo->bb_ccs[read_write] = bb; >> + xe_assert(xe, (batch_size_allocated == bb->len)); >> + src_bo->bb_ccs[read_write] = bb; >> + >> + xe_sriov_vf_ccs_rw_update_bb_addr(ctx); >> + xe_sa_bo_sync_shadow(bb->bo); >> + } >> >> - xe_sriov_vf_ccs_rw_update_bb_addr(ctx); >> - xe_sa_bo_sync_shadow(bb->bo); >> return 0; >> } >> >> diff --git a/drivers/gpu/drm/xe/xe_sa.c b/drivers/gpu/drm/xe/xe_sa.c >> index b738102575d4..4b3dcc7e5ae0 100644 >> --- a/drivers/gpu/drm/xe/xe_sa.c >> +++ b/drivers/gpu/drm/xe/xe_sa.c >> @@ -175,6 +175,45 @@ struct drm_suballoc *__xe_sa_bo_new(struct xe_sa_manager *sa_manager, u32 size, >> return drm_suballoc_new(&sa_manager->base, size, gfp, true, 0); >> } >> >> +/** >> + * xe_sa_bo_alloc() - Allocate uninitialized suballoc object. >> + * @gfp: gfp flags used for memory allocation. >> + * >> + * Allocate memory for an uninitialized suballoc object. Intended usage is >> + * allocate memory for suballoc object outside of a reclaim tainted context >> + * and then be initialized at a later time in a reclaim tainted context. >> + * >> + * Return: a new uninitialized suballoc object, or an ERR_PTR(-ENOMEM). >> + */ >> +struct drm_suballoc *xe_sa_bo_alloc(gfp_t gfp) >> +{ >> + return drm_suballoc_alloc(gfp); >> +} >> + >> +/** >> + * xe_sa_bo_release() - Release memory for suballocation. >> + * @sa: The struct drm_suballoc. >> + */ >> +void xe_sa_bo_release(struct drm_suballoc *sa) >> +{ >> + drm_suballoc_release(sa); >> +} >> + >> +/** >> + * xe_sa_bo_init() - Initialize a suballocation. >> + * @sa_manager: pointer to the sa_manager >> + * @sa: The struct drm_suballoc. >> + * @size: number of bytes we want to suballocate. >> + * >> + * Try to make a suballocation on a pre-allocated suballoc object of size @size. >> + * >> + * Return: zero on success, errno on failure. >> + */ >> +int xe_sa_bo_init(struct xe_sa_manager *sa_manager, struct drm_suballoc *sa, size_t size) >> +{ >> + return drm_suballoc_init(&sa_manager->base, sa, size, true, 0); >> +} >> + >> /** >> * xe_sa_bo_flush_write() - Copy the data from the sub-allocation to the GPU memory. >> * @sa_bo: the &drm_suballoc to flush >> diff --git a/drivers/gpu/drm/xe/xe_sa.h b/drivers/gpu/drm/xe/xe_sa.h >> index 05e9a4e00e78..156b6e6fa14b 100644 >> --- a/drivers/gpu/drm/xe/xe_sa.h >> +++ b/drivers/gpu/drm/xe/xe_sa.h >> @@ -38,6 +38,9 @@ static inline struct drm_suballoc *xe_sa_bo_new(struct xe_sa_manager *sa_manager >> return __xe_sa_bo_new(sa_manager, size, GFP_KERNEL); >> } >> >> +struct drm_suballoc *xe_sa_bo_alloc(gfp_t gfp); >> +void xe_sa_bo_release(struct drm_suballoc *sa); >> +int xe_sa_bo_init(struct xe_sa_manager *sa_manager, struct drm_suballoc *sa, size_t size); >> void xe_sa_bo_flush_write(struct drm_suballoc *sa_bo); >> void xe_sa_bo_sync_read(struct drm_suballoc *sa_bo); >> void xe_sa_bo_free(struct drm_suballoc *sa_bo, struct dma_fence *fence); [-- Attachment #2: Type: text/html, Size: 15606 bytes --] ^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH v5 3/3] drm/xe/sa: Add lockdep annotations for SA manager swap_guard 2026-02-17 12:07 [PATCH v5 0/3] Fix fs_reclaim deadlock caused by CCS save/restore Satyanarayana K V P 2026-02-17 12:07 ` [PATCH v5 1/3] drm/sa: Split drm_suballoc_new() into SA alloc and init helpers Satyanarayana K V P 2026-02-17 12:07 ` [PATCH v5 2/3] drm/xe/vf: Fix fs_reclaim warning with CCS save/restore BB allocation Satyanarayana K V P @ 2026-02-17 12:07 ` Satyanarayana K V P 2026-02-17 13:56 ` ✗ CI.checkpatch: warning for Fix fs_reclaim deadlock caused by CCS save/restore (rev5) Patchwork ` (3 subsequent siblings) 6 siblings, 0 replies; 11+ messages in thread From: Satyanarayana K V P @ 2026-02-17 12:07 UTC (permalink / raw) To: intel-xe Cc: Satyanarayana K V P, Matthew Brost, Michal Wajdeczko, Matthew Auld, Thomas Hellström Annotate the SA manager init path to model taking swap_guard while under reclaim context. This helps lockdep catch potential circular dependencies between fs_reclaim and swap_guard in debug builds. Without this annotation, lockdep is unaware of this chain until the shrinker runs. Signed-off-by: Satyanarayana K V P <satyanarayana.k.v.p@intel.com> Suggested-by: Matthew Brost <matthew.brost@intel.com> Cc: Michal Wajdeczko <michal.wajdeczko@intel.com> Cc: Matthew Auld <matthew.auld@intel.com> Reviewed-by: Matthew Brost <matthew.brost@intel.com> Reviewed-by: Thomas Hellström <thomas.hellstrom@linux.intel.com> --- V4 -> V5: - Fixed typo in commit message (Michal). V3 -> V4: - None. V2 -> V3: - Updated commit message (Matt). V1 -> V2: - None. --- drivers/gpu/drm/xe/xe_sa.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/drivers/gpu/drm/xe/xe_sa.c b/drivers/gpu/drm/xe/xe_sa.c index 4b3dcc7e5ae0..443e823acddf 100644 --- a/drivers/gpu/drm/xe/xe_sa.c +++ b/drivers/gpu/drm/xe/xe_sa.c @@ -89,6 +89,12 @@ struct xe_sa_manager *__xe_sa_bo_manager_init(struct xe_tile *tile, u32 size, if (ret) return ERR_PTR(ret); + if (IS_ENABLED(CONFIG_PROVE_LOCKING)) { + fs_reclaim_acquire(GFP_KERNEL); + might_lock(&sa_manager->swap_guard); + fs_reclaim_release(GFP_KERNEL); + } + shadow = xe_managed_bo_create_pin_map(xe, tile, size, XE_BO_FLAG_VRAM_IF_DGFX(tile) | XE_BO_FLAG_GGTT | -- 2.43.0 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* ✗ CI.checkpatch: warning for Fix fs_reclaim deadlock caused by CCS save/restore (rev5) 2026-02-17 12:07 [PATCH v5 0/3] Fix fs_reclaim deadlock caused by CCS save/restore Satyanarayana K V P ` (2 preceding siblings ...) 2026-02-17 12:07 ` [PATCH v5 3/3] drm/xe/sa: Add lockdep annotations for SA manager swap_guard Satyanarayana K V P @ 2026-02-17 13:56 ` Patchwork 2026-02-17 13:58 ` ✓ CI.KUnit: success " Patchwork ` (2 subsequent siblings) 6 siblings, 0 replies; 11+ messages in thread From: Patchwork @ 2026-02-17 13:56 UTC (permalink / raw) To: Satyanarayana K V P; +Cc: intel-xe == Series Details == Series: Fix fs_reclaim deadlock caused by CCS save/restore (rev5) URL : https://patchwork.freedesktop.org/series/160841/ State : warning == Summary == + KERNEL=/kernel + git clone https://gitlab.freedesktop.org/drm/maintainer-tools mt Cloning into 'mt'... warning: redirecting to https://gitlab.freedesktop.org/drm/maintainer-tools.git/ + git -C mt rev-list -n1 origin/master 1f57ba1afceae32108bd24770069f764d940a0e4 + cd /kernel + git config --global --add safe.directory /kernel + git log -n1 commit c26319d55188b536dcc04e30bf398df30f4377b6 Author: Satyanarayana K V P <satyanarayana.k.v.p@intel.com> Date: Tue Feb 17 12:07:49 2026 +0000 drm/xe/sa: Add lockdep annotations for SA manager swap_guard Annotate the SA manager init path to model taking swap_guard while under reclaim context. This helps lockdep catch potential circular dependencies between fs_reclaim and swap_guard in debug builds. Without this annotation, lockdep is unaware of this chain until the shrinker runs. Signed-off-by: Satyanarayana K V P <satyanarayana.k.v.p@intel.com> Suggested-by: Matthew Brost <matthew.brost@intel.com> Cc: Michal Wajdeczko <michal.wajdeczko@intel.com> Cc: Matthew Auld <matthew.auld@intel.com> Reviewed-by: Matthew Brost <matthew.brost@intel.com> Reviewed-by: Thomas Hellström <thomas.hellstrom@linux.intel.com> + /mt/dim checkpatch 29942dc4e7d82b945c6c424bbb8af6ff572e235c drm-intel 4ebb94892b66 drm/sa: Split drm_suballoc_new() into SA alloc and init helpers 9f33e97d6a5e drm/xe/vf: Fix fs_reclaim warning with CCS save/restore BB allocation -:43: WARNING:BAD_SIGN_OFF: Duplicate signature #43: Reviewed-by: Thomas Hellström <thomas.hellstrom@linux.intel.com> total: 0 errors, 1 warnings, 0 checks, 289 lines checked c26319d55188 drm/xe/sa: Add lockdep annotations for SA manager swap_guard ^ permalink raw reply [flat|nested] 11+ messages in thread
* ✓ CI.KUnit: success for Fix fs_reclaim deadlock caused by CCS save/restore (rev5) 2026-02-17 12:07 [PATCH v5 0/3] Fix fs_reclaim deadlock caused by CCS save/restore Satyanarayana K V P ` (3 preceding siblings ...) 2026-02-17 13:56 ` ✗ CI.checkpatch: warning for Fix fs_reclaim deadlock caused by CCS save/restore (rev5) Patchwork @ 2026-02-17 13:58 ` Patchwork 2026-02-17 14:36 ` ✓ Xe.CI.BAT: " Patchwork 2026-02-17 18:14 ` ✗ Xe.CI.FULL: failure " Patchwork 6 siblings, 0 replies; 11+ messages in thread From: Patchwork @ 2026-02-17 13:58 UTC (permalink / raw) To: Satyanarayana K V P; +Cc: intel-xe == Series Details == Series: Fix fs_reclaim deadlock caused by CCS save/restore (rev5) URL : https://patchwork.freedesktop.org/series/160841/ State : success == Summary == + trap cleanup EXIT + /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/xe/.kunitconfig [13:56:52] Configuring KUnit Kernel ... Generating .config ... Populating config with: $ make ARCH=um O=.kunit olddefconfig [13:56:56] 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=25 [13:57:35] Starting KUnit Kernel (1/1)... [13:57:35] ============================================================ Running tests with: $ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt [13:57:35] ================== guc_buf (11 subtests) =================== [13:57:35] [PASSED] test_smallest [13:57:35] [PASSED] test_largest [13:57:35] [PASSED] test_granular [13:57:35] [PASSED] test_unique [13:57:35] [PASSED] test_overlap [13:57:35] [PASSED] test_reusable [13:57:35] [PASSED] test_too_big [13:57:35] [PASSED] test_flush [13:57:35] [PASSED] test_lookup [13:57:35] [PASSED] test_data [13:57:35] [PASSED] test_class [13:57:35] ===================== [PASSED] guc_buf ===================== [13:57:35] =================== guc_dbm (7 subtests) =================== [13:57:35] [PASSED] test_empty [13:57:35] [PASSED] test_default [13:57:35] ======================== test_size ======================== [13:57:35] [PASSED] 4 [13:57:35] [PASSED] 8 [13:57:35] [PASSED] 32 [13:57:35] [PASSED] 256 [13:57:35] ==================== [PASSED] test_size ==================== [13:57:35] ======================= test_reuse ======================== [13:57:35] [PASSED] 4 [13:57:35] [PASSED] 8 [13:57:35] [PASSED] 32 [13:57:35] [PASSED] 256 [13:57:35] =================== [PASSED] test_reuse ==================== [13:57:35] =================== test_range_overlap ==================== [13:57:35] [PASSED] 4 [13:57:35] [PASSED] 8 [13:57:35] [PASSED] 32 [13:57:35] [PASSED] 256 [13:57:35] =============== [PASSED] test_range_overlap ================ [13:57:35] =================== test_range_compact ==================== [13:57:35] [PASSED] 4 [13:57:35] [PASSED] 8 [13:57:35] [PASSED] 32 [13:57:35] [PASSED] 256 [13:57:35] =============== [PASSED] test_range_compact ================ [13:57:35] ==================== test_range_spare ===================== [13:57:35] [PASSED] 4 [13:57:35] [PASSED] 8 [13:57:35] [PASSED] 32 [13:57:35] [PASSED] 256 [13:57:35] ================ [PASSED] test_range_spare ================= [13:57:35] ===================== [PASSED] guc_dbm ===================== [13:57:35] =================== guc_idm (6 subtests) =================== [13:57:35] [PASSED] bad_init [13:57:35] [PASSED] no_init [13:57:35] [PASSED] init_fini [13:57:35] [PASSED] check_used [13:57:35] [PASSED] check_quota [13:57:35] [PASSED] check_all [13:57:35] ===================== [PASSED] guc_idm ===================== [13:57:35] ================== no_relay (3 subtests) =================== [13:57:35] [PASSED] xe_drops_guc2pf_if_not_ready [13:57:35] [PASSED] xe_drops_guc2vf_if_not_ready [13:57:35] [PASSED] xe_rejects_send_if_not_ready [13:57:35] ==================== [PASSED] no_relay ===================== [13:57:35] ================== pf_relay (14 subtests) ================== [13:57:35] [PASSED] pf_rejects_guc2pf_too_short [13:57:35] [PASSED] pf_rejects_guc2pf_too_long [13:57:35] [PASSED] pf_rejects_guc2pf_no_payload [13:57:35] [PASSED] pf_fails_no_payload [13:57:35] [PASSED] pf_fails_bad_origin [13:57:35] [PASSED] pf_fails_bad_type [13:57:35] [PASSED] pf_txn_reports_error [13:57:35] [PASSED] pf_txn_sends_pf2guc [13:57:35] [PASSED] pf_sends_pf2guc [13:57:35] [SKIPPED] pf_loopback_nop [13:57:35] [SKIPPED] pf_loopback_echo [13:57:35] [SKIPPED] pf_loopback_fail [13:57:35] [SKIPPED] pf_loopback_busy [13:57:35] [SKIPPED] pf_loopback_retry [13:57:35] ==================== [PASSED] pf_relay ===================== [13:57:35] ================== vf_relay (3 subtests) =================== [13:57:35] [PASSED] vf_rejects_guc2vf_too_short [13:57:35] [PASSED] vf_rejects_guc2vf_too_long [13:57:35] [PASSED] vf_rejects_guc2vf_no_payload [13:57:35] ==================== [PASSED] vf_relay ===================== [13:57:35] ================ pf_gt_config (6 subtests) ================= [13:57:35] [PASSED] fair_contexts_1vf [13:57:35] [PASSED] fair_doorbells_1vf [13:57:35] [PASSED] fair_ggtt_1vf [13:57:35] ====================== fair_contexts ====================== [13:57:35] [PASSED] 1 VF [13:57:35] [PASSED] 2 VFs [13:57:35] [PASSED] 3 VFs [13:57:35] [PASSED] 4 VFs [13:57:35] [PASSED] 5 VFs [13:57:35] [PASSED] 6 VFs [13:57:35] [PASSED] 7 VFs [13:57:35] [PASSED] 8 VFs [13:57:35] [PASSED] 9 VFs [13:57:35] [PASSED] 10 VFs [13:57:35] [PASSED] 11 VFs [13:57:35] [PASSED] 12 VFs [13:57:35] [PASSED] 13 VFs [13:57:35] [PASSED] 14 VFs [13:57:35] [PASSED] 15 VFs [13:57:35] [PASSED] 16 VFs [13:57:35] [PASSED] 17 VFs [13:57:35] [PASSED] 18 VFs [13:57:35] [PASSED] 19 VFs [13:57:35] [PASSED] 20 VFs [13:57:35] [PASSED] 21 VFs [13:57:35] [PASSED] 22 VFs [13:57:35] [PASSED] 23 VFs [13:57:35] [PASSED] 24 VFs [13:57:35] [PASSED] 25 VFs [13:57:35] [PASSED] 26 VFs [13:57:35] [PASSED] 27 VFs [13:57:35] [PASSED] 28 VFs [13:57:35] [PASSED] 29 VFs [13:57:35] [PASSED] 30 VFs [13:57:35] [PASSED] 31 VFs [13:57:35] [PASSED] 32 VFs [13:57:35] [PASSED] 33 VFs [13:57:35] [PASSED] 34 VFs [13:57:35] [PASSED] 35 VFs [13:57:35] [PASSED] 36 VFs [13:57:35] [PASSED] 37 VFs [13:57:35] [PASSED] 38 VFs [13:57:35] [PASSED] 39 VFs [13:57:35] [PASSED] 40 VFs [13:57:35] [PASSED] 41 VFs [13:57:35] [PASSED] 42 VFs [13:57:35] [PASSED] 43 VFs [13:57:35] [PASSED] 44 VFs [13:57:35] [PASSED] 45 VFs [13:57:35] [PASSED] 46 VFs [13:57:35] [PASSED] 47 VFs [13:57:35] [PASSED] 48 VFs [13:57:35] [PASSED] 49 VFs [13:57:35] [PASSED] 50 VFs [13:57:35] [PASSED] 51 VFs [13:57:35] [PASSED] 52 VFs [13:57:35] [PASSED] 53 VFs [13:57:35] [PASSED] 54 VFs [13:57:35] [PASSED] 55 VFs [13:57:35] [PASSED] 56 VFs [13:57:35] [PASSED] 57 VFs [13:57:35] [PASSED] 58 VFs [13:57:35] [PASSED] 59 VFs [13:57:35] [PASSED] 60 VFs [13:57:35] [PASSED] 61 VFs [13:57:35] [PASSED] 62 VFs [13:57:35] [PASSED] 63 VFs [13:57:35] ================== [PASSED] fair_contexts ================== [13:57:35] ===================== fair_doorbells ====================== [13:57:35] [PASSED] 1 VF [13:57:35] [PASSED] 2 VFs [13:57:35] [PASSED] 3 VFs [13:57:35] [PASSED] 4 VFs [13:57:35] [PASSED] 5 VFs [13:57:35] [PASSED] 6 VFs [13:57:35] [PASSED] 7 VFs [13:57:35] [PASSED] 8 VFs [13:57:35] [PASSED] 9 VFs [13:57:35] [PASSED] 10 VFs [13:57:35] [PASSED] 11 VFs [13:57:35] [PASSED] 12 VFs [13:57:35] [PASSED] 13 VFs [13:57:35] [PASSED] 14 VFs [13:57:35] [PASSED] 15 VFs [13:57:35] [PASSED] 16 VFs [13:57:35] [PASSED] 17 VFs [13:57:35] [PASSED] 18 VFs [13:57:35] [PASSED] 19 VFs [13:57:35] [PASSED] 20 VFs [13:57:35] [PASSED] 21 VFs [13:57:35] [PASSED] 22 VFs [13:57:35] [PASSED] 23 VFs [13:57:35] [PASSED] 24 VFs [13:57:35] [PASSED] 25 VFs [13:57:35] [PASSED] 26 VFs [13:57:35] [PASSED] 27 VFs [13:57:35] [PASSED] 28 VFs [13:57:35] [PASSED] 29 VFs [13:57:35] [PASSED] 30 VFs [13:57:35] [PASSED] 31 VFs [13:57:35] [PASSED] 32 VFs [13:57:35] [PASSED] 33 VFs [13:57:35] [PASSED] 34 VFs [13:57:35] [PASSED] 35 VFs [13:57:35] [PASSED] 36 VFs [13:57:35] [PASSED] 37 VFs [13:57:35] [PASSED] 38 VFs [13:57:35] [PASSED] 39 VFs [13:57:35] [PASSED] 40 VFs [13:57:35] [PASSED] 41 VFs [13:57:35] [PASSED] 42 VFs [13:57:35] [PASSED] 43 VFs [13:57:35] [PASSED] 44 VFs [13:57:35] [PASSED] 45 VFs [13:57:35] [PASSED] 46 VFs [13:57:35] [PASSED] 47 VFs [13:57:35] [PASSED] 48 VFs [13:57:35] [PASSED] 49 VFs [13:57:35] [PASSED] 50 VFs [13:57:35] [PASSED] 51 VFs [13:57:35] [PASSED] 52 VFs [13:57:35] [PASSED] 53 VFs [13:57:35] [PASSED] 54 VFs [13:57:35] [PASSED] 55 VFs [13:57:35] [PASSED] 56 VFs [13:57:35] [PASSED] 57 VFs [13:57:35] [PASSED] 58 VFs [13:57:35] [PASSED] 59 VFs [13:57:35] [PASSED] 60 VFs [13:57:35] [PASSED] 61 VFs [13:57:35] [PASSED] 62 VFs [13:57:35] [PASSED] 63 VFs [13:57:35] ================= [PASSED] fair_doorbells ================== [13:57:35] ======================== fair_ggtt ======================== [13:57:35] [PASSED] 1 VF [13:57:35] [PASSED] 2 VFs [13:57:35] [PASSED] 3 VFs [13:57:35] [PASSED] 4 VFs [13:57:35] [PASSED] 5 VFs [13:57:35] [PASSED] 6 VFs [13:57:35] [PASSED] 7 VFs [13:57:35] [PASSED] 8 VFs [13:57:35] [PASSED] 9 VFs [13:57:35] [PASSED] 10 VFs [13:57:35] [PASSED] 11 VFs [13:57:35] [PASSED] 12 VFs [13:57:35] [PASSED] 13 VFs [13:57:35] [PASSED] 14 VFs [13:57:35] [PASSED] 15 VFs [13:57:35] [PASSED] 16 VFs [13:57:35] [PASSED] 17 VFs [13:57:35] [PASSED] 18 VFs [13:57:35] [PASSED] 19 VFs [13:57:35] [PASSED] 20 VFs [13:57:35] [PASSED] 21 VFs [13:57:35] [PASSED] 22 VFs [13:57:35] [PASSED] 23 VFs [13:57:35] [PASSED] 24 VFs [13:57:35] [PASSED] 25 VFs [13:57:35] [PASSED] 26 VFs [13:57:35] [PASSED] 27 VFs [13:57:35] [PASSED] 28 VFs [13:57:35] [PASSED] 29 VFs [13:57:35] [PASSED] 30 VFs [13:57:35] [PASSED] 31 VFs [13:57:35] [PASSED] 32 VFs [13:57:35] [PASSED] 33 VFs [13:57:35] [PASSED] 34 VFs [13:57:35] [PASSED] 35 VFs [13:57:35] [PASSED] 36 VFs [13:57:35] [PASSED] 37 VFs [13:57:35] [PASSED] 38 VFs [13:57:35] [PASSED] 39 VFs [13:57:35] [PASSED] 40 VFs [13:57:35] [PASSED] 41 VFs [13:57:35] [PASSED] 42 VFs [13:57:35] [PASSED] 43 VFs [13:57:35] [PASSED] 44 VFs [13:57:35] [PASSED] 45 VFs [13:57:35] [PASSED] 46 VFs [13:57:35] [PASSED] 47 VFs [13:57:35] [PASSED] 48 VFs [13:57:35] [PASSED] 49 VFs [13:57:35] [PASSED] 50 VFs [13:57:35] [PASSED] 51 VFs [13:57:35] [PASSED] 52 VFs [13:57:35] [PASSED] 53 VFs [13:57:35] [PASSED] 54 VFs [13:57:35] [PASSED] 55 VFs [13:57:35] [PASSED] 56 VFs [13:57:35] [PASSED] 57 VFs [13:57:35] [PASSED] 58 VFs [13:57:35] [PASSED] 59 VFs [13:57:35] [PASSED] 60 VFs [13:57:35] [PASSED] 61 VFs [13:57:35] [PASSED] 62 VFs [13:57:35] [PASSED] 63 VFs [13:57:35] ==================== [PASSED] fair_ggtt ==================== [13:57:35] ================== [PASSED] pf_gt_config =================== [13:57:35] ===================== lmtt (1 subtest) ===================== [13:57:35] ======================== test_ops ========================= [13:57:35] [PASSED] 2-level [13:57:35] [PASSED] multi-level [13:57:35] ==================== [PASSED] test_ops ===================== [13:57:35] ====================== [PASSED] lmtt ======================= [13:57:35] ================= pf_service (11 subtests) ================= [13:57:35] [PASSED] pf_negotiate_any [13:57:35] [PASSED] pf_negotiate_base_match [13:57:35] [PASSED] pf_negotiate_base_newer [13:57:35] [PASSED] pf_negotiate_base_next [13:57:35] [SKIPPED] pf_negotiate_base_older [13:57:35] [PASSED] pf_negotiate_base_prev [13:57:35] [PASSED] pf_negotiate_latest_match [13:57:35] [PASSED] pf_negotiate_latest_newer [13:57:35] [PASSED] pf_negotiate_latest_next [13:57:35] [SKIPPED] pf_negotiate_latest_older [13:57:35] [SKIPPED] pf_negotiate_latest_prev [13:57:35] =================== [PASSED] pf_service ==================== [13:57:35] ================= xe_guc_g2g (2 subtests) ================== [13:57:35] ============== xe_live_guc_g2g_kunit_default ============== [13:57:35] ========= [SKIPPED] xe_live_guc_g2g_kunit_default ========== [13:57:35] ============== xe_live_guc_g2g_kunit_allmem =============== [13:57:35] ========== [SKIPPED] xe_live_guc_g2g_kunit_allmem ========== [13:57:35] =================== [SKIPPED] xe_guc_g2g =================== [13:57:35] =================== xe_mocs (2 subtests) =================== [13:57:35] ================ xe_live_mocs_kernel_kunit ================ [13:57:35] =========== [SKIPPED] xe_live_mocs_kernel_kunit ============ [13:57:35] ================ xe_live_mocs_reset_kunit ================= [13:57:35] ============ [SKIPPED] xe_live_mocs_reset_kunit ============ [13:57:35] ==================== [SKIPPED] xe_mocs ===================== [13:57:35] ================= xe_migrate (2 subtests) ================== [13:57:35] ================= xe_migrate_sanity_kunit ================= [13:57:35] ============ [SKIPPED] xe_migrate_sanity_kunit ============= [13:57:35] ================== xe_validate_ccs_kunit ================== [13:57:35] ============= [SKIPPED] xe_validate_ccs_kunit ============== [13:57:35] =================== [SKIPPED] xe_migrate =================== [13:57:35] ================== xe_dma_buf (1 subtest) ================== [13:57:35] ==================== xe_dma_buf_kunit ===================== [13:57:35] ================ [SKIPPED] xe_dma_buf_kunit ================ [13:57:35] =================== [SKIPPED] xe_dma_buf =================== [13:57:35] ================= xe_bo_shrink (1 subtest) ================= [13:57:35] =================== xe_bo_shrink_kunit ==================== [13:57:35] =============== [SKIPPED] xe_bo_shrink_kunit =============== [13:57:35] ================== [SKIPPED] xe_bo_shrink ================== [13:57:35] ==================== xe_bo (2 subtests) ==================== [13:57:35] ================== xe_ccs_migrate_kunit =================== [13:57:35] ============== [SKIPPED] xe_ccs_migrate_kunit ============== [13:57:35] ==================== xe_bo_evict_kunit ==================== [13:57:35] =============== [SKIPPED] xe_bo_evict_kunit ================ [13:57:35] ===================== [SKIPPED] xe_bo ====================== [13:57:35] ==================== args (13 subtests) ==================== [13:57:35] [PASSED] count_args_test [13:57:35] [PASSED] call_args_example [13:57:35] [PASSED] call_args_test [13:57:35] [PASSED] drop_first_arg_example [13:57:35] [PASSED] drop_first_arg_test [13:57:35] [PASSED] first_arg_example [13:57:35] [PASSED] first_arg_test [13:57:35] [PASSED] last_arg_example [13:57:35] [PASSED] last_arg_test [13:57:35] [PASSED] pick_arg_example [13:57:35] [PASSED] if_args_example [13:57:35] [PASSED] if_args_test [13:57:35] [PASSED] sep_comma_example [13:57:35] ====================== [PASSED] args ======================= [13:57:35] =================== xe_pci (3 subtests) ==================== [13:57:35] ==================== check_graphics_ip ==================== [13:57:35] [PASSED] 12.00 Xe_LP [13:57:35] [PASSED] 12.10 Xe_LP+ [13:57:35] [PASSED] 12.55 Xe_HPG [13:57:35] [PASSED] 12.60 Xe_HPC [13:57:35] [PASSED] 12.70 Xe_LPG [13:57:35] [PASSED] 12.71 Xe_LPG [13:57:35] [PASSED] 12.74 Xe_LPG+ [13:57:35] [PASSED] 20.01 Xe2_HPG [13:57:35] [PASSED] 20.02 Xe2_HPG [13:57:35] [PASSED] 20.04 Xe2_LPG [13:57:35] [PASSED] 30.00 Xe3_LPG [13:57:35] [PASSED] 30.01 Xe3_LPG [13:57:35] [PASSED] 30.03 Xe3_LPG [13:57:35] [PASSED] 30.04 Xe3_LPG [13:57:35] [PASSED] 30.05 Xe3_LPG [13:57:35] [PASSED] 35.10 Xe3p_LPG [13:57:35] [PASSED] 35.11 Xe3p_XPC [13:57:35] ================ [PASSED] check_graphics_ip ================ [13:57:35] ===================== check_media_ip ====================== [13:57:35] [PASSED] 12.00 Xe_M [13:57:35] [PASSED] 12.55 Xe_HPM [13:57:35] [PASSED] 13.00 Xe_LPM+ [13:57:35] [PASSED] 13.01 Xe2_HPM [13:57:35] [PASSED] 20.00 Xe2_LPM [13:57:35] [PASSED] 30.00 Xe3_LPM [13:57:35] [PASSED] 30.02 Xe3_LPM [13:57:35] [PASSED] 35.00 Xe3p_LPM [13:57:35] [PASSED] 35.03 Xe3p_HPM [13:57:35] ================= [PASSED] check_media_ip ================== [13:57:35] =================== check_platform_desc =================== [13:57:35] [PASSED] 0x9A60 (TIGERLAKE) [13:57:35] [PASSED] 0x9A68 (TIGERLAKE) [13:57:35] [PASSED] 0x9A70 (TIGERLAKE) [13:57:35] [PASSED] 0x9A40 (TIGERLAKE) [13:57:35] [PASSED] 0x9A49 (TIGERLAKE) [13:57:35] [PASSED] 0x9A59 (TIGERLAKE) [13:57:35] [PASSED] 0x9A78 (TIGERLAKE) [13:57:35] [PASSED] 0x9AC0 (TIGERLAKE) [13:57:35] [PASSED] 0x9AC9 (TIGERLAKE) [13:57:35] [PASSED] 0x9AD9 (TIGERLAKE) [13:57:35] [PASSED] 0x9AF8 (TIGERLAKE) [13:57:35] [PASSED] 0x4C80 (ROCKETLAKE) [13:57:35] [PASSED] 0x4C8A (ROCKETLAKE) [13:57:35] [PASSED] 0x4C8B (ROCKETLAKE) [13:57:35] [PASSED] 0x4C8C (ROCKETLAKE) [13:57:35] [PASSED] 0x4C90 (ROCKETLAKE) [13:57:35] [PASSED] 0x4C9A (ROCKETLAKE) [13:57:35] [PASSED] 0x4680 (ALDERLAKE_S) [13:57:35] [PASSED] 0x4682 (ALDERLAKE_S) [13:57:35] [PASSED] 0x4688 (ALDERLAKE_S) [13:57:35] [PASSED] 0x468A (ALDERLAKE_S) [13:57:35] [PASSED] 0x468B (ALDERLAKE_S) [13:57:35] [PASSED] 0x4690 (ALDERLAKE_S) [13:57:35] [PASSED] 0x4692 (ALDERLAKE_S) [13:57:35] [PASSED] 0x4693 (ALDERLAKE_S) [13:57:35] [PASSED] 0x46A0 (ALDERLAKE_P) [13:57:35] [PASSED] 0x46A1 (ALDERLAKE_P) [13:57:35] [PASSED] 0x46A2 (ALDERLAKE_P) [13:57:35] [PASSED] 0x46A3 (ALDERLAKE_P) [13:57:35] [PASSED] 0x46A6 (ALDERLAKE_P) [13:57:35] [PASSED] 0x46A8 (ALDERLAKE_P) [13:57:35] [PASSED] 0x46AA (ALDERLAKE_P) [13:57:35] [PASSED] 0x462A (ALDERLAKE_P) [13:57:35] [PASSED] 0x4626 (ALDERLAKE_P) stty: 'standard input': Inappropriate ioctl for device [13:57:35] [PASSED] 0x4628 (ALDERLAKE_P) [13:57:35] [PASSED] 0x46B0 (ALDERLAKE_P) [13:57:35] [PASSED] 0x46B1 (ALDERLAKE_P) [13:57:35] [PASSED] 0x46B2 (ALDERLAKE_P) [13:57:35] [PASSED] 0x46B3 (ALDERLAKE_P) [13:57:35] [PASSED] 0x46C0 (ALDERLAKE_P) [13:57:35] [PASSED] 0x46C1 (ALDERLAKE_P) [13:57:35] [PASSED] 0x46C2 (ALDERLAKE_P) [13:57:35] [PASSED] 0x46C3 (ALDERLAKE_P) [13:57:35] [PASSED] 0x46D0 (ALDERLAKE_N) [13:57:35] [PASSED] 0x46D1 (ALDERLAKE_N) [13:57:35] [PASSED] 0x46D2 (ALDERLAKE_N) [13:57:35] [PASSED] 0x46D3 (ALDERLAKE_N) [13:57:35] [PASSED] 0x46D4 (ALDERLAKE_N) [13:57:35] [PASSED] 0xA721 (ALDERLAKE_P) [13:57:35] [PASSED] 0xA7A1 (ALDERLAKE_P) [13:57:35] [PASSED] 0xA7A9 (ALDERLAKE_P) [13:57:35] [PASSED] 0xA7AC (ALDERLAKE_P) [13:57:35] [PASSED] 0xA7AD (ALDERLAKE_P) [13:57:35] [PASSED] 0xA720 (ALDERLAKE_P) [13:57:35] [PASSED] 0xA7A0 (ALDERLAKE_P) [13:57:35] [PASSED] 0xA7A8 (ALDERLAKE_P) [13:57:35] [PASSED] 0xA7AA (ALDERLAKE_P) [13:57:35] [PASSED] 0xA7AB (ALDERLAKE_P) [13:57:35] [PASSED] 0xA780 (ALDERLAKE_S) [13:57:35] [PASSED] 0xA781 (ALDERLAKE_S) [13:57:35] [PASSED] 0xA782 (ALDERLAKE_S) [13:57:35] [PASSED] 0xA783 (ALDERLAKE_S) [13:57:35] [PASSED] 0xA788 (ALDERLAKE_S) [13:57:35] [PASSED] 0xA789 (ALDERLAKE_S) [13:57:35] [PASSED] 0xA78A (ALDERLAKE_S) [13:57:35] [PASSED] 0xA78B (ALDERLAKE_S) [13:57:35] [PASSED] 0x4905 (DG1) [13:57:35] [PASSED] 0x4906 (DG1) [13:57:35] [PASSED] 0x4907 (DG1) [13:57:35] [PASSED] 0x4908 (DG1) [13:57:35] [PASSED] 0x4909 (DG1) [13:57:35] [PASSED] 0x56C0 (DG2) [13:57:35] [PASSED] 0x56C2 (DG2) [13:57:35] [PASSED] 0x56C1 (DG2) [13:57:35] [PASSED] 0x7D51 (METEORLAKE) [13:57:35] [PASSED] 0x7DD1 (METEORLAKE) [13:57:35] [PASSED] 0x7D41 (METEORLAKE) [13:57:35] [PASSED] 0x7D67 (METEORLAKE) [13:57:35] [PASSED] 0xB640 (METEORLAKE) [13:57:35] [PASSED] 0x56A0 (DG2) [13:57:35] [PASSED] 0x56A1 (DG2) [13:57:35] [PASSED] 0x56A2 (DG2) [13:57:35] [PASSED] 0x56BE (DG2) [13:57:35] [PASSED] 0x56BF (DG2) [13:57:35] [PASSED] 0x5690 (DG2) [13:57:35] [PASSED] 0x5691 (DG2) [13:57:35] [PASSED] 0x5692 (DG2) [13:57:35] [PASSED] 0x56A5 (DG2) [13:57:35] [PASSED] 0x56A6 (DG2) [13:57:35] [PASSED] 0x56B0 (DG2) [13:57:35] [PASSED] 0x56B1 (DG2) [13:57:35] [PASSED] 0x56BA (DG2) [13:57:35] [PASSED] 0x56BB (DG2) [13:57:35] [PASSED] 0x56BC (DG2) [13:57:35] [PASSED] 0x56BD (DG2) [13:57:35] [PASSED] 0x5693 (DG2) [13:57:35] [PASSED] 0x5694 (DG2) [13:57:35] [PASSED] 0x5695 (DG2) [13:57:35] [PASSED] 0x56A3 (DG2) [13:57:35] [PASSED] 0x56A4 (DG2) [13:57:35] [PASSED] 0x56B2 (DG2) [13:57:35] [PASSED] 0x56B3 (DG2) [13:57:35] [PASSED] 0x5696 (DG2) [13:57:35] [PASSED] 0x5697 (DG2) [13:57:35] [PASSED] 0xB69 (PVC) [13:57:35] [PASSED] 0xB6E (PVC) [13:57:35] [PASSED] 0xBD4 (PVC) [13:57:35] [PASSED] 0xBD5 (PVC) [13:57:35] [PASSED] 0xBD6 (PVC) [13:57:35] [PASSED] 0xBD7 (PVC) [13:57:35] [PASSED] 0xBD8 (PVC) [13:57:35] [PASSED] 0xBD9 (PVC) [13:57:35] [PASSED] 0xBDA (PVC) [13:57:35] [PASSED] 0xBDB (PVC) [13:57:35] [PASSED] 0xBE0 (PVC) [13:57:35] [PASSED] 0xBE1 (PVC) [13:57:35] [PASSED] 0xBE5 (PVC) [13:57:35] [PASSED] 0x7D40 (METEORLAKE) [13:57:35] [PASSED] 0x7D45 (METEORLAKE) [13:57:35] [PASSED] 0x7D55 (METEORLAKE) [13:57:35] [PASSED] 0x7D60 (METEORLAKE) [13:57:35] [PASSED] 0x7DD5 (METEORLAKE) [13:57:35] [PASSED] 0x6420 (LUNARLAKE) [13:57:35] [PASSED] 0x64A0 (LUNARLAKE) [13:57:35] [PASSED] 0x64B0 (LUNARLAKE) [13:57:35] [PASSED] 0xE202 (BATTLEMAGE) [13:57:35] [PASSED] 0xE209 (BATTLEMAGE) [13:57:35] [PASSED] 0xE20B (BATTLEMAGE) [13:57:35] [PASSED] 0xE20C (BATTLEMAGE) [13:57:35] [PASSED] 0xE20D (BATTLEMAGE) [13:57:35] [PASSED] 0xE210 (BATTLEMAGE) [13:57:35] [PASSED] 0xE211 (BATTLEMAGE) [13:57:35] [PASSED] 0xE212 (BATTLEMAGE) [13:57:35] [PASSED] 0xE216 (BATTLEMAGE) [13:57:35] [PASSED] 0xE220 (BATTLEMAGE) [13:57:35] [PASSED] 0xE221 (BATTLEMAGE) [13:57:35] [PASSED] 0xE222 (BATTLEMAGE) [13:57:35] [PASSED] 0xE223 (BATTLEMAGE) [13:57:35] [PASSED] 0xB080 (PANTHERLAKE) [13:57:35] [PASSED] 0xB081 (PANTHERLAKE) [13:57:35] [PASSED] 0xB082 (PANTHERLAKE) [13:57:35] [PASSED] 0xB083 (PANTHERLAKE) [13:57:35] [PASSED] 0xB084 (PANTHERLAKE) [13:57:35] [PASSED] 0xB085 (PANTHERLAKE) [13:57:35] [PASSED] 0xB086 (PANTHERLAKE) [13:57:35] [PASSED] 0xB087 (PANTHERLAKE) [13:57:35] [PASSED] 0xB08F (PANTHERLAKE) [13:57:35] [PASSED] 0xB090 (PANTHERLAKE) [13:57:35] [PASSED] 0xB0A0 (PANTHERLAKE) [13:57:35] [PASSED] 0xB0B0 (PANTHERLAKE) [13:57:35] [PASSED] 0xFD80 (PANTHERLAKE) [13:57:35] [PASSED] 0xFD81 (PANTHERLAKE) [13:57:35] [PASSED] 0xD740 (NOVALAKE_S) [13:57:35] [PASSED] 0xD741 (NOVALAKE_S) [13:57:35] [PASSED] 0xD742 (NOVALAKE_S) [13:57:35] [PASSED] 0xD743 (NOVALAKE_S) [13:57:35] [PASSED] 0xD744 (NOVALAKE_S) [13:57:35] [PASSED] 0xD745 (NOVALAKE_S) [13:57:35] [PASSED] 0x674C (CRESCENTISLAND) [13:57:35] [PASSED] 0xD750 (NOVALAKE_P) [13:57:35] [PASSED] 0xD751 (NOVALAKE_P) [13:57:35] [PASSED] 0xD752 (NOVALAKE_P) [13:57:35] [PASSED] 0xD753 (NOVALAKE_P) [13:57:35] [PASSED] 0xD754 (NOVALAKE_P) [13:57:35] [PASSED] 0xD755 (NOVALAKE_P) [13:57:35] [PASSED] 0xD756 (NOVALAKE_P) [13:57:35] [PASSED] 0xD757 (NOVALAKE_P) [13:57:35] [PASSED] 0xD75F (NOVALAKE_P) [13:57:35] =============== [PASSED] check_platform_desc =============== [13:57:35] ===================== [PASSED] xe_pci ====================== [13:57:35] =================== xe_rtp (2 subtests) ==================== [13:57:35] =============== xe_rtp_process_to_sr_tests ================ [13:57:35] [PASSED] coalesce-same-reg [13:57:35] [PASSED] no-match-no-add [13:57:35] [PASSED] match-or [13:57:35] [PASSED] match-or-xfail [13:57:35] [PASSED] no-match-no-add-multiple-rules [13:57:35] [PASSED] two-regs-two-entries [13:57:35] [PASSED] clr-one-set-other [13:57:35] [PASSED] set-field [13:57:35] [PASSED] conflict-duplicate [13:57:35] [PASSED] conflict-not-disjoint [13:57:35] [PASSED] conflict-reg-type [13:57:35] =========== [PASSED] xe_rtp_process_to_sr_tests ============ [13:57:35] ================== xe_rtp_process_tests =================== [13:57:35] [PASSED] active1 [13:57:35] [PASSED] active2 [13:57:35] [PASSED] active-inactive [13:57:35] [PASSED] inactive-active [13:57:35] [PASSED] inactive-1st_or_active-inactive [13:57:35] [PASSED] inactive-2nd_or_active-inactive [13:57:35] [PASSED] inactive-last_or_active-inactive [13:57:35] [PASSED] inactive-no_or_active-inactive [13:57:35] ============== [PASSED] xe_rtp_process_tests =============== [13:57:35] ===================== [PASSED] xe_rtp ====================== [13:57:35] ==================== xe_wa (1 subtest) ===================== [13:57:35] ======================== xe_wa_gt ========================= [13:57:35] [PASSED] TIGERLAKE B0 [13:57:35] [PASSED] DG1 A0 [13:57:35] [PASSED] DG1 B0 [13:57:35] [PASSED] ALDERLAKE_S A0 [13:57:35] [PASSED] ALDERLAKE_S B0 [13:57:35] [PASSED] ALDERLAKE_S C0 [13:57:36] [PASSED] ALDERLAKE_S D0 [13:57:36] [PASSED] ALDERLAKE_P A0 [13:57:36] [PASSED] ALDERLAKE_P B0 [13:57:36] [PASSED] ALDERLAKE_P C0 [13:57:36] [PASSED] ALDERLAKE_S RPLS D0 [13:57:36] [PASSED] ALDERLAKE_P RPLU E0 [13:57:36] [PASSED] DG2 G10 C0 [13:57:36] [PASSED] DG2 G11 B1 [13:57:36] [PASSED] DG2 G12 A1 [13:57:36] [PASSED] METEORLAKE 12.70(Xe_LPG) A0 13.00(Xe_LPM+) A0 [13:57:36] [PASSED] METEORLAKE 12.71(Xe_LPG) A0 13.00(Xe_LPM+) A0 [13:57:36] [PASSED] METEORLAKE 12.74(Xe_LPG+) A0 13.00(Xe_LPM+) A0 [13:57:36] [PASSED] LUNARLAKE 20.04(Xe2_LPG) A0 20.00(Xe2_LPM) A0 [13:57:36] [PASSED] LUNARLAKE 20.04(Xe2_LPG) B0 20.00(Xe2_LPM) A0 [13:57:36] [PASSED] BATTLEMAGE 20.01(Xe2_HPG) A0 13.01(Xe2_HPM) A1 [13:57:36] [PASSED] PANTHERLAKE 30.00(Xe3_LPG) A0 30.00(Xe3_LPM) A0 [13:57:36] ==================== [PASSED] xe_wa_gt ===================== [13:57:36] ====================== [PASSED] xe_wa ====================== [13:57:36] ============================================================ [13:57:36] Testing complete. Ran 522 tests: passed: 504, skipped: 18 [13:57:36] Elapsed time: 43.784s total, 4.314s configuring, 38.952s building, 0.485s running + /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/tests/.kunitconfig [13:57:36] Configuring KUnit Kernel ... Regenerating .config ... Populating config with: $ make ARCH=um O=.kunit olddefconfig [13:57:37] 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=25 [13:58:07] Starting KUnit Kernel (1/1)... [13:58:07] ============================================================ Running tests with: $ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt [13:58:08] ============ drm_test_pick_cmdline (2 subtests) ============ [13:58:08] [PASSED] drm_test_pick_cmdline_res_1920_1080_60 [13:58:08] =============== drm_test_pick_cmdline_named =============== [13:58:08] [PASSED] NTSC [13:58:08] [PASSED] NTSC-J [13:58:08] [PASSED] PAL [13:58:08] [PASSED] PAL-M [13:58:08] =========== [PASSED] drm_test_pick_cmdline_named =========== [13:58:08] ============== [PASSED] drm_test_pick_cmdline ============== [13:58:08] == drm_test_atomic_get_connector_for_encoder (1 subtest) === [13:58:08] [PASSED] drm_test_drm_atomic_get_connector_for_encoder [13:58:08] ==== [PASSED] drm_test_atomic_get_connector_for_encoder ==== [13:58:08] =========== drm_validate_clone_mode (2 subtests) =========== [13:58:08] ============== drm_test_check_in_clone_mode =============== [13:58:08] [PASSED] in_clone_mode [13:58:08] [PASSED] not_in_clone_mode [13:58:08] ========== [PASSED] drm_test_check_in_clone_mode =========== [13:58:08] =============== drm_test_check_valid_clones =============== [13:58:08] [PASSED] not_in_clone_mode [13:58:08] [PASSED] valid_clone [13:58:08] [PASSED] invalid_clone [13:58:08] =========== [PASSED] drm_test_check_valid_clones =========== [13:58:08] ============= [PASSED] drm_validate_clone_mode ============= [13:58:08] ============= drm_validate_modeset (1 subtest) ============= [13:58:08] [PASSED] drm_test_check_connector_changed_modeset [13:58:08] ============== [PASSED] drm_validate_modeset =============== [13:58:08] ====== drm_test_bridge_get_current_state (2 subtests) ====== [13:58:08] [PASSED] drm_test_drm_bridge_get_current_state_atomic [13:58:08] [PASSED] drm_test_drm_bridge_get_current_state_legacy [13:58:08] ======== [PASSED] drm_test_bridge_get_current_state ======== [13:58:08] ====== drm_test_bridge_helper_reset_crtc (3 subtests) ====== [13:58:08] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic [13:58:08] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic_disabled [13:58:08] [PASSED] drm_test_drm_bridge_helper_reset_crtc_legacy [13:58:08] ======== [PASSED] drm_test_bridge_helper_reset_crtc ======== [13:58:08] ============== drm_bridge_alloc (2 subtests) =============== [13:58:08] [PASSED] drm_test_drm_bridge_alloc_basic [13:58:08] [PASSED] drm_test_drm_bridge_alloc_get_put [13:58:08] ================ [PASSED] drm_bridge_alloc ================= [13:58:08] ============= drm_cmdline_parser (40 subtests) ============= [13:58:08] [PASSED] drm_test_cmdline_force_d_only [13:58:08] [PASSED] drm_test_cmdline_force_D_only_dvi [13:58:08] [PASSED] drm_test_cmdline_force_D_only_hdmi [13:58:08] [PASSED] drm_test_cmdline_force_D_only_not_digital [13:58:08] [PASSED] drm_test_cmdline_force_e_only [13:58:08] [PASSED] drm_test_cmdline_res [13:58:08] [PASSED] drm_test_cmdline_res_vesa [13:58:08] [PASSED] drm_test_cmdline_res_vesa_rblank [13:58:08] [PASSED] drm_test_cmdline_res_rblank [13:58:08] [PASSED] drm_test_cmdline_res_bpp [13:58:08] [PASSED] drm_test_cmdline_res_refresh [13:58:08] [PASSED] drm_test_cmdline_res_bpp_refresh [13:58:08] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced [13:58:08] [PASSED] drm_test_cmdline_res_bpp_refresh_margins [13:58:08] [PASSED] drm_test_cmdline_res_bpp_refresh_force_off [13:58:08] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on [13:58:08] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_analog [13:58:08] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_digital [13:58:08] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced_margins_force_on [13:58:08] [PASSED] drm_test_cmdline_res_margins_force_on [13:58:08] [PASSED] drm_test_cmdline_res_vesa_margins [13:58:08] [PASSED] drm_test_cmdline_name [13:58:08] [PASSED] drm_test_cmdline_name_bpp [13:58:08] [PASSED] drm_test_cmdline_name_option [13:58:08] [PASSED] drm_test_cmdline_name_bpp_option [13:58:08] [PASSED] drm_test_cmdline_rotate_0 [13:58:08] [PASSED] drm_test_cmdline_rotate_90 [13:58:08] [PASSED] drm_test_cmdline_rotate_180 [13:58:08] [PASSED] drm_test_cmdline_rotate_270 [13:58:08] [PASSED] drm_test_cmdline_hmirror [13:58:08] [PASSED] drm_test_cmdline_vmirror [13:58:08] [PASSED] drm_test_cmdline_margin_options [13:58:08] [PASSED] drm_test_cmdline_multiple_options [13:58:08] [PASSED] drm_test_cmdline_bpp_extra_and_option [13:58:08] [PASSED] drm_test_cmdline_extra_and_option [13:58:08] [PASSED] drm_test_cmdline_freestanding_options [13:58:08] [PASSED] drm_test_cmdline_freestanding_force_e_and_options [13:58:08] [PASSED] drm_test_cmdline_panel_orientation [13:58:08] ================ drm_test_cmdline_invalid ================= [13:58:08] [PASSED] margin_only [13:58:08] [PASSED] interlace_only [13:58:08] [PASSED] res_missing_x [13:58:08] [PASSED] res_missing_y [13:58:08] [PASSED] res_bad_y [13:58:08] [PASSED] res_missing_y_bpp [13:58:08] [PASSED] res_bad_bpp [13:58:08] [PASSED] res_bad_refresh [13:58:08] [PASSED] res_bpp_refresh_force_on_off [13:58:08] [PASSED] res_invalid_mode [13:58:08] [PASSED] res_bpp_wrong_place_mode [13:58:08] [PASSED] name_bpp_refresh [13:58:08] [PASSED] name_refresh [13:58:08] [PASSED] name_refresh_wrong_mode [13:58:08] [PASSED] name_refresh_invalid_mode [13:58:08] [PASSED] rotate_multiple [13:58:08] [PASSED] rotate_invalid_val [13:58:08] [PASSED] rotate_truncated [13:58:08] [PASSED] invalid_option [13:58:08] [PASSED] invalid_tv_option [13:58:08] [PASSED] truncated_tv_option [13:58:08] ============ [PASSED] drm_test_cmdline_invalid ============= [13:58:08] =============== drm_test_cmdline_tv_options =============== [13:58:08] [PASSED] NTSC [13:58:08] [PASSED] NTSC_443 [13:58:08] [PASSED] NTSC_J [13:58:08] [PASSED] PAL [13:58:08] [PASSED] PAL_M [13:58:08] [PASSED] PAL_N [13:58:08] [PASSED] SECAM [13:58:08] [PASSED] MONO_525 [13:58:08] [PASSED] MONO_625 [13:58:08] =========== [PASSED] drm_test_cmdline_tv_options =========== [13:58:08] =============== [PASSED] drm_cmdline_parser ================ [13:58:08] ========== drmm_connector_hdmi_init (20 subtests) ========== [13:58:08] [PASSED] drm_test_connector_hdmi_init_valid [13:58:08] [PASSED] drm_test_connector_hdmi_init_bpc_8 [13:58:08] [PASSED] drm_test_connector_hdmi_init_bpc_10 [13:58:08] [PASSED] drm_test_connector_hdmi_init_bpc_12 [13:58:08] [PASSED] drm_test_connector_hdmi_init_bpc_invalid [13:58:08] [PASSED] drm_test_connector_hdmi_init_bpc_null [13:58:08] [PASSED] drm_test_connector_hdmi_init_formats_empty [13:58:08] [PASSED] drm_test_connector_hdmi_init_formats_no_rgb [13:58:08] === drm_test_connector_hdmi_init_formats_yuv420_allowed === [13:58:08] [PASSED] supported_formats=0x9 yuv420_allowed=1 [13:58:08] [PASSED] supported_formats=0x9 yuv420_allowed=0 [13:58:08] [PASSED] supported_formats=0x3 yuv420_allowed=1 [13:58:08] [PASSED] supported_formats=0x3 yuv420_allowed=0 [13:58:08] === [PASSED] drm_test_connector_hdmi_init_formats_yuv420_allowed === [13:58:08] [PASSED] drm_test_connector_hdmi_init_null_ddc [13:58:08] [PASSED] drm_test_connector_hdmi_init_null_product [13:58:08] [PASSED] drm_test_connector_hdmi_init_null_vendor [13:58:08] [PASSED] drm_test_connector_hdmi_init_product_length_exact [13:58:08] [PASSED] drm_test_connector_hdmi_init_product_length_too_long [13:58:08] [PASSED] drm_test_connector_hdmi_init_product_valid [13:58:08] [PASSED] drm_test_connector_hdmi_init_vendor_length_exact [13:58:08] [PASSED] drm_test_connector_hdmi_init_vendor_length_too_long [13:58:08] [PASSED] drm_test_connector_hdmi_init_vendor_valid [13:58:08] ========= drm_test_connector_hdmi_init_type_valid ========= [13:58:08] [PASSED] HDMI-A [13:58:08] [PASSED] HDMI-B [13:58:08] ===== [PASSED] drm_test_connector_hdmi_init_type_valid ===== [13:58:08] ======== drm_test_connector_hdmi_init_type_invalid ======== [13:58:08] [PASSED] Unknown [13:58:08] [PASSED] VGA [13:58:08] [PASSED] DVI-I [13:58:08] [PASSED] DVI-D [13:58:08] [PASSED] DVI-A [13:58:08] [PASSED] Composite [13:58:08] [PASSED] SVIDEO [13:58:08] [PASSED] LVDS [13:58:08] [PASSED] Component [13:58:08] [PASSED] DIN [13:58:08] [PASSED] DP [13:58:08] [PASSED] TV [13:58:08] [PASSED] eDP [13:58:08] [PASSED] Virtual [13:58:08] [PASSED] DSI [13:58:08] [PASSED] DPI [13:58:08] [PASSED] Writeback [13:58:08] [PASSED] SPI [13:58:08] [PASSED] USB [13:58:08] ==== [PASSED] drm_test_connector_hdmi_init_type_invalid ==== [13:58:08] ============ [PASSED] drmm_connector_hdmi_init ============= [13:58:08] ============= drmm_connector_init (3 subtests) ============= [13:58:08] [PASSED] drm_test_drmm_connector_init [13:58:08] [PASSED] drm_test_drmm_connector_init_null_ddc [13:58:08] ========= drm_test_drmm_connector_init_type_valid ========= [13:58:08] [PASSED] Unknown [13:58:08] [PASSED] VGA [13:58:08] [PASSED] DVI-I [13:58:08] [PASSED] DVI-D [13:58:08] [PASSED] DVI-A [13:58:08] [PASSED] Composite [13:58:08] [PASSED] SVIDEO [13:58:08] [PASSED] LVDS [13:58:08] [PASSED] Component [13:58:08] [PASSED] DIN [13:58:08] [PASSED] DP [13:58:08] [PASSED] HDMI-A [13:58:08] [PASSED] HDMI-B [13:58:08] [PASSED] TV [13:58:08] [PASSED] eDP [13:58:08] [PASSED] Virtual [13:58:08] [PASSED] DSI [13:58:08] [PASSED] DPI [13:58:08] [PASSED] Writeback [13:58:08] [PASSED] SPI [13:58:08] [PASSED] USB [13:58:08] ===== [PASSED] drm_test_drmm_connector_init_type_valid ===== [13:58:08] =============== [PASSED] drmm_connector_init =============== [13:58:08] ========= drm_connector_dynamic_init (6 subtests) ========== [13:58:08] [PASSED] drm_test_drm_connector_dynamic_init [13:58:08] [PASSED] drm_test_drm_connector_dynamic_init_null_ddc [13:58:08] [PASSED] drm_test_drm_connector_dynamic_init_not_added [13:58:08] [PASSED] drm_test_drm_connector_dynamic_init_properties [13:58:08] ===== drm_test_drm_connector_dynamic_init_type_valid ====== [13:58:08] [PASSED] Unknown [13:58:08] [PASSED] VGA [13:58:08] [PASSED] DVI-I [13:58:08] [PASSED] DVI-D [13:58:08] [PASSED] DVI-A [13:58:08] [PASSED] Composite [13:58:08] [PASSED] SVIDEO [13:58:08] [PASSED] LVDS [13:58:08] [PASSED] Component [13:58:08] [PASSED] DIN [13:58:08] [PASSED] DP [13:58:08] [PASSED] HDMI-A [13:58:08] [PASSED] HDMI-B [13:58:08] [PASSED] TV [13:58:08] [PASSED] eDP [13:58:08] [PASSED] Virtual [13:58:08] [PASSED] DSI [13:58:08] [PASSED] DPI [13:58:08] [PASSED] Writeback [13:58:08] [PASSED] SPI [13:58:08] [PASSED] USB [13:58:08] = [PASSED] drm_test_drm_connector_dynamic_init_type_valid == [13:58:08] ======== drm_test_drm_connector_dynamic_init_name ========= [13:58:08] [PASSED] Unknown [13:58:08] [PASSED] VGA [13:58:08] [PASSED] DVI-I [13:58:08] [PASSED] DVI-D [13:58:08] [PASSED] DVI-A [13:58:08] [PASSED] Composite [13:58:08] [PASSED] SVIDEO [13:58:08] [PASSED] LVDS [13:58:08] [PASSED] Component [13:58:08] [PASSED] DIN [13:58:08] [PASSED] DP [13:58:08] [PASSED] HDMI-A [13:58:08] [PASSED] HDMI-B [13:58:08] [PASSED] TV [13:58:08] [PASSED] eDP [13:58:08] [PASSED] Virtual [13:58:08] [PASSED] DSI [13:58:08] [PASSED] DPI [13:58:08] [PASSED] Writeback [13:58:08] [PASSED] SPI [13:58:08] [PASSED] USB [13:58:08] ==== [PASSED] drm_test_drm_connector_dynamic_init_name ===== [13:58:08] =========== [PASSED] drm_connector_dynamic_init ============ [13:58:08] ==== drm_connector_dynamic_register_early (4 subtests) ===== [13:58:08] [PASSED] drm_test_drm_connector_dynamic_register_early_on_list [13:58:08] [PASSED] drm_test_drm_connector_dynamic_register_early_defer [13:58:08] [PASSED] drm_test_drm_connector_dynamic_register_early_no_init [13:58:08] [PASSED] drm_test_drm_connector_dynamic_register_early_no_mode_object [13:58:08] ====== [PASSED] drm_connector_dynamic_register_early ======= [13:58:08] ======= drm_connector_dynamic_register (7 subtests) ======== [13:58:08] [PASSED] drm_test_drm_connector_dynamic_register_on_list [13:58:08] [PASSED] drm_test_drm_connector_dynamic_register_no_defer [13:58:08] [PASSED] drm_test_drm_connector_dynamic_register_no_init [13:58:08] [PASSED] drm_test_drm_connector_dynamic_register_mode_object [13:58:08] [PASSED] drm_test_drm_connector_dynamic_register_sysfs [13:58:08] [PASSED] drm_test_drm_connector_dynamic_register_sysfs_name [13:58:08] [PASSED] drm_test_drm_connector_dynamic_register_debugfs [13:58:08] ========= [PASSED] drm_connector_dynamic_register ========== [13:58:08] = drm_connector_attach_broadcast_rgb_property (2 subtests) = [13:58:08] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property [13:58:08] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property_hdmi_connector [13:58:08] === [PASSED] drm_connector_attach_broadcast_rgb_property === [13:58:08] ========== drm_get_tv_mode_from_name (2 subtests) ========== [13:58:08] ========== drm_test_get_tv_mode_from_name_valid =========== [13:58:08] [PASSED] NTSC [13:58:08] [PASSED] NTSC-443 [13:58:08] [PASSED] NTSC-J [13:58:08] [PASSED] PAL [13:58:08] [PASSED] PAL-M [13:58:08] [PASSED] PAL-N [13:58:08] [PASSED] SECAM [13:58:08] [PASSED] Mono [13:58:08] ====== [PASSED] drm_test_get_tv_mode_from_name_valid ======= [13:58:08] [PASSED] drm_test_get_tv_mode_from_name_truncated [13:58:08] ============ [PASSED] drm_get_tv_mode_from_name ============ [13:58:08] = drm_test_connector_hdmi_compute_mode_clock (12 subtests) = [13:58:08] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb [13:58:08] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc [13:58:08] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc_vic_1 [13:58:08] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc [13:58:08] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc_vic_1 [13:58:08] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_double [13:58:08] = drm_test_connector_hdmi_compute_mode_clock_yuv420_valid = [13:58:08] [PASSED] VIC 96 [13:58:08] [PASSED] VIC 97 [13:58:08] [PASSED] VIC 101 [13:58:08] [PASSED] VIC 102 [13:58:08] [PASSED] VIC 106 [13:58:08] [PASSED] VIC 107 [13:58:08] === [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_valid === [13:58:08] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_10_bpc [13:58:08] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_12_bpc [13:58:08] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_8_bpc [13:58:08] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_10_bpc [13:58:08] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_12_bpc [13:58:08] === [PASSED] drm_test_connector_hdmi_compute_mode_clock ==== [13:58:08] == drm_hdmi_connector_get_broadcast_rgb_name (2 subtests) == [13:58:08] === drm_test_drm_hdmi_connector_get_broadcast_rgb_name ==== [13:58:08] [PASSED] Automatic [13:58:08] [PASSED] Full [13:58:08] [PASSED] Limited 16:235 [13:58:08] === [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name === [13:58:08] [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name_invalid [13:58:08] ==== [PASSED] drm_hdmi_connector_get_broadcast_rgb_name ==== [13:58:08] == drm_hdmi_connector_get_output_format_name (2 subtests) == [13:58:08] === drm_test_drm_hdmi_connector_get_output_format_name ==== [13:58:08] [PASSED] RGB [13:58:08] [PASSED] YUV 4:2:0 [13:58:08] [PASSED] YUV 4:2:2 [13:58:08] [PASSED] YUV 4:4:4 [13:58:08] === [PASSED] drm_test_drm_hdmi_connector_get_output_format_name === [13:58:08] [PASSED] drm_test_drm_hdmi_connector_get_output_format_name_invalid [13:58:08] ==== [PASSED] drm_hdmi_connector_get_output_format_name ==== [13:58:08] ============= drm_damage_helper (21 subtests) ============== [13:58:08] [PASSED] drm_test_damage_iter_no_damage [13:58:08] [PASSED] drm_test_damage_iter_no_damage_fractional_src [13:58:08] [PASSED] drm_test_damage_iter_no_damage_src_moved [13:58:08] [PASSED] drm_test_damage_iter_no_damage_fractional_src_moved [13:58:08] [PASSED] drm_test_damage_iter_no_damage_not_visible [13:58:08] [PASSED] drm_test_damage_iter_no_damage_no_crtc [13:58:08] [PASSED] drm_test_damage_iter_no_damage_no_fb [13:58:08] [PASSED] drm_test_damage_iter_simple_damage [13:58:08] [PASSED] drm_test_damage_iter_single_damage [13:58:08] [PASSED] drm_test_damage_iter_single_damage_intersect_src [13:58:08] [PASSED] drm_test_damage_iter_single_damage_outside_src [13:58:08] [PASSED] drm_test_damage_iter_single_damage_fractional_src [13:58:08] [PASSED] drm_test_damage_iter_single_damage_intersect_fractional_src [13:58:08] [PASSED] drm_test_damage_iter_single_damage_outside_fractional_src [13:58:08] [PASSED] drm_test_damage_iter_single_damage_src_moved [13:58:08] [PASSED] drm_test_damage_iter_single_damage_fractional_src_moved [13:58:08] [PASSED] drm_test_damage_iter_damage [13:58:08] [PASSED] drm_test_damage_iter_damage_one_intersect [13:58:08] [PASSED] drm_test_damage_iter_damage_one_outside [13:58:08] [PASSED] drm_test_damage_iter_damage_src_moved [13:58:08] [PASSED] drm_test_damage_iter_damage_not_visible [13:58:08] ================ [PASSED] drm_damage_helper ================ [13:58:08] ============== drm_dp_mst_helper (3 subtests) ============== [13:58:08] ============== drm_test_dp_mst_calc_pbn_mode ============== [13:58:08] [PASSED] Clock 154000 BPP 30 DSC disabled [13:58:08] [PASSED] Clock 234000 BPP 30 DSC disabled [13:58:08] [PASSED] Clock 297000 BPP 24 DSC disabled [13:58:08] [PASSED] Clock 332880 BPP 24 DSC enabled [13:58:08] [PASSED] Clock 324540 BPP 24 DSC enabled [13:58:08] ========== [PASSED] drm_test_dp_mst_calc_pbn_mode ========== [13:58:08] ============== drm_test_dp_mst_calc_pbn_div =============== [13:58:08] [PASSED] Link rate 2000000 lane count 4 [13:58:08] [PASSED] Link rate 2000000 lane count 2 [13:58:08] [PASSED] Link rate 2000000 lane count 1 [13:58:08] [PASSED] Link rate 1350000 lane count 4 [13:58:08] [PASSED] Link rate 1350000 lane count 2 [13:58:08] [PASSED] Link rate 1350000 lane count 1 [13:58:08] [PASSED] Link rate 1000000 lane count 4 [13:58:08] [PASSED] Link rate 1000000 lane count 2 [13:58:08] [PASSED] Link rate 1000000 lane count 1 [13:58:08] [PASSED] Link rate 810000 lane count 4 [13:58:08] [PASSED] Link rate 810000 lane count 2 [13:58:08] [PASSED] Link rate 810000 lane count 1 [13:58:08] [PASSED] Link rate 540000 lane count 4 [13:58:08] [PASSED] Link rate 540000 lane count 2 [13:58:08] [PASSED] Link rate 540000 lane count 1 [13:58:08] [PASSED] Link rate 270000 lane count 4 [13:58:08] [PASSED] Link rate 270000 lane count 2 [13:58:08] [PASSED] Link rate 270000 lane count 1 [13:58:08] [PASSED] Link rate 162000 lane count 4 [13:58:08] [PASSED] Link rate 162000 lane count 2 [13:58:08] [PASSED] Link rate 162000 lane count 1 [13:58:08] ========== [PASSED] drm_test_dp_mst_calc_pbn_div =========== [13:58:08] ========= drm_test_dp_mst_sideband_msg_req_decode ========= [13:58:08] [PASSED] DP_ENUM_PATH_RESOURCES with port number [13:58:08] [PASSED] DP_POWER_UP_PHY with port number [13:58:08] [PASSED] DP_POWER_DOWN_PHY with port number [13:58:08] [PASSED] DP_ALLOCATE_PAYLOAD with SDP stream sinks [13:58:08] [PASSED] DP_ALLOCATE_PAYLOAD with port number [13:58:08] [PASSED] DP_ALLOCATE_PAYLOAD with VCPI [13:58:08] [PASSED] DP_ALLOCATE_PAYLOAD with PBN [13:58:08] [PASSED] DP_QUERY_PAYLOAD with port number [13:58:08] [PASSED] DP_QUERY_PAYLOAD with VCPI [13:58:08] [PASSED] DP_REMOTE_DPCD_READ with port number [13:58:08] [PASSED] DP_REMOTE_DPCD_READ with DPCD address [13:58:08] [PASSED] DP_REMOTE_DPCD_READ with max number of bytes [13:58:08] [PASSED] DP_REMOTE_DPCD_WRITE with port number [13:58:08] [PASSED] DP_REMOTE_DPCD_WRITE with DPCD address [13:58:08] [PASSED] DP_REMOTE_DPCD_WRITE with data array [13:58:08] [PASSED] DP_REMOTE_I2C_READ with port number [13:58:08] [PASSED] DP_REMOTE_I2C_READ with I2C device ID [13:58:08] [PASSED] DP_REMOTE_I2C_READ with transactions array [13:58:08] [PASSED] DP_REMOTE_I2C_WRITE with port number [13:58:08] [PASSED] DP_REMOTE_I2C_WRITE with I2C device ID [13:58:08] [PASSED] DP_REMOTE_I2C_WRITE with data array [13:58:08] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream ID [13:58:08] [PASSED] DP_QUERY_STREAM_ENC_STATUS with client ID [13:58:08] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream event [13:58:08] [PASSED] DP_QUERY_STREAM_ENC_STATUS with valid stream event [13:58:08] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream behavior [13:58:08] [PASSED] DP_QUERY_STREAM_ENC_STATUS with a valid stream behavior [13:58:08] ===== [PASSED] drm_test_dp_mst_sideband_msg_req_decode ===== [13:58:08] ================ [PASSED] drm_dp_mst_helper ================ [13:58:08] ================== drm_exec (7 subtests) =================== [13:58:08] [PASSED] sanitycheck [13:58:08] [PASSED] test_lock [13:58:08] [PASSED] test_lock_unlock [13:58:08] [PASSED] test_duplicates [13:58:08] [PASSED] test_prepare [13:58:08] [PASSED] test_prepare_array [13:58:08] [PASSED] test_multiple_loops [13:58:08] ==================== [PASSED] drm_exec ===================== [13:58:08] =========== drm_format_helper_test (17 subtests) =========== [13:58:08] ============== drm_test_fb_xrgb8888_to_gray8 ============== [13:58:08] [PASSED] single_pixel_source_buffer [13:58:08] [PASSED] single_pixel_clip_rectangle [13:58:08] [PASSED] well_known_colors [13:58:08] [PASSED] destination_pitch [13:58:08] ========== [PASSED] drm_test_fb_xrgb8888_to_gray8 ========== [13:58:08] ============= drm_test_fb_xrgb8888_to_rgb332 ============== [13:58:08] [PASSED] single_pixel_source_buffer [13:58:08] [PASSED] single_pixel_clip_rectangle [13:58:08] [PASSED] well_known_colors [13:58:08] [PASSED] destination_pitch [13:58:08] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb332 ========== [13:58:08] ============= drm_test_fb_xrgb8888_to_rgb565 ============== [13:58:08] [PASSED] single_pixel_source_buffer [13:58:08] [PASSED] single_pixel_clip_rectangle [13:58:08] [PASSED] well_known_colors [13:58:08] [PASSED] destination_pitch [13:58:08] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb565 ========== [13:58:08] ============ drm_test_fb_xrgb8888_to_xrgb1555 ============= [13:58:08] [PASSED] single_pixel_source_buffer [13:58:08] [PASSED] single_pixel_clip_rectangle [13:58:08] [PASSED] well_known_colors [13:58:08] [PASSED] destination_pitch [13:58:08] ======== [PASSED] drm_test_fb_xrgb8888_to_xrgb1555 ========= [13:58:08] ============ drm_test_fb_xrgb8888_to_argb1555 ============= [13:58:08] [PASSED] single_pixel_source_buffer [13:58:08] [PASSED] single_pixel_clip_rectangle [13:58:08] [PASSED] well_known_colors [13:58:08] [PASSED] destination_pitch [13:58:08] ======== [PASSED] drm_test_fb_xrgb8888_to_argb1555 ========= [13:58:08] ============ drm_test_fb_xrgb8888_to_rgba5551 ============= [13:58:08] [PASSED] single_pixel_source_buffer [13:58:08] [PASSED] single_pixel_clip_rectangle [13:58:08] [PASSED] well_known_colors [13:58:08] [PASSED] destination_pitch [13:58:08] ======== [PASSED] drm_test_fb_xrgb8888_to_rgba5551 ========= [13:58:08] ============= drm_test_fb_xrgb8888_to_rgb888 ============== [13:58:08] [PASSED] single_pixel_source_buffer [13:58:08] [PASSED] single_pixel_clip_rectangle [13:58:08] [PASSED] well_known_colors [13:58:08] [PASSED] destination_pitch [13:58:08] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb888 ========== [13:58:08] ============= drm_test_fb_xrgb8888_to_bgr888 ============== [13:58:08] [PASSED] single_pixel_source_buffer [13:58:08] [PASSED] single_pixel_clip_rectangle [13:58:08] [PASSED] well_known_colors [13:58:08] [PASSED] destination_pitch [13:58:08] ========= [PASSED] drm_test_fb_xrgb8888_to_bgr888 ========== [13:58:08] ============ drm_test_fb_xrgb8888_to_argb8888 ============= [13:58:08] [PASSED] single_pixel_source_buffer [13:58:08] [PASSED] single_pixel_clip_rectangle [13:58:08] [PASSED] well_known_colors [13:58:08] [PASSED] destination_pitch [13:58:08] ======== [PASSED] drm_test_fb_xrgb8888_to_argb8888 ========= [13:58:08] =========== drm_test_fb_xrgb8888_to_xrgb2101010 =========== [13:58:08] [PASSED] single_pixel_source_buffer [13:58:08] [PASSED] single_pixel_clip_rectangle [13:58:08] [PASSED] well_known_colors [13:58:08] [PASSED] destination_pitch [13:58:08] ======= [PASSED] drm_test_fb_xrgb8888_to_xrgb2101010 ======= [13:58:08] =========== drm_test_fb_xrgb8888_to_argb2101010 =========== [13:58:08] [PASSED] single_pixel_source_buffer [13:58:08] [PASSED] single_pixel_clip_rectangle [13:58:08] [PASSED] well_known_colors [13:58:08] [PASSED] destination_pitch [13:58:08] ======= [PASSED] drm_test_fb_xrgb8888_to_argb2101010 ======= [13:58:08] ============== drm_test_fb_xrgb8888_to_mono =============== [13:58:08] [PASSED] single_pixel_source_buffer [13:58:08] [PASSED] single_pixel_clip_rectangle [13:58:08] [PASSED] well_known_colors [13:58:08] [PASSED] destination_pitch [13:58:08] ========== [PASSED] drm_test_fb_xrgb8888_to_mono =========== [13:58:08] ==================== drm_test_fb_swab ===================== [13:58:08] [PASSED] single_pixel_source_buffer [13:58:08] [PASSED] single_pixel_clip_rectangle [13:58:08] [PASSED] well_known_colors [13:58:08] [PASSED] destination_pitch [13:58:08] ================ [PASSED] drm_test_fb_swab ================= [13:58:08] ============ drm_test_fb_xrgb8888_to_xbgr8888 ============= [13:58:08] [PASSED] single_pixel_source_buffer [13:58:08] [PASSED] single_pixel_clip_rectangle [13:58:08] [PASSED] well_known_colors [13:58:08] [PASSED] destination_pitch [13:58:08] ======== [PASSED] drm_test_fb_xrgb8888_to_xbgr8888 ========= [13:58:08] ============ drm_test_fb_xrgb8888_to_abgr8888 ============= [13:58:08] [PASSED] single_pixel_source_buffer [13:58:08] [PASSED] single_pixel_clip_rectangle [13:58:08] [PASSED] well_known_colors [13:58:08] [PASSED] destination_pitch [13:58:08] ======== [PASSED] drm_test_fb_xrgb8888_to_abgr8888 ========= [13:58:08] ================= drm_test_fb_clip_offset ================= [13:58:08] [PASSED] pass through [13:58:08] [PASSED] horizontal offset [13:58:08] [PASSED] vertical offset [13:58:08] [PASSED] horizontal and vertical offset [13:58:08] [PASSED] horizontal offset (custom pitch) [13:58:08] [PASSED] vertical offset (custom pitch) [13:58:08] [PASSED] horizontal and vertical offset (custom pitch) [13:58:08] ============= [PASSED] drm_test_fb_clip_offset ============= [13:58:08] =================== drm_test_fb_memcpy ==================== [13:58:08] [PASSED] single_pixel_source_buffer: XR24 little-endian (0x34325258) [13:58:08] [PASSED] single_pixel_source_buffer: XRA8 little-endian (0x38415258) [13:58:08] [PASSED] single_pixel_source_buffer: YU24 little-endian (0x34325559) [13:58:08] [PASSED] single_pixel_clip_rectangle: XB24 little-endian (0x34324258) [13:58:08] [PASSED] single_pixel_clip_rectangle: XRA8 little-endian (0x38415258) [13:58:08] [PASSED] single_pixel_clip_rectangle: YU24 little-endian (0x34325559) [13:58:08] [PASSED] well_known_colors: XB24 little-endian (0x34324258) [13:58:08] [PASSED] well_known_colors: XRA8 little-endian (0x38415258) [13:58:08] [PASSED] well_known_colors: YU24 little-endian (0x34325559) [13:58:08] [PASSED] destination_pitch: XB24 little-endian (0x34324258) [13:58:08] [PASSED] destination_pitch: XRA8 little-endian (0x38415258) [13:58:08] [PASSED] destination_pitch: YU24 little-endian (0x34325559) [13:58:08] =============== [PASSED] drm_test_fb_memcpy ================ [13:58:08] ============= [PASSED] drm_format_helper_test ============== [13:58:08] ================= drm_format (18 subtests) ================= [13:58:08] [PASSED] drm_test_format_block_width_invalid [13:58:08] [PASSED] drm_test_format_block_width_one_plane [13:58:08] [PASSED] drm_test_format_block_width_two_plane [13:58:08] [PASSED] drm_test_format_block_width_three_plane [13:58:08] [PASSED] drm_test_format_block_width_tiled [13:58:08] [PASSED] drm_test_format_block_height_invalid [13:58:08] [PASSED] drm_test_format_block_height_one_plane [13:58:08] [PASSED] drm_test_format_block_height_two_plane [13:58:08] [PASSED] drm_test_format_block_height_three_plane [13:58:08] [PASSED] drm_test_format_block_height_tiled [13:58:08] [PASSED] drm_test_format_min_pitch_invalid [13:58:08] [PASSED] drm_test_format_min_pitch_one_plane_8bpp [13:58:08] [PASSED] drm_test_format_min_pitch_one_plane_16bpp [13:58:08] [PASSED] drm_test_format_min_pitch_one_plane_24bpp [13:58:08] [PASSED] drm_test_format_min_pitch_one_plane_32bpp [13:58:08] [PASSED] drm_test_format_min_pitch_two_plane [13:58:08] [PASSED] drm_test_format_min_pitch_three_plane_8bpp [13:58:08] [PASSED] drm_test_format_min_pitch_tiled [13:58:08] =================== [PASSED] drm_format ==================== [13:58:08] ============== drm_framebuffer (10 subtests) =============== [13:58:08] ========== drm_test_framebuffer_check_src_coords ========== [13:58:08] [PASSED] Success: source fits into fb [13:58:08] [PASSED] Fail: overflowing fb with x-axis coordinate [13:58:08] [PASSED] Fail: overflowing fb with y-axis coordinate [13:58:08] [PASSED] Fail: overflowing fb with source width [13:58:08] [PASSED] Fail: overflowing fb with source height [13:58:08] ====== [PASSED] drm_test_framebuffer_check_src_coords ====== [13:58:08] [PASSED] drm_test_framebuffer_cleanup [13:58:08] =============== drm_test_framebuffer_create =============== [13:58:08] [PASSED] ABGR8888 normal sizes [13:58:08] [PASSED] ABGR8888 max sizes [13:58:08] [PASSED] ABGR8888 pitch greater than min required [13:58:08] [PASSED] ABGR8888 pitch less than min required [13:58:08] [PASSED] ABGR8888 Invalid width [13:58:08] [PASSED] ABGR8888 Invalid buffer handle [13:58:08] [PASSED] No pixel format [13:58:08] [PASSED] ABGR8888 Width 0 [13:58:08] [PASSED] ABGR8888 Height 0 [13:58:08] [PASSED] ABGR8888 Out of bound height * pitch combination [13:58:08] [PASSED] ABGR8888 Large buffer offset [13:58:08] [PASSED] ABGR8888 Buffer offset for inexistent plane [13:58:08] [PASSED] ABGR8888 Invalid flag [13:58:08] [PASSED] ABGR8888 Set DRM_MODE_FB_MODIFIERS without modifiers [13:58:08] [PASSED] ABGR8888 Valid buffer modifier [13:58:08] [PASSED] ABGR8888 Invalid buffer modifier(DRM_FORMAT_MOD_SAMSUNG_64_32_TILE) [13:58:08] [PASSED] ABGR8888 Extra pitches without DRM_MODE_FB_MODIFIERS [13:58:08] [PASSED] ABGR8888 Extra pitches with DRM_MODE_FB_MODIFIERS [13:58:08] [PASSED] NV12 Normal sizes [13:58:08] [PASSED] NV12 Max sizes [13:58:08] [PASSED] NV12 Invalid pitch [13:58:08] [PASSED] NV12 Invalid modifier/missing DRM_MODE_FB_MODIFIERS flag [13:58:08] [PASSED] NV12 different modifier per-plane [13:58:08] [PASSED] NV12 with DRM_FORMAT_MOD_SAMSUNG_64_32_TILE [13:58:08] [PASSED] NV12 Valid modifiers without DRM_MODE_FB_MODIFIERS [13:58:08] [PASSED] NV12 Modifier for inexistent plane [13:58:08] [PASSED] NV12 Handle for inexistent plane [13:58:08] [PASSED] NV12 Handle for inexistent plane without DRM_MODE_FB_MODIFIERS [13:58:08] [PASSED] YVU420 DRM_MODE_FB_MODIFIERS set without modifier [13:58:08] [PASSED] YVU420 Normal sizes [13:58:08] [PASSED] YVU420 Max sizes [13:58:08] [PASSED] YVU420 Invalid pitch [13:58:08] [PASSED] YVU420 Different pitches [13:58:08] [PASSED] YVU420 Different buffer offsets/pitches [13:58:08] [PASSED] YVU420 Modifier set just for plane 0, without DRM_MODE_FB_MODIFIERS [13:58:08] [PASSED] YVU420 Modifier set just for planes 0, 1, without DRM_MODE_FB_MODIFIERS [13:58:08] [PASSED] YVU420 Modifier set just for plane 0, 1, with DRM_MODE_FB_MODIFIERS [13:58:08] [PASSED] YVU420 Valid modifier [13:58:08] [PASSED] YVU420 Different modifiers per plane [13:58:08] [PASSED] YVU420 Modifier for inexistent plane [13:58:08] [PASSED] YUV420_10BIT Invalid modifier(DRM_FORMAT_MOD_LINEAR) [13:58:08] [PASSED] X0L2 Normal sizes [13:58:08] [PASSED] X0L2 Max sizes [13:58:08] [PASSED] X0L2 Invalid pitch [13:58:08] [PASSED] X0L2 Pitch greater than minimum required [13:58:08] [PASSED] X0L2 Handle for inexistent plane [13:58:08] [PASSED] X0L2 Offset for inexistent plane, without DRM_MODE_FB_MODIFIERS set [13:58:08] [PASSED] X0L2 Modifier without DRM_MODE_FB_MODIFIERS set [13:58:08] [PASSED] X0L2 Valid modifier [13:58:08] [PASSED] X0L2 Modifier for inexistent plane [13:58:08] =========== [PASSED] drm_test_framebuffer_create =========== [13:58:08] [PASSED] drm_test_framebuffer_free [13:58:08] [PASSED] drm_test_framebuffer_init [13:58:08] [PASSED] drm_test_framebuffer_init_bad_format [13:58:08] [PASSED] drm_test_framebuffer_init_dev_mismatch [13:58:08] [PASSED] drm_test_framebuffer_lookup [13:58:08] [PASSED] drm_test_framebuffer_lookup_inexistent [13:58:08] [PASSED] drm_test_framebuffer_modifiers_not_supported [13:58:08] ================= [PASSED] drm_framebuffer ================= [13:58:08] ================ drm_gem_shmem (8 subtests) ================ [13:58:08] [PASSED] drm_gem_shmem_test_obj_create [13:58:08] [PASSED] drm_gem_shmem_test_obj_create_private [13:58:08] [PASSED] drm_gem_shmem_test_pin_pages [13:58:08] [PASSED] drm_gem_shmem_test_vmap [13:58:08] [PASSED] drm_gem_shmem_test_get_sg_table [13:58:08] [PASSED] drm_gem_shmem_test_get_pages_sgt [13:58:08] [PASSED] drm_gem_shmem_test_madvise [13:58:08] [PASSED] drm_gem_shmem_test_purge [13:58:08] ================== [PASSED] drm_gem_shmem ================== [13:58:08] === drm_atomic_helper_connector_hdmi_check (27 subtests) === [13:58:08] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode [13:58:08] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode_vic_1 [13:58:08] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode [13:58:08] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode_vic_1 [13:58:08] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode [13:58:08] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode_vic_1 [13:58:08] ====== drm_test_check_broadcast_rgb_cea_mode_yuv420 ======= [13:58:08] [PASSED] Automatic [13:58:08] [PASSED] Full [13:58:08] [PASSED] Limited 16:235 [13:58:08] == [PASSED] drm_test_check_broadcast_rgb_cea_mode_yuv420 === [13:58:08] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_changed [13:58:08] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_not_changed [13:58:08] [PASSED] drm_test_check_disable_connector [13:58:08] [PASSED] drm_test_check_hdmi_funcs_reject_rate [13:58:08] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_rgb [13:58:08] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_yuv420 [13:58:08] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv422 [13:58:08] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv420 [13:58:08] [PASSED] drm_test_check_driver_unsupported_fallback_yuv420 [13:58:08] [PASSED] drm_test_check_output_bpc_crtc_mode_changed [13:58:08] [PASSED] drm_test_check_output_bpc_crtc_mode_not_changed [13:58:08] [PASSED] drm_test_check_output_bpc_dvi [13:58:08] [PASSED] drm_test_check_output_bpc_format_vic_1 [13:58:08] [PASSED] drm_test_check_output_bpc_format_display_8bpc_only [13:58:08] [PASSED] drm_test_check_output_bpc_format_display_rgb_only [13:58:08] [PASSED] drm_test_check_output_bpc_format_driver_8bpc_only [13:58:08] [PASSED] drm_test_check_output_bpc_format_driver_rgb_only [13:58:08] [PASSED] drm_test_check_tmds_char_rate_rgb_8bpc [13:58:08] [PASSED] drm_test_check_tmds_char_rate_rgb_10bpc [13:58:08] [PASSED] drm_test_check_tmds_char_rate_rgb_12bpc [13:58:08] ===== [PASSED] drm_atomic_helper_connector_hdmi_check ====== [13:58:08] === drm_atomic_helper_connector_hdmi_reset (6 subtests) ==== [13:58:08] [PASSED] drm_test_check_broadcast_rgb_value [13:58:08] [PASSED] drm_test_check_bpc_8_value [13:58:08] [PASSED] drm_test_check_bpc_10_value [13:58:08] [PASSED] drm_test_check_bpc_12_value [13:58:08] [PASSED] drm_test_check_format_value [13:58:08] [PASSED] drm_test_check_tmds_char_value [13:58:08] ===== [PASSED] drm_atomic_helper_connector_hdmi_reset ====== [13:58:08] = drm_atomic_helper_connector_hdmi_mode_valid (4 subtests) = [13:58:08] [PASSED] drm_test_check_mode_valid [13:58:08] [PASSED] drm_test_check_mode_valid_reject [13:58:08] [PASSED] drm_test_check_mode_valid_reject_rate [13:58:08] [PASSED] drm_test_check_mode_valid_reject_max_clock [13:58:08] === [PASSED] drm_atomic_helper_connector_hdmi_mode_valid === [13:58:08] = drm_atomic_helper_connector_hdmi_infoframes (5 subtests) = [13:58:08] [PASSED] drm_test_check_infoframes [13:58:08] [PASSED] drm_test_check_reject_avi_infoframe [13:58:08] [PASSED] drm_test_check_reject_hdr_infoframe_bpc_8 [13:58:08] [PASSED] drm_test_check_reject_hdr_infoframe_bpc_10 [13:58:08] [PASSED] drm_test_check_reject_audio_infoframe [13:58:08] === [PASSED] drm_atomic_helper_connector_hdmi_infoframes === [13:58:08] ================= drm_managed (2 subtests) ================= [13:58:08] [PASSED] drm_test_managed_release_action [13:58:08] [PASSED] drm_test_managed_run_action [13:58:08] =================== [PASSED] drm_managed =================== [13:58:08] =================== drm_mm (6 subtests) ==================== [13:58:08] [PASSED] drm_test_mm_init [13:58:08] [PASSED] drm_test_mm_debug [13:58:08] [PASSED] drm_test_mm_align32 [13:58:08] [PASSED] drm_test_mm_align64 [13:58:08] [PASSED] drm_test_mm_lowest [13:58:08] [PASSED] drm_test_mm_highest [13:58:08] ===================== [PASSED] drm_mm ====================== [13:58:08] ============= drm_modes_analog_tv (5 subtests) ============= [13:58:08] [PASSED] drm_test_modes_analog_tv_mono_576i [13:58:08] [PASSED] drm_test_modes_analog_tv_ntsc_480i [13:58:08] [PASSED] drm_test_modes_analog_tv_ntsc_480i_inlined [13:58:08] [PASSED] drm_test_modes_analog_tv_pal_576i [13:58:08] [PASSED] drm_test_modes_analog_tv_pal_576i_inlined [13:58:08] =============== [PASSED] drm_modes_analog_tv =============== [13:58:08] ============== drm_plane_helper (2 subtests) =============== [13:58:08] =============== drm_test_check_plane_state ================ [13:58:08] [PASSED] clipping_simple [13:58:08] [PASSED] clipping_rotate_reflect [13:58:08] [PASSED] positioning_simple [13:58:08] [PASSED] upscaling [13:58:08] [PASSED] downscaling [13:58:08] [PASSED] rounding1 [13:58:08] [PASSED] rounding2 [13:58:08] [PASSED] rounding3 [13:58:08] [PASSED] rounding4 [13:58:08] =========== [PASSED] drm_test_check_plane_state ============ [13:58:08] =========== drm_test_check_invalid_plane_state ============ [13:58:08] [PASSED] positioning_invalid [13:58:08] [PASSED] upscaling_invalid [13:58:08] [PASSED] downscaling_invalid [13:58:08] ======= [PASSED] drm_test_check_invalid_plane_state ======== [13:58:08] ================ [PASSED] drm_plane_helper ================= [13:58:08] ====== drm_connector_helper_tv_get_modes (1 subtest) ======= [13:58:08] ====== drm_test_connector_helper_tv_get_modes_check ======= [13:58:08] [PASSED] None [13:58:08] [PASSED] PAL [13:58:08] [PASSED] NTSC [13:58:08] [PASSED] Both, NTSC Default [13:58:08] [PASSED] Both, PAL Default [13:58:08] [PASSED] Both, NTSC Default, with PAL on command-line [13:58:08] [PASSED] Both, PAL Default, with NTSC on command-line [13:58:08] == [PASSED] drm_test_connector_helper_tv_get_modes_check === [13:58:08] ======== [PASSED] drm_connector_helper_tv_get_modes ======== [13:58:08] ================== drm_rect (9 subtests) =================== [13:58:08] [PASSED] drm_test_rect_clip_scaled_div_by_zero [13:58:08] [PASSED] drm_test_rect_clip_scaled_not_clipped [13:58:08] [PASSED] drm_test_rect_clip_scaled_clipped [13:58:08] [PASSED] drm_test_rect_clip_scaled_signed_vs_unsigned [13:58:08] ================= drm_test_rect_intersect ================= [13:58:08] [PASSED] top-left x bottom-right: 2x2+1+1 x 2x2+0+0 [13:58:08] [PASSED] top-right x bottom-left: 2x2+0+0 x 2x2+1-1 [13:58:08] [PASSED] bottom-left x top-right: 2x2+1-1 x 2x2+0+0 [13:58:08] [PASSED] bottom-right x top-left: 2x2+0+0 x 2x2+1+1 [13:58:08] [PASSED] right x left: 2x1+0+0 x 3x1+1+0 [13:58:08] [PASSED] left x right: 3x1+1+0 x 2x1+0+0 [13:58:08] [PASSED] up x bottom: 1x2+0+0 x 1x3+0-1 [13:58:08] [PASSED] bottom x up: 1x3+0-1 x 1x2+0+0 [13:58:08] [PASSED] touching corner: 1x1+0+0 x 2x2+1+1 [13:58:08] [PASSED] touching side: 1x1+0+0 x 1x1+1+0 [13:58:08] [PASSED] equal rects: 2x2+0+0 x 2x2+0+0 [13:58:08] [PASSED] inside another: 2x2+0+0 x 1x1+1+1 [13:58:08] [PASSED] far away: 1x1+0+0 x 1x1+3+6 [13:58:08] [PASSED] points intersecting: 0x0+5+10 x 0x0+5+10 [13:58:08] [PASSED] points not intersecting: 0x0+0+0 x 0x0+5+10 [13:58:08] ============= [PASSED] drm_test_rect_intersect ============= [13:58:08] ================ drm_test_rect_calc_hscale ================ [13:58:08] [PASSED] normal use [13:58:08] [PASSED] out of max range [13:58:08] [PASSED] out of min range [13:58:08] [PASSED] zero dst [13:58:08] [PASSED] negative src [13:58:08] [PASSED] negative dst [13:58:08] ============ [PASSED] drm_test_rect_calc_hscale ============ [13:58:08] ================ drm_test_rect_calc_vscale ================ [13:58:08] [PASSED] normal use [13:58:08] [PASSED] out of max range [13:58:08] [PASSED] out of min range [13:58:08] [PASSED] zero dst [13:58:08] [PASSED] negative src [13:58:08] [PASSED] negative dst stty: 'standard input': Inappropriate ioctl for device [13:58:08] ============ [PASSED] drm_test_rect_calc_vscale ============ [13:58:08] ================== drm_test_rect_rotate =================== [13:58:08] [PASSED] reflect-x [13:58:08] [PASSED] reflect-y [13:58:08] [PASSED] rotate-0 [13:58:08] [PASSED] rotate-90 [13:58:08] [PASSED] rotate-180 [13:58:08] [PASSED] rotate-270 [13:58:08] ============== [PASSED] drm_test_rect_rotate =============== [13:58:08] ================ drm_test_rect_rotate_inv ================= [13:58:08] [PASSED] reflect-x [13:58:08] [PASSED] reflect-y [13:58:08] [PASSED] rotate-0 [13:58:08] [PASSED] rotate-90 [13:58:08] [PASSED] rotate-180 [13:58:08] [PASSED] rotate-270 [13:58:08] ============ [PASSED] drm_test_rect_rotate_inv ============= [13:58:08] ==================== [PASSED] drm_rect ===================== [13:58:08] ============ drm_sysfb_modeset_test (1 subtest) ============ [13:58:08] ============ drm_test_sysfb_build_fourcc_list ============= [13:58:08] [PASSED] no native formats [13:58:08] [PASSED] XRGB8888 as native format [13:58:08] [PASSED] remove duplicates [13:58:08] [PASSED] convert alpha formats [13:58:08] [PASSED] random formats [13:58:08] ======== [PASSED] drm_test_sysfb_build_fourcc_list ========= [13:58:08] ============= [PASSED] drm_sysfb_modeset_test ============== [13:58:08] ================== drm_fixp (2 subtests) =================== [13:58:08] [PASSED] drm_test_int2fixp [13:58:08] [PASSED] drm_test_sm2fixp [13:58:08] ==================== [PASSED] drm_fixp ===================== [13:58:08] ============================================================ [13:58:08] Testing complete. Ran 621 tests: passed: 621 [13:58:08] Elapsed time: 32.057s total, 1.643s configuring, 30.198s building, 0.174s running + /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/ttm/tests/.kunitconfig [13:58:08] Configuring KUnit Kernel ... Regenerating .config ... Populating config with: $ make ARCH=um O=.kunit olddefconfig [13:58:09] 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=25 [13:58:19] Starting KUnit Kernel (1/1)... [13:58:19] ============================================================ Running tests with: $ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt [13:58:19] ================= ttm_device (5 subtests) ================== [13:58:19] [PASSED] ttm_device_init_basic [13:58:19] [PASSED] ttm_device_init_multiple [13:58:19] [PASSED] ttm_device_fini_basic [13:58:19] [PASSED] ttm_device_init_no_vma_man [13:58:19] ================== ttm_device_init_pools ================== [13:58:19] [PASSED] No DMA allocations, no DMA32 required [13:58:19] [PASSED] DMA allocations, DMA32 required [13:58:19] [PASSED] No DMA allocations, DMA32 required [13:58:19] [PASSED] DMA allocations, no DMA32 required [13:58:19] ============== [PASSED] ttm_device_init_pools ============== [13:58:19] =================== [PASSED] ttm_device ==================== [13:58:19] ================== ttm_pool (8 subtests) =================== [13:58:19] ================== ttm_pool_alloc_basic =================== [13:58:19] [PASSED] One page [13:58:19] [PASSED] More than one page [13:58:19] [PASSED] Above the allocation limit [13:58:19] [PASSED] One page, with coherent DMA mappings enabled [13:58:19] [PASSED] Above the allocation limit, with coherent DMA mappings enabled [13:58:19] ============== [PASSED] ttm_pool_alloc_basic =============== [13:58:19] ============== ttm_pool_alloc_basic_dma_addr ============== [13:58:19] [PASSED] One page [13:58:19] [PASSED] More than one page [13:58:19] [PASSED] Above the allocation limit [13:58:19] [PASSED] One page, with coherent DMA mappings enabled [13:58:19] [PASSED] Above the allocation limit, with coherent DMA mappings enabled [13:58:19] ========== [PASSED] ttm_pool_alloc_basic_dma_addr ========== [13:58:19] [PASSED] ttm_pool_alloc_order_caching_match [13:58:19] [PASSED] ttm_pool_alloc_caching_mismatch [13:58:19] [PASSED] ttm_pool_alloc_order_mismatch [13:58:19] [PASSED] ttm_pool_free_dma_alloc [13:58:19] [PASSED] ttm_pool_free_no_dma_alloc [13:58:19] [PASSED] ttm_pool_fini_basic [13:58:19] ==================== [PASSED] ttm_pool ===================== [13:58:19] ================ ttm_resource (8 subtests) ================= [13:58:19] ================= ttm_resource_init_basic ================= [13:58:19] [PASSED] Init resource in TTM_PL_SYSTEM [13:58:19] [PASSED] Init resource in TTM_PL_VRAM [13:58:19] [PASSED] Init resource in a private placement [13:58:19] [PASSED] Init resource in TTM_PL_SYSTEM, set placement flags [13:58:19] ============= [PASSED] ttm_resource_init_basic ============= [13:58:19] [PASSED] ttm_resource_init_pinned [13:58:19] [PASSED] ttm_resource_fini_basic [13:58:19] [PASSED] ttm_resource_manager_init_basic [13:58:19] [PASSED] ttm_resource_manager_usage_basic [13:58:19] [PASSED] ttm_resource_manager_set_used_basic [13:58:19] [PASSED] ttm_sys_man_alloc_basic [13:58:19] [PASSED] ttm_sys_man_free_basic [13:58:19] ================== [PASSED] ttm_resource =================== [13:58:19] =================== ttm_tt (15 subtests) =================== [13:58:19] ==================== ttm_tt_init_basic ==================== [13:58:19] [PASSED] Page-aligned size [13:58:19] [PASSED] Extra pages requested [13:58:19] ================ [PASSED] ttm_tt_init_basic ================ [13:58:19] [PASSED] ttm_tt_init_misaligned [13:58:19] [PASSED] ttm_tt_fini_basic [13:58:19] [PASSED] ttm_tt_fini_sg [13:58:19] [PASSED] ttm_tt_fini_shmem [13:58:19] [PASSED] ttm_tt_create_basic [13:58:19] [PASSED] ttm_tt_create_invalid_bo_type [13:58:19] [PASSED] ttm_tt_create_ttm_exists [13:58:19] [PASSED] ttm_tt_create_failed [13:58:19] [PASSED] ttm_tt_destroy_basic [13:58:19] [PASSED] ttm_tt_populate_null_ttm [13:58:19] [PASSED] ttm_tt_populate_populated_ttm [13:58:19] [PASSED] ttm_tt_unpopulate_basic [13:58:19] [PASSED] ttm_tt_unpopulate_empty_ttm [13:58:19] [PASSED] ttm_tt_swapin_basic [13:58:19] ===================== [PASSED] ttm_tt ====================== [13:58:19] =================== ttm_bo (14 subtests) =================== [13:58:19] =========== ttm_bo_reserve_optimistic_no_ticket =========== [13:58:19] [PASSED] Cannot be interrupted and sleeps [13:58:19] [PASSED] Cannot be interrupted, locks straight away [13:58:19] [PASSED] Can be interrupted, sleeps [13:58:19] ======= [PASSED] ttm_bo_reserve_optimistic_no_ticket ======= [13:58:19] [PASSED] ttm_bo_reserve_locked_no_sleep [13:58:19] [PASSED] ttm_bo_reserve_no_wait_ticket [13:58:19] [PASSED] ttm_bo_reserve_double_resv [13:58:19] [PASSED] ttm_bo_reserve_interrupted [13:58:19] [PASSED] ttm_bo_reserve_deadlock [13:58:19] [PASSED] ttm_bo_unreserve_basic [13:58:19] [PASSED] ttm_bo_unreserve_pinned [13:58:19] [PASSED] ttm_bo_unreserve_bulk [13:58:19] [PASSED] ttm_bo_fini_basic [13:58:19] [PASSED] ttm_bo_fini_shared_resv [13:58:19] [PASSED] ttm_bo_pin_basic [13:58:19] [PASSED] ttm_bo_pin_unpin_resource [13:58:19] [PASSED] ttm_bo_multiple_pin_one_unpin [13:58:19] ===================== [PASSED] ttm_bo ====================== [13:58:19] ============== ttm_bo_validate (21 subtests) =============== [13:58:19] ============== ttm_bo_init_reserved_sys_man =============== [13:58:19] [PASSED] Buffer object for userspace [13:58:19] [PASSED] Kernel buffer object [13:58:19] [PASSED] Shared buffer object [13:58:19] ========== [PASSED] ttm_bo_init_reserved_sys_man =========== [13:58:19] ============== ttm_bo_init_reserved_mock_man ============== [13:58:19] [PASSED] Buffer object for userspace [13:58:19] [PASSED] Kernel buffer object [13:58:19] [PASSED] Shared buffer object [13:58:19] ========== [PASSED] ttm_bo_init_reserved_mock_man ========== [13:58:19] [PASSED] ttm_bo_init_reserved_resv [13:58:19] ================== ttm_bo_validate_basic ================== [13:58:19] [PASSED] Buffer object for userspace [13:58:19] [PASSED] Kernel buffer object [13:58:19] [PASSED] Shared buffer object [13:58:19] ============== [PASSED] ttm_bo_validate_basic ============== [13:58:19] [PASSED] ttm_bo_validate_invalid_placement [13:58:19] ============= ttm_bo_validate_same_placement ============== [13:58:19] [PASSED] System manager [13:58:19] [PASSED] VRAM manager [13:58:19] ========= [PASSED] ttm_bo_validate_same_placement ========== [13:58:19] [PASSED] ttm_bo_validate_failed_alloc [13:58:19] [PASSED] ttm_bo_validate_pinned [13:58:19] [PASSED] ttm_bo_validate_busy_placement [13:58:19] ================ ttm_bo_validate_multihop ================= [13:58:19] [PASSED] Buffer object for userspace [13:58:19] [PASSED] Kernel buffer object [13:58:19] [PASSED] Shared buffer object [13:58:19] ============ [PASSED] ttm_bo_validate_multihop ============= [13:58:19] ========== ttm_bo_validate_no_placement_signaled ========== [13:58:19] [PASSED] Buffer object in system domain, no page vector [13:58:19] [PASSED] Buffer object in system domain with an existing page vector [13:58:19] ====== [PASSED] ttm_bo_validate_no_placement_signaled ====== [13:58:19] ======== ttm_bo_validate_no_placement_not_signaled ======== [13:58:19] [PASSED] Buffer object for userspace [13:58:19] [PASSED] Kernel buffer object [13:58:19] [PASSED] Shared buffer object [13:58:19] ==== [PASSED] ttm_bo_validate_no_placement_not_signaled ==== [13:58:19] [PASSED] ttm_bo_validate_move_fence_signaled [13:58:19] ========= ttm_bo_validate_move_fence_not_signaled ========= [13:58:19] [PASSED] Waits for GPU [13:58:19] [PASSED] Tries to lock straight away [13:58:19] ===== [PASSED] ttm_bo_validate_move_fence_not_signaled ===== [13:58:19] [PASSED] ttm_bo_validate_happy_evict [13:58:19] [PASSED] ttm_bo_validate_all_pinned_evict [13:58:19] [PASSED] ttm_bo_validate_allowed_only_evict [13:58:19] [PASSED] ttm_bo_validate_deleted_evict [13:58:19] [PASSED] ttm_bo_validate_busy_domain_evict [13:58:19] [PASSED] ttm_bo_validate_evict_gutting [13:58:19] [PASSED] ttm_bo_validate_recrusive_evict stty: 'standard input': Inappropriate ioctl for device [13:58:19] ================= [PASSED] ttm_bo_validate ================= [13:58:19] ============================================================ [13:58:19] Testing complete. Ran 101 tests: passed: 101 [13:58:19] Elapsed time: 11.243s total, 1.653s configuring, 9.374s building, 0.177s running + cleanup ++ stat -c %u:%g /kernel + chown -R 1003:1003 /kernel ^ permalink raw reply [flat|nested] 11+ messages in thread
* ✓ Xe.CI.BAT: success for Fix fs_reclaim deadlock caused by CCS save/restore (rev5) 2026-02-17 12:07 [PATCH v5 0/3] Fix fs_reclaim deadlock caused by CCS save/restore Satyanarayana K V P ` (4 preceding siblings ...) 2026-02-17 13:58 ` ✓ CI.KUnit: success " Patchwork @ 2026-02-17 14:36 ` Patchwork 2026-02-17 18:14 ` ✗ Xe.CI.FULL: failure " Patchwork 6 siblings, 0 replies; 11+ messages in thread From: Patchwork @ 2026-02-17 14:36 UTC (permalink / raw) To: Satyanarayana K V P; +Cc: intel-xe [-- Attachment #1: Type: text/plain, Size: 1393 bytes --] == Series Details == Series: Fix fs_reclaim deadlock caused by CCS save/restore (rev5) URL : https://patchwork.freedesktop.org/series/160841/ State : success == Summary == CI Bug Log - changes from xe-4566-29942dc4e7d82b945c6c424bbb8af6ff572e235c_BAT -> xe-pw-160841v5_BAT ==================================================== Summary ------- **SUCCESS** No regressions found. Participating hosts (13 -> 14) ------------------------------ Additional (1): bat-bmg-3 Known issues ------------ Here are the changes found in xe-pw-160841v5_BAT that come from known issues: ### IGT changes ### #### Issues hit #### * igt@xe_peer2peer@read@read-gpua-vram01-gpub-system-p2p: - bat-bmg-3: NOTRUN -> [SKIP][1] ([Intel XE#6566]) +3 other tests skip [1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160841v5/bat-bmg-3/igt@xe_peer2peer@read@read-gpua-vram01-gpub-system-p2p.html [Intel XE#6566]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6566 Build changes ------------- * IGT: IGT_8755 -> IGT_8756 * Linux: xe-4566-29942dc4e7d82b945c6c424bbb8af6ff572e235c -> xe-pw-160841v5 IGT_8755: 8755 IGT_8756: 8756 xe-4566-29942dc4e7d82b945c6c424bbb8af6ff572e235c: 29942dc4e7d82b945c6c424bbb8af6ff572e235c xe-pw-160841v5: 160841v5 == Logs == For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160841v5/index.html [-- Attachment #2: Type: text/html, Size: 1971 bytes --] ^ permalink raw reply [flat|nested] 11+ messages in thread
* ✗ Xe.CI.FULL: failure for Fix fs_reclaim deadlock caused by CCS save/restore (rev5) 2026-02-17 12:07 [PATCH v5 0/3] Fix fs_reclaim deadlock caused by CCS save/restore Satyanarayana K V P ` (5 preceding siblings ...) 2026-02-17 14:36 ` ✓ Xe.CI.BAT: " Patchwork @ 2026-02-17 18:14 ` Patchwork 6 siblings, 0 replies; 11+ messages in thread From: Patchwork @ 2026-02-17 18:14 UTC (permalink / raw) To: Satyanarayana K V P; +Cc: intel-xe [-- Attachment #1: Type: text/plain, Size: 29412 bytes --] == Series Details == Series: Fix fs_reclaim deadlock caused by CCS save/restore (rev5) URL : https://patchwork.freedesktop.org/series/160841/ State : failure == Summary == CI Bug Log - changes from xe-4566-29942dc4e7d82b945c6c424bbb8af6ff572e235c_FULL -> xe-pw-160841v5_FULL ==================================================== Summary ------- **FAILURE** Serious unknown changes coming with xe-pw-160841v5_FULL absolutely need to be verified manually. If you think the reported changes have nothing to do with the changes introduced in xe-pw-160841v5_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-160841v5_FULL: ### IGT changes ### #### Possible regressions #### * igt@kms_cursor_crc@cursor-suspend@pipe-c-edp-1: - shard-lnl: [PASS][1] -> [INCOMPLETE][2] +1 other test incomplete [1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4566-29942dc4e7d82b945c6c424bbb8af6ff572e235c/shard-lnl-2/igt@kms_cursor_crc@cursor-suspend@pipe-c-edp-1.html [2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160841v5/shard-lnl-8/igt@kms_cursor_crc@cursor-suspend@pipe-c-edp-1.html * igt@kms_hdmi_inject@inject-audio: - shard-bmg: [PASS][3] -> [SKIP][4] [3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4566-29942dc4e7d82b945c6c424bbb8af6ff572e235c/shard-bmg-7/igt@kms_hdmi_inject@inject-audio.html [4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160841v5/shard-bmg-6/igt@kms_hdmi_inject@inject-audio.html * igt@kms_plane_scaling@plane-upscale-factor-0-25-with-rotation@pipe-c: - shard-bmg: [PASS][5] -> [INCOMPLETE][6] +1 other test incomplete [5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4566-29942dc4e7d82b945c6c424bbb8af6ff572e235c/shard-bmg-4/igt@kms_plane_scaling@plane-upscale-factor-0-25-with-rotation@pipe-c.html [6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160841v5/shard-bmg-8/igt@kms_plane_scaling@plane-upscale-factor-0-25-with-rotation@pipe-c.html Known issues ------------ Here are the changes found in xe-pw-160841v5_FULL that come from known issues: ### IGT changes ### #### Issues hit #### * igt@kms_async_flips@async-flip-with-page-flip-events-linear: - shard-lnl: [PASS][7] -> [FAIL][8] ([Intel XE#5993]) +3 other tests fail [7]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4566-29942dc4e7d82b945c6c424bbb8af6ff572e235c/shard-lnl-1/igt@kms_async_flips@async-flip-with-page-flip-events-linear.html [8]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160841v5/shard-lnl-3/igt@kms_async_flips@async-flip-with-page-flip-events-linear.html * igt@kms_async_flips@async-flip-with-page-flip-events-linear-atomic@pipe-c-edp-1: - shard-lnl: [PASS][9] -> [FAIL][10] ([Intel XE#6054]) +3 other tests fail [9]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4566-29942dc4e7d82b945c6c424bbb8af6ff572e235c/shard-lnl-7/igt@kms_async_flips@async-flip-with-page-flip-events-linear-atomic@pipe-c-edp-1.html [10]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160841v5/shard-lnl-3/igt@kms_async_flips@async-flip-with-page-flip-events-linear-atomic@pipe-c-edp-1.html * igt@kms_big_fb@4-tiled-32bpp-rotate-90: - shard-bmg: NOTRUN -> [SKIP][11] ([Intel XE#2327]) +1 other test skip [11]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160841v5/shard-bmg-3/igt@kms_big_fb@4-tiled-32bpp-rotate-90.html * igt@kms_big_fb@x-tiled-32bpp-rotate-90: - shard-lnl: NOTRUN -> [SKIP][12] ([Intel XE#1407]) +1 other test skip [12]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160841v5/shard-lnl-6/igt@kms_big_fb@x-tiled-32bpp-rotate-90.html * igt@kms_big_fb@y-tiled-16bpp-rotate-90: - shard-lnl: NOTRUN -> [SKIP][13] ([Intel XE#1124]) +1 other test skip [13]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160841v5/shard-lnl-5/igt@kms_big_fb@y-tiled-16bpp-rotate-90.html * igt@kms_big_fb@y-tiled-addfb-size-offset-overflow: - shard-lnl: NOTRUN -> [SKIP][14] ([Intel XE#1477]) [14]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160841v5/shard-lnl-6/igt@kms_big_fb@y-tiled-addfb-size-offset-overflow.html - shard-bmg: NOTRUN -> [SKIP][15] ([Intel XE#607]) [15]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160841v5/shard-bmg-9/igt@kms_big_fb@y-tiled-addfb-size-offset-overflow.html * igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-0-hflip: - shard-bmg: NOTRUN -> [SKIP][16] ([Intel XE#1124]) +1 other test skip [16]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160841v5/shard-bmg-4/igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-0-hflip.html * igt@kms_ccs@bad-rotation-90-4-tiled-dg2-rc-ccs: - shard-lnl: NOTRUN -> [SKIP][17] ([Intel XE#2887]) +4 other tests skip [17]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160841v5/shard-lnl-4/igt@kms_ccs@bad-rotation-90-4-tiled-dg2-rc-ccs.html * igt@kms_ccs@bad-rotation-90-y-tiled-ccs: - shard-bmg: NOTRUN -> [SKIP][18] ([Intel XE#2887]) +6 other tests skip [18]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160841v5/shard-bmg-4/igt@kms_ccs@bad-rotation-90-y-tiled-ccs.html * igt@kms_ccs@crc-primary-suspend-4-tiled-lnl-ccs@pipe-b-dp-1: - shard-bmg: NOTRUN -> [SKIP][19] ([Intel XE#2652] / [Intel XE#787]) +3 other tests skip [19]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160841v5/shard-bmg-5/igt@kms_ccs@crc-primary-suspend-4-tiled-lnl-ccs@pipe-b-dp-1.html * igt@kms_cdclk@plane-scaling: - shard-bmg: NOTRUN -> [SKIP][20] ([Intel XE#2724]) [20]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160841v5/shard-bmg-7/igt@kms_cdclk@plane-scaling.html * igt@kms_chamelium_edid@vga-edid-read: - shard-lnl: NOTRUN -> [SKIP][21] ([Intel XE#373]) +1 other test skip [21]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160841v5/shard-lnl-6/igt@kms_chamelium_edid@vga-edid-read.html * igt@kms_chamelium_hpd@dp-hpd-storm-disable: - shard-bmg: NOTRUN -> [SKIP][22] ([Intel XE#2252]) [22]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160841v5/shard-bmg-6/igt@kms_chamelium_hpd@dp-hpd-storm-disable.html * igt@kms_content_protection@atomic-dpms-hdcp14@pipe-a-dp-1: - shard-bmg: NOTRUN -> [FAIL][23] ([Intel XE#3304]) +1 other test fail [23]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160841v5/shard-bmg-5/igt@kms_content_protection@atomic-dpms-hdcp14@pipe-a-dp-1.html * igt@kms_content_protection@dp-mst-type-0-suspend-resume: - shard-lnl: NOTRUN -> [SKIP][24] ([Intel XE#6974]) [24]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160841v5/shard-lnl-2/igt@kms_content_protection@dp-mst-type-0-suspend-resume.html - shard-bmg: NOTRUN -> [SKIP][25] ([Intel XE#6974]) [25]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160841v5/shard-bmg-6/igt@kms_content_protection@dp-mst-type-0-suspend-resume.html * igt@kms_content_protection@suspend-resume: - shard-bmg: NOTRUN -> [FAIL][26] ([Intel XE#1178] / [Intel XE#3304]) +1 other test fail [26]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160841v5/shard-bmg-5/igt@kms_content_protection@suspend-resume.html * igt@kms_content_protection@type1: - shard-bmg: NOTRUN -> [SKIP][27] ([Intel XE#2341]) [27]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160841v5/shard-bmg-10/igt@kms_content_protection@type1.html * igt@kms_cursor_crc@cursor-onscreen-max-size: - shard-lnl: NOTRUN -> [SKIP][28] ([Intel XE#1424]) [28]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160841v5/shard-lnl-8/igt@kms_cursor_crc@cursor-onscreen-max-size.html * igt@kms_cursor_crc@cursor-rapid-movement-128x42: - shard-bmg: NOTRUN -> [SKIP][29] ([Intel XE#2320]) [29]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160841v5/shard-bmg-9/igt@kms_cursor_crc@cursor-rapid-movement-128x42.html * igt@kms_cursor_crc@cursor-rapid-movement-512x170: - shard-lnl: NOTRUN -> [SKIP][30] ([Intel XE#2321]) [30]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160841v5/shard-lnl-4/igt@kms_cursor_crc@cursor-rapid-movement-512x170.html - shard-bmg: NOTRUN -> [SKIP][31] ([Intel XE#2321]) [31]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160841v5/shard-bmg-2/igt@kms_cursor_crc@cursor-rapid-movement-512x170.html * igt@kms_cursor_legacy@cursora-vs-flipb-atomic-transitions-varying-size: - shard-lnl: NOTRUN -> [SKIP][32] ([Intel XE#309]) [32]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160841v5/shard-lnl-4/igt@kms_cursor_legacy@cursora-vs-flipb-atomic-transitions-varying-size.html * igt@kms_flip@flip-vs-expired-vblank@a-edp1: - shard-lnl: [PASS][33] -> [FAIL][34] ([Intel XE#301]) +1 other test fail [33]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4566-29942dc4e7d82b945c6c424bbb8af6ff572e235c/shard-lnl-6/igt@kms_flip@flip-vs-expired-vblank@a-edp1.html [34]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160841v5/shard-lnl-4/igt@kms_flip@flip-vs-expired-vblank@a-edp1.html * igt@kms_flip@flip-vs-suspend@c-hdmi-a3: - shard-bmg: [PASS][35] -> [INCOMPLETE][36] ([Intel XE#2049] / [Intel XE#2597]) +1 other test incomplete [35]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4566-29942dc4e7d82b945c6c424bbb8af6ff572e235c/shard-bmg-2/igt@kms_flip@flip-vs-suspend@c-hdmi-a3.html [36]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160841v5/shard-bmg-2/igt@kms_flip@flip-vs-suspend@c-hdmi-a3.html * igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling: - shard-bmg: NOTRUN -> [SKIP][37] ([Intel XE#7178]) +1 other test skip [37]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160841v5/shard-bmg-7/igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-upscaling.html * igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-fullscreen: - shard-bmg: NOTRUN -> [SKIP][38] ([Intel XE#4141]) +3 other tests skip [38]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160841v5/shard-bmg-7/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-fullscreen.html * igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-shrfb-draw-blt: - shard-lnl: NOTRUN -> [SKIP][39] ([Intel XE#656]) +8 other tests skip [39]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160841v5/shard-lnl-4/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-shrfb-draw-blt.html * igt@kms_frontbuffer_tracking@fbc-abgr161616f-draw-blt: - shard-lnl: NOTRUN -> [SKIP][40] ([Intel XE#7061]) [40]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160841v5/shard-lnl-2/igt@kms_frontbuffer_tracking@fbc-abgr161616f-draw-blt.html - shard-bmg: NOTRUN -> [SKIP][41] ([Intel XE#7061]) [41]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160841v5/shard-bmg-5/igt@kms_frontbuffer_tracking@fbc-abgr161616f-draw-blt.html * igt@kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-cur-indfb-draw-mmap-wc: - shard-bmg: NOTRUN -> [SKIP][42] ([Intel XE#2311]) +6 other tests skip [42]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160841v5/shard-bmg-3/igt@kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-cur-indfb-draw-mmap-wc.html * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-fullscreen: - shard-bmg: NOTRUN -> [SKIP][43] ([Intel XE#2313]) +4 other tests skip [43]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160841v5/shard-bmg-3/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-fullscreen.html * igt@kms_frontbuffer_tracking@fbcpsr-tiling-y: - shard-bmg: NOTRUN -> [SKIP][44] ([Intel XE#2352]) [44]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160841v5/shard-bmg-6/igt@kms_frontbuffer_tracking@fbcpsr-tiling-y.html * igt@kms_hdr@invalid-hdr: - shard-bmg: [PASS][45] -> [SKIP][46] ([Intel XE#1503]) [45]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4566-29942dc4e7d82b945c6c424bbb8af6ff572e235c/shard-bmg-1/igt@kms_hdr@invalid-hdr.html [46]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160841v5/shard-bmg-9/igt@kms_hdr@invalid-hdr.html * igt@kms_pm_rpm@package-g7: - shard-lnl: NOTRUN -> [SKIP][47] ([Intel XE#6813]) [47]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160841v5/shard-lnl-5/igt@kms_pm_rpm@package-g7.html * igt@kms_psr2_sf@pr-primary-plane-update-sf-dmg-area-big-fb: - shard-lnl: NOTRUN -> [SKIP][48] ([Intel XE#1406] / [Intel XE#2893]) [48]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160841v5/shard-lnl-8/igt@kms_psr2_sf@pr-primary-plane-update-sf-dmg-area-big-fb.html - shard-bmg: NOTRUN -> [SKIP][49] ([Intel XE#1406] / [Intel XE#1489]) +1 other test skip [49]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160841v5/shard-bmg-3/igt@kms_psr2_sf@pr-primary-plane-update-sf-dmg-area-big-fb.html * igt@kms_psr2_su@frontbuffer-xrgb8888: - shard-lnl: NOTRUN -> [SKIP][50] ([Intel XE#1128] / [Intel XE#1406]) [50]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160841v5/shard-lnl-1/igt@kms_psr2_su@frontbuffer-xrgb8888.html - shard-bmg: NOTRUN -> [SKIP][51] ([Intel XE#1406] / [Intel XE#2387]) [51]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160841v5/shard-bmg-5/igt@kms_psr2_su@frontbuffer-xrgb8888.html * igt@kms_psr@fbc-psr2-cursor-plane-move: - shard-bmg: NOTRUN -> [SKIP][52] ([Intel XE#1406] / [Intel XE#2234] / [Intel XE#2850]) +5 other tests skip [52]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160841v5/shard-bmg-6/igt@kms_psr@fbc-psr2-cursor-plane-move.html * igt@kms_rotation_crc@primary-y-tiled-reflect-x-0: - shard-lnl: NOTRUN -> [SKIP][53] ([Intel XE#1127]) [53]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160841v5/shard-lnl-7/igt@kms_rotation_crc@primary-y-tiled-reflect-x-0.html - shard-bmg: NOTRUN -> [SKIP][54] ([Intel XE#2330]) [54]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160841v5/shard-bmg-7/igt@kms_rotation_crc@primary-y-tiled-reflect-x-0.html * igt@kms_rotation_crc@sprite-rotation-90: - shard-lnl: NOTRUN -> [SKIP][55] ([Intel XE#3414] / [Intel XE#3904]) [55]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160841v5/shard-lnl-5/igt@kms_rotation_crc@sprite-rotation-90.html * igt@kms_scaling_modes@scaling-mode-center: - shard-bmg: NOTRUN -> [SKIP][56] ([Intel XE#2413]) [56]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160841v5/shard-bmg-5/igt@kms_scaling_modes@scaling-mode-center.html * igt@kms_vrr@flip-basic-fastset: - shard-bmg: NOTRUN -> [SKIP][57] ([Intel XE#1499]) [57]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160841v5/shard-bmg-2/igt@kms_vrr@flip-basic-fastset.html * igt@xe_compute@ccs-mode-compute-kernel: - shard-bmg: NOTRUN -> [SKIP][58] ([Intel XE#6599]) [58]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160841v5/shard-bmg-9/igt@xe_compute@ccs-mode-compute-kernel.html * igt@xe_eudebug@discovery-race-sigint: - shard-lnl: NOTRUN -> [SKIP][59] ([Intel XE#4837]) [59]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160841v5/shard-lnl-7/igt@xe_eudebug@discovery-race-sigint.html * igt@xe_eudebug_online@preempt-breakpoint: - shard-bmg: NOTRUN -> [SKIP][60] ([Intel XE#4837] / [Intel XE#6665]) [60]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160841v5/shard-bmg-5/igt@xe_eudebug_online@preempt-breakpoint.html * igt@xe_eudebug_online@reset-with-attention: - shard-lnl: NOTRUN -> [SKIP][61] ([Intel XE#4837] / [Intel XE#6665]) [61]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160841v5/shard-lnl-3/igt@xe_eudebug_online@reset-with-attention.html * igt@xe_evict@evict-beng-large-multi-vm-cm: - shard-lnl: NOTRUN -> [SKIP][62] ([Intel XE#688]) [62]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160841v5/shard-lnl-3/igt@xe_evict@evict-beng-large-multi-vm-cm.html * igt@xe_exec_basic@multigpu-once-null-defer-bind: - shard-lnl: NOTRUN -> [SKIP][63] ([Intel XE#1392]) +2 other tests skip [63]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160841v5/shard-lnl-2/igt@xe_exec_basic@multigpu-once-null-defer-bind.html * igt@xe_exec_basic@multigpu-once-rebind: - shard-bmg: NOTRUN -> [SKIP][64] ([Intel XE#2322]) [64]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160841v5/shard-bmg-7/igt@xe_exec_basic@multigpu-once-rebind.html * igt@xe_exec_fault_mode@twice-multi-queue-invalid-fault: - shard-lnl: NOTRUN -> [SKIP][65] ([Intel XE#7136]) +4 other tests skip [65]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160841v5/shard-lnl-4/igt@xe_exec_fault_mode@twice-multi-queue-invalid-fault.html * igt@xe_exec_fault_mode@twice-multi-queue-userptr: - shard-bmg: NOTRUN -> [SKIP][66] ([Intel XE#7136]) +2 other tests skip [66]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160841v5/shard-bmg-10/igt@xe_exec_fault_mode@twice-multi-queue-userptr.html * igt@xe_exec_multi_queue@one-queue-preempt-mode-fault-userptr-invalidate: - shard-lnl: NOTRUN -> [SKIP][67] ([Intel XE#6874]) +6 other tests skip [67]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160841v5/shard-lnl-6/igt@xe_exec_multi_queue@one-queue-preempt-mode-fault-userptr-invalidate.html * igt@xe_exec_multi_queue@two-queues-basic-smem: - shard-bmg: NOTRUN -> [SKIP][68] ([Intel XE#6874]) +6 other tests skip [68]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160841v5/shard-bmg-10/igt@xe_exec_multi_queue@two-queues-basic-smem.html * igt@xe_exec_sip_eudebug@breakpoint-writesip-nodebug: - shard-bmg: NOTRUN -> [SKIP][69] ([Intel XE#4837]) +4 other tests skip [69]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160841v5/shard-bmg-10/igt@xe_exec_sip_eudebug@breakpoint-writesip-nodebug.html * igt@xe_exec_system_allocator@pat-index-madvise-pat-idx-uc-comp-multi-vma: - shard-lnl: NOTRUN -> [SKIP][70] ([Intel XE#6196]) [70]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160841v5/shard-lnl-6/igt@xe_exec_system_allocator@pat-index-madvise-pat-idx-uc-comp-multi-vma.html * igt@xe_exec_threads@threads-multi-queue-fd-userptr: - shard-lnl: NOTRUN -> [SKIP][71] ([Intel XE#7138]) +2 other tests skip [71]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160841v5/shard-lnl-7/igt@xe_exec_threads@threads-multi-queue-fd-userptr.html * igt@xe_exec_threads@threads-multi-queue-mixed-fd-userptr-rebind: - shard-bmg: NOTRUN -> [SKIP][72] ([Intel XE#7138]) +1 other test skip [72]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160841v5/shard-bmg-8/igt@xe_exec_threads@threads-multi-queue-mixed-fd-userptr-rebind.html * igt@xe_mmap@vram: - shard-lnl: NOTRUN -> [SKIP][73] ([Intel XE#1416]) [73]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160841v5/shard-lnl-2/igt@xe_mmap@vram.html * igt@xe_multigpu_svm@mgpu-latency-basic: - shard-lnl: NOTRUN -> [SKIP][74] ([Intel XE#6964]) [74]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160841v5/shard-lnl-3/igt@xe_multigpu_svm@mgpu-latency-basic.html * igt@xe_pm@vram-d3cold-threshold: - shard-lnl: NOTRUN -> [SKIP][75] ([Intel XE#579]) [75]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160841v5/shard-lnl-6/igt@xe_pm@vram-d3cold-threshold.html * igt@xe_pm_residency@aspm_link_residency: - shard-bmg: [PASS][76] -> [SKIP][77] ([Intel XE#7258]) [76]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4566-29942dc4e7d82b945c6c424bbb8af6ff572e235c/shard-bmg-10/igt@xe_pm_residency@aspm_link_residency.html [77]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160841v5/shard-bmg-5/igt@xe_pm_residency@aspm_link_residency.html * igt@xe_pxp@pxp-optout: - shard-bmg: NOTRUN -> [SKIP][78] ([Intel XE#4733]) [78]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160841v5/shard-bmg-3/igt@xe_pxp@pxp-optout.html * igt@xe_sriov_admin@bulk-preempt-timeout-vfs-disabled: - shard-lnl: NOTRUN -> [SKIP][79] ([Intel XE#7174]) [79]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160841v5/shard-lnl-5/igt@xe_sriov_admin@bulk-preempt-timeout-vfs-disabled.html * igt@xe_survivability@i2c-functionality: - shard-lnl: NOTRUN -> [SKIP][80] ([Intel XE#6529]) [80]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160841v5/shard-lnl-3/igt@xe_survivability@i2c-functionality.html #### Possible fixes #### * igt@kms_bw@linear-tiling-1-displays-2560x1440p: - shard-bmg: [SKIP][81] ([Intel XE#367]) -> [PASS][82] [81]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4566-29942dc4e7d82b945c6c424bbb8af6ff572e235c/shard-bmg-9/igt@kms_bw@linear-tiling-1-displays-2560x1440p.html [82]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160841v5/shard-bmg-5/igt@kms_bw@linear-tiling-1-displays-2560x1440p.html * igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs: - shard-bmg: [INCOMPLETE][83] ([Intel XE#7084]) -> [PASS][84] +1 other test pass [83]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4566-29942dc4e7d82b945c6c424bbb8af6ff572e235c/shard-bmg-2/igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs.html [84]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160841v5/shard-bmg-5/igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs.html * igt@kms_cursor_legacy@cursora-vs-flipa-atomic-transitions-varying-size: - shard-bmg: [DMESG-WARN][85] ([Intel XE#5354]) -> [PASS][86] [85]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4566-29942dc4e7d82b945c6c424bbb8af6ff572e235c/shard-bmg-2/igt@kms_cursor_legacy@cursora-vs-flipa-atomic-transitions-varying-size.html [86]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160841v5/shard-bmg-5/igt@kms_cursor_legacy@cursora-vs-flipa-atomic-transitions-varying-size.html * igt@kms_plane_multiple@tiling-none: - shard-bmg: [INCOMPLETE][87] -> [PASS][88] [87]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4566-29942dc4e7d82b945c6c424bbb8af6ff572e235c/shard-bmg-6/igt@kms_plane_multiple@tiling-none.html [88]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160841v5/shard-bmg-5/igt@kms_plane_multiple@tiling-none.html * igt@kms_pm_dc@dc6-dpms: - shard-lnl: [FAIL][89] ([Intel XE#718]) -> [PASS][90] [89]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4566-29942dc4e7d82b945c6c424bbb8af6ff572e235c/shard-lnl-8/igt@kms_pm_dc@dc6-dpms.html [90]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160841v5/shard-lnl-1/igt@kms_pm_dc@dc6-dpms.html * igt@xe_pmu@engine-activity-accuracy-90: - shard-bmg: [FAIL][91] -> [PASS][92] +1 other test pass [91]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4566-29942dc4e7d82b945c6c424bbb8af6ff572e235c/shard-bmg-7/igt@xe_pmu@engine-activity-accuracy-90.html [92]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160841v5/shard-bmg-7/igt@xe_pmu@engine-activity-accuracy-90.html #### Warnings #### * igt@xe_fault_injection@probe-fail-guc-xe_guc_ct_send_recv: - shard-bmg: [ABORT][93] ([Intel XE#5466] / [Intel XE#6652]) -> [ABORT][94] ([Intel XE#5466]) [93]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4566-29942dc4e7d82b945c6c424bbb8af6ff572e235c/shard-bmg-7/igt@xe_fault_injection@probe-fail-guc-xe_guc_ct_send_recv.html [94]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160841v5/shard-bmg-7/igt@xe_fault_injection@probe-fail-guc-xe_guc_ct_send_recv.html [Intel XE#1124]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1124 [Intel XE#1127]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1127 [Intel XE#1128]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1128 [Intel XE#1178]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1178 [Intel XE#1392]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1392 [Intel XE#1406]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1406 [Intel XE#1407]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1407 [Intel XE#1416]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1416 [Intel XE#1424]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1424 [Intel XE#1477]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1477 [Intel XE#1489]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1489 [Intel XE#1499]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1499 [Intel XE#1503]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1503 [Intel XE#2049]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2049 [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#2313]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2313 [Intel XE#2320]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2320 [Intel XE#2321]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2321 [Intel XE#2322]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2322 [Intel XE#2327]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2327 [Intel XE#2330]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2330 [Intel XE#2341]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2341 [Intel XE#2352]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2352 [Intel XE#2387]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2387 [Intel XE#2413]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2413 [Intel XE#2597]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2597 [Intel XE#2652]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2652 [Intel XE#2724]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2724 [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#2893]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2893 [Intel XE#301]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/301 [Intel XE#309]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/309 [Intel XE#3304]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3304 [Intel XE#3414]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3414 [Intel XE#367]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/367 [Intel XE#373]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/373 [Intel XE#3904]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3904 [Intel XE#4141]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4141 [Intel XE#4733]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4733 [Intel XE#4837]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4837 [Intel XE#5354]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5354 [Intel XE#5466]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5466 [Intel XE#579]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/579 [Intel XE#5993]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5993 [Intel XE#6054]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6054 [Intel XE#607]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/607 [Intel XE#6196]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6196 [Intel XE#6529]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6529 [Intel XE#656]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/656 [Intel XE#6599]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6599 [Intel XE#6652]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6652 [Intel XE#6665]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6665 [Intel XE#6813]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6813 [Intel XE#6874]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6874 [Intel XE#688]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/688 [Intel XE#6964]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6964 [Intel XE#6974]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6974 [Intel XE#7061]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7061 [Intel XE#7084]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7084 [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#7174]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7174 [Intel XE#7178]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7178 [Intel XE#718]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/718 [Intel XE#7258]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7258 [Intel XE#787]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/787 Build changes ------------- * IGT: IGT_8755 -> IGT_8756 * Linux: xe-4566-29942dc4e7d82b945c6c424bbb8af6ff572e235c -> xe-pw-160841v5 IGT_8755: 8755 IGT_8756: 8756 xe-4566-29942dc4e7d82b945c6c424bbb8af6ff572e235c: 29942dc4e7d82b945c6c424bbb8af6ff572e235c xe-pw-160841v5: 160841v5 == Logs == For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160841v5/index.html [-- Attachment #2: Type: text/html, Size: 32861 bytes --] ^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2026-02-18 15:52 UTC | newest] Thread overview: 11+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2026-02-17 12:07 [PATCH v5 0/3] Fix fs_reclaim deadlock caused by CCS save/restore Satyanarayana K V P 2026-02-17 12:07 ` [PATCH v5 1/3] drm/sa: Split drm_suballoc_new() into SA alloc and init helpers Satyanarayana K V P 2026-02-17 12:07 ` [PATCH v5 2/3] drm/xe/vf: Fix fs_reclaim warning with CCS save/restore BB allocation Satyanarayana K V P 2026-02-17 13:22 ` Thomas Hellström 2026-02-18 9:51 ` [v5, " Maarten Lankhorst 2026-02-18 15:52 ` K V P, Satyanarayana 2026-02-17 12:07 ` [PATCH v5 3/3] drm/xe/sa: Add lockdep annotations for SA manager swap_guard Satyanarayana K V P 2026-02-17 13:56 ` ✗ CI.checkpatch: warning for Fix fs_reclaim deadlock caused by CCS save/restore (rev5) Patchwork 2026-02-17 13:58 ` ✓ CI.KUnit: success " Patchwork 2026-02-17 14:36 ` ✓ Xe.CI.BAT: " Patchwork 2026-02-17 18:14 ` ✗ 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