drm/xe: Fix LR exec queue suspend/resume for S3/S4
Subsystems (3)
Thomas Hellström
maintainerv3 cover drm/xe: Fix LR exec queue suspend/resume for S3/S4
Long Running (LR) exec queues — used by compute workloads with SVM (fault-mode) and by preempt-fence-mode — were not surviving S3/S4 suspend/resume correctly. Five distinct problems are addressed:
1. Exec queue scheduler start during resume was not deferred: user exec queue schedulers were started before page table BOs and LRC BOs were restored. A job in this window would cause GuC to load a context from stale or invalid VRAM. User exec queue schedulers are now deferred until after page tables and LRC BOs are restored. Migrate and kernel VM queues are still started immediately as they are required by the restore process itself.
2. Exec queue suspend/resume lacked coordination when multiple paths (PM, mode switching, preempt fences) needed to hold the queue suspended simultaneously. A resume from one path could prematurely re-enable a queue still held suspended by another. Each caller can now independently hold a suspend; the queue resumes only when all callers have released it.
3. During PM suspend, any user exec queue with a started-but-incomplete job was banned. For LR queues this is always true — their jobs are designed to run indefinitely — so every PM suspend permanently banned the queue. The ban is now suppressed for LR VM exec queues during PM suspend or hibernation while being preserved for GT reset (legitimate hang detection).
4. The execution mode constant EXEC_MODE_LR in xe_hw_engine_group was misleading since not all long-running queues use fault mode. It is renamed to EXEC_MODE_FAULT. No functional change.
5. Fault-mode (SVM) VMs use GPU page faults to access memory. A running fault-mode job can re-fault pages torn down by VRAM eviction, racing with the eviction. Fault-mode exec queues are now suspended and drained before any VRAM eviction begins. On resume, they are re-registered and restarted once hardware is restored. Exec queues created concurrently with PM suspend are immediately suspended so the resume path picks them up.
Note: A prerequisite revert ("Revert drm/xe: Skip exec queue schedule toggle if queue is idle during suspend") was already sent as a separate patch and is not included here.
v2:
- Dropped "Restore userspace LRC BOs early on resume": replaced by patch 1/5 which defers user exec queue scheduler start until after page tables are restored, achieving the same ordering guarantee.
- Added patch 1/5: Defer user exec queue scheduler start until after page table restore.
- Added patch 4/5: Rename EXEC_MODE_LR to EXEC_MODE_FAULT.
- Patch 5/5: see per-patch v2 changelog.
v3:
- Patch 1/5: Fix a warning. (Intel CI)
Thomas Hellström (5):
drm/xe/guc: Defer user exec queue scheduler start until after page
table restore
drm/xe/guc: Don't ban LR VM exec queues on PM suspend drm/xe/guc: Add suspend refcount to exec queue ops drm/xe: Rename EXEC_MODE_LR to EXEC_MODE_FAULT in hw engine group drm/xe: Suspend fault-mode LR jobs before VRAM eviction on S3/S4
drivers/gpu/drm/xe/xe_device_types.h | 8 + drivers/gpu/drm/xe/xe_exec.c | 2 +- drivers/gpu/drm/xe/xe_exec_queue_types.h | 7 + drivers/gpu/drm/xe/xe_gt.c | 16 ++ drivers/gpu/drm/xe/xe_gt.h | 2 + drivers/gpu/drm/xe/xe_guc.c | 13 ++ drivers/gpu/drm/xe/xe_guc.h | 1 + drivers/gpu/drm/xe/xe_guc_exec_queue_types.h | 7 + drivers/gpu/drm/xe/xe_guc_submit.c | 103 ++++++++++- drivers/gpu/drm/xe/xe_guc_submit.h | 2 + drivers/gpu/drm/xe/xe_hw_engine_group.c | 171 ++++++++++++++++-- drivers/gpu/drm/xe/xe_hw_engine_group.h | 3 + drivers/gpu/drm/xe/xe_hw_engine_group_types.h | 11 +- drivers/gpu/drm/xe/xe_pm.c | 26 ++- drivers/gpu/drm/xe/xe_uc.c | 16 ++ drivers/gpu/drm/xe/xe_uc.h | 1 + 16 files changed, 357 insertions(+), 32 deletions(-)
Signature · 30 lines
2.54.0
Thomas Hellström (5):
drm/xe/guc: Defer user exec queue scheduler start until after page
table restore
drm/xe/guc: Don't ban LR VM exec queues on PM suspend
drm/xe/guc: Add suspend refcount to exec queue ops
drm/xe: Rename EXEC_MODE_LR to EXEC_MODE_FAULT in hw engine group
drm/xe: Suspend fault-mode LR jobs before VRAM eviction on S3/S4
drivers/gpu/drm/xe/xe_device_types.h | 8 +
drivers/gpu/drm/xe/xe_exec.c | 2 +-
drivers/gpu/drm/xe/xe_exec_queue_types.h | 7 +
drivers/gpu/drm/xe/xe_gt.c | 16 ++
drivers/gpu/drm/xe/xe_gt.h | 2 +
drivers/gpu/drm/xe/xe_guc.c | 13 ++
drivers/gpu/drm/xe/xe_guc.h | 1 +
drivers/gpu/drm/xe/xe_guc_exec_queue_types.h | 7 +
drivers/gpu/drm/xe/xe_guc_submit.c | 111 +++++++++++-
drivers/gpu/drm/xe/xe_guc_submit.h | 2 +
drivers/gpu/drm/xe/xe_hw_engine_group.c | 171 ++++++++++++++++--
drivers/gpu/drm/xe/xe_hw_engine_group.h | 3 +
drivers/gpu/drm/xe/xe_hw_engine_group_types.h | 11 +-
drivers/gpu/drm/xe/xe_pm.c | 26 ++-
drivers/gpu/drm/xe/xe_uc.c | 16 ++
drivers/gpu/drm/xe/xe_uc.h | 1 +
16 files changed, 365 insertions(+), 32 deletions(-)
--
2.54.0Thomas Hellström
maintainerPATCH v3 1/5 drm/xe/guc: Defer user exec queue scheduler start until after page table restore
On S3/S4 and d3cold runtime PM resume, exec queue schedulers are restarted before xe_bo_restore_late() has restored userspace VM page table BOs and LRC BOs. If a pending job is submitted in this window, GuC will attempt to load the context using stale or invalid data in VRAM, leading to GuC exceptions.
Defer user exec queue scheduler start until after page tables and LRC BOs are restored, ensuring no job can be submitted before the backing storage is valid. Migrate and kernel VM exec queues are still started immediately as they are required by the restore process itself.
For GT reset, VRAM is not evicted and all BOs remain valid, so user exec queue schedulers are started without deferral.
This covers both LR and non-LR userspace exec queues.
v3:
- Skip queues with a running scheduler in xe_guc_submit_start_user_queues() to avoid a WARN_ON in drm_sched_for_each_pending_job() when a new user exec queue is created in the window between xe_guc_submit_start() and xe_guc_submit_start_user_queues(). (Intel CI)
--- drivers/gpu/drm/xe/xe_gt.c | 16 +++++++++ drivers/gpu/drm/xe/xe_gt.h | 2 ++ drivers/gpu/drm/xe/xe_guc.c | 13 ++++++++ drivers/gpu/drm/xe/xe_guc.h | 1 + drivers/gpu/drm/xe/xe_guc_submit.c | 52 ++++++++++++++++++++++++++++++ drivers/gpu/drm/xe/xe_guc_submit.h | 1 + drivers/gpu/drm/xe/xe_pm.c | 6 ++++ drivers/gpu/drm/xe/xe_uc.c | 16 +++++++++ drivers/gpu/drm/xe/xe_uc.h | 1 + 9 files changed, 108 insertions(+)
drivers/gpu/drm/xe/xe_gt.c +16 -0
@@ -955,6 +955,8 @@ static void gt_reset_worker(struct work_struct *w)if (err) goto err_out; +xe_uc_start_user_queues (>->uc); +xe_force_wake_put (gt_to_fw (gt), fw_ref);/* Pair with get while enqueueing the work in xe_gt_reset_async() */
@@ -967,6 +969,7 @@ static void gt_reset_worker(struct work_struct *w) err_out:xe_force_wake_put (gt_to_fw (gt), fw_ref);XE_WARN_ON (xe_uc_start (>->uc)); +xe_uc_start_user_queues (>->uc); err_fail:xe_gt_err (gt,"reset failed (%pe)\n" ,ERR_PTR (err));
@@ -1050,6 +1053,19 @@ int xe_gt_sanitize_freq(struct xe_gt *gt)return ret; } +/** +* xe_gt_start_user_queues() - Start user exec queues after page table restore +* @gt: the GT object +* +* Starts the DRM schedulers for all user exec queues on the GT. This must be +* called after xe_bo_restore_late() to ensure that userspace page table BOs +* are valid before any job submission triggers GuC context registration. +*/ +void xe_gt_start_user_queues (struct xe_gt *gt) +{ +xe_uc_start_user_queues (>->uc); +} +int xe_gt_resume (struct xe_gt *gt) {int err;
drivers/gpu/drm/xe/xe_gt.h +2 -0
@@ -170,4 +170,6 @@ static inline bool xe_gt_supports_multi_queue(const struct xe_gt *gt, return gt->info.multi_queue_engine_class_mask & BIT(class); } +void xe_gt_start_user_queues (struct xe_gt *gt); +#endif
drivers/gpu/drm/xe/xe_guc.c +13 -0
@@ -1717,6 +1717,19 @@ int xe_guc_start(struct xe_guc *guc)return xe_guc_submit_start (guc); } +/** +* xe_guc_start_user_queues() - Start user exec queue schedulers on the GuC +* @guc: the GuC object +* +* Starts the DRM schedulers for all user exec queues managed by this GuC. +* Must be called after xe_bo_restore_late() to ensure page tables are valid +* before any job submission triggers GuC context registration. +*/ +void xe_guc_start_user_queues (struct xe_guc *guc) +{ +xe_guc_submit_start_user_queues (guc); +} +/** * xe_guc_runtime_suspend() - GuC runtime suspend * @guc: The GuC object
drivers/gpu/drm/xe/xe_guc.h +1 -0
@@ -60,6 +60,7 @@ void xe_guc_reset_wait(struct xe_guc *guc);void xe_guc_stop_prepare (struct xe_guc *guc);void xe_guc_stop (struct xe_guc *guc);int xe_guc_start (struct xe_guc *guc); +void xe_guc_start_user_queues (struct xe_guc *guc);void xe_guc_declare_wedged (struct xe_guc *guc);bool xe_guc_using_main_gamctrl_queues (struct xe_guc *guc);
drivers/gpu/drm/xe/xe_guc_submit.c +52 -0
70 lines not on this page · raw message
drivers/gpu/drm/xe/xe_guc_submit.h +1 -0
@@ -20,6 +20,7 @@ int xe_guc_submit_reset_prepare(struct xe_guc *guc);void xe_guc_submit_reset_wait (struct xe_guc *guc);void xe_guc_submit_stop (struct xe_guc *guc);int xe_guc_submit_start (struct xe_guc *guc); +void xe_guc_submit_start_user_queues (struct xe_guc *guc);void xe_guc_submit_pause (struct xe_guc *guc);void xe_guc_submit_pause_abort (struct xe_guc *guc);void xe_guc_submit_pause_vf (struct xe_guc *guc);
drivers/gpu/drm/xe/xe_pm.c +6 -0
@@ -282,6 +282,9 @@ int xe_pm_resume(struct xe_device *xe)if (err) goto err; +for_each_gt (gt, xe, id) +xe_gt_start_user_queues (gt); +xe_pxp_pm_resume (xe->pxp);if (IS_VF_CCS_READY (xe))
@@ -696,6 +699,9 @@ int xe_pm_runtime_resume(struct xe_device *xe) err =xe_bo_restore_late (xe);if (err) goto out; + +for_each_gt (gt, xe, id) +xe_gt_start_user_queues (gt); }xe_pxp_pm_resume (xe->pxp);
drivers/gpu/drm/xe/xe_uc.c +16 -0
@@ -263,6 +263,22 @@ int xe_uc_start(struct xe_uc *uc)return xe_guc_start (&uc->guc); } +/** +* xe_uc_start_user_queues() - Start user exec queues after late restore +* @uc: the UC object +* +* Starts the DRM schedulers for all user exec queues. Must be called after +* xe_bo_restore_late() to ensure page tables are valid before any job +* submission is attempted. Has no effect if GuC submission is not enabled. +*/ +void xe_uc_start_user_queues (struct xe_uc *uc) +{ +if (!xe_device_uc_enabled (uc_to_xe (uc))) +return ; + +xe_guc_start_user_queues (&uc->guc); +} +static void uc_reset_wait (struct xe_uc *uc) {int ret;
drivers/gpu/drm/xe/xe_uc.h +1 -0
@@ -18,6 +18,7 @@ void xe_uc_runtime_suspend(struct xe_uc *uc);void xe_uc_stop_prepare (struct xe_uc *uc);void xe_uc_stop (struct xe_uc *uc);int xe_uc_start (struct xe_uc *uc); +void xe_uc_start_user_queues (struct xe_uc *uc);void xe_uc_suspend_prepare (struct xe_uc *uc);int xe_uc_suspend (struct xe_uc *uc);int xe_uc_sanitize_reset (struct xe_uc *uc);
Signature · 1 line
2.54.0
Re: [PATCH v3 1/5] drm/xe/guc: Defer user exec queue scheduler start until after page table restore
Quoted 134 lines · Thomas Hellström
On S3/S4 and d3cold runtime PM resume, exec queue schedulers are restarted before
xe_bo_restore_late()has restored userspace VM page table BOs and LRC BOs. If a pending job is submitted in this window, GuC will attempt to load the context using stale or invalid data in VRAM, leading to GuC exceptions.Defer user exec queue scheduler start until after page tables and LRC BOs are restored, ensuring no job can be submitted before the backing storage is valid. Migrate and kernel VM exec queues are still started immediately as they are required by the restore process itself.
For GT reset, VRAM is not evicted and all BOs remain valid, so user exec queue schedulers are started without deferral.
This covers both LR and non-LR userspace exec queues.
v3:
- Skip queues with a running scheduler inxe_guc_submit_start_user_queues()to avoid aWARN_ONindrm_sched_for_each_pending_job()when a new user exec queue is created in the window betweenxe_guc_submit_start()andxe_guc_submit_start_user_queues(). (Intel CI)Fixes 7f387e6012b6 ("drm/xe: add XE_BO_FLAG_PINNED_LATE_RESTORE")Cc Matthew Auld <[email protected]>Cc Satyanarayana K V P <[email protected]>Cc <[email protected]> # v6.16+Assisted-by GitHub_Copilot:claude-sonnet-4.6Signed-off-by Thomas Hellström <[email protected]>--- drivers/gpu/drm/xe/xe_gt.c | 16 +++++++++ drivers/gpu/drm/xe/xe_gt.h | 2 ++ drivers/gpu/drm/xe/xe_guc.c | 13 ++++++++ drivers/gpu/drm/xe/xe_guc.h | 1 + drivers/gpu/drm/xe/xe_guc_submit.c | 52 ++++++++++++++++++++++++++++++ drivers/gpu/drm/xe/xe_guc_submit.h | 1 + drivers/gpu/drm/xe/xe_pm.c | 6 ++++ drivers/gpu/drm/xe/xe_uc.c | 16 +++++++++ drivers/gpu/drm/xe/xe_uc.h | 1 + 9 files changed, 108 insertions(+)drivers/gpu/drm/xe/xe_gt.c +16
-0@@ -955,6 +955,8 @@ static void gt_reset_worker(struct work_struct *w)if (err) goto err_out; +xe_uc_start_user_queues (>->uc); +xe_force_wake_put (gt_to_fw (gt), fw_ref);/* Pair with get while enqueueing the work in xe_gt_reset_async() */ @@ -967,6 +969,7 @@ static void gt_reset_worker(struct work_struct *w) err_out:xe_force_wake_put (gt_to_fw (gt), fw_ref);XE_WARN_ON (xe_uc_start (>->uc)); +xe_uc_start_user_queues (>->uc); err_fail:xe_gt_err (gt,"reset failed (%pe)\n" ,ERR_PTR (err));@@ -1050,6 +1053,19 @@ int xe_gt_sanitize_freq(struct xe_gt *gt)return ret; } +/** +* xe_gt_start_user_queues() - Start user exec queues after page table restore +* @gt: the GT object +* +* Starts the DRM schedulers for all user exec queues on the GT. This must be +* called after xe_bo_restore_late() to ensure that userspace page table BOs +* are valid before any job submission triggers GuC context registration. +*/ +void xe_gt_start_user_queues (struct xe_gt *gt) +{ +xe_uc_start_user_queues (>->uc); +} +int xe_gt_resume (struct xe_gt *gt) {int err;drivers/gpu/drm/xe/xe_gt.h +2
-0@@ -170,4 +170,6 @@ static inline bool xe_gt_supports_multi_queue(const struct xe_gt *gt, return gt->info.multi_queue_engine_class_mask & BIT(class); } +void xe_gt_start_user_queues (struct xe_gt *gt); +#endif drivers/gpu/drm/xe/xe_guc.c +13
-0@@ -1717,6 +1717,19 @@ int xe_guc_start(struct xe_guc *guc)return xe_guc_submit_start (guc); } +/** +* xe_guc_start_user_queues() - Start user exec queue schedulers on the GuC +* @guc: the GuC object +* +* Starts the DRM schedulers for all user exec queues managed by this GuC. +* Must be called after xe_bo_restore_late() to ensure page tables are valid +* before any job submission triggers GuC context registration. +*/ +void xe_guc_start_user_queues (struct xe_guc *guc) +{ +xe_guc_submit_start_user_queues (guc); +} +/** * xe_guc_runtime_suspend() - GuC runtime suspend * @guc: The GuC object drivers/gpu/drm/xe/xe_guc.h +1
-0@@ -60,6 +60,7 @@ void xe_guc_reset_wait(struct xe_guc *guc);void xe_guc_stop_prepare (struct xe_guc *guc);void xe_guc_stop (struct xe_guc *guc);int xe_guc_start (struct xe_guc *guc); +void xe_guc_start_user_queues (struct xe_guc *guc);void xe_guc_declare_wedged (struct xe_guc *guc);bool xe_guc_using_main_gamctrl_queues (struct xe_guc *guc);drivers/gpu/drm/xe/xe_guc_submit.c +0
-0@@ -2535,6 +2535,16 @@ static void guc_exec_queue_start(struct xe_exec_queue *q)xe_sched_submission_resume_tdr (sched);
drivers/gpu/drm/xe/xe_guc_submit.c static void guc_exec_queue_start(struct xe_exec_queue *q) · line 2545
Quoted 10 lines
drivers/gpu/drm/xe/xe_guc_submit.c +8
-0} +/* +* Returns true for user exec queues whose page tables may not yet be +* restored when xe_guc_submit_start() is called during GT resume. +* These queues must be started later, after xe_bo_restore_late(). +*/ +static bool exec_queue_needs_late_start (const struct xe_exec_queue *q) +{ +return !(q->flags & (EXEC_QUEUE_FLAG_MIGRATE |EXEC_QUEUE_FLAG_VM ));
Just one question here. Do we want to include FLAG_VM in here? Those would be bind jobs, I think, but I'm not sure if we actually flush those on suspend? For migrate we do an idle wait on every migrate queue, so I would assume when we restart a migrate queue, it should be empty, but not sure if that is true for bind jobs on the bind queue(s)? Bind job will be touching paging structures also, which need to be restored first. Or is this somehow already handled?
Quoted 136 lines
drivers/gpu/drm/xe/xe_guc_submit.c +44
-0+} +int xe_guc_submit_start (struct xe_guc *guc) {struct xe_exec_queue *q;@@ -2549,6 +2559,10 @@ int xe_guc_submit_start(struct xe_guc *guc)if (q->guc->id != index)continue ; +/* User queues are deferred until page tables are restored */ +if (exec_queue_needs_late_start (q)) +continue ; +guc_exec_queue_start (q); }mutex_unlock (&guc->submission_state.lock);@@ -2558,6 +2572,44 @@ int xe_guc_submit_start(struct xe_guc *guc)return 0 ; } +/** +* xe_guc_submit_start_user_queues() - Start user exec queues after late restore +* @guc: the GuC object +* +* Starts the DRM schedulers for all user exec queues (those not flagged as +* migrate or VM queues). Must be called after xe_bo_restore_late() to ensure +* page tables are valid before any job submission is attempted. +*/ +void xe_guc_submit_start_user_queues (struct xe_guc *guc) +{ +struct xe_exec_queue *q; +unsigned long index; + +if (!guc->submission_state.initialized) +return ; + +mutex_lock (&guc->submission_state.lock); +xa_for_each (&guc->submission_state.exec_queue_lookup, index, q) { +/* Prevent redundant attempts to start parallel queues */ +if (q->guc->id != index) +continue ; + +if (!exec_queue_needs_late_start (q)) +continue ; + +/* +* Skip queues whose scheduler is already running: they were +* created after xe_guc_submit_start() decremented stopped to 0, +* so they need no restart. +*/ +if (!drm_sched_is_stopped (&q->guc->sched.base)) +continue ; + +guc_exec_queue_start (q); + } +mutex_unlock (&guc->submission_state.lock); +} +static void guc_exec_queue_unpause_prepare (struct xe_guc *guc,struct xe_exec_queue *q) {drivers/gpu/drm/xe/xe_guc_submit.h +1
-0@@ -20,6 +20,7 @@ int xe_guc_submit_reset_prepare(struct xe_guc *guc);void xe_guc_submit_reset_wait (struct xe_guc *guc);void xe_guc_submit_stop (struct xe_guc *guc);int xe_guc_submit_start (struct xe_guc *guc); +void xe_guc_submit_start_user_queues (struct xe_guc *guc);void xe_guc_submit_pause (struct xe_guc *guc);void xe_guc_submit_pause_abort (struct xe_guc *guc);void xe_guc_submit_pause_vf (struct xe_guc *guc);drivers/gpu/drm/xe/xe_pm.c +6
-0@@ -282,6 +282,9 @@ int xe_pm_resume(struct xe_device *xe)if (err) goto err; +for_each_gt (gt, xe, id) +xe_gt_start_user_queues (gt); +xe_pxp_pm_resume (xe->pxp);if (IS_VF_CCS_READY (xe))@@ -696,6 +699,9 @@ int xe_pm_runtime_resume(struct xe_device *xe) err =xe_bo_restore_late (xe);if (err) goto out; + +for_each_gt (gt, xe, id) +xe_gt_start_user_queues (gt); }xe_pxp_pm_resume (xe->pxp);drivers/gpu/drm/xe/xe_uc.c +16
-0@@ -263,6 +263,22 @@ int xe_uc_start(struct xe_uc *uc)return xe_guc_start (&uc->guc); } +/** +* xe_uc_start_user_queues() - Start user exec queues after late restore +* @uc: the UC object +* +* Starts the DRM schedulers for all user exec queues. Must be called after +* xe_bo_restore_late() to ensure page tables are valid before any job +* submission is attempted. Has no effect if GuC submission is not enabled. +*/ +void xe_uc_start_user_queues (struct xe_uc *uc) +{ +if (!xe_device_uc_enabled (uc_to_xe (uc))) +return ; + +xe_guc_start_user_queues (&uc->guc); +} +static void uc_reset_wait (struct xe_uc *uc) {int ret;drivers/gpu/drm/xe/xe_uc.h +1
-0@@ -18,6 +18,7 @@ void xe_uc_runtime_suspend(struct xe_uc *uc);void xe_uc_stop_prepare (struct xe_uc *uc);void xe_uc_stop (struct xe_uc *uc);int xe_uc_start (struct xe_uc *uc); +void xe_uc_start_user_queues (struct xe_uc *uc);void xe_uc_suspend_prepare (struct xe_uc *uc);int xe_uc_suspend (struct xe_uc *uc);int xe_uc_sanitize_reset (struct xe_uc *uc);
Thomas Hellström
maintainerRe: [PATCH v3 1/5] drm/xe/guc: Defer user exec queue scheduler start until after page table restore
Quoted 177 lines · Matthew Auld
Quoted 173 lines · Thomas Hellström
On S3/S4 and d3cold runtime PM resume, exec queue schedulers are restarted before
xe_bo_restore_late()has restored userspace VM page
table BOs and LRC BOs. If a pending job is submitted in this window,
GuC will attempt to load the context using stale or invalid data in VRAM, leading to GuC exceptions.Defer user exec queue scheduler start until after page tables and LRC
BOs are restored, ensuring no job can be submitted before the backing
storage is valid. Migrate and kernel VM exec queues are still started
immediately as they are required by the restore process itself.For GT reset, VRAM is not evicted and all BOs remain valid, so user exec queue schedulers are started without deferral.
This covers both LR and non-LR userspace exec queues.
v3:
- Skip queues with a running scheduler inxe_guc_submit_start_user_queues()
to avoid aWARN_ONindrm_sched_for_each_pending_job()when a new user
exec queue is created in the window betweenxe_guc_submit_start()andxe_guc_submit_start_user_queues(). (Intel CI)Fixes 7f387e6012b6 ("drm/xe: add XE_BO_FLAG_PINNED_LATE_RESTORE")Cc Matthew Auld <[email protected]>Cc Satyanarayana K V P <[email protected]>Cc <[email protected]> # v6.16+Assisted-by GitHub_Copilot:claude-sonnet-4.6Signed-off-by Thomas Hellström <[email protected]>---
drivers/gpu/drm/xe/xe_gt.c | 16 +++++++++ drivers/gpu/drm/xe/xe_gt.h | 2 ++ drivers/gpu/drm/xe/xe_guc.c | 13 ++++++++ drivers/gpu/drm/xe/xe_guc.h | 1 +drivers/gpu/drm/xe/xe_guc_submit.c| 52
++++++++++++++++++++++++++++++
drivers/gpu/drm/xe/xe_guc_submit.h| 1 +drivers/gpu/drm/xe/xe_pm.c | 6 ++++ drivers/gpu/drm/xe/xe_uc.c | 16 +++++++++ drivers/gpu/drm/xe/xe_uc.h | 1 + 9 files changed, 108 insertions(+)drivers/gpu/drm/xe/xe_gt.c +0
-0@@ -955,6 +955,8 @@ static void gt_reset_worker(struct work_struct *w) if (err) goto err_out;drivers/gpu/drm/xe/xe_gt.c +2
-0+xe_uc_start_user_queues (>->uc); +
xe_force_wake_put(gt_to_fw(gt), fw_ref);
/* Pair with get while enqueueing the work inxe_gt_reset_async()*/drivers/gpu/drm/xe/xe_gt.c +0
-0@@ -967,6 +969,7 @@ static void gt_reset_worker(struct work_struct *w)
err_out:
xe_force_wake_put(gt_to_fw(gt), fw_ref);
XE_WARN_ON(xe_uc_start(>->uc));drivers/gpu/drm/xe/xe_gt.c +1
-0+xe_uc_start_user_queues (>->uc);
err_fail:
xe_gt_err(gt, "reset failed (%pe)\n", ERR_PTR(err));drivers/gpu/drm/xe/xe_gt.c +0
-0@@ -1050,6 +1053,19 @@ int xe_gt_sanitize_freq(struct xe_gt *gt) return ret; }
+/**
+ *xe_gt_start_user_queues()- Start user exec queues after page table restore
+ * @gt: the GT object
+ *
+ * Starts the DRM schedulers for all user exec queues on the GT. This must be
+ * called afterxe_bo_restore_late()to ensure that userspace page table BOs
+ * are valid before any job submission triggers GuC context registration.
+ */drivers/gpu/drm/xe/xe_gt.c +5
-0+void xe_gt_start_user_queues (struct xe_gt *gt) +{ +xe_uc_start_user_queues (>->uc); +} +int
xe_gt_resume(struct xe_gt *gt)
{
int err;drivers/gpu/drm/xe/xe_gt.h +0
-0@@ -170,4 +170,6 @@ static inline bool xe_gt_supports_multi_queue(const struct xe_gt *gt,return
gt->info.multi_queue_engine_class_mask& BIT(class);
}drivers/gpu/drm/xe/xe_gt.h +2
-0+void xe_gt_start_user_queues (struct xe_gt *gt); +#endif
drivers/gpu/drm/xe/xe_guc.c +0
-0@@ -1717,6 +1717,19 @@ int xe_guc_start(struct xe_guc *guc) return xe_guc_submit_start(guc); }
+/**
+ *xe_guc_start_user_queues()- Start user exec queue schedulers on the GuC
+ * @guc: the GuC object
+ *
+ * Starts the DRM schedulers for all user exec queues managed by this GuC.
+ * Must be called afterxe_bo_restore_late()to ensure page tables are valid
+ * before any job submission triggers GuC context registration.
+ */drivers/gpu/drm/xe/xe_guc.c +5
-0+void xe_guc_start_user_queues (struct xe_guc *guc) +{ +xe_guc_submit_start_user_queues (guc); +} +/**
*xe_guc_runtime_suspend()- GuC runtime suspend
* @guc: The GuC objectdrivers/gpu/drm/xe/xe_guc.h +1
-0@@ -60,6 +60,7 @@ void xe_guc_reset_wait(struct xe_guc *guc); void xe_guc_stop_prepare(struct xe_guc *guc); void xe_guc_stop(struct xe_guc *guc); int xe_guc_start(struct xe_guc *guc); +void xe_guc_start_user_queues (struct xe_guc *guc); void xe_guc_declare_wedged(struct xe_guc *guc); bool xe_guc_using_main_gamctrl_queues(struct xe_guc *guc);drivers/gpu/drm/xe/xe_guc_submit.c +0
-0@@ -2535,6 +2535,16 @@ static void guc_exec_queue_start(struct xe_exec_queue *q) xe_sched_submission_resume_tdr(sched); }
+/*
+ * Returns true for user exec queues whose page tables may not yet be
+ * restored whenxe_guc_submit_start()is called during GT resume.
+ * These queues must be started later, afterxe_bo_restore_late().
+ */
+static boolexec_queue_needs_late_start(const struct xe_exec_queue *q)drivers/gpu/drm/xe/xe_guc_submit.c +2
-0+{ + return !(q->flags & (EXEC_QUEUE_FLAG_MIGRATE |Quoted 1 line
EXEC_QUEUE_FLAG_VM));Just one question here. Do we want to include
FLAG_VMin here? Those
Quoted 8 lines
would be bind jobs, I think, but I'm not sure if we actually flush those
on suspend? For migrate we do an idle wait on every migrate queue, so I
would assume when we restart a migrate queue, it should be empty, but not sure if that is true for bind jobs on the bind queue(s)? Bind job will be touching paging structures also, which need to be restored first. Or is this somehow already handled?
I think the intention here is only MIGRATE jobs, so I'll respin this.
/Thomas
Quoted 155 lines
Quoted 155 lines
drivers/gpu/drm/xe/xe_guc_submit.c +2
-0+} +int
xe_guc_submit_start(struct xe_guc *guc)
{
structxe_exec_queue*q;drivers/gpu/drm/xe/xe_guc_submit.c +0
-0@@ -2549,6 +2559,10 @@ int xe_guc_submit_start(struct xe_guc *guc) if (q->guc->id != index) continue;drivers/gpu/drm/xe/xe_guc_submit.c +1
-0+/* User queues are deferred until page tables are restored */
drivers/gpu/drm/xe/xe_guc_submit.c +3
-0+if (exec_queue_needs_late_start (q)) +continue ; +
guc_exec_queue_start(q);
}mutex_unlock(&guc->submission_state.lock);drivers/gpu/drm/xe/xe_guc_submit.c +0
-0@@ -2558,6 +2572,44 @@ int xe_guc_submit_start(struct xe_guc *guc) return 0; }
+/**
+ *xe_guc_submit_start_user_queues()- Start user exec queues after late restore
+ * @guc: the GuC object
+ *
+ * Starts the DRM schedulers for all user exec queues (those not flagged as
+ * migrate or VM queues). Must be called afterxe_bo_restore_late()to ensure
+ * page tables are valid before any job submission is attempted.
+ */drivers/gpu/drm/xe/xe_guc_submit.c +10
-0+void xe_guc_submit_start_user_queues (struct xe_guc *guc) +{ +struct xe_exec_queue *q; +unsigned long index; + +if (!guc->submission_state.initialized) +return ; + +mutex_lock (&guc->submission_state.lock); + xa_for_each(&guc->submission_state.exec_queue_lookup,index, q) {
drivers/gpu/drm/xe/xe_guc_submit.c +1
-0+/* Prevent redundant attempts to start parallel queues */
drivers/gpu/drm/xe/xe_guc_submit.c +8
-0+if (q->guc->id != index) +continue ; + +if (!exec_queue_needs_late_start (q)) +continue ; + +/* +* Skip queues whose scheduler is already running: they were
drivers/gpu/drm/xe/xe_guc_submit.c +1
-0+* created after xe_guc_submit_start() decremented stopped to 0,
drivers/gpu/drm/xe/xe_guc_submit.c +10
-0+* so they need no restart. +*/ +if (!drm_sched_is_stopped (&q->guc->sched.base)) +continue ; + +guc_exec_queue_start (q); + } +mutex_unlock (&guc->submission_state.lock); +} +static void
guc_exec_queue_unpause_prepare(struct xe_guc *guc, struct xe_exec_queue *q)
{drivers/gpu/drm/xe/xe_guc_submit.h +1
-0@@ -20,6 +20,7 @@ int xe_guc_submit_reset_prepare(struct xe_guc *guc); void xe_guc_submit_reset_wait(struct xe_guc *guc); void xe_guc_submit_stop(struct xe_guc *guc); int xe_guc_submit_start(struct xe_guc *guc); +void xe_guc_submit_start_user_queues (struct xe_guc *guc); void xe_guc_submit_pause(struct xe_guc *guc); void xe_guc_submit_pause_abort(struct xe_guc *guc);void
xe_guc_submit_pause_vf(struct xe_guc *guc);drivers/gpu/drm/xe/xe_pm.c +0
-0@@ -282,6 +282,9 @@ int xe_pm_resume(struct xe_device *xe) if (err) goto err;drivers/gpu/drm/xe/xe_pm.c +3
-0+for_each_gt (gt, xe, id) +xe_gt_start_user_queues (gt); +
xe_pxp_pm_resume(xe->pxp);
if (IS_VF_CCS_READY(xe))drivers/gpu/drm/xe/xe_pm.c +3
-0@@ -696,6 +699,9 @@ int xe_pm_runtime_resume(struct xe_device *xe) err = xe_bo_restore_late(xe); if (err) goto out; + +for_each_gt (gt, xe, id) +xe_gt_start_user_queues (gt); }
xe_pxp_pm_resume(xe->pxp);drivers/gpu/drm/xe/xe_uc.c +0
-0@@ -263,6 +263,22 @@ int xe_uc_start(struct xe_uc *uc) return xe_guc_start(&uc->guc); }
+/**
+ *xe_uc_start_user_queues()- Start user exec queues after late restore
+ * @uc: the UC object
+ *
+ * Starts the DRM schedulers for all user exec queues. Must be called after
+ *xe_bo_restore_late()to ensure page tables are valid before any job
+ * submission is attempted. Has no effect if GuC submission is not enabled.
+ */drivers/gpu/drm/xe/xe_uc.c +8
-0+void xe_uc_start_user_queues (struct xe_uc *uc) +{ +if (!xe_device_uc_enabled (uc_to_xe (uc))) +return ; + +xe_guc_start_user_queues (&uc->guc); +} +static void
uc_reset_wait(struct xe_uc *uc)
{
int ret;drivers/gpu/drm/xe/xe_uc.h +1
-0@@ -18,6 +18,7 @@ void xe_uc_runtime_suspend(struct xe_uc *uc); void xe_uc_stop_prepare(struct xe_uc *uc); void xe_uc_stop(struct xe_uc *uc); int xe_uc_start(struct xe_uc *uc); +void xe_uc_start_user_queues (struct xe_uc *uc); void xe_uc_suspend_prepare(struct xe_uc *uc); int xe_uc_suspend(struct xe_uc *uc); int xe_uc_sanitize_reset(struct xe_uc *uc);
Thomas Hellström
maintainerPATCH v3 2/5 drm/xe/guc: Don't ban LR VM exec queues on PM suspend
In reply to Thomas HellströmWhen xe_guc_submit_stop() is called during an S3/S4 suspend or GT reset, guc_exec_queue_stop() bans any user exec queue that has a job which has started but not yet completed. For normal (non-LR) exec queues this is the correct behaviour: a started-but-incomplete job at reset time may indicate a hung workload.
For exec queues attached to Long Running (LR) VMs the same condition is always true during normal operation: LR jobs are designed to run indefinitely and are never "completed" in the DRM scheduler sense — they are preempted and resumed via the preempt-fence mechanism. Banning such an exec queue on PM suspend permanently prevents the job from restarting after resume, causing the userspace compute workload to fail silently.
Fix this by not banning LR VM exec queues when a system suspend or hibernation is in progress, while preserving the ban for GT reset where a started-but-incomplete job is a legitimate indicator of a hang.
--- drivers/gpu/drm/xe/xe_device_types.h | 8 ++++++++ drivers/gpu/drm/xe/xe_guc_submit.c | 10 +++++++++- drivers/gpu/drm/xe/xe_pm.c | 5 ++++- 3 files changed, 21 insertions(+), 2 deletions(-)
drivers/gpu/drm/xe/xe_device_types.h +8 -0
@@ -433,6 +433,14 @@ struct xe_device {struct notifier_block pm_notifier;/** @pm_block: Completion to block validating tasks on suspend / hibernate prepare */ struct completion pm_block; +/** +* @pm_suspend_in_progress: True while the device is going through +* system suspend or hibernation (set at xe_pm_suspend() entry, cleared +* at xe_pm_resume() entry or on suspend error). Used to suppress exec +* queue bans that should only apply during GT reset, not PM suspend. +* Serialised by the PM suspend sequence; no lock required. +*/ +bool pm_suspend_in_progress;/** @rebind_resume_list: List of wq items to kick on resume. */ struct list_head rebind_resume_list;/** @rebind_resume_lock: Lock to protect the rebind_resume_list */
drivers/gpu/drm/xe/xe_guc_submit.c +9 -1
@@ -2268,8 +2268,16 @@ static void guc_exec_queue_stop(struct xe_guc *guc, struct xe_exec_queue *q)* Ban any engine (aside from kernel and engines used for VM ops) with a * started but not complete job or if a job has gone through a GT reset * more than twice. +* +* LR VM exec queues are excluded from this ban during PM suspend: their +* jobs are intentionally long-running and are preempted and resumed via +* the preempt-fence mechanism. Banning them on PM suspend would +* permanently prevent the job from restarting after resume. +* On GT reset however we do want to ban them, as that may indicate a +* genuinely hung workload. */ -if (!(q->flags & (EXEC_QUEUE_FLAG_KERNEL |EXEC_QUEUE_FLAG_VM ))) { +if (!(q->flags & (EXEC_QUEUE_FLAG_KERNEL |EXEC_QUEUE_FLAG_VM )) && + !(q->vm &&xe_vm_in_lr_mode (q->vm) &&guc_to_xe (guc)->pm_suspend_in_progress)) {struct xe_sched_job *job =xe_sched_first_pending_job (sched);bool ban = false;
drivers/gpu/drm/xe/xe_pm.c +4 -1
@@ -176,6 +176,7 @@ int xe_pm_suspend(struct xe_device *xe)int err;drm_dbg (&xe->drm,"Suspending device\n" ); + xe->pm_suspend_in_progress = true;xe_pm_block_begin_signalling ();trace_xe_pm_suspend (xe,__builtin_return_address (0 ));
@@ -217,6 +218,7 @@ int xe_pm_suspend(struct xe_device *xe)xe_pxp_pm_resume (xe->pxp); err:drm_dbg (&xe->drm,"Device suspend failed %d\n" , err); + xe->pm_suspend_in_progress = false;xe_pm_block_end_signalling ();return err; }
@@ -234,8 +236,9 @@ int xe_pm_resume(struct xe_device *xe)u8 id;int err; -xe_pm_block_begin_signalling (); + xe->pm_suspend_in_progress = false;drm_dbg (&xe->drm,"Resuming device\n" ); +xe_pm_block_begin_signalling ();trace_xe_pm_resume (xe,__builtin_return_address (0 ));for_each_gt (gt, xe, id)
Signature · 1 line
2.54.0
Re: [PATCH v3 2/5] drm/xe/guc: Don't ban LR VM exec queues on PM suspend
Quoted 5 lines · Thomas Hellström
When
xe_guc_submit_stop()is called during an S3/S4 suspend or GT reset,guc_exec_queue_stop()bans any user exec queue that has a job which has started but not yet completed. For normal (non-LR) exec queues this is the correct behaviour: a started-but-incomplete job at reset time may indicate a hung workload.
Is it not too harsh to ban the user job for that? Say you are a well behaved 3D workload, and forced suspend is triggered by the user, if you are very unlucky you can get banned, if you hit the queue_stop flow with a WIP job?
Quoted 98 lines
For exec queues attached to Long Running (LR) VMs the same condition is always true during normal operation: LR jobs are designed to run indefinitely and are never "completed" in the DRM scheduler sense — they are preempted and resumed via the preempt-fence mechanism. Banning such an exec queue on PM suspend permanently prevents the job from restarting after resume, causing the userspace compute workload to fail silently.
Fix this by not banning LR VM exec queues when a system suspend or hibernation is in progress, while preserving the ban for GT reset where a started-but-incomplete job is a legitimate indicator of a hang.
Fixes f6375fb3aa94 ("drm/xe: Track LR jobs in DRM scheduler pending list")Cc Matthew Brost <[email protected]>Cc Tomasz Lis <[email protected]>Cc Rodrigo Vivi <[email protected]>Cc <[email protected]> # v6.19+Signed-off-by Thomas Hellström <[email protected]>Assisted-by GitHub_Copilot:claude-sonnet-4.6--- drivers/gpu/drm/xe/xe_device_types.h | 8 ++++++++ drivers/gpu/drm/xe/xe_guc_submit.c | 10 +++++++++- drivers/gpu/drm/xe/xe_pm.c | 5 ++++- 3 files changed, 21 insertions(+), 2 deletions(-)drivers/gpu/drm/xe/xe_device_types.h +8
-0@@ -433,6 +433,14 @@ struct xe_device {struct notifier_block pm_notifier;/** @pm_block: Completion to block validating tasks on suspend / hibernate prepare */ struct completion pm_block; +/** +* @pm_suspend_in_progress: True while the device is going through +* system suspend or hibernation (set at xe_pm_suspend() entry, cleared +* at xe_pm_resume() entry or on suspend error). Used to suppress exec +* queue bans that should only apply during GT reset, not PM suspend. +* Serialised by the PM suspend sequence; no lock required. +*/ +bool pm_suspend_in_progress;/** @rebind_resume_list: List of wq items to kick on resume. */ struct list_head rebind_resume_list;/** @rebind_resume_lock: Lock to protect the rebind_resume_list */ drivers/gpu/drm/xe/xe_guc_submit.c +9
-1@@ -2268,8 +2268,16 @@ static void guc_exec_queue_stop(struct xe_guc *guc, struct xe_exec_queue *q)* Ban any engine (aside from kernel and engines used for VM ops) with a * started but not complete job or if a job has gone through a GT reset * more than twice. +* +* LR VM exec queues are excluded from this ban during PM suspend: their +* jobs are intentionally long-running and are preempted and resumed via +* the preempt-fence mechanism. Banning them on PM suspend would +* permanently prevent the job from restarting after resume. +* On GT reset however we do want to ban them, as that may indicate a +* genuinely hung workload. */ -if (!(q->flags & (EXEC_QUEUE_FLAG_KERNEL |EXEC_QUEUE_FLAG_VM ))) { +if (!(q->flags & (EXEC_QUEUE_FLAG_KERNEL |EXEC_QUEUE_FLAG_VM )) && + !(q->vm &&xe_vm_in_lr_mode (q->vm) &&guc_to_xe (guc)->pm_suspend_in_progress)) {struct xe_sched_job *job =xe_sched_first_pending_job (sched);bool ban = false;drivers/gpu/drm/xe/xe_pm.c +4
-1@@ -176,6 +176,7 @@ int xe_pm_suspend(struct xe_device *xe)int err;drm_dbg (&xe->drm,"Suspending device\n" ); + xe->pm_suspend_in_progress = true;xe_pm_block_begin_signalling ();trace_xe_pm_suspend (xe,__builtin_return_address (0 ));@@ -217,6 +218,7 @@ int xe_pm_suspend(struct xe_device *xe)xe_pxp_pm_resume (xe->pxp); err:drm_dbg (&xe->drm,"Device suspend failed %d\n" , err); + xe->pm_suspend_in_progress = false;xe_pm_block_end_signalling ();return err; }@@ -234,8 +236,9 @@ int xe_pm_resume(struct xe_device *xe)u8 id;int err; -xe_pm_block_begin_signalling (); + xe->pm_suspend_in_progress = false;drm_dbg (&xe->drm,"Resuming device\n" ); +xe_pm_block_begin_signalling ();trace_xe_pm_resume (xe,__builtin_return_address (0 ));for_each_gt (gt, xe, id)
Thomas Hellström
maintainerRe: [PATCH v3 2/5] drm/xe/guc: Don't ban LR VM exec queues on PM suspend
Quoted 9 lines · Matthew Auld
Quoted 7 lines · Thomas Hellström
When
xe_guc_submit_stop()is called during an S3/S4 suspend or GT reset,guc_exec_queue_stop()bans any user exec queue that has a job
which has started but not yet completed. For normal (non-LR) exec queues this is the correct behaviour: a started-but-incomplete job at
reset time may indicate a hung workload.
Quoted 6 lines
Is it not too harsh to ban the user job for that? Say you are a well behaved 3D workload, and forced suspend is triggered by the user, if you
are very unlucky you can get banned, if you hit thequeue_stopflow with
a WIP job?
Actually (and this has bearing also on patch 1, I think) suspend / resume must not sit in the critical path of any dma-fence job. Meaning we explicitly have to wait for all outstanding dma-fences before suspending, and add that if that's not already done.
/Thomas
Quoted 127 lines
Quoted 127 lines
For exec queues attached to Long Running (LR) VMs the same condition
is always true during normal operation: LR jobs are designed to run indefinitely and are never "completed" in the DRM scheduler sense — they are preempted and resumed via the preempt-fence mechanism. Banning such an exec queue on PM suspend permanently prevents the job
from restarting after resume, causing the userspace compute workload to
fail silently.Fix this by not banning LR VM exec queues when a system suspend or hibernation is in progress, while preserving the ban for GT reset where
a started-but-incomplete job is a legitimate indicator of a hang.Fixes f6375fb3aa94 ("drm/xe: Track LR jobs in DRM schedulerpending list")
Cc Matthew Brost <[email protected]>Cc Tomasz Lis <[email protected]>Cc Rodrigo Vivi <[email protected]>Cc <[email protected]> # v6.19+Signed-off-by Thomas Hellström <[email protected]>Assisted-by GitHub_Copilot:claude-sonnet-4.6---
drivers/gpu/drm/xe/xe_device_types.h| 8 ++++++++ drivers/gpu/drm/xe/xe_guc_submit.c | 10 +++++++++- drivers/gpu/drm/xe/xe_pm.c | 5 ++++-3 files changed, 21 insertions(+), 2 deletions(-)drivers/gpu/drm/xe/xe_device_types.h +0
-0@@ -433,6 +433,14 @@ struct xe_device { struct notifier_block pm_notifier; /** @pm_block: Completion to block validating tasks onsuspend / hibernate prepare */
struct completionpm_block;drivers/gpu/drm/xe/xe_device_types.h +2
-0+/** +* @pm_suspend_in_progress: True while the device is going through
drivers/gpu/drm/xe/xe_device_types.h +1
-0+* system suspend or hibernation (set at xe_pm_suspend() entry, cleared
drivers/gpu/drm/xe/xe_device_types.h +1
-0+* at xe_pm_resume() entry or on suspend error). Used to suppress exec
drivers/gpu/drm/xe/xe_device_types.h +1
-0+* queue bans that should only apply during GT reset, not PM suspend.
drivers/gpu/drm/xe/xe_device_types.h +1
-0+* Serialised by the PM suspend sequence; no lock required.
drivers/gpu/drm/xe/xe_device_types.h +2
-0+*/ +bool pm_suspend_in_progress;/** @rebind_resume_list: List of wq items to kick on resume. */
structlist_headrebind_resume_list;
/** @rebind_resume_lock: Lock to protect therebind_resume_list*/drivers/gpu/drm/xe/xe_guc_submit.c +0
-0@@ -2268,8 +2268,16 @@ static void guc_exec_queue_stop(struct xe_guc *guc, struct xe_exec_queue *q) * Ban any engine (aside from kernel and engines used forVM ops) with a
* started but not complete job or if a job has gone through a GT reset
* more than twice.drivers/gpu/drm/xe/xe_guc_submit.c +2
-0+* +* LR VM exec queues are excluded from this ban during PM suspend: their
drivers/gpu/drm/xe/xe_guc_submit.c +1
-0+* jobs are intentionally long-running and are preempted and resumed via
drivers/gpu/drm/xe/xe_guc_submit.c +1
-0+* the preempt-fence mechanism. Banning them on PM suspend would
drivers/gpu/drm/xe/xe_guc_submit.c +1
-0+* permanently prevent the job from restarting after resume.
drivers/gpu/drm/xe/xe_guc_submit.c +1
-0+* On GT reset however we do want to ban them, as that may indicate a
drivers/gpu/drm/xe/xe_guc_submit.c +1
-0+* genuinely hung workload. */
drivers/gpu/drm/xe/xe_guc_submit.c +0
-1- if (!(q->flags & (EXEC_QUEUE_FLAG_KERNEL |
EXEC_QUEUE_FLAG_VM))) {drivers/gpu/drm/xe/xe_guc_submit.c +1
-0+ if (!(q->flags & (EXEC_QUEUE_FLAG_KERNEL |
EXEC_QUEUE_FLAG_VM)) &&drivers/gpu/drm/xe/xe_guc_submit.c +1
-0+ !(q->vm && xe_vm_in_lr_mode(q->vm) && guc_to_xe(guc)-Quoted 1 line
pm_suspend_in_progress)) {struct
xe_sched_job*job =xe_sched_first_pending_job(sched);
bool ban = false;drivers/gpu/drm/xe/xe_pm.c +0
-0@@ -176,6 +176,7 @@ int xe_pm_suspend(struct xe_device *xe) int err;
drm_dbg(&xe->drm, "Suspending device\n");drivers/gpu/drm/xe/xe_pm.c +1
-0+ xe->pm_suspend_in_progress = true;
xe_pm_block_begin_signalling();trace_xe_pm_suspend(xe, __builtin_return_address(0));drivers/gpu/drm/xe/xe_pm.c +0
-0@@ -217,6 +218,7 @@ int xe_pm_suspend(struct xe_device *xe) xe_pxp_pm_resume(xe->pxp);err:
drm_dbg(&xe->drm, "Device suspend failed %d\n", err);drivers/gpu/drm/xe/xe_pm.c +1
-0+ xe->pm_suspend_in_progress = false;
xe_pm_block_end_signalling();
return err;
}drivers/gpu/drm/xe/xe_pm.c +0
-0@@ -234,8 +236,9 @@ int xe_pm_resume(struct xe_device *xe) u8 id; int err;drivers/gpu/drm/xe/xe_pm.c +1
-1-xe_pm_block_begin_signalling (); + xe->pm_suspend_in_progress = false;
drm_dbg(&xe->drm, "Resuming device\n");drivers/gpu/drm/xe/xe_pm.c +1
-0+xe_pm_block_begin_signalling ();
trace_xe_pm_resume(xe, __builtin_return_address(0));
for_each_gt(gt, xe, id)
Re: [PATCH v3 2/5] drm/xe/guc: Don't ban LR VM exec queues on PM suspend
Quoted 17 lines · Thomas Hellström
Quoted 9 lines · Matthew Auld
Quoted 7 lines · Thomas Hellström
When
xe_guc_submit_stop()is called during an S3/S4 suspend or GT reset,guc_exec_queue_stop()bans any user exec queue that has a job
which has started but not yet completed. For normal (non-LR) exec queues this is the correct behaviour: a started-but-incomplete job at
reset time may indicate a hung workload.Quoted 6 lines
Is it not too harsh to ban the user job for that? Say you are a well behaved 3D workload, and forced suspend is triggered by the user, if you
are very unlucky you can get banned, if you hit thequeue_stopflow with
a WIP job?
Quoted 4 lines
Actually (and this has bearing also on patch 1, I think) suspend / resume must not sit in the critical path of any dma-fence job. Meaning we explicitly have to wait for all outstanding dma-fences before suspending, and add that if that's not already done.
I guess that is missing? I assume it mostly works by fluke, since we likely end up evicting user buffers on suspend, which ends up also idling most WIP jobs, however that is only true for VRAM buffers on dgpu, and CCS buffers on igpu, which is not everything. Some igpu have CCS disabled, and on dgpu we still have non-VRAM buffers?
Also on igpu we want to make eviction on suspend limited only to s4, so wondering if this will be more noticable there, like with s3 + no evict.
Quoted 131 lines
/Thomas
Quoted 127 lines
Quoted 127 lines
For exec queues attached to Long Running (LR) VMs the same condition
is always true during normal operation: LR jobs are designed to run indefinitely and are never "completed" in the DRM scheduler sense — they are preempted and resumed via the preempt-fence mechanism. Banning such an exec queue on PM suspend permanently prevents the job
from restarting after resume, causing the userspace compute workload to
fail silently.Fix this by not banning LR VM exec queues when a system suspend or hibernation is in progress, while preserving the ban for GT reset where
a started-but-incomplete job is a legitimate indicator of a hang.Fixes f6375fb3aa94 ("drm/xe: Track LR jobs in DRM schedulerpending list")
Cc Matthew Brost <[email protected]>Cc Tomasz Lis <[email protected]>Cc Rodrigo Vivi <[email protected]>Cc <[email protected]> # v6.19+Signed-off-by Thomas Hellström <[email protected]>Assisted-by GitHub_Copilot:claude-sonnet-4.6--- drivers/gpu/drm/xe/xe_device_types.h | 8 ++++++++ drivers/gpu/drm/xe/xe_guc_submit.c | 10 +++++++++- drivers/gpu/drm/xe/xe_pm.c | 5 ++++- 3 files changed, 21 insertions(+), 2 deletions(-)drivers/gpu/drm/xe/xe_device_types.h +0
-0@@ -433,6 +433,14 @@ struct xe_device { struct notifier_block pm_notifier; /** @pm_block: Completion to block validating tasks onsuspend / hibernate prepare */
struct completionpm_block;drivers/gpu/drm/xe/xe_device_types.h +2
-0+/** +* @pm_suspend_in_progress: True while the device is going through
drivers/gpu/drm/xe/xe_device_types.h +1
-0+* system suspend or hibernation (set at xe_pm_suspend() entry, cleared
drivers/gpu/drm/xe/xe_device_types.h +1
-0+* at xe_pm_resume() entry or on suspend error). Used to suppress exec
drivers/gpu/drm/xe/xe_device_types.h +1
-0+* queue bans that should only apply during GT reset, not PM suspend.
drivers/gpu/drm/xe/xe_device_types.h +1
-0+* Serialised by the PM suspend sequence; no lock required.
drivers/gpu/drm/xe/xe_device_types.h +2
-0+*/ +bool pm_suspend_in_progress; /** @rebind_resume_list: List of wq items to kick onresume. */
structlist_headrebind_resume_list; /** @rebind_resume_lock: Lock to protect therebind_resume_list*/drivers/gpu/drm/xe/xe_guc_submit.c +0
-0@@ -2268,8 +2268,16 @@ static void guc_exec_queue_stop(struct xe_guc *guc, struct xe_exec_queue *q) * Ban any engine (aside from kernel and engines used forVM ops) with a
* started but not complete job or if a job has gone
through a GT reset
* more than twice.drivers/gpu/drm/xe/xe_guc_submit.c +2
-0+* +* LR VM exec queues are excluded from this ban during PM suspend: their
drivers/gpu/drm/xe/xe_guc_submit.c +1
-0+* jobs are intentionally long-running and are preempted and resumed via
drivers/gpu/drm/xe/xe_guc_submit.c +1
-0+* the preempt-fence mechanism. Banning them on PM suspend would
drivers/gpu/drm/xe/xe_guc_submit.c +1
-0+* permanently prevent the job from restarting after resume.
drivers/gpu/drm/xe/xe_guc_submit.c +1
-0+* On GT reset however we do want to ban them, as that may indicate a
drivers/gpu/drm/xe/xe_guc_submit.c +1
-1+* genuinely hung workload. */ - if (!(q->flags & (EXEC_QUEUE_FLAG_KERNEL |
EXEC_QUEUE_FLAG_VM))) {drivers/gpu/drm/xe/xe_guc_submit.c +1
-0+ if (!(q->flags & (EXEC_QUEUE_FLAG_KERNEL |
EXEC_QUEUE_FLAG_VM)) &&drivers/gpu/drm/xe/xe_guc_submit.c +1
-0+ !(q->vm && xe_vm_in_lr_mode(q->vm) && guc_to_xe(guc)-Quoted 1 line
pm_suspend_in_progress)) {struct
xe_sched_job*job =xe_sched_first_pending_job(sched);
bool ban = false;drivers/gpu/drm/xe/xe_pm.c +4
-1@@ -176,6 +176,7 @@ int xe_pm_suspend(struct xe_device *xe) int err; drm_dbg(&xe->drm, "Suspending device\n"); + xe->pm_suspend_in_progress = true; xe_pm_block_begin_signalling(); trace_xe_pm_suspend(xe, __builtin_return_address(0));@@ -217,6 +218,7 @@ int xe_pm_suspend(struct xe_device *xe) xe_pxp_pm_resume(xe->pxp); err: drm_dbg(&xe->drm, "Device suspend failed %d\n", err); + xe->pm_suspend_in_progress = false; xe_pm_block_end_signalling(); return err; }@@ -234,8 +236,9 @@ int xe_pm_resume(struct xe_device *xe) u8 id; int err; -xe_pm_block_begin_signalling (); + xe->pm_suspend_in_progress = false; drm_dbg(&xe->drm, "Resuming device\n"); +xe_pm_block_begin_signalling (); trace_xe_pm_resume(xe, __builtin_return_address(0)); for_each_gt(gt, xe, id)
Thomas Hellström
maintainerPATCH v3 3/5 drm/xe/guc: Add suspend refcount to exec queue ops
In reply to Thomas HellströmConcurrent call sites that suspend exec queues (PM, mode switching, preempt fences) each need to pair their own suspend/resume without caring about other callers. Without coordination, a resume from one path can prematurely re-enable a queue still suspended by another.
Add a reference count to exec queue suspend operations. A queue remains suspended as long as any caller holds a suspend; it resumes only when the last caller releases it. Each caller simply pairs its own suspend with a resume without needing to know about others.
--- drivers/gpu/drm/xe/xe_guc_exec_queue_types.h | 7 ++++++ drivers/gpu/drm/xe/xe_guc_submit.c | 24 ++++++++++++-------- 2 files changed, 22 insertions(+), 9 deletions(-)
drivers/gpu/drm/xe/xe_guc_exec_queue_types.h +7 -0
@@ -49,6 +49,13 @@ struct xe_guc_exec_queue {wait_queue_head_t suspend_wait;/** @suspend_pending: a suspend of the exec_queue is pending */ bool suspend_pending; +/** +* @suspend_count: Reference count of active suspend requests. The +* exec_queue remains suspended while this is non-zero, allowing +* multiple concurrent callers to independently hold a suspend without +* prematurely re-enabling the queue. Protected by @sched.msg_lock. +*/ +int suspend_count;/** * @needs_cleanup: Needs a cleanup message during VF post migration * recovery.
drivers/gpu/drm/xe/xe_guc_submit.c +15 -9
@@ -2131,15 +2131,18 @@ static int guc_exec_queue_set_multi_queue_priority(struct xe_exec_queue *q,static int guc_exec_queue_suspend (struct xe_exec_queue *q) { -struct xe_gpu_scheduler *sched = &q->guc->sched; -struct xe_sched_msg *msg = q->guc->static_msgs +STATIC_MSG_SUSPEND ; +struct xe_guc_exec_queue *ge = q->guc; +struct xe_gpu_scheduler *sched = &ge->sched; +struct xe_sched_msg *msg = ge->static_msgs +STATIC_MSG_SUSPEND ;if (exec_queue_killed_or_banned_or_wedged (q))return -EINVAL ;xe_sched_msg_lock (sched); -if (guc_exec_queue_try_add_msg (q, msg,SUSPEND )) - q->guc->suspend_pending = true; +if (++ge->suspend_count ==1 ) { +if (guc_exec_queue_try_add_msg (q, msg,SUSPEND )) + ge->suspend_pending = true; + }xe_sched_msg_unlock (sched);return 0 ;
@@ -2190,14 +2193,17 @@ static int guc_exec_queue_suspend_wait(struct xe_exec_queue *q)static void guc_exec_queue_resume (struct xe_exec_queue *q) { -struct xe_gpu_scheduler *sched = &q->guc->sched; -struct xe_sched_msg *msg = q->guc->static_msgs +STATIC_MSG_RESUME ; +struct xe_guc_exec_queue *ge = q->guc; +struct xe_gpu_scheduler *sched = &ge->sched; +struct xe_sched_msg *msg = ge->static_msgs +STATIC_MSG_RESUME ;struct xe_guc *guc =exec_queue_to_guc (q); -xe_gt_assert (guc_to_gt (guc), !q->guc->suspend_pending); -xe_sched_msg_lock (sched); -guc_exec_queue_try_add_msg (q, msg,RESUME ); +xe_gt_assert (guc_to_gt (guc), ge->suspend_count >0 ); +if (--ge->suspend_count ==0 ) { +xe_gt_assert (guc_to_gt (guc), !ge->suspend_pending); +guc_exec_queue_try_add_msg (q, msg,RESUME ); + }xe_sched_msg_unlock (sched); }
Signature · 1 line
2.54.0
Matthew Brost
maintainerRe: [PATCH v3 3/5] drm/xe/guc: Add suspend refcount to exec queue ops
Quoted 10 lines · Thomas Hellström
Concurrent call sites that suspend exec queues (PM, mode switching, preempt fences) each need to pair their own suspend/resume without caring about other callers. Without coordination, a resume from one path can prematurely re-enable a queue still suspended by another.
Add a reference count to exec queue suspend operations. A queue remains suspended as long as any caller holds a suspend; it resumes only when the last caller releases it. Each caller simply pairs its own suspend with a resume without needing to know about others.
+Niranjana
The patch LGTM; however, this is likely to collide with conceptually similar WIP work from Niranjana [1] for multi-q suspend. I wonder if your patch and his could combine ideas so that his solution is congruent with what this patch is doing. I’ll also reply to [1] suggesting that he take a look at this and perhaps rebase on top of it.
Matt
[1] https://patchwork.freedesktop.org/series/168035/
Quoted 78 lines
Assisted-by GitHub_Copilot:claude-sonnet-4.6Signed-off-by Thomas Hellström <[email protected]>--- drivers/gpu/drm/xe/xe_guc_exec_queue_types.h | 7 ++++++ drivers/gpu/drm/xe/xe_guc_submit.c | 24 ++++++++++++-------- 2 files changed, 22 insertions(+), 9 deletions(-)drivers/gpu/drm/xe/xe_guc_exec_queue_types.h +7
-0@@ -49,6 +49,13 @@ struct xe_guc_exec_queue {wait_queue_head_t suspend_wait;/** @suspend_pending: a suspend of the exec_queue is pending */ bool suspend_pending; +/** +* @suspend_count: Reference count of active suspend requests. The +* exec_queue remains suspended while this is non-zero, allowing +* multiple concurrent callers to independently hold a suspend without +* prematurely re-enabling the queue. Protected by @sched.msg_lock. +*/ +int suspend_count;/** * @needs_cleanup: Needs a cleanup message during VF post migration * recovery. drivers/gpu/drm/xe/xe_guc_submit.c +15
-9@@ -2131,15 +2131,18 @@ static int guc_exec_queue_set_multi_queue_priority(struct xe_exec_queue *q,static int guc_exec_queue_suspend (struct xe_exec_queue *q) { -struct xe_gpu_scheduler *sched = &q->guc->sched; -struct xe_sched_msg *msg = q->guc->static_msgs +STATIC_MSG_SUSPEND ; +struct xe_guc_exec_queue *ge = q->guc; +struct xe_gpu_scheduler *sched = &ge->sched; +struct xe_sched_msg *msg = ge->static_msgs +STATIC_MSG_SUSPEND ;if (exec_queue_killed_or_banned_or_wedged (q))return -EINVAL ;xe_sched_msg_lock (sched); -if (guc_exec_queue_try_add_msg (q, msg,SUSPEND )) - q->guc->suspend_pending = true; +if (++ge->suspend_count ==1 ) { +if (guc_exec_queue_try_add_msg (q, msg,SUSPEND )) + ge->suspend_pending = true; + }xe_sched_msg_unlock (sched);return 0 ;@@ -2190,14 +2193,17 @@ static int guc_exec_queue_suspend_wait(struct xe_exec_queue *q)static void guc_exec_queue_resume (struct xe_exec_queue *q) { -struct xe_gpu_scheduler *sched = &q->guc->sched; -struct xe_sched_msg *msg = q->guc->static_msgs +STATIC_MSG_RESUME ; +struct xe_guc_exec_queue *ge = q->guc; +struct xe_gpu_scheduler *sched = &ge->sched; +struct xe_sched_msg *msg = ge->static_msgs +STATIC_MSG_RESUME ;struct xe_guc *guc =exec_queue_to_guc (q); -xe_gt_assert (guc_to_gt (guc), !q->guc->suspend_pending); -xe_sched_msg_lock (sched); -guc_exec_queue_try_add_msg (q, msg,RESUME ); +xe_gt_assert (guc_to_gt (guc), ge->suspend_count >0 ); +if (--ge->suspend_count ==0 ) { +xe_gt_assert (guc_to_gt (guc), !ge->suspend_pending); +guc_exec_queue_try_add_msg (q, msg,RESUME ); + }xe_sched_msg_unlock (sched); }Signature · 1 line
2.54.0
Re: [PATCH v3 3/5] drm/xe/guc: Add suspend refcount to exec queue ops
Quoted 20 lines · Matthew Brost
Quoted 10 lines · Thomas Hellström
Concurrent call sites that suspend exec queues (PM, mode switching, preempt fences) each need to pair their own suspend/resume without caring about other callers. Without coordination, a resume from one path can prematurely re-enable a queue still suspended by another.
Add a reference count to exec queue suspend operations. A queue remains suspended as long as any caller holds a suspend; it resumes only when the last caller releases it. Each caller simply pairs its own suspend with a resume without needing to know about others.
+Niranjana
The patch LGTM; however, this is likely to collide with conceptually similar WIP work from Niranjana [1] for multi-q suspend. I wonder if your patch and his could combine ideas so that his solution is congruent with what this patch is doing. I’ll also reply to [1] suggesting that he take a look at this and perhaps rebase on top of it.
Quoted 4 lines
Matt
Thanks. Yes, it really helps with multi-queue supspend as we can piggy back on the suspend_count of this patch and no separate counter or status flag required.
Can we fast track this patch?
I also have couple comments below.
Quoted 42 lines
Quoted 42 lines
Assisted-by GitHub_Copilot:claude-sonnet-4.6Signed-off-by Thomas Hellström <[email protected]>--- drivers/gpu/drm/xe/xe_guc_exec_queue_types.h | 7 ++++++ drivers/gpu/drm/xe/xe_guc_submit.c | 24 ++++++++++++-------- 2 files changed, 22 insertions(+), 9 deletions(-)drivers/gpu/drm/xe/xe_guc_exec_queue_types.h +7
-0@@ -49,6 +49,13 @@ struct xe_guc_exec_queue {wait_queue_head_t suspend_wait;/** @suspend_pending: a suspend of the exec_queue is pending */ bool suspend_pending; +/** +* @suspend_count: Reference count of active suspend requests. The +* exec_queue remains suspended while this is non-zero, allowing +* multiple concurrent callers to independently hold a suspend without +* prematurely re-enabling the queue. Protected by @sched.msg_lock. +*/ +int suspend_count;/** * @needs_cleanup: Needs a cleanup message during VF post migration * recovery. drivers/gpu/drm/xe/xe_guc_submit.c +3
-2@@ -2131,15 +2131,18 @@ static int guc_exec_queue_set_multi_queue_priority(struct xe_exec_queue *q,static int guc_exec_queue_suspend (struct xe_exec_queue *q) { -struct xe_gpu_scheduler *sched = &q->guc->sched; -struct xe_sched_msg *msg = q->guc->static_msgs +STATIC_MSG_SUSPEND ; +struct xe_guc_exec_queue *ge = q->guc; +struct xe_gpu_scheduler *sched = &ge->sched; +struct xe_sched_msg *msg = ge->static_msgs +STATIC_MSG_SUSPEND ;if (exec_queue_killed_or_banned_or_wedged (q))return -EINVAL ;
Quoted 7 lines
drivers/gpu/drm/xe/xe_guc_submit.c static int guc_exec_queue_set_multi_queue_priority(struct xe_exec_queue *q, · line 2145
Quoted 7 lines
drivers/gpu/drm/xe/xe_guc_submit.c +4
-2xe_sched_msg_lock (sched); -if (guc_exec_queue_try_add_msg (q, msg,SUSPEND )) - q->guc->suspend_pending = true; +if (++ge->suspend_count ==1 ) { +if (guc_exec_queue_try_add_msg (q, msg,SUSPEND )) + ge->suspend_pending = true; + }
Bit confusing as it appears that the case of guc_exec_queue_try_add_msg() returning false is not handled properly (though it is). May be add a comment clarifying it or add an assert that guc_exec_queue_try_add_msg() always returns true here.
Quoted 14 lines
Quoted 14 lines
drivers/gpu/drm/xe/xe_guc_submit.c +3
-2xe_sched_msg_unlock (sched);return 0 ;@@ -2190,14 +2193,17 @@ static int guc_exec_queue_suspend_wait(struct xe_exec_queue *q)static void guc_exec_queue_resume (struct xe_exec_queue *q) { -struct xe_gpu_scheduler *sched = &q->guc->sched; -struct xe_sched_msg *msg = q->guc->static_msgs +STATIC_MSG_RESUME ; +struct xe_guc_exec_queue *ge = q->guc; +struct xe_gpu_scheduler *sched = &ge->sched; +struct xe_sched_msg *msg = ge->static_msgs +STATIC_MSG_RESUME ;struct xe_guc *guc =exec_queue_to_guc (q);
Quoted 7 lines
drivers/gpu/drm/xe/xe_guc_submit.c static int guc_exec_queue_suspend_wait(struct xe_exec_queue *q) · line 2204
Quoted 7 lines
drivers/gpu/drm/xe/xe_guc_submit.c +3
-3-xe_gt_assert (guc_to_gt (guc), !q->guc->suspend_pending); -xe_sched_msg_lock (sched); -guc_exec_queue_try_add_msg (q, msg,RESUME ); +xe_gt_assert (guc_to_gt (guc), ge->suspend_count >0 ); +if (--ge->suspend_count ==0 ) { +xe_gt_assert (guc_to_gt (guc), !ge->suspend_pending);
So, if the intended usecase is for user to always wait for suspend_wait() before calling resume, may be we should have this assert always here instead of only when suspend_count reaches 0?
Niranjana
Quoted 8 lines
Quoted 8 lines
drivers/gpu/drm/xe/xe_guc_submit.c +2
-1+guc_exec_queue_try_add_msg (q, msg,RESUME ); + }xe_sched_msg_unlock (sched); } --2.54.0
Thomas Hellström
maintainerRe: [PATCH v3 3/5] drm/xe/guc: Add suspend refcount to exec queue ops
Hi, Niranjana. Thanks for revieiwing.
Quoted 101 lines · Niranjana Vishwanathapura
Quoted 31 lines · Matthew Brost
Quoted 9 lines · Thomas Hellström
Concurrent call sites that suspend exec queues (PM, mode switching,
preempt fences) each need to pair their own suspend/resume without
caring about other callers. Without coordination, a resume from one
path can prematurely re-enable a queue still suspended by another.Quoted 8 lines
Add a reference count to exec queue suspend operations. A queue remains
suspended as long as any caller holds a suspend; it resumes only when
the last caller releases it. Each caller simply pairs its own suspend
with a resume without needing to know about others.+Niranjana
The patch LGTM; however, this is likely to collide with conceptually
similar WIP work from Niranjana [1] for multi-q suspend. I wonder if
your patch and his could combine ideas so that his solution is congruent
with what this patch is doing. I’ll also reply to [1] suggesting that he
take a look at this and perhaps rebase on top of it.Quoted 4 lines
Matt
Thanks. Yes, it really helps with multi-queue supspend as we can piggy
back on thesuspend_countof this patch and no separate counter or status flag required.Can we fast track this patch?
I also have couple comments below.
Quoted 55 lines
Quoted 55 lines
Assisted-by GitHub_Copilot:claude-sonnet-4.6Signed-off-by Thomas Hellström<[email protected]>
---
drivers/gpu/drm/xe/xe_guc_exec_queue_types.h | 7 ++++++ drivers/gpu/drm/xe/xe_guc_submit.c | 24 ++++++++++++--
------2 files changed, 22 insertions(+), 9 deletions(-)drivers/gpu/drm/xe/xe_guc_exec_queue_types.h +0
-0@@ -49,6 +49,13 @@ struct xe_guc_exec_queue { wait_queue_head_t suspend_wait; /** @suspend_pending: a suspend of the exec_queue ispending */
boolsuspend_pending;drivers/gpu/drm/xe/xe_guc_exec_queue_types.h +2
-0+/** +* @suspend_count: Reference count of active suspend requests. The
drivers/gpu/drm/xe/xe_guc_exec_queue_types.h +1
-0+* exec_queue remains suspended while this is non-zero, allowing
drivers/gpu/drm/xe/xe_guc_exec_queue_types.h +1
-0+* multiple concurrent callers to independently hold a suspend without
drivers/gpu/drm/xe/xe_guc_exec_queue_types.h +1
-0+* prematurely re-enabling the queue. Protected by @sched.msg_lock.
drivers/gpu/drm/xe/xe_guc_exec_queue_types.h +2
-0+*/ +int suspend_count;/**
* @needs_cleanup: Needs a cleanup message during VF post migration
* recovery.drivers/gpu/drm/xe/xe_guc_submit.c +3
-2@@ -2131,15 +2131,18 @@ static int guc_exec_queue_set_multi_queue_priority(struct xe_exec_queue *q, static int guc_exec_queue_suspend(struct xe_exec_queue *q) { - struct xe_gpu_scheduler *sched = &q->guc->sched; -struct xe_sched_msg *msg = q->guc->static_msgs + STATIC_MSG_SUSPEND; +struct xe_guc_exec_queue *ge = q->guc; +struct xe_gpu_scheduler *sched = &ge->sched; +struct xe_sched_msg *msg = ge->static_msgs +STATIC_MSG_SUSPEND ; if (exec_queue_killed_or_banned_or_wedged(q)) return -EINVAL;
Quoted 14 lines
Quoted 7 lines
drivers/gpu/drm/xe/xe_guc_submit.c static int guc_exec_queue_set_multi_queue_priority(struct xe_exec_queue *q, · line 2145
Quoted 7 lines
drivers/gpu/drm/xe/xe_guc_submit.c +4
-2xe_sched_msg_lock(sched); -if (guc_exec_queue_try_add_msg (q, msg,SUSPEND )) - q->guc->suspend_pending = true; +if (++ge->suspend_count ==1 ) { +if (guc_exec_queue_try_add_msg (q, msg,SUSPEND )) + ge->suspend_pending = true; + }Bit confusing as it appears that the case of
guc_exec_queue_try_add_msg()
returning false is not handled properly (though it is). May be add a comment clarifying it or add an assert thatguc_exec_queue_try_add_msg()
always returns true here.
If I understand you correctly, since we're now introducing a refcount then msg->link should always be empty. Yeah I agree that should be the case and then an assert would make reading the code simpler. Agreed.
Quoted 25 lines
Quoted 25 lines
Quoted 25 lines
xe_sched_msg_unlock(sched);return 0;
drivers/gpu/drm/xe/xe_guc_submit.c +6
-5@@ -2190,14 +2193,17 @@ static int guc_exec_queue_suspend_wait(struct xe_exec_queue *q) static void guc_exec_queue_resume(struct xe_exec_queue *q) { -struct xe_gpu_scheduler *sched = &q->guc->sched; -struct xe_sched_msg *msg = q->guc->static_msgs +STATIC_MSG_RESUME ; +struct xe_guc_exec_queue *ge = q->guc; +struct xe_gpu_scheduler *sched = &ge->sched; +struct xe_sched_msg *msg = ge->static_msgs +STATIC_MSG_RESUME ; struct xe_guc *guc = exec_queue_to_guc(q); -xe_gt_assert (guc_to_gt (guc), !q->guc->suspend_pending); - xe_sched_msg_lock(sched); -guc_exec_queue_try_add_msg (q, msg,RESUME ); +xe_gt_assert (guc_to_gt (guc), ge->suspend_count >0 ); +if (--ge->suspend_count ==0 ) { + xe_gt_assert(guc_to_gt(guc), !ge-
Quoted 6 lines
Quoted 1 line
Quoted 1 line
Quoted 1 line
suspend_pending);So, if the intended usecase is for user to always wait for
suspend_wait()
before calling resume, may be we should have this assert always here instead of only whensuspend_countreaches 0?
Definitely.
Although I'm totally for making the caller being able to call this function without waiting for suspend first (I figure then the wait needs to happen in this call). But that's IMO for a separatate patch
For this patch we should keep the assert where it was.
Thanks,
Thomas
Quoted 11 lines
Niranjana
Quoted 8 lines
Quoted 8 lines
drivers/gpu/drm/xe/xe_guc_submit.c +2
-0+guc_exec_queue_try_add_msg (q, msg,RESUME ); + }
xe_sched_msg_unlock(sched);
}--
2.54.0
Thomas Hellström
maintainerPATCH v3 4/5 drm/xe: Rename EXEC_MODE_LR to EXEC_MODE_FAULT in hw engine group
In reply to Thomas HellströmThe execution mode tracked by xe_hw_engine_group_execution_mode describes whether the hw engine group is currently executing jobs in fault mode (long-running, fault-capable) or in DMA fence mode. The EXEC_MODE_LR label was misleading since not all LR queues use fault mode; rename it to EXEC_MODE_FAULT for clarity.
No functional change.
--- drivers/gpu/drm/xe/xe_exec.c | 2 +- drivers/gpu/drm/xe/xe_hw_engine_group.c | 10 +++++----- drivers/gpu/drm/xe/xe_hw_engine_group_types.h | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-)
drivers/gpu/drm/xe/xe_exec.c +1 -1
@@ -342,7 +342,7 @@ int xe_exec_ioctl(struct drm_device *dev, void *data, struct drm_file *file)spin_unlock (&xe->ttm.lru_lock); } -if (mode ==EXEC_MODE_LR ) +if (mode ==EXEC_MODE_FAULT )xe_hw_engine_group_resume_faulting_lr_jobs (group); err_repin:
drivers/gpu/drm/xe/xe_hw_engine_group.c +5 -5
@@ -22,12 +22,12 @@ hw_engine_group_resume_lr_jobs_func(struct work_struct *w)int err;enum xe_hw_engine_group_execution_mode previous_mode; - err =xe_hw_engine_group_get_mode (group,EXEC_MODE_LR , &previous_mode, + err =xe_hw_engine_group_get_mode (group,EXEC_MODE_FAULT , &previous_mode,NULL ,0 );if (err)return ; -if (previous_mode ==EXEC_MODE_LR ) +if (previous_mode ==EXEC_MODE_FAULT ) goto put;list_for_each_entry (q, &group->exec_queue_list, hw_engine_group_link) {
@@ -292,13 +292,13 @@ static int switch_mode(struct xe_hw_engine_group *group, bool has_deps)lockdep_assert_held_write (&group->mode_sem);switch (group->cur_mode) { -case EXEC_MODE_LR : +case EXEC_MODE_FAULT : new_mode =EXEC_MODE_DMA_FENCE ; err =xe_hw_engine_group_suspend_faulting_lr_jobs (group, has_deps);break ;case EXEC_MODE_DMA_FENCE : - new_mode =EXEC_MODE_LR ; + new_mode =EXEC_MODE_FAULT ; err =xe_hw_engine_group_wait_for_dma_fence_jobs (group);break ; }
@@ -395,7 +395,7 @@ enum xe_hw_engine_group_execution_mode xe_hw_engine_group_find_exec_mode(struct xe_exec_queue *q) {if (xe_vm_in_fault_mode (q->vm)) -return EXEC_MODE_LR ; +return EXEC_MODE_FAULT ;else return EXEC_MODE_DMA_FENCE ; }
drivers/gpu/drm/xe/xe_hw_engine_group_types.h +2 -2
@@ -14,11 +14,11 @@* enum xe_hw_engine_group_execution_mode - possible execution modes of a hw * engine group * -* @EXEC_MODE_LR: execution in long-running mode +* @EXEC_MODE_FAULT: execution in fault mode (long-running, fault-capable) * @EXEC_MODE_DMA_FENCE: execution in dma fence mode */ enum xe_hw_engine_group_execution_mode { -EXEC_MODE_LR , +EXEC_MODE_FAULT ,EXEC_MODE_DMA_FENCE , };
Signature · 1 line
2.54.0
Re: [PATCH v3 4/5] drm/xe: Rename EXEC_MODE_LR to EXEC_MODE_FAULT in hw engine group
Quoted 49 lines · Thomas Hellström
The execution mode tracked by
xe_hw_engine_group_execution_modedescribes whether the hw engine group is currently executing jobs in fault mode (long-running, fault-capable) or in DMA fence mode. TheEXEC_MODE_LRlabel was misleading since not all LR queues use fault mode; rename it toEXEC_MODE_FAULTfor clarity.No functional change.
Assisted-by GitHub_Copilot:claude-sonnet-4.6Signed-off-by Thomas Hellström <[email protected]>--- drivers/gpu/drm/xe/xe_exec.c | 2 +- drivers/gpu/drm/xe/xe_hw_engine_group.c | 10 +++++----- drivers/gpu/drm/xe/xe_hw_engine_group_types.h | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-)drivers/gpu/drm/xe/xe_exec.c +1
-1@@ -342,7 +342,7 @@ int xe_exec_ioctl(struct drm_device *dev, void *data, struct drm_file *file)spin_unlock (&xe->ttm.lru_lock); } -if (mode ==EXEC_MODE_LR ) +if (mode ==EXEC_MODE_FAULT )xe_hw_engine_group_resume_faulting_lr_jobs (group); err_repin:drivers/gpu/drm/xe/xe_hw_engine_group.c +2
-2@@ -22,12 +22,12 @@ hw_engine_group_resume_lr_jobs_func(struct work_struct *w)int err;enum xe_hw_engine_group_execution_mode previous_mode; - err =xe_hw_engine_group_get_mode (group,EXEC_MODE_LR , &previous_mode, + err =xe_hw_engine_group_get_mode (group,EXEC_MODE_FAULT , &previous_mode,NULL ,0 );if (err)return ; -if (previous_mode ==EXEC_MODE_LR ) +if (previous_mode ==EXEC_MODE_FAULT ) goto put;list_for_each_entry (q, &group->exec_queue_list, hw_engine_group_link) {
drivers/gpu/drm/xe/xe_hw_engine_group.c static int switch_mode(struct xe_hw_engine_group *group, bool has_deps) · line 298
Quoted 8 lines
drivers/gpu/drm/xe/xe_hw_engine_group.c +1
-1@@ -292,13 +292,13 @@ static int switch_mode(struct xe_hw_engine_group *group, bool has_deps)lockdep_assert_held_write (&group->mode_sem);switch (group->cur_mode) { -case EXEC_MODE_LR : +case EXEC_MODE_FAULT : new_mode =EXEC_MODE_DMA_FENCE ; err =xe_hw_engine_group_suspend_faulting_lr_jobs (group, has_deps);
should we also rename this function?
anyway, for this patch:
Quoted 37 lines
drivers/gpu/drm/xe/xe_hw_engine_group.c +2
-2break ;case EXEC_MODE_DMA_FENCE : - new_mode =EXEC_MODE_LR ; + new_mode =EXEC_MODE_FAULT ; err =xe_hw_engine_group_wait_for_dma_fence_jobs (group);break ; }@@ -395,7 +395,7 @@ enum xe_hw_engine_group_execution_mode xe_hw_engine_group_find_exec_mode(struct xe_exec_queue *q) {if (xe_vm_in_fault_mode (q->vm)) -return EXEC_MODE_LR ; +return EXEC_MODE_FAULT ;else return EXEC_MODE_DMA_FENCE ; }drivers/gpu/drm/xe/xe_hw_engine_group_types.h +2
-2@@ -14,11 +14,11 @@* enum xe_hw_engine_group_execution_mode - possible execution modes of a hw * engine group * -* @EXEC_MODE_LR: execution in long-running mode +* @EXEC_MODE_FAULT: execution in fault mode (long-running, fault-capable) * @EXEC_MODE_DMA_FENCE: execution in dma fence mode */ enum xe_hw_engine_group_execution_mode { -EXEC_MODE_LR , +EXEC_MODE_FAULT ,EXEC_MODE_DMA_FENCE , };Signature · 1 line
2.54.0
Re: [PATCH v3 4/5] drm/xe: Rename EXEC_MODE_LR to EXEC_MODE_FAULT in hw engine group
Quoted 52 lines · Rodrigo Vivi
Quoted 51 lines · Thomas Hellström
The execution mode tracked by
xe_hw_engine_group_execution_modedescribes whether the hw engine group is currently executing jobs in fault mode (long-running, fault-capable) or in DMA fence mode. TheEXEC_MODE_LRlabel was misleading since not all LR queues use fault mode; rename it toEXEC_MODE_FAULTfor clarity.No functional change.
Assisted-by GitHub_Copilot:claude-sonnet-4.6Signed-off-by Thomas Hellström <[email protected]>--- drivers/gpu/drm/xe/xe_exec.c | 2 +- drivers/gpu/drm/xe/xe_hw_engine_group.c | 10 +++++----- drivers/gpu/drm/xe/xe_hw_engine_group_types.h | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-)drivers/gpu/drm/xe/xe_exec.c +1
-1@@ -342,7 +342,7 @@ int xe_exec_ioctl(struct drm_device *dev, void *data, struct drm_file *file)spin_unlock (&xe->ttm.lru_lock); } -if (mode ==EXEC_MODE_LR ) +if (mode ==EXEC_MODE_FAULT )xe_hw_engine_group_resume_faulting_lr_jobs (group); err_repin:drivers/gpu/drm/xe/xe_hw_engine_group.c +2
-2@@ -22,12 +22,12 @@ hw_engine_group_resume_lr_jobs_func(struct work_struct *w)int err;enum xe_hw_engine_group_execution_mode previous_mode; - err =xe_hw_engine_group_get_mode (group,EXEC_MODE_LR , &previous_mode, + err =xe_hw_engine_group_get_mode (group,EXEC_MODE_FAULT , &previous_mode,NULL ,0 );if (err)return ; -if (previous_mode ==EXEC_MODE_LR ) +if (previous_mode ==EXEC_MODE_FAULT ) goto put;list_for_each_entry (q, &group->exec_queue_list, hw_engine_group_link) {@@ -292,13 +292,13 @@ static int switch_mode(struct xe_hw_engine_group *group, bool has_deps)lockdep_assert_held_write (&group->mode_sem);
Quoted 8 lines
drivers/gpu/drm/xe/xe_hw_engine_group.c static int switch_mode(struct xe_hw_engine_group *group, bool has_deps) · line 298
Quoted 6 lines
drivers/gpu/drm/xe/xe_hw_engine_group.c +1
-1switch (group->cur_mode) { -case EXEC_MODE_LR : +case EXEC_MODE_FAULT : new_mode =EXEC_MODE_DMA_FENCE ; err =xe_hw_engine_group_suspend_faulting_lr_jobs (group, has_deps);should we also rename this function?
I think we should, together with other occurrences of "lr" in this file.
Francois
Quoted 42 lines
anyway, for this patch:
Reviewed-by Rodrigo Vivi <[email protected]>Quoted 37 lines
drivers/gpu/drm/xe/xe_hw_engine_group.c +2
-2break ;case EXEC_MODE_DMA_FENCE : - new_mode =EXEC_MODE_LR ; + new_mode =EXEC_MODE_FAULT ; err =xe_hw_engine_group_wait_for_dma_fence_jobs (group);break ; }@@ -395,7 +395,7 @@ enum xe_hw_engine_group_execution_mode xe_hw_engine_group_find_exec_mode(struct xe_exec_queue *q) {if (xe_vm_in_fault_mode (q->vm)) -return EXEC_MODE_LR ; +return EXEC_MODE_FAULT ;else return EXEC_MODE_DMA_FENCE ; }drivers/gpu/drm/xe/xe_hw_engine_group_types.h +2
-2@@ -14,11 +14,11 @@* enum xe_hw_engine_group_execution_mode - possible execution modes of a hw * engine group * -* @EXEC_MODE_LR: execution in long-running mode +* @EXEC_MODE_FAULT: execution in fault mode (long-running, fault-capable) * @EXEC_MODE_DMA_FENCE: execution in dma fence mode */ enum xe_hw_engine_group_execution_mode { -EXEC_MODE_LR , +EXEC_MODE_FAULT ,EXEC_MODE_DMA_FENCE , };Signature · 1 line
2.54.0
Thomas Hellström
maintainerRe: [PATCH v3 4/5] drm/xe: Rename EXEC_MODE_LR to EXEC_MODE_FAULT in hw engine group
Quoted 74 lines · Francois Dugast
Quoted 64 lines · Rodrigo Vivi
Quoted 63 lines · Thomas Hellström
The execution mode tracked by
xe_hw_engine_group_execution_modedescribes whether the hw engine group is currently executing jobs in fault mode (long-running, fault-capable) or in DMA fence mode. TheEXEC_MODE_LRlabel was misleading since not all LR queues use fault mode; rename it toEXEC_MODE_FAULTfor clarity.No functional change.
Assisted-by GitHub_Copilot:claude-sonnet-4.6Signed-off-by Thomas Hellström<[email protected]>
---
drivers/gpu/drm/xe/xe_exec.c | 2 +- drivers/gpu/drm/xe/xe_hw_engine_group.c | 10 +++++-----drivers/gpu/drm/xe/xe_hw_engine_group_types.h| 4 ++--3 files changed, 8 insertions(+), 8 deletions(-)drivers/gpu/drm/xe/xe_exec.c +0
-0@@ -342,7 +342,7 @@ int xe_exec_ioctl(struct drm_device *dev, void *data, struct drm_file *file) spin_unlock(&xe->ttm.lru_lock); }drivers/gpu/drm/xe/xe_exec.c +1
-1-if (mode ==EXEC_MODE_LR ) +if (mode ==EXEC_MODE_FAULT )
xe_hw_engine_group_resume_faulting_lr_jobs(group );
err_repin:drivers/gpu/drm/xe/xe_hw_engine_group.c +0
-0@@ -22,12 +22,12 @@ hw_engine_group_resume_lr_jobs_func(struct work_struct *w) int err; enum xe_hw_engine_group_execution_mode previous_mode;drivers/gpu/drm/xe/xe_hw_engine_group.c +0
-1- err = xe_hw_engine_group_get_mode(group, EXEC_MODE_LR,
&previous_mode,drivers/gpu/drm/xe/xe_hw_engine_group.c +1
-0+ err = xe_hw_engine_group_get_mode(group,
EXEC_MODE_FAULT,&previous_mode,
NULL, 0); if (err)
return;drivers/gpu/drm/xe/xe_hw_engine_group.c +1
-1-if (previous_mode ==EXEC_MODE_LR ) +if (previous_mode ==EXEC_MODE_FAULT )goto put;
list_for_each_entry(q, &group->exec_queue_list, hw_engine_group_link){drivers/gpu/drm/xe/xe_hw_engine_group.c +0
-0@@ -292,13 +292,13 @@ static int switch_mode(struct xe_hw_engine_group *group, bool has_deps) lockdep_assert_held_write(&group->mode_sem);
switch (group->cur_mode) {drivers/gpu/drm/xe/xe_hw_engine_group.c +0
-1-case EXEC_MODE_LR :Quoted 8 lines
Quoted 6 lines
drivers/gpu/drm/xe/xe_hw_engine_group.c +1
-0+case EXEC_MODE_FAULT :
new_mode=EXEC_MODE_DMA_FENCE; err = xe_hw_engine_group_suspend_faulting_lr_jobs(group,
has_deps);should we also rename this function?
Quoted 2 lines
I think we should, together with other occurrences of "lr" in this file.
I think this particular instance is correct by including "faulting", anyway, I'll rename it to "..fault_mode_jobs" and also do an additional check of other "lr" only instances.
Thanks,
Thomas
Quoted 49 lines
Francois
Quoted 46 lines
anyway, for this patch:
Reviewed-by Rodrigo Vivi <[email protected]>Quoted 41 lines
break;
caseEXEC_MODE_DMA_FENCE:drivers/gpu/drm/xe/xe_hw_engine_group.c +1
-1- new_mode =EXEC_MODE_LR ; + new_mode =EXEC_MODE_FAULT ;err =
xe_hw_engine_group_wait_for_dma_fence_jobs(group); break;
}drivers/gpu/drm/xe/xe_hw_engine_group.c +1
-1@@ -395,7 +395,7 @@ enum xe_hw_engine_group_execution_mode xe_hw_engine_group_find_exec_mode(struct xe_exec_queue *q) { if (xe_vm_in_fault_mode(q->vm)) -return EXEC_MODE_LR ; +return EXEC_MODE_FAULT ;else
returnEXEC_MODE_DMA_FENCE;
}drivers/gpu/drm/xe/xe_hw_engine_group_types.h +0
-0@@ -14,11 +14,11 @@ * enum xe_hw_engine_group_execution_mode - possible executionmodes of a hw
* engine group
*
- * @EXEC_MODE_LR: execution in long-running mode
+ * @EXEC_MODE_FAULT: execution in fault mode (long-running, fault-capable)
* @EXEC_MODE_DMA_FENCE: execution in dma fence mode */
enumxe_hw_engine_group_execution_mode{drivers/gpu/drm/xe/xe_hw_engine_group_types.h +1
-1- EXEC_MODE_LR, + EXEC_MODE_FAULT,
EXEC_MODE_DMA_FENCE,
};Signature · 1 line
2.54.0
Thomas Hellström
maintainerPATCH v3 5/5 drm/xe: Suspend fault-mode LR jobs before VRAM eviction on S3/S4
In reply to Thomas HellströmFault-mode (SVM) exec queues run persistent LR jobs that can re-fault GPU page table entries at any time. During S3/S4 suspend, VRAM eviction unmaps GPU VMAs, but a running fault-mode job can immediately re-fault those pages back in, racing with the eviction.
Fault-mode exec queues are suspended and drained before any VRAM eviction begins, ensuring the GPU is quiescent before page tables or BOs are invalidated. On resume, all previously suspended fault-mode exec queues are re-registered and restarted once hardware is restored and page fault handlers are ready to run.
Fault-mode exec queues created concurrently with PM suspend are immediately suspended so the resume path picks them up, closing the window where a newly-created queue could race with eviction.
Remove the stale "FIXME: Super racey..." comment from xe_pm_suspend():
the race it described is now prevented by suspending fault-mode jobs before any eviction begins.
v2:
- Add xe_device::pm_suspend_in_progress flag to suppress erroneous LR exec queue bans during PM suspend (now handled in a separate patch)
- Rebase on exec queue suspend refcount and EXEC_MODE_LR rename patches
--- drivers/gpu/drm/xe/xe_exec_queue_types.h | 7 + drivers/gpu/drm/xe/xe_guc_submit.c | 25 +++ drivers/gpu/drm/xe/xe_guc_submit.h | 1 + drivers/gpu/drm/xe/xe_hw_engine_group.c | 161 ++++++++++++++++-- drivers/gpu/drm/xe/xe_hw_engine_group.h | 3 + drivers/gpu/drm/xe/xe_hw_engine_group_types.h | 7 + drivers/gpu/drm/xe/xe_pm.c | 15 +- 7 files changed, 206 insertions(+), 13 deletions(-)
drivers/gpu/drm/xe/xe_exec_queue_types.h +7 -0
@@ -200,6 +200,13 @@ struct xe_exec_queue {u32 seqno;/** @lr.link: link into VM's list of exec queues */ struct list_head link; +/** +* @lr.pm_suspended: Marks that this fault-mode exec +* queue was suspended for PM and must be resumed on +* PM post-suspend. Protected by the hw engine group's +* mode_sem. +*/ +bool pm_suspended; } lr;#define XE_EXEC_QUEUE_TLB_INVAL_PRIMARY_GT 0
drivers/gpu/drm/xe/xe_guc_submit.c +25 -0
@@ -2624,6 +2624,31 @@ void xe_guc_submit_start_user_queues(struct xe_guc *guc)mutex_unlock (&guc->submission_state.lock); } +/** +* xe_guc_submit_pm_resume_exec_queue() - Re-enable a fault-mode exec queue after PM resume +* @q: the exec queue to resume +* +* Re-enables a fault-mode LR exec queue for execution after PM resume. +* Has no effect if GuC is stopped or if the queue is in a terminal state +* (killed, banned, wedged, or destroyed). +*/ +void xe_guc_submit_pm_resume_exec_queue (struct xe_exec_queue *q) +{ +struct xe_guc *guc =exec_queue_to_guc (q); + +if (!guc->submission_state.initialized) +return ; + +mutex_lock (&guc->submission_state.lock); +if (!xe_guc_read_stopped (guc) && + !exec_queue_killed_or_banned_or_wedged (q) && !exec_queue_destroyed (q)) { +if (!exec_queue_registered (q)) +register_exec_queue (q,GUC_CONTEXT_NORMAL ); + q->ops->resume (q); + } +mutex_unlock (&guc->submission_state.lock); +} +static void guc_exec_queue_unpause_prepare (struct xe_guc *guc,struct xe_exec_queue *q) {
drivers/gpu/drm/xe/xe_guc_submit.h +1 -0
@@ -21,6 +21,7 @@ void xe_guc_submit_reset_wait(struct xe_guc *guc);void xe_guc_submit_stop (struct xe_guc *guc);int xe_guc_submit_start (struct xe_guc *guc);void xe_guc_submit_start_user_queues (struct xe_guc *guc); +void xe_guc_submit_pm_resume_exec_queue (struct xe_exec_queue *q);void xe_guc_submit_pause (struct xe_guc *guc);void xe_guc_submit_pause_abort (struct xe_guc *guc);void xe_guc_submit_pause_vf (struct xe_guc *guc);
drivers/gpu/drm/xe/xe_hw_engine_group.c +151 -10
198 lines not on this page · raw message
drivers/gpu/drm/xe/xe_hw_engine_group.h +3 -0
@@ -9,6 +9,7 @@#include "xe_hw_engine_group_types.h" struct drm_device ; +struct xe_device ;struct xe_exec_queue ;struct xe_gt ;struct xe_sync_entry ;
@@ -27,5 +28,7 @@ void xe_hw_engine_group_put(struct xe_hw_engine_group *group);enum xe_hw_engine_group_execution_mode xe_hw_engine_group_find_exec_mode (struct xe_exec_queue *q);void xe_hw_engine_group_resume_faulting_lr_jobs (struct xe_hw_engine_group *group); +int xe_suspend_all_faulting_lr_jobs (struct xe_device *xe); +void xe_resume_all_faulting_lr_jobs (struct xe_device *xe);#endif
drivers/gpu/drm/xe/xe_hw_engine_group_types.h +7 -0
@@ -46,6 +46,13 @@ struct xe_hw_engine_group {struct rw_semaphore mode_sem;/** @cur_mode: current execution mode of this hw engine group */ enum xe_hw_engine_group_execution_mode cur_mode; +/** +* @pm_suspended: true while PM suspend is in progress for this group. +* New fault-mode exec queues added while this is set are immediately +* suspended (with @lr.pm_suspended marked) and resumed by +* xe_resume_all_faulting_lr_jobs(). Protected by @mode_sem. +*/ + bool pm_suspended; };#endif
drivers/gpu/drm/xe/xe_pm.c +12 -3
@@ -20,6 +20,7 @@#include "xe_ggtt.h" #include "xe_gt.h" #include "xe_gt_idle.h" +#include "xe_hw_engine_group.h" #include "xe_i2c.h" #include "xe_irq.h" #include "xe_late_bind_fw.h"
@@ -191,7 +192,6 @@ int xe_pm_suspend(struct xe_device *xe)xe_display_pm_suspend (xe); -/* FIXME: Super racey... */ err =xe_bo_evict_all (xe);if (err) goto err_display;
@@ -414,9 +414,17 @@ static int xe_pm_notifier_callback(struct notifier_block *nb, {struct xe_validation_ctx ctx; -reinit_completion (&xe->pm_block); -xe_pm_block_begin_signalling ();xe_pm_runtime_get (xe); + + err =xe_suspend_all_faulting_lr_jobs (xe); +if (err) { +drm_err (&xe->drm,"Notifier suspend faulting LR jobs failed (%d)\n" , err); +xe_pm_runtime_put (xe); +return notifier_from_errno (err); + } + +xe_pm_block_begin_signalling (); +reinit_completion (&xe->pm_block); (void )xe_validation_ctx_init (&ctx, &xe->val,NULL , (struct xe_val_flags ) {.exclusive = true}); err =xe_bo_evict_all_user (xe);
@@ -440,6 +448,7 @@ static int xe_pm_notifier_callback(struct notifier_block *nb,complete_all (&xe->pm_block);xe_pm_wake_rebind_workers (xe);xe_bo_notifier_unprepare_all_pinned (xe); +xe_resume_all_faulting_lr_jobs (xe);xe_pm_runtime_put (xe);break ; }
Signature · 1 line
2.54.0
Patchwork
CI✓ CI.KUnit: success for drm/xe: Fix LR exec queue suspend/resume for S3/S4 (rev3)
In reply to Thomas Hellström== Series Details ==
== Series Details ==
Series: drm/xe: Fix LR exec queue suspend/resume for S3/S4 (rev3)
URL : https://patchwork.freedesktop.org/series/167032/
State : success
== Summary ==
+ trap cleanup EXIT
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/xe/.kunitconfig [15:55:39] Configuring KUnit Kernel ...
Generating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig [15:55:44] Building KUnit Kernel ... Populating config with: $ make ARCH=um O=.kunit olddefconfig Building with: $ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48 [15:56:15] Starting KUnit Kernel (1/1)... [15:56:15] ============================================================ Running tests with: $ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt [15:56:15] ================== guc_buf (11 subtests) =================== [15:56:15] [PASSED] test_smallest [15:56:15] [PASSED] test_largest [15:56:15] [PASSED] test_granular [15:56:15] [PASSED] test_unique [15:56:15] [PASSED] test_overlap [15:56:15] [PASSED] test_reusable [15:56:15] [PASSED] test_too_big [15:56:15] [PASSED] test_flush [15:56:15] [PASSED] test_lookup [15:56:15] [PASSED] test_data [15:56:15] [PASSED] test_class [15:56:15] ===================== [PASSED] guc_buf ===================== [15:56:15] =================== guc_dbm (7 subtests) =================== [15:56:15] [PASSED] test_empty [15:56:15] [PASSED] test_default [15:56:15] ======================== test_size ======================== [15:56:15] [PASSED] 4 [15:56:15] [PASSED] 8 [15:56:15] [PASSED] 32 [15:56:15] [PASSED] 256 [15:56:15] ==================== [PASSED] test_size ==================== [15:56:15] ======================= test_reuse ======================== [15:56:15] [PASSED] 4 [15:56:15] [PASSED] 8 [15:56:15] [PASSED] 32 [15:56:15] [PASSED] 256 [15:56:15] =================== [PASSED] test_reuse ==================== [15:56:15] =================== test_range_overlap ==================== [15:56:15] [PASSED] 4 [15:56:15] [PASSED] 8 [15:56:15] [PASSED] 32 [15:56:15] [PASSED] 256 [15:56:15] =============== [PASSED] test_range_overlap ================ [15:56:15] =================== test_range_compact ==================== [15:56:15] [PASSED] 4 [15:56:15] [PASSED] 8 [15:56:15] [PASSED] 32 [15:56:15] [PASSED] 256 [15:56:15] =============== [PASSED] test_range_compact ================ [15:56:15] ==================== test_range_spare ===================== [15:56:15] [PASSED] 4 [15:56:15] [PASSED] 8 [15:56:15] [PASSED] 32 [15:56:15] [PASSED] 256 [15:56:15] ================ [PASSED] test_range_spare ================= [15:56:15] ===================== [PASSED] guc_dbm ===================== [15:56:15] =================== guc_idm (6 subtests) =================== [15:56:15] [PASSED] bad_init [15:56:15] [PASSED] no_init [15:56:15] [PASSED] init_fini [15:56:15] [PASSED] check_used [15:56:15] [PASSED] check_quota [15:56:15] [PASSED] check_all [15:56:15] ===================== [PASSED] guc_idm ===================== [15:56:15] ================== no_relay (3 subtests) =================== [15:56:15] [PASSED] xe_drops_guc2pf_if_not_ready [15:56:15] [PASSED] xe_drops_guc2vf_if_not_ready [15:56:15] [PASSED] xe_rejects_send_if_not_ready [15:56:15] ==================== [PASSED] no_relay ===================== [15:56:15] ================== pf_relay (14 subtests) ================== [15:56:15] [PASSED] pf_rejects_guc2pf_too_short [15:56:15] [PASSED] pf_rejects_guc2pf_too_long [15:56:15] [PASSED] pf_rejects_guc2pf_no_payload [15:56:15] [PASSED] pf_fails_no_payload [15:56:15] [PASSED] pf_fails_bad_origin [15:56:15] [PASSED] pf_fails_bad_type [15:56:15] [PASSED] pf_txn_reports_error [15:56:15] [PASSED] pf_txn_sends_pf2guc [15:56:15] [PASSED] pf_sends_pf2guc [15:56:15] [SKIPPED] pf_loopback_nop [15:56:15] [SKIPPED] pf_loopback_echo [15:56:15] [SKIPPED] pf_loopback_fail [15:56:15] [SKIPPED] pf_loopback_busy [15:56:15] [SKIPPED] pf_loopback_retry [15:56:15] ==================== [PASSED] pf_relay ===================== [15:56:15] ================== vf_relay (3 subtests) =================== [15:56:15] [PASSED] vf_rejects_guc2vf_too_short [15:56:15] [PASSED] vf_rejects_guc2vf_too_long [15:56:15] [PASSED] vf_rejects_guc2vf_no_payload [15:56:15] ==================== [PASSED] vf_relay ===================== [15:56:15] ================ pf_gt_config (9 subtests) ================= [15:56:15] [PASSED] fair_contexts_1vf [15:56:15] [PASSED] fair_doorbells_1vf [15:56:15] [PASSED] fair_ggtt_1vf [15:56:15] ====================== fair_vram_1vf ====================== [15:56:15] [PASSED] 3.50 GiB [15:56:15] [PASSED] 11.5 GiB [15:56:15] [PASSED] 15.5 GiB [15:56:15] [PASSED] 31.5 GiB [15:56:15] [PASSED] 63.5 GiB [15:56:15] [PASSED] 1.91 GiB [15:56:15] ================== [PASSED] fair_vram_1vf ================== [15:56:15] ================ fair_vram_1vf_admin_only ================= [15:56:15] [PASSED] 3.50 GiB [15:56:15] [PASSED] 11.5 GiB [15:56:15] [PASSED] 15.5 GiB [15:56:15] [PASSED] 31.5 GiB [15:56:15] [PASSED] 63.5 GiB [15:56:15] [PASSED] 1.91 GiB [15:56:15] ============ [PASSED] fair_vram_1vf_admin_only ============= [15:56:15] ====================== fair_contexts ====================== [15:56:15] [PASSED] 1 VF [15:56:15] [PASSED] 2 VFs [15:56:15] [PASSED] 3 VFs [15:56:15] [PASSED] 4 VFs [15:56:15] [PASSED] 5 VFs [15:56:15] [PASSED] 6 VFs [15:56:15] [PASSED] 7 VFs [15:56:15] [PASSED] 8 VFs [15:56:15] [PASSED] 9 VFs [15:56:15] [PASSED] 10 VFs [15:56:15] [PASSED] 11 VFs [15:56:15] [PASSED] 12 VFs [15:56:15] [PASSED] 13 VFs [15:56:15] [PASSED] 14 VFs [15:56:15] [PASSED] 15 VFs [15:56:15] [PASSED] 16 VFs [15:56:15] [PASSED] 17 VFs [15:56:15] [PASSED] 18 VFs [15:56:15] [PASSED] 19 VFs [15:56:15] [PASSED] 20 VFs [15:56:15] [PASSED] 21 VFs [15:56:15] [PASSED] 22 VFs [15:56:15] [PASSED] 23 VFs [15:56:15] [PASSED] 24 VFs [15:56:15] [PASSED] 25 VFs [15:56:15] [PASSED] 26 VFs [15:56:15] [PASSED] 27 VFs [15:56:15] [PASSED] 28 VFs [15:56:15] [PASSED] 29 VFs [15:56:15] [PASSED] 30 VFs [15:56:15] [PASSED] 31 VFs [15:56:15] [PASSED] 32 VFs [15:56:15] [PASSED] 33 VFs [15:56:15] [PASSED] 34 VFs [15:56:15] [PASSED] 35 VFs [15:56:15] [PASSED] 36 VFs [15:56:15] [PASSED] 37 VFs [15:56:15] [PASSED] 38 VFs [15:56:15] [PASSED] 39 VFs [15:56:15] [PASSED] 40 VFs [15:56:15] [PASSED] 41 VFs [15:56:15] [PASSED] 42 VFs [15:56:15] [PASSED] 43 VFs [15:56:15] [PASSED] 44 VFs [15:56:15] [PASSED] 45 VFs [15:56:15] [PASSED] 46 VFs [15:56:15] [PASSED] 47 VFs [15:56:15] [PASSED] 48 VFs [15:56:15] [PASSED] 49 VFs [15:56:15] [PASSED] 50 VFs [15:56:15] [PASSED] 51 VFs [15:56:15] [PASSED] 52 VFs [15:56:15] [PASSED] 53 VFs [15:56:15] [PASSED] 54 VFs [15:56:15] [PASSED] 55 VFs [15:56:15] [PASSED] 56 VFs [15:56:15] [PASSED] 57 VFs [15:56:15] [PASSED] 58 VFs [15:56:15] [PASSED] 59 VFs [15:56:15] [PASSED] 60 VFs [15:56:15] [PASSED] 61 VFs [15:56:15] [PASSED] 62 VFs [15:56:15] [PASSED] 63 VFs [15:56:15] ================== [PASSED] fair_contexts ================== [15:56:15] ===================== fair_doorbells ====================== [15:56:15] [PASSED] 1 VF [15:56:15] [PASSED] 2 VFs [15:56:15] [PASSED] 3 VFs [15:56:15] [PASSED] 4 VFs [15:56:15] [PASSED] 5 VFs [15:56:15] [PASSED] 6 VFs [15:56:15] [PASSED] 7 VFs [15:56:15] [PASSED] 8 VFs [15:56:15] [PASSED] 9 VFs [15:56:15] [PASSED] 10 VFs [15:56:15] [PASSED] 11 VFs [15:56:15] [PASSED] 12 VFs [15:56:16] [PASSED] 13 VFs [15:56:16] [PASSED] 14 VFs [15:56:16] [PASSED] 15 VFs [15:56:16] [PASSED] 16 VFs [15:56:16] [PASSED] 17 VFs [15:56:16] [PASSED] 18 VFs [15:56:16] [PASSED] 19 VFs [15:56:16] [PASSED] 20 VFs [15:56:16] [PASSED] 21 VFs [15:56:16] [PASSED] 22 VFs [15:56:16] [PASSED] 23 VFs [15:56:16] [PASSED] 24 VFs [15:56:16] [PASSED] 25 VFs [15:56:16] [PASSED] 26 VFs [15:56:16] [PASSED] 27 VFs [15:56:16] [PASSED] 28 VFs [15:56:16] [PASSED] 29 VFs [15:56:16] [PASSED] 30 VFs [15:56:16] [PASSED] 31 VFs [15:56:16] [PASSED] 32 VFs [15:56:16] [PASSED] 33 VFs [15:56:16] [PASSED] 34 VFs [15:56:16] [PASSED] 35 VFs [15:56:16] [PASSED] 36 VFs [15:56:16] [PASSED] 37 VFs [15:56:16] [PASSED] 38 VFs [15:56:16] [PASSED] 39 VFs [15:56:16] [PASSED] 40 VFs [15:56:16] [PASSED] 41 VFs [15:56:16] [PASSED] 42 VFs [15:56:16] [PASSED] 43 VFs [15:56:16] [PASSED] 44 VFs [15:56:16] [PASSED] 45 VFs [15:56:16] [PASSED] 46 VFs [15:56:16] [PASSED] 47 VFs [15:56:16] [PASSED] 48 VFs [15:56:16] [PASSED] 49 VFs [15:56:16] [PASSED] 50 VFs [15:56:16] [PASSED] 51 VFs [15:56:16] [PASSED] 52 VFs [15:56:16] [PASSED] 53 VFs [15:56:16] [PASSED] 54 VFs [15:56:16] [PASSED] 55 VFs [15:56:16] [PASSED] 56 VFs [15:56:16] [PASSED] 57 VFs [15:56:16] [PASSED] 58 VFs [15:56:16] [PASSED] 59 VFs [15:56:16] [PASSED] 60 VFs [15:56:16] [PASSED] 61 VFs [15:56:16] [PASSED] 62 VFs [15:56:16] [PASSED] 63 VFs [15:56:16] ================= [PASSED] fair_doorbells ================== [15:56:16] ======================== fair_ggtt ======================== [15:56:16] [PASSED] 1 VF [15:56:16] [PASSED] 2 VFs [15:56:16] [PASSED] 3 VFs [15:56:16] [PASSED] 4 VFs [15:56:16] [PASSED] 5 VFs [15:56:16] [PASSED] 6 VFs [15:56:16] [PASSED] 7 VFs [15:56:16] [PASSED] 8 VFs [15:56:16] [PASSED] 9 VFs [15:56:16] [PASSED] 10 VFs [15:56:16] [PASSED] 11 VFs [15:56:16] [PASSED] 12 VFs [15:56:16] [PASSED] 13 VFs [15:56:16] [PASSED] 14 VFs [15:56:16] [PASSED] 15 VFs [15:56:16] [PASSED] 16 VFs [15:56:16] [PASSED] 17 VFs [15:56:16] [PASSED] 18 VFs [15:56:16] [PASSED] 19 VFs [15:56:16] [PASSED] 20 VFs [15:56:16] [PASSED] 21 VFs [15:56:16] [PASSED] 22 VFs [15:56:16] [PASSED] 23 VFs [15:56:16] [PASSED] 24 VFs [15:56:16] [PASSED] 25 VFs [15:56:16] [PASSED] 26 VFs [15:56:16] [PASSED] 27 VFs [15:56:16] [PASSED] 28 VFs [15:56:16] [PASSED] 29 VFs [15:56:16] [PASSED] 30 VFs [15:56:16] [PASSED] 31 VFs [15:56:16] [PASSED] 32 VFs [15:56:16] [PASSED] 33 VFs [15:56:16] [PASSED] 34 VFs [15:56:16] [PASSED] 35 VFs [15:56:16] [PASSED] 36 VFs [15:56:16] [PASSED] 37 VFs [15:56:16] [PASSED] 38 VFs [15:56:16] [PASSED] 39 VFs [15:56:16] [PASSED] 40 VFs [15:56:16] [PASSED] 41 VFs [15:56:16] [PASSED] 42 VFs [15:56:16] [PASSED] 43 VFs [15:56:16] [PASSED] 44 VFs [15:56:16] [PASSED] 45 VFs [15:56:16] [PASSED] 46 VFs [15:56:16] [PASSED] 47 VFs [15:56:16] [PASSED] 48 VFs [15:56:16] [PASSED] 49 VFs [15:56:16] [PASSED] 50 VFs [15:56:16] [PASSED] 51 VFs [15:56:16] [PASSED] 52 VFs [15:56:16] [PASSED] 53 VFs [15:56:16] [PASSED] 54 VFs [15:56:16] [PASSED] 55 VFs [15:56:16] [PASSED] 56 VFs [15:56:16] [PASSED] 57 VFs [15:56:16] [PASSED] 58 VFs [15:56:16] [PASSED] 59 VFs [15:56:16] [PASSED] 60 VFs [15:56:16] [PASSED] 61 VFs [15:56:16] [PASSED] 62 VFs [15:56:16] [PASSED] 63 VFs [15:56:16] ==================== [PASSED] fair_ggtt ==================== [15:56:16] ======================== fair_vram ======================== [15:56:16] [PASSED] 1 VF [15:56:16] [PASSED] 2 VFs [15:56:16] [PASSED] 3 VFs [15:56:16] [PASSED] 4 VFs [15:56:16] [PASSED] 5 VFs [15:56:16] [PASSED] 6 VFs [15:56:16] [PASSED] 7 VFs [15:56:16] [PASSED] 8 VFs [15:56:16] [PASSED] 9 VFs [15:56:16] [PASSED] 10 VFs [15:56:16] [PASSED] 11 VFs [15:56:16] [PASSED] 12 VFs [15:56:16] [PASSED] 13 VFs [15:56:16] [PASSED] 14 VFs [15:56:16] [PASSED] 15 VFs [15:56:16] [PASSED] 16 VFs [15:56:16] [PASSED] 17 VFs [15:56:16] [PASSED] 18 VFs [15:56:16] [PASSED] 19 VFs [15:56:16] [PASSED] 20 VFs [15:56:16] [PASSED] 21 VFs [15:56:16] [PASSED] 22 VFs [15:56:16] [PASSED] 23 VFs [15:56:16] [PASSED] 24 VFs [15:56:16] [PASSED] 25 VFs [15:56:16] [PASSED] 26 VFs [15:56:16] [PASSED] 27 VFs [15:56:16] [PASSED] 28 VFs [15:56:16] [PASSED] 29 VFs [15:56:16] [PASSED] 30 VFs [15:56:16] [PASSED] 31 VFs [15:56:16] [PASSED] 32 VFs [15:56:16] [PASSED] 33 VFs [15:56:16] [PASSED] 34 VFs [15:56:16] [PASSED] 35 VFs [15:56:16] [PASSED] 36 VFs [15:56:16] [PASSED] 37 VFs [15:56:16] [PASSED] 38 VFs [15:56:16] [PASSED] 39 VFs [15:56:16] [PASSED] 40 VFs [15:56:16] [PASSED] 41 VFs [15:56:16] [PASSED] 42 VFs [15:56:16] [PASSED] 43 VFs [15:56:16] [PASSED] 44 VFs [15:56:16] [PASSED] 45 VFs [15:56:16] [PASSED] 46 VFs [15:56:16] [PASSED] 47 VFs [15:56:16] [PASSED] 48 VFs [15:56:16] [PASSED] 49 VFs [15:56:16] [PASSED] 50 VFs [15:56:16] [PASSED] 51 VFs [15:56:16] [PASSED] 52 VFs [15:56:16] [PASSED] 53 VFs [15:56:16] [PASSED] 54 VFs [15:56:16] [PASSED] 55 VFs [15:56:16] [PASSED] 56 VFs [15:56:16] [PASSED] 57 VFs [15:56:16] [PASSED] 58 VFs [15:56:16] [PASSED] 59 VFs [15:56:16] [PASSED] 60 VFs [15:56:16] [PASSED] 61 VFs [15:56:16] [PASSED] 62 VFs [15:56:16] [PASSED] 63 VFs [15:56:16] ==================== [PASSED] fair_vram ==================== [15:56:16] ================== [PASSED] pf_gt_config =================== [15:56:16] ===================== lmtt (1 subtest) ===================== [15:56:16] ======================== test_ops ========================= [15:56:16] [PASSED] 2-level [15:56:16] [PASSED] multi-level [15:56:16] ==================== [PASSED] test_ops ===================== [15:56:16] ====================== [PASSED] lmtt ======================= [15:56:16] ================= pf_service (11 subtests) ================= [15:56:16] [PASSED] pf_negotiate_any [15:56:16] [PASSED] pf_negotiate_base_match [15:56:16] [PASSED] pf_negotiate_base_newer [15:56:16] [PASSED] pf_negotiate_base_next [15:56:16] [SKIPPED] pf_negotiate_base_older [15:56:16] [PASSED] pf_negotiate_base_prev [15:56:16] [PASSED] pf_negotiate_latest_match [15:56:16] [PASSED] pf_negotiate_latest_newer [15:56:16] [PASSED] pf_negotiate_latest_next [15:56:16] [SKIPPED] pf_negotiate_latest_older [15:56:16] [SKIPPED] pf_negotiate_latest_prev [15:56:16] =================== [PASSED] pf_service ==================== [15:56:16] ================= xe_guc_g2g (2 subtests) ================== [15:56:16] ============== xe_live_guc_g2g_kunit_default ============== [15:56:16] ========= [SKIPPED] xe_live_guc_g2g_kunit_default ========== [15:56:16] ============== xe_live_guc_g2g_kunit_allmem =============== [15:56:16] ========== [SKIPPED] xe_live_guc_g2g_kunit_allmem ========== [15:56:16] =================== [SKIPPED] xe_guc_g2g =================== [15:56:16] =================== xe_mocs (2 subtests) =================== [15:56:16] ================ xe_live_mocs_kernel_kunit ================ [15:56:16] =========== [SKIPPED] xe_live_mocs_kernel_kunit ============ [15:56:16] ================ xe_live_mocs_reset_kunit ================= [15:56:16] ============ [SKIPPED] xe_live_mocs_reset_kunit ============ [15:56:16] ==================== [SKIPPED] xe_mocs ===================== [15:56:16] ================= xe_migrate (2 subtests) ================== [15:56:16] ================= xe_migrate_sanity_kunit ================= [15:56:16] ============ [SKIPPED] xe_migrate_sanity_kunit ============= [15:56:16] ================== xe_validate_ccs_kunit ================== [15:56:16] ============= [SKIPPED] xe_validate_ccs_kunit ============== [15:56:16] =================== [SKIPPED] xe_migrate =================== [15:56:16] ================== xe_dma_buf (1 subtest) ================== [15:56:16] ==================== xe_dma_buf_kunit ===================== [15:56:16] ================ [SKIPPED] xe_dma_buf_kunit ================ [15:56:16] =================== [SKIPPED] xe_dma_buf =================== [15:56:16] ================= xe_bo_shrink (1 subtest) ================= [15:56:16] =================== xe_bo_shrink_kunit ==================== [15:56:16] =============== [SKIPPED] xe_bo_shrink_kunit =============== [15:56:16] ================== [SKIPPED] xe_bo_shrink ================== [15:56:16] ==================== xe_bo (2 subtests) ==================== [15:56:16] ================== xe_ccs_migrate_kunit =================== [15:56:16] ============== [SKIPPED] xe_ccs_migrate_kunit ============== [15:56:16] ==================== xe_bo_evict_kunit ==================== [15:56:16] =============== [SKIPPED] xe_bo_evict_kunit ================ [15:56:16] ===================== [SKIPPED] xe_bo ====================== [15:56:16] ==================== args (13 subtests) ==================== [15:56:16] [PASSED] count_args_test [15:56:16] [PASSED] call_args_example [15:56:16] [PASSED] call_args_test [15:56:16] [PASSED] drop_first_arg_example [15:56:16] [PASSED] drop_first_arg_test [15:56:16] [PASSED] first_arg_example [15:56:16] [PASSED] first_arg_test [15:56:16] [PASSED] last_arg_example [15:56:16] [PASSED] last_arg_test [15:56:16] [PASSED] pick_arg_example [15:56:16] [PASSED] if_args_example [15:56:16] [PASSED] if_args_test [15:56:16] [PASSED] sep_comma_example [15:56:16] ====================== [PASSED] args ======================= [15:56:16] =================== xe_pci (3 subtests) ==================== [15:56:16] ==================== check_graphics_ip ==================== [15:56:16] [PASSED] 12.00 Xe_LP [15:56:16] [PASSED] 12.10 Xe_LP+ [15:56:16] [PASSED] 12.55 Xe_HPG [15:56:16] [PASSED] 12.60 Xe_HPC [15:56:16] [PASSED] 12.70 Xe_LPG [15:56:16] [PASSED] 12.71 Xe_LPG [15:56:16] [PASSED] 12.74 Xe_LPG+ [15:56:16] [PASSED] 20.01 Xe2_HPG [15:56:16] [PASSED] 20.02 Xe2_HPG [15:56:16] [PASSED] 20.04 Xe2_LPG [15:56:16] [PASSED] 30.00 Xe3_LPG [15:56:16] [PASSED] 30.01 Xe3_LPG [15:56:16] [PASSED] 30.03 Xe3_LPG [15:56:16] [PASSED] 30.04 Xe3_LPG [15:56:16] [PASSED] 30.05 Xe3_LPG [15:56:16] [PASSED] 35.10 Xe3p_LPG [15:56:16] [PASSED] 35.11 Xe3p_XPC [15:56:16] ================ [PASSED] check_graphics_ip ================ [15:56:16] ===================== check_media_ip ====================== [15:56:16] [PASSED] 12.00 Xe_M [15:56:16] [PASSED] 12.55 Xe_HPM [15:56:16] [PASSED] 13.00 Xe_LPM+ [15:56:16] [PASSED] 13.01 Xe2_HPM [15:56:16] [PASSED] 20.00 Xe2_LPM [15:56:16] [PASSED] 30.00 Xe3_LPM [15:56:16] [PASSED] 30.02 Xe3_LPM [15:56:16] [PASSED] 35.00 Xe3p_LPM [15:56:16] [PASSED] 35.03 Xe3p_HPM [15:56:16] ================= [PASSED] check_media_ip ================== [15:56:16] =================== check_platform_desc =================== [15:56:16] [PASSED] 0x9A60 (TIGERLAKE) [15:56:16] [PASSED] 0x9A68 (TIGERLAKE) [15:56:16] [PASSED] 0x9A70 (TIGERLAKE) [15:56:16] [PASSED] 0x9A40 (TIGERLAKE) [15:56:16] [PASSED] 0x9A49 (TIGERLAKE) [15:56:16] [PASSED] 0x9A59 (TIGERLAKE) [15:56:16] [PASSED] 0x9A78 (TIGERLAKE) [15:56:16] [PASSED] 0x9AC0 (TIGERLAKE) [15:56:16] [PASSED] 0x9AC9 (TIGERLAKE) [15:56:16] [PASSED] 0x9AD9 (TIGERLAKE) [15:56:16] [PASSED] 0x9AF8 (TIGERLAKE) [15:56:16] [PASSED] 0x4C80 (ROCKETLAKE) [15:56:16] [PASSED] 0x4C8A (ROCKETLAKE) [15:56:16] [PASSED] 0x4C8B (ROCKETLAKE) [15:56:16] [PASSED] 0x4C8C (ROCKETLAKE) [15:56:16] [PASSED] 0x4C90 (ROCKETLAKE) [15:56:16] [PASSED] 0x4C9A (ROCKETLAKE) [15:56:16] [PASSED] 0x4680 (ALDERLAKE_S) [15:56:16] [PASSED] 0x4682 (ALDERLAKE_S) [15:56:16] [PASSED] 0x4688 (ALDERLAKE_S) [15:56:16] [PASSED] 0x468A (ALDERLAKE_S) [15:56:16] [PASSED] 0x468B (ALDERLAKE_S) [15:56:16] [PASSED] 0x4690 (ALDERLAKE_S) [15:56:16] [PASSED] 0x4692 (ALDERLAKE_S) [15:56:16] [PASSED] 0x4693 (ALDERLAKE_S) [15:56:16] [PASSED] 0x46A0 (ALDERLAKE_P) [15:56:16] [PASSED] 0x46A1 (ALDERLAKE_P) [15:56:16] [PASSED] 0x46A2 (ALDERLAKE_P) [15:56:16] [PASSED] 0x46A3 (ALDERLAKE_P) [15:56:16] [PASSED] 0x46A6 (ALDERLAKE_P) [15:56:16] [PASSED] 0x46A8 (ALDERLAKE_P) [15:56:16] [PASSED] 0x46AA (ALDERLAKE_P) [15:56:16] [PASSED] 0x462A (ALDERLAKE_P) [15:56:16] [PASSED] 0x4626 (ALDERLAKE_P) [15:56:16] [PASSED] 0x4628 (ALDERLAKE_P) [15:56:16] [PASSED] 0x46B0 (ALDERLAKE_P) [15:56:16] [PASSED] 0x46B1 (ALDERLAKE_P) [15:56:16] [PASSED] 0x46B2 (ALDERLAKE_P) [15:56:16] [PASSED] 0x46B3 (ALDERLAKE_P) [15:56:16] [PASSED] 0x46C0 (ALDERLAKE_P) [15:56:16] [PASSED] 0x46C1 (ALDERLAKE_P) [15:56:16] [PASSED] 0x46C2 (ALDERLAKE_P) [15:56:16] [PASSED] 0x46C3 (ALDERLAKE_P) [15:56:16] [PASSED] 0x46D0 (ALDERLAKE_N) [15:56:16] [PASSED] 0x46D1 (ALDERLAKE_N) [15:56:16] [PASSED] 0x46D2 (ALDERLAKE_N) [15:56:16] [PASSED] 0x46D3 (ALDERLAKE_N) [15:56:16] [PASSED] 0x46D4 (ALDERLAKE_N) [15:56:16] [PASSED] 0xA721 (ALDERLAKE_P) [15:56:16] [PASSED] 0xA7A1 (ALDERLAKE_P) [15:56:16] [PASSED] 0xA7A9 (ALDERLAKE_P) [15:56:16] [PASSED] 0xA7AC (ALDERLAKE_P) [15:56:16] [PASSED] 0xA7AD (ALDERLAKE_P) [15:56:16] [PASSED] 0xA720 (ALDERLAKE_P) [15:56:16] [PASSED] 0xA7A0 (ALDERLAKE_P) [15:56:16] [PASSED] 0xA7A8 (ALDERLAKE_P) [15:56:16] [PASSED] 0xA7AA (ALDERLAKE_P) [15:56:16] [PASSED] 0xA7AB (ALDERLAKE_P) [15:56:16] [PASSED] 0xA780 (ALDERLAKE_S) [15:56:16] [PASSED] 0xA781 (ALDERLAKE_S) [15:56:16] [PASSED] 0xA782 (ALDERLAKE_S) [15:56:16] [PASSED] 0xA783 (ALDERLAKE_S) [15:56:16] [PASSED] 0xA788 (ALDERLAKE_S) [15:56:16] [PASSED] 0xA789 (ALDERLAKE_S) [15:56:16] [PASSED] 0xA78A (ALDERLAKE_S) [15:56:16] [PASSED] 0xA78B (ALDERLAKE_S) [15:56:16] [PASSED] 0x4905 (DG1) [15:56:16] [PASSED] 0x4906 (DG1) [15:56:16] [PASSED] 0x4907 (DG1) [15:56:16] [PASSED] 0x4908 (DG1) [15:56:16] [PASSED] 0x4909 (DG1) [15:56:16] [PASSED] 0x56C0 (DG2) [15:56:16] [PASSED] 0x56C2 (DG2) [15:56:16] [PASSED] 0x56C1 (DG2) [15:56:16] [PASSED] 0x7D51 (METEORLAKE) [15:56:16] [PASSED] 0x7DD1 (METEORLAKE) [15:56:16] [PASSED] 0x7D41 (METEORLAKE) [15:56:16] [PASSED] 0x7D67 (METEORLAKE) [15:56:16] [PASSED] 0xB640 (METEORLAKE) [15:56:16] [PASSED] 0x56A0 (DG2) [15:56:16] [PASSED] 0x56A1 (DG2) [15:56:16] [PASSED] 0x56A2 (DG2) [15:56:16] [PASSED] 0x56BE (DG2) [15:56:16] [PASSED] 0x56BF (DG2) [15:56:16] [PASSED] 0x5690 (DG2) [15:56:16] [PASSED] 0x5691 (DG2) [15:56:16] [PASSED] 0x5692 (DG2) [15:56:16] [PASSED] 0x56A5 (DG2) [15:56:16] [PASSED] 0x56A6 (DG2) [15:56:16] [PASSED] 0x56B0 (DG2) [15:56:16] [PASSED] 0x56B1 (DG2) [15:56:16] [PASSED] 0x56BA (DG2) [15:56:16] [PASSED] 0x56BB (DG2) [15:56:16] [PASSED] 0x56BC (DG2) [15:56:16] [PASSED] 0x56BD (DG2) [15:56:16] [PASSED] 0x5693 (DG2) [15:56:16] [PASSED] 0x5694 (DG2) [15:56:16] [PASSED] 0x5695 (DG2) [15:56:16] [PASSED] 0x56A3 (DG2) [15:56:16] [PASSED] 0x56A4 (DG2) [15:56:16] [PASSED] 0x56B2 (DG2) [15:56:16] [PASSED] 0x56B3 (DG2) [15:56:16] [PASSED] 0x5696 (DG2) [15:56:16] [PASSED] 0x5697 (DG2) [15:56:16] [PASSED] 0xB69 (PVC) [15:56:16] [PASSED] 0xB6E (PVC) [15:56:16] [PASSED] 0xBD4 (PVC) [15:56:16] [PASSED] 0xBD5 (PVC) [15:56:16] [PASSED] 0xBD6 (PVC) [15:56:16] [PASSED] 0xBD7 (PVC) [15:56:16] [PASSED] 0xBD8 (PVC) [15:56:16] [PASSED] 0xBD9 (PVC) [15:56:16] [PASSED] 0xBDA (PVC) [15:56:16] [PASSED] 0xBDB (PVC) [15:56:16] [PASSED] 0xBE0 (PVC) [15:56:16] [PASSED] 0xBE1 (PVC) [15:56:16] [PASSED] 0xBE5 (PVC) [15:56:16] [PASSED] 0x7D40 (METEORLAKE) [15:56:16] [PASSED] 0x7D45 (METEORLAKE) [15:56:16] [PASSED] 0x7D55 (METEORLAKE) [15:56:16] [PASSED] 0x7D60 (METEORLAKE) [15:56:16] [PASSED] 0x7DD5 (METEORLAKE) [15:56:16] [PASSED] 0x6420 (LUNARLAKE) [15:56:16] [PASSED] 0x64A0 (LUNARLAKE) [15:56:16] [PASSED] 0x64B0 (LUNARLAKE) [15:56:16] [PASSED] 0xE202 (BATTLEMAGE) [15:56:16] [PASSED] 0xE209 (BATTLEMAGE) [15:56:16] [PASSED] 0xE20B (BATTLEMAGE) [15:56:16] [PASSED] 0xE20C (BATTLEMAGE) [15:56:16] [PASSED] 0xE20D (BATTLEMAGE) [15:56:16] [PASSED] 0xE210 (BATTLEMAGE) [15:56:16] [PASSED] 0xE211 (BATTLEMAGE) [15:56:16] [PASSED] 0xE212 (BATTLEMAGE) [15:56:16] [PASSED] 0xE216 (BATTLEMAGE) [15:56:16] [PASSED] 0xE220 (BATTLEMAGE) [15:56:16] [PASSED] 0xE221 (BATTLEMAGE) [15:56:16] [PASSED] 0xE222 (BATTLEMAGE) [15:56:16] [PASSED] 0xE223 (BATTLEMAGE) [15:56:16] [PASSED] 0xB080 (PANTHERLAKE) [15:56:16] [PASSED] 0xB081 (PANTHERLAKE) [15:56:16] [PASSED] 0xB082 (PANTHERLAKE) [15:56:16] [PASSED] 0xB083 (PANTHERLAKE) [15:56:16] [PASSED] 0xB084 (PANTHERLAKE) [15:56:16] [PASSED] 0xB085 (PANTHERLAKE) [15:56:16] [PASSED] 0xB086 (PANTHERLAKE) [15:56:16] [PASSED] 0xB087 (PANTHERLAKE) [15:56:16] [PASSED] 0xB08F (PANTHERLAKE) [15:56:16] [PASSED] 0xB090 (PANTHERLAKE) [15:56:16] [PASSED] 0xB0A0 (PANTHERLAKE) [15:56:16] [PASSED] 0xB0B0 (PANTHERLAKE) [15:56:16] [PASSED] 0xFD80 (PANTHERLAKE) [15:56:16] [PASSED] 0xFD81 (PANTHERLAKE) [15:56:16] [PASSED] 0xD740 (NOVALAKE_S) [15:56:16] [PASSED] 0xD741 (NOVALAKE_S) [15:56:16] [PASSED] 0xD742 (NOVALAKE_S) [15:56:16] [PASSED] 0xD743 (NOVALAKE_S) [15:56:16] [PASSED] 0xD744 (NOVALAKE_S) [15:56:16] [PASSED] 0xD745 (NOVALAKE_S) [15:56:16] [PASSED] 0x674C (CRESCENTISLAND) [15:56:16] [PASSED] 0x674D (CRESCENTISLAND) [15:56:16] [PASSED] 0x674E (CRESCENTISLAND) [15:56:16] [PASSED] 0x674F (CRESCENTISLAND) [15:56:16] [PASSED] 0x6750 (CRESCENTISLAND) [15:56:16] [PASSED] 0xD750 (NOVALAKE_P) [15:56:16] [PASSED] 0xD751 (NOVALAKE_P) [15:56:16] [PASSED] 0xD752 (NOVALAKE_P) [15:56:16] [PASSED] 0xD753 (NOVALAKE_P) [15:56:16] [PASSED] 0xD754 (NOVALAKE_P) [15:56:16] [PASSED] 0xD755 (NOVALAKE_P) [15:56:16] [PASSED] 0xD756 (NOVALAKE_P) [15:56:16] [PASSED] 0xD757 (NOVALAKE_P) [15:56:16] [PASSED] 0xD75F (NOVALAKE_P) [15:56:16] =============== [PASSED] check_platform_desc =============== [15:56:16] ===================== [PASSED] xe_pci ====================== [15:56:16] =================== xe_rtp (3 subtests) ==================== [15:56:16] =================== xe_rtp_rules_tests ==================== [15:56:16] [PASSED] no [15:56:16] [PASSED] yes [15:56:16] [PASSED] no-and-no [15:56:16] [PASSED] no-and-yes [15:56:16] [PASSED] yes-and-no [15:56:16] [PASSED] yes-and-yes [15:56:16] [PASSED] no-or-no [15:56:16] [PASSED] no-or-yes [15:56:16] [PASSED] yes-or-no [15:56:16] [PASSED] yes-or-yes [15:56:16] [PASSED] no-yes-or-yes-no [15:56:16] [PASSED] no-yes-or-yes-yes [15:56:16] [PASSED] yes-yes-or-no-yes [15:56:16] [PASSED] yes-yes-or-yes-yes [15:56:16] [PASSED] no-no-or-yes-or-no [15:56:16] [PASSED] or [15:56:16] [PASSED] or-yes [15:56:16] [PASSED] or-no [15:56:16] [PASSED] yes-or [15:56:16] [PASSED] no-or [15:56:16] [PASSED] no-or-or-yes [15:56:16] [PASSED] yes-or-or-no [15:56:16] [PASSED] no-or-or-no [15:56:16] [PASSED] missing-context-engine-class [15:56:16] [PASSED] missing-context-engine-class-or-yes [15:56:16] [PASSED] missing-context-engine-class-or-or-yes [15:56:16] =============== [PASSED] xe_rtp_rules_tests ================ [15:56:16] =============== xe_rtp_process_to_sr_tests ================ [15:56:16] [PASSED] coalesce-same-reg [15:56:16] [PASSED] no-match-no-add [15:56:16] [PASSED] two-regs-two-entries [15:56:16] [PASSED] clr-one-set-other [15:56:16] [PASSED] set-field [15:56:16] [PASSED] conflict-duplicate [15:56:16] [PASSED] conflict-not-disjoint [15:56:16] [PASSED] conflict-reg-type [15:56:16] [PASSED] bad-mcr-reg-forced-to-regular [15:56:16] [PASSED] bad-regular-reg-forced-to-mcr [15:56:16] =========== [PASSED] xe_rtp_process_to_sr_tests ============ [15:56:16] ================== xe_rtp_process_tests =================== [15:56:16] [PASSED] active1 [15:56:16] [PASSED] active2 [15:56:16] [PASSED] active-inactive [15:56:16] [PASSED] inactive-active [15:56:16] [PASSED] inactive-active-inactive [15:56:16] [PASSED] inactive-inactive-inactive [15:56:16] ============== [PASSED] xe_rtp_process_tests =============== [15:56:16] ===================== [PASSED] xe_rtp ====================== [15:56:16] ==================== xe_wa (1 subtest) ===================== [15:56:16] ======================== xe_wa_gt ========================= [15:56:16] [PASSED] TIGERLAKE B0 [15:56:16] [PASSED] DG1 A0 [15:56:16] [PASSED] DG1 B0 [15:56:16] [PASSED] ALDERLAKE_S A0 [15:56:16] [PASSED] ALDERLAKE_S B0 [15:56:16] [PASSED] ALDERLAKE_S C0 [15:56:16] [PASSED] ALDERLAKE_S D0 [15:56:16] [PASSED] ALDERLAKE_P A0 [15:56:16] [PASSED] ALDERLAKE_P B0 [15:56:16] [PASSED] ALDERLAKE_P C0 [15:56:16] [PASSED] ALDERLAKE_S RPLS D0 [15:56:16] [PASSED] ALDERLAKE_P RPLU E0 [15:56:16] [PASSED] DG2 G10 C0 [15:56:16] [PASSED] DG2 G11 B1 [15:56:16] [PASSED] DG2 G12 A1 [15:56:16] [PASSED] METEORLAKE 12.70(Xe_LPG) A0 13.00(Xe_LPM+) A0 [15:56:16] [PASSED] METEORLAKE 12.71(Xe_LPG) A0 13.00(Xe_LPM+) A0 [15:56:16] [PASSED] METEORLAKE 12.74(Xe_LPG+) A0 13.00(Xe_LPM+) A0 [15:56:16] [PASSED] LUNARLAKE 20.04(Xe2_LPG) A0 20.00(Xe2_LPM) A0 [15:56:16] [PASSED] LUNARLAKE 20.04(Xe2_LPG) B0 20.00(Xe2_LPM) A0 [15:56:16] [PASSED] BATTLEMAGE 20.01(Xe2_HPG) A0 13.01(Xe2_HPM) A1 [15:56:16] [PASSED] PANTHERLAKE 30.00(Xe3_LPG) A0 30.00(Xe3_LPM) A0 [15:56:16] ==================== [PASSED] xe_wa_gt ===================== [15:56:16] ====================== [PASSED] xe_wa ====================== [15:56:16] ============================================================ [15:56:16] Testing complete. Ran 624 tests: passed: 606, skipped: 18 [15:56:16] Elapsed time: 36.285s total, 4.357s configuring, 31.263s building, 0.633s running
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/tests/.kunitconfig [15:56:16] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig [15:56:18] Building KUnit Kernel ... Populating config with: $ make ARCH=um O=.kunit olddefconfig Building with: $ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48 [15:56:42] Starting KUnit Kernel (1/1)... [15:56:42] ============================================================ Running tests with: $ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt [15:56:42] ============ drm_test_pick_cmdline (2 subtests) ============ [15:56:42] [PASSED] drm_test_pick_cmdline_res_1920_1080_60 [15:56:42] =============== drm_test_pick_cmdline_named =============== [15:56:42] [PASSED] NTSC [15:56:42] [PASSED] NTSC-J [15:56:42] [PASSED] PAL [15:56:42] [PASSED] PAL-M [15:56:42] =========== [PASSED] drm_test_pick_cmdline_named =========== [15:56:42] ============== [PASSED] drm_test_pick_cmdline ============== [15:56:42] == drm_test_atomic_get_connector_for_encoder (1 subtest) === [15:56:42] [PASSED] drm_test_drm_atomic_get_connector_for_encoder [15:56:42] ==== [PASSED] drm_test_atomic_get_connector_for_encoder ==== [15:56:42] =========== drm_validate_clone_mode (2 subtests) =========== [15:56:42] ============== drm_test_check_in_clone_mode =============== [15:56:42] [PASSED] in_clone_mode [15:56:42] [PASSED] not_in_clone_mode [15:56:42] ========== [PASSED] drm_test_check_in_clone_mode =========== [15:56:42] =============== drm_test_check_valid_clones =============== [15:56:42] [PASSED] not_in_clone_mode [15:56:42] [PASSED] valid_clone [15:56:42] [PASSED] invalid_clone [15:56:42] =========== [PASSED] drm_test_check_valid_clones =========== [15:56:42] ============= [PASSED] drm_validate_clone_mode ============= [15:56:42] ============= drm_validate_modeset (1 subtest) ============= [15:56:42] [PASSED] drm_test_check_connector_changed_modeset [15:56:42] ============== [PASSED] drm_validate_modeset =============== [15:56:42] ====== drm_test_bridge_get_current_state (2 subtests) ====== [15:56:42] [PASSED] drm_test_drm_bridge_get_current_state_atomic [15:56:42] [PASSED] drm_test_drm_bridge_get_current_state_legacy [15:56:42] ======== [PASSED] drm_test_bridge_get_current_state ======== [15:56:42] ====== drm_test_bridge_helper_reset_crtc (3 subtests) ====== [15:56:42] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic [15:56:42] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic_disabled [15:56:42] [PASSED] drm_test_drm_bridge_helper_reset_crtc_legacy [15:56:42] ======== [PASSED] drm_test_bridge_helper_reset_crtc ======== [15:56:42] ============== drm_bridge_alloc (2 subtests) =============== [15:56:42] [PASSED] drm_test_drm_bridge_alloc_basic [15:56:42] [PASSED] drm_test_drm_bridge_alloc_get_put [15:56:42] ================ [PASSED] drm_bridge_alloc ================= [15:56:42] ============= drm_cmdline_parser (40 subtests) ============= [15:56:42] [PASSED] drm_test_cmdline_force_d_only [15:56:42] [PASSED] drm_test_cmdline_force_D_only_dvi [15:56:42] [PASSED] drm_test_cmdline_force_D_only_hdmi [15:56:42] [PASSED] drm_test_cmdline_force_D_only_not_digital [15:56:42] [PASSED] drm_test_cmdline_force_e_only [15:56:42] [PASSED] drm_test_cmdline_res [15:56:42] [PASSED] drm_test_cmdline_res_vesa [15:56:42] [PASSED] drm_test_cmdline_res_vesa_rblank [15:56:42] [PASSED] drm_test_cmdline_res_rblank [15:56:42] [PASSED] drm_test_cmdline_res_bpp [15:56:42] [PASSED] drm_test_cmdline_res_refresh [15:56:42] [PASSED] drm_test_cmdline_res_bpp_refresh [15:56:42] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced [15:56:42] [PASSED] drm_test_cmdline_res_bpp_refresh_margins [15:56:42] [PASSED] drm_test_cmdline_res_bpp_refresh_force_off [15:56:42] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on [15:56:42] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_analog [15:56:42] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_digital [15:56:42] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced_margins_force_on [15:56:42] [PASSED] drm_test_cmdline_res_margins_force_on [15:56:42] [PASSED] drm_test_cmdline_res_vesa_margins [15:56:42] [PASSED] drm_test_cmdline_name [15:56:42] [PASSED] drm_test_cmdline_name_bpp [15:56:42] [PASSED] drm_test_cmdline_name_option [15:56:42] [PASSED] drm_test_cmdline_name_bpp_option [15:56:42] [PASSED] drm_test_cmdline_rotate_0 [15:56:42] [PASSED] drm_test_cmdline_rotate_90 [15:56:42] [PASSED] drm_test_cmdline_rotate_180 [15:56:42] [PASSED] drm_test_cmdline_rotate_270 [15:56:42] [PASSED] drm_test_cmdline_hmirror [15:56:42] [PASSED] drm_test_cmdline_vmirror [15:56:42] [PASSED] drm_test_cmdline_margin_options [15:56:42] [PASSED] drm_test_cmdline_multiple_options [15:56:42] [PASSED] drm_test_cmdline_bpp_extra_and_option [15:56:42] [PASSED] drm_test_cmdline_extra_and_option [15:56:42] [PASSED] drm_test_cmdline_freestanding_options [15:56:42] [PASSED] drm_test_cmdline_freestanding_force_e_and_options [15:56:42] [PASSED] drm_test_cmdline_panel_orientation [15:56:42] ================ drm_test_cmdline_invalid ================= [15:56:42] [PASSED] margin_only [15:56:42] [PASSED] interlace_only [15:56:42] [PASSED] res_missing_x [15:56:42] [PASSED] res_missing_y [15:56:42] [PASSED] res_bad_y [15:56:42] [PASSED] res_missing_y_bpp [15:56:42] [PASSED] res_bad_bpp [15:56:42] [PASSED] res_bad_refresh [15:56:42] [PASSED] res_bpp_refresh_force_on_off [15:56:42] [PASSED] res_invalid_mode [15:56:42] [PASSED] res_bpp_wrong_place_mode [15:56:42] [PASSED] name_bpp_refresh [15:56:42] [PASSED] name_refresh [15:56:42] [PASSED] name_refresh_wrong_mode [15:56:42] [PASSED] name_refresh_invalid_mode [15:56:42] [PASSED] rotate_multiple [15:56:42] [PASSED] rotate_invalid_val [15:56:42] [PASSED] rotate_truncated [15:56:42] [PASSED] invalid_option [15:56:42] [PASSED] invalid_tv_option [15:56:42] [PASSED] truncated_tv_option [15:56:42] ============ [PASSED] drm_test_cmdline_invalid ============= [15:56:42] =============== drm_test_cmdline_tv_options =============== [15:56:42] [PASSED] NTSC [15:56:42] [PASSED] NTSC_443 [15:56:42] [PASSED] NTSC_J [15:56:42] [PASSED] PAL [15:56:42] [PASSED] PAL_M [15:56:42] [PASSED] PAL_N [15:56:42] [PASSED] SECAM [15:56:42] [PASSED] MONO_525 [15:56:42] [PASSED] MONO_625 [15:56:42] =========== [PASSED] drm_test_cmdline_tv_options =========== [15:56:42] =============== [PASSED] drm_cmdline_parser ================ [15:56:42] ========== drmm_connector_hdmi_init (20 subtests) ========== [15:56:42] [PASSED] drm_test_connector_hdmi_init_valid [15:56:42] [PASSED] drm_test_connector_hdmi_init_bpc_8 [15:56:42] [PASSED] drm_test_connector_hdmi_init_bpc_10 [15:56:42] [PASSED] drm_test_connector_hdmi_init_bpc_12 [15:56:42] [PASSED] drm_test_connector_hdmi_init_bpc_invalid [15:56:42] [PASSED] drm_test_connector_hdmi_init_bpc_null [15:56:42] [PASSED] drm_test_connector_hdmi_init_formats_empty [15:56:42] [PASSED] drm_test_connector_hdmi_init_formats_no_rgb [15:56:42] === drm_test_connector_hdmi_init_formats_yuv420_allowed === [15:56:42] [PASSED] supported_formats=0x9 yuv420_allowed=1 [15:56:42] [PASSED] supported_formats=0x9 yuv420_allowed=0 [15:56:42] [PASSED] supported_formats=0x5 yuv420_allowed=1 [15:56:42] [PASSED] supported_formats=0x5 yuv420_allowed=0 [15:56:42] === [PASSED] drm_test_connector_hdmi_init_formats_yuv420_allowed === [15:56:42] [PASSED] drm_test_connector_hdmi_init_null_ddc [15:56:42] [PASSED] drm_test_connector_hdmi_init_null_product [15:56:42] [PASSED] drm_test_connector_hdmi_init_null_vendor [15:56:42] [PASSED] drm_test_connector_hdmi_init_product_length_exact [15:56:42] [PASSED] drm_test_connector_hdmi_init_product_length_too_long [15:56:42] [PASSED] drm_test_connector_hdmi_init_product_valid [15:56:42] [PASSED] drm_test_connector_hdmi_init_vendor_length_exact [15:56:42] [PASSED] drm_test_connector_hdmi_init_vendor_length_too_long [15:56:42] [PASSED] drm_test_connector_hdmi_init_vendor_valid [15:56:42] ========= drm_test_connector_hdmi_init_type_valid ========= [15:56:42] [PASSED] HDMI-A [15:56:42] [PASSED] HDMI-B [15:56:42] ===== [PASSED] drm_test_connector_hdmi_init_type_valid ===== [15:56:42] ======== drm_test_connector_hdmi_init_type_invalid ======== [15:56:42] [PASSED] Unknown [15:56:42] [PASSED] VGA [15:56:42] [PASSED] DVI-I [15:56:42] [PASSED] DVI-D [15:56:42] [PASSED] DVI-A [15:56:42] [PASSED] Composite [15:56:42] [PASSED] SVIDEO [15:56:42] [PASSED] LVDS [15:56:42] [PASSED] Component [15:56:42] [PASSED] DIN [15:56:42] [PASSED] DP [15:56:42] [PASSED] TV [15:56:42] [PASSED] eDP [15:56:42] [PASSED] Virtual [15:56:42] [PASSED] DSI [15:56:42] [PASSED] DPI [15:56:42] [PASSED] Writeback [15:56:42] [PASSED] SPI [15:56:42] [PASSED] USB [15:56:42] ==== [PASSED] drm_test_connector_hdmi_init_type_invalid ==== [15:56:42] ============ [PASSED] drmm_connector_hdmi_init ============= [15:56:42] ============= drmm_connector_init (3 subtests) ============= [15:56:42] [PASSED] drm_test_drmm_connector_init [15:56:42] [PASSED] drm_test_drmm_connector_init_null_ddc [15:56:42] ========= drm_test_drmm_connector_init_type_valid ========= [15:56:42] [PASSED] Unknown [15:56:42] [PASSED] VGA [15:56:42] [PASSED] DVI-I [15:56:42] [PASSED] DVI-D [15:56:42] [PASSED] DVI-A [15:56:42] [PASSED] Composite [15:56:42] [PASSED] SVIDEO [15:56:42] [PASSED] LVDS [15:56:42] [PASSED] Component [15:56:42] [PASSED] DIN [15:56:42] [PASSED] DP [15:56:42] [PASSED] HDMI-A [15:56:42] [PASSED] HDMI-B [15:56:42] [PASSED] TV [15:56:42] [PASSED] eDP [15:56:42] [PASSED] Virtual [15:56:42] [PASSED] DSI [15:56:42] [PASSED] DPI [15:56:42] [PASSED] Writeback [15:56:42] [PASSED] SPI [15:56:42] [PASSED] USB [15:56:42] ===== [PASSED] drm_test_drmm_connector_init_type_valid ===== [15:56:42] =============== [PASSED] drmm_connector_init =============== [15:56:42] ========= drm_connector_dynamic_init (6 subtests) ========== [15:56:42] [PASSED] drm_test_drm_connector_dynamic_init [15:56:42] [PASSED] drm_test_drm_connector_dynamic_init_null_ddc [15:56:42] [PASSED] drm_test_drm_connector_dynamic_init_not_added [15:56:42] [PASSED] drm_test_drm_connector_dynamic_init_properties [15:56:42] ===== drm_test_drm_connector_dynamic_init_type_valid ====== [15:56:42] [PASSED] Unknown [15:56:42] [PASSED] VGA [15:56:42] [PASSED] DVI-I [15:56:42] [PASSED] DVI-D [15:56:42] [PASSED] DVI-A [15:56:42] [PASSED] Composite [15:56:42] [PASSED] SVIDEO [15:56:42] [PASSED] LVDS [15:56:42] [PASSED] Component [15:56:42] [PASSED] DIN [15:56:42] [PASSED] DP [15:56:42] [PASSED] HDMI-A [15:56:42] [PASSED] HDMI-B [15:56:42] [PASSED] TV [15:56:42] [PASSED] eDP [15:56:42] [PASSED] Virtual [15:56:42] [PASSED] DSI [15:56:42] [PASSED] DPI [15:56:42] [PASSED] Writeback [15:56:42] [PASSED] SPI [15:56:42] [PASSED] USB [15:56:42] = [PASSED] drm_test_drm_connector_dynamic_init_type_valid == [15:56:42] ======== drm_test_drm_connector_dynamic_init_name ========= [15:56:42] [PASSED] Unknown [15:56:42] [PASSED] VGA [15:56:42] [PASSED] DVI-I [15:56:42] [PASSED] DVI-D [15:56:42] [PASSED] DVI-A [15:56:42] [PASSED] Composite [15:56:42] [PASSED] SVIDEO [15:56:42] [PASSED] LVDS [15:56:42] [PASSED] Component [15:56:42] [PASSED] DIN [15:56:42] [PASSED] DP [15:56:42] [PASSED] HDMI-A [15:56:42] [PASSED] HDMI-B [15:56:42] [PASSED] TV [15:56:42] [PASSED] eDP [15:56:42] [PASSED] Virtual [15:56:42] [PASSED] DSI [15:56:42] [PASSED] DPI [15:56:42] [PASSED] Writeback [15:56:42] [PASSED] SPI [15:56:42] [PASSED] USB [15:56:42] ==== [PASSED] drm_test_drm_connector_dynamic_init_name ===== [15:56:42] =========== [PASSED] drm_connector_dynamic_init ============ [15:56:42] ==== drm_connector_dynamic_register_early (4 subtests) ===== [15:56:42] [PASSED] drm_test_drm_connector_dynamic_register_early_on_list [15:56:42] [PASSED] drm_test_drm_connector_dynamic_register_early_defer [15:56:42] [PASSED] drm_test_drm_connector_dynamic_register_early_no_init [15:56:42] [PASSED] drm_test_drm_connector_dynamic_register_early_no_mode_object [15:56:42] ====== [PASSED] drm_connector_dynamic_register_early ======= [15:56:42] ======= drm_connector_dynamic_register (7 subtests) ======== [15:56:42] [PASSED] drm_test_drm_connector_dynamic_register_on_list [15:56:42] [PASSED] drm_test_drm_connector_dynamic_register_no_defer [15:56:42] [PASSED] drm_test_drm_connector_dynamic_register_no_init [15:56:42] [PASSED] drm_test_drm_connector_dynamic_register_mode_object [15:56:42] [PASSED] drm_test_drm_connector_dynamic_register_sysfs [15:56:42] [PASSED] drm_test_drm_connector_dynamic_register_sysfs_name [15:56:42] [PASSED] drm_test_drm_connector_dynamic_register_debugfs [15:56:42] ========= [PASSED] drm_connector_dynamic_register ========== [15:56:42] = drm_connector_attach_broadcast_rgb_property (2 subtests) = [15:56:42] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property [15:56:42] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property_hdmi_connector [15:56:42] === [PASSED] drm_connector_attach_broadcast_rgb_property === [15:56:42] ========== drm_get_tv_mode_from_name (2 subtests) ========== [15:56:42] ========== drm_test_get_tv_mode_from_name_valid =========== [15:56:42] [PASSED] NTSC [15:56:42] [PASSED] NTSC-443 [15:56:42] [PASSED] NTSC-J [15:56:42] [PASSED] PAL [15:56:42] [PASSED] PAL-M [15:56:42] [PASSED] PAL-N [15:56:42] [PASSED] SECAM [15:56:42] [PASSED] Mono [15:56:42] ====== [PASSED] drm_test_get_tv_mode_from_name_valid ======= [15:56:42] [PASSED] drm_test_get_tv_mode_from_name_truncated [15:56:42] ============ [PASSED] drm_get_tv_mode_from_name ============ [15:56:42] = drm_test_connector_hdmi_compute_mode_clock (12 subtests) = [15:56:42] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb [15:56:42] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc [15:56:42] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc_vic_1 [15:56:42] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc [15:56:42] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc_vic_1 [15:56:42] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_double [15:56:42] = drm_test_connector_hdmi_compute_mode_clock_yuv420_valid = [15:56:42] [PASSED] VIC 96 [15:56:42] [PASSED] VIC 97 [15:56:42] [PASSED] VIC 101 [15:56:42] [PASSED] VIC 102 [15:56:42] [PASSED] VIC 106 [15:56:42] [PASSED] VIC 107 [15:56:42] === [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_valid === [15:56:42] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_10_bpc [15:56:42] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_12_bpc [15:56:42] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_8_bpc [15:56:42] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_10_bpc [15:56:42] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_12_bpc [15:56:42] === [PASSED] drm_test_connector_hdmi_compute_mode_clock ==== [15:56:42] == drm_hdmi_connector_get_broadcast_rgb_name (2 subtests) == [15:56:42] === drm_test_drm_hdmi_connector_get_broadcast_rgb_name ==== [15:56:42] [PASSED] Automatic [15:56:42] [PASSED] Full [15:56:42] [PASSED] Limited 16:235 [15:56:42] === [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name === [15:56:42] [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name_invalid [15:56:42] ==== [PASSED] drm_hdmi_connector_get_broadcast_rgb_name ==== [15:56:42] == drm_hdmi_connector_get_output_format_name (2 subtests) == [15:56:42] === drm_test_drm_hdmi_connector_get_output_format_name ==== [15:56:42] [PASSED] RGB [15:56:42] [PASSED] YUV 4:2:0 [15:56:42] [PASSED] YUV 4:2:2 [15:56:42] [PASSED] YUV 4:4:4 [15:56:42] === [PASSED] drm_test_drm_hdmi_connector_get_output_format_name === [15:56:42] [PASSED] drm_test_drm_hdmi_connector_get_output_format_name_invalid [15:56:42] ==== [PASSED] drm_hdmi_connector_get_output_format_name ==== [15:56:42] ============= drm_damage_helper (21 subtests) ============== [15:56:42] [PASSED] drm_test_damage_iter_no_damage [15:56:42] [PASSED] drm_test_damage_iter_no_damage_fractional_src [15:56:42] [PASSED] drm_test_damage_iter_no_damage_src_moved [15:56:42] [PASSED] drm_test_damage_iter_no_damage_fractional_src_moved [15:56:42] [PASSED] drm_test_damage_iter_no_damage_not_visible [15:56:42] [PASSED] drm_test_damage_iter_no_damage_no_crtc [15:56:42] [PASSED] drm_test_damage_iter_no_damage_no_fb [15:56:42] [PASSED] drm_test_damage_iter_simple_damage [15:56:42] [PASSED] drm_test_damage_iter_single_damage [15:56:42] [PASSED] drm_test_damage_iter_single_damage_intersect_src [15:56:42] [PASSED] drm_test_damage_iter_single_damage_outside_src [15:56:42] [PASSED] drm_test_damage_iter_single_damage_fractional_src [15:56:42] [PASSED] drm_test_damage_iter_single_damage_intersect_fractional_src [15:56:42] [PASSED] drm_test_damage_iter_single_damage_outside_fractional_src [15:56:42] [PASSED] drm_test_damage_iter_single_damage_src_moved [15:56:42] [PASSED] drm_test_damage_iter_single_damage_fractional_src_moved [15:56:42] [PASSED] drm_test_damage_iter_damage [15:56:42] [PASSED] drm_test_damage_iter_damage_one_intersect [15:56:42] [PASSED] drm_test_damage_iter_damage_one_outside [15:56:42] [PASSED] drm_test_damage_iter_damage_src_moved [15:56:42] [PASSED] drm_test_damage_iter_damage_not_visible [15:56:42] ================ [PASSED] drm_damage_helper ================ [15:56:42] ============== drm_dp_mst_helper (3 subtests) ============== [15:56:42] ============== drm_test_dp_mst_calc_pbn_mode ============== [15:56:42] [PASSED] Clock 154000 BPP 30 DSC disabled [15:56:42] [PASSED] Clock 234000 BPP 30 DSC disabled [15:56:42] [PASSED] Clock 297000 BPP 24 DSC disabled [15:56:42] [PASSED] Clock 332880 BPP 24 DSC enabled [15:56:42] [PASSED] Clock 324540 BPP 24 DSC enabled [15:56:42] ========== [PASSED] drm_test_dp_mst_calc_pbn_mode ========== [15:56:42] ============== drm_test_dp_mst_calc_pbn_div =============== [15:56:42] [PASSED] Link rate 2000000 lane count 4 [15:56:42] [PASSED] Link rate 2000000 lane count 2 [15:56:42] [PASSED] Link rate 2000000 lane count 1 [15:56:42] [PASSED] Link rate 1350000 lane count 4 [15:56:42] [PASSED] Link rate 1350000 lane count 2 [15:56:42] [PASSED] Link rate 1350000 lane count 1 [15:56:42] [PASSED] Link rate 1000000 lane count 4 [15:56:42] [PASSED] Link rate 1000000 lane count 2 [15:56:42] [PASSED] Link rate 1000000 lane count 1 [15:56:42] [PASSED] Link rate 810000 lane count 4 [15:56:42] [PASSED] Link rate 810000 lane count 2 [15:56:42] [PASSED] Link rate 810000 lane count 1 [15:56:42] [PASSED] Link rate 540000 lane count 4 [15:56:42] [PASSED] Link rate 540000 lane count 2 [15:56:42] [PASSED] Link rate 540000 lane count 1 [15:56:42] [PASSED] Link rate 270000 lane count 4 [15:56:42] [PASSED] Link rate 270000 lane count 2 [15:56:42] [PASSED] Link rate 270000 lane count 1 [15:56:42] [PASSED] Link rate 162000 lane count 4 [15:56:42] [PASSED] Link rate 162000 lane count 2 [15:56:42] [PASSED] Link rate 162000 lane count 1 [15:56:42] ========== [PASSED] drm_test_dp_mst_calc_pbn_div =========== [15:56:42] ========= drm_test_dp_mst_sideband_msg_req_decode ========= [15:56:42] [PASSED] DP_ENUM_PATH_RESOURCES with port number [15:56:42] [PASSED] DP_POWER_UP_PHY with port number [15:56:42] [PASSED] DP_POWER_DOWN_PHY with port number [15:56:42] [PASSED] DP_ALLOCATE_PAYLOAD with SDP stream sinks [15:56:42] [PASSED] DP_ALLOCATE_PAYLOAD with port number [15:56:42] [PASSED] DP_ALLOCATE_PAYLOAD with VCPI [15:56:42] [PASSED] DP_ALLOCATE_PAYLOAD with PBN [15:56:42] [PASSED] DP_QUERY_PAYLOAD with port number [15:56:42] [PASSED] DP_QUERY_PAYLOAD with VCPI [15:56:42] [PASSED] DP_REMOTE_DPCD_READ with port number [15:56:42] [PASSED] DP_REMOTE_DPCD_READ with DPCD address [15:56:42] [PASSED] DP_REMOTE_DPCD_READ with max number of bytes [15:56:42] [PASSED] DP_REMOTE_DPCD_WRITE with port number [15:56:42] [PASSED] DP_REMOTE_DPCD_WRITE with DPCD address [15:56:42] [PASSED] DP_REMOTE_DPCD_WRITE with data array [15:56:42] [PASSED] DP_REMOTE_I2C_READ with port number [15:56:42] [PASSED] DP_REMOTE_I2C_READ with I2C device ID [15:56:42] [PASSED] DP_REMOTE_I2C_READ with transactions array [15:56:42] [PASSED] DP_REMOTE_I2C_WRITE with port number [15:56:42] [PASSED] DP_REMOTE_I2C_WRITE with I2C device ID [15:56:42] [PASSED] DP_REMOTE_I2C_WRITE with data array [15:56:42] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream ID [15:56:42] [PASSED] DP_QUERY_STREAM_ENC_STATUS with client ID [15:56:42] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream event [15:56:42] [PASSED] DP_QUERY_STREAM_ENC_STATUS with valid stream event [15:56:42] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream behavior [15:56:42] [PASSED] DP_QUERY_STREAM_ENC_STATUS with a valid stream behavior [15:56:42] ===== [PASSED] drm_test_dp_mst_sideband_msg_req_decode ===== [15:56:42] ================ [PASSED] drm_dp_mst_helper ================ [15:56:42] ================== drm_exec (7 subtests) =================== [15:56:42] [PASSED] sanitycheck [15:56:42] [PASSED] test_lock [15:56:42] [PASSED] test_lock_unlock [15:56:42] [PASSED] test_duplicates [15:56:42] [PASSED] test_prepare [15:56:42] [PASSED] test_prepare_array [15:56:42] [PASSED] test_multiple_loops [15:56:42] ==================== [PASSED] drm_exec ===================== [15:56:42] =========== drm_format_helper_test (17 subtests) =========== [15:56:42] ============== drm_test_fb_xrgb8888_to_gray8 ============== [15:56:42] [PASSED] single_pixel_source_buffer [15:56:42] [PASSED] single_pixel_clip_rectangle [15:56:42] [PASSED] well_known_colors [15:56:42] [PASSED] destination_pitch [15:56:42] ========== [PASSED] drm_test_fb_xrgb8888_to_gray8 ========== [15:56:42] ============= drm_test_fb_xrgb8888_to_rgb332 ============== [15:56:42] [PASSED] single_pixel_source_buffer [15:56:42] [PASSED] single_pixel_clip_rectangle [15:56:42] [PASSED] well_known_colors [15:56:42] [PASSED] destination_pitch [15:56:42] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb332 ========== [15:56:42] ============= drm_test_fb_xrgb8888_to_rgb565 ============== [15:56:42] [PASSED] single_pixel_source_buffer [15:56:42] [PASSED] single_pixel_clip_rectangle [15:56:42] [PASSED] well_known_colors [15:56:42] [PASSED] destination_pitch [15:56:42] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb565 ========== [15:56:42] ============ drm_test_fb_xrgb8888_to_xrgb1555 ============= [15:56:42] [PASSED] single_pixel_source_buffer [15:56:42] [PASSED] single_pixel_clip_rectangle [15:56:42] [PASSED] well_known_colors [15:56:42] [PASSED] destination_pitch [15:56:42] ======== [PASSED] drm_test_fb_xrgb8888_to_xrgb1555 ========= [15:56:42] ============ drm_test_fb_xrgb8888_to_argb1555 ============= [15:56:42] [PASSED] single_pixel_source_buffer [15:56:42] [PASSED] single_pixel_clip_rectangle [15:56:42] [PASSED] well_known_colors [15:56:42] [PASSED] destination_pitch [15:56:42] ======== [PASSED] drm_test_fb_xrgb8888_to_argb1555 ========= [15:56:42] ============ drm_test_fb_xrgb8888_to_rgba5551 ============= [15:56:42] [PASSED] single_pixel_source_buffer [15:56:42] [PASSED] single_pixel_clip_rectangle [15:56:42] [PASSED] well_known_colors [15:56:42] [PASSED] destination_pitch [15:56:42] ======== [PASSED] drm_test_fb_xrgb8888_to_rgba5551 ========= [15:56:42] ============= drm_test_fb_xrgb8888_to_rgb888 ============== [15:56:42] [PASSED] single_pixel_source_buffer [15:56:42] [PASSED] single_pixel_clip_rectangle [15:56:42] [PASSED] well_known_colors [15:56:42] [PASSED] destination_pitch [15:56:42] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb888 ========== [15:56:42] ============= drm_test_fb_xrgb8888_to_bgr888 ============== [15:56:42] [PASSED] single_pixel_source_buffer [15:56:42] [PASSED] single_pixel_clip_rectangle [15:56:42] [PASSED] well_known_colors [15:56:42] [PASSED] destination_pitch [15:56:42] ========= [PASSED] drm_test_fb_xrgb8888_to_bgr888 ========== [15:56:42] ============ drm_test_fb_xrgb8888_to_argb8888 ============= [15:56:42] [PASSED] single_pixel_source_buffer [15:56:42] [PASSED] single_pixel_clip_rectangle [15:56:42] [PASSED] well_known_colors [15:56:42] [PASSED] destination_pitch [15:56:42] ======== [PASSED] drm_test_fb_xrgb8888_to_argb8888 ========= [15:56:42] =========== drm_test_fb_xrgb8888_to_xrgb2101010 =========== [15:56:42] [PASSED] single_pixel_source_buffer [15:56:42] [PASSED] single_pixel_clip_rectangle [15:56:42] [PASSED] well_known_colors [15:56:42] [PASSED] destination_pitch [15:56:42] ======= [PASSED] drm_test_fb_xrgb8888_to_xrgb2101010 ======= [15:56:42] =========== drm_test_fb_xrgb8888_to_argb2101010 =========== [15:56:42] [PASSED] single_pixel_source_buffer [15:56:42] [PASSED] single_pixel_clip_rectangle [15:56:42] [PASSED] well_known_colors [15:56:42] [PASSED] destination_pitch [15:56:42] ======= [PASSED] drm_test_fb_xrgb8888_to_argb2101010 ======= [15:56:42] ============== drm_test_fb_xrgb8888_to_mono =============== [15:56:42] [PASSED] single_pixel_source_buffer [15:56:42] [PASSED] single_pixel_clip_rectangle [15:56:42] [PASSED] well_known_colors [15:56:42] [PASSED] destination_pitch [15:56:42] ========== [PASSED] drm_test_fb_xrgb8888_to_mono =========== [15:56:42] ==================== drm_test_fb_swab ===================== [15:56:42] [PASSED] single_pixel_source_buffer [15:56:42] [PASSED] single_pixel_clip_rectangle [15:56:42] [PASSED] well_known_colors [15:56:42] [PASSED] destination_pitch [15:56:42] ================ [PASSED] drm_test_fb_swab ================= [15:56:42] ============ drm_test_fb_xrgb8888_to_xbgr8888 ============= [15:56:42] [PASSED] single_pixel_source_buffer [15:56:42] [PASSED] single_pixel_clip_rectangle [15:56:42] [PASSED] well_known_colors [15:56:42] [PASSED] destination_pitch [15:56:42] ======== [PASSED] drm_test_fb_xrgb8888_to_xbgr8888 ========= [15:56:42] ============ drm_test_fb_xrgb8888_to_abgr8888 ============= [15:56:42] [PASSED] single_pixel_source_buffer [15:56:42] [PASSED] single_pixel_clip_rectangle [15:56:42] [PASSED] well_known_colors [15:56:42] [PASSED] destination_pitch [15:56:42] ======== [PASSED] drm_test_fb_xrgb8888_to_abgr8888 ========= [15:56:42] ================= drm_test_fb_clip_offset ================= [15:56:42] [PASSED] pass through [15:56:42] [PASSED] horizontal offset [15:56:42] [PASSED] vertical offset [15:56:42] [PASSED] horizontal and vertical offset [15:56:42] [PASSED] horizontal offset (custom pitch) [15:56:42] [PASSED] vertical offset (custom pitch) [15:56:42] [PASSED] horizontal and vertical offset (custom pitch) [15:56:42] ============= [PASSED] drm_test_fb_clip_offset ============= [15:56:42] =================== drm_test_fb_memcpy ==================== [15:56:42] [PASSED] single_pixel_source_buffer: XR24 little-endian (0x34325258) [15:56:42] [PASSED] single_pixel_source_buffer: XRA8 little-endian (0x38415258) [15:56:42] [PASSED] single_pixel_source_buffer: YU24 little-endian (0x34325559) [15:56:42] [PASSED] single_pixel_clip_rectangle: XB24 little-endian (0x34324258) [15:56:42] [PASSED] single_pixel_clip_rectangle: XRA8 little-endian (0x38415258) [15:56:42] [PASSED] single_pixel_clip_rectangle: YU24 little-endian (0x34325559) [15:56:42] [PASSED] well_known_colors: XB24 little-endian (0x34324258) [15:56:42] [PASSED] well_known_colors: XRA8 little-endian (0x38415258) [15:56:42] [PASSED] well_known_colors: YU24 little-endian (0x34325559) [15:56:42] [PASSED] destination_pitch: XB24 little-endian (0x34324258) [15:56:42] [PASSED] destination_pitch: XRA8 little-endian (0x38415258) [15:56:42] [PASSED] destination_pitch: YU24 little-endian (0x34325559) [15:56:42] =============== [PASSED] drm_test_fb_memcpy ================ [15:56:42] ============= [PASSED] drm_format_helper_test ============== [15:56:42] ================= drm_format (18 subtests) ================= [15:56:42] [PASSED] drm_test_format_block_width_invalid [15:56:42] [PASSED] drm_test_format_block_width_one_plane [15:56:42] [PASSED] drm_test_format_block_width_two_plane [15:56:42] [PASSED] drm_test_format_block_width_three_plane [15:56:42] [PASSED] drm_test_format_block_width_tiled [15:56:42] [PASSED] drm_test_format_block_height_invalid [15:56:42] [PASSED] drm_test_format_block_height_one_plane [15:56:42] [PASSED] drm_test_format_block_height_two_plane [15:56:42] [PASSED] drm_test_format_block_height_three_plane [15:56:42] [PASSED] drm_test_format_block_height_tiled [15:56:42] [PASSED] drm_test_format_min_pitch_invalid [15:56:42] [PASSED] drm_test_format_min_pitch_one_plane_8bpp [15:56:42] [PASSED] drm_test_format_min_pitch_one_plane_16bpp [15:56:42] [PASSED] drm_test_format_min_pitch_one_plane_24bpp [15:56:42] [PASSED] drm_test_format_min_pitch_one_plane_32bpp [15:56:42] [PASSED] drm_test_format_min_pitch_two_plane [15:56:42] [PASSED] drm_test_format_min_pitch_three_plane_8bpp [15:56:42] [PASSED] drm_test_format_min_pitch_tiled [15:56:42] =================== [PASSED] drm_format ==================== [15:56:42] ============== drm_framebuffer (10 subtests) =============== [15:56:42] ========== drm_test_framebuffer_check_src_coords ========== [15:56:42] [PASSED] Success: source fits into fb [15:56:42] [PASSED] Fail: overflowing fb with x-axis coordinate [15:56:42] [PASSED] Fail: overflowing fb with y-axis coordinate [15:56:42] [PASSED] Fail: overflowing fb with source width [15:56:42] [PASSED] Fail: overflowing fb with source height [15:56:42] ====== [PASSED] drm_test_framebuffer_check_src_coords ====== [15:56:42] [PASSED] drm_test_framebuffer_cleanup [15:56:42] =============== drm_test_framebuffer_create =============== [15:56:42] [PASSED] ABGR8888 normal sizes [15:56:42] [PASSED] ABGR8888 max sizes [15:56:42] [PASSED] ABGR8888 pitch greater than min required [15:56:42] [PASSED] ABGR8888 pitch less than min required [15:56:42] [PASSED] ABGR8888 Invalid width [15:56:42] [PASSED] ABGR8888 Invalid buffer handle [15:56:42] [PASSED] No pixel format [15:56:42] [PASSED] ABGR8888 Width 0 [15:56:42] [PASSED] ABGR8888 Height 0 [15:56:42] [PASSED] ABGR8888 Out of bound height * pitch combination [15:56:42] [PASSED] ABGR8888 Large buffer offset [15:56:42] [PASSED] ABGR8888 Buffer offset for inexistent plane [15:56:42] [PASSED] ABGR8888 Invalid flag [15:56:42] [PASSED] ABGR8888 Set DRM_MODE_FB_MODIFIERS without modifiers [15:56:42] [PASSED] ABGR8888 Valid buffer modifier [15:56:42] [PASSED] ABGR8888 Invalid buffer modifier(DRM_FORMAT_MOD_SAMSUNG_64_32_TILE) [15:56:42] [PASSED] ABGR8888 Extra pitches without DRM_MODE_FB_MODIFIERS [15:56:42] [PASSED] ABGR8888 Extra pitches with DRM_MODE_FB_MODIFIERS [15:56:42] [PASSED] NV12 Normal sizes [15:56:42] [PASSED] NV12 Max sizes [15:56:42] [PASSED] NV12 Invalid pitch [15:56:42] [PASSED] NV12 Invalid modifier/missing DRM_MODE_FB_MODIFIERS flag [15:56:42] [PASSED] NV12 different modifier per-plane [15:56:42] [PASSED] NV12 with DRM_FORMAT_MOD_SAMSUNG_64_32_TILE [15:56:42] [PASSED] NV12 Valid modifiers without DRM_MODE_FB_MODIFIERS [15:56:42] [PASSED] NV12 Modifier for inexistent plane [15:56:42] [PASSED] NV12 Handle for inexistent plane [15:56:42] [PASSED] NV12 Handle for inexistent plane without DRM_MODE_FB_MODIFIERS [15:56:42] [PASSED] YVU420 DRM_MODE_FB_MODIFIERS set without modifier [15:56:42] [PASSED] YVU420 Normal sizes [15:56:42] [PASSED] YVU420 Max sizes [15:56:42] [PASSED] YVU420 Invalid pitch [15:56:42] [PASSED] YVU420 Different pitches [15:56:42] [PASSED] YVU420 Different buffer offsets/pitches [15:56:42] [PASSED] YVU420 Modifier set just for plane 0, without DRM_MODE_FB_MODIFIERS [15:56:42] [PASSED] YVU420 Modifier set just for planes 0, 1, without DRM_MODE_FB_MODIFIERS [15:56:42] [PASSED] YVU420 Modifier set just for plane 0, 1, with DRM_MODE_FB_MODIFIERS [15:56:42] [PASSED] YVU420 Valid modifier [15:56:42] [PASSED] YVU420 Different modifiers per plane [15:56:42] [PASSED] YVU420 Modifier for inexistent plane [15:56:42] [PASSED] YUV420_10BIT Invalid modifier(DRM_FORMAT_MOD_LINEAR) [15:56:42] [PASSED] X0L2 Normal sizes [15:56:42] [PASSED] X0L2 Max sizes [15:56:42] [PASSED] X0L2 Invalid pitch [15:56:42] [PASSED] X0L2 Pitch greater than minimum required [15:56:42] [PASSED] X0L2 Handle for inexistent plane [15:56:42] [PASSED] X0L2 Offset for inexistent plane, without DRM_MODE_FB_MODIFIERS set [15:56:42] [PASSED] X0L2 Modifier without DRM_MODE_FB_MODIFIERS set [15:56:42] [PASSED] X0L2 Valid modifier [15:56:42] [PASSED] X0L2 Modifier for inexistent plane [15:56:42] =========== [PASSED] drm_test_framebuffer_create =========== [15:56:42] [PASSED] drm_test_framebuffer_free [15:56:42] [PASSED] drm_test_framebuffer_init [15:56:42] [PASSED] drm_test_framebuffer_init_bad_format [15:56:42] [PASSED] drm_test_framebuffer_init_dev_mismatch [15:56:42] [PASSED] drm_test_framebuffer_lookup [15:56:42] [PASSED] drm_test_framebuffer_lookup_inexistent [15:56:42] [PASSED] drm_test_framebuffer_modifiers_not_supported [15:56:42] ================= [PASSED] drm_framebuffer ================= [15:56:42] ================ drm_gem_shmem (8 subtests) ================ [15:56:42] [PASSED] drm_gem_shmem_test_obj_create [15:56:42] [PASSED] drm_gem_shmem_test_obj_create_private [15:56:42] [PASSED] drm_gem_shmem_test_pin_pages [15:56:42] [PASSED] drm_gem_shmem_test_vmap [15:56:42] [PASSED] drm_gem_shmem_test_get_sg_table [15:56:42] [PASSED] drm_gem_shmem_test_get_pages_sgt [15:56:42] [PASSED] drm_gem_shmem_test_madvise [15:56:42] [PASSED] drm_gem_shmem_test_purge [15:56:42] ================== [PASSED] drm_gem_shmem ================== [15:56:42] === drm_atomic_helper_connector_hdmi_check (27 subtests) === [15:56:42] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode [15:56:42] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode_vic_1 [15:56:42] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode [15:56:42] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode_vic_1 [15:56:42] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode [15:56:42] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode_vic_1 [15:56:42] ====== drm_test_check_broadcast_rgb_cea_mode_yuv420 ======= [15:56:42] [PASSED] Automatic [15:56:42] [PASSED] Full [15:56:42] [PASSED] Limited 16:235 [15:56:42] == [PASSED] drm_test_check_broadcast_rgb_cea_mode_yuv420 === [15:56:42] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_changed [15:56:42] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_not_changed [15:56:42] [PASSED] drm_test_check_disable_connector [15:56:42] [PASSED] drm_test_check_hdmi_funcs_reject_rate [15:56:42] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_rgb [15:56:42] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_yuv420 [15:56:42] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv422 [15:56:42] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv420 [15:56:42] [PASSED] drm_test_check_driver_unsupported_fallback_yuv420 [15:56:42] [PASSED] drm_test_check_output_bpc_crtc_mode_changed [15:56:42] [PASSED] drm_test_check_output_bpc_crtc_mode_not_changed [15:56:42] [PASSED] drm_test_check_output_bpc_dvi [15:56:42] [PASSED] drm_test_check_output_bpc_format_vic_1 [15:56:42] [PASSED] drm_test_check_output_bpc_format_display_8bpc_only [15:56:42] [PASSED] drm_test_check_output_bpc_format_display_rgb_only [15:56:42] [PASSED] drm_test_check_output_bpc_format_driver_8bpc_only [15:56:42] [PASSED] drm_test_check_output_bpc_format_driver_rgb_only [15:56:42] [PASSED] drm_test_check_tmds_char_rate_rgb_8bpc [15:56:42] [PASSED] drm_test_check_tmds_char_rate_rgb_10bpc [15:56:42] [PASSED] drm_test_check_tmds_char_rate_rgb_12bpc [15:56:42] ===== [PASSED] drm_atomic_helper_connector_hdmi_check ====== [15:56:42] === drm_atomic_helper_connector_hdmi_reset (6 subtests) ==== [15:56:42] [PASSED] drm_test_check_broadcast_rgb_value [15:56:42] [PASSED] drm_test_check_bpc_8_value [15:56:42] [PASSED] drm_test_check_bpc_10_value [15:56:42] [PASSED] drm_test_check_bpc_12_value [15:56:42] [PASSED] drm_test_check_format_value [15:56:42] [PASSED] drm_test_check_tmds_char_value [15:56:42] ===== [PASSED] drm_atomic_helper_connector_hdmi_reset ====== [15:56:42] = drm_atomic_helper_connector_hdmi_mode_valid (4 subtests) = [15:56:42] [PASSED] drm_test_check_mode_valid [15:56:42] [PASSED] drm_test_check_mode_valid_reject [15:56:42] [PASSED] drm_test_check_mode_valid_reject_rate [15:56:42] [PASSED] drm_test_check_mode_valid_reject_max_clock [15:56:42] === [PASSED] drm_atomic_helper_connector_hdmi_mode_valid === [15:56:42] = drm_atomic_helper_connector_hdmi_infoframes (5 subtests) = [15:56:42] [PASSED] drm_test_check_infoframes [15:56:42] [PASSED] drm_test_check_reject_avi_infoframe [15:56:42] [PASSED] drm_test_check_reject_hdr_infoframe_bpc_8 [15:56:42] [PASSED] drm_test_check_reject_hdr_infoframe_bpc_10 [15:56:42] [PASSED] drm_test_check_reject_audio_infoframe [15:56:42] === [PASSED] drm_atomic_helper_connector_hdmi_infoframes === [15:56:42] ================= drm_managed (2 subtests) ================= [15:56:42] [PASSED] drm_test_managed_release_action [15:56:42] [PASSED] drm_test_managed_run_action [15:56:42] =================== [PASSED] drm_managed =================== [15:56:42] =================== drm_mm (6 subtests) ==================== [15:56:42] [PASSED] drm_test_mm_init [15:56:42] [PASSED] drm_test_mm_debug [15:56:42] [PASSED] drm_test_mm_align32 [15:56:42] [PASSED] drm_test_mm_align64 [15:56:42] [PASSED] drm_test_mm_lowest [15:56:42] [PASSED] drm_test_mm_highest [15:56:42] ===================== [PASSED] drm_mm ====================== [15:56:42] ============= drm_modes_analog_tv (5 subtests) ============= [15:56:42] [PASSED] drm_test_modes_analog_tv_mono_576i [15:56:42] [PASSED] drm_test_modes_analog_tv_ntsc_480i [15:56:42] [PASSED] drm_test_modes_analog_tv_ntsc_480i_inlined [15:56:42] [PASSED] drm_test_modes_analog_tv_pal_576i [15:56:42] [PASSED] drm_test_modes_analog_tv_pal_576i_inlined [15:56:42] =============== [PASSED] drm_modes_analog_tv =============== [15:56:42] ============== drm_plane_helper (2 subtests) =============== [15:56:42] =============== drm_test_check_plane_state ================ [15:56:42] [PASSED] clipping_simple [15:56:42] [PASSED] clipping_rotate_reflect [15:56:42] [PASSED] positioning_simple [15:56:42] [PASSED] upscaling [15:56:42] [PASSED] downscaling [15:56:42] [PASSED] rounding1 [15:56:42] [PASSED] rounding2 [15:56:42] [PASSED] rounding3 [15:56:42] [PASSED] rounding4 [15:56:42] =========== [PASSED] drm_test_check_plane_state ============ [15:56:42] =========== drm_test_check_invalid_plane_state ============ [15:56:42] [PASSED] positioning_invalid [15:56:42] [PASSED] upscaling_invalid [15:56:42] [PASSED] downscaling_invalid [15:56:42] ======= [PASSED] drm_test_check_invalid_plane_state ======== [15:56:42] ================ [PASSED] drm_plane_helper ================= [15:56:42] ====== drm_connector_helper_tv_get_modes (1 subtest) ======= [15:56:42] ====== drm_test_connector_helper_tv_get_modes_check ======= [15:56:42] [PASSED] None [15:56:42] [PASSED] PAL [15:56:42] [PASSED] NTSC [15:56:42] [PASSED] Both, NTSC Default [15:56:42] [PASSED] Both, PAL Default [15:56:42] [PASSED] Both, NTSC Default, with PAL on command-line [15:56:42] [PASSED] Both, PAL Default, with NTSC on command-line [15:56:42] == [PASSED] drm_test_connector_helper_tv_get_modes_check === [15:56:42] ======== [PASSED] drm_connector_helper_tv_get_modes ======== [15:56:42] ================== drm_rect (9 subtests) =================== [15:56:42] [PASSED] drm_test_rect_clip_scaled_div_by_zero [15:56:42] [PASSED] drm_test_rect_clip_scaled_not_clipped [15:56:42] [PASSED] drm_test_rect_clip_scaled_clipped [15:56:42] [PASSED] drm_test_rect_clip_scaled_signed_vs_unsigned [15:56:42] ================= drm_test_rect_intersect ================= [15:56:42] [PASSED] top-left x bottom-right: 2x2+1+1 x 2x2+0+0 [15:56:42] [PASSED] top-right x bottom-left: 2x2+0+0 x 2x2+1-1 [15:56:42] [PASSED] bottom-left x top-right: 2x2+1-1 x 2x2+0+0 [15:56:42] [PASSED] bottom-right x top-left: 2x2+0+0 x 2x2+1+1 [15:56:42] [PASSED] right x left: 2x1+0+0 x 3x1+1+0 [15:56:42] [PASSED] left x right: 3x1+1+0 x 2x1+0+0 [15:56:42] [PASSED] up x bottom: 1x2+0+0 x 1x3+0-1 [15:56:42] [PASSED] bottom x up: 1x3+0-1 x 1x2+0+0 [15:56:42] [PASSED] touching corner: 1x1+0+0 x 2x2+1+1 [15:56:42] [PASSED] touching side: 1x1+0+0 x 1x1+1+0 [15:56:42] [PASSED] equal rects: 2x2+0+0 x 2x2+0+0 [15:56:42] [PASSED] inside another: 2x2+0+0 x 1x1+1+1 [15:56:42] [PASSED] far away: 1x1+0+0 x 1x1+3+6 [15:56:42] [PASSED] points intersecting: 0x0+5+10 x 0x0+5+10 [15:56:42] [PASSED] points not intersecting: 0x0+0+0 x 0x0+5+10 [15:56:42] ============= [PASSED] drm_test_rect_intersect ============= [15:56:42] ================ drm_test_rect_calc_hscale ================ [15:56:42] [PASSED] normal use [15:56:42] [PASSED] out of max range [15:56:42] [PASSED] out of min range [15:56:42] [PASSED] zero dst [15:56:42] [PASSED] negative src [15:56:42] [PASSED] negative dst [15:56:42] ============ [PASSED] drm_test_rect_calc_hscale ============ [15:56:42] ================ drm_test_rect_calc_vscale ================ [15:56:42] [PASSED] normal use [15:56:42] [PASSED] out of max range [15:56:42] [PASSED] out of min range [15:56:42] [PASSED] zero dst [15:56:42] [PASSED] negative src [15:56:42] [PASSED] negative dst [15:56:42] ============ [PASSED] drm_test_rect_calc_vscale ============ [15:56:42] ================== drm_test_rect_rotate =================== [15:56:42] [PASSED] reflect-x [15:56:42] [PASSED] reflect-y [15:56:42] [PASSED] rotate-0 [15:56:42] [PASSED] rotate-90 [15:56:42] [PASSED] rotate-180 [15:56:42] [PASSED] rotate-270 [15:56:42] ============== [PASSED] drm_test_rect_rotate =============== [15:56:42] ================ drm_test_rect_rotate_inv ================= [15:56:42] [PASSED] reflect-x [15:56:42] [PASSED] reflect-y [15:56:42] [PASSED] rotate-0 [15:56:42] [PASSED] rotate-90 [15:56:42] [PASSED] rotate-180 [15:56:42] [PASSED] rotate-270 [15:56:42] ============ [PASSED] drm_test_rect_rotate_inv ============= [15:56:42] ==================== [PASSED] drm_rect ===================== [15:56:42] ============ drm_sysfb_modeset_test (1 subtest) ============ [15:56:42] ============ drm_test_sysfb_build_fourcc_list ============= [15:56:42] [PASSED] no native formats [15:56:42] [PASSED] XRGB8888 as native format [15:56:42] [PASSED] remove duplicates [15:56:42] [PASSED] convert alpha formats [15:56:42] [PASSED] random formats [15:56:42] ======== [PASSED] drm_test_sysfb_build_fourcc_list ========= [15:56:42] ============= [PASSED] drm_sysfb_modeset_test ============== [15:56:42] ================== drm_fixp (2 subtests) =================== [15:56:42] [PASSED] drm_test_int2fixp [15:56:42] [PASSED] drm_test_sm2fixp [15:56:42] ==================== [PASSED] drm_fixp ===================== [15:56:42] ============================================================ [15:56:42] Testing complete. Ran 621 tests: passed: 621 [15:56:42] Elapsed time: 26.035s total, 1.692s configuring, 24.177s building, 0.131s running
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/ttm/tests/.kunitconfig [15:56:42] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig [15:56:44] Building KUnit Kernel ... Populating config with: $ make ARCH=um O=.kunit olddefconfig Building with: $ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48 [15:56:53] Starting KUnit Kernel (1/1)... [15:56:53] ============================================================ Running tests with: $ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt [15:56:54] ================= ttm_device (5 subtests) ================== [15:56:54] [PASSED] ttm_device_init_basic [15:56:54] [PASSED] ttm_device_init_multiple [15:56:54] [PASSED] ttm_device_fini_basic [15:56:54] [PASSED] ttm_device_init_no_vma_man [15:56:54] ================== ttm_device_init_pools ================== [15:56:54] [PASSED] No DMA allocations, no DMA32 required [15:56:54] [PASSED] DMA allocations, DMA32 required [15:56:54] [PASSED] No DMA allocations, DMA32 required [15:56:54] [PASSED] DMA allocations, no DMA32 required [15:56:54] ============== [PASSED] ttm_device_init_pools ============== [15:56:54] =================== [PASSED] ttm_device ==================== [15:56:54] ================== ttm_pool (8 subtests) =================== [15:56:54] ================== ttm_pool_alloc_basic =================== [15:56:54] [PASSED] One page [15:56:54] [PASSED] More than one page [15:56:54] [PASSED] Above the allocation limit [15:56:54] [PASSED] One page, with coherent DMA mappings enabled [15:56:54] [PASSED] Above the allocation limit, with coherent DMA mappings enabled [15:56:54] ============== [PASSED] ttm_pool_alloc_basic =============== [15:56:54] ============== ttm_pool_alloc_basic_dma_addr ============== [15:56:54] [PASSED] One page [15:56:54] [PASSED] More than one page [15:56:54] [PASSED] Above the allocation limit [15:56:54] [PASSED] One page, with coherent DMA mappings enabled [15:56:54] [PASSED] Above the allocation limit, with coherent DMA mappings enabled [15:56:54] ========== [PASSED] ttm_pool_alloc_basic_dma_addr ========== [15:56:54] [PASSED] ttm_pool_alloc_order_caching_match [15:56:54] [PASSED] ttm_pool_alloc_caching_mismatch [15:56:54] [PASSED] ttm_pool_alloc_order_mismatch [15:56:54] [PASSED] ttm_pool_free_dma_alloc [15:56:54] [PASSED] ttm_pool_free_no_dma_alloc [15:56:54] [PASSED] ttm_pool_fini_basic [15:56:54] ==================== [PASSED] ttm_pool ===================== [15:56:54] ================ ttm_resource (8 subtests) ================= [15:56:54] ================= ttm_resource_init_basic ================= [15:56:54] [PASSED] Init resource in TTM_PL_SYSTEM [15:56:54] [PASSED] Init resource in TTM_PL_VRAM [15:56:54] [PASSED] Init resource in a private placement [15:56:54] [PASSED] Init resource in TTM_PL_SYSTEM, set placement flags [15:56:54] ============= [PASSED] ttm_resource_init_basic ============= [15:56:54] [PASSED] ttm_resource_init_pinned [15:56:54] [PASSED] ttm_resource_fini_basic [15:56:54] [PASSED] ttm_resource_manager_init_basic [15:56:54] [PASSED] ttm_resource_manager_usage_basic [15:56:54] [PASSED] ttm_resource_manager_set_used_basic [15:56:54] [PASSED] ttm_sys_man_alloc_basic [15:56:54] [PASSED] ttm_sys_man_free_basic [15:56:54] ================== [PASSED] ttm_resource =================== [15:56:54] =================== ttm_tt (15 subtests) =================== [15:56:54] ==================== ttm_tt_init_basic ==================== [15:56:54] [PASSED] Page-aligned size [15:56:54] [PASSED] Extra pages requested [15:56:54] ================ [PASSED] ttm_tt_init_basic ================ [15:56:54] [PASSED] ttm_tt_init_misaligned [15:56:54] [PASSED] ttm_tt_fini_basic [15:56:54] [PASSED] ttm_tt_fini_sg [15:56:54] [PASSED] ttm_tt_fini_shmem [15:56:54] [PASSED] ttm_tt_create_basic [15:56:54] [PASSED] ttm_tt_create_invalid_bo_type [15:56:54] [PASSED] ttm_tt_create_ttm_exists [15:56:54] [PASSED] ttm_tt_create_failed [15:56:54] [PASSED] ttm_tt_destroy_basic [15:56:54] [PASSED] ttm_tt_populate_null_ttm [15:56:54] [PASSED] ttm_tt_populate_populated_ttm [15:56:54] [PASSED] ttm_tt_unpopulate_basic [15:56:54] [PASSED] ttm_tt_unpopulate_empty_ttm [15:56:54] [PASSED] ttm_tt_swapin_basic [15:56:54] ===================== [PASSED] ttm_tt ====================== [15:56:54] =================== ttm_bo (14 subtests) =================== [15:56:54] =========== ttm_bo_reserve_optimistic_no_ticket =========== [15:56:54] [PASSED] Cannot be interrupted and sleeps [15:56:54] [PASSED] Cannot be interrupted, locks straight away [15:56:54] [PASSED] Can be interrupted, sleeps [15:56:54] ======= [PASSED] ttm_bo_reserve_optimistic_no_ticket ======= [15:56:54] [PASSED] ttm_bo_reserve_locked_no_sleep [15:56:54] [PASSED] ttm_bo_reserve_no_wait_ticket [15:56:54] [PASSED] ttm_bo_reserve_double_resv [15:56:54] [PASSED] ttm_bo_reserve_interrupted [15:56:54] [PASSED] ttm_bo_reserve_deadlock [15:56:54] [PASSED] ttm_bo_unreserve_basic [15:56:54] [PASSED] ttm_bo_unreserve_pinned [15:56:54] [PASSED] ttm_bo_unreserve_bulk [15:56:54] [PASSED] ttm_bo_fini_basic [15:56:54] [PASSED] ttm_bo_fini_shared_resv [15:56:54] [PASSED] ttm_bo_pin_basic [15:56:54] [PASSED] ttm_bo_pin_unpin_resource [15:56:54] [PASSED] ttm_bo_multiple_pin_one_unpin [15:56:54] ===================== [PASSED] ttm_bo ====================== [15:56:54] ============== ttm_bo_validate (22 subtests) =============== [15:56:54] ============== ttm_bo_init_reserved_sys_man =============== [15:56:54] [PASSED] Buffer object for userspace [15:56:54] [PASSED] Kernel buffer object [15:56:54] [PASSED] Shared buffer object [15:56:54] ========== [PASSED] ttm_bo_init_reserved_sys_man =========== [15:56:54] ============== ttm_bo_init_reserved_mock_man ============== [15:56:54] [PASSED] Buffer object for userspace [15:56:54] [PASSED] Kernel buffer object [15:56:54] [PASSED] Shared buffer object [15:56:54] ========== [PASSED] ttm_bo_init_reserved_mock_man ========== [15:56:54] [PASSED] ttm_bo_init_reserved_resv [15:56:54] ================== ttm_bo_validate_basic ================== [15:56:54] [PASSED] Buffer object for userspace [15:56:54] [PASSED] Kernel buffer object [15:56:54] [PASSED] Shared buffer object [15:56:54] ============== [PASSED] ttm_bo_validate_basic ============== [15:56:54] [PASSED] ttm_bo_validate_invalid_placement [15:56:54] ============= ttm_bo_validate_same_placement ============== [15:56:54] [PASSED] System manager [15:56:54] [PASSED] VRAM manager [15:56:54] ========= [PASSED] ttm_bo_validate_same_placement ========== [15:56:54] [PASSED] ttm_bo_validate_failed_alloc [15:56:54] [PASSED] ttm_bo_validate_pinned [15:56:54] [PASSED] ttm_bo_validate_busy_placement [15:56:54] ================ ttm_bo_validate_multihop ================= [15:56:54] [PASSED] Buffer object for userspace [15:56:54] [PASSED] Kernel buffer object [15:56:54] [PASSED] Shared buffer object [15:56:54] ============ [PASSED] ttm_bo_validate_multihop ============= [15:56:54] ========== ttm_bo_validate_no_placement_signaled ========== [15:56:54] [PASSED] Buffer object in system domain, no page vector [15:56:54] [PASSED] Buffer object in system domain with an existing page vector [15:56:54] ====== [PASSED] ttm_bo_validate_no_placement_signaled ====== [15:56:54] ======== ttm_bo_validate_no_placement_not_signaled ======== [15:56:54] [PASSED] Buffer object for userspace [15:56:54] [PASSED] Kernel buffer object [15:56:54] [PASSED] Shared buffer object [15:56:54] ==== [PASSED] ttm_bo_validate_no_placement_not_signaled ==== [15:56:54] [PASSED] ttm_bo_validate_move_fence_signaled [15:56:54] ========= ttm_bo_validate_move_fence_not_signaled ========= [15:56:54] [PASSED] Waits for GPU [15:56:54] [PASSED] Tries to lock straight away [15:56:54] ===== [PASSED] ttm_bo_validate_move_fence_not_signaled ===== [15:56:54] [PASSED] ttm_bo_validate_swapout [15:56:54] [PASSED] ttm_bo_validate_happy_evict [15:56:54] [PASSED] ttm_bo_validate_all_pinned_evict [15:56:54] [PASSED] ttm_bo_validate_allowed_only_evict [15:56:54] [PASSED] ttm_bo_validate_deleted_evict [15:56:54] [PASSED] ttm_bo_validate_busy_domain_evict [15:56:54] [PASSED] ttm_bo_validate_evict_gutting [15:56:54] [PASSED] ttm_bo_validate_recrusive_evict [15:56:54] ================= [PASSED] ttm_bo_validate ================= [15:56:54] ============================================================ [15:56:54] Testing complete. Ran 102 tests: passed: 102 [15:56:54] Elapsed time: 11.688s total, 1.761s configuring, 9.712s building, 0.186s running
+ cleanup
++ stat -c %u:%g /kernel
+ chown -R 1003:1003 /kernel
Patchwork
CI✓ Xe.CI.BAT: success for drm/xe: Fix LR exec queue suspend/resume for S3/S4 (rev3)
In reply to Thomas Hellström== Series Details ==
== Series Details ==
Series: drm/xe: Fix LR exec queue suspend/resume for S3/S4 (rev3)
URL : https://patchwork.freedesktop.org/series/167032/
State : success
== Summary ==
CI Bug Log - changes from xe-5124-04d475020800d0a1033ca89a0d6d5fc638ddc65b_BAT -> xe-pw-167032v3_BAT
====================================================
Summary
-------
**SUCCESS**
No regressions found.
Participating hosts (13 -> 13)
------------------------------
No changes in participating hosts
Changes
-------
No changes found
Build changes
-------------
* Linux: xe-5124-04d475020800d0a1033ca89a0d6d5fc638ddc65b -> xe-pw-167032v3
IGT_8936: 98b65acc4f6edf68cd52b30f27b83049c4c5c83b @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
xe-5124-04d475020800d0a1033ca89a0d6d5fc638ddc65b: 04d475020800d0a1033ca89a0d6d5fc638ddc65b
xe-pw-167032v3: 167032v3
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/index.html
Patchwork
CI✗ Xe.CI.FULL: failure for drm/xe: Fix LR exec queue suspend/resume for S3/S4 (rev3)
In reply to Thomas Hellström== Series Details ==
== Series Details ==
Series: drm/xe: Fix LR exec queue suspend/resume for S3/S4 (rev3)
URL : https://patchwork.freedesktop.org/series/167032/
State : failure
== Summary ==
CI Bug Log - changes from xe-5124-04d475020800d0a1033ca89a0d6d5fc638ddc65b_FULL -> xe-pw-167032v3_FULL
====================================================
Summary
-------
**FAILURE**
Serious unknown changes coming with xe-pw-167032v3_FULL absolutely need to be verified manually.
If you think the reported changes have nothing to do with the changes
introduced in xe-pw-167032v3_FULL, please notify your bug team ([email protected]) 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-167032v3_FULL:
### IGT changes ###
#### Possible regressions ####
* igt@kms_cursor_legacy@cursorb-vs-flipa-atomic-transitions-varying-size:
- shard-bmg: NOTRUN -> [DMESG-FAIL][1]
[1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-bmg-2/igt@kms_cursor_legacy@cursorb-vs-flipa-atomic-transitions-varying-size.html
* igt@xe_exec_system_allocator@partial-middle-remap-no-cpu-fault:
- shard-bmg: [PASS][2] -> [FAIL][3]
[2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5124-04d475020800d0a1033ca89a0d6d5fc638ddc65b/shard-bmg-1/igt@[email protected]
[3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-bmg-6/igt@[email protected]
Known issues
------------
Here are the changes found in xe-pw-167032v3_FULL that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@intel_hwmon@hwmon-write:
- shard-bmg: NOTRUN -> [FAIL][4] ([Intel XE#7445])
[4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-bmg-8/igt@[email protected]
* igt@kms_async_flips@alternate-sync-async-flip@pipe-a-edp-1:
- shard-lnl: [PASS][5] -> [FAIL][6] ([Intel XE#3718] / [Intel XE#7265]) +1 other test fail
[5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5124-04d475020800d0a1033ca89a0d6d5fc638ddc65b/shard-lnl-4/igt@kms_async_flips@[email protected]
[6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-lnl-5/igt@kms_async_flips@[email protected]
* igt@kms_big_fb@linear-8bpp-rotate-90:
- shard-bmg: NOTRUN -> [SKIP][7] ([Intel XE#2327]) +1 other test skip
[7]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-bmg-8/igt@[email protected]
* igt@kms_big_fb@linear-max-hw-stride-32bpp-rotate-180-hflip:
- shard-lnl: NOTRUN -> [SKIP][8] ([Intel XE#7059] / [Intel XE#7085])
[8]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-lnl-8/igt@[email protected]
- shard-bmg: NOTRUN -> [SKIP][9] ([Intel XE#7059] / [Intel XE#7085])
[9]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-bmg-10/igt@[email protected]
* igt@kms_big_fb@x-tiled-64bpp-rotate-270:
- shard-lnl: NOTRUN -> [SKIP][10] ([Intel XE#1407])
[10]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-lnl-8/igt@[email protected]
* igt@kms_big_fb@y-tiled-64bpp-rotate-0:
- shard-bmg: NOTRUN -> [SKIP][11] ([Intel XE#1124]) +1 other test skip
[11]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-bmg-8/igt@[email protected]
* igt@kms_big_fb@y-tiled-64bpp-rotate-270:
- shard-lnl: NOTRUN -> [SKIP][12] ([Intel XE#1124]) +4 other tests skip
[12]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-lnl-8/igt@[email protected]
* igt@kms_big_fb@yf-tiled-addfb:
- shard-lnl: NOTRUN -> [SKIP][13] ([Intel XE#1467] / [Intel XE#7367])
[13]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-lnl-7/igt@[email protected]
* igt@kms_bw@connected-linear-tiling-2-displays-target-3840x2160p:
- shard-bmg: NOTRUN -> [SKIP][14] ([Intel XE#7679]) +1 other test skip
[14]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-bmg-2/igt@[email protected]
* igt@kms_bw@linear-tiling-2-displays-target-1920x1080p:
- shard-lnl: NOTRUN -> [SKIP][15] ([Intel XE#367])
[15]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-lnl-7/igt@[email protected]
* igt@kms_ccs@bad-pixel-format-4-tiled-dg2-mc-ccs:
- shard-bmg: NOTRUN -> [SKIP][16] ([Intel XE#2887]) +9 other tests skip
[16]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-bmg-2/igt@[email protected]
* igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs@pipe-a-edp-1:
- shard-lnl: NOTRUN -> [SKIP][17] ([Intel XE#2669] / [Intel XE#3433] / [Intel XE#7389]) +3 other tests skip
[17]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-lnl-8/igt@kms_ccs@[email protected]
* igt@kms_ccs@crc-primary-suspend-4-tiled-dg2-rc-ccs-cc:
- shard-bmg: NOTRUN -> [SKIP][18] ([Intel XE#3432])
[18]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-bmg-8/igt@[email protected]
* igt@kms_ccs@crc-sprite-planes-basic-y-tiled-gen12-rc-ccs-cc:
- shard-lnl: NOTRUN -> [SKIP][19] ([Intel XE#2887]) +7 other tests skip
[19]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-lnl-7/igt@[email protected]
* igt@kms_cdclk@plane-scaling:
- shard-lnl: NOTRUN -> [SKIP][20] ([Intel XE#4416] / [Intel XE#7381]) +3 other tests skip
[20]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-lnl-7/igt@[email protected]
* igt@kms_chamelium_color@gamma:
- shard-bmg: NOTRUN -> [SKIP][21] ([Intel XE#2325] / [Intel XE#7358]) +1 other test skip
[21]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-bmg-8/igt@[email protected]
* igt@kms_chamelium_frames@hdmi-crc-fast:
- shard-bmg: NOTRUN -> [SKIP][22] ([Intel XE#2252])
[22]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-bmg-8/igt@[email protected]
* igt@kms_chamelium_hpd@hdmi-hpd-for-each-pipe:
- shard-lnl: NOTRUN -> [SKIP][23] ([Intel XE#373]) +3 other tests skip
[23]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-lnl-7/igt@[email protected]
* igt@kms_color_pipeline@plane-lut3d-green-only:
- shard-lnl: NOTRUN -> [SKIP][24] ([Intel XE#6969] / [Intel XE#7006]) +1 other test skip
[24]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-lnl-8/igt@[email protected]
* igt@kms_color_pipeline@plane-lut3d-green-only@pipe-a-plane-1:
- shard-lnl: NOTRUN -> [SKIP][25] ([Intel XE#6969]) +7 other tests skip
[25]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-lnl-8/igt@kms_color_pipeline@[email protected]
* igt@kms_content_protection@dp-mst-type-0:
- shard-lnl: NOTRUN -> [SKIP][26] ([Intel XE#307] / [Intel XE#6974])
[26]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-lnl-7/igt@[email protected]
* igt@kms_content_protection@dp-mst-type-1:
- shard-bmg: NOTRUN -> [SKIP][27] ([Intel XE#2390] / [Intel XE#6974])
[27]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-bmg-4/igt@[email protected]
* igt@kms_content_protection@suspend-resume@pipe-a-dp-2:
- shard-bmg: NOTRUN -> [FAIL][28] ([Intel XE#1178] / [Intel XE#3304] / [Intel XE#7374]) +3 other tests fail
[28]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-bmg-8/igt@kms_content_protection@[email protected]
* igt@kms_content_protection@type1:
- shard-lnl: NOTRUN -> [SKIP][29] ([Intel XE#7642])
[29]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-lnl-7/igt@[email protected]
* igt@kms_cursor_crc@cursor-rapid-movement-32x10:
- shard-bmg: NOTRUN -> [SKIP][30] ([Intel XE#2320]) +1 other test skip
[30]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-bmg-8/igt@[email protected]
* igt@kms_cursor_crc@cursor-rapid-movement-512x170:
- shard-bmg: NOTRUN -> [SKIP][31] ([Intel XE#2321] / [Intel XE#7355])
[31]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-bmg-2/igt@[email protected]
* igt@kms_cursor_crc@cursor-sliding-max-size:
- shard-lnl: NOTRUN -> [SKIP][32] ([Intel XE#1424]) +2 other tests skip
[32]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-lnl-7/igt@[email protected]
* igt@kms_cursor_legacy@cursora-vs-flipb-legacy:
- shard-lnl: NOTRUN -> [SKIP][33] ([Intel XE#309] / [Intel XE#7343]) +3 other tests skip
[33]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-lnl-8/igt@[email protected]
* igt@kms_dp_link_training@uhbr-mst:
- shard-lnl: NOTRUN -> [SKIP][34] ([Intel XE#4354] / [Intel XE#7386])
[34]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-lnl-7/igt@[email protected]
* igt@kms_dp_linktrain_fallback@dp-fallback:
- shard-lnl: NOTRUN -> [SKIP][35] ([Intel XE#4294] / [Intel XE#7477])
[35]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-lnl-7/igt@[email protected]
* igt@kms_dp_linktrain_fallback@dsc-fallback:
- shard-bmg: NOTRUN -> [SKIP][36] ([Intel XE#4331] / [Intel XE#7227])
[36]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-bmg-8/igt@[email protected]
* igt@kms_dsc@dsc-with-output-formats:
- shard-bmg: NOTRUN -> [SKIP][37] ([Intel XE#2244])
[37]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-bmg-8/igt@[email protected]
* igt@kms_fbc_dirty_rect@fbc-dirty-rectangle-out-visible-area:
- shard-lnl: NOTRUN -> [SKIP][38] ([Intel XE#4422] / [Intel XE#7442])
[38]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-lnl-8/igt@[email protected]
* igt@kms_feature_discovery@psr2:
- shard-bmg: NOTRUN -> [SKIP][39] ([Intel XE#2374] / [Intel XE#6128])
[39]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-bmg-8/igt@[email protected]
* igt@kms_flip@2x-plain-flip-ts-check:
- shard-lnl: NOTRUN -> [SKIP][40] ([Intel XE#1421]) +4 other tests skip
[40]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-lnl-8/igt@[email protected]
* igt@kms_flip@flip-vs-expired-vblank@b-edp1:
- shard-lnl: [PASS][41] -> [FAIL][42] ([Intel XE#301])
[41]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5124-04d475020800d0a1033ca89a0d6d5fc638ddc65b/shard-lnl-1/igt@kms_flip@[email protected]
[42]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-lnl-8/igt@kms_flip@[email protected]
* igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-32bpp-4tiledg2rcccs-upscaling:
- shard-bmg: NOTRUN -> [SKIP][43] ([Intel XE#7178] / [Intel XE#7349])
[43]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-bmg-10/igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-32bpp-4tiledg2rcccs-upscaling.html
* igt@kms_flip_scaled_crc@flip-32bpp-xtile-to-64bpp-xtile-downscaling:
- shard-lnl: NOTRUN -> [SKIP][44] ([Intel XE#1397] / [Intel XE#1745] / [Intel XE#7385])
[44]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-lnl-8/igt@kms_flip_scaled_crc@flip-32bpp-xtile-to-64bpp-xtile-downscaling.html
* igt@kms_flip_scaled_crc@flip-32bpp-xtile-to-64bpp-xtile-downscaling@pipe-a-default-mode:
- shard-lnl: NOTRUN -> [SKIP][45] ([Intel XE#1397] / [Intel XE#7385])
[45]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-lnl-8/igt@kms_flip_scaled_crc@flip-32bpp-xtile-to-64bpp-xtile-downscaling@pipe-a-default-mode.html
* igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-64bpp-yftile-upscaling:
- shard-lnl: NOTRUN -> [SKIP][46] ([Intel XE#7178] / [Intel XE#7351]) +1 other test skip
[46]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-lnl-7/igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-64bpp-yftile-upscaling.html
* igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-32bpp-yftile-downscaling:
- shard-bmg: NOTRUN -> [SKIP][47] ([Intel XE#7178] / [Intel XE#7351])
[47]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-bmg-8/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-32bpp-yftile-downscaling.html
* igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-spr-indfb-draw-blt:
- shard-bmg: NOTRUN -> [SKIP][48] ([Intel XE#2311]) +31 other tests skip
[48]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-bmg-2/igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-spr-indfb-draw-blt.html
* igt@kms_frontbuffer_tracking@drrs-argb161616f-draw-mmap-wc:
- shard-bmg: NOTRUN -> [SKIP][49] ([Intel XE#7061] / [Intel XE#7356]) +1 other test skip
[49]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-bmg-8/igt@[email protected]
* igt@kms_frontbuffer_tracking@fbc-1p-offscreen-pri-shrfb-draw-blt:
- shard-bmg: NOTRUN -> [SKIP][50] ([Intel XE#4141]) +10 other tests skip
[50]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-bmg-2/igt@kms_frontbuffer_tracking@fbc-1p-offscreen-pri-shrfb-draw-blt.html
* igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-shrfb-draw-blt:
- shard-lnl: NOTRUN -> [SKIP][51] ([Intel XE#656] / [Intel XE#7905]) +20 other tests skip
[51]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-lnl-7/igt@[email protected]
* igt@kms_frontbuffer_tracking@fbcdrrs-modesetfrombusy:
- shard-lnl: NOTRUN -> [SKIP][52] ([Intel XE#6312] / [Intel XE#651]) +6 other tests skip
[52]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-lnl-7/igt@[email protected]
* igt@kms_frontbuffer_tracking@fbcdrrshdr-1p-primscrn-spr-indfb-draw-render:
- shard-lnl: NOTRUN -> [SKIP][53] ([Intel XE#6312]) +7 other tests skip
[53]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-lnl-7/igt@kms_frontbuffer_tracking@fbcdrrshdr-1p-primscrn-spr-indfb-draw-render.html
* igt@kms_frontbuffer_tracking@fbchdr-2p-scndscrn-spr-indfb-draw-render:
- shard-lnl: NOTRUN -> [SKIP][54] ([Intel XE#7905]) +20 other tests skip
[54]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-lnl-7/igt@kms_frontbuffer_tracking@fbchdr-2p-scndscrn-spr-indfb-draw-render.html
* igt@kms_frontbuffer_tracking@fbchdr-abgr161616f-draw-mmap-wc:
- shard-bmg: NOTRUN -> [SKIP][55] ([Intel XE#7061]) +1 other test skip
[55]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-bmg-8/igt@[email protected]
* igt@kms_frontbuffer_tracking@fbchdr-abgr161616f-draw-render:
- shard-lnl: NOTRUN -> [SKIP][56] ([Intel XE#7061]) +3 other tests skip
[56]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-lnl-8/igt@[email protected]
* igt@kms_frontbuffer_tracking@psr-2p-primscrn-indfb-plflip-blt:
- shard-bmg: NOTRUN -> [SKIP][57] ([Intel XE#2313]) +28 other tests skip
[57]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-bmg-10/igt@[email protected]
* igt@kms_frontbuffer_tracking@psr-2p-scndscrn-spr-indfb-draw-mmap-wc:
- shard-bmg: NOTRUN -> [SKIP][58] ([Intel XE#6703]) +30 other tests skip
[58]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-bmg-2/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-spr-indfb-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@psr-argb161616f-draw-blt:
- shard-lnl: NOTRUN -> [SKIP][59] ([Intel XE#7061] / [Intel XE#7356]) +2 other tests skip
[59]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-lnl-8/igt@[email protected]
* igt@kms_frontbuffer_tracking@psrhdr-1p-primscrn-spr-indfb-move:
- shard-lnl: NOTRUN -> [SKIP][60] ([Intel XE#7865]) +14 other tests skip
[60]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-lnl-7/igt@[email protected]
* igt@kms_hdmi_inject@inject-4k:
- shard-lnl: NOTRUN -> [SKIP][61] ([Intel XE#1470])
[61]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-lnl-7/igt@[email protected]
* igt@kms_hdr@invalid-hdr:
- shard-bmg: [PASS][62] -> [SKIP][63] ([Intel XE#1503])
[62]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5124-04d475020800d0a1033ca89a0d6d5fc638ddc65b/shard-bmg-8/igt@[email protected]
[63]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-bmg-2/igt@[email protected]
* igt@kms_hdr@invalid-hdr@pipe-a-hdmi-a-3-xrgb16161616f:
- shard-bmg: [PASS][64] -> [SKIP][65] ([Intel XE#7922]) +1 other test skip
[64]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5124-04d475020800d0a1033ca89a0d6d5fc638ddc65b/shard-bmg-8/igt@kms_hdr@[email protected]
[65]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-bmg-2/igt@kms_hdr@[email protected]
* igt@kms_hdr@static-toggle-suspend@pipe-a-hdmi-a-3-xrgb16161616f:
- shard-bmg: [PASS][66] -> [SKIP][67] ([Intel XE#7915]) +1 other test skip
[66]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5124-04d475020800d0a1033ca89a0d6d5fc638ddc65b/shard-bmg-2/igt@kms_hdr@[email protected]
[67]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-bmg-8/igt@kms_hdr@[email protected]
* igt@kms_joiner@basic-big-joiner:
- shard-lnl: NOTRUN -> [SKIP][68] ([Intel XE#6901])
[68]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-lnl-8/igt@[email protected]
* igt@kms_joiner@invalid-modeset-ultra-joiner:
- shard-lnl: NOTRUN -> [SKIP][69] ([Intel XE#6900] / [Intel XE#7362])
[69]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-lnl-8/igt@[email protected]
* igt@kms_plane@pixel-format-y-tiled-gen12-rc-ccs-cc-modifier-source-clamping:
- shard-lnl: NOTRUN -> [SKIP][70] ([Intel XE#7283]) +2 other tests skip
[70]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-lnl-8/igt@kms_plane@pixel-format-y-tiled-gen12-rc-ccs-cc-modifier-source-clamping.html
* igt@kms_plane@pixel-format-yf-tiled-modifier:
- shard-bmg: NOTRUN -> [SKIP][71] ([Intel XE#7283]) +2 other tests skip
[71]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-bmg-10/igt@[email protected]
* igt@kms_plane_cursor@primary:
- shard-bmg: [PASS][72] -> [INCOMPLETE][73] ([Intel XE#6652] / [Intel XE#6819] / [Intel XE#8145]) +1 other test incomplete
[72]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5124-04d475020800d0a1033ca89a0d6d5fc638ddc65b/shard-bmg-1/igt@[email protected]
[73]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-bmg-3/igt@[email protected]
* igt@kms_plane_lowres@tiling-y:
- shard-lnl: NOTRUN -> [SKIP][74] ([Intel XE#599])
[74]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-lnl-8/igt@[email protected]
* igt@kms_plane_multiple@tiling-yf:
- shard-lnl: NOTRUN -> [SKIP][75] ([Intel XE#5020] / [Intel XE#7348])
[75]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-lnl-7/igt@[email protected]
* igt@kms_plane_scaling@planes-downscale-factor-0-5-unity-scaling:
- shard-lnl: NOTRUN -> [SKIP][76] ([Intel XE#2763] / [Intel XE#6886]) +3 other tests skip
[76]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-lnl-7/igt@[email protected]
* igt@kms_pm_backlight@bad-brightness:
- shard-bmg: NOTRUN -> [SKIP][77] ([Intel XE#7376] / [Intel XE#7760] / [Intel XE#870])
[77]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-bmg-8/igt@[email protected]
* igt@kms_pm_rpm@modeset-non-lpsp-stress-no-wait:
- shard-lnl: NOTRUN -> [SKIP][78] ([Intel XE#1439] / [Intel XE#3141] / [Intel XE#7383]) +1 other test skip
[78]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-lnl-7/igt@[email protected]
* igt@kms_psr2_sf@fbc-pr-overlay-primary-update-sf-dmg-area:
- shard-lnl: NOTRUN -> [SKIP][79] ([Intel XE#2893] / [Intel XE#7304]) +2 other tests skip
[79]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-lnl-7/igt@[email protected]
* igt@kms_psr2_sf@psr2-plane-move-sf-dmg-area:
- shard-bmg: NOTRUN -> [SKIP][80] ([Intel XE#1489]) +5 other tests skip
[80]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-bmg-2/igt@[email protected]
* igt@kms_psr@pr-sprite-render:
- shard-lnl: NOTRUN -> [SKIP][81] ([Intel XE#1406]) +4 other tests skip
[81]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-lnl-7/igt@[email protected]
* igt@kms_psr@psr-suspend:
- shard-bmg: NOTRUN -> [SKIP][82] ([Intel XE#2234] / [Intel XE#2850]) +6 other tests skip
[82]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-bmg-2/igt@[email protected]
* igt@kms_rotation_crc@primary-y-tiled-reflect-x-90:
- shard-lnl: NOTRUN -> [SKIP][83] ([Intel XE#3414] / [Intel XE#3904] / [Intel XE#7342]) +4 other tests skip
[83]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-lnl-7/igt@[email protected]
* igt@kms_rotation_crc@sprite-rotation-90-pos-100-0:
- shard-bmg: NOTRUN -> [SKIP][84] ([Intel XE#3904] / [Intel XE#7342]) +1 other test skip
[84]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-bmg-8/igt@[email protected]
* igt@kms_setmode@invalid-clone-exclusive-crtc:
- shard-bmg: NOTRUN -> [SKIP][85] ([Intel XE#1435])
[85]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-bmg-8/igt@[email protected]
* igt@kms_sharpness_filter@filter-basic:
- shard-bmg: NOTRUN -> [SKIP][86] ([Intel XE#6503]) +1 other test skip
[86]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-bmg-8/igt@[email protected]
* igt@xe_compute@ccs-mode-compute-kernel:
- shard-lnl: NOTRUN -> [SKIP][87] ([Intel XE#1447] / [Intel XE#7469])
[87]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-lnl-8/igt@[email protected]
* igt@xe_eudebug@basic-vm-access-parameters:
- shard-lnl: NOTRUN -> [SKIP][88] ([Intel XE#7636]) +6 other tests skip
[88]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-lnl-7/igt@[email protected]
* igt@xe_eudebug@basic-vm-bind-metadata-discovery:
- shard-bmg: NOTRUN -> [SKIP][89] ([Intel XE#7636]) +6 other tests skip
[89]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-bmg-8/igt@[email protected]
* igt@xe_eudebug_sriov@deny-sriov:
- shard-lnl: NOTRUN -> [SKIP][90] ([Intel XE#4518] / [Intel XE#7404])
[90]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-lnl-7/igt@[email protected]
* igt@xe_evict@evict-cm-threads-small-multi-queue:
- shard-bmg: NOTRUN -> [SKIP][91] ([Intel XE#7140])
[91]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-bmg-8/igt@[email protected]
* igt@xe_evict@evict-mixed-many-threads-small:
- shard-bmg: [PASS][92] -> [INCOMPLETE][93] ([Intel XE#6321])
[92]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5124-04d475020800d0a1033ca89a0d6d5fc638ddc65b/shard-bmg-4/igt@[email protected]
[93]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-bmg-9/igt@[email protected]
* igt@xe_evict@evict-threads-small-multi-vm:
- shard-lnl: NOTRUN -> [SKIP][94] ([Intel XE#6540] / [Intel XE#688]) +4 other tests skip
[94]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-lnl-7/igt@[email protected]
* igt@xe_exec_balancer@twice-cm-virtual-userptr-invalidate-race:
- shard-lnl: NOTRUN -> [SKIP][95] ([Intel XE#7482]) +9 other tests skip
[95]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-lnl-7/igt@[email protected]
* igt@xe_exec_basic@multigpu-many-execqueues-many-vm-bindexecqueue-userptr:
- shard-bmg: NOTRUN -> [SKIP][96] ([Intel XE#2322] / [Intel XE#7372]) +4 other tests skip
[96]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-bmg-8/igt@xe_exec_basic@multigpu-many-execqueues-many-vm-bindexecqueue-userptr.html
* igt@xe_exec_basic@multigpu-once-basic-defer-mmap:
- shard-lnl: NOTRUN -> [SKIP][97] ([Intel XE#1392]) +4 other tests skip
[97]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-lnl-8/igt@[email protected]
* igt@xe_exec_fault_mode@once-multi-queue-invalid-fault:
- shard-lnl: NOTRUN -> [SKIP][98] ([Intel XE#7136]) +4 other tests skip
[98]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-lnl-8/igt@[email protected]
* igt@xe_exec_fault_mode@once-multi-queue-userptr-invalidate-imm:
- shard-bmg: NOTRUN -> [SKIP][99] ([Intel XE#7136]) +9 other tests skip
[99]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-bmg-2/igt@[email protected]
* igt@xe_exec_multi_queue@one-queue-preempt-mode-fault-userptr-invalidate:
- shard-lnl: NOTRUN -> [SKIP][100] ([Intel XE#6874]) +13 other tests skip
[100]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-lnl-8/igt@xe_exec_multi_queue@one-queue-preempt-mode-fault-userptr-invalidate.html
* igt@xe_exec_multi_queue@one-queue-priority-smem:
- shard-bmg: NOTRUN -> [SKIP][101] ([Intel XE#6874]) +14 other tests skip
[101]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-bmg-4/igt@[email protected]
* igt@xe_exec_reset@cm-multi-queue-cat-error:
- shard-bmg: NOTRUN -> [SKIP][102] ([Intel XE#7866])
[102]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-bmg-8/igt@[email protected]
* igt@xe_exec_reset@multi-queue-gt-reset:
- shard-lnl: NOTRUN -> [SKIP][103] ([Intel XE#7866]) +1 other test skip
[103]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-lnl-7/igt@[email protected]
* igt@xe_exec_threads@threads-multi-queue-mixed-shared-vm-userptr:
- shard-lnl: NOTRUN -> [SKIP][104] ([Intel XE#7138]) +3 other tests skip
[104]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-lnl-8/igt@[email protected]
* igt@xe_exec_threads@threads-multi-queue-mixed-shared-vm-userptr-rebind:
- shard-bmg: NOTRUN -> [SKIP][105] ([Intel XE#7138]) +5 other tests skip
[105]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-bmg-8/igt@xe_exec_threads@threads-multi-queue-mixed-shared-vm-userptr-rebind.html
* igt@xe_fault_injection@exec-queue-create-fail-xe_pxp_exec_queue_add:
- shard-bmg: NOTRUN -> [SKIP][106] ([Intel XE#6281] / [Intel XE#7426])
[106]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-bmg-8/igt@xe_fault_injection@exec-queue-create-fail-xe_pxp_exec_queue_add.html
* igt@xe_mmap@pci-membarrier-parallel:
- shard-lnl: NOTRUN -> [SKIP][107] ([Intel XE#5100] / [Intel XE#7322] / [Intel XE#7408])
[107]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-lnl-7/igt@[email protected]
* igt@xe_multigpu_svm@mgpu-coherency-prefetch:
- shard-bmg: NOTRUN -> [SKIP][108] ([Intel XE#6964]) +3 other tests skip
[108]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-bmg-8/igt@[email protected]
* igt@xe_multigpu_svm@mgpu-pagefault-conflict:
- shard-lnl: NOTRUN -> [SKIP][109] ([Intel XE#6964]) +1 other test skip
[109]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-lnl-8/igt@[email protected]
* igt@xe_page_reclaim@binds-large-split:
- shard-bmg: NOTRUN -> [SKIP][110] ([Intel XE#7793])
[110]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-bmg-4/igt@[email protected]
* igt@xe_pat@l2-flush-opt-svm-pat-restrict:
- shard-lnl: NOTRUN -> [SKIP][111] ([Intel XE#7590] / [Intel XE#7772])
[111]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-lnl-7/igt@[email protected]
* igt@xe_pm@d3cold-basic-exec:
- shard-bmg: NOTRUN -> [SKIP][112] ([Intel XE#2284] / [Intel XE#7370])
[112]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-bmg-2/igt@[email protected]
* igt@xe_pm@d3hot-i2c:
- shard-lnl: NOTRUN -> [SKIP][113] ([Intel XE#5742] / [Intel XE#7328] / [Intel XE#7400])
[113]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-lnl-7/igt@[email protected]
* igt@xe_pm_residency@cpg-basic:
- shard-lnl: NOTRUN -> [SKIP][114] ([Intel XE#584] / [Intel XE#7369])
[114]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-lnl-7/igt@[email protected]
* igt@xe_pxp@pxp-stale-bo-exec-post-termination-irq:
- shard-bmg: NOTRUN -> [SKIP][115] ([Intel XE#4733] / [Intel XE#7417]) +1 other test skip
[115]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-bmg-2/igt@[email protected]
* igt@xe_query@multigpu-query-invalid-cs-cycles:
- shard-lnl: NOTRUN -> [SKIP][116] ([Intel XE#944])
[116]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-lnl-7/igt@[email protected]
* igt@xe_query@multigpu-query-topology-l3-bank-mask:
- shard-bmg: NOTRUN -> [SKIP][117] ([Intel XE#944])
[117]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-bmg-2/igt@[email protected]
* igt@xe_sriov_admin@bulk-sched-priority-vfs-disabled:
- shard-lnl: NOTRUN -> [SKIP][118] ([Intel XE#7174])
[118]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-lnl-8/igt@[email protected]
* igt@xe_sriov_vram@vf-access-after-resize-up:
- shard-lnl: NOTRUN -> [SKIP][119] ([Intel XE#6376] / [Intel XE#7330] / [Intel XE#7422])
[119]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-lnl-7/igt@[email protected]
* igt@xe_wedged@wedged-mode-toggle:
- shard-bmg: [PASS][120] -> [ABORT][121] ([Intel XE#8007])
[120]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5124-04d475020800d0a1033ca89a0d6d5fc638ddc65b/shard-bmg-4/igt@[email protected]
[121]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-bmg-9/igt@[email protected]
#### Possible fixes ####
* igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs:
- shard-bmg: [INCOMPLETE][122] ([Intel XE#7084] / [Intel XE#8150]) -> [PASS][123] +1 other test pass
[122]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5124-04d475020800d0a1033ca89a0d6d5fc638ddc65b/shard-bmg-9/igt@[email protected]
[123]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-bmg-10/igt@[email protected]
* igt@kms_flip@2x-flip-vs-panning@ad-dp2-hdmi-a3:
- shard-bmg: [INCOMPLETE][124] ([Intel XE#8155]) -> [PASS][125] +1 other test pass
[124]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5124-04d475020800d0a1033ca89a0d6d5fc638ddc65b/shard-bmg-6/igt@kms_flip@[email protected]
[125]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-bmg-8/igt@kms_flip@[email protected]
* igt@kms_hdr@static-swap@pipe-a-hdmi-a-3-xrgb16161616f:
- shard-bmg: [SKIP][126] ([Intel XE#7915]) -> [PASS][127] +1 other test pass
[126]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5124-04d475020800d0a1033ca89a0d6d5fc638ddc65b/shard-bmg-7/igt@kms_hdr@[email protected]
[127]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-bmg-10/igt@kms_hdr@[email protected]
* igt@kms_pm_rpm@i2c:
- shard-bmg: [FAIL][128] ([Intel XE#8165]) -> [PASS][129]
[128]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5124-04d475020800d0a1033ca89a0d6d5fc638ddc65b/shard-bmg-2/igt@[email protected]
[129]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-bmg-8/igt@[email protected]
* igt@kms_rotation_crc@multiplane-rotation-cropping-top:
- shard-bmg: [INCOMPLETE][130] ([Intel XE#1727] / [Intel XE#8153]) -> [PASS][131]
[130]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5124-04d475020800d0a1033ca89a0d6d5fc638ddc65b/shard-bmg-2/igt@[email protected]
[131]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-bmg-10/igt@[email protected]
* igt@xe_exec_reset@long-spin-many-preempt-gt0-threads:
- shard-bmg: [FAIL][132] ([Intel XE#7956]) -> [PASS][133]
[132]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5124-04d475020800d0a1033ca89a0d6d5fc638ddc65b/shard-bmg-1/igt@[email protected]
[133]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-bmg-6/igt@[email protected]
#### Warnings ####
* igt@kms_hdr@brightness-with-hdr:
- shard-bmg: [SKIP][134] ([Intel XE#3544] / [Intel XE#7915] / [Intel XE#7916]) -> [SKIP][135] ([Intel XE#3544] / [Intel XE#7916])
[134]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5124-04d475020800d0a1033ca89a0d6d5fc638ddc65b/shard-bmg-3/igt@[email protected]
[135]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-bmg-5/igt@[email protected]
* igt@kms_hdr@brightness-with-hdr@pipe-a-hdmi-a-3-xrgb2101010:
- shard-bmg: [SKIP][136] ([Intel XE#7915]) -> [SKIP][137] ([Intel XE#7916]) +1 other test skip
[136]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5124-04d475020800d0a1033ca89a0d6d5fc638ddc65b/shard-bmg-3/igt@kms_hdr@[email protected]
[137]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-bmg-5/igt@kms_hdr@[email protected]
* igt@kms_tiled_display@basic-test-pattern:
- shard-bmg: [FAIL][138] ([Intel XE#1729] / [Intel XE#7424]) -> [SKIP][139] ([Intel XE#2426] / [Intel XE#5848])
[138]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5124-04d475020800d0a1033ca89a0d6d5fc638ddc65b/shard-bmg-2/igt@[email protected]
[139]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/shard-bmg-8/igt@[email protected]
[Intel XE#1124]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1124
[Intel XE#1178]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1178
[Intel XE#1392]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1392
[Intel XE#1397]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1397
[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#1421]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1421
[Intel XE#1424]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1424
[Intel XE#1435]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1435
[Intel XE#1439]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1439
[Intel XE#1447]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1447
[Intel XE#1467]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1467
[Intel XE#1470]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1470
[Intel XE#1489]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1489
[Intel XE#1503]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1503
[Intel XE#1727]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1727
[Intel XE#1729]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1729
[Intel XE#1745]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1745
[Intel XE#2234]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2234
[Intel XE#2244]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2244
[Intel XE#2252]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2252
[Intel XE#2284]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2284
[Intel XE#2311]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2311
[Intel XE#2313]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2313
[Intel XE#2320]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2320
[Intel XE#2321]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2321
[Intel XE#2322]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2322
[Intel XE#2325]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2325
[Intel XE#2327]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2327
[Intel XE#2374]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2374
[Intel XE#2390]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2390
[Intel XE#2426]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2426
[Intel XE#2669]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2669
[Intel XE#2763]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2763
[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#307]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/307
[Intel XE#309]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/309
[Intel XE#3141]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3141
[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#3432]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3432
[Intel XE#3433]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3433
[Intel XE#3544]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3544
[Intel XE#367]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/367
[Intel XE#3718]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3718
[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#4294]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4294
[Intel XE#4331]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4331
[Intel XE#4354]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4354
[Intel XE#4416]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4416
[Intel XE#4422]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4422
[Intel XE#4518]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4518
[Intel XE#4733]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4733
[Intel XE#5020]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5020
[Intel XE#5100]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5100
[Intel XE#5742]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5742
[Intel XE#584]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/584
[Intel XE#5848]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5848
[Intel XE#599]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/599
[Intel XE#6128]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6128
[Intel XE#6281]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6281
[Intel XE#6312]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6312
[Intel XE#6321]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6321
[Intel XE#6376]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6376
[Intel XE#6503]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6503
[Intel XE#651]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/651
[Intel XE#6540]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6540
[Intel XE#656]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/656
[Intel XE#6652]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6652
[Intel XE#6703]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6703
[Intel XE#6819]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6819
[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#6886]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6886
[Intel XE#6900]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6900
[Intel XE#6901]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6901
[Intel XE#6964]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6964
[Intel XE#6969]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6969
[Intel XE#6974]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6974
[Intel XE#7006]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7006
[Intel XE#7059]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7059
[Intel XE#7061]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7061
[Intel XE#7084]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7084
[Intel XE#7085]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7085
[Intel XE#7136]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7136
[Intel XE#7138]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7138
[Intel XE#7140]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7140
[Intel XE#7174]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7174
[Intel XE#7178]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7178
[Intel XE#7227]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7227
[Intel XE#7265]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7265
[Intel XE#7283]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7283
[Intel XE#7304]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7304
[Intel XE#7322]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7322
[Intel XE#7328]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7328
[Intel XE#7330]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7330
[Intel XE#7342]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7342
[Intel XE#7343]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7343
[Intel XE#7348]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7348
[Intel XE#7349]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7349
[Intel XE#7351]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7351
[Intel XE#7355]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7355
[Intel XE#7356]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7356
[Intel XE#7358]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7358
[Intel XE#7362]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7362
[Intel XE#7367]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7367
[Intel XE#7369]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7369
[Intel XE#7370]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7370
[Intel XE#7372]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7372
[Intel XE#7374]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7374
[Intel XE#7376]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7376
[Intel XE#7381]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7381
[Intel XE#7383]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7383
[Intel XE#7385]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7385
[Intel XE#7386]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7386
[Intel XE#7389]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7389
[Intel XE#7400]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7400
[Intel XE#7404]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7404
[Intel XE#7408]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7408
[Intel XE#7417]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7417
[Intel XE#7422]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7422
[Intel XE#7424]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7424
[Intel XE#7426]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7426
[Intel XE#7442]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7442
[Intel XE#7445]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7445
[Intel XE#7469]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7469
[Intel XE#7477]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7477
[Intel XE#7482]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7482
[Intel XE#7590]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7590
[Intel XE#7636]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7636
[Intel XE#7642]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7642
[Intel XE#7679]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7679
[Intel XE#7760]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7760
[Intel XE#7772]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7772
[Intel XE#7793]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7793
[Intel XE#7865]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7865
[Intel XE#7866]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7866
[Intel XE#7905]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7905
[Intel XE#7915]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7915
[Intel XE#7916]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7916
[Intel XE#7922]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7922
[Intel XE#7956]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7956
[Intel XE#8007]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8007
[Intel XE#8145]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8145
[Intel XE#8150]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8150
[Intel XE#8153]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8153
[Intel XE#8155]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8155
[Intel XE#8165]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8165
[Intel XE#870]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/870
[Intel XE#944]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/944
Build changes
-------------
* Linux: xe-5124-04d475020800d0a1033ca89a0d6d5fc638ddc65b -> xe-pw-167032v3
IGT_8936: 98b65acc4f6edf68cd52b30f27b83049c4c5c83b @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
xe-5124-04d475020800d0a1033ca89a0d6d5fc638ddc65b: 04d475020800d0a1033ca89a0d6d5fc638ddc65b
xe-pw-167032v3: 167032v3
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167032v3/index.html