* [PATCH v4 0/5] Introduce xe_wedge
@ 2026-10-10 9:06 Raag Jadav
2026-10-10 9:06 ` [PATCH v4 1/5] drm/xe/gt: Use GT ordered workqueue for wedging Raag Jadav
` (8 more replies)
0 siblings, 9 replies; 16+ messages in thread
From: Raag Jadav @ 2026-10-10 9:06 UTC (permalink / raw)
To: intel-xe
Cc: riana.tauro, michal.wajdeczko, lukasz.laguna, matthew.d.roper,
matthew.brost, mallesh.koujalagi, rodrigo.vivi, Raag Jadav
In the history of xe technical debt, this series takes one more step and
consolidates all wedging implementation into a dedicated xe_wedge component.
While at it, this fixes a few pre-existing issues related to wedge handling.
Detailed description in commit message.
v1: https://patchwork.freedesktop.org/series/172727/
v2: Split fixes into separate patches (Rodrigo, Michal)
Also move struct xe_wedge and wedged_mode debt to xe_wedge (Lukasz, Michal)
Naming and aesthetic adjustments (Lukasz, Michal)
v3: Respect the component namespace (Rodrigo)
Avoid chaining header includes (Rodrigo)
Squash debugfs changes with xe_wedge patch (Lukasz)
v4: Introduce for_each_initialized_gt() (Michal)
Include xe_sriov.h (Rodrigo)
Raag Jadav (5):
drm/xe/gt: Use GT ordered workqueue for wedging
drm/xe: Move xe_device_wedged_fini() registration to
xe_device_probe_early()
drm/xe: Make xe_device_declare_wedged() IRQ safe
drm/xe: Introduce xe_wedge
drm/xe/ras: Move xe_ras_process_errors() to xe_ras
Documentation/gpu/xe/xe_device.rst | 2 +-
drivers/gpu/drm/xe/Makefile | 1 +
drivers/gpu/drm/xe/tests/xe_kunit_helpers.c | 3 +-
drivers/gpu/drm/xe/xe_amc.c | 3 +-
drivers/gpu/drm/xe/xe_bo.c | 3 +-
drivers/gpu/drm/xe/xe_debugfs.c | 66 +----
drivers/gpu/drm/xe/xe_device.c | 190 +------------
drivers/gpu/drm/xe/xe_device.h | 14 +-
drivers/gpu/drm/xe/xe_device_types.h | 28 +-
drivers/gpu/drm/xe/xe_gsc.c | 3 +-
drivers/gpu/drm/xe/xe_gt.c | 26 +-
drivers/gpu/drm/xe/xe_gt.h | 2 +-
drivers/gpu/drm/xe/xe_gt_sriov_vf.c | 3 +-
drivers/gpu/drm/xe/xe_gt_types.h | 9 +
drivers/gpu/drm/xe/xe_guc.c | 4 +-
drivers/gpu/drm/xe/xe_guc.h | 2 +-
drivers/gpu/drm/xe/xe_guc_ct.c | 7 +-
drivers/gpu/drm/xe/xe_guc_pc.c | 11 +-
drivers/gpu/drm/xe/xe_guc_rc.c | 5 +-
drivers/gpu/drm/xe/xe_guc_submit.c | 13 +-
drivers/gpu/drm/xe/xe_guc_tlb_inval.c | 3 +-
drivers/gpu/drm/xe/xe_mert.c | 5 +-
drivers/gpu/drm/xe/xe_pci_error.c | 9 +-
drivers/gpu/drm/xe/xe_ras.c | 12 +-
drivers/gpu/drm/xe/xe_sriov_pf.c | 3 +-
drivers/gpu/drm/xe/xe_survivability_mode.c | 5 +-
drivers/gpu/drm/xe/xe_uc.c | 6 +-
drivers/gpu/drm/xe/xe_uc.h | 2 +-
drivers/gpu/drm/xe/xe_wedge.c | 287 ++++++++++++++++++++
drivers/gpu/drm/xe/xe_wedge.h | 20 ++
drivers/gpu/drm/xe/xe_wedge_types.h | 45 +++
31 files changed, 462 insertions(+), 330 deletions(-)
create mode 100644 drivers/gpu/drm/xe/xe_wedge.c
create mode 100644 drivers/gpu/drm/xe/xe_wedge.h
create mode 100644 drivers/gpu/drm/xe/xe_wedge_types.h
--
2.43.0
^ permalink raw reply [flat|nested] 16+ messages in thread* [PATCH v4 1/5] drm/xe/gt: Use GT ordered workqueue for wedging 2026-10-10 9:06 [PATCH v4 0/5] Introduce xe_wedge Raag Jadav @ 2026-10-10 9:06 ` Raag Jadav 2026-10-10 9:17 ` sashiko-bot 2026-10-12 20:43 ` Matthew Brost 2026-10-10 9:06 ` [PATCH v4 2/5] drm/xe: Move xe_device_wedged_fini() registration to xe_device_probe_early() Raag Jadav ` (7 subsequent siblings) 8 siblings, 2 replies; 16+ messages in thread From: Raag Jadav @ 2026-10-10 9:06 UTC (permalink / raw) To: intel-xe Cc: riana.tauro, michal.wajdeczko, lukasz.laguna, matthew.d.roper, matthew.brost, mallesh.koujalagi, rodrigo.vivi, Raag Jadav Currently, xe_gt_declare_wedged() stops GuC CT and initiates exec queue teardown synchronously. This can result in tdr timeout in cases where the device is declared wedged while jobs are still in-flight. Introduce a worker for GT specific wedge handling and queue the teardown on GT ordered workqueue, so we don't disrupt the scheduler while jobs are still in-flight. While at it, introduce for_each_initialized_gt() macro and use it for wedging GT. This helps avoid races in case the device is declared wedged in probe sequence before GT is initialized. Fixes: c9474b726b93 ("drm/xe: Wedge the entire device") Signed-off-by: Raag Jadav <raag.jadav@intel.com> --- v2: Split fixes into separate patches (Rodrigo, Michal) v4: Introduce for_each_initialized_gt() (Michal) --- drivers/gpu/drm/xe/xe_device.c | 2 +- drivers/gpu/drm/xe/xe_device.h | 4 ++++ drivers/gpu/drm/xe/xe_gt.c | 17 +++++++++++++++-- drivers/gpu/drm/xe/xe_gt_types.h | 9 +++++++++ 4 files changed, 29 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/xe_device.c index 8392c9fad3c4..22ae10958d7f 100644 --- a/drivers/gpu/drm/xe/xe_device.c +++ b/drivers/gpu/drm/xe/xe_device.c @@ -1432,7 +1432,7 @@ void xe_device_declare_wedged(struct xe_device *xe) WEDGED_URL, XE_BUG_URL); } - for_each_gt(gt, xe, id) + for_each_initialized_gt(gt, xe, id) xe_gt_declare_wedged(gt); if (xe_device_wedged(xe)) { diff --git a/drivers/gpu/drm/xe/xe_device.h b/drivers/gpu/drm/xe/xe_device.h index 83d6dafab53c..9b09e627af8c 100644 --- a/drivers/gpu/drm/xe/xe_device.h +++ b/drivers/gpu/drm/xe/xe_device.h @@ -139,6 +139,10 @@ static inline bool xe_device_uc_enabled(struct xe_device *xe) for_each_gt((gt__), (tile__)->xe, (id__)) \ for_each_if((gt__)->tile == (tile__)) +#define for_each_initialized_gt(gt__, xe__, id__) \ + for_each_gt((gt__), (xe__), (id__)) \ + for_each_if((gt__)->initialized) + static inline struct xe_force_wake *gt_to_fw(struct xe_gt *gt) { return >->pm.fw; diff --git a/drivers/gpu/drm/xe/xe_gt.c b/drivers/gpu/drm/xe/xe_gt.c index 775c826b68b4..d762158c0777 100644 --- a/drivers/gpu/drm/xe/xe_gt.c +++ b/drivers/gpu/drm/xe/xe_gt.c @@ -175,6 +175,7 @@ static void xe_gt_enable_comp_1wcoh(struct xe_gt *gt) } static void gt_reset_worker(struct work_struct *w); +static void gt_wedge_worker(struct work_struct *w); static int emit_job_sync(struct xe_exec_queue *q, struct xe_bb *bb, long timeout_jiffies, bool force_reset) @@ -706,6 +707,8 @@ static void xe_gt_fini(void *arg) struct xe_gt *gt = arg; int i; + disable_work_sync(>->wedge.worker); + if (disable_work_sync(>->reset.worker)) /* * If gt_reset_worker was halted from executing, take care of @@ -725,6 +728,7 @@ int xe_gt_init(struct xe_gt *gt) int i; INIT_WORK(>->reset.worker, gt_reset_worker); + INIT_WORK(>->wedge.worker, gt_wedge_worker); for (i = 0; i < XE_ENGINE_CLASS_MAX; ++i) { gt->ring_ops[i] = xe_ring_ops_get(gt, i); @@ -769,6 +773,8 @@ int xe_gt_init(struct xe_gt *gt) return err; } + /* Must be last */ + gt->initialized = true; return 0; } @@ -1010,6 +1016,14 @@ void xe_gt_reset_async(struct xe_gt *gt) xe_pm_runtime_put(xe); } +static void gt_wedge_worker(struct work_struct *w) +{ + struct xe_gt *gt = container_of(w, typeof(*gt), wedge.worker); + + xe_uc_declare_wedged(>->uc); + xe_tlb_inval_reset(>->tlb_inval); +} + void xe_gt_suspend_prepare(struct xe_gt *gt) { xe_uc_suspend_prepare(>->uc); @@ -1200,6 +1214,5 @@ void xe_gt_declare_wedged(struct xe_gt *gt) { xe_gt_assert(gt, gt_to_xe(gt)->wedged.mode); - xe_uc_declare_wedged(>->uc); - xe_tlb_inval_reset(>->tlb_inval); + queue_work(gt->ordered_wq, >->wedge.worker); } diff --git a/drivers/gpu/drm/xe/xe_gt_types.h b/drivers/gpu/drm/xe/xe_gt_types.h index 628911346455..c00a7c171f80 100644 --- a/drivers/gpu/drm/xe/xe_gt_types.h +++ b/drivers/gpu/drm/xe/xe_gt_types.h @@ -233,6 +233,12 @@ struct xe_gt { struct work_struct worker; } reset; + /** @wedge: state for GT wedge */ + struct { + /** @wedge.worker: worker for GT wedge to be done async */ + struct work_struct worker; + } wedge; + /** @tlb_inval: TLB invalidation state */ struct xe_tlb_inval tlb_inval; @@ -419,6 +425,9 @@ struct xe_gt { /** @eu_stall: EU stall counters subsystem per gt info */ struct xe_eu_stall_gt *eu_stall; + + /** @initialized: GT is initialized */ + bool initialized; }; #endif -- 2.43.0 ^ permalink raw reply related [flat|nested] 16+ messages in thread
* Re: [PATCH v4 1/5] drm/xe/gt: Use GT ordered workqueue for wedging 2026-10-10 9:06 ` [PATCH v4 1/5] drm/xe/gt: Use GT ordered workqueue for wedging Raag Jadav @ 2026-10-10 9:17 ` sashiko-bot 2026-10-12 20:43 ` Matthew Brost 1 sibling, 0 replies; 16+ messages in thread From: sashiko-bot @ 2026-10-10 9:17 UTC (permalink / raw) To: Raag Jadav; +Cc: intel-xe Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider: - [High] workqueue: uninitialized work_struct queued in PCI error handler - [Medium] locking: Missing memory barriers for gt->initialized flag -- commit f20d3458e3b35619236177bed70acaaa58c1bccf Author: Raag Jadav <raag.jadav@intel.com> drm/xe/gt: Use GT ordered workqueue for wedging This commit introduces a worker for GT specific wedge handling and queues the teardown on the GT ordered workqueue to avoid disrupting the scheduler for in-flight jobs. It also adds a for_each_initialized_gt() macro to prevent wedging uninitialized GTs during early probe. > diff --git a/drivers/gpu/drm/xe/xe_device.h b/drivers/gpu/drm/xe/xe_device.h > --- a/drivers/gpu/drm/xe/xe_device.h > +++ b/drivers/gpu/drm/xe/xe_device.h [ ... ] > @@ -139,6 +139,10 @@ static inline bool xe_device_uc_enabled(struct xe_device *xe) > for_each_gt((gt__), (tile__)->xe, (id__)) \ > for_each_if((gt__)->tile == (tile__)) > > +#define for_each_initialized_gt(gt__, xe__, id__) \ > + for_each_gt((gt__), (xe__), (id__)) \ > + for_each_if((gt__)->initialized) [Severity: Medium] Does this lockless read require an acquire barrier, such as smp_load_acquire(), to ensure prior GT initialization stores are visible? Without an acquire barrier here and a corresponding release barrier in xe_gt_init(), the CPU or compiler can reorder the store to gt->initialized before preceding hardware initialization stores. A concurrent caller of xe_device_declare_wedged() (e.g., from a timeout handler) could observe gt->initialized == true before the GT is fully initialized, queueing the worker on a partially initialized GT. [ ... ] > diff --git a/drivers/gpu/drm/xe/xe_gt.c b/drivers/gpu/drm/xe/xe_gt.c > --- a/drivers/gpu/drm/xe/xe_gt.c > +++ b/drivers/gpu/drm/xe/xe_gt.c [ ... ] > @@ -769,6 +773,8 @@ int xe_gt_init(struct xe_gt *gt) > return err; > } > > + /* Must be last */ > + gt->initialized = true; [Severity: Medium] Does this plain store require a release barrier, such as smp_store_release()? This flag is read locklessly in for_each_initialized_gt(). Without a release barrier, architectural or compiler reordering of the preceding GT initialization sequence could occur, causing concurrent readers to see the flag set before initialization is actually complete. [ ... ] > @@ -1200,6 +1214,5 @@ void xe_gt_declare_wedged(struct xe_gt *gt) > { > xe_gt_assert(gt, gt_to_xe(gt)->wedged.mode); > > - xe_uc_declare_wedged(>->uc); > - xe_tlb_inval_reset(>->tlb_inval); > + queue_work(gt->ordered_wq, >->wedge.worker); > } [Severity: High] Does this change break the PCI error handler in xe_pci_error.c? This patch changes xe_gt_declare_wedged() to execute asynchronously by queueing gt->wedge.worker. To avoid crashes when wedging happens during early probe, xe_device_declare_wedged() was updated to use for_each_initialized_gt(). However, prepare_device_for_reset() in drivers/gpu/drm/xe/xe_pci_error.c still uses for_each_gt() and manually calls xe_gt_declare_wedged(). If a PCIe AER event triggers during early probe before xe_gt_init() completes, it will pass an uninitialized GT to the wedge logic. This leads to queue_work() acting on a zero-filled work_struct, causing list corruption and a kernel panic. Verification confirmed this bug remains unfixed at the end of the patch series. Should prepare_device_for_reset() also be updated to use for_each_initialized_gt()? -- Sashiko AI review · https://sashiko.dev/#/patchset/20261010090718.68308-1-raag.jadav@intel.com?part=1 ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH v4 1/5] drm/xe/gt: Use GT ordered workqueue for wedging 2026-10-10 9:06 ` [PATCH v4 1/5] drm/xe/gt: Use GT ordered workqueue for wedging Raag Jadav 2026-10-10 9:17 ` sashiko-bot @ 2026-10-12 20:43 ` Matthew Brost 1 sibling, 0 replies; 16+ messages in thread From: Matthew Brost @ 2026-10-12 20:43 UTC (permalink / raw) To: Raag Jadav Cc: intel-xe, riana.tauro, michal.wajdeczko, lukasz.laguna, matthew.d.roper, mallesh.koujalagi, rodrigo.vivi On Sat, Oct 10, 2026 at 02:36:18PM +0530, Raag Jadav wrote: > Currently, xe_gt_declare_wedged() stops GuC CT and initiates exec queue > teardown synchronously. This can result in tdr timeout in cases where > the device is declared wedged while jobs are still in-flight. > > Introduce a worker for GT specific wedge handling and queue the teardown > on GT ordered workqueue, so we don't disrupt the scheduler while jobs > are still in-flight. > > While at it, introduce for_each_initialized_gt() macro and use it for > wedging GT. This helps avoid races in case the device is declared wedged > in probe sequence before GT is initialized. > > Fixes: c9474b726b93 ("drm/xe: Wedge the entire device") > Signed-off-by: Raag Jadav <raag.jadav@intel.com> Reviewed-by: Matthew Brost <matthew.brost@intel.com> > --- > v2: Split fixes into separate patches (Rodrigo, Michal) > v4: Introduce for_each_initialized_gt() (Michal) > --- > drivers/gpu/drm/xe/xe_device.c | 2 +- > drivers/gpu/drm/xe/xe_device.h | 4 ++++ > drivers/gpu/drm/xe/xe_gt.c | 17 +++++++++++++++-- > drivers/gpu/drm/xe/xe_gt_types.h | 9 +++++++++ > 4 files changed, 29 insertions(+), 3 deletions(-) > > diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/xe_device.c > index 8392c9fad3c4..22ae10958d7f 100644 > --- a/drivers/gpu/drm/xe/xe_device.c > +++ b/drivers/gpu/drm/xe/xe_device.c > @@ -1432,7 +1432,7 @@ void xe_device_declare_wedged(struct xe_device *xe) > WEDGED_URL, XE_BUG_URL); > } > > - for_each_gt(gt, xe, id) > + for_each_initialized_gt(gt, xe, id) > xe_gt_declare_wedged(gt); > > if (xe_device_wedged(xe)) { > diff --git a/drivers/gpu/drm/xe/xe_device.h b/drivers/gpu/drm/xe/xe_device.h > index 83d6dafab53c..9b09e627af8c 100644 > --- a/drivers/gpu/drm/xe/xe_device.h > +++ b/drivers/gpu/drm/xe/xe_device.h > @@ -139,6 +139,10 @@ static inline bool xe_device_uc_enabled(struct xe_device *xe) > for_each_gt((gt__), (tile__)->xe, (id__)) \ > for_each_if((gt__)->tile == (tile__)) > > +#define for_each_initialized_gt(gt__, xe__, id__) \ > + for_each_gt((gt__), (xe__), (id__)) \ > + for_each_if((gt__)->initialized) > + > static inline struct xe_force_wake *gt_to_fw(struct xe_gt *gt) > { > return >->pm.fw; > diff --git a/drivers/gpu/drm/xe/xe_gt.c b/drivers/gpu/drm/xe/xe_gt.c > index 775c826b68b4..d762158c0777 100644 > --- a/drivers/gpu/drm/xe/xe_gt.c > +++ b/drivers/gpu/drm/xe/xe_gt.c > @@ -175,6 +175,7 @@ static void xe_gt_enable_comp_1wcoh(struct xe_gt *gt) > } > > static void gt_reset_worker(struct work_struct *w); > +static void gt_wedge_worker(struct work_struct *w); > > static int emit_job_sync(struct xe_exec_queue *q, struct xe_bb *bb, > long timeout_jiffies, bool force_reset) > @@ -706,6 +707,8 @@ static void xe_gt_fini(void *arg) > struct xe_gt *gt = arg; > int i; > > + disable_work_sync(>->wedge.worker); > + > if (disable_work_sync(>->reset.worker)) > /* > * If gt_reset_worker was halted from executing, take care of > @@ -725,6 +728,7 @@ int xe_gt_init(struct xe_gt *gt) > int i; > > INIT_WORK(>->reset.worker, gt_reset_worker); > + INIT_WORK(>->wedge.worker, gt_wedge_worker); > > for (i = 0; i < XE_ENGINE_CLASS_MAX; ++i) { > gt->ring_ops[i] = xe_ring_ops_get(gt, i); > @@ -769,6 +773,8 @@ int xe_gt_init(struct xe_gt *gt) > return err; > } > > + /* Must be last */ > + gt->initialized = true; > return 0; > } > > @@ -1010,6 +1016,14 @@ void xe_gt_reset_async(struct xe_gt *gt) > xe_pm_runtime_put(xe); > } > > +static void gt_wedge_worker(struct work_struct *w) > +{ > + struct xe_gt *gt = container_of(w, typeof(*gt), wedge.worker); > + > + xe_uc_declare_wedged(>->uc); > + xe_tlb_inval_reset(>->tlb_inval); > +} > + > void xe_gt_suspend_prepare(struct xe_gt *gt) > { > xe_uc_suspend_prepare(>->uc); > @@ -1200,6 +1214,5 @@ void xe_gt_declare_wedged(struct xe_gt *gt) > { > xe_gt_assert(gt, gt_to_xe(gt)->wedged.mode); > > - xe_uc_declare_wedged(>->uc); > - xe_tlb_inval_reset(>->tlb_inval); > + queue_work(gt->ordered_wq, >->wedge.worker); > } > diff --git a/drivers/gpu/drm/xe/xe_gt_types.h b/drivers/gpu/drm/xe/xe_gt_types.h > index 628911346455..c00a7c171f80 100644 > --- a/drivers/gpu/drm/xe/xe_gt_types.h > +++ b/drivers/gpu/drm/xe/xe_gt_types.h > @@ -233,6 +233,12 @@ struct xe_gt { > struct work_struct worker; > } reset; > > + /** @wedge: state for GT wedge */ > + struct { > + /** @wedge.worker: worker for GT wedge to be done async */ > + struct work_struct worker; > + } wedge; > + > /** @tlb_inval: TLB invalidation state */ > struct xe_tlb_inval tlb_inval; > > @@ -419,6 +425,9 @@ struct xe_gt { > > /** @eu_stall: EU stall counters subsystem per gt info */ > struct xe_eu_stall_gt *eu_stall; > + > + /** @initialized: GT is initialized */ > + bool initialized; > }; > > #endif > -- > 2.43.0 > ^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH v4 2/5] drm/xe: Move xe_device_wedged_fini() registration to xe_device_probe_early() 2026-10-10 9:06 [PATCH v4 0/5] Introduce xe_wedge Raag Jadav 2026-10-10 9:06 ` [PATCH v4 1/5] drm/xe/gt: Use GT ordered workqueue for wedging Raag Jadav @ 2026-10-10 9:06 ` Raag Jadav 2026-10-10 9:06 ` [PATCH v4 3/5] drm/xe: Make xe_device_declare_wedged() IRQ safe Raag Jadav ` (6 subsequent siblings) 8 siblings, 0 replies; 16+ messages in thread From: Raag Jadav @ 2026-10-10 9:06 UTC (permalink / raw) To: intel-xe Cc: riana.tauro, michal.wajdeczko, lukasz.laguna, matthew.d.roper, matthew.brost, mallesh.koujalagi, rodrigo.vivi, Raag Jadav The device can be declared wedged while processing boot-time hardware errors, which can result in PM reference leak if driver probe fails before xe_device_wedged_fini() is registered. Early register the required cleanup action and fix this. Fixes: a7df563b45b0 ("drm/xe/xe_hw_error: Handle CSC Firmware reported Hardware errors") Signed-off-by: Raag Jadav <raag.jadav@intel.com> Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com> --- v2: Split fixes into separate patches (Rodrigo, Michal) --- drivers/gpu/drm/xe/xe_device.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/xe_device.c index 22ae10958d7f..6ae1da578bda 100644 --- a/drivers/gpu/drm/xe/xe_device.c +++ b/drivers/gpu/drm/xe/xe_device.c @@ -697,6 +697,8 @@ static int xe_device_vram_alloc(struct xe_device *xe) return 0; } +static void xe_device_wedged_fini(struct drm_device *drm, void *arg); + /** * xe_device_probe_early: Device early probe * @xe: xe device instance @@ -765,6 +767,10 @@ int xe_device_probe_early(struct xe_device *xe) if (err) return err; + err = drmm_add_action_or_reset(&xe->drm, xe_device_wedged_fini, xe); + if (err) + return err; + return 0; } ALLOW_ERROR_INJECTION(xe_device_probe_early, ERRNO); /* See xe_pci_probe() */ @@ -1095,10 +1101,6 @@ int xe_device_probe(struct xe_device *xe) detect_preproduction_hw(xe); - err = drmm_add_action_or_reset(&xe->drm, xe_device_wedged_fini, xe); - if (err) - goto err_unregister_display; - /* * Process and log any errors detected by hardware. Possible results can * include declaring the device as wedged, which must be done only after -- 2.43.0 ^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH v4 3/5] drm/xe: Make xe_device_declare_wedged() IRQ safe 2026-10-10 9:06 [PATCH v4 0/5] Introduce xe_wedge Raag Jadav 2026-10-10 9:06 ` [PATCH v4 1/5] drm/xe/gt: Use GT ordered workqueue for wedging Raag Jadav 2026-10-10 9:06 ` [PATCH v4 2/5] drm/xe: Move xe_device_wedged_fini() registration to xe_device_probe_early() Raag Jadav @ 2026-10-10 9:06 ` Raag Jadav 2026-10-10 9:19 ` sashiko-bot 2026-10-12 15:09 ` Raag Jadav 2026-10-10 9:06 ` [PATCH v4 4/5] drm/xe: Introduce xe_wedge Raag Jadav ` (5 subsequent siblings) 8 siblings, 2 replies; 16+ messages in thread From: Raag Jadav @ 2026-10-10 9:06 UTC (permalink / raw) To: intel-xe Cc: riana.tauro, michal.wajdeczko, lukasz.laguna, matthew.d.roper, matthew.brost, mallesh.koujalagi, rodrigo.vivi, Raag Jadav Currently, xe_device_declare_wedged() implementation wedges the GTs and sends wedged uevent to userspace. This is problematic for usecases which require declaring the device as wedged in IRQ context, as it allocates memory for event buffer and acquires mutexes deep into it's call path. Fix this by deferring wedge handling into its dedicated worker, so that xe_device_declare_wedged() can be called in IRQ context. First user of this requirement is introduced in commit def675cf3f10 ("drm/xe/mert: Improve handling of MERT CAT errors"), which declares the device as wedged on catastrophic errors received in form of an IRQ. Fixes: def675cf3f10 ("drm/xe/mert: Improve handling of MERT CAT errors") Signed-off-by: Raag Jadav <raag.jadav@intel.com> Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com> --- v2: Split fixes into separate patches (Rodrigo, Michal) --- drivers/gpu/drm/xe/xe_device.c | 51 +++++++++++++++++----------- drivers/gpu/drm/xe/xe_device_types.h | 2 ++ 2 files changed, 34 insertions(+), 19 deletions(-) diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/xe_device.c index 6ae1da578bda..2a7794aa71f9 100644 --- a/drivers/gpu/drm/xe/xe_device.c +++ b/drivers/gpu/drm/xe/xe_device.c @@ -697,8 +697,16 @@ static int xe_device_vram_alloc(struct xe_device *xe) return 0; } +static void wedged_work(struct work_struct *work); static void xe_device_wedged_fini(struct drm_device *drm, void *arg); +static int xe_device_wedged_init(struct xe_device *xe) +{ + INIT_WORK(&xe->wedged.work, wedged_work); + + return drmm_add_action_or_reset(&xe->drm, xe_device_wedged_fini, xe); +} + /** * xe_device_probe_early: Device early probe * @xe: xe device instance @@ -767,7 +775,7 @@ int xe_device_probe_early(struct xe_device *xe) if (err) return err; - err = drmm_add_action_or_reset(&xe->drm, xe_device_wedged_fini, xe); + err = xe_device_wedged_init(xe); if (err) return err; @@ -1392,6 +1400,26 @@ void xe_device_set_wedged_method(struct xe_device *xe, unsigned long method) xe->wedged.method = method; } +static void wedged_work(struct work_struct *work) +{ + struct xe_device *xe = container_of(work, struct xe_device, wedged.work); + + /* + * XE_WEDGED_MODE_UPON_ANY_HANG_NO_RESET is intended for debugging + * hangs, so wedge the device with 'none' recovery method and have + * it available to the user for debugging. + */ + if (xe->wedged.mode == XE_WEDGED_MODE_UPON_ANY_HANG_NO_RESET) + xe_device_set_wedged_method(xe, DRM_WEDGE_RECOVERY_NONE); + /* If no wedge recovery method is set, use default */ + else if (!xe->wedged.method) + xe_device_set_wedged_method(xe, DRM_WEDGE_RECOVERY_REBIND | + DRM_WEDGE_RECOVERY_BUS_RESET); + + /* Notify userspace of wedged device */ + drm_dev_wedged_event(&xe->drm, xe->wedged.method, NULL); +} + #define WEDGED_URL "https://docs.kernel.org/gpu/drm-uapi.html#device-wedging" #define XE_BUG_URL "https://gitlab.freedesktop.org/drm/xe/kernel/issues/new" @@ -1432,26 +1460,11 @@ void xe_device_declare_wedged(struct xe_device *xe) "For recovery procedure, refer to %s\n" "Please file a _new_ bug report at %s\n", WEDGED_URL, XE_BUG_URL); - } - for_each_initialized_gt(gt, xe, id) - xe_gt_declare_wedged(gt); + for_each_initialized_gt(gt, xe, id) + xe_gt_declare_wedged(gt); - if (xe_device_wedged(xe)) { - /* - * XE_WEDGED_MODE_UPON_ANY_HANG_NO_RESET is intended for debugging - * hangs, so wedge the device with 'none' recovery method and have - * it available to the user for debugging. - */ - if (xe->wedged.mode == XE_WEDGED_MODE_UPON_ANY_HANG_NO_RESET) - xe_device_set_wedged_method(xe, DRM_WEDGE_RECOVERY_NONE); - /* If no wedge recovery method is set, use default */ - else if (!xe->wedged.method) - xe_device_set_wedged_method(xe, DRM_WEDGE_RECOVERY_REBIND | - DRM_WEDGE_RECOVERY_BUS_RESET); - - /* Notify userspace of wedged device */ - drm_dev_wedged_event(&xe->drm, xe->wedged.method, NULL); + schedule_work(&xe->wedged.work); } } diff --git a/drivers/gpu/drm/xe/xe_device_types.h b/drivers/gpu/drm/xe/xe_device_types.h index 4e0e1bc040c1..ec5c1f0b8f00 100644 --- a/drivers/gpu/drm/xe/xe_device_types.h +++ b/drivers/gpu/drm/xe/xe_device_types.h @@ -547,6 +547,8 @@ struct xe_device { unsigned long method; /** @wedged.inconsistent_reset: Inconsistent reset policy state between GTs */ bool inconsistent_reset; + /** @wedged.work: Worker for wedge handling */ + struct work_struct work; } wedged; /** @devres_group: devres group */ -- 2.43.0 ^ permalink raw reply related [flat|nested] 16+ messages in thread
* Re: [PATCH v4 3/5] drm/xe: Make xe_device_declare_wedged() IRQ safe 2026-10-10 9:06 ` [PATCH v4 3/5] drm/xe: Make xe_device_declare_wedged() IRQ safe Raag Jadav @ 2026-10-10 9:19 ` sashiko-bot 2026-10-12 15:09 ` Raag Jadav 1 sibling, 0 replies; 16+ messages in thread From: sashiko-bot @ 2026-10-10 9:19 UTC (permalink / raw) To: Raag Jadav; +Cc: intel-xe Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider: - [Medium] drm/xe: data race on xe->wedged.method due to wedged_work concurrent execution -- commit 1b950e6e1cdfbf78ff8ea7b58f37f030e514ddf2 Author: Raag Jadav <raag.jadav@intel.com> drm/xe: Make xe_device_declare_wedged() IRQ safe Currently, xe_device_declare_wedged() implementation wedges the GTs and sends wedged uevent to userspace. This is problematic for usecases which require declaring the device as wedged in IRQ context, as it allocates memory for event buffer and acquires mutexes deep into it's call path. > diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/xe_device.c > index 1c3281c8d2863..f4536583e57ce 100644 > --- a/drivers/gpu/drm/xe/xe_device.c > +++ b/drivers/gpu/drm/xe/xe_device.c [ ... ] > @@ -1392,6 +1400,26 @@ void xe_device_set_wedged_method(struct xe_device *xe, unsigned long method) > xe->wedged.method = method; > } [Severity: Medium] Could this cause a data race on xe->wedged.method? Since xe_device_set_wedged_method() can be called from multiple RAS error handlers in a loop while processing hardware errors, it might write to xe->wedged.method while the newly added asynchronous worker is actively reading or modifying it. > +static void wedged_work(struct work_struct *work) > +{ > + struct xe_device *xe = container_of(work, struct xe_device, wedged.work); > + > + /* > + * XE_WEDGED_MODE_UPON_ANY_HANG_NO_RESET is intended for debugging > + * hangs, so wedge the device with 'none' recovery method and have > + * it available to the user for debugging. > + */ > + if (xe->wedged.mode == XE_WEDGED_MODE_UPON_ANY_HANG_NO_RESET) > + xe_device_set_wedged_method(xe, DRM_WEDGE_RECOVERY_NONE); > + /* If no wedge recovery method is set, use default */ > + else if (!xe->wedged.method) > + xe_device_set_wedged_method(xe, DRM_WEDGE_RECOVERY_REBIND | > + DRM_WEDGE_RECOVERY_BUS_RESET); > + > + /* Notify userspace of wedged device */ > + drm_dev_wedged_event(&xe->drm, xe->wedged.method, NULL); > +} [Severity: Medium] Is it possible for the wedged method to be corrupted here? If xe_ras_process_errors() processes hardware errors, the first error might set xe->wedged.method and call xe_device_declare_wedged() which schedules wedged.work. If the loop continues and a second error sets xe->wedged.method again, this sequential write could race with this worker concurrently reading and modifying xe->wedged.method on another CPU. This could lead to a corrupted or incorrect recovery method being passed to drm_dev_wedged_event(). -- Sashiko AI review · https://sashiko.dev/#/patchset/20261010090718.68308-1-raag.jadav@intel.com?part=3 ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH v4 3/5] drm/xe: Make xe_device_declare_wedged() IRQ safe 2026-10-10 9:06 ` [PATCH v4 3/5] drm/xe: Make xe_device_declare_wedged() IRQ safe Raag Jadav 2026-10-10 9:19 ` sashiko-bot @ 2026-10-12 15:09 ` Raag Jadav 1 sibling, 0 replies; 16+ messages in thread From: Raag Jadav @ 2026-10-12 15:09 UTC (permalink / raw) To: intel-xe Cc: riana.tauro, michal.wajdeczko, lukasz.laguna, matthew.d.roper, matthew.brost, mallesh.koujalagi, rodrigo.vivi On Sat, Oct 10, 2026 at 02:36:20PM +0530, Raag Jadav wrote: > Currently, xe_device_declare_wedged() implementation wedges the GTs and > sends wedged uevent to userspace. This is problematic for usecases which > require declaring the device as wedged in IRQ context, as it allocates > memory for event buffer and acquires mutexes deep into it's call path. > > Fix this by deferring wedge handling into its dedicated worker, so that > xe_device_declare_wedged() can be called in IRQ context. > > First user of this requirement is introduced in commit def675cf3f10 > ("drm/xe/mert: Improve handling of MERT CAT errors"), which declares the > device as wedged on catastrophic errors received in form of an IRQ. I just realized that this is fundamentally flawed. IRQ just means the device is in D0 state and doesn't necessarily indicate non-zero refcount which is a prerequisite for xe_device_declare_wedged() call. I'll be dropping this patch in next revision but the rest of the series still needs to land for other long standing stable fixes and debt cleanup. Raag > Fixes: def675cf3f10 ("drm/xe/mert: Improve handling of MERT CAT errors") > Signed-off-by: Raag Jadav <raag.jadav@intel.com> > Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com> > --- > v2: Split fixes into separate patches (Rodrigo, Michal) > --- > drivers/gpu/drm/xe/xe_device.c | 51 +++++++++++++++++----------- > drivers/gpu/drm/xe/xe_device_types.h | 2 ++ > 2 files changed, 34 insertions(+), 19 deletions(-) > > diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/xe_device.c > index 6ae1da578bda..2a7794aa71f9 100644 > --- a/drivers/gpu/drm/xe/xe_device.c > +++ b/drivers/gpu/drm/xe/xe_device.c > @@ -697,8 +697,16 @@ static int xe_device_vram_alloc(struct xe_device *xe) > return 0; > } > > +static void wedged_work(struct work_struct *work); > static void xe_device_wedged_fini(struct drm_device *drm, void *arg); > > +static int xe_device_wedged_init(struct xe_device *xe) > +{ > + INIT_WORK(&xe->wedged.work, wedged_work); > + > + return drmm_add_action_or_reset(&xe->drm, xe_device_wedged_fini, xe); > +} > + > /** > * xe_device_probe_early: Device early probe > * @xe: xe device instance > @@ -767,7 +775,7 @@ int xe_device_probe_early(struct xe_device *xe) > if (err) > return err; > > - err = drmm_add_action_or_reset(&xe->drm, xe_device_wedged_fini, xe); > + err = xe_device_wedged_init(xe); > if (err) > return err; > > @@ -1392,6 +1400,26 @@ void xe_device_set_wedged_method(struct xe_device *xe, unsigned long method) > xe->wedged.method = method; > } > > +static void wedged_work(struct work_struct *work) > +{ > + struct xe_device *xe = container_of(work, struct xe_device, wedged.work); > + > + /* > + * XE_WEDGED_MODE_UPON_ANY_HANG_NO_RESET is intended for debugging > + * hangs, so wedge the device with 'none' recovery method and have > + * it available to the user for debugging. > + */ > + if (xe->wedged.mode == XE_WEDGED_MODE_UPON_ANY_HANG_NO_RESET) > + xe_device_set_wedged_method(xe, DRM_WEDGE_RECOVERY_NONE); > + /* If no wedge recovery method is set, use default */ > + else if (!xe->wedged.method) > + xe_device_set_wedged_method(xe, DRM_WEDGE_RECOVERY_REBIND | > + DRM_WEDGE_RECOVERY_BUS_RESET); > + > + /* Notify userspace of wedged device */ > + drm_dev_wedged_event(&xe->drm, xe->wedged.method, NULL); > +} > + > #define WEDGED_URL "https://docs.kernel.org/gpu/drm-uapi.html#device-wedging" > #define XE_BUG_URL "https://gitlab.freedesktop.org/drm/xe/kernel/issues/new" > > @@ -1432,26 +1460,11 @@ void xe_device_declare_wedged(struct xe_device *xe) > "For recovery procedure, refer to %s\n" > "Please file a _new_ bug report at %s\n", > WEDGED_URL, XE_BUG_URL); > - } > > - for_each_initialized_gt(gt, xe, id) > - xe_gt_declare_wedged(gt); > + for_each_initialized_gt(gt, xe, id) > + xe_gt_declare_wedged(gt); > > - if (xe_device_wedged(xe)) { > - /* > - * XE_WEDGED_MODE_UPON_ANY_HANG_NO_RESET is intended for debugging > - * hangs, so wedge the device with 'none' recovery method and have > - * it available to the user for debugging. > - */ > - if (xe->wedged.mode == XE_WEDGED_MODE_UPON_ANY_HANG_NO_RESET) > - xe_device_set_wedged_method(xe, DRM_WEDGE_RECOVERY_NONE); > - /* If no wedge recovery method is set, use default */ > - else if (!xe->wedged.method) > - xe_device_set_wedged_method(xe, DRM_WEDGE_RECOVERY_REBIND | > - DRM_WEDGE_RECOVERY_BUS_RESET); > - > - /* Notify userspace of wedged device */ > - drm_dev_wedged_event(&xe->drm, xe->wedged.method, NULL); > + schedule_work(&xe->wedged.work); > } > } > > diff --git a/drivers/gpu/drm/xe/xe_device_types.h b/drivers/gpu/drm/xe/xe_device_types.h > index 4e0e1bc040c1..ec5c1f0b8f00 100644 > --- a/drivers/gpu/drm/xe/xe_device_types.h > +++ b/drivers/gpu/drm/xe/xe_device_types.h > @@ -547,6 +547,8 @@ struct xe_device { > unsigned long method; > /** @wedged.inconsistent_reset: Inconsistent reset policy state between GTs */ > bool inconsistent_reset; > + /** @wedged.work: Worker for wedge handling */ > + struct work_struct work; > } wedged; > > /** @devres_group: devres group */ > -- > 2.43.0 > ^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH v4 4/5] drm/xe: Introduce xe_wedge 2026-10-10 9:06 [PATCH v4 0/5] Introduce xe_wedge Raag Jadav ` (2 preceding siblings ...) 2026-10-10 9:06 ` [PATCH v4 3/5] drm/xe: Make xe_device_declare_wedged() IRQ safe Raag Jadav @ 2026-10-10 9:06 ` Raag Jadav 2026-10-12 20:46 ` Matthew Brost 2026-10-10 9:06 ` [PATCH v4 5/5] drm/xe/ras: Move xe_ras_process_errors() to xe_ras Raag Jadav ` (4 subsequent siblings) 8 siblings, 1 reply; 16+ messages in thread From: Raag Jadav @ 2026-10-10 9:06 UTC (permalink / raw) To: intel-xe Cc: riana.tauro, michal.wajdeczko, lukasz.laguna, matthew.d.roper, matthew.brost, mallesh.koujalagi, rodrigo.vivi, Raag Jadav Consolidate wedging implementation into a dedicated xe_wedge component for better maintainability. While at it, rename all wedge helpers to match with component name. No functional impact. Signed-off-by: Raag Jadav <raag.jadav@intel.com> --- v2: Also move struct xe_wedge and wedged_mode debt to xe_wedge (Lukasz, Michal) Naming and aesthetic adjustments (Lukasz, Michal) v3: Respect the component namespace (Rodrigo) Avoid chaining header includes (Rodrigo) Squash debugfs changes with xe_wedge patch (Lukasz) v4: Include xe_sriov.h (Rodrigo) --- Documentation/gpu/xe/xe_device.rst | 2 +- drivers/gpu/drm/xe/Makefile | 1 + drivers/gpu/drm/xe/tests/xe_kunit_helpers.c | 3 +- drivers/gpu/drm/xe/xe_amc.c | 3 +- drivers/gpu/drm/xe/xe_bo.c | 3 +- drivers/gpu/drm/xe/xe_debugfs.c | 66 +---- drivers/gpu/drm/xe/xe_device.c | 194 +------------ drivers/gpu/drm/xe/xe_device.h | 10 - drivers/gpu/drm/xe/xe_device_types.h | 30 +- drivers/gpu/drm/xe/xe_gsc.c | 3 +- drivers/gpu/drm/xe/xe_gt.c | 11 +- drivers/gpu/drm/xe/xe_gt.h | 2 +- drivers/gpu/drm/xe/xe_gt_sriov_vf.c | 3 +- drivers/gpu/drm/xe/xe_guc.c | 4 +- drivers/gpu/drm/xe/xe_guc.h | 2 +- drivers/gpu/drm/xe/xe_guc_ct.c | 7 +- drivers/gpu/drm/xe/xe_guc_pc.c | 11 +- drivers/gpu/drm/xe/xe_guc_rc.c | 5 +- drivers/gpu/drm/xe/xe_guc_submit.c | 13 +- drivers/gpu/drm/xe/xe_guc_tlb_inval.c | 3 +- drivers/gpu/drm/xe/xe_mert.c | 5 +- drivers/gpu/drm/xe/xe_pci_error.c | 9 +- drivers/gpu/drm/xe/xe_ras.c | 5 +- drivers/gpu/drm/xe/xe_sriov_pf.c | 3 +- drivers/gpu/drm/xe/xe_survivability_mode.c | 5 +- drivers/gpu/drm/xe/xe_uc.c | 6 +- drivers/gpu/drm/xe/xe_uc.h | 2 +- drivers/gpu/drm/xe/xe_wedge.c | 287 ++++++++++++++++++++ drivers/gpu/drm/xe/xe_wedge.h | 20 ++ drivers/gpu/drm/xe/xe_wedge_types.h | 45 +++ 30 files changed, 426 insertions(+), 337 deletions(-) create mode 100644 drivers/gpu/drm/xe/xe_wedge.c create mode 100644 drivers/gpu/drm/xe/xe_wedge.h create mode 100644 drivers/gpu/drm/xe/xe_wedge_types.h diff --git a/Documentation/gpu/xe/xe_device.rst b/Documentation/gpu/xe/xe_device.rst index d3a022362ade..8baed81580c9 100644 --- a/Documentation/gpu/xe/xe_device.rst +++ b/Documentation/gpu/xe/xe_device.rst @@ -6,7 +6,7 @@ Xe Device Wedging ================== -.. kernel-doc:: drivers/gpu/drm/xe/xe_device.c +.. kernel-doc:: drivers/gpu/drm/xe/xe_wedge.c :doc: Xe Device Wedging ==================== diff --git a/drivers/gpu/drm/xe/Makefile b/drivers/gpu/drm/xe/Makefile index 011f7ef54086..bc203940f114 100644 --- a/drivers/gpu/drm/xe/Makefile +++ b/drivers/gpu/drm/xe/Makefile @@ -154,6 +154,7 @@ xe-y += xe_bb.o \ xe_vsec.o \ xe_wa.o \ xe_wait_user_fence.o \ + xe_wedge.o \ xe_wopcm.o xe-$(CONFIG_I2C) += xe_i2c.o \ diff --git a/drivers/gpu/drm/xe/tests/xe_kunit_helpers.c b/drivers/gpu/drm/xe/tests/xe_kunit_helpers.c index 27740b40c8ae..57ea88cce92d 100644 --- a/drivers/gpu/drm/xe/tests/xe_kunit_helpers.c +++ b/drivers/gpu/drm/xe/tests/xe_kunit_helpers.c @@ -15,6 +15,7 @@ #include "xe_device.h" #include "xe_device_types.h" #include "xe_pm.h" +#include "xe_wedge.h" /** * xe_kunit_helper_alloc_xe_device - Allocate a &xe_device for a KUnit test. @@ -123,7 +124,7 @@ int xe_kunit_helper_xe_device_live_test_init(struct kunit *test) KUNIT_ASSERT_NOT_ERR_OR_NULL(test, xe); kunit_info(test, "running on %s device\n", xe->info.platform_name); - KUNIT_ASSERT_FALSE(test, xe_device_wedged(xe)); + KUNIT_ASSERT_FALSE(test, xe_wedged(xe)); xe_pm_runtime_get(xe); KUNIT_ASSERT_EQ(test, 0, kunit_add_action_or_reset(test, put_xe_pm_runtime, xe)); diff --git a/drivers/gpu/drm/xe/xe_amc.c b/drivers/gpu/drm/xe/xe_amc.c index 8ecadee6eea3..ca8013d7f569 100644 --- a/drivers/gpu/drm/xe/xe_amc.c +++ b/drivers/gpu/drm/xe/xe_amc.c @@ -18,6 +18,7 @@ #include "xe_device.h" #include "xe_i2c.h" #include "xe_mmio.h" +#include "xe_wedge.h" /** * DOC: Add-In Management Controller (AMC) @@ -160,7 +161,7 @@ static void xe_amc_work(struct work_struct *work) case AMC_ALERT_OOB_RESET: case AMC_ALERT_CATERR: dev_warn(amc->i2c->drm_dev, "AMC Alert: %s\n", amc_alert[alert_reason]); - xe_device_declare_wedged(i2c_client_to_xe_device(client)); + xe_wedge_declare(i2c_client_to_xe_device(client)); break; default: dev_warn(amc->i2c->drm_dev, "unknown AMC alert: %d\n", alert_reason); diff --git a/drivers/gpu/drm/xe/xe_bo.c b/drivers/gpu/drm/xe/xe_bo.c index cc78283b702c..4749ea57527c 100644 --- a/drivers/gpu/drm/xe/xe_bo.c +++ b/drivers/gpu/drm/xe/xe_bo.c @@ -41,6 +41,7 @@ #include "xe_ttm_stolen_mgr.h" #include "xe_vm.h" #include "xe_vram_types.h" +#include "xe_wedge.h" const char *const xe_mem_type_to_name[TTM_NUM_MEM_TYPES] = { [XE_PL_SYSTEM] = "system", @@ -2197,7 +2198,7 @@ static vm_fault_t xe_bo_cpu_fault(struct vm_fault *vmf) int err = 0; int idx; - if (xe_device_wedged(xe) || !drm_dev_enter(&xe->drm, &idx)) + if (xe_wedged(xe) || !drm_dev_enter(&xe->drm, &idx)) return ttm_bo_vm_dummy_page(vmf, vmf->vma->vm_page_prot); ret = xe_bo_cpu_fault_fastpath(vmf, xe, bo, needs_rpm); diff --git a/drivers/gpu/drm/xe/xe_debugfs.c b/drivers/gpu/drm/xe/xe_debugfs.c index 926020c7526e..e59d4964d811 100644 --- a/drivers/gpu/drm/xe/xe_debugfs.c +++ b/drivers/gpu/drm/xe/xe_debugfs.c @@ -18,13 +18,12 @@ #include "xe_force_wake.h" #include "xe_gt.h" #include "xe_gt_debugfs.h" -#include "xe_gt_printk.h" -#include "xe_guc_ads.h" #include "xe_hw_engine.h" #include "xe_mmio.h" #include "xe_pagefault.h" #include "xe_pcode.h" #include "xe_pm.h" +#include "xe_printk.h" #include "xe_psmi.h" #include "xe_pxp_debugfs.h" #include "xe_sriov.h" @@ -36,6 +35,7 @@ #include "xe_ttm_vram_mgr.h" #include "xe_vsec.h" #include "xe_wa.h" +#include "xe_wedge.h" #ifdef CONFIG_DRM_XE_DEBUG #include "xe_bo_evict.h" @@ -424,58 +424,6 @@ static ssize_t wedged_mode_show(struct file *f, char __user *ubuf, return simple_read_from_buffer(ubuf, size, pos, buf, len); } -static int __wedged_mode_set_reset_policy(struct xe_gt *gt, enum xe_wedged_mode mode) -{ - bool enable_engine_reset; - int ret; - - enable_engine_reset = (mode != XE_WEDGED_MODE_UPON_ANY_HANG_NO_RESET); - ret = xe_guc_ads_scheduler_policy_toggle_reset(>->uc.guc.ads, - enable_engine_reset); - if (ret) - xe_gt_err(gt, "Failed to update GuC ADS scheduler policy (%pe)\n", ERR_PTR(ret)); - - return ret; -} - -static int wedged_mode_set_reset_policy(struct xe_device *xe, enum xe_wedged_mode mode) -{ - struct xe_gt *gt; - int ret; - u8 id; - - guard(xe_pm_runtime)(xe); - for_each_gt(gt, xe, id) { - ret = __wedged_mode_set_reset_policy(gt, mode); - if (ret) { - if (id > 0) { - xe->wedged.inconsistent_reset = true; - drm_err(&xe->drm, "Inconsistent reset policy state between GTs\n"); - } - return ret; - } - } - - xe->wedged.inconsistent_reset = false; - - return 0; -} - -static bool wedged_mode_needs_policy_update(struct xe_device *xe, enum xe_wedged_mode mode) -{ - if (xe->wedged.inconsistent_reset) - return true; - - if (xe->wedged.mode == mode) - return false; - - if (xe->wedged.mode == XE_WEDGED_MODE_UPON_ANY_HANG_NO_RESET || - mode == XE_WEDGED_MODE_UPON_ANY_HANG_NO_RESET) - return true; - - return false; -} - static ssize_t wedged_mode_set(struct file *f, const char __user *ubuf, size_t size, loff_t *pos) { @@ -487,18 +435,10 @@ static ssize_t wedged_mode_set(struct file *f, const char __user *ubuf, if (ret) return ret; - ret = xe_device_validate_wedged_mode(xe, wedged_mode); + ret = xe_wedge_set_mode(xe, wedged_mode); if (ret) return ret; - if (wedged_mode_needs_policy_update(xe, wedged_mode)) { - ret = wedged_mode_set_reset_policy(xe, wedged_mode); - if (ret) - return ret; - } - - xe->wedged.mode = wedged_mode; - return size; } diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/xe_device.c index 2a7794aa71f9..e0466390219c 100644 --- a/drivers/gpu/drm/xe/xe_device.c +++ b/drivers/gpu/drm/xe/xe_device.c @@ -81,6 +81,7 @@ #include "xe_vsec.h" #include "xe_wait_user_fence.h" #include "xe_wa.h" +#include "xe_wedge.h" #include <generated/xe_device_wa_oob.h> #include <generated/xe_wa_oob.h> @@ -238,7 +239,7 @@ static long xe_drm_ioctl(struct file *file, unsigned int cmd, unsigned long arg) struct xe_device *xe = to_xe_device(file_priv->minor->dev); long ret; - if (xe_device_wedged(xe)) + if (xe_wedged(xe)) return -ECANCELED; ACQUIRE(xe_pm_runtime_ioctl, pm)(xe); @@ -256,7 +257,7 @@ static long xe_drm_compat_ioctl(struct file *file, unsigned int cmd, unsigned lo struct xe_device *xe = to_xe_device(file_priv->minor->dev); long ret; - if (xe_device_wedged(xe)) + if (xe_wedged(xe)) return -ECANCELED; ACQUIRE(xe_pm_runtime_ioctl, pm)(xe); @@ -697,16 +698,6 @@ static int xe_device_vram_alloc(struct xe_device *xe) return 0; } -static void wedged_work(struct work_struct *work); -static void xe_device_wedged_fini(struct drm_device *drm, void *arg); - -static int xe_device_wedged_init(struct xe_device *xe) -{ - INIT_WORK(&xe->wedged.work, wedged_work); - - return drmm_add_action_or_reset(&xe->drm, xe_device_wedged_fini, xe); -} - /** * xe_device_probe_early: Device early probe * @xe: xe device instance @@ -766,16 +757,11 @@ int xe_device_probe_early(struct xe_device *xe) */ assert_lmem_ready(xe); - xe->wedged.mode = xe_device_validate_wedged_mode(xe, xe_modparam.wedged_mode) ? - XE_DEFAULT_WEDGED_MODE : xe_modparam.wedged_mode; - drm_dbg(&xe->drm, "wedged_mode: setting mode (%u) %s\n", - xe->wedged.mode, xe_wedged_mode_to_string(xe->wedged.mode)); - err = xe_device_vram_alloc(xe); if (err) return err; - err = xe_device_wedged_init(xe); + err = xe_wedge_init(xe); if (err) return err; @@ -865,14 +851,6 @@ static void detect_preproduction_hw(struct xe_device *xe) } } -static void xe_device_wedged_fini(struct drm_device *drm, void *arg) -{ - struct xe_device *xe = arg; - - if (atomic_read(&xe->wedged.flag)) - xe_pm_runtime_put(xe); -} - #ifdef CONFIG_DRM_XE_DEBUG_PAGE_SIZE static int xe_debug_page_size_alloc_ctrl_init(struct xe_device *xe) { @@ -1112,7 +1090,7 @@ int xe_device_probe(struct xe_device *xe) /* * Process and log any errors detected by hardware. Possible results can * include declaring the device as wedged, which must be done only after - * xe_device_wedged_fini() is registered. + * xe_wedge_fini() is registered. */ xe_ras_process_errors(xe); @@ -1351,168 +1329,6 @@ u64 xe_device_uncanonicalize_addr(struct xe_device *xe, u64 address) return address & GENMASK_ULL(xe->info.va_bits - 1, 0); } -/** - * DOC: Xe Device Wedging - * - * Xe driver uses drm device wedged uevent as documented in Documentation/gpu/drm-uapi.rst. - * When device is in wedged state, every IOCTL will be blocked and GT cannot - * be used. The conditions under which the driver declares the device wedged - * depend on the wedged mode configuration (see &enum xe_wedged_mode). The - * default recovery method for a wedged state is rebind/bus-reset. - * - * Another recovery method is vendor-specific. Below are the cases that send - * ``WEDGED=vendor-specific`` recovery method in drm device wedged uevent. - * - * Case: Firmware Flash - * -------------------- - * - * Identification Hint - * +++++++++++++++++++ - * - * ``WEDGED=vendor-specific`` drm device wedged uevent with - * :ref:`Runtime Survivability mode <xe-survivability-mode>` is used to notify - * admin/userspace consumer about the need for a firmware flash. - * - * Recovery Procedure - * ++++++++++++++++++ - * - * Once ``WEDGED=vendor-specific`` drm device wedged uevent is received, follow - * the below steps - * - * - Check Runtime Survivability mode sysfs. - * If enabled, firmware flash is required to recover the device. - * - * /sys/bus/pci/devices/<device>/survivability_mode - * - * - Admin/userspace consumer can use firmware flashing tools like fwupd to flash - * firmware and restore device to normal operation. - */ - -/** - * xe_device_set_wedged_method - Set wedged recovery method - * @xe: xe device instance - * @method: recovery method to set - * - * Set wedged recovery method to be sent in drm wedged uevent. - */ -void xe_device_set_wedged_method(struct xe_device *xe, unsigned long method) -{ - xe->wedged.method = method; -} - -static void wedged_work(struct work_struct *work) -{ - struct xe_device *xe = container_of(work, struct xe_device, wedged.work); - - /* - * XE_WEDGED_MODE_UPON_ANY_HANG_NO_RESET is intended for debugging - * hangs, so wedge the device with 'none' recovery method and have - * it available to the user for debugging. - */ - if (xe->wedged.mode == XE_WEDGED_MODE_UPON_ANY_HANG_NO_RESET) - xe_device_set_wedged_method(xe, DRM_WEDGE_RECOVERY_NONE); - /* If no wedge recovery method is set, use default */ - else if (!xe->wedged.method) - xe_device_set_wedged_method(xe, DRM_WEDGE_RECOVERY_REBIND | - DRM_WEDGE_RECOVERY_BUS_RESET); - - /* Notify userspace of wedged device */ - drm_dev_wedged_event(&xe->drm, xe->wedged.method, NULL); -} - -#define WEDGED_URL "https://docs.kernel.org/gpu/drm-uapi.html#device-wedging" -#define XE_BUG_URL "https://gitlab.freedesktop.org/drm/xe/kernel/issues/new" - -/** - * xe_device_declare_wedged - Declare device wedged - * @xe: xe device instance - * - * This is a final state that can only be cleared with the recovery method - * specified in the drm wedged uevent. The method can be set using - * xe_device_set_wedged_method before declaring the device as wedged. If no method - * is set, reprobe (unbind/re-bind) will be sent by default. - * - * In this state every IOCTL will be blocked so the GT cannot be used. - * In general it will be called upon any critical error such as gt reset - * failure or guc loading failure. Userspace will be notified of this state - * through device wedged uevent. - * If xe.wedged module parameter is set to 2, this function will be called - * on every single execution timeout (a.k.a. GPU hang) right after devcoredump - * snapshot capture. In this mode, GT reset won't be attempted so the state of - * the issue is preserved for further debugging. - */ -void xe_device_declare_wedged(struct xe_device *xe) -{ - struct xe_gt *gt; - u8 id; - - if (xe->wedged.mode == XE_WEDGED_MODE_NEVER) { - drm_dbg(&xe->drm, "Wedged mode is forcibly disabled\n"); - return; - } - - if (!atomic_xchg(&xe->wedged.flag, 1)) { - xe->needs_flr_on_fini = true; - xe_pm_runtime_get_noresume(xe); - - xe_log_err_fatal(xe, WEDGED, -EIO, "Device declared wedged!\n"); - xe_err_once(xe, "IOCTLs and executions are now blocked!\n" - "For recovery procedure, refer to %s\n" - "Please file a _new_ bug report at %s\n", - WEDGED_URL, XE_BUG_URL); - - for_each_initialized_gt(gt, xe, id) - xe_gt_declare_wedged(gt); - - schedule_work(&xe->wedged.work); - } -} - -/** - * xe_device_validate_wedged_mode - Check if given mode is supported - * @xe: the &xe_device - * @mode: requested mode to validate - * - * Check whether the provided wedged mode is supported. - * - * Return: 0 if mode is supported, error code otherwise. - */ -int xe_device_validate_wedged_mode(struct xe_device *xe, unsigned int mode) -{ - if (mode > XE_WEDGED_MODE_UPON_ANY_HANG_NO_RESET) { - drm_dbg(&xe->drm, "wedged_mode: invalid value (%u)\n", mode); - return -EINVAL; - } else if (mode == XE_WEDGED_MODE_UPON_ANY_HANG_NO_RESET && (IS_SRIOV_VF(xe) || - (IS_SRIOV_PF(xe) && !IS_ENABLED(CONFIG_DRM_XE_DEBUG)))) { - drm_dbg(&xe->drm, "wedged_mode: (%u) %s mode is not supported for %s\n", - mode, xe_wedged_mode_to_string(mode), - xe_sriov_mode_to_string(xe_device_sriov_mode(xe))); - return -EPERM; - } - - return 0; -} - -/** - * xe_wedged_mode_to_string - Convert enum value to string. - * @mode: the &xe_wedged_mode to convert - * - * Returns: wedged mode as a user friendly string. - */ -const char *xe_wedged_mode_to_string(enum xe_wedged_mode mode) -{ - switch (mode) { - case XE_WEDGED_MODE_NEVER: - return "never"; - case XE_WEDGED_MODE_UPON_CRITICAL_ERROR: - return "upon-critical-error"; - case XE_WEDGED_MODE_UPON_ANY_HANG_NO_RESET: - return "upon-any-hang-no-reset"; - default: - return "<invalid>"; - } -} - /** * xe_device_asid_to_vm() - Find VM from ASID * @xe: the &xe_device diff --git a/drivers/gpu/drm/xe/xe_device.h b/drivers/gpu/drm/xe/xe_device.h index 9b09e627af8c..93caa5b3de86 100644 --- a/drivers/gpu/drm/xe/xe_device.h +++ b/drivers/gpu/drm/xe/xe_device.h @@ -211,11 +211,6 @@ bool xe_device_is_l2_flush_optimized(struct xe_device *xe); void xe_device_td_flush(struct xe_device *xe); void xe_device_l2_flush(struct xe_device *xe, bool force); -static inline bool xe_device_wedged(struct xe_device *xe) -{ - return atomic_read(&xe->wedged.flag); -} - #ifdef CONFIG_DRM_XE_DEBUG_PAGE_SIZE static inline bool xe_debug_page_size_supported(struct xe_device *xe) { @@ -264,11 +259,6 @@ static inline bool xe_debug_page_size_mode_is_mixed(struct xe_device *xe) } #endif -void xe_device_set_wedged_method(struct xe_device *xe, unsigned long method); -void xe_device_declare_wedged(struct xe_device *xe); -int xe_device_validate_wedged_mode(struct xe_device *xe, unsigned int mode); -const char *xe_wedged_mode_to_string(enum xe_wedged_mode mode); - struct xe_file *xe_file_get(struct xe_file *xef); void xe_file_put(struct xe_file *xef); diff --git a/drivers/gpu/drm/xe/xe_device_types.h b/drivers/gpu/drm/xe/xe_device_types.h index ec5c1f0b8f00..25b38258b629 100644 --- a/drivers/gpu/drm/xe/xe_device_types.h +++ b/drivers/gpu/drm/xe/xe_device_types.h @@ -30,6 +30,7 @@ #include "xe_sysctrl_types.h" #include "xe_tile_types.h" #include "xe_validation.h" +#include "xe_wedge_types.h" #if IS_ENABLED(CONFIG_DRM_XE_DEBUG) #define TEST_VM_OPS_ERROR @@ -47,22 +48,6 @@ struct xe_pxp; struct xe_ttm_stolen_mgr; struct xe_vram_region; -/** - * enum xe_wedged_mode - possible wedged modes - * @XE_WEDGED_MODE_NEVER: Device will never be declared wedged. - * @XE_WEDGED_MODE_UPON_CRITICAL_ERROR: Device will be declared wedged only - * when critical error occurs like GT reset failure or firmware failure. - * This is the default mode. - * @XE_WEDGED_MODE_UPON_ANY_HANG_NO_RESET: Device will be declared wedged on - * any hang. In this mode, engine resets are disabled to avoid automatic - * recovery attempts. This mode is primarily intended for debugging hangs. - */ -enum xe_wedged_mode { - XE_WEDGED_MODE_NEVER = 0, - XE_WEDGED_MODE_UPON_CRITICAL_ERROR = 1, - XE_WEDGED_MODE_UPON_ANY_HANG_NO_RESET = 2, -}; - #ifdef CONFIG_DRM_XE_DEBUG_PAGE_SIZE /** * enum xe_page_size_alloc_ctrl_mode - User BO page-size allocation control modes @@ -538,18 +523,7 @@ struct xe_device { atomic_t in_reset; /** @wedged: Struct to control Wedged States and mode */ - struct { - /** @wedged.flag: Xe device faced a critical error and is now blocked. */ - atomic_t flag; - /** @wedged.mode: Mode controlled by kernel parameter and debugfs */ - enum xe_wedged_mode mode; - /** @wedged.method: Recovery method to be sent in the drm device wedged uevent */ - unsigned long method; - /** @wedged.inconsistent_reset: Inconsistent reset policy state between GTs */ - bool inconsistent_reset; - /** @wedged.work: Worker for wedge handling */ - struct work_struct work; - } wedged; + struct xe_wedge wedged; /** @devres_group: devres group */ void *devres_group; diff --git a/drivers/gpu/drm/xe/xe_gsc.c b/drivers/gpu/drm/xe/xe_gsc.c index 524ac56bdcc7..cd333f2a6632 100644 --- a/drivers/gpu/drm/xe/xe_gsc.c +++ b/drivers/gpu/drm/xe/xe_gsc.c @@ -31,6 +31,7 @@ #include "xe_sched_job.h" #include "xe_uc_fw.h" #include "xe_wa.h" +#include "xe_wedge.h" #include "instructions/xe_gsc_commands.h" #include "regs/xe_gsc_regs.h" #include "regs/xe_gt_regs.h" @@ -340,7 +341,7 @@ static int gsc_er_complete(struct xe_gt *gt) * declare the device as wedged. */ xe_gt_err(gt, "GSC ER timed out!\n"); - xe_device_declare_wedged(gt_to_xe(gt)); + xe_wedge_declare(gt_to_xe(gt)); return -EIO; } diff --git a/drivers/gpu/drm/xe/xe_gt.c b/drivers/gpu/drm/xe/xe_gt.c index d762158c0777..a5aa947ea295 100644 --- a/drivers/gpu/drm/xe/xe_gt.c +++ b/drivers/gpu/drm/xe/xe_gt.c @@ -68,6 +68,7 @@ #include "xe_uc_fw.h" #include "xe_vm.h" #include "xe_wa.h" +#include "xe_wedge.h" #include "xe_wopcm.h" #define GRDOM_RESET_TIMEOUT_MS 5 @@ -933,7 +934,7 @@ static void gt_reset_worker(struct work_struct *w) unsigned int fw_ref; int err; - if (xe_device_wedged(gt_to_xe(gt))) + if (xe_wedged(gt_to_xe(gt))) goto err_pm_put; if (xe_device_is_in_reset(gt_to_xe(gt))) @@ -992,7 +993,7 @@ static void gt_reset_worker(struct work_struct *w) err_fail: xe_log_err_fatal(gt, GT, err, "reset failed\n"); - xe_device_declare_wedged(gt_to_xe(gt)); + xe_wedge_declare(gt_to_xe(gt)); err_pm_put: xe_pm_runtime_put(gt_to_xe(gt)); } @@ -1020,7 +1021,7 @@ static void gt_wedge_worker(struct work_struct *w) { struct xe_gt *gt = container_of(w, typeof(*gt), wedge.worker); - xe_uc_declare_wedged(>->uc); + xe_uc_wedge_declare(>->uc); xe_tlb_inval_reset(>->tlb_inval); } @@ -1204,13 +1205,13 @@ struct xe_hw_engine *xe_gt_any_hw_engine(struct xe_gt *gt) } /** - * xe_gt_declare_wedged() - Declare GT wedged + * xe_gt_wedge_declare() - Declare GT wedged * @gt: the GT object * * Wedge the GT which stops all submission, saves desired debug state, and * cleans up anything which could timeout. */ -void xe_gt_declare_wedged(struct xe_gt *gt) +void xe_gt_wedge_declare(struct xe_gt *gt) { xe_gt_assert(gt, gt_to_xe(gt)->wedged.mode); diff --git a/drivers/gpu/drm/xe/xe_gt.h b/drivers/gpu/drm/xe/xe_gt.h index 92d934d50244..7b6952fe804c 100644 --- a/drivers/gpu/drm/xe/xe_gt.h +++ b/drivers/gpu/drm/xe/xe_gt.h @@ -40,7 +40,7 @@ struct xe_gt *xe_gt_alloc(struct xe_tile *tile); int xe_gt_init_early(struct xe_gt *gt); int xe_gt_init(struct xe_gt *gt); void xe_gt_mmio_init(struct xe_gt *gt); -void xe_gt_declare_wedged(struct xe_gt *gt); +void xe_gt_wedge_declare(struct xe_gt *gt); int xe_gt_record_default_lrcs(struct xe_gt *gt); /** diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_vf.c b/drivers/gpu/drm/xe/xe_gt_sriov_vf.c index 37899fcf5b22..0007fb21908f 100644 --- a/drivers/gpu/drm/xe/xe_gt_sriov_vf.c +++ b/drivers/gpu/drm/xe/xe_gt_sriov_vf.c @@ -37,6 +37,7 @@ #include "xe_tile_sriov_vf.h" #include "xe_tlb_inval.h" #include "xe_uc_fw.h" +#include "xe_wedge.h" #include "xe_wopcm.h" #define make_u64_from_u32(hi, lo) ((u64)((u64)(u32)(hi) << 32 | (u32)(lo))) @@ -1462,7 +1463,7 @@ static void vf_post_migration_recovery(struct xe_gt *gt) fail: vf_post_migration_abort(gt); xe_gt_sriov_err(gt, "migration recovery failed (%pe)\n", ERR_PTR(err)); - xe_device_declare_wedged(xe); + xe_wedge_declare(xe); return; queue: diff --git a/drivers/gpu/drm/xe/xe_guc.c b/drivers/gpu/drm/xe/xe_guc.c index 3ab4cb9e4964..7d239a0829fb 100644 --- a/drivers/gpu/drm/xe/xe_guc.c +++ b/drivers/gpu/drm/xe/xe_guc.c @@ -1829,13 +1829,13 @@ int xe_guc_print_info(struct xe_guc *guc, struct drm_printer *p) } /** - * xe_guc_declare_wedged() - Declare GuC wedged + * xe_guc_wedge_declare() - Declare GuC wedged * @guc: the GuC object * * Wedge the GuC which stops all submission, saves desired debug state, and * cleans up anything which could timeout. */ -void xe_guc_declare_wedged(struct xe_guc *guc) +void xe_guc_wedge_declare(struct xe_guc *guc) { xe_gt_assert(guc_to_gt(guc), guc_to_xe(guc)->wedged.mode); diff --git a/drivers/gpu/drm/xe/xe_guc.h b/drivers/gpu/drm/xe/xe_guc.h index c4eca40d69cf..75c4b9acb065 100644 --- a/drivers/gpu/drm/xe/xe_guc.h +++ b/drivers/gpu/drm/xe/xe_guc.h @@ -62,7 +62,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_declare_wedged(struct xe_guc *guc); +void xe_guc_wedge_declare(struct xe_guc *guc); bool xe_guc_using_main_gamctrl_queues(struct xe_guc *guc); bool xe_guc_has_paging_engine(struct xe_guc *guc); diff --git a/drivers/gpu/drm/xe/xe_guc_ct.c b/drivers/gpu/drm/xe/xe_guc_ct.c index da5ce97484b8..7ab51c97f42a 100644 --- a/drivers/gpu/drm/xe/xe_guc_ct.c +++ b/drivers/gpu/drm/xe/xe_guc_ct.c @@ -36,6 +36,7 @@ #include "xe_sleep.h" #include "xe_sriov_vf.h" #include "xe_trace_guc.h" +#include "xe_wedge.h" static void receive_g2h(struct xe_guc_ct *ct); static void g2h_worker_func(struct work_struct *w); @@ -1064,7 +1065,7 @@ static int __guc_ct_send_locked(struct xe_guc_ct *ct, const u32 *action, xe_gt_assert(gt, g2h_len || !num_g2h); lockdep_assert_held(&ct->lock); - if (xe_device_wedged(ct_to_xe(ct))) { + if (xe_wedged(ct_to_xe(ct))) { ret = -ENOTRECOVERABLE; goto out; } @@ -1489,7 +1490,7 @@ static int guc_ct_send_recv(struct xe_guc_ct *ct, const u32 *action, u32 len, if (g2h_fence.fail) { if (g2h_fence.cancel) { xe_gt_dbg(gt, "H2G request %#x canceled!\n", action[0]); - ret = xe_device_wedged(ct_to_xe(ct)) ? -ENOTRECOVERABLE : -ECANCELED; + ret = xe_wedged(ct_to_xe(ct)) ? -ENOTRECOVERABLE : -ECANCELED; goto unlock; } xe_gt_err(gt, "H2G request %#x failed: error %#x hint %#x\n", @@ -1828,7 +1829,7 @@ static int g2h_read(struct xe_guc_ct *ct, u32 *msg, bool fast_path) xe_gt_assert(gt, xe_guc_ct_initialized(ct)); lockdep_assert_held(&ct->fast_lock); - if (xe_device_wedged(xe)) + if (xe_wedged(xe)) return -ENOTRECOVERABLE; if (ct->state == XE_GUC_CT_STATE_DISABLED) diff --git a/drivers/gpu/drm/xe/xe_guc_pc.c b/drivers/gpu/drm/xe/xe_guc_pc.c index e0105222a2c7..9558d7196a51 100644 --- a/drivers/gpu/drm/xe/xe_guc_pc.c +++ b/drivers/gpu/drm/xe/xe_guc_pc.c @@ -36,6 +36,7 @@ #include "xe_pm.h" #include "xe_sriov.h" #include "xe_wa.h" +#include "xe_wedge.h" #define MCHBAR_MIRROR_BASE_SNB 0x140000 @@ -188,7 +189,7 @@ static int pc_action_reset(struct xe_guc_pc *pc) int ret; ret = xe_guc_ct_send(ct, action, ARRAY_SIZE(action), 0, 0); - if (ret && !(xe_device_wedged(pc_to_xe(pc)) && ret == -ECANCELED)) + if (ret && !(xe_wedged(pc_to_xe(pc)) && ret == -ECANCELED)) xe_gt_err(pc_to_gt(pc), "GuC PC reset failed: %pe\n", ERR_PTR(ret)); @@ -212,7 +213,7 @@ static int pc_action_query_task_state(struct xe_guc_pc *pc) /* Blocking here to ensure the results are ready before reading them */ ret = xe_guc_ct_send_block(ct, action, ARRAY_SIZE(action)); - if (ret && !(xe_device_wedged(pc_to_xe(pc)) && ret == -ECANCELED)) + if (ret && !(xe_wedged(pc_to_xe(pc)) && ret == -ECANCELED)) xe_gt_err(pc_to_gt(pc), "GuC PC query task state failed: %pe\n", ERR_PTR(ret)); @@ -235,7 +236,7 @@ static int pc_action_set_param(struct xe_guc_pc *pc, u8 id, u32 value) return -EAGAIN; ret = xe_guc_ct_send(ct, action, ARRAY_SIZE(action), 0, 0); - if (ret && !(xe_device_wedged(pc_to_xe(pc)) && ret == -ECANCELED)) + if (ret && !(xe_wedged(pc_to_xe(pc)) && ret == -ECANCELED)) xe_gt_err(pc_to_gt(pc), "GuC PC set param[%u]=%u failed: %pe\n", id, value, ERR_PTR(ret)); @@ -257,7 +258,7 @@ static int pc_action_unset_param(struct xe_guc_pc *pc, u8 id) return -EAGAIN; ret = xe_guc_ct_send(ct, action, ARRAY_SIZE(action), 0, 0); - if (ret && !(xe_device_wedged(pc_to_xe(pc)) && ret == -ECANCELED)) + if (ret && !(xe_wedged(pc_to_xe(pc)) && ret == -ECANCELED)) xe_gt_err(pc_to_gt(pc), "GuC PC unset param failed: %pe", ERR_PTR(ret)); @@ -1357,7 +1358,7 @@ static void xe_guc_pc_fini_hw(void *arg) struct xe_guc_pc *pc = arg; struct xe_device *xe = pc_to_xe(pc); - if (xe_device_wedged(xe)) + if (xe_wedged(xe)) return; xe_guc_pc_stop(pc); diff --git a/drivers/gpu/drm/xe/xe_guc_rc.c b/drivers/gpu/drm/xe/xe_guc_rc.c index 99fa127b261f..fa3062ab134a 100644 --- a/drivers/gpu/drm/xe/xe_guc_rc.c +++ b/drivers/gpu/drm/xe/xe_guc_rc.c @@ -16,6 +16,7 @@ #include "xe_guc_pc.h" #include "xe_guc_rc.h" #include "xe_pm.h" +#include "xe_wedge.h" /** * DOC: GuC RC (Render C-states) @@ -40,7 +41,7 @@ static int guc_action_setup_gucrc(struct xe_guc *guc, u32 control) int ret; ret = xe_guc_ct_send(&guc->ct, action, ARRAY_SIZE(action), 0, 0); - if (ret && !(xe_device_wedged(guc_to_xe(guc)) && ret == -ECANCELED)) + if (ret && !(xe_wedged(guc_to_xe(guc)) && ret == -ECANCELED)) xe_gt_err(guc_to_gt(guc), "GuC RC setup %s(%u) failed (%pe)\n", control == GUCRC_HOST_CONTROL ? "HOST_CONTROL" : @@ -73,7 +74,7 @@ static void xe_guc_rc_fini_hw(void *arg) struct xe_device *xe = guc_to_xe(guc); struct xe_gt *gt = guc_to_gt(guc); - if (xe_device_wedged(xe)) + if (xe_wedged(xe)) return; CLASS(xe_force_wake, fw_ref)(gt_to_fw(gt), XE_FW_GT); diff --git a/drivers/gpu/drm/xe/xe_guc_submit.c b/drivers/gpu/drm/xe/xe_guc_submit.c index 7ce73489c35f..290740f1d654 100644 --- a/drivers/gpu/drm/xe/xe_guc_submit.c +++ b/drivers/gpu/drm/xe/xe_guc_submit.c @@ -50,6 +50,7 @@ #include "xe_trace.h" #include "xe_uc_fw.h" #include "xe_vm.h" +#include "xe_wedge.h" #define XE_GUC_EXEC_QUEUE_CGP_CONTEXT_ERROR_LEN 6 @@ -1450,10 +1451,10 @@ static bool guc_submit_hint_wedged(struct xe_guc *guc) if (xe->wedged.mode != XE_WEDGED_MODE_UPON_ANY_HANG_NO_RESET) return false; - if (xe_device_wedged(xe)) + if (xe_wedged(xe)) return true; - xe_device_declare_wedged(xe); + xe_wedge_declare(xe); return true; } @@ -1660,7 +1661,7 @@ guc_exec_queue_timedout_job(struct drm_sched_job *drm_job) if (!exec_queue_killed(q)) wedged = guc_submit_hint_wedged(exec_queue_to_guc(q)); else - wedged = xe_device_wedged(xe); + wedged = xe_wedged(xe); /* * Only tag as GPU hang if this is the original timeout, not a @@ -1780,7 +1781,7 @@ guc_exec_queue_timedout_job(struct drm_sched_job *drm_job) } if (wedge_device) - xe_device_declare_wedged(gt_to_xe(q->gt)); + xe_wedge_declare(gt_to_xe(q->gt)); /* * We want the job added back to the pending list so it gets freed; this @@ -2543,7 +2544,7 @@ static int guc_exec_queue_wait_suspend_done(struct xe_exec_queue *q, bool blocki WAIT_COND, HZ * 5); } - if (!blocking && vf_recovery(guc) && !xe_device_wedged(xe)) + if (!blocking && vf_recovery(guc) && !xe_wedged(xe)) return -EAGAIN; if (!ret) @@ -2803,7 +2804,7 @@ int xe_guc_submit_reset_prepare(struct xe_guc *guc) void xe_guc_submit_reset_wait(struct xe_guc *guc) { - wait_event(guc->ct.wq, xe_device_wedged(guc_to_xe(guc)) || + wait_event(guc->ct.wq, xe_wedged(guc_to_xe(guc)) || !xe_guc_read_stopped(guc)); } diff --git a/drivers/gpu/drm/xe/xe_guc_tlb_inval.c b/drivers/gpu/drm/xe/xe_guc_tlb_inval.c index 111fef781b2a..dd38d95c6014 100644 --- a/drivers/gpu/drm/xe/xe_guc_tlb_inval.c +++ b/drivers/gpu/drm/xe/xe_guc_tlb_inval.c @@ -19,6 +19,7 @@ #include "xe_sa.h" #include "xe_tlb_inval.h" #include "xe_vm.h" +#include "xe_wedge.h" #include "regs/xe_guc_regs.h" @@ -77,7 +78,7 @@ static int send_tlb_inval_ggtt(struct xe_tlb_inval *tlb_inval, u32 seqno) }; return send_tlb_inval(guc, action, ARRAY_SIZE(action)); - } else if (xe_device_uc_enabled(xe) && !xe_device_wedged(xe)) { + } else if (xe_device_uc_enabled(xe) && !xe_wedged(xe)) { struct xe_mmio *mmio = >->mmio; if (IS_SRIOV_VF(xe)) diff --git a/drivers/gpu/drm/xe/xe_mert.c b/drivers/gpu/drm/xe/xe_mert.c index 32700c19a1df..b9948153ca0b 100644 --- a/drivers/gpu/drm/xe/xe_mert.c +++ b/drivers/gpu/drm/xe/xe_mert.c @@ -11,6 +11,7 @@ #include "xe_mmio.h" #include "xe_sriov_printk.h" #include "xe_tile.h" +#include "xe_wedge.h" /** * xe_mert_init_early() - Initialize MERT data @@ -74,7 +75,7 @@ static void mert_handle_cat_error(struct xe_device *xe) break; case CATERR_UNMAPPED_GGTT: xe_sriov_err(xe, "MERT: CAT_ERR: Access to an unmapped GGTT!\n"); - xe_device_declare_wedged(xe); + xe_wedge_declare(xe); break; case CATERR_LMTT_FAULT: xe_sriov_dbg_ratelimited(xe, "MERT: CAT_ERR: VF%u LMTT fault!\n", vfid); @@ -82,7 +83,7 @@ static void mert_handle_cat_error(struct xe_device *xe) break; default: xe_sriov_err(xe, "MERT: Unexpected CAT_ERR code=%#x!\n", code); - xe_device_declare_wedged(xe); + xe_wedge_declare(xe); break; } } diff --git a/drivers/gpu/drm/xe/xe_pci_error.c b/drivers/gpu/drm/xe/xe_pci_error.c index 79ce0c671549..418b07dc983a 100644 --- a/drivers/gpu/drm/xe/xe_pci_error.c +++ b/drivers/gpu/drm/xe/xe_pci_error.c @@ -13,6 +13,7 @@ #include "xe_printk.h" #include "xe_ras.h" #include "xe_survivability_mode.h" +#include "xe_wedge.h" static void prepare_device_for_reset(struct pci_dev *pdev) { @@ -22,7 +23,7 @@ static void prepare_device_for_reset(struct pci_dev *pdev) /* * Wedge the device to prevent userspace access but do not send the uevent. - * xe_device_wedged_fini() releases runtime pm if wedged flag is set, so acquire a runtime + * xe_wedge_fini() releases runtime pm if wedged flag is set, so acquire a runtime * pm reference to avoid underflow. */ if (!atomic_xchg(&xe->wedged.flag, 1)) @@ -31,7 +32,7 @@ static void prepare_device_for_reset(struct pci_dev *pdev) xe_device_set_in_reset(xe); for_each_gt(gt, xe, id) - xe_gt_declare_wedged(gt); + xe_gt_wedge_declare(gt); pci_disable_device(pdev); } @@ -61,7 +62,7 @@ static pci_ers_result_t xe_pci_error_detected(struct pci_dev *pdev, pci_channel_ return PCI_ERS_RESULT_DISCONNECT; /* If the device is already wedged or in survivability mode, do not attempt recovery */ - if (xe_survivability_mode_is_boot_enabled(xe) || xe_device_wedged(xe)) + if (xe_survivability_mode_is_boot_enabled(xe) || xe_wedged(xe)) return PCI_ERS_RESULT_DISCONNECT; switch (state) { @@ -86,7 +87,7 @@ static pci_ers_result_t xe_pci_error_mmio_enabled(struct pci_dev *pdev) /* User wants to debug the error, prevent reset */ if (xe->wedged.mode == XE_WEDGED_MODE_UPON_ANY_HANG_NO_RESET) { - xe_device_declare_wedged(xe); + xe_wedge_declare(xe); return PCI_ERS_RESULT_DISCONNECT; } diff --git a/drivers/gpu/drm/xe/xe_ras.c b/drivers/gpu/drm/xe/xe_ras.c index 7a85735c57d5..2e8eb8856f97 100644 --- a/drivers/gpu/drm/xe/xe_ras.c +++ b/drivers/gpu/drm/xe/xe_ras.c @@ -16,6 +16,7 @@ #include "xe_sysctrl_event_types.h" #include "xe_sysctrl_mailbox.h" #include "xe_sysctrl_mailbox_types.h" +#include "xe_wedge.h" #define CORE_COMPUTE_UNCORR_TYPE GENMASK(26, 25) /* @@ -321,8 +322,8 @@ static u8 handle_core_compute_errors(struct xe_ras_error_array *arr) static void punit_error_handler(struct xe_device *xe) { - xe_device_set_wedged_method(xe, DRM_WEDGE_RECOVERY_COLD_RESET); - xe_device_declare_wedged(xe); + xe_wedge_set_method(xe, DRM_WEDGE_RECOVERY_COLD_RESET); + xe_wedge_declare(xe); } static u8 handle_soc_internal_errors(struct xe_device *xe, struct xe_ras_error_array *arr) diff --git a/drivers/gpu/drm/xe/xe_sriov_pf.c b/drivers/gpu/drm/xe/xe_sriov_pf.c index 33bd754d138f..ce0db26203ec 100644 --- a/drivers/gpu/drm/xe/xe_sriov_pf.c +++ b/drivers/gpu/drm/xe/xe_sriov_pf.c @@ -19,6 +19,7 @@ #include "xe_sriov_pf_service.h" #include "xe_sriov_pf_sysfs.h" #include "xe_sriov_printk.h" +#include "xe_wedge.h" static unsigned int wanted_max_vfs(struct xe_device *xe) { @@ -157,7 +158,7 @@ int xe_sriov_pf_wait_ready(struct xe_device *xe) unsigned int id; int err; - if (xe_device_wedged(xe)) + if (xe_wedged(xe)) return -ECANCELED; for_each_gt(gt, xe, id) { diff --git a/drivers/gpu/drm/xe/xe_survivability_mode.c b/drivers/gpu/drm/xe/xe_survivability_mode.c index 45d44ebe288b..dacb6303b8da 100644 --- a/drivers/gpu/drm/xe/xe_survivability_mode.c +++ b/drivers/gpu/drm/xe/xe_survivability_mode.c @@ -20,6 +20,7 @@ #include "xe_pcode_api.h" #include "xe_printk.h" #include "xe_vsec.h" +#include "xe_wedge.h" /** * DOC: Survivability Mode @@ -446,8 +447,8 @@ void xe_survivability_mode_runtime_enable(struct xe_device *xe) survivability->type = XE_SURVIVABILITY_TYPE_RUNTIME; xe_log_err(xe, SURVIVABILITY, 0, "Runtime Mode enabled!\n"); - xe_device_set_wedged_method(xe, DRM_WEDGE_RECOVERY_VENDOR); - xe_device_declare_wedged(xe); + xe_wedge_set_method(xe, DRM_WEDGE_RECOVERY_VENDOR); + xe_wedge_declare(xe); xe_log_err(xe, SURVIVABILITY, 0, "Firmware flash required!\n"); xe_info(xe, "Please refer to the userspace documentation for more details how to flash the firmware on %s!\n", diff --git a/drivers/gpu/drm/xe/xe_uc.c b/drivers/gpu/drm/xe/xe_uc.c index 65f59f06177f..686c28856014 100644 --- a/drivers/gpu/drm/xe/xe_uc.c +++ b/drivers/gpu/drm/xe/xe_uc.c @@ -326,15 +326,15 @@ void xe_uc_runtime_resume(struct xe_uc *uc) } /** - * xe_uc_declare_wedged() - Declare UC wedged + * xe_uc_wedge_declare() - Declare UC wedged * @uc: the UC object * * Wedge the UC which stops all submission, saves desired debug state, and * cleans up anything which could timeout. */ -void xe_uc_declare_wedged(struct xe_uc *uc) +void xe_uc_wedge_declare(struct xe_uc *uc) { xe_gt_assert(uc_to_gt(uc), uc_to_xe(uc)->wedged.mode); - xe_guc_declare_wedged(&uc->guc); + xe_guc_wedge_declare(&uc->guc); } diff --git a/drivers/gpu/drm/xe/xe_uc.h b/drivers/gpu/drm/xe/xe_uc.h index 255a54a8f876..23bc0ce1c42f 100644 --- a/drivers/gpu/drm/xe/xe_uc.h +++ b/drivers/gpu/drm/xe/xe_uc.h @@ -21,6 +21,6 @@ int xe_uc_start(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); -void xe_uc_declare_wedged(struct xe_uc *uc); +void xe_uc_wedge_declare(struct xe_uc *uc); #endif diff --git a/drivers/gpu/drm/xe/xe_wedge.c b/drivers/gpu/drm/xe/xe_wedge.c new file mode 100644 index 000000000000..bee51a87d043 --- /dev/null +++ b/drivers/gpu/drm/xe/xe_wedge.c @@ -0,0 +1,287 @@ +// SPDX-License-Identifier: MIT +/* + * Copyright © 2026 Intel Corporation + */ + +#include <drm/drm_drv.h> +#include <drm/drm_managed.h> + +#include "xe_defaults.h" +#include "xe_device.h" +#include "xe_gt.h" +#include "xe_gt_printk.h" +#include "xe_guc_ads.h" +#include "xe_log.h" +#include "xe_module.h" +#include "xe_pm.h" +#include "xe_printk.h" +#include "xe_sriov.h" +#include "xe_wedge.h" + +/** + * DOC: Xe Device Wedging + * + * Xe driver uses drm device wedged uevent as documented in Documentation/gpu/drm-uapi.rst. + * When device is in wedged state, every IOCTL will be blocked and GT cannot + * be used. The conditions under which the driver declares the device wedged + * depend on the wedge mode configuration (see &enum xe_wedged_mode). The + * default recovery method for a wedged state is rebind/bus-reset. + * + * Another recovery method is vendor-specific. Below are the cases that send + * ``WEDGED=vendor-specific`` recovery method in drm device wedged uevent. + * + * Case: Firmware Flash + * -------------------- + * + * Identification Hint + * +++++++++++++++++++ + * + * ``WEDGED=vendor-specific`` drm device wedged uevent with + * :ref:`Runtime Survivability mode <xe-survivability-mode>` is used to notify + * admin/userspace consumer about the need for a firmware flash. + * + * Recovery Procedure + * ++++++++++++++++++ + * + * Once ``WEDGED=vendor-specific`` drm device wedged uevent is received, follow + * the below steps + * + * - Check Runtime Survivability mode sysfs. + * If enabled, firmware flash is required to recover the device. + * + * /sys/bus/pci/devices/<device>/survivability_mode + * + * - Admin/userspace consumer can use firmware flashing tools like fwupd to flash + * firmware and restore device to normal operation. + */ + +/** + * xe_wedge_set_method() - Set wedge recovery method + * @xe: xe device instance + * @method: recovery method to set + * + * Set wedge recovery method to be sent in drm wedged uevent. + */ +void xe_wedge_set_method(struct xe_device *xe, unsigned long method) +{ + xe->wedged.method = method; +} + +/** + * xe_wedged() - Check for wedged device + * @xe: xe device instance + * + * Returns: %true if device is wedged, %false otherwise. + */ +bool xe_wedged(struct xe_device *xe) +{ + return atomic_read(&xe->wedged.flag); +} + +static void wedge_work(struct work_struct *work) +{ + struct xe_device *xe = container_of(work, struct xe_device, wedged.work); + + /* + * XE_WEDGED_MODE_UPON_ANY_HANG_NO_RESET is intended for debugging + * hangs, so wedge the device with 'none' recovery method and have + * it available to the user for debugging. + */ + if (xe->wedged.mode == XE_WEDGED_MODE_UPON_ANY_HANG_NO_RESET) + xe_wedge_set_method(xe, DRM_WEDGE_RECOVERY_NONE); + /* If no wedge recovery method is set, use default */ + else if (!xe->wedged.method) + xe_wedge_set_method(xe, DRM_WEDGE_RECOVERY_REBIND | + DRM_WEDGE_RECOVERY_BUS_RESET); + + /* Notify userspace of wedged device */ + drm_dev_wedged_event(&xe->drm, xe->wedged.method, NULL); +} + +#define WEDGED_URL "https://docs.kernel.org/gpu/drm-uapi.html#device-wedging" +#define XE_BUG_URL "https://gitlab.freedesktop.org/drm/xe/kernel/issues/new" + +/** + * xe_wedge_declare() - Declare device wedged + * @xe: xe device instance + * + * This is a final state that can only be cleared with the recovery method + * specified in the drm wedged uevent. The method can be set using + * xe_wedge_set_method() before declaring the device as wedged. + * If no method is set, rebind/bus-reset will be sent by default. + * + * In this state every IOCTL will be blocked so the GT cannot be used. + * In general it will be called upon any critical error such as gt reset + * failure or guc loading failure. Userspace will be notified of this state + * through device wedged uevent. + * If xe.wedged module parameter is set to 2, this function will be called + * on every single execution timeout (a.k.a. GPU hang) right after devcoredump + * snapshot capture. In this mode, GT reset won't be attempted so the state of + * the issue is preserved for further debugging. + * + * Since the wedge handling is done as part of worker thread, this is safe for + * atomic callers. + */ +void xe_wedge_declare(struct xe_device *xe) +{ + struct xe_gt *gt; + u8 id; + + if (xe->wedged.mode == XE_WEDGED_MODE_NEVER) { + xe_dbg(xe, "Wedged mode is forcibly disabled\n"); + return; + } + + if (atomic_xchg(&xe->wedged.flag, 1)) + return; + + xe->needs_flr_on_fini = true; + xe_pm_runtime_get_noresume(xe); + + xe_log_err_fatal(xe, WEDGED, -EIO, "Device declared wedged!\n"); + xe_err_once(xe, "IOCTLs and executions are now blocked!\n" + "For recovery procedure, refer to %s\n" + "Please file a _new_ bug report at %s\n", + WEDGED_URL, XE_BUG_URL); + + for_each_initialized_gt(gt, xe, id) + xe_gt_wedge_declare(gt); + + schedule_work(&xe->wedged.work); +} + +static const char *wedge_mode_to_string(enum xe_wedged_mode mode) +{ + switch (mode) { + case XE_WEDGED_MODE_NEVER: + return "never"; + case XE_WEDGED_MODE_UPON_CRITICAL_ERROR: + return "upon-critical-error"; + case XE_WEDGED_MODE_UPON_ANY_HANG_NO_RESET: + return "upon-any-hang-no-reset"; + default: + return "<invalid>"; + } +} + +static int wedge_validate_mode(struct xe_device *xe, unsigned int mode) +{ + if (mode > XE_WEDGED_MODE_UPON_ANY_HANG_NO_RESET) { + xe_dbg(xe, "wedged_mode: invalid value (%u)\n", mode); + return -EINVAL; + } else if (mode == XE_WEDGED_MODE_UPON_ANY_HANG_NO_RESET && (IS_SRIOV_VF(xe) || + (IS_SRIOV_PF(xe) && !IS_ENABLED(CONFIG_DRM_XE_DEBUG)))) { + xe_dbg(xe, "wedged_mode: (%u) %s mode is not supported for %s\n", + mode, wedge_mode_to_string(mode), + xe_sriov_mode_to_string(xe_device_sriov_mode(xe))); + return -EPERM; + } + + return 0; +} + +static bool wedge_mode_needs_policy_update(struct xe_device *xe, enum xe_wedged_mode mode) +{ + if (xe->wedged.inconsistent_reset) + return true; + + if (xe->wedged.mode == mode) + return false; + + if (xe->wedged.mode == XE_WEDGED_MODE_UPON_ANY_HANG_NO_RESET || + mode == XE_WEDGED_MODE_UPON_ANY_HANG_NO_RESET) + return true; + + return false; +} + +static int __wedge_mode_set_reset_policy(struct xe_gt *gt, enum xe_wedged_mode mode) +{ + bool enable_engine_reset; + int ret; + + enable_engine_reset = (mode != XE_WEDGED_MODE_UPON_ANY_HANG_NO_RESET); + ret = xe_guc_ads_scheduler_policy_toggle_reset(>->uc.guc.ads, + enable_engine_reset); + if (ret) + xe_gt_err(gt, "Failed to update GuC ADS scheduler policy (%pe)\n", ERR_PTR(ret)); + + return ret; +} + +static int wedge_mode_set_reset_policy(struct xe_device *xe, enum xe_wedged_mode mode) +{ + struct xe_gt *gt; + int ret; + u8 id; + + guard(xe_pm_runtime)(xe); + for_each_gt(gt, xe, id) { + ret = __wedge_mode_set_reset_policy(gt, mode); + if (ret) { + if (id > 0) { + xe->wedged.inconsistent_reset = true; + xe_err(xe, "Inconsistent reset policy state between GTs\n"); + } + return ret; + } + } + + xe->wedged.inconsistent_reset = false; + + return 0; +} + +/** + * xe_wedge_set_mode() - Set wedge mode + * @xe: xe device instance + * @mode: wedge mode to be set + * + * Returns: 0 on success, negative error code otherwise. + */ +int xe_wedge_set_mode(struct xe_device *xe, enum xe_wedged_mode mode) +{ + int ret; + + ret = wedge_validate_mode(xe, mode); + if (ret) + return ret; + + if (wedge_mode_needs_policy_update(xe, mode)) { + ret = wedge_mode_set_reset_policy(xe, mode); + if (ret) + return ret; + } + + xe->wedged.mode = mode; + + return ret; +} + +static void xe_wedge_fini(struct drm_device *drm, void *arg) +{ + struct xe_device *xe = arg; + + disable_work_sync(&xe->wedged.work); + + if (atomic_read(&xe->wedged.flag)) + xe_pm_runtime_put(xe); +} + +/** + * xe_wedge_init() - Initialize wedge + * @xe: xe device instance + * + * Returns: 0 on success, negative error code otherwise. + */ +int xe_wedge_init(struct xe_device *xe) +{ + INIT_WORK(&xe->wedged.work, wedge_work); + + xe->wedged.mode = wedge_validate_mode(xe, xe_modparam.wedged_mode) ? + XE_DEFAULT_WEDGED_MODE : xe_modparam.wedged_mode; + xe_dbg(xe, "wedged_mode: setting mode (%u) %s\n", + xe->wedged.mode, wedge_mode_to_string(xe->wedged.mode)); + + return drmm_add_action_or_reset(&xe->drm, xe_wedge_fini, xe); +} diff --git a/drivers/gpu/drm/xe/xe_wedge.h b/drivers/gpu/drm/xe/xe_wedge.h new file mode 100644 index 000000000000..e564a3b9d7d8 --- /dev/null +++ b/drivers/gpu/drm/xe/xe_wedge.h @@ -0,0 +1,20 @@ +/* SPDX-License-Identifier: MIT */ +/* + * Copyright © 2026 Intel Corporation + */ + +#ifndef _XE_WEDGE_H_ +#define _XE_WEDGE_H_ + +#include <linux/types.h> + +struct xe_device; +enum xe_wedged_mode; + +bool xe_wedged(struct xe_device *xe); +void xe_wedge_declare(struct xe_device *xe); +int xe_wedge_init(struct xe_device *xe); +void xe_wedge_set_method(struct xe_device *xe, unsigned long method); +int xe_wedge_set_mode(struct xe_device *xe, enum xe_wedged_mode mode); + +#endif diff --git a/drivers/gpu/drm/xe/xe_wedge_types.h b/drivers/gpu/drm/xe/xe_wedge_types.h new file mode 100644 index 000000000000..e6084f151c62 --- /dev/null +++ b/drivers/gpu/drm/xe/xe_wedge_types.h @@ -0,0 +1,45 @@ +/* SPDX-License-Identifier: MIT */ +/* + * Copyright © 2026 Intel Corporation + */ + +#ifndef _XE_WEDGE_TYPES_H_ +#define _XE_WEDGE_TYPES_H_ + +#include <linux/atomic.h> +#include <linux/types.h> +#include <linux/workqueue_types.h> + +/** + * enum xe_wedged_mode - Possible wedge modes + * @XE_WEDGED_MODE_NEVER: Device will never be declared wedged. + * @XE_WEDGED_MODE_UPON_CRITICAL_ERROR: Device will be declared wedged only + * when critical error occurs like GT reset failure or firmware failure. + * This is the default mode. + * @XE_WEDGED_MODE_UPON_ANY_HANG_NO_RESET: Device will be declared wedged on + * any hang. In this mode, engine resets are disabled to avoid automatic + * recovery attempts. This mode is primarily intended for debugging hangs. + */ +enum xe_wedged_mode { + XE_WEDGED_MODE_NEVER = 0, + XE_WEDGED_MODE_UPON_CRITICAL_ERROR = 1, + XE_WEDGED_MODE_UPON_ANY_HANG_NO_RESET = 2, +}; + +/** + * struct xe_wedge - Struct to control Wedged States and mode + */ +struct xe_wedge { + /** @flag: Xe device faced a critical error and is now blocked. */ + atomic_t flag; + /** @mode: Mode controlled by kernel parameter and debugfs */ + enum xe_wedged_mode mode; + /** @method: Recovery method to be sent in the drm device wedged uevent */ + unsigned long method; + /** @inconsistent_reset: Inconsistent reset policy state between GTs */ + bool inconsistent_reset; + /** @work: Worker for wedge handling */ + struct work_struct work; +}; + +#endif -- 2.43.0 ^ permalink raw reply related [flat|nested] 16+ messages in thread
* Re: [PATCH v4 4/5] drm/xe: Introduce xe_wedge 2026-10-10 9:06 ` [PATCH v4 4/5] drm/xe: Introduce xe_wedge Raag Jadav @ 2026-10-12 20:46 ` Matthew Brost 0 siblings, 0 replies; 16+ messages in thread From: Matthew Brost @ 2026-10-12 20:46 UTC (permalink / raw) To: Raag Jadav Cc: intel-xe, riana.tauro, michal.wajdeczko, lukasz.laguna, matthew.d.roper, mallesh.koujalagi, rodrigo.vivi On Sat, Oct 10, 2026 at 02:36:21PM +0530, Raag Jadav wrote: > Consolidate wedging implementation into a dedicated xe_wedge component > for better maintainability. While at it, rename all wedge helpers > to match with component name. > > No functional impact. > > Signed-off-by: Raag Jadav <raag.jadav@intel.com> Acked-by: Matthew Brost <matthew.brost@intel.com> > --- > v2: Also move struct xe_wedge and wedged_mode debt to xe_wedge (Lukasz, Michal) > Naming and aesthetic adjustments (Lukasz, Michal) > v3: Respect the component namespace (Rodrigo) > Avoid chaining header includes (Rodrigo) > Squash debugfs changes with xe_wedge patch (Lukasz) > v4: Include xe_sriov.h (Rodrigo) > --- > Documentation/gpu/xe/xe_device.rst | 2 +- > drivers/gpu/drm/xe/Makefile | 1 + > drivers/gpu/drm/xe/tests/xe_kunit_helpers.c | 3 +- > drivers/gpu/drm/xe/xe_amc.c | 3 +- > drivers/gpu/drm/xe/xe_bo.c | 3 +- > drivers/gpu/drm/xe/xe_debugfs.c | 66 +---- > drivers/gpu/drm/xe/xe_device.c | 194 +------------ > drivers/gpu/drm/xe/xe_device.h | 10 - > drivers/gpu/drm/xe/xe_device_types.h | 30 +- > drivers/gpu/drm/xe/xe_gsc.c | 3 +- > drivers/gpu/drm/xe/xe_gt.c | 11 +- > drivers/gpu/drm/xe/xe_gt.h | 2 +- > drivers/gpu/drm/xe/xe_gt_sriov_vf.c | 3 +- > drivers/gpu/drm/xe/xe_guc.c | 4 +- > drivers/gpu/drm/xe/xe_guc.h | 2 +- > drivers/gpu/drm/xe/xe_guc_ct.c | 7 +- > drivers/gpu/drm/xe/xe_guc_pc.c | 11 +- > drivers/gpu/drm/xe/xe_guc_rc.c | 5 +- > drivers/gpu/drm/xe/xe_guc_submit.c | 13 +- > drivers/gpu/drm/xe/xe_guc_tlb_inval.c | 3 +- > drivers/gpu/drm/xe/xe_mert.c | 5 +- > drivers/gpu/drm/xe/xe_pci_error.c | 9 +- > drivers/gpu/drm/xe/xe_ras.c | 5 +- > drivers/gpu/drm/xe/xe_sriov_pf.c | 3 +- > drivers/gpu/drm/xe/xe_survivability_mode.c | 5 +- > drivers/gpu/drm/xe/xe_uc.c | 6 +- > drivers/gpu/drm/xe/xe_uc.h | 2 +- > drivers/gpu/drm/xe/xe_wedge.c | 287 ++++++++++++++++++++ > drivers/gpu/drm/xe/xe_wedge.h | 20 ++ > drivers/gpu/drm/xe/xe_wedge_types.h | 45 +++ > 30 files changed, 426 insertions(+), 337 deletions(-) > create mode 100644 drivers/gpu/drm/xe/xe_wedge.c > create mode 100644 drivers/gpu/drm/xe/xe_wedge.h > create mode 100644 drivers/gpu/drm/xe/xe_wedge_types.h > > diff --git a/Documentation/gpu/xe/xe_device.rst b/Documentation/gpu/xe/xe_device.rst > index d3a022362ade..8baed81580c9 100644 > --- a/Documentation/gpu/xe/xe_device.rst > +++ b/Documentation/gpu/xe/xe_device.rst > @@ -6,7 +6,7 @@ > Xe Device Wedging > ================== > > -.. kernel-doc:: drivers/gpu/drm/xe/xe_device.c > +.. kernel-doc:: drivers/gpu/drm/xe/xe_wedge.c > :doc: Xe Device Wedging > > ==================== > diff --git a/drivers/gpu/drm/xe/Makefile b/drivers/gpu/drm/xe/Makefile > index 011f7ef54086..bc203940f114 100644 > --- a/drivers/gpu/drm/xe/Makefile > +++ b/drivers/gpu/drm/xe/Makefile > @@ -154,6 +154,7 @@ xe-y += xe_bb.o \ > xe_vsec.o \ > xe_wa.o \ > xe_wait_user_fence.o \ > + xe_wedge.o \ > xe_wopcm.o > > xe-$(CONFIG_I2C) += xe_i2c.o \ > diff --git a/drivers/gpu/drm/xe/tests/xe_kunit_helpers.c b/drivers/gpu/drm/xe/tests/xe_kunit_helpers.c > index 27740b40c8ae..57ea88cce92d 100644 > --- a/drivers/gpu/drm/xe/tests/xe_kunit_helpers.c > +++ b/drivers/gpu/drm/xe/tests/xe_kunit_helpers.c > @@ -15,6 +15,7 @@ > #include "xe_device.h" > #include "xe_device_types.h" > #include "xe_pm.h" > +#include "xe_wedge.h" > > /** > * xe_kunit_helper_alloc_xe_device - Allocate a &xe_device for a KUnit test. > @@ -123,7 +124,7 @@ int xe_kunit_helper_xe_device_live_test_init(struct kunit *test) > KUNIT_ASSERT_NOT_ERR_OR_NULL(test, xe); > kunit_info(test, "running on %s device\n", xe->info.platform_name); > > - KUNIT_ASSERT_FALSE(test, xe_device_wedged(xe)); > + KUNIT_ASSERT_FALSE(test, xe_wedged(xe)); > xe_pm_runtime_get(xe); > KUNIT_ASSERT_EQ(test, 0, kunit_add_action_or_reset(test, put_xe_pm_runtime, xe)); > > diff --git a/drivers/gpu/drm/xe/xe_amc.c b/drivers/gpu/drm/xe/xe_amc.c > index 8ecadee6eea3..ca8013d7f569 100644 > --- a/drivers/gpu/drm/xe/xe_amc.c > +++ b/drivers/gpu/drm/xe/xe_amc.c > @@ -18,6 +18,7 @@ > #include "xe_device.h" > #include "xe_i2c.h" > #include "xe_mmio.h" > +#include "xe_wedge.h" > > /** > * DOC: Add-In Management Controller (AMC) > @@ -160,7 +161,7 @@ static void xe_amc_work(struct work_struct *work) > case AMC_ALERT_OOB_RESET: > case AMC_ALERT_CATERR: > dev_warn(amc->i2c->drm_dev, "AMC Alert: %s\n", amc_alert[alert_reason]); > - xe_device_declare_wedged(i2c_client_to_xe_device(client)); > + xe_wedge_declare(i2c_client_to_xe_device(client)); > break; > default: > dev_warn(amc->i2c->drm_dev, "unknown AMC alert: %d\n", alert_reason); > diff --git a/drivers/gpu/drm/xe/xe_bo.c b/drivers/gpu/drm/xe/xe_bo.c > index cc78283b702c..4749ea57527c 100644 > --- a/drivers/gpu/drm/xe/xe_bo.c > +++ b/drivers/gpu/drm/xe/xe_bo.c > @@ -41,6 +41,7 @@ > #include "xe_ttm_stolen_mgr.h" > #include "xe_vm.h" > #include "xe_vram_types.h" > +#include "xe_wedge.h" > > const char *const xe_mem_type_to_name[TTM_NUM_MEM_TYPES] = { > [XE_PL_SYSTEM] = "system", > @@ -2197,7 +2198,7 @@ static vm_fault_t xe_bo_cpu_fault(struct vm_fault *vmf) > int err = 0; > int idx; > > - if (xe_device_wedged(xe) || !drm_dev_enter(&xe->drm, &idx)) > + if (xe_wedged(xe) || !drm_dev_enter(&xe->drm, &idx)) > return ttm_bo_vm_dummy_page(vmf, vmf->vma->vm_page_prot); > > ret = xe_bo_cpu_fault_fastpath(vmf, xe, bo, needs_rpm); > diff --git a/drivers/gpu/drm/xe/xe_debugfs.c b/drivers/gpu/drm/xe/xe_debugfs.c > index 926020c7526e..e59d4964d811 100644 > --- a/drivers/gpu/drm/xe/xe_debugfs.c > +++ b/drivers/gpu/drm/xe/xe_debugfs.c > @@ -18,13 +18,12 @@ > #include "xe_force_wake.h" > #include "xe_gt.h" > #include "xe_gt_debugfs.h" > -#include "xe_gt_printk.h" > -#include "xe_guc_ads.h" > #include "xe_hw_engine.h" > #include "xe_mmio.h" > #include "xe_pagefault.h" > #include "xe_pcode.h" > #include "xe_pm.h" > +#include "xe_printk.h" > #include "xe_psmi.h" > #include "xe_pxp_debugfs.h" > #include "xe_sriov.h" > @@ -36,6 +35,7 @@ > #include "xe_ttm_vram_mgr.h" > #include "xe_vsec.h" > #include "xe_wa.h" > +#include "xe_wedge.h" > > #ifdef CONFIG_DRM_XE_DEBUG > #include "xe_bo_evict.h" > @@ -424,58 +424,6 @@ static ssize_t wedged_mode_show(struct file *f, char __user *ubuf, > return simple_read_from_buffer(ubuf, size, pos, buf, len); > } > > -static int __wedged_mode_set_reset_policy(struct xe_gt *gt, enum xe_wedged_mode mode) > -{ > - bool enable_engine_reset; > - int ret; > - > - enable_engine_reset = (mode != XE_WEDGED_MODE_UPON_ANY_HANG_NO_RESET); > - ret = xe_guc_ads_scheduler_policy_toggle_reset(>->uc.guc.ads, > - enable_engine_reset); > - if (ret) > - xe_gt_err(gt, "Failed to update GuC ADS scheduler policy (%pe)\n", ERR_PTR(ret)); > - > - return ret; > -} > - > -static int wedged_mode_set_reset_policy(struct xe_device *xe, enum xe_wedged_mode mode) > -{ > - struct xe_gt *gt; > - int ret; > - u8 id; > - > - guard(xe_pm_runtime)(xe); > - for_each_gt(gt, xe, id) { > - ret = __wedged_mode_set_reset_policy(gt, mode); > - if (ret) { > - if (id > 0) { > - xe->wedged.inconsistent_reset = true; > - drm_err(&xe->drm, "Inconsistent reset policy state between GTs\n"); > - } > - return ret; > - } > - } > - > - xe->wedged.inconsistent_reset = false; > - > - return 0; > -} > - > -static bool wedged_mode_needs_policy_update(struct xe_device *xe, enum xe_wedged_mode mode) > -{ > - if (xe->wedged.inconsistent_reset) > - return true; > - > - if (xe->wedged.mode == mode) > - return false; > - > - if (xe->wedged.mode == XE_WEDGED_MODE_UPON_ANY_HANG_NO_RESET || > - mode == XE_WEDGED_MODE_UPON_ANY_HANG_NO_RESET) > - return true; > - > - return false; > -} > - > static ssize_t wedged_mode_set(struct file *f, const char __user *ubuf, > size_t size, loff_t *pos) > { > @@ -487,18 +435,10 @@ static ssize_t wedged_mode_set(struct file *f, const char __user *ubuf, > if (ret) > return ret; > > - ret = xe_device_validate_wedged_mode(xe, wedged_mode); > + ret = xe_wedge_set_mode(xe, wedged_mode); > if (ret) > return ret; > > - if (wedged_mode_needs_policy_update(xe, wedged_mode)) { > - ret = wedged_mode_set_reset_policy(xe, wedged_mode); > - if (ret) > - return ret; > - } > - > - xe->wedged.mode = wedged_mode; > - > return size; > } > > diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/xe_device.c > index 2a7794aa71f9..e0466390219c 100644 > --- a/drivers/gpu/drm/xe/xe_device.c > +++ b/drivers/gpu/drm/xe/xe_device.c > @@ -81,6 +81,7 @@ > #include "xe_vsec.h" > #include "xe_wait_user_fence.h" > #include "xe_wa.h" > +#include "xe_wedge.h" > > #include <generated/xe_device_wa_oob.h> > #include <generated/xe_wa_oob.h> > @@ -238,7 +239,7 @@ static long xe_drm_ioctl(struct file *file, unsigned int cmd, unsigned long arg) > struct xe_device *xe = to_xe_device(file_priv->minor->dev); > long ret; > > - if (xe_device_wedged(xe)) > + if (xe_wedged(xe)) > return -ECANCELED; > > ACQUIRE(xe_pm_runtime_ioctl, pm)(xe); > @@ -256,7 +257,7 @@ static long xe_drm_compat_ioctl(struct file *file, unsigned int cmd, unsigned lo > struct xe_device *xe = to_xe_device(file_priv->minor->dev); > long ret; > > - if (xe_device_wedged(xe)) > + if (xe_wedged(xe)) > return -ECANCELED; > > ACQUIRE(xe_pm_runtime_ioctl, pm)(xe); > @@ -697,16 +698,6 @@ static int xe_device_vram_alloc(struct xe_device *xe) > return 0; > } > > -static void wedged_work(struct work_struct *work); > -static void xe_device_wedged_fini(struct drm_device *drm, void *arg); > - > -static int xe_device_wedged_init(struct xe_device *xe) > -{ > - INIT_WORK(&xe->wedged.work, wedged_work); > - > - return drmm_add_action_or_reset(&xe->drm, xe_device_wedged_fini, xe); > -} > - > /** > * xe_device_probe_early: Device early probe > * @xe: xe device instance > @@ -766,16 +757,11 @@ int xe_device_probe_early(struct xe_device *xe) > */ > assert_lmem_ready(xe); > > - xe->wedged.mode = xe_device_validate_wedged_mode(xe, xe_modparam.wedged_mode) ? > - XE_DEFAULT_WEDGED_MODE : xe_modparam.wedged_mode; > - drm_dbg(&xe->drm, "wedged_mode: setting mode (%u) %s\n", > - xe->wedged.mode, xe_wedged_mode_to_string(xe->wedged.mode)); > - > err = xe_device_vram_alloc(xe); > if (err) > return err; > > - err = xe_device_wedged_init(xe); > + err = xe_wedge_init(xe); > if (err) > return err; > > @@ -865,14 +851,6 @@ static void detect_preproduction_hw(struct xe_device *xe) > } > } > > -static void xe_device_wedged_fini(struct drm_device *drm, void *arg) > -{ > - struct xe_device *xe = arg; > - > - if (atomic_read(&xe->wedged.flag)) > - xe_pm_runtime_put(xe); > -} > - > #ifdef CONFIG_DRM_XE_DEBUG_PAGE_SIZE > static int xe_debug_page_size_alloc_ctrl_init(struct xe_device *xe) > { > @@ -1112,7 +1090,7 @@ int xe_device_probe(struct xe_device *xe) > /* > * Process and log any errors detected by hardware. Possible results can > * include declaring the device as wedged, which must be done only after > - * xe_device_wedged_fini() is registered. > + * xe_wedge_fini() is registered. > */ > xe_ras_process_errors(xe); > > @@ -1351,168 +1329,6 @@ u64 xe_device_uncanonicalize_addr(struct xe_device *xe, u64 address) > return address & GENMASK_ULL(xe->info.va_bits - 1, 0); > } > > -/** > - * DOC: Xe Device Wedging > - * > - * Xe driver uses drm device wedged uevent as documented in Documentation/gpu/drm-uapi.rst. > - * When device is in wedged state, every IOCTL will be blocked and GT cannot > - * be used. The conditions under which the driver declares the device wedged > - * depend on the wedged mode configuration (see &enum xe_wedged_mode). The > - * default recovery method for a wedged state is rebind/bus-reset. > - * > - * Another recovery method is vendor-specific. Below are the cases that send > - * ``WEDGED=vendor-specific`` recovery method in drm device wedged uevent. > - * > - * Case: Firmware Flash > - * -------------------- > - * > - * Identification Hint > - * +++++++++++++++++++ > - * > - * ``WEDGED=vendor-specific`` drm device wedged uevent with > - * :ref:`Runtime Survivability mode <xe-survivability-mode>` is used to notify > - * admin/userspace consumer about the need for a firmware flash. > - * > - * Recovery Procedure > - * ++++++++++++++++++ > - * > - * Once ``WEDGED=vendor-specific`` drm device wedged uevent is received, follow > - * the below steps > - * > - * - Check Runtime Survivability mode sysfs. > - * If enabled, firmware flash is required to recover the device. > - * > - * /sys/bus/pci/devices/<device>/survivability_mode > - * > - * - Admin/userspace consumer can use firmware flashing tools like fwupd to flash > - * firmware and restore device to normal operation. > - */ > - > -/** > - * xe_device_set_wedged_method - Set wedged recovery method > - * @xe: xe device instance > - * @method: recovery method to set > - * > - * Set wedged recovery method to be sent in drm wedged uevent. > - */ > -void xe_device_set_wedged_method(struct xe_device *xe, unsigned long method) > -{ > - xe->wedged.method = method; > -} > - > -static void wedged_work(struct work_struct *work) > -{ > - struct xe_device *xe = container_of(work, struct xe_device, wedged.work); > - > - /* > - * XE_WEDGED_MODE_UPON_ANY_HANG_NO_RESET is intended for debugging > - * hangs, so wedge the device with 'none' recovery method and have > - * it available to the user for debugging. > - */ > - if (xe->wedged.mode == XE_WEDGED_MODE_UPON_ANY_HANG_NO_RESET) > - xe_device_set_wedged_method(xe, DRM_WEDGE_RECOVERY_NONE); > - /* If no wedge recovery method is set, use default */ > - else if (!xe->wedged.method) > - xe_device_set_wedged_method(xe, DRM_WEDGE_RECOVERY_REBIND | > - DRM_WEDGE_RECOVERY_BUS_RESET); > - > - /* Notify userspace of wedged device */ > - drm_dev_wedged_event(&xe->drm, xe->wedged.method, NULL); > -} > - > -#define WEDGED_URL "https://docs.kernel.org/gpu/drm-uapi.html#device-wedging" > -#define XE_BUG_URL "https://gitlab.freedesktop.org/drm/xe/kernel/issues/new" > - > -/** > - * xe_device_declare_wedged - Declare device wedged > - * @xe: xe device instance > - * > - * This is a final state that can only be cleared with the recovery method > - * specified in the drm wedged uevent. The method can be set using > - * xe_device_set_wedged_method before declaring the device as wedged. If no method > - * is set, reprobe (unbind/re-bind) will be sent by default. > - * > - * In this state every IOCTL will be blocked so the GT cannot be used. > - * In general it will be called upon any critical error such as gt reset > - * failure or guc loading failure. Userspace will be notified of this state > - * through device wedged uevent. > - * If xe.wedged module parameter is set to 2, this function will be called > - * on every single execution timeout (a.k.a. GPU hang) right after devcoredump > - * snapshot capture. In this mode, GT reset won't be attempted so the state of > - * the issue is preserved for further debugging. > - */ > -void xe_device_declare_wedged(struct xe_device *xe) > -{ > - struct xe_gt *gt; > - u8 id; > - > - if (xe->wedged.mode == XE_WEDGED_MODE_NEVER) { > - drm_dbg(&xe->drm, "Wedged mode is forcibly disabled\n"); > - return; > - } > - > - if (!atomic_xchg(&xe->wedged.flag, 1)) { > - xe->needs_flr_on_fini = true; > - xe_pm_runtime_get_noresume(xe); > - > - xe_log_err_fatal(xe, WEDGED, -EIO, "Device declared wedged!\n"); > - xe_err_once(xe, "IOCTLs and executions are now blocked!\n" > - "For recovery procedure, refer to %s\n" > - "Please file a _new_ bug report at %s\n", > - WEDGED_URL, XE_BUG_URL); > - > - for_each_initialized_gt(gt, xe, id) > - xe_gt_declare_wedged(gt); > - > - schedule_work(&xe->wedged.work); > - } > -} > - > -/** > - * xe_device_validate_wedged_mode - Check if given mode is supported > - * @xe: the &xe_device > - * @mode: requested mode to validate > - * > - * Check whether the provided wedged mode is supported. > - * > - * Return: 0 if mode is supported, error code otherwise. > - */ > -int xe_device_validate_wedged_mode(struct xe_device *xe, unsigned int mode) > -{ > - if (mode > XE_WEDGED_MODE_UPON_ANY_HANG_NO_RESET) { > - drm_dbg(&xe->drm, "wedged_mode: invalid value (%u)\n", mode); > - return -EINVAL; > - } else if (mode == XE_WEDGED_MODE_UPON_ANY_HANG_NO_RESET && (IS_SRIOV_VF(xe) || > - (IS_SRIOV_PF(xe) && !IS_ENABLED(CONFIG_DRM_XE_DEBUG)))) { > - drm_dbg(&xe->drm, "wedged_mode: (%u) %s mode is not supported for %s\n", > - mode, xe_wedged_mode_to_string(mode), > - xe_sriov_mode_to_string(xe_device_sriov_mode(xe))); > - return -EPERM; > - } > - > - return 0; > -} > - > -/** > - * xe_wedged_mode_to_string - Convert enum value to string. > - * @mode: the &xe_wedged_mode to convert > - * > - * Returns: wedged mode as a user friendly string. > - */ > -const char *xe_wedged_mode_to_string(enum xe_wedged_mode mode) > -{ > - switch (mode) { > - case XE_WEDGED_MODE_NEVER: > - return "never"; > - case XE_WEDGED_MODE_UPON_CRITICAL_ERROR: > - return "upon-critical-error"; > - case XE_WEDGED_MODE_UPON_ANY_HANG_NO_RESET: > - return "upon-any-hang-no-reset"; > - default: > - return "<invalid>"; > - } > -} > - > /** > * xe_device_asid_to_vm() - Find VM from ASID > * @xe: the &xe_device > diff --git a/drivers/gpu/drm/xe/xe_device.h b/drivers/gpu/drm/xe/xe_device.h > index 9b09e627af8c..93caa5b3de86 100644 > --- a/drivers/gpu/drm/xe/xe_device.h > +++ b/drivers/gpu/drm/xe/xe_device.h > @@ -211,11 +211,6 @@ bool xe_device_is_l2_flush_optimized(struct xe_device *xe); > void xe_device_td_flush(struct xe_device *xe); > void xe_device_l2_flush(struct xe_device *xe, bool force); > > -static inline bool xe_device_wedged(struct xe_device *xe) > -{ > - return atomic_read(&xe->wedged.flag); > -} > - > #ifdef CONFIG_DRM_XE_DEBUG_PAGE_SIZE > static inline bool xe_debug_page_size_supported(struct xe_device *xe) > { > @@ -264,11 +259,6 @@ static inline bool xe_debug_page_size_mode_is_mixed(struct xe_device *xe) > } > #endif > > -void xe_device_set_wedged_method(struct xe_device *xe, unsigned long method); > -void xe_device_declare_wedged(struct xe_device *xe); > -int xe_device_validate_wedged_mode(struct xe_device *xe, unsigned int mode); > -const char *xe_wedged_mode_to_string(enum xe_wedged_mode mode); > - > struct xe_file *xe_file_get(struct xe_file *xef); > void xe_file_put(struct xe_file *xef); > > diff --git a/drivers/gpu/drm/xe/xe_device_types.h b/drivers/gpu/drm/xe/xe_device_types.h > index ec5c1f0b8f00..25b38258b629 100644 > --- a/drivers/gpu/drm/xe/xe_device_types.h > +++ b/drivers/gpu/drm/xe/xe_device_types.h > @@ -30,6 +30,7 @@ > #include "xe_sysctrl_types.h" > #include "xe_tile_types.h" > #include "xe_validation.h" > +#include "xe_wedge_types.h" > > #if IS_ENABLED(CONFIG_DRM_XE_DEBUG) > #define TEST_VM_OPS_ERROR > @@ -47,22 +48,6 @@ struct xe_pxp; > struct xe_ttm_stolen_mgr; > struct xe_vram_region; > > -/** > - * enum xe_wedged_mode - possible wedged modes > - * @XE_WEDGED_MODE_NEVER: Device will never be declared wedged. > - * @XE_WEDGED_MODE_UPON_CRITICAL_ERROR: Device will be declared wedged only > - * when critical error occurs like GT reset failure or firmware failure. > - * This is the default mode. > - * @XE_WEDGED_MODE_UPON_ANY_HANG_NO_RESET: Device will be declared wedged on > - * any hang. In this mode, engine resets are disabled to avoid automatic > - * recovery attempts. This mode is primarily intended for debugging hangs. > - */ > -enum xe_wedged_mode { > - XE_WEDGED_MODE_NEVER = 0, > - XE_WEDGED_MODE_UPON_CRITICAL_ERROR = 1, > - XE_WEDGED_MODE_UPON_ANY_HANG_NO_RESET = 2, > -}; > - > #ifdef CONFIG_DRM_XE_DEBUG_PAGE_SIZE > /** > * enum xe_page_size_alloc_ctrl_mode - User BO page-size allocation control modes > @@ -538,18 +523,7 @@ struct xe_device { > atomic_t in_reset; > > /** @wedged: Struct to control Wedged States and mode */ > - struct { > - /** @wedged.flag: Xe device faced a critical error and is now blocked. */ > - atomic_t flag; > - /** @wedged.mode: Mode controlled by kernel parameter and debugfs */ > - enum xe_wedged_mode mode; > - /** @wedged.method: Recovery method to be sent in the drm device wedged uevent */ > - unsigned long method; > - /** @wedged.inconsistent_reset: Inconsistent reset policy state between GTs */ > - bool inconsistent_reset; > - /** @wedged.work: Worker for wedge handling */ > - struct work_struct work; > - } wedged; > + struct xe_wedge wedged; > > /** @devres_group: devres group */ > void *devres_group; > diff --git a/drivers/gpu/drm/xe/xe_gsc.c b/drivers/gpu/drm/xe/xe_gsc.c > index 524ac56bdcc7..cd333f2a6632 100644 > --- a/drivers/gpu/drm/xe/xe_gsc.c > +++ b/drivers/gpu/drm/xe/xe_gsc.c > @@ -31,6 +31,7 @@ > #include "xe_sched_job.h" > #include "xe_uc_fw.h" > #include "xe_wa.h" > +#include "xe_wedge.h" > #include "instructions/xe_gsc_commands.h" > #include "regs/xe_gsc_regs.h" > #include "regs/xe_gt_regs.h" > @@ -340,7 +341,7 @@ static int gsc_er_complete(struct xe_gt *gt) > * declare the device as wedged. > */ > xe_gt_err(gt, "GSC ER timed out!\n"); > - xe_device_declare_wedged(gt_to_xe(gt)); > + xe_wedge_declare(gt_to_xe(gt)); > return -EIO; > } > > diff --git a/drivers/gpu/drm/xe/xe_gt.c b/drivers/gpu/drm/xe/xe_gt.c > index d762158c0777..a5aa947ea295 100644 > --- a/drivers/gpu/drm/xe/xe_gt.c > +++ b/drivers/gpu/drm/xe/xe_gt.c > @@ -68,6 +68,7 @@ > #include "xe_uc_fw.h" > #include "xe_vm.h" > #include "xe_wa.h" > +#include "xe_wedge.h" > #include "xe_wopcm.h" > > #define GRDOM_RESET_TIMEOUT_MS 5 > @@ -933,7 +934,7 @@ static void gt_reset_worker(struct work_struct *w) > unsigned int fw_ref; > int err; > > - if (xe_device_wedged(gt_to_xe(gt))) > + if (xe_wedged(gt_to_xe(gt))) > goto err_pm_put; > > if (xe_device_is_in_reset(gt_to_xe(gt))) > @@ -992,7 +993,7 @@ static void gt_reset_worker(struct work_struct *w) > > err_fail: > xe_log_err_fatal(gt, GT, err, "reset failed\n"); > - xe_device_declare_wedged(gt_to_xe(gt)); > + xe_wedge_declare(gt_to_xe(gt)); > err_pm_put: > xe_pm_runtime_put(gt_to_xe(gt)); > } > @@ -1020,7 +1021,7 @@ static void gt_wedge_worker(struct work_struct *w) > { > struct xe_gt *gt = container_of(w, typeof(*gt), wedge.worker); > > - xe_uc_declare_wedged(>->uc); > + xe_uc_wedge_declare(>->uc); > xe_tlb_inval_reset(>->tlb_inval); > } > > @@ -1204,13 +1205,13 @@ struct xe_hw_engine *xe_gt_any_hw_engine(struct xe_gt *gt) > } > > /** > - * xe_gt_declare_wedged() - Declare GT wedged > + * xe_gt_wedge_declare() - Declare GT wedged > * @gt: the GT object > * > * Wedge the GT which stops all submission, saves desired debug state, and > * cleans up anything which could timeout. > */ > -void xe_gt_declare_wedged(struct xe_gt *gt) > +void xe_gt_wedge_declare(struct xe_gt *gt) > { > xe_gt_assert(gt, gt_to_xe(gt)->wedged.mode); > > diff --git a/drivers/gpu/drm/xe/xe_gt.h b/drivers/gpu/drm/xe/xe_gt.h > index 92d934d50244..7b6952fe804c 100644 > --- a/drivers/gpu/drm/xe/xe_gt.h > +++ b/drivers/gpu/drm/xe/xe_gt.h > @@ -40,7 +40,7 @@ struct xe_gt *xe_gt_alloc(struct xe_tile *tile); > int xe_gt_init_early(struct xe_gt *gt); > int xe_gt_init(struct xe_gt *gt); > void xe_gt_mmio_init(struct xe_gt *gt); > -void xe_gt_declare_wedged(struct xe_gt *gt); > +void xe_gt_wedge_declare(struct xe_gt *gt); > int xe_gt_record_default_lrcs(struct xe_gt *gt); > > /** > diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_vf.c b/drivers/gpu/drm/xe/xe_gt_sriov_vf.c > index 37899fcf5b22..0007fb21908f 100644 > --- a/drivers/gpu/drm/xe/xe_gt_sriov_vf.c > +++ b/drivers/gpu/drm/xe/xe_gt_sriov_vf.c > @@ -37,6 +37,7 @@ > #include "xe_tile_sriov_vf.h" > #include "xe_tlb_inval.h" > #include "xe_uc_fw.h" > +#include "xe_wedge.h" > #include "xe_wopcm.h" > > #define make_u64_from_u32(hi, lo) ((u64)((u64)(u32)(hi) << 32 | (u32)(lo))) > @@ -1462,7 +1463,7 @@ static void vf_post_migration_recovery(struct xe_gt *gt) > fail: > vf_post_migration_abort(gt); > xe_gt_sriov_err(gt, "migration recovery failed (%pe)\n", ERR_PTR(err)); > - xe_device_declare_wedged(xe); > + xe_wedge_declare(xe); > return; > > queue: > diff --git a/drivers/gpu/drm/xe/xe_guc.c b/drivers/gpu/drm/xe/xe_guc.c > index 3ab4cb9e4964..7d239a0829fb 100644 > --- a/drivers/gpu/drm/xe/xe_guc.c > +++ b/drivers/gpu/drm/xe/xe_guc.c > @@ -1829,13 +1829,13 @@ int xe_guc_print_info(struct xe_guc *guc, struct drm_printer *p) > } > > /** > - * xe_guc_declare_wedged() - Declare GuC wedged > + * xe_guc_wedge_declare() - Declare GuC wedged > * @guc: the GuC object > * > * Wedge the GuC which stops all submission, saves desired debug state, and > * cleans up anything which could timeout. > */ > -void xe_guc_declare_wedged(struct xe_guc *guc) > +void xe_guc_wedge_declare(struct xe_guc *guc) > { > xe_gt_assert(guc_to_gt(guc), guc_to_xe(guc)->wedged.mode); > > diff --git a/drivers/gpu/drm/xe/xe_guc.h b/drivers/gpu/drm/xe/xe_guc.h > index c4eca40d69cf..75c4b9acb065 100644 > --- a/drivers/gpu/drm/xe/xe_guc.h > +++ b/drivers/gpu/drm/xe/xe_guc.h > @@ -62,7 +62,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_declare_wedged(struct xe_guc *guc); > +void xe_guc_wedge_declare(struct xe_guc *guc); > bool xe_guc_using_main_gamctrl_queues(struct xe_guc *guc); > bool xe_guc_has_paging_engine(struct xe_guc *guc); > > diff --git a/drivers/gpu/drm/xe/xe_guc_ct.c b/drivers/gpu/drm/xe/xe_guc_ct.c > index da5ce97484b8..7ab51c97f42a 100644 > --- a/drivers/gpu/drm/xe/xe_guc_ct.c > +++ b/drivers/gpu/drm/xe/xe_guc_ct.c > @@ -36,6 +36,7 @@ > #include "xe_sleep.h" > #include "xe_sriov_vf.h" > #include "xe_trace_guc.h" > +#include "xe_wedge.h" > > static void receive_g2h(struct xe_guc_ct *ct); > static void g2h_worker_func(struct work_struct *w); > @@ -1064,7 +1065,7 @@ static int __guc_ct_send_locked(struct xe_guc_ct *ct, const u32 *action, > xe_gt_assert(gt, g2h_len || !num_g2h); > lockdep_assert_held(&ct->lock); > > - if (xe_device_wedged(ct_to_xe(ct))) { > + if (xe_wedged(ct_to_xe(ct))) { > ret = -ENOTRECOVERABLE; > goto out; > } > @@ -1489,7 +1490,7 @@ static int guc_ct_send_recv(struct xe_guc_ct *ct, const u32 *action, u32 len, > if (g2h_fence.fail) { > if (g2h_fence.cancel) { > xe_gt_dbg(gt, "H2G request %#x canceled!\n", action[0]); > - ret = xe_device_wedged(ct_to_xe(ct)) ? -ENOTRECOVERABLE : -ECANCELED; > + ret = xe_wedged(ct_to_xe(ct)) ? -ENOTRECOVERABLE : -ECANCELED; > goto unlock; > } > xe_gt_err(gt, "H2G request %#x failed: error %#x hint %#x\n", > @@ -1828,7 +1829,7 @@ static int g2h_read(struct xe_guc_ct *ct, u32 *msg, bool fast_path) > xe_gt_assert(gt, xe_guc_ct_initialized(ct)); > lockdep_assert_held(&ct->fast_lock); > > - if (xe_device_wedged(xe)) > + if (xe_wedged(xe)) > return -ENOTRECOVERABLE; > > if (ct->state == XE_GUC_CT_STATE_DISABLED) > diff --git a/drivers/gpu/drm/xe/xe_guc_pc.c b/drivers/gpu/drm/xe/xe_guc_pc.c > index e0105222a2c7..9558d7196a51 100644 > --- a/drivers/gpu/drm/xe/xe_guc_pc.c > +++ b/drivers/gpu/drm/xe/xe_guc_pc.c > @@ -36,6 +36,7 @@ > #include "xe_pm.h" > #include "xe_sriov.h" > #include "xe_wa.h" > +#include "xe_wedge.h" > > #define MCHBAR_MIRROR_BASE_SNB 0x140000 > > @@ -188,7 +189,7 @@ static int pc_action_reset(struct xe_guc_pc *pc) > int ret; > > ret = xe_guc_ct_send(ct, action, ARRAY_SIZE(action), 0, 0); > - if (ret && !(xe_device_wedged(pc_to_xe(pc)) && ret == -ECANCELED)) > + if (ret && !(xe_wedged(pc_to_xe(pc)) && ret == -ECANCELED)) > xe_gt_err(pc_to_gt(pc), "GuC PC reset failed: %pe\n", > ERR_PTR(ret)); > > @@ -212,7 +213,7 @@ static int pc_action_query_task_state(struct xe_guc_pc *pc) > > /* Blocking here to ensure the results are ready before reading them */ > ret = xe_guc_ct_send_block(ct, action, ARRAY_SIZE(action)); > - if (ret && !(xe_device_wedged(pc_to_xe(pc)) && ret == -ECANCELED)) > + if (ret && !(xe_wedged(pc_to_xe(pc)) && ret == -ECANCELED)) > xe_gt_err(pc_to_gt(pc), "GuC PC query task state failed: %pe\n", > ERR_PTR(ret)); > > @@ -235,7 +236,7 @@ static int pc_action_set_param(struct xe_guc_pc *pc, u8 id, u32 value) > return -EAGAIN; > > ret = xe_guc_ct_send(ct, action, ARRAY_SIZE(action), 0, 0); > - if (ret && !(xe_device_wedged(pc_to_xe(pc)) && ret == -ECANCELED)) > + if (ret && !(xe_wedged(pc_to_xe(pc)) && ret == -ECANCELED)) > xe_gt_err(pc_to_gt(pc), "GuC PC set param[%u]=%u failed: %pe\n", > id, value, ERR_PTR(ret)); > > @@ -257,7 +258,7 @@ static int pc_action_unset_param(struct xe_guc_pc *pc, u8 id) > return -EAGAIN; > > ret = xe_guc_ct_send(ct, action, ARRAY_SIZE(action), 0, 0); > - if (ret && !(xe_device_wedged(pc_to_xe(pc)) && ret == -ECANCELED)) > + if (ret && !(xe_wedged(pc_to_xe(pc)) && ret == -ECANCELED)) > xe_gt_err(pc_to_gt(pc), "GuC PC unset param failed: %pe", > ERR_PTR(ret)); > > @@ -1357,7 +1358,7 @@ static void xe_guc_pc_fini_hw(void *arg) > struct xe_guc_pc *pc = arg; > struct xe_device *xe = pc_to_xe(pc); > > - if (xe_device_wedged(xe)) > + if (xe_wedged(xe)) > return; > > xe_guc_pc_stop(pc); > diff --git a/drivers/gpu/drm/xe/xe_guc_rc.c b/drivers/gpu/drm/xe/xe_guc_rc.c > index 99fa127b261f..fa3062ab134a 100644 > --- a/drivers/gpu/drm/xe/xe_guc_rc.c > +++ b/drivers/gpu/drm/xe/xe_guc_rc.c > @@ -16,6 +16,7 @@ > #include "xe_guc_pc.h" > #include "xe_guc_rc.h" > #include "xe_pm.h" > +#include "xe_wedge.h" > > /** > * DOC: GuC RC (Render C-states) > @@ -40,7 +41,7 @@ static int guc_action_setup_gucrc(struct xe_guc *guc, u32 control) > int ret; > > ret = xe_guc_ct_send(&guc->ct, action, ARRAY_SIZE(action), 0, 0); > - if (ret && !(xe_device_wedged(guc_to_xe(guc)) && ret == -ECANCELED)) > + if (ret && !(xe_wedged(guc_to_xe(guc)) && ret == -ECANCELED)) > xe_gt_err(guc_to_gt(guc), > "GuC RC setup %s(%u) failed (%pe)\n", > control == GUCRC_HOST_CONTROL ? "HOST_CONTROL" : > @@ -73,7 +74,7 @@ static void xe_guc_rc_fini_hw(void *arg) > struct xe_device *xe = guc_to_xe(guc); > struct xe_gt *gt = guc_to_gt(guc); > > - if (xe_device_wedged(xe)) > + if (xe_wedged(xe)) > return; > > CLASS(xe_force_wake, fw_ref)(gt_to_fw(gt), XE_FW_GT); > diff --git a/drivers/gpu/drm/xe/xe_guc_submit.c b/drivers/gpu/drm/xe/xe_guc_submit.c > index 7ce73489c35f..290740f1d654 100644 > --- a/drivers/gpu/drm/xe/xe_guc_submit.c > +++ b/drivers/gpu/drm/xe/xe_guc_submit.c > @@ -50,6 +50,7 @@ > #include "xe_trace.h" > #include "xe_uc_fw.h" > #include "xe_vm.h" > +#include "xe_wedge.h" > > #define XE_GUC_EXEC_QUEUE_CGP_CONTEXT_ERROR_LEN 6 > > @@ -1450,10 +1451,10 @@ static bool guc_submit_hint_wedged(struct xe_guc *guc) > if (xe->wedged.mode != XE_WEDGED_MODE_UPON_ANY_HANG_NO_RESET) > return false; > > - if (xe_device_wedged(xe)) > + if (xe_wedged(xe)) > return true; > > - xe_device_declare_wedged(xe); > + xe_wedge_declare(xe); > > return true; > } > @@ -1660,7 +1661,7 @@ guc_exec_queue_timedout_job(struct drm_sched_job *drm_job) > if (!exec_queue_killed(q)) > wedged = guc_submit_hint_wedged(exec_queue_to_guc(q)); > else > - wedged = xe_device_wedged(xe); > + wedged = xe_wedged(xe); > > /* > * Only tag as GPU hang if this is the original timeout, not a > @@ -1780,7 +1781,7 @@ guc_exec_queue_timedout_job(struct drm_sched_job *drm_job) > } > > if (wedge_device) > - xe_device_declare_wedged(gt_to_xe(q->gt)); > + xe_wedge_declare(gt_to_xe(q->gt)); > > /* > * We want the job added back to the pending list so it gets freed; this > @@ -2543,7 +2544,7 @@ static int guc_exec_queue_wait_suspend_done(struct xe_exec_queue *q, bool blocki > WAIT_COND, HZ * 5); > } > > - if (!blocking && vf_recovery(guc) && !xe_device_wedged(xe)) > + if (!blocking && vf_recovery(guc) && !xe_wedged(xe)) > return -EAGAIN; > > if (!ret) > @@ -2803,7 +2804,7 @@ int xe_guc_submit_reset_prepare(struct xe_guc *guc) > > void xe_guc_submit_reset_wait(struct xe_guc *guc) > { > - wait_event(guc->ct.wq, xe_device_wedged(guc_to_xe(guc)) || > + wait_event(guc->ct.wq, xe_wedged(guc_to_xe(guc)) || > !xe_guc_read_stopped(guc)); > } > > diff --git a/drivers/gpu/drm/xe/xe_guc_tlb_inval.c b/drivers/gpu/drm/xe/xe_guc_tlb_inval.c > index 111fef781b2a..dd38d95c6014 100644 > --- a/drivers/gpu/drm/xe/xe_guc_tlb_inval.c > +++ b/drivers/gpu/drm/xe/xe_guc_tlb_inval.c > @@ -19,6 +19,7 @@ > #include "xe_sa.h" > #include "xe_tlb_inval.h" > #include "xe_vm.h" > +#include "xe_wedge.h" > > #include "regs/xe_guc_regs.h" > > @@ -77,7 +78,7 @@ static int send_tlb_inval_ggtt(struct xe_tlb_inval *tlb_inval, u32 seqno) > }; > > return send_tlb_inval(guc, action, ARRAY_SIZE(action)); > - } else if (xe_device_uc_enabled(xe) && !xe_device_wedged(xe)) { > + } else if (xe_device_uc_enabled(xe) && !xe_wedged(xe)) { > struct xe_mmio *mmio = >->mmio; > > if (IS_SRIOV_VF(xe)) > diff --git a/drivers/gpu/drm/xe/xe_mert.c b/drivers/gpu/drm/xe/xe_mert.c > index 32700c19a1df..b9948153ca0b 100644 > --- a/drivers/gpu/drm/xe/xe_mert.c > +++ b/drivers/gpu/drm/xe/xe_mert.c > @@ -11,6 +11,7 @@ > #include "xe_mmio.h" > #include "xe_sriov_printk.h" > #include "xe_tile.h" > +#include "xe_wedge.h" > > /** > * xe_mert_init_early() - Initialize MERT data > @@ -74,7 +75,7 @@ static void mert_handle_cat_error(struct xe_device *xe) > break; > case CATERR_UNMAPPED_GGTT: > xe_sriov_err(xe, "MERT: CAT_ERR: Access to an unmapped GGTT!\n"); > - xe_device_declare_wedged(xe); > + xe_wedge_declare(xe); > break; > case CATERR_LMTT_FAULT: > xe_sriov_dbg_ratelimited(xe, "MERT: CAT_ERR: VF%u LMTT fault!\n", vfid); > @@ -82,7 +83,7 @@ static void mert_handle_cat_error(struct xe_device *xe) > break; > default: > xe_sriov_err(xe, "MERT: Unexpected CAT_ERR code=%#x!\n", code); > - xe_device_declare_wedged(xe); > + xe_wedge_declare(xe); > break; > } > } > diff --git a/drivers/gpu/drm/xe/xe_pci_error.c b/drivers/gpu/drm/xe/xe_pci_error.c > index 79ce0c671549..418b07dc983a 100644 > --- a/drivers/gpu/drm/xe/xe_pci_error.c > +++ b/drivers/gpu/drm/xe/xe_pci_error.c > @@ -13,6 +13,7 @@ > #include "xe_printk.h" > #include "xe_ras.h" > #include "xe_survivability_mode.h" > +#include "xe_wedge.h" > > static void prepare_device_for_reset(struct pci_dev *pdev) > { > @@ -22,7 +23,7 @@ static void prepare_device_for_reset(struct pci_dev *pdev) > > /* > * Wedge the device to prevent userspace access but do not send the uevent. > - * xe_device_wedged_fini() releases runtime pm if wedged flag is set, so acquire a runtime > + * xe_wedge_fini() releases runtime pm if wedged flag is set, so acquire a runtime > * pm reference to avoid underflow. > */ > if (!atomic_xchg(&xe->wedged.flag, 1)) > @@ -31,7 +32,7 @@ static void prepare_device_for_reset(struct pci_dev *pdev) > xe_device_set_in_reset(xe); > > for_each_gt(gt, xe, id) > - xe_gt_declare_wedged(gt); > + xe_gt_wedge_declare(gt); > > pci_disable_device(pdev); > } > @@ -61,7 +62,7 @@ static pci_ers_result_t xe_pci_error_detected(struct pci_dev *pdev, pci_channel_ > return PCI_ERS_RESULT_DISCONNECT; > > /* If the device is already wedged or in survivability mode, do not attempt recovery */ > - if (xe_survivability_mode_is_boot_enabled(xe) || xe_device_wedged(xe)) > + if (xe_survivability_mode_is_boot_enabled(xe) || xe_wedged(xe)) > return PCI_ERS_RESULT_DISCONNECT; > > switch (state) { > @@ -86,7 +87,7 @@ static pci_ers_result_t xe_pci_error_mmio_enabled(struct pci_dev *pdev) > > /* User wants to debug the error, prevent reset */ > if (xe->wedged.mode == XE_WEDGED_MODE_UPON_ANY_HANG_NO_RESET) { > - xe_device_declare_wedged(xe); > + xe_wedge_declare(xe); > return PCI_ERS_RESULT_DISCONNECT; > } > > diff --git a/drivers/gpu/drm/xe/xe_ras.c b/drivers/gpu/drm/xe/xe_ras.c > index 7a85735c57d5..2e8eb8856f97 100644 > --- a/drivers/gpu/drm/xe/xe_ras.c > +++ b/drivers/gpu/drm/xe/xe_ras.c > @@ -16,6 +16,7 @@ > #include "xe_sysctrl_event_types.h" > #include "xe_sysctrl_mailbox.h" > #include "xe_sysctrl_mailbox_types.h" > +#include "xe_wedge.h" > > #define CORE_COMPUTE_UNCORR_TYPE GENMASK(26, 25) > /* > @@ -321,8 +322,8 @@ static u8 handle_core_compute_errors(struct xe_ras_error_array *arr) > > static void punit_error_handler(struct xe_device *xe) > { > - xe_device_set_wedged_method(xe, DRM_WEDGE_RECOVERY_COLD_RESET); > - xe_device_declare_wedged(xe); > + xe_wedge_set_method(xe, DRM_WEDGE_RECOVERY_COLD_RESET); > + xe_wedge_declare(xe); > } > > static u8 handle_soc_internal_errors(struct xe_device *xe, struct xe_ras_error_array *arr) > diff --git a/drivers/gpu/drm/xe/xe_sriov_pf.c b/drivers/gpu/drm/xe/xe_sriov_pf.c > index 33bd754d138f..ce0db26203ec 100644 > --- a/drivers/gpu/drm/xe/xe_sriov_pf.c > +++ b/drivers/gpu/drm/xe/xe_sriov_pf.c > @@ -19,6 +19,7 @@ > #include "xe_sriov_pf_service.h" > #include "xe_sriov_pf_sysfs.h" > #include "xe_sriov_printk.h" > +#include "xe_wedge.h" > > static unsigned int wanted_max_vfs(struct xe_device *xe) > { > @@ -157,7 +158,7 @@ int xe_sriov_pf_wait_ready(struct xe_device *xe) > unsigned int id; > int err; > > - if (xe_device_wedged(xe)) > + if (xe_wedged(xe)) > return -ECANCELED; > > for_each_gt(gt, xe, id) { > diff --git a/drivers/gpu/drm/xe/xe_survivability_mode.c b/drivers/gpu/drm/xe/xe_survivability_mode.c > index 45d44ebe288b..dacb6303b8da 100644 > --- a/drivers/gpu/drm/xe/xe_survivability_mode.c > +++ b/drivers/gpu/drm/xe/xe_survivability_mode.c > @@ -20,6 +20,7 @@ > #include "xe_pcode_api.h" > #include "xe_printk.h" > #include "xe_vsec.h" > +#include "xe_wedge.h" > > /** > * DOC: Survivability Mode > @@ -446,8 +447,8 @@ void xe_survivability_mode_runtime_enable(struct xe_device *xe) > survivability->type = XE_SURVIVABILITY_TYPE_RUNTIME; > xe_log_err(xe, SURVIVABILITY, 0, "Runtime Mode enabled!\n"); > > - xe_device_set_wedged_method(xe, DRM_WEDGE_RECOVERY_VENDOR); > - xe_device_declare_wedged(xe); > + xe_wedge_set_method(xe, DRM_WEDGE_RECOVERY_VENDOR); > + xe_wedge_declare(xe); > > xe_log_err(xe, SURVIVABILITY, 0, "Firmware flash required!\n"); > xe_info(xe, "Please refer to the userspace documentation for more details how to flash the firmware on %s!\n", > diff --git a/drivers/gpu/drm/xe/xe_uc.c b/drivers/gpu/drm/xe/xe_uc.c > index 65f59f06177f..686c28856014 100644 > --- a/drivers/gpu/drm/xe/xe_uc.c > +++ b/drivers/gpu/drm/xe/xe_uc.c > @@ -326,15 +326,15 @@ void xe_uc_runtime_resume(struct xe_uc *uc) > } > > /** > - * xe_uc_declare_wedged() - Declare UC wedged > + * xe_uc_wedge_declare() - Declare UC wedged > * @uc: the UC object > * > * Wedge the UC which stops all submission, saves desired debug state, and > * cleans up anything which could timeout. > */ > -void xe_uc_declare_wedged(struct xe_uc *uc) > +void xe_uc_wedge_declare(struct xe_uc *uc) > { > xe_gt_assert(uc_to_gt(uc), uc_to_xe(uc)->wedged.mode); > > - xe_guc_declare_wedged(&uc->guc); > + xe_guc_wedge_declare(&uc->guc); > } > diff --git a/drivers/gpu/drm/xe/xe_uc.h b/drivers/gpu/drm/xe/xe_uc.h > index 255a54a8f876..23bc0ce1c42f 100644 > --- a/drivers/gpu/drm/xe/xe_uc.h > +++ b/drivers/gpu/drm/xe/xe_uc.h > @@ -21,6 +21,6 @@ int xe_uc_start(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); > -void xe_uc_declare_wedged(struct xe_uc *uc); > +void xe_uc_wedge_declare(struct xe_uc *uc); > > #endif > diff --git a/drivers/gpu/drm/xe/xe_wedge.c b/drivers/gpu/drm/xe/xe_wedge.c > new file mode 100644 > index 000000000000..bee51a87d043 > --- /dev/null > +++ b/drivers/gpu/drm/xe/xe_wedge.c > @@ -0,0 +1,287 @@ > +// SPDX-License-Identifier: MIT > +/* > + * Copyright © 2026 Intel Corporation > + */ > + > +#include <drm/drm_drv.h> > +#include <drm/drm_managed.h> > + > +#include "xe_defaults.h" > +#include "xe_device.h" > +#include "xe_gt.h" > +#include "xe_gt_printk.h" > +#include "xe_guc_ads.h" > +#include "xe_log.h" > +#include "xe_module.h" > +#include "xe_pm.h" > +#include "xe_printk.h" > +#include "xe_sriov.h" > +#include "xe_wedge.h" > + > +/** > + * DOC: Xe Device Wedging > + * > + * Xe driver uses drm device wedged uevent as documented in Documentation/gpu/drm-uapi.rst. > + * When device is in wedged state, every IOCTL will be blocked and GT cannot > + * be used. The conditions under which the driver declares the device wedged > + * depend on the wedge mode configuration (see &enum xe_wedged_mode). The > + * default recovery method for a wedged state is rebind/bus-reset. > + * > + * Another recovery method is vendor-specific. Below are the cases that send > + * ``WEDGED=vendor-specific`` recovery method in drm device wedged uevent. > + * > + * Case: Firmware Flash > + * -------------------- > + * > + * Identification Hint > + * +++++++++++++++++++ > + * > + * ``WEDGED=vendor-specific`` drm device wedged uevent with > + * :ref:`Runtime Survivability mode <xe-survivability-mode>` is used to notify > + * admin/userspace consumer about the need for a firmware flash. > + * > + * Recovery Procedure > + * ++++++++++++++++++ > + * > + * Once ``WEDGED=vendor-specific`` drm device wedged uevent is received, follow > + * the below steps > + * > + * - Check Runtime Survivability mode sysfs. > + * If enabled, firmware flash is required to recover the device. > + * > + * /sys/bus/pci/devices/<device>/survivability_mode > + * > + * - Admin/userspace consumer can use firmware flashing tools like fwupd to flash > + * firmware and restore device to normal operation. > + */ > + > +/** > + * xe_wedge_set_method() - Set wedge recovery method > + * @xe: xe device instance > + * @method: recovery method to set > + * > + * Set wedge recovery method to be sent in drm wedged uevent. > + */ > +void xe_wedge_set_method(struct xe_device *xe, unsigned long method) > +{ > + xe->wedged.method = method; > +} > + > +/** > + * xe_wedged() - Check for wedged device > + * @xe: xe device instance > + * > + * Returns: %true if device is wedged, %false otherwise. > + */ > +bool xe_wedged(struct xe_device *xe) > +{ > + return atomic_read(&xe->wedged.flag); > +} > + > +static void wedge_work(struct work_struct *work) > +{ > + struct xe_device *xe = container_of(work, struct xe_device, wedged.work); > + > + /* > + * XE_WEDGED_MODE_UPON_ANY_HANG_NO_RESET is intended for debugging > + * hangs, so wedge the device with 'none' recovery method and have > + * it available to the user for debugging. > + */ > + if (xe->wedged.mode == XE_WEDGED_MODE_UPON_ANY_HANG_NO_RESET) > + xe_wedge_set_method(xe, DRM_WEDGE_RECOVERY_NONE); > + /* If no wedge recovery method is set, use default */ > + else if (!xe->wedged.method) > + xe_wedge_set_method(xe, DRM_WEDGE_RECOVERY_REBIND | > + DRM_WEDGE_RECOVERY_BUS_RESET); > + > + /* Notify userspace of wedged device */ > + drm_dev_wedged_event(&xe->drm, xe->wedged.method, NULL); > +} > + > +#define WEDGED_URL "https://docs.kernel.org/gpu/drm-uapi.html#device-wedging" > +#define XE_BUG_URL "https://gitlab.freedesktop.org/drm/xe/kernel/issues/new" > + > +/** > + * xe_wedge_declare() - Declare device wedged > + * @xe: xe device instance > + * > + * This is a final state that can only be cleared with the recovery method > + * specified in the drm wedged uevent. The method can be set using > + * xe_wedge_set_method() before declaring the device as wedged. > + * If no method is set, rebind/bus-reset will be sent by default. > + * > + * In this state every IOCTL will be blocked so the GT cannot be used. > + * In general it will be called upon any critical error such as gt reset > + * failure or guc loading failure. Userspace will be notified of this state > + * through device wedged uevent. > + * If xe.wedged module parameter is set to 2, this function will be called > + * on every single execution timeout (a.k.a. GPU hang) right after devcoredump > + * snapshot capture. In this mode, GT reset won't be attempted so the state of > + * the issue is preserved for further debugging. > + * > + * Since the wedge handling is done as part of worker thread, this is safe for > + * atomic callers. > + */ > +void xe_wedge_declare(struct xe_device *xe) > +{ > + struct xe_gt *gt; > + u8 id; > + > + if (xe->wedged.mode == XE_WEDGED_MODE_NEVER) { > + xe_dbg(xe, "Wedged mode is forcibly disabled\n"); > + return; > + } > + > + if (atomic_xchg(&xe->wedged.flag, 1)) > + return; > + > + xe->needs_flr_on_fini = true; > + xe_pm_runtime_get_noresume(xe); > + > + xe_log_err_fatal(xe, WEDGED, -EIO, "Device declared wedged!\n"); > + xe_err_once(xe, "IOCTLs and executions are now blocked!\n" > + "For recovery procedure, refer to %s\n" > + "Please file a _new_ bug report at %s\n", > + WEDGED_URL, XE_BUG_URL); > + > + for_each_initialized_gt(gt, xe, id) > + xe_gt_wedge_declare(gt); > + > + schedule_work(&xe->wedged.work); > +} > + > +static const char *wedge_mode_to_string(enum xe_wedged_mode mode) > +{ > + switch (mode) { > + case XE_WEDGED_MODE_NEVER: > + return "never"; > + case XE_WEDGED_MODE_UPON_CRITICAL_ERROR: > + return "upon-critical-error"; > + case XE_WEDGED_MODE_UPON_ANY_HANG_NO_RESET: > + return "upon-any-hang-no-reset"; > + default: > + return "<invalid>"; > + } > +} > + > +static int wedge_validate_mode(struct xe_device *xe, unsigned int mode) > +{ > + if (mode > XE_WEDGED_MODE_UPON_ANY_HANG_NO_RESET) { > + xe_dbg(xe, "wedged_mode: invalid value (%u)\n", mode); > + return -EINVAL; > + } else if (mode == XE_WEDGED_MODE_UPON_ANY_HANG_NO_RESET && (IS_SRIOV_VF(xe) || > + (IS_SRIOV_PF(xe) && !IS_ENABLED(CONFIG_DRM_XE_DEBUG)))) { > + xe_dbg(xe, "wedged_mode: (%u) %s mode is not supported for %s\n", > + mode, wedge_mode_to_string(mode), > + xe_sriov_mode_to_string(xe_device_sriov_mode(xe))); > + return -EPERM; > + } > + > + return 0; > +} > + > +static bool wedge_mode_needs_policy_update(struct xe_device *xe, enum xe_wedged_mode mode) > +{ > + if (xe->wedged.inconsistent_reset) > + return true; > + > + if (xe->wedged.mode == mode) > + return false; > + > + if (xe->wedged.mode == XE_WEDGED_MODE_UPON_ANY_HANG_NO_RESET || > + mode == XE_WEDGED_MODE_UPON_ANY_HANG_NO_RESET) > + return true; > + > + return false; > +} > + > +static int __wedge_mode_set_reset_policy(struct xe_gt *gt, enum xe_wedged_mode mode) > +{ > + bool enable_engine_reset; > + int ret; > + > + enable_engine_reset = (mode != XE_WEDGED_MODE_UPON_ANY_HANG_NO_RESET); > + ret = xe_guc_ads_scheduler_policy_toggle_reset(>->uc.guc.ads, > + enable_engine_reset); > + if (ret) > + xe_gt_err(gt, "Failed to update GuC ADS scheduler policy (%pe)\n", ERR_PTR(ret)); > + > + return ret; > +} > + > +static int wedge_mode_set_reset_policy(struct xe_device *xe, enum xe_wedged_mode mode) > +{ > + struct xe_gt *gt; > + int ret; > + u8 id; > + > + guard(xe_pm_runtime)(xe); > + for_each_gt(gt, xe, id) { > + ret = __wedge_mode_set_reset_policy(gt, mode); > + if (ret) { > + if (id > 0) { > + xe->wedged.inconsistent_reset = true; > + xe_err(xe, "Inconsistent reset policy state between GTs\n"); > + } > + return ret; > + } > + } > + > + xe->wedged.inconsistent_reset = false; > + > + return 0; > +} > + > +/** > + * xe_wedge_set_mode() - Set wedge mode > + * @xe: xe device instance > + * @mode: wedge mode to be set > + * > + * Returns: 0 on success, negative error code otherwise. > + */ > +int xe_wedge_set_mode(struct xe_device *xe, enum xe_wedged_mode mode) > +{ > + int ret; > + > + ret = wedge_validate_mode(xe, mode); > + if (ret) > + return ret; > + > + if (wedge_mode_needs_policy_update(xe, mode)) { > + ret = wedge_mode_set_reset_policy(xe, mode); > + if (ret) > + return ret; > + } > + > + xe->wedged.mode = mode; > + > + return ret; > +} > + > +static void xe_wedge_fini(struct drm_device *drm, void *arg) > +{ > + struct xe_device *xe = arg; > + > + disable_work_sync(&xe->wedged.work); > + > + if (atomic_read(&xe->wedged.flag)) > + xe_pm_runtime_put(xe); > +} > + > +/** > + * xe_wedge_init() - Initialize wedge > + * @xe: xe device instance > + * > + * Returns: 0 on success, negative error code otherwise. > + */ > +int xe_wedge_init(struct xe_device *xe) > +{ > + INIT_WORK(&xe->wedged.work, wedge_work); > + > + xe->wedged.mode = wedge_validate_mode(xe, xe_modparam.wedged_mode) ? > + XE_DEFAULT_WEDGED_MODE : xe_modparam.wedged_mode; > + xe_dbg(xe, "wedged_mode: setting mode (%u) %s\n", > + xe->wedged.mode, wedge_mode_to_string(xe->wedged.mode)); > + > + return drmm_add_action_or_reset(&xe->drm, xe_wedge_fini, xe); > +} > diff --git a/drivers/gpu/drm/xe/xe_wedge.h b/drivers/gpu/drm/xe/xe_wedge.h > new file mode 100644 > index 000000000000..e564a3b9d7d8 > --- /dev/null > +++ b/drivers/gpu/drm/xe/xe_wedge.h > @@ -0,0 +1,20 @@ > +/* SPDX-License-Identifier: MIT */ > +/* > + * Copyright © 2026 Intel Corporation > + */ > + > +#ifndef _XE_WEDGE_H_ > +#define _XE_WEDGE_H_ > + > +#include <linux/types.h> > + > +struct xe_device; > +enum xe_wedged_mode; > + > +bool xe_wedged(struct xe_device *xe); > +void xe_wedge_declare(struct xe_device *xe); > +int xe_wedge_init(struct xe_device *xe); > +void xe_wedge_set_method(struct xe_device *xe, unsigned long method); > +int xe_wedge_set_mode(struct xe_device *xe, enum xe_wedged_mode mode); > + > +#endif > diff --git a/drivers/gpu/drm/xe/xe_wedge_types.h b/drivers/gpu/drm/xe/xe_wedge_types.h > new file mode 100644 > index 000000000000..e6084f151c62 > --- /dev/null > +++ b/drivers/gpu/drm/xe/xe_wedge_types.h > @@ -0,0 +1,45 @@ > +/* SPDX-License-Identifier: MIT */ > +/* > + * Copyright © 2026 Intel Corporation > + */ > + > +#ifndef _XE_WEDGE_TYPES_H_ > +#define _XE_WEDGE_TYPES_H_ > + > +#include <linux/atomic.h> > +#include <linux/types.h> > +#include <linux/workqueue_types.h> > + > +/** > + * enum xe_wedged_mode - Possible wedge modes > + * @XE_WEDGED_MODE_NEVER: Device will never be declared wedged. > + * @XE_WEDGED_MODE_UPON_CRITICAL_ERROR: Device will be declared wedged only > + * when critical error occurs like GT reset failure or firmware failure. > + * This is the default mode. > + * @XE_WEDGED_MODE_UPON_ANY_HANG_NO_RESET: Device will be declared wedged on > + * any hang. In this mode, engine resets are disabled to avoid automatic > + * recovery attempts. This mode is primarily intended for debugging hangs. > + */ > +enum xe_wedged_mode { > + XE_WEDGED_MODE_NEVER = 0, > + XE_WEDGED_MODE_UPON_CRITICAL_ERROR = 1, > + XE_WEDGED_MODE_UPON_ANY_HANG_NO_RESET = 2, > +}; > + > +/** > + * struct xe_wedge - Struct to control Wedged States and mode > + */ > +struct xe_wedge { > + /** @flag: Xe device faced a critical error and is now blocked. */ > + atomic_t flag; > + /** @mode: Mode controlled by kernel parameter and debugfs */ > + enum xe_wedged_mode mode; > + /** @method: Recovery method to be sent in the drm device wedged uevent */ > + unsigned long method; > + /** @inconsistent_reset: Inconsistent reset policy state between GTs */ > + bool inconsistent_reset; > + /** @work: Worker for wedge handling */ > + struct work_struct work; > +}; > + > +#endif > -- > 2.43.0 > ^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH v4 5/5] drm/xe/ras: Move xe_ras_process_errors() to xe_ras 2026-10-10 9:06 [PATCH v4 0/5] Introduce xe_wedge Raag Jadav ` (3 preceding siblings ...) 2026-10-10 9:06 ` [PATCH v4 4/5] drm/xe: Introduce xe_wedge Raag Jadav @ 2026-10-10 9:06 ` Raag Jadav 2026-10-10 9:28 ` sashiko-bot 2026-10-10 9:15 ` ✗ CI.checkpatch: warning for Introduce xe_wedge (rev3) Patchwork ` (3 subsequent siblings) 8 siblings, 1 reply; 16+ messages in thread From: Raag Jadav @ 2026-10-10 9:06 UTC (permalink / raw) To: intel-xe Cc: riana.tauro, michal.wajdeczko, lukasz.laguna, matthew.d.roper, matthew.brost, mallesh.koujalagi, rodrigo.vivi, Raag Jadav With xe_wedge_fini() now moved to xe_wedge and registered as part of xe_device_probe_early(), it is safe to move xe_ras_process_errors() back to xe_ras where it belongs. This essentially reverts commit 20bc4883c7c0 ("drm/xe/ras: Fix boot-time ras error processing"), which was added to prevent PM reference leak in case of early wedging in probe sequence. Signed-off-by: Raag Jadav <raag.jadav@intel.com> Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com> --- drivers/gpu/drm/xe/xe_device.c | 7 ------- drivers/gpu/drm/xe/xe_ras.c | 7 +++++++ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/xe_device.c index e0466390219c..a6bcb82b115f 100644 --- a/drivers/gpu/drm/xe/xe_device.c +++ b/drivers/gpu/drm/xe/xe_device.c @@ -1087,13 +1087,6 @@ int xe_device_probe(struct xe_device *xe) detect_preproduction_hw(xe); - /* - * Process and log any errors detected by hardware. Possible results can - * include declaring the device as wedged, which must be done only after - * xe_wedge_fini() is registered. - */ - xe_ras_process_errors(xe); - err = devm_add_action_or_reset(xe->drm.dev, xe_device_sanitize, xe); if (err) goto err_unregister_display; diff --git a/drivers/gpu/drm/xe/xe_ras.c b/drivers/gpu/drm/xe/xe_ras.c index 2e8eb8856f97..abf4800ff1e3 100644 --- a/drivers/gpu/drm/xe/xe_ras.c +++ b/drivers/gpu/drm/xe/xe_ras.c @@ -933,6 +933,13 @@ void xe_ras_init(struct xe_device *xe) if (IS_ENABLED(CONFIG_PCIEAER)) ras_usp_aer_init(xe); + /* + * During probe, process and log any errors detected by firmware while the driver was not + * loaded. Critical errors such as Punit and CSC are reported through Pcode init failure, + * causing the driver to enter survivability mode. + */ + xe_ras_process_errors(xe); + ret = devm_device_add_group(xe->drm.dev, &gpu_health_group); if (ret) xe_err(xe, "Failed to create GPU health sysfs, err=%d\n", ret); -- 2.43.0 ^ permalink raw reply related [flat|nested] 16+ messages in thread
* Re: [PATCH v4 5/5] drm/xe/ras: Move xe_ras_process_errors() to xe_ras 2026-10-10 9:06 ` [PATCH v4 5/5] drm/xe/ras: Move xe_ras_process_errors() to xe_ras Raag Jadav @ 2026-10-10 9:28 ` sashiko-bot 0 siblings, 0 replies; 16+ messages in thread From: sashiko-bot @ 2026-10-10 9:28 UTC (permalink / raw) To: Raag Jadav; +Cc: intel-xe Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider: - [High] xe: early wedging causes probe failure and dropped uevents -- commit eda4360aefb71a5fa669e79a246b3deb2191fe3f Author: Raag Jadav <raag.jadav@intel.com> drm/xe/ras: Move xe_ras_process_errors() to xe_ras This commit moves xe_ras_process_errors() from xe_device_probe() to xe_ras_init() to process and log boot-time RAS errors earlier in the probe sequence. > diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/xe_device.c > --- a/drivers/gpu/drm/xe/xe_device.c > +++ b/drivers/gpu/drm/xe/xe_device.c > @@ -1087,13 +1087,6 @@ int xe_device_probe(struct xe_device *xe) > > detect_preproduction_hw(xe); > > - /* > - * Process and log any errors detected by hardware. Possible results can > - * include declaring the device as wedged, which must be done only after > - * xe_wedge_fini() is registered. > - */ > - xe_ras_process_errors(xe); > - > err = devm_add_action_or_reset(xe->drm.dev, xe_device_sanitize, xe); > if (err) > goto err_unregister_display; [ ... ] > diff --git a/drivers/gpu/drm/xe/xe_ras.c b/drivers/gpu/drm/xe/xe_ras.c > --- a/drivers/gpu/drm/xe/xe_ras.c > +++ b/drivers/gpu/drm/xe/xe_ras.c > @@ -933,6 +933,13 @@ void xe_ras_init(struct xe_device *xe) > if (IS_ENABLED(CONFIG_PCIEAER)) > ras_usp_aer_init(xe); > > + /* > + * During probe, process and log any errors detected by firmware while the driver was not > + * loaded. Critical errors such as Punit and CSC are reported through Pcode init failure, > + * causing the driver to enter survivability mode. > + */ > + xe_ras_process_errors(xe); [Severity: High] Does moving xe_ras_process_errors() here cause the driver to fail probe instead of remaining loaded in a wedged state? If xe_ras_process_errors() encounters a fatal error, it sets the wedged flag. Because xe_ras_init() now runs before xe_gt_init(), subsequent GuC CT operations during GT initialization will fail due to the wedged state: drivers/gpu/drm/xe/xe_guc_ct.c:__guc_ct_send_locked() { if (xe_wedged(ct_to_xe(ct))) { ret = -ENOTRECOVERABLE; goto out; } ... } This would cause xe_device_probe() to abort entirely. Additionally, when the wedge worker calls drm_dev_wedged_event(), won't the uevent be silently dropped? drivers/gpu/drm/drm_drv.c:drm_dev_wedged_event() { ... return kobject_uevent_env(&dev->primary->kdev->kobj, KOBJ_CHANGE, envp); } At this point in xe_ras_init(), drm_dev_register() hasn't been called yet, so the DRM device kobject hasn't been added to sysfs. The original location in xe_device_probe() was placed safely after GT initialization and DRM device registration. > + > ret = devm_device_add_group(xe->drm.dev, &gpu_health_group); > if (ret) > xe_err(xe, "Failed to create GPU health sysfs, err=%d\n", ret); -- Sashiko AI review · https://sashiko.dev/#/patchset/20261010090718.68308-1-raag.jadav@intel.com?part=5 ^ permalink raw reply [flat|nested] 16+ messages in thread
* ✗ CI.checkpatch: warning for Introduce xe_wedge (rev3) 2026-10-10 9:06 [PATCH v4 0/5] Introduce xe_wedge Raag Jadav ` (4 preceding siblings ...) 2026-10-10 9:06 ` [PATCH v4 5/5] drm/xe/ras: Move xe_ras_process_errors() to xe_ras Raag Jadav @ 2026-10-10 9:15 ` Patchwork 2026-10-10 9:17 ` ✓ CI.KUnit: success " Patchwork ` (2 subsequent siblings) 8 siblings, 0 replies; 16+ messages in thread From: Patchwork @ 2026-10-10 9:15 UTC (permalink / raw) To: Raag Jadav; +Cc: intel-xe == Series Details == Series: Introduce xe_wedge (rev3) URL : https://patchwork.freedesktop.org/series/173011/ State : warning == Summary == + KERNEL=/kernel + git clone https://gitlab.freedesktop.org/drm/maintainer-tools mt Cloning into 'mt'... warning: redirecting to https://gitlab.freedesktop.org/drm/maintainer-tools.git/ + git -C mt rev-list -n1 origin/master 6bef5ce5c74dc76b4ee69ab2832c0d1fd63c91c7 + cd /kernel + git config --global --add safe.directory /kernel + git log -n1 commit f4d9381b24c4c0ae034cce6010b4898c74a8a456 Author: Raag Jadav <raag.jadav@intel.com> Date: Sat Oct 10 14:36:22 2026 +0530 drm/xe/ras: Move xe_ras_process_errors() to xe_ras With xe_wedge_fini() now moved to xe_wedge and registered as part of xe_device_probe_early(), it is safe to move xe_ras_process_errors() back to xe_ras where it belongs. This essentially reverts commit 20bc4883c7c0 ("drm/xe/ras: Fix boot-time ras error processing"), which was added to prevent PM reference leak in case of early wedging in probe sequence. Signed-off-by: Raag Jadav <raag.jadav@intel.com> Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com> + /mt/dim checkpatch 42fb41a656d70e2226e00726a8fedbe4152639ff drm-intel c3178965a79f drm/xe/gt: Use GT ordered workqueue for wedging -:42: ERROR:COMPLEX_MACRO: Macros with complex values should be enclosed in parentheses #42: FILE: drivers/gpu/drm/xe/xe_device.h:142: +#define for_each_initialized_gt(gt__, xe__, id__) \ + for_each_gt((gt__), (xe__), (id__)) \ + for_each_if((gt__)->initialized) BUT SEE: do {} while (0) advice is over-stated in a few situations: The more obvious case is macros, like MODULE_PARM_DESC, invoked at file-scope, where C disallows code (it must be in functions). See $exceptions if you have one to add by name. More troublesome is declarative macros used at top of new scope, like DECLARE_PER_CPU. These might just compile with a do-while-0 wrapper, but would be incorrect. Most of these are handled by detecting struct,union,etc declaration primitives in $exceptions. Theres also macros called inside an if (block), which "return" an expression. These cannot do-while, and need a ({}) wrapper. Enjoy this qualification while we work to improve our heuristics. -:42: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'gt__' - possible side-effects? #42: FILE: drivers/gpu/drm/xe/xe_device.h:142: +#define for_each_initialized_gt(gt__, xe__, id__) \ + for_each_gt((gt__), (xe__), (id__)) \ + for_each_if((gt__)->initialized) total: 1 errors, 0 warnings, 1 checks, 90 lines checked dbee7e37e2ea drm/xe: Move xe_device_wedged_fini() registration to xe_device_probe_early() d051f835f946 drm/xe: Make xe_device_declare_wedged() IRQ safe 2e44c78b095d drm/xe: Introduce xe_wedge -:1081: WARNING:FILE_PATH_CHANGES: added, moved or deleted file(s), does MAINTAINERS need updating? #1081: new file mode 100644 total: 0 errors, 1 warnings, 0 checks, 1236 lines checked f4d9381b24c4 drm/xe/ras: Move xe_ras_process_errors() to xe_ras ^ permalink raw reply [flat|nested] 16+ messages in thread
* ✓ CI.KUnit: success for Introduce xe_wedge (rev3) 2026-10-10 9:06 [PATCH v4 0/5] Introduce xe_wedge Raag Jadav ` (5 preceding siblings ...) 2026-10-10 9:15 ` ✗ CI.checkpatch: warning for Introduce xe_wedge (rev3) Patchwork @ 2026-10-10 9:17 ` Patchwork 2026-10-10 10:06 ` ✓ Xe.CI.BAT: " Patchwork 2026-10-10 11:29 ` ✓ Xe.CI.FULL: " Patchwork 8 siblings, 0 replies; 16+ messages in thread From: Patchwork @ 2026-10-10 9:17 UTC (permalink / raw) To: Raag Jadav; +Cc: intel-xe == Series Details == Series: Introduce xe_wedge (rev3) URL : https://patchwork.freedesktop.org/series/173011/ State : success == Summary == + trap cleanup EXIT + kunitconfigs=('/kernel/drivers/gpu/tests/.kunitconfig' '/kernel/drivers/gpu/drm/xe/.kunitconfig' '/kernel/drivers/gpu/drm/tests/.kunitconfig' '/kernel/drivers/gpu/drm/ttm/tests/.kunitconfig' '/kernel/drivers/dma-buf/.kunitconfig') + for kcfg in "${kunitconfigs[@]}" + [[ ! -f /kernel/drivers/gpu/tests/.kunitconfig ]] + /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/tests/.kunitconfig [09:15:13] Configuring KUnit Kernel ... Generating .config ... Populating config with: $ make ARCH=um O=.kunit olddefconfig [09:15:17] 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 [09:15:38] Starting KUnit Kernel (1/1)... [09:15:38] ============================================================ Running tests with: $ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt [09:15:38] ================= gpu_buddy (14 subtests) ================== [09:15:38] [PASSED] gpu_test_buddy_alloc_limit [09:15:38] [PASSED] gpu_test_buddy_alloc_optimistic [09:15:38] [PASSED] gpu_test_buddy_alloc_pessimistic [09:15:38] [PASSED] gpu_test_buddy_alloc_pathological [09:15:38] [PASSED] gpu_test_buddy_alloc_contiguous [09:15:38] [PASSED] gpu_test_buddy_alloc_clear [09:15:38] [PASSED] gpu_test_buddy_alloc_range [09:15:38] [PASSED] gpu_test_buddy_alloc_range_bias [09:15:39] [PASSED] gpu_test_buddy_fragmentation_performance [09:15:39] [PASSED] gpu_test_buddy_dirty_tracker_performance [09:15:39] [PASSED] gpu_test_buddy_alloc_exceeds_max_order [09:15:39] [PASSED] gpu_test_buddy_offset_aligned_allocation [09:15:39] [PASSED] gpu_test_buddy_subtree_offset_alignment_stress [09:15:39] [PASSED] gpu_test_buddy_addr_to_block [09:15:39] ==================== [PASSED] gpu_buddy ==================== [09:15:39] ============================================================ [09:15:39] Testing complete. Ran 14 tests: passed: 14 [09:15:40] Elapsed time: 26.822s total, 4.451s configuring, 20.503s building, 1.822s running + for kcfg in "${kunitconfigs[@]}" + [[ ! -f /kernel/drivers/gpu/drm/xe/.kunitconfig ]] + /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/xe/.kunitconfig [09:15:40] Configuring KUnit Kernel ... Regenerating .config ... Populating config with: $ make ARCH=um O=.kunit olddefconfig [09:15:42] 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 [09:16:16] Starting KUnit Kernel (1/1)... [09:16:16] ============================================================ Running tests with: $ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt [09:16:16] ================== guc_buf (11 subtests) =================== [09:16:16] [PASSED] test_smallest [09:16:16] [PASSED] test_largest [09:16:16] [PASSED] test_granular [09:16:16] [PASSED] test_unique [09:16:16] [PASSED] test_overlap [09:16:16] [PASSED] test_reusable [09:16:16] [PASSED] test_too_big [09:16:16] [PASSED] test_flush [09:16:16] [PASSED] test_lookup [09:16:16] [PASSED] test_data [09:16:16] [PASSED] test_class [09:16:16] ===================== [PASSED] guc_buf ===================== [09:16:16] =================== guc_dbm (7 subtests) =================== [09:16:16] [PASSED] test_empty [09:16:16] [PASSED] test_default [09:16:16] ======================== test_size ======================== [09:16:16] [PASSED] 4 [09:16:16] [PASSED] 8 [09:16:16] [PASSED] 32 [09:16:16] [PASSED] 256 [09:16:16] ==================== [PASSED] test_size ==================== [09:16:16] ======================= test_reuse ======================== [09:16:16] [PASSED] 4 [09:16:16] [PASSED] 8 [09:16:16] [PASSED] 32 [09:16:16] [PASSED] 256 [09:16:16] =================== [PASSED] test_reuse ==================== [09:16:16] =================== test_range_overlap ==================== [09:16:16] [PASSED] 4 [09:16:16] [PASSED] 8 [09:16:16] [PASSED] 32 [09:16:16] [PASSED] 256 [09:16:16] =============== [PASSED] test_range_overlap ================ [09:16:16] =================== test_range_compact ==================== [09:16:16] [PASSED] 4 [09:16:16] [PASSED] 8 [09:16:16] [PASSED] 32 [09:16:16] [PASSED] 256 [09:16:16] =============== [PASSED] test_range_compact ================ [09:16:16] ==================== test_range_spare ===================== [09:16:16] [PASSED] 4 [09:16:16] [PASSED] 8 [09:16:16] [PASSED] 32 [09:16:16] [PASSED] 256 [09:16:16] ================ [PASSED] test_range_spare ================= [09:16:16] ===================== [PASSED] guc_dbm ===================== [09:16:16] =================== guc_idm (6 subtests) =================== [09:16:16] [PASSED] bad_init [09:16:16] [PASSED] no_init [09:16:16] [PASSED] init_fini [09:16:16] [PASSED] check_used [09:16:16] [PASSED] check_quota [09:16:16] [PASSED] check_all [09:16:16] ===================== [PASSED] guc_idm ===================== [09:16:16] ============== guc_klv_helpers (13 subtests) =============== [09:16:16] [PASSED] test_count [09:16:16] [PASSED] test_encode_u32 [09:16:16] [PASSED] test_encode_u64 [09:16:16] [PASSED] test_encode_string [09:16:16] [PASSED] test_encode_object_raw [09:16:16] [PASSED] test_encode_object_klv [09:16:16] [PASSED] test_encode_object_nested [09:16:16] [PASSED] test_encode_object_basic [09:16:16] ===================== test_decode_u16 ===================== [09:16:16] [PASSED] empty [09:16:16] [PASSED] valid [09:16:16] [PASSED] max [09:16:16] [PASSED] big [09:16:16] [PASSED] long [09:16:16] ================= [PASSED] test_decode_u16 ================= [09:16:16] ===================== test_decode_u32 ===================== [09:16:16] [PASSED] empty [09:16:16] [PASSED] valid [09:16:16] [PASSED] max [09:16:16] [PASSED] long [09:16:16] ================= [PASSED] test_decode_u32 ================= [09:16:16] ===================== test_decode_u64 ===================== [09:16:16] [PASSED] empty [09:16:16] [PASSED] short [09:16:16] [PASSED] valid [09:16:16] [PASSED] max [09:16:16] [PASSED] long [09:16:16] ================= [PASSED] test_decode_u64 ================= [09:16:16] ===================== test_decode_str ===================== [09:16:16] [PASSED] empty [09:16:16] [PASSED] one [09:16:16] [PASSED] one_trash [09:16:16] [PASSED] two [09:16:16] [PASSED] two_trash [09:16:16] [PASSED] three [09:16:16] [PASSED] dword [09:16:16] [PASSED] four [09:16:16] [PASSED] five [09:16:16] [PASSED] six [09:16:16] [PASSED] seven [09:16:16] [PASSED] qword [09:16:16] ================= [PASSED] test_decode_str ================= [09:16:16] [PASSED] test_print [09:16:16] ================= [PASSED] guc_klv_helpers ================= [09:16:16] =================== xe_log (4 subtests) ==================== [09:16:16] [PASSED] demo_cper [09:16:16] [PASSED] demo_dmesg [09:16:16] ======================= test_dmesg ======================== [09:16:16] [PASSED] test_fatal [09:16:16] [PASSED] test_fatal_tile [09:16:16] [PASSED] test_fatal_gt [09:16:16] [PASSED] test_fatal_comp [09:16:16] [PASSED] test_fatal_comp_tile [09:16:16] [PASSED] test_fatal_comp_gt [09:16:16] [PASSED] test_fatal_all [09:16:16] [PASSED] test_recoverable [09:16:16] [PASSED] test_recoverable_tile [09:16:16] [PASSED] test_recoverable_gt [09:16:16] [PASSED] test_recoverable_comp [09:16:16] [PASSED] test_recoverable_comp_tile [09:16:16] [PASSED] test_recoverable_comp_gt [09:16:16] [PASSED] test_recoverable_all [09:16:16] [PASSED] test_info [09:16:16] [PASSED] test_info_tile [09:16:16] [PASSED] test_info_gt [09:16:16] [PASSED] test_info_err [09:16:16] [PASSED] test_info_comp [09:16:16] [PASSED] test_info_comp_tile [09:16:16] [PASSED] test_info_comp_gt [09:16:16] [PASSED] test_info_all [09:16:16] [PASSED] test_hw_fatal [09:16:16] [PASSED] test_hw_recoverable [09:16:16] [PASSED] test_hw_corrected [09:16:16] [PASSED] test_hw_informational [09:16:16] =================== [PASSED] test_dmesg ==================== [09:16:16] ====================== test_invalid ======================= [09:16:16] [SKIPPED] no-component no-location no-warn (requires CONFIG_DRM_XE_DEBUG) [09:16:16] [SKIPPED] reserved location (requires CONFIG_DRM_XE_DEBUG) [09:16:16] [SKIPPED] unknown location (requires CONFIG_DRM_XE_DEBUG) [09:16:16] [SKIPPED] nonzero-device-id location (requires CONFIG_DRM_XE_DEBUG) [09:16:16] [SKIPPED] invalid-tile-id location (requires CONFIG_DRM_XE_DEBUG) [09:16:16] [SKIPPED] invalid-gt-id location (requires CONFIG_DRM_XE_DEBUG) [09:16:16] [SKIPPED] unknown component class (requires CONFIG_DRM_XE_DEBUG) [09:16:16] [SKIPPED] unknown system component (requires CONFIG_DRM_XE_DEBUG) [09:16:16] [SKIPPED] unknown hardware component (requires CONFIG_DRM_XE_DEBUG) [09:16:16] [SKIPPED] unknown component and location (requires CONFIG_DRM_XE_DEBUG) [09:16:16] ================== [SKIPPED] test_invalid ================== [09:16:16] ===================== [PASSED] xe_log ====================== [09:16:16] ================== no_relay (3 subtests) =================== [09:16:16] [PASSED] xe_drops_guc2pf_if_not_ready [09:16:16] [PASSED] xe_drops_guc2vf_if_not_ready [09:16:16] [PASSED] xe_rejects_send_if_not_ready [09:16:16] ==================== [PASSED] no_relay ===================== [09:16:16] ================== pf_relay (14 subtests) ================== [09:16:16] [PASSED] pf_rejects_guc2pf_too_short [09:16:16] [PASSED] pf_rejects_guc2pf_too_long [09:16:16] [PASSED] pf_rejects_guc2pf_no_payload [09:16:16] [PASSED] pf_fails_no_payload [09:16:16] [PASSED] pf_fails_bad_origin [09:16:16] [PASSED] pf_fails_bad_type [09:16:16] [PASSED] pf_txn_reports_error [09:16:16] [PASSED] pf_txn_sends_pf2guc [09:16:16] [PASSED] pf_sends_pf2guc [09:16:16] [SKIPPED] pf_loopback_nop (requires CONFIG_DRM_XE_DEBUG_SRIOV) [09:16:16] [SKIPPED] pf_loopback_echo (requires CONFIG_DRM_XE_DEBUG_SRIOV) [09:16:16] [SKIPPED] pf_loopback_fail (requires CONFIG_DRM_XE_DEBUG_SRIOV) [09:16:16] [SKIPPED] pf_loopback_busy (requires CONFIG_DRM_XE_DEBUG_SRIOV) [09:16:16] [SKIPPED] pf_loopback_retry (requires CONFIG_DRM_XE_DEBUG_SRIOV) [09:16:16] ==================== [PASSED] pf_relay ===================== [09:16:16] ================== vf_relay (3 subtests) =================== [09:16:16] [PASSED] vf_rejects_guc2vf_too_short [09:16:16] [PASSED] vf_rejects_guc2vf_too_long [09:16:16] [PASSED] vf_rejects_guc2vf_no_payload [09:16:16] ==================== [PASSED] vf_relay ===================== [09:16:16] ================ pf_gt_config (9 subtests) ================= [09:16:16] [PASSED] fair_contexts_1vf [09:16:16] [PASSED] fair_doorbells_1vf [09:16:16] [PASSED] fair_ggtt_1vf [09:16:16] ====================== fair_vram_1vf ====================== [09:16:16] [PASSED] 3.50 GiB [09:16:16] [PASSED] 11.5 GiB [09:16:16] [PASSED] 15.5 GiB [09:16:16] [PASSED] 31.5 GiB [09:16:16] [PASSED] 63.5 GiB [09:16:16] [PASSED] 1.91 GiB [09:16:16] ================== [PASSED] fair_vram_1vf ================== [09:16:16] ================ fair_vram_1vf_admin_only ================= [09:16:16] [PASSED] 3.50 GiB [09:16:16] [PASSED] 11.5 GiB [09:16:16] [PASSED] 15.5 GiB [09:16:16] [PASSED] 31.5 GiB [09:16:16] [PASSED] 63.5 GiB [09:16:16] [PASSED] 1.91 GiB [09:16:16] ============ [PASSED] fair_vram_1vf_admin_only ============= [09:16:16] ====================== fair_contexts ====================== [09:16:16] [PASSED] 1 VF [09:16:16] [PASSED] 2 VFs [09:16:16] [PASSED] 3 VFs [09:16:16] [PASSED] 4 VFs [09:16:16] [PASSED] 5 VFs [09:16:16] [PASSED] 6 VFs [09:16:16] [PASSED] 7 VFs [09:16:16] [PASSED] 8 VFs [09:16:16] [PASSED] 9 VFs [09:16:16] [PASSED] 10 VFs [09:16:16] [PASSED] 11 VFs [09:16:16] [PASSED] 12 VFs [09:16:16] [PASSED] 13 VFs [09:16:16] [PASSED] 14 VFs [09:16:16] [PASSED] 15 VFs [09:16:16] [PASSED] 16 VFs [09:16:16] [PASSED] 17 VFs [09:16:16] [PASSED] 18 VFs [09:16:16] [PASSED] 19 VFs [09:16:16] [PASSED] 20 VFs [09:16:16] [PASSED] 21 VFs [09:16:16] [PASSED] 22 VFs [09:16:16] [PASSED] 23 VFs [09:16:16] [PASSED] 24 VFs [09:16:16] [PASSED] 25 VFs [09:16:16] [PASSED] 26 VFs [09:16:16] [PASSED] 27 VFs [09:16:16] [PASSED] 28 VFs [09:16:16] [PASSED] 29 VFs [09:16:16] [PASSED] 30 VFs [09:16:16] [PASSED] 31 VFs [09:16:16] [PASSED] 32 VFs [09:16:16] [PASSED] 33 VFs [09:16:16] [PASSED] 34 VFs [09:16:16] [PASSED] 35 VFs [09:16:16] [PASSED] 36 VFs [09:16:16] [PASSED] 37 VFs [09:16:16] [PASSED] 38 VFs [09:16:16] [PASSED] 39 VFs [09:16:16] [PASSED] 40 VFs [09:16:16] [PASSED] 41 VFs [09:16:16] [PASSED] 42 VFs [09:16:16] [PASSED] 43 VFs [09:16:16] [PASSED] 44 VFs [09:16:16] [PASSED] 45 VFs [09:16:16] [PASSED] 46 VFs [09:16:16] [PASSED] 47 VFs [09:16:16] [PASSED] 48 VFs [09:16:16] [PASSED] 49 VFs [09:16:16] [PASSED] 50 VFs [09:16:16] [PASSED] 51 VFs [09:16:16] [PASSED] 52 VFs [09:16:16] [PASSED] 53 VFs [09:16:16] [PASSED] 54 VFs [09:16:16] [PASSED] 55 VFs [09:16:16] [PASSED] 56 VFs [09:16:16] [PASSED] 57 VFs [09:16:16] [PASSED] 58 VFs [09:16:16] [PASSED] 59 VFs [09:16:16] [PASSED] 60 VFs [09:16:16] [PASSED] 61 VFs [09:16:16] [PASSED] 62 VFs [09:16:16] [PASSED] 63 VFs [09:16:16] ================== [PASSED] fair_contexts ================== [09:16:16] ===================== fair_doorbells ====================== [09:16:16] [PASSED] 1 VF [09:16:16] [PASSED] 2 VFs [09:16:16] [PASSED] 3 VFs [09:16:16] [PASSED] 4 VFs [09:16:16] [PASSED] 5 VFs [09:16:16] [PASSED] 6 VFs [09:16:16] [PASSED] 7 VFs [09:16:16] [PASSED] 8 VFs [09:16:16] [PASSED] 9 VFs [09:16:16] [PASSED] 10 VFs [09:16:16] [PASSED] 11 VFs [09:16:16] [PASSED] 12 VFs [09:16:16] [PASSED] 13 VFs [09:16:16] [PASSED] 14 VFs [09:16:16] [PASSED] 15 VFs [09:16:16] [PASSED] 16 VFs [09:16:16] [PASSED] 17 VFs [09:16:16] [PASSED] 18 VFs [09:16:16] [PASSED] 19 VFs [09:16:16] [PASSED] 20 VFs [09:16:16] [PASSED] 21 VFs [09:16:16] [PASSED] 22 VFs [09:16:16] [PASSED] 23 VFs [09:16:16] [PASSED] 24 VFs [09:16:16] [PASSED] 25 VFs [09:16:16] [PASSED] 26 VFs [09:16:16] [PASSED] 27 VFs [09:16:16] [PASSED] 28 VFs [09:16:16] [PASSED] 29 VFs [09:16:16] [PASSED] 30 VFs [09:16:16] [PASSED] 31 VFs [09:16:16] [PASSED] 32 VFs [09:16:16] [PASSED] 33 VFs [09:16:16] [PASSED] 34 VFs [09:16:16] [PASSED] 35 VFs [09:16:16] [PASSED] 36 VFs [09:16:16] [PASSED] 37 VFs [09:16:16] [PASSED] 38 VFs [09:16:16] [PASSED] 39 VFs [09:16:16] [PASSED] 40 VFs [09:16:16] [PASSED] 41 VFs [09:16:16] [PASSED] 42 VFs [09:16:16] [PASSED] 43 VFs [09:16:16] [PASSED] 44 VFs [09:16:16] [PASSED] 45 VFs [09:16:16] [PASSED] 46 VFs [09:16:16] [PASSED] 47 VFs [09:16:16] [PASSED] 48 VFs [09:16:16] [PASSED] 49 VFs [09:16:16] [PASSED] 50 VFs [09:16:16] [PASSED] 51 VFs [09:16:16] [PASSED] 52 VFs [09:16:16] [PASSED] 53 VFs [09:16:16] [PASSED] 54 VFs [09:16:16] [PASSED] 55 VFs [09:16:16] [PASSED] 56 VFs [09:16:16] [PASSED] 57 VFs [09:16:16] [PASSED] 58 VFs [09:16:16] [PASSED] 59 VFs [09:16:16] [PASSED] 60 VFs [09:16:16] [PASSED] 61 VFs [09:16:16] [PASSED] 62 VFs [09:16:16] [PASSED] 63 VFs [09:16:16] ================= [PASSED] fair_doorbells ================== [09:16:16] ======================== fair_ggtt ======================== [09:16:16] [PASSED] 1 VF [09:16:16] [PASSED] 2 VFs [09:16:16] [PASSED] 3 VFs [09:16:16] [PASSED] 4 VFs [09:16:16] [PASSED] 5 VFs [09:16:16] [PASSED] 6 VFs [09:16:16] [PASSED] 7 VFs [09:16:16] [PASSED] 8 VFs [09:16:16] [PASSED] 9 VFs [09:16:16] [PASSED] 10 VFs [09:16:16] [PASSED] 11 VFs [09:16:16] [PASSED] 12 VFs [09:16:16] [PASSED] 13 VFs [09:16:16] [PASSED] 14 VFs [09:16:16] [PASSED] 15 VFs [09:16:16] [PASSED] 16 VFs [09:16:16] [PASSED] 17 VFs [09:16:16] [PASSED] 18 VFs [09:16:16] [PASSED] 19 VFs [09:16:16] [PASSED] 20 VFs [09:16:16] [PASSED] 21 VFs [09:16:16] [PASSED] 22 VFs [09:16:16] [PASSED] 23 VFs [09:16:16] [PASSED] 24 VFs [09:16:16] [PASSED] 25 VFs [09:16:16] [PASSED] 26 VFs [09:16:16] [PASSED] 27 VFs [09:16:16] [PASSED] 28 VFs [09:16:16] [PASSED] 29 VFs [09:16:16] [PASSED] 30 VFs [09:16:16] [PASSED] 31 VFs [09:16:16] [PASSED] 32 VFs [09:16:16] [PASSED] 33 VFs [09:16:16] [PASSED] 34 VFs [09:16:16] [PASSED] 35 VFs [09:16:16] [PASSED] 36 VFs [09:16:16] [PASSED] 37 VFs [09:16:16] [PASSED] 38 VFs [09:16:16] [PASSED] 39 VFs [09:16:16] [PASSED] 40 VFs [09:16:16] [PASSED] 41 VFs [09:16:16] [PASSED] 42 VFs [09:16:16] [PASSED] 43 VFs [09:16:16] [PASSED] 44 VFs [09:16:16] [PASSED] 45 VFs [09:16:16] [PASSED] 46 VFs [09:16:16] [PASSED] 47 VFs [09:16:16] [PASSED] 48 VFs [09:16:16] [PASSED] 49 VFs [09:16:16] [PASSED] 50 VFs [09:16:16] [PASSED] 51 VFs [09:16:16] [PASSED] 52 VFs [09:16:16] [PASSED] 53 VFs [09:16:16] [PASSED] 54 VFs [09:16:16] [PASSED] 55 VFs [09:16:16] [PASSED] 56 VFs [09:16:16] [PASSED] 57 VFs [09:16:16] [PASSED] 58 VFs [09:16:16] [PASSED] 59 VFs [09:16:16] [PASSED] 60 VFs [09:16:16] [PASSED] 61 VFs [09:16:16] [PASSED] 62 VFs [09:16:16] [PASSED] 63 VFs [09:16:16] ==================== [PASSED] fair_ggtt ==================== [09:16:16] ======================== fair_vram ======================== [09:16:16] [PASSED] 1 VF [09:16:16] [PASSED] 2 VFs [09:16:16] [PASSED] 3 VFs [09:16:16] [PASSED] 4 VFs [09:16:16] [PASSED] 5 VFs [09:16:16] [PASSED] 6 VFs [09:16:16] [PASSED] 7 VFs [09:16:16] [PASSED] 8 VFs [09:16:16] [PASSED] 9 VFs [09:16:16] [PASSED] 10 VFs [09:16:16] [PASSED] 11 VFs [09:16:16] [PASSED] 12 VFs [09:16:16] [PASSED] 13 VFs [09:16:16] [PASSED] 14 VFs [09:16:16] [PASSED] 15 VFs [09:16:16] [PASSED] 16 VFs [09:16:16] [PASSED] 17 VFs [09:16:16] [PASSED] 18 VFs [09:16:16] [PASSED] 19 VFs [09:16:16] [PASSED] 20 VFs [09:16:16] [PASSED] 21 VFs [09:16:16] [PASSED] 22 VFs [09:16:16] [PASSED] 23 VFs [09:16:16] [PASSED] 24 VFs [09:16:16] [PASSED] 25 VFs [09:16:16] [PASSED] 26 VFs [09:16:16] [PASSED] 27 VFs [09:16:16] [PASSED] 28 VFs [09:16:16] [PASSED] 29 VFs [09:16:16] [PASSED] 30 VFs [09:16:16] [PASSED] 31 VFs [09:16:16] [PASSED] 32 VFs [09:16:16] [PASSED] 33 VFs [09:16:16] [PASSED] 34 VFs [09:16:16] [PASSED] 35 VFs [09:16:16] [PASSED] 36 VFs [09:16:16] [PASSED] 37 VFs [09:16:16] [PASSED] 38 VFs [09:16:16] [PASSED] 39 VFs [09:16:16] [PASSED] 40 VFs [09:16:16] [PASSED] 41 VFs [09:16:16] [PASSED] 42 VFs [09:16:16] [PASSED] 43 VFs [09:16:16] [PASSED] 44 VFs [09:16:16] [PASSED] 45 VFs [09:16:16] [PASSED] 46 VFs [09:16:16] [PASSED] 47 VFs [09:16:16] [PASSED] 48 VFs [09:16:16] [PASSED] 49 VFs [09:16:16] [PASSED] 50 VFs [09:16:16] [PASSED] 51 VFs [09:16:16] [PASSED] 52 VFs [09:16:16] [PASSED] 53 VFs [09:16:16] [PASSED] 54 VFs [09:16:16] [PASSED] 55 VFs [09:16:16] [PASSED] 56 VFs [09:16:16] [PASSED] 57 VFs [09:16:16] [PASSED] 58 VFs [09:16:16] [PASSED] 59 VFs [09:16:16] [PASSED] 60 VFs [09:16:16] [PASSED] 61 VFs [09:16:16] [PASSED] 62 VFs [09:16:16] [PASSED] 63 VFs [09:16:16] ==================== [PASSED] fair_vram ==================== [09:16:16] ================== [PASSED] pf_gt_config =================== [09:16:16] ===================== lmtt (1 subtest) ===================== [09:16:16] ======================== test_ops ========================= [09:16:16] [PASSED] 2-level [09:16:16] [PASSED] multi-level [09:16:16] ==================== [PASSED] test_ops ===================== [09:16:16] ====================== [PASSED] lmtt ======================= [09:16:16] ================= sriov_packet (1 subtest) ================= [09:16:16] [PASSED] test_descriptor_init [09:16:16] ================== [PASSED] sriov_packet =================== [09:16:16] ================= pf_service (11 subtests) ================= [09:16:16] [PASSED] pf_negotiate_any [09:16:16] [PASSED] pf_negotiate_base_match [09:16:16] [PASSED] pf_negotiate_base_newer [09:16:16] [PASSED] pf_negotiate_base_next [09:16:16] [SKIPPED] pf_negotiate_base_older (no older minor) [09:16:16] [PASSED] pf_negotiate_base_prev [09:16:16] [PASSED] pf_negotiate_latest_match [09:16:16] [PASSED] pf_negotiate_latest_newer [09:16:16] [PASSED] pf_negotiate_latest_next [09:16:16] [SKIPPED] pf_negotiate_latest_older (no older minor) [09:16:16] [SKIPPED] pf_negotiate_latest_prev (no prev major) [09:16:16] =================== [PASSED] pf_service ==================== [09:16:16] ================= xe_guc_g2g (2 subtests) ================== [09:16:16] ============== xe_live_guc_g2g_kunit_default ============== [09:16:16] ========= [SKIPPED] xe_live_guc_g2g_kunit_default ========== [09:16:16] ============== xe_live_guc_g2g_kunit_allmem =============== [09:16:16] ========== [SKIPPED] xe_live_guc_g2g_kunit_allmem ========== [09:16:16] =================== [SKIPPED] xe_guc_g2g =================== [09:16:16] =================== xe_mocs (2 subtests) =================== [09:16:16] ================ xe_live_mocs_kernel_kunit ================ [09:16:16] =========== [SKIPPED] xe_live_mocs_kernel_kunit ============ [09:16:16] ================ xe_live_mocs_reset_kunit ================= [09:16:16] ============ [SKIPPED] xe_live_mocs_reset_kunit ============ [09:16:16] ==================== [SKIPPED] xe_mocs ===================== [09:16:16] ================= xe_migrate (2 subtests) ================== [09:16:16] ================= xe_migrate_sanity_kunit ================= [09:16:16] ============ [SKIPPED] xe_migrate_sanity_kunit ============= [09:16:16] ================== xe_validate_ccs_kunit ================== [09:16:16] ============= [SKIPPED] xe_validate_ccs_kunit ============== [09:16:16] =================== [SKIPPED] xe_migrate =================== [09:16:16] ================== xe_dma_buf (1 subtest) ================== [09:16:16] ==================== xe_dma_buf_kunit ===================== [09:16:16] ================ [SKIPPED] xe_dma_buf_kunit ================ [09:16:16] =================== [SKIPPED] xe_dma_buf =================== [09:16:16] ================= xe_bo_shrink (1 subtest) ================= [09:16:16] =================== xe_bo_shrink_kunit ==================== [09:16:16] =============== [SKIPPED] xe_bo_shrink_kunit =============== [09:16:16] ================== [SKIPPED] xe_bo_shrink ================== [09:16:16] ==================== xe_bo (2 subtests) ==================== [09:16:16] ================== xe_ccs_migrate_kunit =================== [09:16:16] ============== [SKIPPED] xe_ccs_migrate_kunit ============== [09:16:16] ==================== xe_bo_evict_kunit ==================== [09:16:16] =============== [SKIPPED] xe_bo_evict_kunit ================ [09:16:16] ===================== [SKIPPED] xe_bo ====================== [09:16:16] =================== xe_any (9 subtests) ==================== [09:16:16] [PASSED] test_to_xe [09:16:16] [PASSED] test_to_dev [09:16:16] [PASSED] test_to_pdev [09:16:16] [PASSED] test_to_drm [09:16:16] [PASSED] test_if_pdev [09:16:16] [PASSED] test_if_xe [09:16:16] [PASSED] test_if_tile [09:16:16] [PASSED] test_if_gt [09:16:16] [PASSED] test_to_id [09:16:16] ===================== [PASSED] xe_any ====================== [09:16:16] ==================== args (13 subtests) ==================== [09:16:16] [PASSED] count_args_test [09:16:16] [PASSED] call_args_example [09:16:16] [PASSED] call_args_test [09:16:16] [PASSED] drop_first_arg_example [09:16:16] [PASSED] drop_first_arg_test [09:16:16] [PASSED] first_arg_example [09:16:16] [PASSED] first_arg_test [09:16:16] [PASSED] last_arg_example [09:16:16] [PASSED] last_arg_test [09:16:16] [PASSED] pick_arg_example [09:16:16] [PASSED] if_args_example [09:16:16] [PASSED] if_args_test [09:16:16] [PASSED] sep_comma_example [09:16:16] ====================== [PASSED] args ======================= [09:16:16] =================== xe_pci (3 subtests) ==================== [09:16:16] ==================== check_graphics_ip ==================== [09:16:16] [PASSED] 12.00 Xe_LP [09:16:16] [PASSED] 12.10 Xe_LP+ [09:16:16] [PASSED] 12.55 Xe_HPG [09:16:16] [PASSED] 12.60 Xe_HPC [09:16:16] [PASSED] 12.70 Xe_LPG [09:16:16] [PASSED] 12.71 Xe_LPG [09:16:16] [PASSED] 12.74 Xe_LPG+ [09:16:16] [PASSED] 20.01 Xe2_HPG [09:16:16] [PASSED] 20.02 Xe2_HPG [09:16:16] [PASSED] 20.04 Xe2_LPG [09:16:16] [PASSED] 30.00 Xe3_LPG [09:16:16] [PASSED] 30.01 Xe3_LPG [09:16:16] [PASSED] 30.03 Xe3_LPG [09:16:16] [PASSED] 30.04 Xe3_LPG [09:16:16] [PASSED] 30.05 Xe3_LPG [09:16:16] [PASSED] 35.10 Xe3p_LPG [09:16:16] [PASSED] 35.11 Xe3p_XPC [09:16:16] ================ [PASSED] check_graphics_ip ================ [09:16:16] ===================== check_media_ip ====================== [09:16:16] [PASSED] 12.00 Xe_M [09:16:16] [PASSED] 12.55 Xe_HPM [09:16:16] [PASSED] 13.00 Xe_LPM+ [09:16:16] [PASSED] 13.01 Xe2_HPM [09:16:16] [PASSED] 20.00 Xe2_LPM [09:16:16] [PASSED] 30.00 Xe3_LPM [09:16:16] [PASSED] 30.02 Xe3_LPM [09:16:16] [PASSED] 35.00 Xe3p_LPM [09:16:16] [PASSED] 35.03 Xe3p_HPM [09:16:16] ================= [PASSED] check_media_ip ================== [09:16:16] =================== check_platform_desc =================== [09:16:16] [PASSED] 0x9A60 (TIGERLAKE) [09:16:16] [PASSED] 0x9A68 (TIGERLAKE) [09:16:16] [PASSED] 0x9A70 (TIGERLAKE) [09:16:16] [PASSED] 0x9A40 (TIGERLAKE) [09:16:16] [PASSED] 0x9A49 (TIGERLAKE) [09:16:16] [PASSED] 0x9A59 (TIGERLAKE) [09:16:16] [PASSED] 0x9A78 (TIGERLAKE) [09:16:16] [PASSED] 0x9AC0 (TIGERLAKE) [09:16:16] [PASSED] 0x9AC9 (TIGERLAKE) [09:16:16] [PASSED] 0x9AD9 (TIGERLAKE) [09:16:16] [PASSED] 0x9AF8 (TIGERLAKE) [09:16:16] [PASSED] 0x4C80 (ROCKETLAKE) [09:16:16] [PASSED] 0x4C8A (ROCKETLAKE) [09:16:16] [PASSED] 0x4C8B (ROCKETLAKE) [09:16:16] [PASSED] 0x4C8C (ROCKETLAKE) [09:16:16] [PASSED] 0x4C90 (ROCKETLAKE) [09:16:16] [PASSED] 0x4C9A (ROCKETLAKE) [09:16:16] [PASSED] 0x4680 (ALDERLAKE_S) [09:16:16] [PASSED] 0x4682 (ALDERLAKE_S) [09:16:16] [PASSED] 0x4688 (ALDERLAKE_S) [09:16:16] [PASSED] 0x468A (ALDERLAKE_S) [09:16:16] [PASSED] 0x468B (ALDERLAKE_S) [09:16:16] [PASSED] 0x4690 (ALDERLAKE_S) [09:16:16] [PASSED] 0x4692 (ALDERLAKE_S) [09:16:16] [PASSED] 0x4693 (ALDERLAKE_S) [09:16:16] [PASSED] 0x46A0 (ALDERLAKE_P) [09:16:16] [PASSED] 0x46A1 (ALDERLAKE_P) [09:16:16] [PASSED] 0x46A2 (ALDERLAKE_P) [09:16:16] [PASSED] 0x46A3 (ALDERLAKE_P) [09:16:16] [PASSED] 0x46A6 (ALDERLAKE_P) [09:16:16] [PASSED] 0x46A8 (ALDERLAKE_P) [09:16:16] [PASSED] 0x46AA (ALDERLAKE_P) [09:16:16] [PASSED] 0x462A (ALDERLAKE_P) [09:16:16] [PASSED] 0x4626 (ALDERLAKE_P) [09:16:16] [PASSED] 0x4628 (ALDERLAKE_P) [09:16:16] [PASSED] 0x46B0 (ALDERLAKE_P) [09:16:16] [PASSED] 0x46B1 (ALDERLAKE_P) [09:16:16] [PASSED] 0x46B2 (ALDERLAKE_P) [09:16:16] [PASSED] 0x46B3 (ALDERLAKE_P) [09:16:16] [PASSED] 0x46C0 (ALDERLAKE_P) [09:16:16] [PASSED] 0x46C1 (ALDERLAKE_P) [09:16:16] [PASSED] 0x46C2 (ALDERLAKE_P) [09:16:16] [PASSED] 0x46C3 (ALDERLAKE_P) [09:16:16] [PASSED] 0x46D0 (ALDERLAKE_N) [09:16:16] [PASSED] 0x46D1 (ALDERLAKE_N) [09:16:16] [PASSED] 0x46D2 (ALDERLAKE_N) [09:16:16] [PASSED] 0x46D3 (ALDERLAKE_N) [09:16:16] [PASSED] 0x46D4 (ALDERLAKE_N) [09:16:16] [PASSED] 0xA721 (ALDERLAKE_P) [09:16:16] [PASSED] 0xA7A1 (ALDERLAKE_P) [09:16:16] [PASSED] 0xA7A9 (ALDERLAKE_P) [09:16:16] [PASSED] 0xA7AC (ALDERLAKE_P) [09:16:16] [PASSED] 0xA7AD (ALDERLAKE_P) [09:16:16] [PASSED] 0xA720 (ALDERLAKE_P) [09:16:16] [PASSED] 0xA7A0 (ALDERLAKE_P) [09:16:16] [PASSED] 0xA7A8 (ALDERLAKE_P) [09:16:16] [PASSED] 0xA7AA (ALDERLAKE_P) [09:16:16] [PASSED] 0xA7AB (ALDERLAKE_P) [09:16:16] [PASSED] 0xA780 (ALDERLAKE_S) [09:16:16] [PASSED] 0xA781 (ALDERLAKE_S) [09:16:16] [PASSED] 0xA782 (ALDERLAKE_S) [09:16:16] [PASSED] 0xA783 (ALDERLAKE_S) [09:16:16] [PASSED] 0xA788 (ALDERLAKE_S) [09:16:16] [PASSED] 0xA789 (ALDERLAKE_S) [09:16:16] [PASSED] 0xA78A (ALDERLAKE_S) [09:16:16] [PASSED] 0xA78B (ALDERLAKE_S) [09:16:16] [PASSED] 0x4905 (DG1) [09:16:16] [PASSED] 0x4906 (DG1) [09:16:16] [PASSED] 0x4907 (DG1) [09:16:16] [PASSED] 0x4908 (DG1) [09:16:16] [PASSED] 0x4909 (DG1) [09:16:16] [PASSED] 0x56C0 (DG2) [09:16:16] [PASSED] 0x56C2 (DG2) [09:16:16] [PASSED] 0x56C1 (DG2) [09:16:16] [PASSED] 0x7D51 (METEORLAKE) [09:16:16] [PASSED] 0x7DD1 (METEORLAKE) [09:16:16] [PASSED] 0x7D41 (METEORLAKE) [09:16:16] [PASSED] 0x7D67 (METEORLAKE) [09:16:16] [PASSED] 0xB640 (METEORLAKE) [09:16:16] [PASSED] 0x56A0 (DG2) [09:16:16] [PASSED] 0x56A1 (DG2) [09:16:16] [PASSED] 0x56A2 (DG2) [09:16:16] [PASSED] 0x56BE (DG2) [09:16:16] [PASSED] 0x56BF (DG2) [09:16:16] [PASSED] 0x5690 (DG2) [09:16:16] [PASSED] 0x5691 (DG2) [09:16:16] [PASSED] 0x5692 (DG2) [09:16:16] [PASSED] 0x56A5 (DG2) [09:16:16] [PASSED] 0x56A6 (DG2) [09:16:16] [PASSED] 0x56B0 (DG2) [09:16:16] [PASSED] 0x56B1 (DG2) [09:16:16] [PASSED] 0x56BA (DG2) [09:16:16] [PASSED] 0x56BB (DG2) [09:16:16] [PASSED] 0x56BC (DG2) [09:16:16] [PASSED] 0x56BD (DG2) [09:16:16] [PASSED] 0x5693 (DG2) [09:16:16] [PASSED] 0x5694 (DG2) [09:16:16] [PASSED] 0x5695 (DG2) [09:16:16] [PASSED] 0x56A3 (DG2) [09:16:16] [PASSED] 0x56A4 (DG2) [09:16:16] [PASSED] 0x56B2 (DG2) [09:16:16] [PASSED] 0x56B3 (DG2) [09:16:16] [PASSED] 0x5696 (DG2) [09:16:16] [PASSED] 0x5697 (DG2) [09:16:16] [PASSED] 0xB69 (PVC) [09:16:16] [PASSED] 0xB6E (PVC) [09:16:16] [PASSED] 0xBD4 (PVC) [09:16:16] [PASSED] 0xBD5 (PVC) [09:16:16] [PASSED] 0xBD6 (PVC) [09:16:16] [PASSED] 0xBD7 (PVC) [09:16:16] [PASSED] 0xBD8 (PVC) [09:16:16] [PASSED] 0xBD9 (PVC) [09:16:16] [PASSED] 0xBDA (PVC) [09:16:16] [PASSED] 0xBDB (PVC) [09:16:16] [PASSED] 0xBE0 (PVC) [09:16:16] [PASSED] 0xBE1 (PVC) [09:16:16] [PASSED] 0xBE5 (PVC) [09:16:16] [PASSED] 0x7D40 (METEORLAKE) [09:16:16] [PASSED] 0x7D45 (METEORLAKE) [09:16:16] [PASSED] 0x7D55 (METEORLAKE) [09:16:16] [PASSED] 0x7D60 (METEORLAKE) [09:16:16] [PASSED] 0x7DD5 (METEORLAKE) [09:16:16] [PASSED] 0x6420 (LUNARLAKE) [09:16:16] [PASSED] 0x64A0 (LUNARLAKE) [09:16:16] [PASSED] 0x64B0 (LUNARLAKE) [09:16:16] [PASSED] 0xE202 (BATTLEMAGE) [09:16:16] [PASSED] 0xE209 (BATTLEMAGE) [09:16:16] [PASSED] 0xE20B (BATTLEMAGE) [09:16:16] [PASSED] 0xE20C (BATTLEMAGE) [09:16:16] [PASSED] 0xE20D (BATTLEMAGE) [09:16:16] [PASSED] 0xE210 (BATTLEMAGE) [09:16:16] [PASSED] 0xE211 (BATTLEMAGE) [09:16:16] [PASSED] 0xE212 (BATTLEMAGE) [09:16:16] [PASSED] 0xE216 (BATTLEMAGE) [09:16:16] [PASSED] 0xE220 (BATTLEMAGE) [09:16:16] [PASSED] 0xE221 (BATTLEMAGE) [09:16:16] [PASSED] 0xE222 (BATTLEMAGE) [09:16:16] [PASSED] 0xE223 (BATTLEMAGE) [09:16:16] [PASSED] 0xB080 (PANTHERLAKE) [09:16:16] [PASSED] 0xB081 (PANTHERLAKE) [09:16:16] [PASSED] 0xB082 (PANTHERLAKE) [09:16:16] [PASSED] 0xB083 (PANTHERLAKE) [09:16:16] [PASSED] 0xB084 (PANTHERLAKE) [09:16:16] [PASSED] 0xB085 (PANTHERLAKE) [09:16:16] [PASSED] 0xB086 (PANTHERLAKE) [09:16:16] [PASSED] 0xB087 (PANTHERLAKE) [09:16:16] [PASSED] 0xB08F (PANTHERLAKE) [09:16:16] [PASSED] 0xB090 (PANTHERLAKE) [09:16:16] [PASSED] 0xB0A0 (PANTHERLAKE) [09:16:16] [PASSED] 0xB0A1 (PANTHERLAKE) [09:16:16] [PASSED] 0xB0B0 (PANTHERLAKE) [09:16:16] [PASSED] 0xFD80 (PANTHERLAKE) [09:16:16] [PASSED] 0xFD81 (PANTHERLAKE) [09:16:16] [PASSED] 0xD740 (NOVALAKE_S) [09:16:16] [PASSED] 0xD741 (NOVALAKE_S) [09:16:16] [PASSED] 0xD742 (NOVALAKE_S) [09:16:16] [PASSED] 0xD743 (NOVALAKE_S) [09:16:16] [PASSED] 0xD745 (NOVALAKE_S) [09:16:16] [PASSED] 0xD74A (NOVALAKE_S) [09:16:16] [PASSED] 0xD74B (NOVALAKE_S) [09:16:16] [PASSED] 0x674C (CRESCENTISLAND) [09:16:16] [PASSED] 0x674D (CRESCENTISLAND) [09:16:16] [PASSED] 0x674E (CRESCENTISLAND) [09:16:16] [PASSED] 0x674F (CRESCENTISLAND) [09:16:16] [PASSED] 0x6750 (CRESCENTISLAND) [09:16:16] [PASSED] 0x6751 (CRESCENTISLAND) [09:16:16] [PASSED] 0xD750 (NOVALAKE_P) [09:16:16] [PASSED] 0xD751 (NOVALAKE_P) [09:16:16] [PASSED] 0xD752 (NOVALAKE_P) [09:16:16] [PASSED] 0xD753 (NOVALAKE_P) [09:16:16] [PASSED] 0xD754 (NOVALAKE_P) [09:16:16] [PASSED] 0xD755 (NOVALAKE_P) [09:16:16] [PASSED] 0xD756 (NOVALAKE_P) [09:16:16] [PASSED] 0xD757 (NOVALAKE_P) [09:16:16] [PASSED] 0xD75F (NOVALAKE_P) [09:16:16] =============== [PASSED] check_platform_desc =============== [09:16:16] ===================== [PASSED] xe_pci ====================== [09:16:16] ============= xe_rtp_tables_test (5 subtests) ============== [09:16:16] ================== xe_rtp_table_gt_test =================== [09:16:16] [PASSED] gt_was/14011060649 [09:16:16] [PASSED] gt_was/14011059788 [09:16:16] [PASSED] gt_was/14015795083 [09:16:16] [PASSED] gt_was/16021867713 [09:16:16] [PASSED] gt_was/14019449301 [09:16:16] [PASSED] gt_was/16028005424 [09:16:16] [PASSED] gt_was/14026578760 [09:16:16] [PASSED] gt_was/1409420604 [09:16:16] [PASSED] gt_was/1408615072 [09:16:16] [PASSED] gt_was/22010523718 [09:16:16] [PASSED] gt_was/14011006942 [09:16:16] [PASSED] gt_was/14014830051 [09:16:16] [PASSED] gt_was/18018781329 [09:16:16] [PASSED] gt_was/1509235366 [09:16:16] [PASSED] gt_was/18018781329 [09:16:16] [PASSED] gt_was/16016694945 [09:16:16] [PASSED] gt_was/14018575942 [09:16:16] [PASSED] gt_was/22016670082 [09:16:16] [PASSED] gt_was/22016670082 [09:16:16] [PASSED] gt_was/14017421178 [09:16:16] [PASSED] gt_was/16025250150 [09:16:16] [PASSED] gt_was/14021871409 [09:16:16] [PASSED] gt_was/16021865536 [09:16:16] [PASSED] gt_was/14021486841 [09:16:16] [PASSED] gt_was/14025160223 [09:16:16] [PASSED] gt_was/14026144927, 16029437861, 14026127056 [09:16:16] [PASSED] gt_was/14025635424 [09:16:16] [PASSED] gt_was/16028005424 [09:16:16] ============== [PASSED] xe_rtp_table_gt_test =============== [09:16:16] ================== xe_rtp_table_gt_test =================== [09:16:16] [PASSED] gt_tunings/Tuning: Blend Fill Caching Optimization Disable [09:16:16] [PASSED] gt_tunings/Tuning: 32B Access Enable [09:16:16] [PASSED] gt_tunings/Tuning: L3 cache [09:16:16] [PASSED] gt_tunings/Tuning: L3 cache - media [09:16:16] [PASSED] gt_tunings/Tuning: Compression Overfetch [09:16:16] [PASSED] gt_tunings/Tuning: Compression Overfetch - media [09:16:16] [PASSED] gt_tunings/Tuning: Enable compressible partial write overfetch in L3 [09:16:16] [PASSED] gt_tunings/Tuning: Enable compressible partial write overfetch in L3 - media [09:16:16] [PASSED] gt_tunings/Tuning: L2 Overfetch Compressible Only [09:16:16] [PASSED] gt_tunings/Tuning: L2 Overfetch Compressible Only - media [09:16:16] [PASSED] gt_tunings/Tuning: Stateless compression control [09:16:16] [PASSED] gt_tunings/Tuning: Stateless compression control - media [09:16:16] [PASSED] gt_tunings/Tuning: L3 RW flush all Cache [09:16:16] [PASSED] gt_tunings/Tuning: L3 RW flush all cache - media [09:16:16] [PASSED] gt_tunings/Tuning: Set STLB Bank Hash Mode to 4KB [09:16:16] [PASSED] gt_tunings/Tuning: Force All Non-Compressible Memory Reads to be 256B Overfetches [09:16:16] ============== [PASSED] xe_rtp_table_gt_test =============== [09:16:16] ================== xe_rtp_table_oob_test ================== [09:16:16] [PASSED] oob_was/1607983814 [09:16:16] [PASSED] oob_was/16010904313 [09:16:16] [PASSED] oob_was/18022495364 [09:16:16] [PASSED] oob_was/22012773006 [09:16:16] [PASSED] oob_was/14014475959 [09:16:16] [PASSED] oob_was/22011391025 [09:16:16] [PASSED] oob_was/22012727170 [09:16:16] [PASSED] oob_was/22012727685 [09:16:16] [PASSED] oob_was/22016596838 [09:16:16] [PASSED] oob_was/18020744125 [09:16:16] [PASSED] oob_was/1409600907 [09:16:16] [PASSED] oob_was/22014953428 [09:16:16] [PASSED] oob_was/16017236439 [09:16:16] [PASSED] oob_was/14019821291 [09:16:16] [PASSED] oob_was/14015076503 [09:16:16] [PASSED] oob_was/22016122933 [09:16:16] [PASSED] oob_was/14018913170 [09:16:16] [PASSED] oob_was/14018094691 [09:16:16] [PASSED] oob_was/18024947630 [09:16:16] [PASSED] oob_was/16022287689 [09:16:16] [PASSED] oob_was/13011645652 [09:16:16] [PASSED] oob_was/14022293748 [09:16:16] [PASSED] oob_was/22019794406 [09:16:16] [PASSED] oob_was/22019338487 [09:16:16] [PASSED] oob_was/16023588340 [09:16:16] [PASSED] oob_was/14019789679 [09:16:16] [PASSED] oob_was/14022866841 [09:16:16] [PASSED] oob_was/16021333562 [09:16:16] [PASSED] oob_was/14016712196 [09:16:16] [PASSED] oob_was/14015568240 [09:16:16] [PASSED] oob_was/18013179988 [09:16:16] [PASSED] oob_was/1508761755 [09:16:16] [PASSED] oob_was/16023105232 [09:16:16] [PASSED] oob_was/16026508708 [09:16:16] [PASSED] oob_was/14020001231 [09:16:16] [PASSED] oob_was/16023683509 [09:16:16] [PASSED] oob_was/14025515070 [09:16:16] [PASSED] oob_was/15015404425_disable [09:16:16] [PASSED] oob_was/16026007364 [09:16:16] [PASSED] oob_was/14020316580 [09:16:16] [PASSED] oob_was/14025883347 [09:16:16] [PASSED] oob_was/16029380221 [09:16:16] [PASSED] oob_was/22022079272 [09:16:16] [PASSED] oob_was/16029897822 [09:16:16] [PASSED] oob_was/14027054324 [09:16:16] [PASSED] oob_was/14025941587 [09:16:16] [PASSED] oob_was/16030224309 [09:16:16] ============== [PASSED] xe_rtp_table_oob_test ============== [09:16:16] ================ xe_rtp_table_dev_oob_test ================ [09:16:16] [PASSED] device_oob_was/22010954014 [09:16:16] [PASSED] device_oob_was/15015404425 [09:16:16] [PASSED] device_oob_was/22019338487_display [09:16:16] [PASSED] device_oob_was/14022085890 [09:16:16] [PASSED] device_oob_was/14026539277 [09:16:16] [PASSED] device_oob_was/14026633728 [09:16:16] [PASSED] device_oob_was/14026746987 [09:16:16] [PASSED] device_oob_was/14026779378 [09:16:16] ============ [PASSED] xe_rtp_table_dev_oob_test ============ [09:16:16] ========== xe_rtp_table_missing_upper_bound_test ========== [09:16:16] [PASSED] register_whitelist/WaAllowPMDepthAndInvocationCountAccessFromUMD, 1408556865 [09:16:16] [PASSED] register_whitelist/1508744258, 14012131227, 1808121037 [09:16:16] [PASSED] register_whitelist/1806527549 [09:16:16] [PASSED] register_whitelist/allow_read_ctx_timestamp [09:16:16] [PASSED] register_whitelist/allow_read_queue_timestamp [09:16:16] [PASSED] register_whitelist/16014440446 [09:16:16] [PASSED] register_whitelist/16017236439 [09:16:16] [PASSED] register_whitelist/16020183090 [09:16:16] [PASSED] register_whitelist/14024997852 [09:16:16] [PASSED] register_whitelist/14024997852 [09:16:16] ====== [PASSED] xe_rtp_table_missing_upper_bound_test ====== [09:16:16] =============== [PASSED] xe_rtp_tables_test ================ [09:16:16] =================== xe_rtp (3 subtests) ==================== [09:16:16] =================== xe_rtp_rules_tests ==================== [09:16:16] [PASSED] no [09:16:16] [PASSED] yes [09:16:16] [PASSED] no-and-no [09:16:16] [PASSED] no-and-yes [09:16:16] [PASSED] yes-and-no [09:16:16] [PASSED] yes-and-yes [09:16:16] [PASSED] no-or-no [09:16:16] [PASSED] no-or-yes [09:16:16] [PASSED] yes-or-no [09:16:16] [PASSED] yes-or-yes [09:16:16] [PASSED] no-yes-or-yes-no [09:16:16] [PASSED] no-yes-or-yes-yes [09:16:16] [PASSED] yes-yes-or-no-yes [09:16:16] [PASSED] yes-yes-or-yes-yes [09:16:16] [PASSED] no-no-or-yes-or-no [09:16:16] [PASSED] or [09:16:16] [PASSED] or-yes [09:16:16] [PASSED] or-no [09:16:16] [PASSED] yes-or [09:16:16] [PASSED] no-or [09:16:16] [PASSED] no-or-or-yes [09:16:16] [PASSED] yes-or-or-no [09:16:16] [PASSED] no-or-or-no [09:16:16] [PASSED] missing-context-engine-class [09:16:16] [PASSED] missing-context-engine-class-or-yes [09:16:16] [PASSED] missing-context-engine-class-or-or-yes [09:16:16] =============== [PASSED] xe_rtp_rules_tests ================ [09:16:16] =============== xe_rtp_process_to_sr_tests ================ [09:16:16] [PASSED] coalesce-same-reg [09:16:16] [PASSED] coalesce-same-reg-literal-and-func [09:16:16] [PASSED] no-match-no-add [09:16:16] [PASSED] two-regs-two-entries [09:16:16] [PASSED] clr-one-set-other [09:16:16] [PASSED] set-field [09:16:16] [PASSED] conflict-duplicate [09:16:16] [PASSED] conflict-not-disjoint [09:16:16] [PASSED] conflict-not-disjoint-literal-and-func [09:16:16] [PASSED] conflict-reg-type [09:16:16] [PASSED] bad-mcr-reg-forced-to-regular [09:16:16] [PASSED] bad-regular-reg-forced-to-mcr [09:16:16] =========== [PASSED] xe_rtp_process_to_sr_tests ============ [09:16:16] ================== xe_rtp_process_tests =================== [09:16:16] [PASSED] active1 [09:16:16] [PASSED] active2 [09:16:16] [PASSED] active-inactive [09:16:16] [PASSED] inactive-active [09:16:16] [PASSED] inactive-active-inactive [09:16:16] [PASSED] inactive-inactive-inactive [09:16:16] ============== [PASSED] xe_rtp_process_tests =============== [09:16:16] ===================== [PASSED] xe_rtp ====================== [09:16:16] ==================== xe_wa (1 subtest) ===================== [09:16:16] ======================== xe_wa_gt ========================= [09:16:16] [PASSED] TIGERLAKE B0 [09:16:16] [PASSED] DG1 A0 [09:16:16] [PASSED] DG1 B0 [09:16:16] [PASSED] ALDERLAKE_S A0 [09:16:16] [PASSED] ALDERLAKE_S B0 [09:16:16] [PASSED] ALDERLAKE_S C0 [09:16:16] [PASSED] ALDERLAKE_S D0 [09:16:16] [PASSED] ALDERLAKE_P A0 [09:16:16] [PASSED] ALDERLAKE_P B0 [09:16:16] [PASSED] ALDERLAKE_P C0 [09:16:16] [PASSED] ALDERLAKE_S RPLS D0 [09:16:16] [PASSED] ALDERLAKE_P RPLU E0 [09:16:16] [PASSED] DG2 G10 C0 [09:16:16] [PASSED] DG2 G11 B1 [09:16:16] [PASSED] DG2 G12 A1 [09:16:16] [PASSED] METEORLAKE 12.70(Xe_LPG) A0 13.00(Xe_LPM+) A0 [09:16:16] [PASSED] METEORLAKE 12.71(Xe_LPG) A0 13.00(Xe_LPM+) A0 [09:16:16] [PASSED] METEORLAKE 12.74(Xe_LPG+) A0 13.00(Xe_LPM+) A0 [09:16:16] [PASSED] LUNARLAKE 20.04(Xe2_LPG) A0 20.00(Xe2_LPM) A0 [09:16:16] [PASSED] LUNARLAKE 20.04(Xe2_LPG) B0 20.00(Xe2_LPM) A0 [09:16:16] [PASSED] BATTLEMAGE 20.01(Xe2_HPG) A0 13.01(Xe2_HPM) A1 [09:16:16] [PASSED] PANTHERLAKE 30.00(Xe3_LPG) A0 30.00(Xe3_LPM) A0 [09:16:16] ==================== [PASSED] xe_wa_gt ===================== [09:16:16] ====================== [PASSED] xe_wa ====================== [09:16:16] ============================================================ [09:16:16] Testing complete. Ran 821 tests: passed: 793, skipped: 28 [09:16:16] Elapsed time: 36.613s total, 1.853s configuring, 33.994s building, 0.716s running + for kcfg in "${kunitconfigs[@]}" + [[ ! -f /kernel/drivers/gpu/drm/tests/.kunitconfig ]] + /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/tests/.kunitconfig [09:16:16] Configuring KUnit Kernel ... Regenerating .config ... Populating config with: $ make ARCH=um O=.kunit olddefconfig [09:16: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 [09:16:43] Starting KUnit Kernel (1/1)... [09:16:43] ============================================================ Running tests with: $ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt [09:16:43] ============ drm_test_pick_cmdline (2 subtests) ============ [09:16:43] [PASSED] drm_test_pick_cmdline_res_1920_1080_60 [09:16:43] =============== drm_test_pick_cmdline_named =============== [09:16:43] [PASSED] NTSC [09:16:43] [PASSED] NTSC-J [09:16:43] [PASSED] PAL [09:16:43] [PASSED] PAL-M [09:16:43] =========== [PASSED] drm_test_pick_cmdline_named =========== [09:16:43] ============== [PASSED] drm_test_pick_cmdline ============== [09:16:43] == drm_test_atomic_get_connector_for_encoder (1 subtest) === [09:16:43] [PASSED] drm_test_drm_atomic_get_connector_for_encoder [09:16:43] ==== [PASSED] drm_test_atomic_get_connector_for_encoder ==== [09:16:43] =========== drm_validate_clone_mode (2 subtests) =========== [09:16:43] ============== drm_test_check_in_clone_mode =============== [09:16:43] [PASSED] in_clone_mode [09:16:43] [PASSED] not_in_clone_mode [09:16:43] ========== [PASSED] drm_test_check_in_clone_mode =========== [09:16:43] =============== drm_test_check_valid_clones =============== [09:16:43] [PASSED] not_in_clone_mode [09:16:43] [PASSED] valid_clone [09:16:43] [PASSED] invalid_clone [09:16:43] =========== [PASSED] drm_test_check_valid_clones =========== [09:16:43] ============= [PASSED] drm_validate_clone_mode ============= [09:16:43] ============= drm_validate_modeset (1 subtest) ============= [09:16:43] [PASSED] drm_test_check_connector_changed_modeset [09:16:43] ============== [PASSED] drm_validate_modeset =============== [09:16:43] ====== drm_test_bridge_get_current_state (1 subtest) ======= [09:16:43] [PASSED] drm_test_drm_bridge_get_current_state_atomic [09:16:43] ======== [PASSED] drm_test_bridge_get_current_state ======== [09:16:43] ====== drm_test_bridge_helper_reset_crtc (3 subtests) ====== [09:16:43] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic [09:16:43] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic_disabled [09:16:43] [PASSED] drm_test_drm_bridge_helper_hdmi_output_bus_fmts [09:16:43] ======== [PASSED] drm_test_bridge_helper_reset_crtc ======== [09:16:43] ============== drm_bridge_alloc (2 subtests) =============== [09:16:43] [PASSED] drm_test_drm_bridge_alloc_basic [09:16:43] [PASSED] drm_test_drm_bridge_alloc_get_put [09:16:43] ================ [PASSED] drm_bridge_alloc ================= [09:16:43] ============= drm_bridge_bus_fmt (5 subtests) ============== [09:16:43] [PASSED] drm_test_bridge_rgb_yuv_rgb [09:16:43] [PASSED] drm_test_bridge_must_convert_to_yuv444 [09:16:43] [PASSED] drm_test_bridge_hdmi_auto_rgb [09:16:43] [PASSED] drm_test_bridge_auto_first [09:16:43] [PASSED] drm_test_bridge_rgb_yuv_no_path [09:16:43] =============== [PASSED] drm_bridge_bus_fmt ================ [09:16:43] ============= drm_cmdline_parser (40 subtests) ============= [09:16:43] [PASSED] drm_test_cmdline_force_d_only [09:16:43] [PASSED] drm_test_cmdline_force_D_only_dvi [09:16:43] [PASSED] drm_test_cmdline_force_D_only_hdmi [09:16:43] [PASSED] drm_test_cmdline_force_D_only_not_digital [09:16:43] [PASSED] drm_test_cmdline_force_e_only [09:16:43] [PASSED] drm_test_cmdline_res [09:16:43] [PASSED] drm_test_cmdline_res_vesa [09:16:43] [PASSED] drm_test_cmdline_res_vesa_rblank [09:16:43] [PASSED] drm_test_cmdline_res_rblank [09:16:43] [PASSED] drm_test_cmdline_res_bpp [09:16:43] [PASSED] drm_test_cmdline_res_refresh [09:16:43] [PASSED] drm_test_cmdline_res_bpp_refresh [09:16:43] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced [09:16:43] [PASSED] drm_test_cmdline_res_bpp_refresh_margins [09:16:43] [PASSED] drm_test_cmdline_res_bpp_refresh_force_off [09:16:43] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on [09:16:43] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_analog [09:16:43] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_digital [09:16:43] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced_margins_force_on [09:16:43] [PASSED] drm_test_cmdline_res_margins_force_on [09:16:43] [PASSED] drm_test_cmdline_res_vesa_margins [09:16:43] [PASSED] drm_test_cmdline_name [09:16:43] [PASSED] drm_test_cmdline_name_bpp [09:16:43] [PASSED] drm_test_cmdline_name_option [09:16:43] [PASSED] drm_test_cmdline_name_bpp_option [09:16:43] [PASSED] drm_test_cmdline_rotate_0 [09:16:43] [PASSED] drm_test_cmdline_rotate_90 [09:16:43] [PASSED] drm_test_cmdline_rotate_180 [09:16:43] [PASSED] drm_test_cmdline_rotate_270 [09:16:43] [PASSED] drm_test_cmdline_hmirror [09:16:43] [PASSED] drm_test_cmdline_vmirror [09:16:43] [PASSED] drm_test_cmdline_margin_options [09:16:43] [PASSED] drm_test_cmdline_multiple_options [09:16:43] [PASSED] drm_test_cmdline_bpp_extra_and_option [09:16:43] [PASSED] drm_test_cmdline_extra_and_option [09:16:43] [PASSED] drm_test_cmdline_freestanding_options [09:16:43] [PASSED] drm_test_cmdline_freestanding_force_e_and_options [09:16:43] [PASSED] drm_test_cmdline_panel_orientation [09:16:43] ================ drm_test_cmdline_invalid ================= [09:16:43] [PASSED] margin_only [09:16:43] [PASSED] interlace_only [09:16:43] [PASSED] res_missing_x [09:16:43] [PASSED] res_missing_y [09:16:43] [PASSED] res_bad_y [09:16:43] [PASSED] res_missing_y_bpp [09:16:43] [PASSED] res_bad_bpp [09:16:43] [PASSED] res_bad_refresh [09:16:43] [PASSED] res_bpp_refresh_force_on_off [09:16:43] [PASSED] res_invalid_mode [09:16:43] [PASSED] res_bpp_wrong_place_mode [09:16:43] [PASSED] name_bpp_refresh [09:16:43] [PASSED] name_refresh [09:16:43] [PASSED] name_refresh_wrong_mode [09:16:43] [PASSED] name_refresh_invalid_mode [09:16:43] [PASSED] rotate_multiple [09:16:43] [PASSED] rotate_invalid_val [09:16:43] [PASSED] rotate_truncated [09:16:43] [PASSED] invalid_option [09:16:43] [PASSED] invalid_tv_option [09:16:43] [PASSED] truncated_tv_option [09:16:43] ============ [PASSED] drm_test_cmdline_invalid ============= [09:16:43] =============== drm_test_cmdline_tv_options =============== [09:16:43] [PASSED] NTSC [09:16:43] [PASSED] NTSC_443 [09:16:43] [PASSED] NTSC_J [09:16:43] [PASSED] PAL [09:16:43] [PASSED] PAL_M [09:16:43] [PASSED] PAL_N [09:16:43] [PASSED] SECAM [09:16:43] [PASSED] MONO_525 [09:16:43] [PASSED] MONO_625 [09:16:43] =========== [PASSED] drm_test_cmdline_tv_options =========== [09:16:43] =============== [PASSED] drm_cmdline_parser ================ [09:16:43] ========== drmm_connector_hdmi_init (20 subtests) ========== [09:16:43] [PASSED] drm_test_connector_hdmi_init_valid [09:16:43] [PASSED] drm_test_connector_hdmi_init_bpc_8 [09:16:43] [PASSED] drm_test_connector_hdmi_init_bpc_10 [09:16:43] [PASSED] drm_test_connector_hdmi_init_bpc_12 [09:16:43] [PASSED] drm_test_connector_hdmi_init_bpc_invalid [09:16:43] [PASSED] drm_test_connector_hdmi_init_bpc_null [09:16:43] [PASSED] drm_test_connector_hdmi_init_formats_empty [09:16:43] [PASSED] drm_test_connector_hdmi_init_formats_no_rgb [09:16:43] === drm_test_connector_hdmi_init_formats_yuv420_allowed === [09:16:43] [PASSED] supported_formats=0x9 yuv420_allowed=1 [09:16:43] [PASSED] supported_formats=0x9 yuv420_allowed=0 [09:16:43] [PASSED] supported_formats=0x5 yuv420_allowed=1 [09:16:43] [PASSED] supported_formats=0x5 yuv420_allowed=0 [09:16:43] === [PASSED] drm_test_connector_hdmi_init_formats_yuv420_allowed === [09:16:43] [PASSED] drm_test_connector_hdmi_init_null_ddc [09:16:43] [PASSED] drm_test_connector_hdmi_init_null_product [09:16:43] [PASSED] drm_test_connector_hdmi_init_null_vendor [09:16:43] [PASSED] drm_test_connector_hdmi_init_product_length_exact [09:16:43] [PASSED] drm_test_connector_hdmi_init_product_length_too_long [09:16:43] [PASSED] drm_test_connector_hdmi_init_product_valid [09:16:43] [PASSED] drm_test_connector_hdmi_init_vendor_length_exact [09:16:43] [PASSED] drm_test_connector_hdmi_init_vendor_length_too_long [09:16:43] [PASSED] drm_test_connector_hdmi_init_vendor_valid [09:16:43] ========= drm_test_connector_hdmi_init_type_valid ========= [09:16:43] [PASSED] HDMI-A [09:16:43] [PASSED] HDMI-B [09:16:43] ===== [PASSED] drm_test_connector_hdmi_init_type_valid ===== [09:16:43] ======== drm_test_connector_hdmi_init_type_invalid ======== [09:16:43] [PASSED] Unknown [09:16:43] [PASSED] VGA [09:16:43] [PASSED] DVI-I [09:16:43] [PASSED] DVI-D [09:16:43] [PASSED] DVI-A [09:16:43] [PASSED] Composite [09:16:43] [PASSED] SVIDEO [09:16:43] [PASSED] LVDS [09:16:43] [PASSED] Component [09:16:43] [PASSED] DIN [09:16:43] [PASSED] DP [09:16:43] [PASSED] TV [09:16:43] [PASSED] eDP [09:16:43] [PASSED] Virtual [09:16:43] [PASSED] DSI [09:16:43] [PASSED] DPI [09:16:43] [PASSED] Writeback [09:16:43] [PASSED] SPI [09:16:43] [PASSED] USB [09:16:43] ==== [PASSED] drm_test_connector_hdmi_init_type_invalid ==== [09:16:43] ============ [PASSED] drmm_connector_hdmi_init ============= [09:16:43] ============= drmm_connector_init (3 subtests) ============= [09:16:43] [PASSED] drm_test_drmm_connector_init [09:16:43] [PASSED] drm_test_drmm_connector_init_null_ddc [09:16:43] ========= drm_test_drmm_connector_init_type_valid ========= [09:16:43] [PASSED] Unknown [09:16:43] [PASSED] VGA [09:16:43] [PASSED] DVI-I [09:16:43] [PASSED] DVI-D [09:16:43] [PASSED] DVI-A [09:16:43] [PASSED] Composite [09:16:43] [PASSED] SVIDEO [09:16:43] [PASSED] LVDS [09:16:43] [PASSED] Component [09:16:43] [PASSED] DIN [09:16:43] [PASSED] DP [09:16:43] [PASSED] HDMI-A [09:16:43] [PASSED] HDMI-B [09:16:43] [PASSED] TV [09:16:43] [PASSED] eDP [09:16:43] [PASSED] Virtual [09:16:43] [PASSED] DSI [09:16:43] [PASSED] DPI [09:16:43] [PASSED] Writeback [09:16:43] [PASSED] SPI [09:16:43] [PASSED] USB [09:16:43] ===== [PASSED] drm_test_drmm_connector_init_type_valid ===== [09:16:43] =============== [PASSED] drmm_connector_init =============== [09:16:43] ========= drm_connector_dynamic_init (6 subtests) ========== [09:16:43] [PASSED] drm_test_drm_connector_dynamic_init [09:16:43] [PASSED] drm_test_drm_connector_dynamic_init_null_ddc [09:16:43] [PASSED] drm_test_drm_connector_dynamic_init_not_added [09:16:43] [PASSED] drm_test_drm_connector_dynamic_init_properties [09:16:43] ===== drm_test_drm_connector_dynamic_init_type_valid ====== [09:16:43] [PASSED] Unknown [09:16:43] [PASSED] VGA [09:16:43] [PASSED] DVI-I [09:16:43] [PASSED] DVI-D [09:16:43] [PASSED] DVI-A [09:16:43] [PASSED] Composite [09:16:43] [PASSED] SVIDEO [09:16:43] [PASSED] LVDS [09:16:43] [PASSED] Component [09:16:43] [PASSED] DIN [09:16:43] [PASSED] DP [09:16:43] [PASSED] HDMI-A [09:16:43] [PASSED] HDMI-B [09:16:43] [PASSED] TV [09:16:43] [PASSED] eDP [09:16:43] [PASSED] Virtual [09:16:43] [PASSED] DSI [09:16:43] [PASSED] DPI [09:16:43] [PASSED] Writeback [09:16:43] [PASSED] SPI [09:16:43] [PASSED] USB [09:16:43] = [PASSED] drm_test_drm_connector_dynamic_init_type_valid == [09:16:43] ======== drm_test_drm_connector_dynamic_init_name ========= [09:16:43] [PASSED] Unknown [09:16:43] [PASSED] VGA [09:16:43] [PASSED] DVI-I [09:16:43] [PASSED] DVI-D [09:16:43] [PASSED] DVI-A [09:16:43] [PASSED] Composite [09:16:43] [PASSED] SVIDEO [09:16:43] [PASSED] LVDS [09:16:43] [PASSED] Component [09:16:43] [PASSED] DIN [09:16:43] [PASSED] DP [09:16:43] [PASSED] HDMI-A [09:16:43] [PASSED] HDMI-B [09:16:43] [PASSED] TV [09:16:43] [PASSED] eDP [09:16:43] [PASSED] Virtual [09:16:43] [PASSED] DSI [09:16:43] [PASSED] DPI [09:16:43] [PASSED] Writeback [09:16:43] [PASSED] SPI [09:16:43] [PASSED] USB [09:16:43] ==== [PASSED] drm_test_drm_connector_dynamic_init_name ===== [09:16:43] =========== [PASSED] drm_connector_dynamic_init ============ [09:16:43] ==== drm_connector_dynamic_register_early (4 subtests) ===== [09:16:43] [PASSED] drm_test_drm_connector_dynamic_register_early_on_list [09:16:43] [PASSED] drm_test_drm_connector_dynamic_register_early_defer [09:16:43] [PASSED] drm_test_drm_connector_dynamic_register_early_no_init [09:16:43] [PASSED] drm_test_drm_connector_dynamic_register_early_no_mode_object [09:16:43] ====== [PASSED] drm_connector_dynamic_register_early ======= [09:16:43] ======= drm_connector_dynamic_register (7 subtests) ======== [09:16:43] [PASSED] drm_test_drm_connector_dynamic_register_on_list [09:16:43] [PASSED] drm_test_drm_connector_dynamic_register_no_defer [09:16:43] [PASSED] drm_test_drm_connector_dynamic_register_no_init [09:16:43] [PASSED] drm_test_drm_connector_dynamic_register_mode_object [09:16:43] [PASSED] drm_test_drm_connector_dynamic_register_sysfs [09:16:43] [PASSED] drm_test_drm_connector_dynamic_register_sysfs_name [09:16:43] [PASSED] drm_test_drm_connector_dynamic_register_debugfs [09:16:43] ========= [PASSED] drm_connector_dynamic_register ========== [09:16:43] = drm_connector_attach_broadcast_rgb_property (2 subtests) = [09:16:43] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property [09:16:43] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property_hdmi_connector [09:16:43] === [PASSED] drm_connector_attach_broadcast_rgb_property === [09:16:43] ========== drm_get_tv_mode_from_name (2 subtests) ========== [09:16:43] ========== drm_test_get_tv_mode_from_name_valid =========== [09:16:43] [PASSED] NTSC [09:16:43] [PASSED] NTSC-443 [09:16:43] [PASSED] NTSC-J [09:16:43] [PASSED] PAL [09:16:43] [PASSED] PAL-M [09:16:43] [PASSED] PAL-N [09:16:43] [PASSED] SECAM [09:16:43] [PASSED] Mono [09:16:43] ====== [PASSED] drm_test_get_tv_mode_from_name_valid ======= [09:16:43] [PASSED] drm_test_get_tv_mode_from_name_truncated [09:16:43] ============ [PASSED] drm_get_tv_mode_from_name ============ [09:16:43] = drm_test_connector_hdmi_compute_mode_clock (12 subtests) = [09:16:43] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb [09:16:43] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc [09:16:43] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc_vic_1 [09:16:43] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc [09:16:43] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc_vic_1 [09:16:43] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_double [09:16:43] = drm_test_connector_hdmi_compute_mode_clock_yuv420_valid = [09:16:43] [PASSED] VIC 96 [09:16:43] [PASSED] VIC 97 [09:16:43] [PASSED] VIC 101 [09:16:43] [PASSED] VIC 102 [09:16:43] [PASSED] VIC 106 [09:16:43] [PASSED] VIC 107 [09:16:43] === [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_valid === [09:16:43] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_10_bpc [09:16:43] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_12_bpc [09:16:43] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_8_bpc [09:16:43] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_10_bpc [09:16:43] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_12_bpc [09:16:43] === [PASSED] drm_test_connector_hdmi_compute_mode_clock ==== [09:16:43] == drm_hdmi_connector_get_broadcast_rgb_name (2 subtests) == [09:16:43] === drm_test_drm_hdmi_connector_get_broadcast_rgb_name ==== [09:16:43] [PASSED] Automatic [09:16:43] [PASSED] Full [09:16:43] [PASSED] Limited 16:235 [09:16:43] === [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name === [09:16:43] [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name_invalid [09:16:43] ==== [PASSED] drm_hdmi_connector_get_broadcast_rgb_name ==== [09:16:43] == drm_hdmi_connector_get_output_format_name (2 subtests) == [09:16:43] === drm_test_drm_hdmi_connector_get_output_format_name ==== [09:16:43] [PASSED] RGB [09:16:43] [PASSED] YUV 4:2:0 [09:16:43] [PASSED] YUV 4:2:2 [09:16:43] [PASSED] YUV 4:4:4 [09:16:43] === [PASSED] drm_test_drm_hdmi_connector_get_output_format_name === [09:16:43] [PASSED] drm_test_drm_hdmi_connector_get_output_format_name_invalid [09:16:43] ==== [PASSED] drm_hdmi_connector_get_output_format_name ==== [09:16:43] ============= drm_damage_helper (21 subtests) ============== [09:16:43] [PASSED] drm_test_damage_iter_no_damage [09:16:43] [PASSED] drm_test_damage_iter_no_damage_fractional_src [09:16:43] [PASSED] drm_test_damage_iter_no_damage_src_moved [09:16:43] [PASSED] drm_test_damage_iter_no_damage_fractional_src_moved [09:16:43] [PASSED] drm_test_damage_iter_no_damage_not_visible [09:16:43] [PASSED] drm_test_damage_iter_no_damage_no_crtc [09:16:43] [PASSED] drm_test_damage_iter_no_damage_no_fb [09:16:43] [PASSED] drm_test_damage_iter_simple_damage [09:16:43] [PASSED] drm_test_damage_iter_single_damage [09:16:43] [PASSED] drm_test_damage_iter_single_damage_intersect_src [09:16:43] [PASSED] drm_test_damage_iter_single_damage_outside_src [09:16:43] [PASSED] drm_test_damage_iter_single_damage_fractional_src [09:16:43] [PASSED] drm_test_damage_iter_single_damage_intersect_fractional_src [09:16:43] [PASSED] drm_test_damage_iter_single_damage_outside_fractional_src [09:16:43] [PASSED] drm_test_damage_iter_single_damage_src_moved [09:16:43] [PASSED] drm_test_damage_iter_single_damage_fractional_src_moved [09:16:43] [PASSED] drm_test_damage_iter_damage [09:16:43] [PASSED] drm_test_damage_iter_damage_one_intersect [09:16:43] [PASSED] drm_test_damage_iter_damage_one_outside [09:16:43] [PASSED] drm_test_damage_iter_damage_src_moved [09:16:43] [PASSED] drm_test_damage_iter_damage_not_visible [09:16:43] ================ [PASSED] drm_damage_helper ================ [09:16:43] ============== drm_dp_mst_helper (3 subtests) ============== [09:16:43] ============== drm_test_dp_mst_calc_pbn_mode ============== [09:16:43] [PASSED] Clock 154000 BPP 30 DSC disabled [09:16:43] [PASSED] Clock 234000 BPP 30 DSC disabled [09:16:43] [PASSED] Clock 297000 BPP 24 DSC disabled [09:16:43] [PASSED] Clock 332880 BPP 24 DSC enabled [09:16:43] [PASSED] Clock 324540 BPP 24 DSC enabled [09:16:43] ========== [PASSED] drm_test_dp_mst_calc_pbn_mode ========== [09:16:43] ============== drm_test_dp_mst_calc_pbn_div =============== [09:16:43] [PASSED] Link rate 2000000 lane count 4 [09:16:43] [PASSED] Link rate 2000000 lane count 2 [09:16:43] [PASSED] Link rate 2000000 lane count 1 [09:16:43] [PASSED] Link rate 1350000 lane count 4 [09:16:43] [PASSED] Link rate 1350000 lane count 2 [09:16:43] [PASSED] Link rate 1350000 lane count 1 [09:16:43] [PASSED] Link rate 1000000 lane count 4 [09:16:43] [PASSED] Link rate 1000000 lane count 2 [09:16:43] [PASSED] Link rate 1000000 lane count 1 [09:16:43] [PASSED] Link rate 810000 lane count 4 [09:16:43] [PASSED] Link rate 810000 lane count 2 [09:16:43] [PASSED] Link rate 810000 lane count 1 [09:16:43] [PASSED] Link rate 540000 lane count 4 [09:16:43] [PASSED] Link rate 540000 lane count 2 [09:16:43] [PASSED] Link rate 540000 lane count 1 [09:16:43] [PASSED] Link rate 270000 lane count 4 [09:16:43] [PASSED] Link rate 270000 lane count 2 [09:16:43] [PASSED] Link rate 270000 lane count 1 [09:16:43] [PASSED] Link rate 162000 lane count 4 [09:16:43] [PASSED] Link rate 162000 lane count 2 [09:16:43] [PASSED] Link rate 162000 lane count 1 [09:16:43] ========== [PASSED] drm_test_dp_mst_calc_pbn_div =========== [09:16:43] ========= drm_test_dp_mst_sideband_msg_req_decode ========= [09:16:43] [PASSED] DP_ENUM_PATH_RESOURCES with port number [09:16:43] [PASSED] DP_POWER_UP_PHY with port number [09:16:43] [PASSED] DP_POWER_DOWN_PHY with port number [09:16:43] [PASSED] DP_ALLOCATE_PAYLOAD with SDP stream sinks [09:16:43] [PASSED] DP_ALLOCATE_PAYLOAD with port number [09:16:43] [PASSED] DP_ALLOCATE_PAYLOAD with VCPI [09:16:43] [PASSED] DP_ALLOCATE_PAYLOAD with PBN [09:16:43] [PASSED] DP_QUERY_PAYLOAD with port number [09:16:43] [PASSED] DP_QUERY_PAYLOAD with VCPI [09:16:43] [PASSED] DP_REMOTE_DPCD_READ with port number [09:16:43] [PASSED] DP_REMOTE_DPCD_READ with DPCD address [09:16:43] [PASSED] DP_REMOTE_DPCD_READ with max number of bytes [09:16:43] [PASSED] DP_REMOTE_DPCD_WRITE with port number [09:16:43] [PASSED] DP_REMOTE_DPCD_WRITE with DPCD address [09:16:43] [PASSED] DP_REMOTE_DPCD_WRITE with data array [09:16:43] [PASSED] DP_REMOTE_I2C_READ with port number [09:16:43] [PASSED] DP_REMOTE_I2C_READ with I2C device ID [09:16:43] [PASSED] DP_REMOTE_I2C_READ with transactions array [09:16:43] [PASSED] DP_REMOTE_I2C_WRITE with port number [09:16:43] [PASSED] DP_REMOTE_I2C_WRITE with I2C device ID [09:16:43] [PASSED] DP_REMOTE_I2C_WRITE with data array [09:16:43] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream ID [09:16:43] [PASSED] DP_QUERY_STREAM_ENC_STATUS with client ID [09:16:43] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream event [09:16:43] [PASSED] DP_QUERY_STREAM_ENC_STATUS with valid stream event [09:16:43] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream behavior [09:16:43] [PASSED] DP_QUERY_STREAM_ENC_STATUS with a valid stream behavior [09:16:43] ===== [PASSED] drm_test_dp_mst_sideband_msg_req_decode ===== [09:16:43] ================ [PASSED] drm_dp_mst_helper ================ [09:16:43] ================== drm_exec (7 subtests) =================== [09:16:43] [PASSED] sanitycheck [09:16:43] [PASSED] test_lock [09:16:43] [PASSED] test_lock_unlock [09:16:43] [PASSED] test_duplicates [09:16:43] [PASSED] test_prepare [09:16:43] [PASSED] test_prepare_array [09:16:43] [PASSED] test_multiple_loops [09:16:43] ==================== [PASSED] drm_exec ===================== [09:16:43] =========== drm_format_helper_test (17 subtests) =========== [09:16:43] ============== drm_test_fb_xrgb8888_to_gray8 ============== [09:16:43] [PASSED] single_pixel_source_buffer [09:16:43] [PASSED] single_pixel_clip_rectangle [09:16:43] [PASSED] well_known_colors [09:16:43] [PASSED] destination_pitch [09:16:43] ========== [PASSED] drm_test_fb_xrgb8888_to_gray8 ========== [09:16:43] ============= drm_test_fb_xrgb8888_to_rgb332 ============== [09:16:43] [PASSED] single_pixel_source_buffer [09:16:43] [PASSED] single_pixel_clip_rectangle [09:16:43] [PASSED] well_known_colors [09:16:43] [PASSED] destination_pitch [09:16:43] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb332 ========== [09:16:43] ============= drm_test_fb_xrgb8888_to_rgb565 ============== [09:16:43] [PASSED] single_pixel_source_buffer [09:16:43] [PASSED] single_pixel_clip_rectangle [09:16:43] [PASSED] well_known_colors [09:16:43] [PASSED] destination_pitch [09:16:43] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb565 ========== [09:16:43] ============ drm_test_fb_xrgb8888_to_xrgb1555 ============= [09:16:43] [PASSED] single_pixel_source_buffer [09:16:43] [PASSED] single_pixel_clip_rectangle [09:16:43] [PASSED] well_known_colors [09:16:43] [PASSED] destination_pitch [09:16:43] ======== [PASSED] drm_test_fb_xrgb8888_to_xrgb1555 ========= [09:16:43] ============ drm_test_fb_xrgb8888_to_argb1555 ============= [09:16:43] [PASSED] single_pixel_source_buffer [09:16:43] [PASSED] single_pixel_clip_rectangle [09:16:43] [PASSED] well_known_colors [09:16:43] [PASSED] destination_pitch [09:16:43] ======== [PASSED] drm_test_fb_xrgb8888_to_argb1555 ========= [09:16:43] ============ drm_test_fb_xrgb8888_to_rgba5551 ============= [09:16:43] [PASSED] single_pixel_source_buffer [09:16:43] [PASSED] single_pixel_clip_rectangle [09:16:43] [PASSED] well_known_colors [09:16:43] [PASSED] destination_pitch [09:16:43] ======== [PASSED] drm_test_fb_xrgb8888_to_rgba5551 ========= [09:16:43] ============= drm_test_fb_xrgb8888_to_rgb888 ============== [09:16:43] [PASSED] single_pixel_source_buffer [09:16:43] [PASSED] single_pixel_clip_rectangle [09:16:43] [PASSED] well_known_colors [09:16:43] [PASSED] destination_pitch [09:16:43] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb888 ========== [09:16:43] ============= drm_test_fb_xrgb8888_to_bgr888 ============== [09:16:43] [PASSED] single_pixel_source_buffer [09:16:43] [PASSED] single_pixel_clip_rectangle [09:16:43] [PASSED] well_known_colors [09:16:43] [PASSED] destination_pitch [09:16:43] ========= [PASSED] drm_test_fb_xrgb8888_to_bgr888 ========== [09:16:43] ============ drm_test_fb_xrgb8888_to_argb8888 ============= [09:16:43] [PASSED] single_pixel_source_buffer [09:16:43] [PASSED] single_pixel_clip_rectangle [09:16:43] [PASSED] well_known_colors [09:16:43] [PASSED] destination_pitch [09:16:43] ======== [PASSED] drm_test_fb_xrgb8888_to_argb8888 ========= [09:16:43] =========== drm_test_fb_xrgb8888_to_xrgb2101010 =========== [09:16:43] [PASSED] single_pixel_source_buffer [09:16:43] [PASSED] single_pixel_clip_rectangle [09:16:43] [PASSED] well_known_colors [09:16:43] [PASSED] destination_pitch [09:16:43] ======= [PASSED] drm_test_fb_xrgb8888_to_xrgb2101010 ======= [09:16:43] =========== drm_test_fb_xrgb8888_to_argb2101010 =========== [09:16:43] [PASSED] single_pixel_source_buffer [09:16:43] [PASSED] single_pixel_clip_rectangle [09:16:43] [PASSED] well_known_colors [09:16:43] [PASSED] destination_pitch [09:16:43] ======= [PASSED] drm_test_fb_xrgb8888_to_argb2101010 ======= [09:16:43] ============== drm_test_fb_xrgb8888_to_mono =============== [09:16:43] [PASSED] single_pixel_source_buffer [09:16:43] [PASSED] single_pixel_clip_rectangle [09:16:43] [PASSED] well_known_colors [09:16:43] [PASSED] destination_pitch [09:16:43] ========== [PASSED] drm_test_fb_xrgb8888_to_mono =========== [09:16:43] ==================== drm_test_fb_swab ===================== [09:16:43] [PASSED] single_pixel_source_buffer [09:16:43] [PASSED] single_pixel_clip_rectangle [09:16:43] [PASSED] well_known_colors [09:16:43] [PASSED] destination_pitch [09:16:43] ================ [PASSED] drm_test_fb_swab ================= [09:16:43] ============ drm_test_fb_xrgb8888_to_xbgr8888 ============= [09:16:43] [PASSED] single_pixel_source_buffer [09:16:43] [PASSED] single_pixel_clip_rectangle [09:16:43] [PASSED] well_known_colors [09:16:43] [PASSED] destination_pitch [09:16:43] ======== [PASSED] drm_test_fb_xrgb8888_to_xbgr8888 ========= [09:16:43] ============ drm_test_fb_xrgb8888_to_abgr8888 ============= [09:16:43] [PASSED] single_pixel_source_buffer [09:16:43] [PASSED] single_pixel_clip_rectangle [09:16:43] [PASSED] well_known_colors [09:16:43] [PASSED] destination_pitch [09:16:43] ======== [PASSED] drm_test_fb_xrgb8888_to_abgr8888 ========= [09:16:43] ================= drm_test_fb_clip_offset ================= [09:16:43] [PASSED] pass through [09:16:43] [PASSED] horizontal offset [09:16:43] [PASSED] vertical offset [09:16:43] [PASSED] horizontal and vertical offset [09:16:43] [PASSED] horizontal offset (custom pitch) [09:16:43] [PASSED] vertical offset (custom pitch) [09:16:43] [PASSED] horizontal and vertical offset (custom pitch) [09:16:43] ============= [PASSED] drm_test_fb_clip_offset ============= [09:16:43] =================== drm_test_fb_memcpy ==================== [09:16:43] [PASSED] single_pixel_source_buffer: XR24 little-endian (0x34325258) [09:16:43] [PASSED] single_pixel_source_buffer: XRA8 little-endian (0x38415258) [09:16:43] [PASSED] single_pixel_source_buffer: YU24 little-endian (0x34325559) [09:16:43] [PASSED] single_pixel_clip_rectangle: XB24 little-endian (0x34324258) [09:16:43] [PASSED] single_pixel_clip_rectangle: XRA8 little-endian (0x38415258) [09:16:43] [PASSED] single_pixel_clip_rectangle: YU24 little-endian (0x34325559) [09:16:43] [PASSED] well_known_colors: XB24 little-endian (0x34324258) [09:16:43] [PASSED] well_known_colors: XRA8 little-endian (0x38415258) [09:16:43] [PASSED] well_known_colors: YU24 little-endian (0x34325559) [09:16:43] [PASSED] destination_pitch: XB24 little-endian (0x34324258) [09:16:43] [PASSED] destination_pitch: XRA8 little-endian (0x38415258) [09:16:43] [PASSED] destination_pitch: YU24 little-endian (0x34325559) [09:16:43] =============== [PASSED] drm_test_fb_memcpy ================ [09:16:43] ============= [PASSED] drm_format_helper_test ============== [09:16:43] ================= drm_format (18 subtests) ================= [09:16:43] [PASSED] drm_test_format_block_width_invalid [09:16:43] [PASSED] drm_test_format_block_width_one_plane [09:16:43] [PASSED] drm_test_format_block_width_two_plane [09:16:43] [PASSED] drm_test_format_block_width_three_plane [09:16:43] [PASSED] drm_test_format_block_width_tiled [09:16:43] [PASSED] drm_test_format_block_height_invalid [09:16:43] [PASSED] drm_test_format_block_height_one_plane [09:16:43] [PASSED] drm_test_format_block_height_two_plane [09:16:43] [PASSED] drm_test_format_block_height_three_plane [09:16:43] [PASSED] drm_test_format_block_height_tiled [09:16:43] [PASSED] drm_test_format_min_pitch_invalid [09:16:43] [PASSED] drm_test_format_min_pitch_one_plane_8bpp [09:16:43] [PASSED] drm_test_format_min_pitch_one_plane_16bpp [09:16:43] [PASSED] drm_test_format_min_pitch_one_plane_24bpp [09:16:43] [PASSED] drm_test_format_min_pitch_one_plane_32bpp [09:16:43] [PASSED] drm_test_format_min_pitch_two_plane [09:16:43] [PASSED] drm_test_format_min_pitch_three_plane_8bpp [09:16:43] [PASSED] drm_test_format_min_pitch_tiled [09:16:43] =================== [PASSED] drm_format ==================== [09:16:43] ============== drm_framebuffer (10 subtests) =============== [09:16:43] ========== drm_test_framebuffer_check_src_coords ========== [09:16:43] [PASSED] Success: source fits into fb [09:16:43] [PASSED] Fail: overflowing fb with x-axis coordinate [09:16:43] [PASSED] Fail: overflowing fb with y-axis coordinate [09:16:43] [PASSED] Fail: overflowing fb with source width [09:16:43] [PASSED] Fail: overflowing fb with source height [09:16:43] ====== [PASSED] drm_test_framebuffer_check_src_coords ====== [09:16:43] [PASSED] drm_test_framebuffer_cleanup [09:16:43] =============== drm_test_framebuffer_create =============== [09:16:43] [PASSED] ABGR8888 normal sizes [09:16:43] [PASSED] ABGR8888 max sizes [09:16:43] [PASSED] ABGR8888 pitch greater than min required [09:16:43] [PASSED] ABGR8888 pitch less than min required [09:16:43] [PASSED] ABGR8888 Invalid width [09:16:43] [PASSED] ABGR8888 Invalid buffer handle [09:16:43] [PASSED] No pixel format [09:16:43] [PASSED] ABGR8888 Width 0 [09:16:43] [PASSED] ABGR8888 Height 0 [09:16:43] [PASSED] ABGR8888 Out of bound height * pitch combination [09:16:43] [PASSED] ABGR8888 Large buffer offset [09:16:43] [PASSED] ABGR8888 Buffer offset for inexistent plane [09:16:43] [PASSED] ABGR8888 Invalid flag [09:16:43] [PASSED] ABGR8888 Set DRM_MODE_FB_MODIFIERS without modifiers [09:16:43] [PASSED] ABGR8888 Valid buffer modifier [09:16:43] [PASSED] ABGR8888 Invalid buffer modifier(DRM_FORMAT_MOD_SAMSUNG_64_32_TILE) [09:16:43] [PASSED] ABGR8888 Extra pitches without DRM_MODE_FB_MODIFIERS [09:16:43] [PASSED] ABGR8888 Extra pitches with DRM_MODE_FB_MODIFIERS [09:16:43] [PASSED] NV12 Normal sizes [09:16:43] [PASSED] NV12 Max sizes [09:16:43] [PASSED] NV12 Invalid pitch [09:16:43] [PASSED] NV12 Invalid modifier/missing DRM_MODE_FB_MODIFIERS flag [09:16:43] [PASSED] NV12 different modifier per-plane [09:16:43] [PASSED] NV12 with DRM_FORMAT_MOD_SAMSUNG_64_32_TILE [09:16:43] [PASSED] NV12 Valid modifiers without DRM_MODE_FB_MODIFIERS [09:16:43] [PASSED] NV12 Modifier for inexistent plane [09:16:43] [PASSED] NV12 Handle for inexistent plane [09:16:43] [PASSED] NV12 Handle for inexistent plane without DRM_MODE_FB_MODIFIERS [09:16:43] [PASSED] YVU420 DRM_MODE_FB_MODIFIERS set without modifier [09:16:43] [PASSED] YVU420 Normal sizes [09:16:43] [PASSED] YVU420 Max sizes [09:16:43] [PASSED] YVU420 Invalid pitch [09:16:43] [PASSED] YVU420 Different pitches [09:16:43] [PASSED] YVU420 Different buffer offsets/pitches [09:16:43] [PASSED] YVU420 Modifier set just for plane 0, without DRM_MODE_FB_MODIFIERS [09:16:43] [PASSED] YVU420 Modifier set just for planes 0, 1, without DRM_MODE_FB_MODIFIERS [09:16:43] [PASSED] YVU420 Modifier set just for plane 0, 1, with DRM_MODE_FB_MODIFIERS [09:16:43] [PASSED] YVU420 Valid modifier [09:16:43] [PASSED] YVU420 Different modifiers per plane [09:16:43] [PASSED] YVU420 Modifier for inexistent plane [09:16:43] [PASSED] YUV420_10BIT Invalid modifier(DRM_FORMAT_MOD_LINEAR) [09:16:43] [PASSED] X0L2 Normal sizes [09:16:43] [PASSED] X0L2 Max sizes [09:16:43] [PASSED] X0L2 Invalid pitch [09:16:43] [PASSED] X0L2 Pitch greater than minimum required [09:16:43] [PASSED] X0L2 Handle for inexistent plane [09:16:43] [PASSED] X0L2 Offset for inexistent plane, without DRM_MODE_FB_MODIFIERS set [09:16:43] [PASSED] X0L2 Modifier without DRM_MODE_FB_MODIFIERS set [09:16:43] [PASSED] X0L2 Valid modifier [09:16:43] [PASSED] X0L2 Modifier for inexistent plane [09:16:43] =========== [PASSED] drm_test_framebuffer_create =========== [09:16:43] [PASSED] drm_test_framebuffer_free [09:16:43] [PASSED] drm_test_framebuffer_init [09:16:43] [PASSED] drm_test_framebuffer_init_bad_format [09:16:43] [PASSED] drm_test_framebuffer_init_dev_mismatch [09:16:43] [PASSED] drm_test_framebuffer_lookup [09:16:43] [PASSED] drm_test_framebuffer_lookup_inexistent [09:16:43] [PASSED] drm_test_framebuffer_modifiers_not_supported [09:16:43] ================= [PASSED] drm_framebuffer ================= [09:16:43] ================ drm_gem_shmem (8 subtests) ================ [09:16:43] [PASSED] drm_gem_shmem_test_obj_create [09:16:43] [PASSED] drm_gem_shmem_test_obj_create_private [09:16:43] [PASSED] drm_gem_shmem_test_pin_pages [09:16:43] [PASSED] drm_gem_shmem_test_vmap [09:16:43] [PASSED] drm_gem_shmem_test_get_sg_table [09:16:43] [PASSED] drm_gem_shmem_test_get_pages_sgt [09:16:43] [PASSED] drm_gem_shmem_test_madvise [09:16:43] [PASSED] drm_gem_shmem_test_purge [09:16:43] ================== [PASSED] drm_gem_shmem ================== [09:16:43] === drm_atomic_helper_connector_hdmi_check (29 subtests) === [09:16:43] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode [09:16:43] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode_vic_1 [09:16:43] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode [09:16:43] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode_vic_1 [09:16:43] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode [09:16:43] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode_vic_1 [09:16:43] ====== drm_test_check_broadcast_rgb_cea_mode_yuv420 ======= [09:16:43] [PASSED] Automatic [09:16:43] [PASSED] Full [09:16:43] [PASSED] Limited 16:235 [09:16:43] == [PASSED] drm_test_check_broadcast_rgb_cea_mode_yuv420 === [09:16:43] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_changed [09:16:43] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_not_changed [09:16:43] [PASSED] drm_test_check_disable_connector [09:16:43] [PASSED] drm_test_check_hdmi_funcs_reject_rate [09:16:43] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_rgb [09:16:43] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_yuv420 [09:16:43] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv422 [09:16:43] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv420 [09:16:43] [PASSED] drm_test_check_driver_unsupported_fallback_yuv420 [09:16:43] [PASSED] drm_test_check_output_bpc_crtc_mode_changed [09:16:43] [PASSED] drm_test_check_output_bpc_crtc_mode_not_changed [09:16:43] [PASSED] drm_test_check_output_bpc_dvi [09:16:43] [PASSED] drm_test_check_output_bpc_format_vic_1 [09:16:43] [PASSED] drm_test_check_output_bpc_format_display_8bpc_only [09:16:43] [PASSED] drm_test_check_output_bpc_format_display_rgb_only [09:16:43] [PASSED] drm_test_check_output_bpc_format_driver_8bpc_only [09:16:43] [PASSED] drm_test_check_output_bpc_format_driver_rgb_only [09:16:43] [PASSED] drm_test_check_tmds_char_rate_rgb_8bpc [09:16:43] [PASSED] drm_test_check_tmds_char_rate_rgb_10bpc [09:16:43] [PASSED] drm_test_check_tmds_char_rate_rgb_12bpc [09:16:43] ============ drm_test_check_hdmi_color_format ============= [09:16:43] [PASSED] AUTO -> RGB [09:16:43] [PASSED] YCBCR422 -> YUV422 [09:16:43] [PASSED] YCBCR420 -> YUV420 [09:16:43] [PASSED] YCBCR444 -> YUV444 [09:16:43] [PASSED] RGB -> RGB [09:16:43] ======== [PASSED] drm_test_check_hdmi_color_format ========= [09:16:43] ======== drm_test_check_hdmi_color_format_420_only ======== [09:16:43] [PASSED] RGB should fail [09:16:43] [PASSED] YUV444 should fail [09:16:43] [PASSED] YUV422 should fail [09:16:43] [PASSED] YUV420 should work [09:16:43] ==== [PASSED] drm_test_check_hdmi_color_format_420_only ==== [09:16:43] ===== [PASSED] drm_atomic_helper_connector_hdmi_check ====== [09:16:43] === drm_atomic_helper_connector_hdmi_reset (6 subtests) ==== [09:16:43] [PASSED] drm_test_check_broadcast_rgb_value [09:16:43] [PASSED] drm_test_check_bpc_8_value [09:16:43] [PASSED] drm_test_check_bpc_10_value [09:16:43] [PASSED] drm_test_check_bpc_12_value [09:16:43] [PASSED] drm_test_check_format_value [09:16:43] [PASSED] drm_test_check_tmds_char_value [09:16:43] ===== [PASSED] drm_atomic_helper_connector_hdmi_reset ====== [09:16:43] = drm_atomic_helper_connector_hdmi_mode_valid (7 subtests) = [09:16:43] [PASSED] drm_test_check_mode_valid [09:16:43] [PASSED] drm_test_check_mode_valid_reject [09:16:43] [PASSED] drm_test_check_mode_valid_reject_rate [09:16:43] [PASSED] drm_test_check_mode_valid_reject_max_clock [09:16:43] [PASSED] drm_test_check_mode_valid_yuv420_only_max_clock [09:16:43] [PASSED] drm_test_check_mode_valid_reject_yuv420_only_connector [09:16:43] [PASSED] drm_test_check_mode_valid_accept_yuv420_also_connector_rgb [09:16:43] === [PASSED] drm_atomic_helper_connector_hdmi_mode_valid === [09:16:43] = drm_atomic_helper_connector_hdmi_infoframes (5 subtests) = [09:16:43] [PASSED] drm_test_check_infoframes [09:16:43] [PASSED] drm_test_check_reject_avi_infoframe [09:16:43] [PASSED] drm_test_check_reject_hdr_infoframe_bpc_8 [09:16:43] [PASSED] drm_test_check_reject_hdr_infoframe_bpc_10 [09:16:43] [PASSED] drm_test_check_reject_audio_infoframe [09:16:43] === [PASSED] drm_atomic_helper_connector_hdmi_infoframes === [09:16:43] ================= drm_managed (2 subtests) ================= [09:16:43] [PASSED] drm_test_managed_release_action [09:16:43] [PASSED] drm_test_managed_run_action [09:16:43] =================== [PASSED] drm_managed =================== [09:16:43] =================== drm_mm (6 subtests) ==================== [09:16:43] [PASSED] drm_test_mm_init [09:16:43] [PASSED] drm_test_mm_debug [09:16:43] [PASSED] drm_test_mm_align32 [09:16:43] [PASSED] drm_test_mm_align64 [09:16:43] [PASSED] drm_test_mm_lowest [09:16:43] [PASSED] drm_test_mm_highest [09:16:43] ===================== [PASSED] drm_mm ====================== [09:16:43] ============= drm_modes_analog_tv (5 subtests) ============= [09:16:43] [PASSED] drm_test_modes_analog_tv_mono_576i [09:16:43] [PASSED] drm_test_modes_analog_tv_ntsc_480i [09:16:43] [PASSED] drm_test_modes_analog_tv_ntsc_480i_inlined [09:16:43] [PASSED] drm_test_modes_analog_tv_pal_576i [09:16:43] [PASSED] drm_test_modes_analog_tv_pal_576i_inlined [09:16:43] =============== [PASSED] drm_modes_analog_tv =============== [09:16:43] ============== drm_panic_helper (3 subtests) =============== [09:16:43] ============= drm_test_panic_screen_user_map ============== [09:16:43] [PASSED] Panic screen user, mode: 1024 x 768 XR24 little-endian (0x34325258) [09:16:43] [PASSED] Panic screen user, mode: 494 x 494 XR24 little-endian (0x34325258) [09:16:43] [PASSED] Panic screen user, mode: 1920 x 1080 XR24 little-endian (0x34325258) [09:16:43] [PASSED] Panic screen user, mode: 1024 x 768 RG16 little-endian (0x36314752) [09:16:43] [PASSED] Panic screen user, mode: 1024 x 768 RG24 little-endian (0x34324752) [09:16:43] [PASSED] Panic screen kmsg, mode: 1024 x 768 XR24 little-endian (0x34325258) [09:16:43] [PASSED] Panic screen kmsg, mode: 494 x 494 XR24 little-endian (0x34325258) [09:16:43] [PASSED] Panic screen kmsg, mode: 1920 x 1080 XR24 little-endian (0x34325258) [09:16:43] [PASSED] Panic screen kmsg, mode: 1024 x 768 RG16 little-endian (0x36314752) [09:16:43] [PASSED] Panic screen kmsg, mode: 1024 x 768 RG24 little-endian (0x34324752) [09:16:43] ========= [PASSED] drm_test_panic_screen_user_map ========== [09:16:43] ============= drm_test_panic_screen_user_page ============= [09:16:43] [PASSED] Panic screen user, mode: 1024 x 768 XR24 little-endian (0x34325258) [09:16:43] [PASSED] Panic screen user, mode: 494 x 494 XR24 little-endian (0x34325258) [09:16:43] [PASSED] Panic screen user, mode: 1920 x 1080 XR24 little-endian (0x34325258) [09:16:43] [PASSED] Panic screen user, mode: 1024 x 768 RG16 little-endian (0x36314752) [09:16:43] [PASSED] Panic screen user, mode: 1024 x 768 RG24 little-endian (0x34324752) [09:16:44] [PASSED] Panic screen kmsg, mode: 1024 x 768 XR24 little-endian (0x34325258) [09:16:44] [PASSED] Panic screen kmsg, mode: 494 x 494 XR24 little-endian (0x34325258) [09:16:44] [PASSED] Panic screen kmsg, mode: 1920 x 1080 XR24 little-endian (0x34325258) [09:16:44] [PASSED] Panic screen kmsg, mode: 1024 x 768 RG16 little-endian (0x36314752) [09:16:44] [PASSED] Panic screen kmsg, mode: 1024 x 768 RG24 little-endian (0x34324752) [09:16:44] ========= [PASSED] drm_test_panic_screen_user_page ========= [09:16:44] ========== drm_test_panic_screen_user_set_pixel =========== [09:16:44] [PASSED] Panic screen user, mode: 1024 x 768 XR24 little-endian (0x34325258) [09:16:44] [PASSED] Panic screen user, mode: 494 x 494 XR24 little-endian (0x34325258) [09:16:44] [PASSED] Panic screen user, mode: 1920 x 1080 XR24 little-endian (0x34325258) [09:16:44] [PASSED] Panic screen user, mode: 1024 x 768 RG16 little-endian (0x36314752) [09:16:44] [PASSED] Panic screen user, mode: 1024 x 768 RG24 little-endian (0x34324752) [09:16:44] [PASSED] Panic screen kmsg, mode: 1024 x 768 XR24 little-endian (0x34325258) [09:16:44] [PASSED] Panic screen kmsg, mode: 494 x 494 XR24 little-endian (0x34325258) [09:16:44] [PASSED] Panic screen kmsg, mode: 1920 x 1080 XR24 little-endian (0x34325258) [09:16:44] [PASSED] Panic screen kmsg, mode: 1024 x 768 RG16 little-endian (0x36314752) [09:16:44] [PASSED] Panic screen kmsg, mode: 1024 x 768 RG24 little-endian (0x34324752) [09:16:44] ====== [PASSED] drm_test_panic_screen_user_set_pixel ======= [09:16:44] ================ [PASSED] drm_panic_helper ================= [09:16:44] ============== drm_plane_helper (2 subtests) =============== [09:16:44] =============== drm_test_check_plane_state ================ [09:16:44] [PASSED] clipping_simple [09:16:44] [PASSED] clipping_rotate_reflect [09:16:44] [PASSED] positioning_simple [09:16:44] [PASSED] upscaling [09:16:44] [PASSED] downscaling [09:16:44] [PASSED] rounding1 [09:16:44] [PASSED] rounding2 [09:16:44] [PASSED] rounding3 [09:16:44] [PASSED] rounding4 [09:16:44] =========== [PASSED] drm_test_check_plane_state ============ [09:16:44] =========== drm_test_check_invalid_plane_state ============ [09:16:44] [PASSED] positioning_invalid [09:16:44] [PASSED] upscaling_invalid [09:16:44] [PASSED] downscaling_invalid [09:16:44] ======= [PASSED] drm_test_check_invalid_plane_state ======== [09:16:44] ================ [PASSED] drm_plane_helper ================= [09:16:44] ====== drm_connector_helper_tv_get_modes (1 subtest) ======= [09:16:44] ====== drm_test_connector_helper_tv_get_modes_check ======= [09:16:44] [PASSED] None [09:16:44] [PASSED] PAL [09:16:44] [PASSED] NTSC [09:16:44] [PASSED] Both, NTSC Default [09:16:44] [PASSED] Both, PAL Default [09:16:44] [PASSED] Both, NTSC Default, with PAL on command-line [09:16:44] [PASSED] Both, PAL Default, with NTSC on command-line [09:16:44] == [PASSED] drm_test_connector_helper_tv_get_modes_check === [09:16:44] ======== [PASSED] drm_connector_helper_tv_get_modes ======== [09:16:44] ================== drm_rect (9 subtests) =================== [09:16:44] [PASSED] drm_test_rect_clip_scaled_div_by_zero [09:16:44] [PASSED] drm_test_rect_clip_scaled_not_clipped [09:16:44] [PASSED] drm_test_rect_clip_scaled_clipped [09:16:44] [PASSED] drm_test_rect_clip_scaled_signed_vs_unsigned [09:16:44] ================= drm_test_rect_intersect ================= [09:16:44] [PASSED] top-left x bottom-right: 2x2+1+1 x 2x2+0+0 [09:16:44] [PASSED] top-right x bottom-left: 2x2+0+0 x 2x2+1-1 [09:16:44] [PASSED] bottom-left x top-right: 2x2+1-1 x 2x2+0+0 [09:16:44] [PASSED] bottom-right x top-left: 2x2+0+0 x 2x2+1+1 [09:16:44] [PASSED] right x left: 2x1+0+0 x 3x1+1+0 [09:16:44] [PASSED] left x right: 3x1+1+0 x 2x1+0+0 [09:16:44] [PASSED] up x bottom: 1x2+0+0 x 1x3+0-1 [09:16:44] [PASSED] bottom x up: 1x3+0-1 x 1x2+0+0 [09:16:44] [PASSED] touching corner: 1x1+0+0 x 2x2+1+1 [09:16:44] [PASSED] touching side: 1x1+0+0 x 1x1+1+0 [09:16:44] [PASSED] equal rects: 2x2+0+0 x 2x2+0+0 [09:16:44] [PASSED] inside another: 2x2+0+0 x 1x1+1+1 [09:16:44] [PASSED] far away: 1x1+0+0 x 1x1+3+6 [09:16:44] [PASSED] points intersecting: 0x0+5+10 x 0x0+5+10 [09:16:44] [PASSED] points not intersecting: 0x0+0+0 x 0x0+5+10 [09:16:44] ============= [PASSED] drm_test_rect_intersect ============= [09:16:44] ================ drm_test_rect_calc_hscale ================ [09:16:44] [PASSED] normal use [09:16:44] [PASSED] out of max range [09:16:44] [PASSED] out of min range [09:16:44] [PASSED] zero dst [09:16:44] [PASSED] negative src [09:16:44] [PASSED] negative dst [09:16:44] ============ [PASSED] drm_test_rect_calc_hscale ============ [09:16:44] ================ drm_test_rect_calc_vscale ================ [09:16:44] [PASSED] normal use [09:16:44] [PASSED] out of max range [09:16:44] [PASSED] out of min range [09:16:44] [PASSED] zero dst [09:16:44] [PASSED] negative src [09:16:44] [PASSED] negative dst [09:16:44] ============ [PASSED] drm_test_rect_calc_vscale ============ [09:16:44] ================== drm_test_rect_rotate =================== [09:16:44] [PASSED] reflect-x [09:16:44] [PASSED] reflect-y [09:16:44] [PASSED] rotate-0 [09:16:44] [PASSED] rotate-90 [09:16:44] [PASSED] rotate-180 [09:16:44] [PASSED] rotate-270 [09:16:44] ============== [PASSED] drm_test_rect_rotate =============== [09:16:44] ================ drm_test_rect_rotate_inv ================= [09:16:44] [PASSED] reflect-x [09:16:44] [PASSED] reflect-y [09:16:44] [PASSED] rotate-0 [09:16:44] [PASSED] rotate-90 [09:16:44] [PASSED] rotate-180 [09:16:44] [PASSED] rotate-270 [09:16:44] ============ [PASSED] drm_test_rect_rotate_inv ============= [09:16:44] ==================== [PASSED] drm_rect ===================== [09:16:44] ============ drm_sysfb_modeset_test (1 subtest) ============ [09:16:44] ============ drm_test_sysfb_build_fourcc_list ============= [09:16:44] [PASSED] no native formats [09:16:44] [PASSED] XRGB8888 as native format [09:16:44] [PASSED] remove duplicates [09:16:44] [PASSED] convert alpha formats [09:16:44] [PASSED] random formats [09:16:44] ======== [PASSED] drm_test_sysfb_build_fourcc_list ========= [09:16:44] ============= [PASSED] drm_sysfb_modeset_test ============== [09:16:44] ================== drm_fixp (2 subtests) =================== [09:16:44] [PASSED] drm_test_int2fixp [09:16:44] [PASSED] drm_test_sm2fixp [09:16:44] ==================== [PASSED] drm_fixp ===================== [09:16:44] ============================================================ [09:16:44] Testing complete. Ran 667 tests: passed: 667 [09:16:44] Elapsed time: 27.207s total, 1.848s configuring, 24.887s building, 0.464s running + for kcfg in "${kunitconfigs[@]}" + [[ ! -f /kernel/drivers/gpu/drm/ttm/tests/.kunitconfig ]] + /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/ttm/tests/.kunitconfig [09:16:44] Configuring KUnit Kernel ... Regenerating .config ... Populating config with: $ make ARCH=um O=.kunit olddefconfig [09:16:46] 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 [09:16:56] Starting KUnit Kernel (1/1)... [09:16:56] ============================================================ Running tests with: $ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt [09:16:56] ================= ttm_device (5 subtests) ================== [09:16:56] [PASSED] ttm_device_init_basic [09:16:56] [PASSED] ttm_device_init_multiple [09:16:56] [PASSED] ttm_device_fini_basic [09:16:56] [PASSED] ttm_device_init_no_vma_man [09:16:56] ================== ttm_device_init_pools ================== [09:16:56] [PASSED] No DMA allocations, no DMA32 required [09:16:56] [PASSED] DMA allocations, DMA32 required [09:16:56] [PASSED] No DMA allocations, DMA32 required [09:16:56] [PASSED] DMA allocations, no DMA32 required [09:16:56] ============== [PASSED] ttm_device_init_pools ============== [09:16:56] =================== [PASSED] ttm_device ==================== [09:16:56] ================== ttm_pool (8 subtests) =================== [09:16:56] ================== ttm_pool_alloc_basic =================== [09:16:56] [PASSED] One page [09:16:56] [PASSED] More than one page [09:16:56] [PASSED] Above the allocation limit [09:16:56] [PASSED] One page, with coherent DMA mappings enabled [09:16:56] [PASSED] Above the allocation limit, with coherent DMA mappings enabled [09:16:56] ============== [PASSED] ttm_pool_alloc_basic =============== [09:16:56] ============== ttm_pool_alloc_basic_dma_addr ============== [09:16:56] [PASSED] One page [09:16:56] [PASSED] More than one page [09:16:56] [PASSED] Above the allocation limit [09:16:56] [PASSED] One page, with coherent DMA mappings enabled [09:16:56] [PASSED] Above the allocation limit, with coherent DMA mappings enabled [09:16:56] ========== [PASSED] ttm_pool_alloc_basic_dma_addr ========== [09:16:56] [PASSED] ttm_pool_alloc_order_caching_match [09:16:56] [PASSED] ttm_pool_alloc_caching_mismatch [09:16:56] [PASSED] ttm_pool_alloc_order_mismatch [09:16:56] [PASSED] ttm_pool_free_dma_alloc [09:16:56] [PASSED] ttm_pool_free_no_dma_alloc [09:16:56] [PASSED] ttm_pool_fini_basic [09:16:56] ==================== [PASSED] ttm_pool ===================== [09:16:56] ================ ttm_resource (8 subtests) ================= [09:16:56] ================= ttm_resource_init_basic ================= [09:16:56] [PASSED] Init resource in TTM_PL_SYSTEM [09:16:56] [PASSED] Init resource in TTM_PL_VRAM [09:16:56] [PASSED] Init resource in a private placement [09:16:56] [PASSED] Init resource in TTM_PL_SYSTEM, set placement flags [09:16:56] ============= [PASSED] ttm_resource_init_basic ============= [09:16:56] [PASSED] ttm_resource_init_pinned [09:16:56] [PASSED] ttm_resource_fini_basic [09:16:56] [PASSED] ttm_resource_manager_init_basic [09:16:56] [PASSED] ttm_resource_manager_usage_basic [09:16:56] [PASSED] ttm_resource_manager_set_used_basic [09:16:56] [PASSED] ttm_sys_man_alloc_basic [09:16:56] [PASSED] ttm_sys_man_free_basic [09:16:56] ================== [PASSED] ttm_resource =================== [09:16:56] =================== ttm_tt (15 subtests) =================== [09:16:56] ==================== ttm_tt_init_basic ==================== [09:16:56] [PASSED] Page-aligned size [09:16:56] [PASSED] Extra pages requested [09:16:56] ================ [PASSED] ttm_tt_init_basic ================ [09:16:56] [PASSED] ttm_tt_init_misaligned [09:16:56] [PASSED] ttm_tt_fini_basic [09:16:56] [PASSED] ttm_tt_fini_sg [09:16:56] [PASSED] ttm_tt_fini_shmem [09:16:56] [PASSED] ttm_tt_create_basic [09:16:56] [PASSED] ttm_tt_create_invalid_bo_type [09:16:56] [PASSED] ttm_tt_create_ttm_exists [09:16:56] [PASSED] ttm_tt_create_failed [09:16:56] [PASSED] ttm_tt_destroy_basic [09:16:56] [PASSED] ttm_tt_populate_null_ttm [09:16:56] [PASSED] ttm_tt_populate_populated_ttm [09:16:56] [PASSED] ttm_tt_unpopulate_basic [09:16:56] [PASSED] ttm_tt_unpopulate_empty_ttm [09:16:56] [PASSED] ttm_tt_swapin_basic [09:16:56] ===================== [PASSED] ttm_tt ====================== [09:16:56] =================== ttm_bo (14 subtests) =================== [09:16:56] =========== ttm_bo_reserve_optimistic_no_ticket =========== [09:16:56] [PASSED] Cannot be interrupted and sleeps [09:16:56] [PASSED] Cannot be interrupted, locks straight away [09:16:56] [PASSED] Can be interrupted, sleeps [09:16:56] ======= [PASSED] ttm_bo_reserve_optimistic_no_ticket ======= [09:16:56] [PASSED] ttm_bo_reserve_locked_no_sleep [09:16:56] [PASSED] ttm_bo_reserve_no_wait_ticket [09:16:56] [PASSED] ttm_bo_reserve_double_resv [09:16:56] [PASSED] ttm_bo_reserve_interrupted [09:16:56] [PASSED] ttm_bo_reserve_deadlock [09:16:56] [PASSED] ttm_bo_unreserve_basic [09:16:56] [PASSED] ttm_bo_unreserve_pinned [09:16:56] [PASSED] ttm_bo_unreserve_bulk [09:16:56] [PASSED] ttm_bo_fini_basic [09:16:56] [PASSED] ttm_bo_fini_shared_resv [09:16:56] [PASSED] ttm_bo_pin_basic [09:16:56] [PASSED] ttm_bo_pin_unpin_resource [09:16:56] [PASSED] ttm_bo_multiple_pin_one_unpin [09:16:56] ===================== [PASSED] ttm_bo ====================== [09:16:56] ============== ttm_bo_validate (22 subtests) =============== [09:16:56] ============== ttm_bo_init_reserved_sys_man =============== [09:16:56] [PASSED] Buffer object for userspace [09:16:56] [PASSED] Kernel buffer object [09:16:56] [PASSED] Shared buffer object [09:16:56] ========== [PASSED] ttm_bo_init_reserved_sys_man =========== [09:16:56] ============== ttm_bo_init_reserved_mock_man ============== [09:16:56] [PASSED] Buffer object for userspace [09:16:56] [PASSED] Kernel buffer object [09:16:56] [PASSED] Shared buffer object [09:16:56] ========== [PASSED] ttm_bo_init_reserved_mock_man ========== [09:16:56] [PASSED] ttm_bo_init_reserved_resv [09:16:56] ================== ttm_bo_validate_basic ================== [09:16:56] [PASSED] Buffer object for userspace [09:16:56] [PASSED] Kernel buffer object [09:16:56] [PASSED] Shared buffer object [09:16:56] ============== [PASSED] ttm_bo_validate_basic ============== [09:16:56] [PASSED] ttm_bo_validate_invalid_placement [09:16:56] ============= ttm_bo_validate_same_placement ============== [09:16:56] [PASSED] System manager [09:16:56] [PASSED] VRAM manager [09:16:56] ========= [PASSED] ttm_bo_validate_same_placement ========== [09:16:56] [PASSED] ttm_bo_validate_failed_alloc [09:16:56] [PASSED] ttm_bo_validate_pinned [09:16:56] [PASSED] ttm_bo_validate_busy_placement [09:16:56] ================ ttm_bo_validate_multihop ================= [09:16:56] [PASSED] Buffer object for userspace [09:16:56] [PASSED] Kernel buffer object [09:16:56] [PASSED] Shared buffer object [09:16:56] ============ [PASSED] ttm_bo_validate_multihop ============= [09:16:56] ========== ttm_bo_validate_no_placement_signaled ========== [09:16:56] [PASSED] Buffer object in system domain, no page vector [09:16:56] [PASSED] Buffer object in system domain with an existing page vector [09:16:56] ====== [PASSED] ttm_bo_validate_no_placement_signaled ====== [09:16:56] ======== ttm_bo_validate_no_placement_not_signaled ======== [09:16:56] [PASSED] Buffer object for userspace [09:16:56] [PASSED] Kernel buffer object [09:16:56] [PASSED] Shared buffer object [09:16:56] ==== [PASSED] ttm_bo_validate_no_placement_not_signaled ==== [09:16:56] [PASSED] ttm_bo_validate_move_fence_signaled [09:16:56] ========= ttm_bo_validate_move_fence_not_signaled ========= [09:16:56] [PASSED] Waits for GPU [09:16:56] [PASSED] Tries to lock straight away [09:16:56] ===== [PASSED] ttm_bo_validate_move_fence_not_signaled ===== [09:16:56] [PASSED] ttm_bo_validate_swapout [09:16:56] [PASSED] ttm_bo_validate_happy_evict [09:16:56] [PASSED] ttm_bo_validate_all_pinned_evict [09:16:56] [PASSED] ttm_bo_validate_allowed_only_evict [09:16:56] [PASSED] ttm_bo_validate_deleted_evict [09:16:56] [PASSED] ttm_bo_validate_busy_domain_evict [09:16:56] [PASSED] ttm_bo_validate_evict_gutting [09:16:56] [PASSED] ttm_bo_validate_recrusive_evict [09:16:56] ================= [PASSED] ttm_bo_validate ================= [09:16:56] ============================================================ [09:16:56] Testing complete. Ran 102 tests: passed: 102 [09:16:56] Elapsed time: 12.155s total, 1.755s configuring, 10.135s building, 0.223s running + for kcfg in "${kunitconfigs[@]}" + [[ ! -f /kernel/drivers/dma-buf/.kunitconfig ]] + /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/dma-buf/.kunitconfig [09:16:56] Configuring KUnit Kernel ... Regenerating .config ... Populating config with: $ make ARCH=um O=.kunit olddefconfig [09:16:58] 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 [09:17:07] Starting KUnit Kernel (1/1)... [09:17:07] ============================================================ Running tests with: $ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt [09:17:07] =============== dma-buf-fence (12 subtests) ================ [09:17:07] [PASSED] test_sanitycheck [09:17:07] [PASSED] test_signaling [09:17:07] [PASSED] test_add_callback [09:17:07] [PASSED] test_late_add_callback [09:17:07] [PASSED] test_rm_callback [09:17:07] [PASSED] test_late_rm_callback [09:17:07] [PASSED] test_status [09:17:07] [PASSED] test_error [09:17:07] [PASSED] test_wait [09:17:07] [PASSED] test_wait_timeout [09:17:07] [PASSED] test_stub [09:17:07] [SKIPPED] test_race_signal_callback (requires at least 2 CPUs) [09:17:07] ================== [PASSED] dma-buf-fence ================== [09:17:07] ============ dma-buf-fence-chain (11 subtests) ============= [09:17:07] [PASSED] test_sanitycheck [09:17:07] [PASSED] test_find_seqno [09:17:07] [PASSED] test_find_signaled [09:17:07] [PASSED] test_find_out_of_order [09:17:12] [PASSED] test_find_gap [09:17:12] [PASSED] test_find_race [09:17:12] [PASSED] test_signal_forward [09:17:12] [PASSED] test_signal_backward [09:17:12] [PASSED] test_wait_forward [09:17:12] [PASSED] test_wait_backward [09:17:12] [PASSED] test_wait_random [09:17:12] =============== [PASSED] dma-buf-fence-chain =============== [09:17:12] ============ dma-buf-fence-unwrap (10 subtests) ============ [09:17:12] [PASSED] test_sanitycheck [09:17:12] [PASSED] test_unwrap_array [09:17:12] [PASSED] test_unwrap_chain [09:17:12] [PASSED] test_unwrap_chain_array [09:17:12] [PASSED] test_unwrap_merge [09:17:12] [PASSED] test_unwrap_merge_duplicate [09:17:12] [PASSED] test_unwrap_merge_seqno [09:17:12] [PASSED] test_unwrap_merge_order [09:17:12] [PASSED] test_unwrap_merge_complex [09:17:12] [PASSED] test_unwrap_merge_complex_seqno [09:17:12] ============== [PASSED] dma-buf-fence-unwrap =============== [09:17:12] ================ dma-buf-resv (5 subtests) ================= [09:17:12] [PASSED] test_sanitycheck [09:17:12] ===================== test_signaling ====================== [09:17:12] [PASSED] kernel [09:17:12] [PASSED] write [09:17:12] [PASSED] read [09:17:12] [PASSED] bookkeep [09:17:12] ================= [PASSED] test_signaling ================== [09:17:12] ====================== test_for_each ====================== [09:17:12] [PASSED] kernel [09:17:12] [PASSED] write [09:17:12] [PASSED] read [09:17:12] [PASSED] bookkeep [09:17:12] ================== [PASSED] test_for_each ================== [09:17:12] ================= test_for_each_unlocked ================== [09:17:12] [PASSED] kernel [09:17:12] [PASSED] write [09:17:12] [PASSED] read [09:17:12] [PASSED] bookkeep [09:17:12] ============= [PASSED] test_for_each_unlocked ============== [09:17:12] ===================== test_get_fences ===================== [09:17:12] [PASSED] kernel [09:17:12] [PASSED] write [09:17:12] [PASSED] read [09:17:12] [PASSED] bookkeep [09:17:12] ================= [PASSED] test_get_fences ================= [09:17:12] ================== [PASSED] dma-buf-resv =================== [09:17:12] ============================================================ [09:17:12] Testing complete. Ran 50 tests: passed: 49, skipped: 1 [09:17:12] Elapsed time: 15.903s total, 1.833s configuring, 8.747s building, 5.273s running + cleanup ++ stat -c %u:%g /kernel + chown -R 1003:1003 /kernel ^ permalink raw reply [flat|nested] 16+ messages in thread
* ✓ Xe.CI.BAT: success for Introduce xe_wedge (rev3) 2026-10-10 9:06 [PATCH v4 0/5] Introduce xe_wedge Raag Jadav ` (6 preceding siblings ...) 2026-10-10 9:17 ` ✓ CI.KUnit: success " Patchwork @ 2026-10-10 10:06 ` Patchwork 2026-10-10 11:29 ` ✓ Xe.CI.FULL: " Patchwork 8 siblings, 0 replies; 16+ messages in thread From: Patchwork @ 2026-10-10 10:06 UTC (permalink / raw) To: Raag Jadav; +Cc: intel-xe [-- Attachment #1: Type: text/plain, Size: 1503 bytes --] == Series Details == Series: Introduce xe_wedge (rev3) URL : https://patchwork.freedesktop.org/series/173011/ State : success == Summary == CI Bug Log - changes from xe-5921-42fb41a656d70e2226e00726a8fedbe4152639ff_BAT -> xe-pw-173011v3_BAT ==================================================== Summary ------- **SUCCESS** No regressions found. Participating hosts (14 -> 13) ------------------------------ Missing (1): bat-bmg-vm Known issues ------------ Here are the changes found in xe-pw-173011v3_BAT that come from known issues: ### IGT changes ### #### Issues hit #### * igt@core_hotunplug@unbind-rebind: - bat-nvls-1: [PASS][1] -> [DMESG-WARN][2] ([Intel XE#8762] / [Intel XE#9069]) [1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5921-42fb41a656d70e2226e00726a8fedbe4152639ff/bat-nvls-1/igt@core_hotunplug@unbind-rebind.html [2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/bat-nvls-1/igt@core_hotunplug@unbind-rebind.html [Intel XE#8762]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8762 [Intel XE#9069]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9069 Build changes ------------- * Linux: xe-5921-42fb41a656d70e2226e00726a8fedbe4152639ff -> xe-pw-173011v3 IGT_9138: 9138 xe-5921-42fb41a656d70e2226e00726a8fedbe4152639ff: 42fb41a656d70e2226e00726a8fedbe4152639ff xe-pw-173011v3: 173011v3 == Logs == For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/index.html [-- Attachment #2: Type: text/html, Size: 2061 bytes --] ^ permalink raw reply [flat|nested] 16+ messages in thread
* ✓ Xe.CI.FULL: success for Introduce xe_wedge (rev3) 2026-10-10 9:06 [PATCH v4 0/5] Introduce xe_wedge Raag Jadav ` (7 preceding siblings ...) 2026-10-10 10:06 ` ✓ Xe.CI.BAT: " Patchwork @ 2026-10-10 11:29 ` Patchwork 8 siblings, 0 replies; 16+ messages in thread From: Patchwork @ 2026-10-10 11:29 UTC (permalink / raw) To: Raag Jadav; +Cc: intel-xe [-- Attachment #1: Type: text/plain, Size: 78636 bytes --] == Series Details == Series: Introduce xe_wedge (rev3) URL : https://patchwork.freedesktop.org/series/173011/ State : success == Summary == CI Bug Log - changes from xe-5921-42fb41a656d70e2226e00726a8fedbe4152639ff_FULL -> xe-pw-173011v3_FULL ==================================================== Summary ------- **SUCCESS** No regressions found. Participating hosts (3 -> 3) ------------------------------ No changes in participating hosts Known issues ------------ Here are the changes found in xe-pw-173011v3_FULL that come from known issues: ### IGT changes ### #### Issues hit #### * igt@core_hotunplug@hotreplug: - shard-bmg: [PASS][1] -> [ABORT][2] ([Intel XE#9463]) +1 other test abort [1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5921-42fb41a656d70e2226e00726a8fedbe4152639ff/shard-bmg-4/igt@core_hotunplug@hotreplug.html [2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-bmg-6/igt@core_hotunplug@hotreplug.html * igt@kms_addfb_basic@addfb25-y-tiled-small-legacy: - shard-ptl: NOTRUN -> [SKIP][3] ([Intel XE#5765]) [3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-ptl-3/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html * igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180-hflip: - shard-lnl: NOTRUN -> [SKIP][4] ([Intel XE#1407]) +2 other tests skip [4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-lnl-1/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180-hflip.html * igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180-hflip-async-flip: - shard-ptl: NOTRUN -> [SKIP][5] ([Intel XE#6925]) +1 other test skip [5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-ptl-6/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180-hflip-async-flip.html * igt@kms_big_fb@linear-64bpp-rotate-90: - shard-ptl: NOTRUN -> [SKIP][6] ([Intel XE#5901]) +2 other tests skip [6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-ptl-6/igt@kms_big_fb@linear-64bpp-rotate-90.html * igt@kms_big_fb@linear-max-hw-stride-32bpp-rotate-0-hflip: - shard-ptl: NOTRUN -> [SKIP][7] ([Intel XE#7085]) [7]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-ptl-1/igt@kms_big_fb@linear-max-hw-stride-32bpp-rotate-0-hflip.html - shard-lnl: NOTRUN -> [SKIP][8] ([Intel XE#7059] / [Intel XE#7085]) +1 other test skip [8]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-lnl-3/igt@kms_big_fb@linear-max-hw-stride-32bpp-rotate-0-hflip.html * igt@kms_big_fb@x-tiled-addfb-size-offset-overflow: - shard-ptl: NOTRUN -> [SKIP][9] ([Intel XE#5851]) [9]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-ptl-1/igt@kms_big_fb@x-tiled-addfb-size-offset-overflow.html * igt@kms_big_fb@y-tiled-8bpp-rotate-180: - shard-bmg: NOTRUN -> [SKIP][10] ([Intel XE#1124]) [10]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-bmg-3/igt@kms_big_fb@y-tiled-8bpp-rotate-180.html * igt@kms_big_fb@y-tiled-addfb-size-overflow: - shard-lnl: NOTRUN -> [SKIP][11] ([Intel XE#1428] / [Intel XE#7387]) [11]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-lnl-1/igt@kms_big_fb@y-tiled-addfb-size-overflow.html * igt@kms_big_fb@yf-tiled-32bpp-rotate-0: - shard-lnl: NOTRUN -> [SKIP][12] ([Intel XE#1124]) +4 other tests skip [12]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-lnl-3/igt@kms_big_fb@yf-tiled-32bpp-rotate-0.html * igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-180-hflip-async-flip: - shard-ptl: NOTRUN -> [SKIP][13] ([Intel XE#5808]) +11 other tests skip [13]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-ptl-4/igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-180-hflip-async-flip.html * igt@kms_bw@connected-linear-tiling-3-displays-target-2560x1440p: - shard-ptl: NOTRUN -> [SKIP][14] ([Intel XE#7679]) [14]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-ptl-6/igt@kms_bw@connected-linear-tiling-3-displays-target-2560x1440p.html * igt@kms_bw@linear-tiling-1-displays-target-2560x1440p: - shard-bmg: NOTRUN -> [SKIP][15] ([Intel XE#367]) [15]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-bmg-3/igt@kms_bw@linear-tiling-1-displays-target-2560x1440p.html * igt@kms_bw@linear-tiling-3-displays-target-2160x1440p: - shard-lnl: NOTRUN -> [SKIP][16] ([Intel XE#367]) [16]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-lnl-3/igt@kms_bw@linear-tiling-3-displays-target-2160x1440p.html * igt@kms_bw@linear-tiling-4-displays-target-1920x1080p: - shard-ptl: NOTRUN -> [SKIP][17] ([Intel XE#367]) +3 other tests skip [17]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-ptl-3/igt@kms_bw@linear-tiling-4-displays-target-1920x1080p.html * igt@kms_ccs@bad-rotation-90-4-tiled-mtl-rc-ccs-cc: - shard-ptl: NOTRUN -> [SKIP][18] ([Intel XE#5822]) +16 other tests skip [18]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-ptl-3/igt@kms_ccs@bad-rotation-90-4-tiled-mtl-rc-ccs-cc.html * igt@kms_ccs@bad-rotation-90-y-tiled-gen12-rc-ccs: - shard-lnl: NOTRUN -> [SKIP][19] ([Intel XE#2887]) +5 other tests skip [19]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-lnl-3/igt@kms_ccs@bad-rotation-90-y-tiled-gen12-rc-ccs.html * igt@kms_ccs@crc-primary-basic-4-tiled-lnl-ccs@pipe-c-dp-1: - shard-bmg: NOTRUN -> [SKIP][20] ([Intel XE#2652]) +3 other tests skip [20]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-bmg-7/igt@kms_ccs@crc-primary-basic-4-tiled-lnl-ccs@pipe-c-dp-1.html * igt@kms_ccs@crc-primary-rotation-180-4-tiled-bmg-ccs@pipe-d-edp-1: - shard-ptl: NOTRUN -> [SKIP][21] ([Intel XE#5823] / [Intel XE#6918]) +4 other tests skip [21]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-ptl-4/igt@kms_ccs@crc-primary-rotation-180-4-tiled-bmg-ccs@pipe-d-edp-1.html * igt@kms_ccs@crc-primary-suspend-4-tiled-dg2-rc-ccs-cc: - shard-lnl: NOTRUN -> [SKIP][22] ([Intel XE#3432]) +1 other test skip [22]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-lnl-3/igt@kms_ccs@crc-primary-suspend-4-tiled-dg2-rc-ccs-cc.html * igt@kms_ccs@crc-primary-suspend-4-tiled-lnl-ccs: - shard-ptl: [PASS][23] -> [ABORT][24] ([Intel XE#7084] / [Intel XE#9362] / [Intel XE#9367] / [Intel XE#9375]) [23]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5921-42fb41a656d70e2226e00726a8fedbe4152639ff/shard-ptl-2/igt@kms_ccs@crc-primary-suspend-4-tiled-lnl-ccs.html [24]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-ptl-6/igt@kms_ccs@crc-primary-suspend-4-tiled-lnl-ccs.html * igt@kms_ccs@crc-primary-suspend-4-tiled-lnl-ccs@pipe-a-edp-1: - shard-ptl: [PASS][25] -> [ABORT][26] ([Intel XE#7084] / [Intel XE#9362]) [25]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5921-42fb41a656d70e2226e00726a8fedbe4152639ff/shard-ptl-2/igt@kms_ccs@crc-primary-suspend-4-tiled-lnl-ccs@pipe-a-edp-1.html [26]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-ptl-6/igt@kms_ccs@crc-primary-suspend-4-tiled-lnl-ccs@pipe-a-edp-1.html - shard-lnl: [PASS][27] -> [ABORT][28] ([Intel XE#7084] / [Intel XE#9362]) +1 other test abort [27]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5921-42fb41a656d70e2226e00726a8fedbe4152639ff/shard-lnl-8/igt@kms_ccs@crc-primary-suspend-4-tiled-lnl-ccs@pipe-a-edp-1.html [28]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-lnl-2/igt@kms_ccs@crc-primary-suspend-4-tiled-lnl-ccs@pipe-a-edp-1.html * igt@kms_ccs@crc-primary-suspend-4-tiled-lnl-ccs@pipe-d-edp-1: - shard-ptl: [PASS][29] -> [DMESG-WARN][30] ([Intel XE#9412]) [29]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5921-42fb41a656d70e2226e00726a8fedbe4152639ff/shard-ptl-2/igt@kms_ccs@crc-primary-suspend-4-tiled-lnl-ccs@pipe-d-edp-1.html [30]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-ptl-6/igt@kms_ccs@crc-primary-suspend-4-tiled-lnl-ccs@pipe-d-edp-1.html * igt@kms_ccs@missing-ccs-buffer-4-tiled-mtl-rc-ccs: - shard-bmg: NOTRUN -> [SKIP][31] ([Intel XE#2887]) +2 other tests skip [31]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-bmg-3/igt@kms_ccs@missing-ccs-buffer-4-tiled-mtl-rc-ccs.html * igt@kms_cdclk@mode-transition-all-outputs: - shard-ptl: NOTRUN -> [SKIP][32] ([Intel XE#7008]) [32]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-ptl-4/igt@kms_cdclk@mode-transition-all-outputs.html * igt@kms_cdclk@plane-scaling: - shard-bmg: NOTRUN -> [SKIP][33] ([Intel XE#2724] / [Intel XE#7449]) [33]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-bmg-10/igt@kms_cdclk@plane-scaling.html * igt@kms_chamelium_audio@dp-audio: - shard-ptl: NOTRUN -> [SKIP][34] ([Intel XE#2252]) +8 other tests skip [34]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-ptl-4/igt@kms_chamelium_audio@dp-audio.html * igt@kms_chamelium_audio@dp-audio-after-suspend: - shard-lnl: NOTRUN -> [SKIP][35] ([Intel XE#2252]) [35]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-lnl-1/igt@kms_chamelium_audio@dp-audio-after-suspend.html * igt@kms_chamelium_color@ctm-0-75: - shard-ptl: NOTRUN -> [SKIP][36] ([Intel XE#5824]) [36]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-ptl-1/igt@kms_chamelium_color@ctm-0-75.html - shard-lnl: NOTRUN -> [SKIP][37] ([Intel XE#306] / [Intel XE#7358]) [37]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-lnl-3/igt@kms_chamelium_color@ctm-0-75.html * igt@kms_chamelium_color_pipeline@plane-fixed-matrix-yuv-rgb-bt709: - shard-ptl: NOTRUN -> [SKIP][38] ([Intel XE#8391]) +2 other tests skip [38]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-ptl-4/igt@kms_chamelium_color_pipeline@plane-fixed-matrix-yuv-rgb-bt709.html * igt@kms_chamelium_edid@dp-edid-resolution-list: - shard-bmg: NOTRUN -> [SKIP][39] ([Intel XE#2252]) +2 other tests skip [39]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-bmg-3/igt@kms_chamelium_edid@dp-edid-resolution-list.html * igt@kms_chamelium_hpd@hdmi-hpd-with-enabled-mode: - shard-lnl: NOTRUN -> [SKIP][40] ([Intel XE#373]) +4 other tests skip [40]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-lnl-1/igt@kms_chamelium_hpd@hdmi-hpd-with-enabled-mode.html * igt@kms_color_pipeline@plane-ctm3x4@pipe-a-plane-3: - shard-ptl: NOTRUN -> [SKIP][41] ([Intel XE#6969]) +28 other tests skip [41]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-ptl-3/igt@kms_color_pipeline@plane-ctm3x4@pipe-a-plane-3.html * igt@kms_color_pipeline@plane-lut3d-green-only: - shard-lnl: NOTRUN -> [SKIP][42] ([Intel XE#6969] / [Intel XE#7006]) +1 other test skip [42]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-lnl-3/igt@kms_color_pipeline@plane-lut3d-green-only.html * igt@kms_color_pipeline@plane-lut3d-green-only@pipe-b-plane-4: - shard-lnl: NOTRUN -> [SKIP][43] ([Intel XE#6969]) +13 other tests skip [43]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-lnl-3/igt@kms_color_pipeline@plane-lut3d-green-only@pipe-b-plane-4.html * igt@kms_content_protection@lic-type-0: - shard-ptl: NOTRUN -> [SKIP][44] ([Intel XE#7642]) +2 other tests skip [44]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-ptl-1/igt@kms_content_protection@lic-type-0.html - shard-lnl: NOTRUN -> [SKIP][45] ([Intel XE#7642]) +1 other test skip [45]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-lnl-3/igt@kms_content_protection@lic-type-0.html * igt@kms_content_protection@lic-type-0@pipe-a-dp-2: - shard-bmg: NOTRUN -> [FAIL][46] ([Intel XE#1178] / [Intel XE#3304] / [Intel XE#7374]) +1 other test fail [46]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-bmg-3/igt@kms_content_protection@lic-type-0@pipe-a-dp-2.html * igt@kms_content_protection@mei-interface: - shard-ptl: NOTRUN -> [SKIP][47] ([Intel XE#5845]) [47]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-ptl-3/igt@kms_content_protection@mei-interface.html * igt@kms_cursor_crc@cursor-random-64x21: - shard-bmg: NOTRUN -> [SKIP][48] ([Intel XE#2320]) +1 other test skip [48]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-bmg-3/igt@kms_cursor_crc@cursor-random-64x21.html * igt@kms_cursor_crc@cursor-rapid-movement-128x42: - shard-ptl: NOTRUN -> [SKIP][49] ([Intel XE#5900]) +5 other tests skip [49]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-ptl-4/igt@kms_cursor_crc@cursor-rapid-movement-128x42.html * igt@kms_cursor_crc@cursor-sliding-512x170: - shard-ptl: NOTRUN -> [SKIP][50] ([Intel XE#5846]) [50]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-ptl-1/igt@kms_cursor_crc@cursor-sliding-512x170.html - shard-lnl: NOTRUN -> [SKIP][51] ([Intel XE#2321] / [Intel XE#7355]) [51]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-lnl-3/igt@kms_cursor_crc@cursor-sliding-512x170.html - shard-bmg: NOTRUN -> [SKIP][52] ([Intel XE#2321] / [Intel XE#7355]) [52]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-bmg-3/igt@kms_cursor_crc@cursor-sliding-512x170.html * igt@kms_cursor_crc@cursor-sliding-max-size: - shard-lnl: NOTRUN -> [SKIP][53] ([Intel XE#1424]) +2 other tests skip [53]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-lnl-1/igt@kms_cursor_crc@cursor-sliding-max-size.html * igt@kms_cursor_legacy@cursorb-vs-flipa-legacy: - shard-ptl: NOTRUN -> [SKIP][54] ([Intel XE#5962]) +4 other tests skip [54]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-ptl-3/igt@kms_cursor_legacy@cursorb-vs-flipa-legacy.html * igt@kms_cursor_legacy@cursorb-vs-flipb-atomic-transitions-varying-size: - shard-lnl: NOTRUN -> [SKIP][55] ([Intel XE#309] / [Intel XE#7343]) +2 other tests skip [55]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-lnl-1/igt@kms_cursor_legacy@cursorb-vs-flipb-atomic-transitions-varying-size.html * igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions: - shard-bmg: [PASS][56] -> [FAIL][57] ([Intel XE#7809]) [56]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5921-42fb41a656d70e2226e00726a8fedbe4152639ff/shard-bmg-1/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions.html [57]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-bmg-9/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions.html * igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions-varying-size: - shard-ptl: NOTRUN -> [SKIP][58] ([Intel XE#6035]) [58]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-ptl-3/igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions-varying-size.html * igt@kms_dp_link_training@non-uhbr-mst-tbtalt-train: - shard-bmg: NOTRUN -> [SKIP][59] ([Intel XE#9528]) [59]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-bmg-10/igt@kms_dp_link_training@non-uhbr-mst-tbtalt-train.html * igt@kms_dp_link_training@non-uhbr-sst-direct-train: - shard-ptl: NOTRUN -> [SKIP][60] ([Intel XE#9534]) [60]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-ptl-4/igt@kms_dp_link_training@non-uhbr-sst-direct-train.html * igt@kms_dp_link_training@uhbr-mst-direct-train: - shard-ptl: NOTRUN -> [SKIP][61] ([Intel XE#9527]) [61]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-ptl-3/igt@kms_dp_link_training@uhbr-mst-direct-train.html * igt@kms_dp_linktrain_fallback@uhbr-to-hbr-fallback: - shard-ptl: NOTRUN -> [SKIP][62] ([Intel XE#9009]) [62]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-ptl-3/igt@kms_dp_linktrain_fallback@uhbr-to-hbr-fallback.html * igt@kms_dsc@dsc-fractional-bpp-bigjoiner: - shard-bmg: NOTRUN -> [SKIP][63] ([Intel XE#8265]) [63]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-bmg-10/igt@kms_dsc@dsc-fractional-bpp-bigjoiner.html * igt@kms_dsc@dsc-fractional-bpp-with-bpc-ultrajoiner: - shard-lnl: NOTRUN -> [SKIP][64] ([Intel XE#8265]) +2 other tests skip [64]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-lnl-1/igt@kms_dsc@dsc-fractional-bpp-with-bpc-ultrajoiner.html * igt@kms_dsc@dsc-with-formats-ultrajoiner: - shard-ptl: NOTRUN -> [SKIP][65] ([Intel XE#5907]) +4 other tests skip [65]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-ptl-3/igt@kms_dsc@dsc-with-formats-ultrajoiner.html * igt@kms_fbc_dirty_rect@fbc-dirty-rectangle-out-visible-area: - shard-bmg: NOTRUN -> [SKIP][66] ([Intel XE#4422] / [Intel XE#7442]) [66]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-bmg-10/igt@kms_fbc_dirty_rect@fbc-dirty-rectangle-out-visible-area.html * igt@kms_feature_discovery@display-2x: - shard-ptl: NOTRUN -> [SKIP][67] ([Intel XE#7344]) [67]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-ptl-4/igt@kms_feature_discovery@display-2x.html * igt@kms_flip@2x-flip-vs-modeset: - shard-ptl: NOTRUN -> [SKIP][68] ([Intel XE#2316]) +8 other tests skip [68]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-ptl-6/igt@kms_flip@2x-flip-vs-modeset.html * igt@kms_flip@2x-plain-flip: - shard-lnl: NOTRUN -> [SKIP][69] ([Intel XE#1421]) +2 other tests skip [69]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-lnl-3/igt@kms_flip@2x-plain-flip.html * igt@kms_flip@flip-vs-absolute-wf_vblank-interruptible@c-hdmi-a3: - shard-bmg: NOTRUN -> [FAIL][70] ([Intel XE#5408] / [Intel XE#6266]) +1 other test fail [70]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-bmg-3/igt@kms_flip@flip-vs-absolute-wf_vblank-interruptible@c-hdmi-a3.html * igt@kms_flip@flip-vs-expired-vblank-interruptible: - shard-lnl: NOTRUN -> [FAIL][71] ([Intel XE#301]) +1 other test fail [71]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-lnl-3/igt@kms_flip@flip-vs-expired-vblank-interruptible.html * igt@kms_flip@flip-vs-expired-vblank-interruptible@d-dp2: - shard-bmg: [PASS][72] -> [FAIL][73] ([Intel XE#3321]) [72]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5921-42fb41a656d70e2226e00726a8fedbe4152639ff/shard-bmg-10/igt@kms_flip@flip-vs-expired-vblank-interruptible@d-dp2.html [73]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-bmg-3/igt@kms_flip@flip-vs-expired-vblank-interruptible@d-dp2.html * igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-64bpp-4tile-downscaling: - shard-ptl: NOTRUN -> [SKIP][74] ([Intel XE#5828]) +3 other tests skip [74]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-ptl-1/igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-64bpp-4tile-downscaling.html - shard-lnl: NOTRUN -> [SKIP][75] ([Intel XE#1397] / [Intel XE#1745] / [Intel XE#7385] / [Intel XE#9144]) [75]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-lnl-3/igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-64bpp-4tile-downscaling.html * igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-64bpp-4tile-downscaling@pipe-a-default-mode: - shard-lnl: NOTRUN -> [SKIP][76] ([Intel XE#1397] / [Intel XE#7385] / [Intel XE#9144]) [76]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-lnl-3/igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-64bpp-4tile-downscaling@pipe-a-default-mode.html * igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling: - shard-lnl: NOTRUN -> [SKIP][77] ([Intel XE#7178] / [Intel XE#7351]) +1 other test skip [77]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-lnl-1/igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling.html * igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling: - shard-ptl: NOTRUN -> [SKIP][78] ([Intel XE#7178]) +4 other tests skip [78]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-ptl-1/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling.html - shard-bmg: NOTRUN -> [SKIP][79] ([Intel XE#7178] / [Intel XE#7351]) [79]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-bmg-3/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling.html * igt@kms_flip_scaled_crc@flip-p016-linear-to-p016-linear-reflect-x: - shard-ptl: NOTRUN -> [SKIP][80] ([Intel XE#7179]) +1 other test skip [80]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-ptl-7/igt@kms_flip_scaled_crc@flip-p016-linear-to-p016-linear-reflect-x.html * igt@kms_frontbuffer_tracking@drrs-rgb101010-draw-mmap-wc: - shard-lnl: NOTRUN -> [SKIP][81] ([Intel XE#6312] / [Intel XE#651]) +7 other tests skip [81]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-lnl-1/igt@kms_frontbuffer_tracking@drrs-rgb101010-draw-mmap-wc.html * igt@kms_frontbuffer_tracking@drrs-rgb101010-draw-render: - shard-bmg: NOTRUN -> [SKIP][82] ([Intel XE#2311]) +14 other tests skip [82]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-bmg-10/igt@kms_frontbuffer_tracking@drrs-rgb101010-draw-render.html * igt@kms_frontbuffer_tracking@drrs-slowdraw: - shard-ptl: NOTRUN -> [SKIP][83] ([Intel XE#5800] / [Intel XE#6312]) +11 other tests skip [83]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-ptl-1/igt@kms_frontbuffer_tracking@drrs-slowdraw.html * igt@kms_frontbuffer_tracking@drrshdr-1p-primscrn-pri-indfb-draw-blt: - shard-ptl: NOTRUN -> [SKIP][84] ([Intel XE#6312]) +14 other tests skip [84]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-ptl-4/igt@kms_frontbuffer_tracking@drrshdr-1p-primscrn-pri-indfb-draw-blt.html * igt@kms_frontbuffer_tracking@fbc-2p-primscrn-indfb-plflip-blt: - shard-bmg: NOTRUN -> [SKIP][85] ([Intel XE#4141]) +1 other test skip [85]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-bmg-10/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-indfb-plflip-blt.html * igt@kms_frontbuffer_tracking@fbc-2p-primscrn-pri-shrfb-draw-mmap-wc: - shard-ptl: NOTRUN -> [SKIP][86] ([Intel XE#5812]) +87 other tests skip [86]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-ptl-6/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-pri-shrfb-draw-mmap-wc.html * igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-shrfb-draw-blt: - shard-lnl: NOTRUN -> [SKIP][87] ([Intel XE#656] / [Intel XE#7905]) +18 other tests skip [87]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-lnl-1/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-shrfb-draw-blt.html * igt@kms_frontbuffer_tracking@fbcdrrs-abgr161616f-draw-mmap-wc: - shard-ptl: NOTRUN -> [SKIP][88] ([Intel XE#7061] / [Intel XE#7356]) +5 other tests skip [88]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-ptl-1/igt@kms_frontbuffer_tracking@fbcdrrs-abgr161616f-draw-mmap-wc.html - shard-lnl: NOTRUN -> [SKIP][89] ([Intel XE#7061] / [Intel XE#7356]) +1 other test skip [89]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-lnl-3/igt@kms_frontbuffer_tracking@fbcdrrs-abgr161616f-draw-mmap-wc.html - shard-bmg: NOTRUN -> [SKIP][90] ([Intel XE#7061] / [Intel XE#7356]) +1 other test skip [90]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-bmg-3/igt@kms_frontbuffer_tracking@fbcdrrs-abgr161616f-draw-mmap-wc.html * igt@kms_frontbuffer_tracking@fbcdrrshdr-2p-primscrn-cur-indfb-draw-render: - shard-lnl: NOTRUN -> [SKIP][91] ([Intel XE#7905]) +22 other tests skip [91]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-lnl-3/igt@kms_frontbuffer_tracking@fbcdrrshdr-2p-primscrn-cur-indfb-draw-render.html * igt@kms_frontbuffer_tracking@fbcdrrshdr-tiling-linear: - shard-lnl: NOTRUN -> [SKIP][92] ([Intel XE#6312]) +5 other tests skip [92]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-lnl-1/igt@kms_frontbuffer_tracking@fbcdrrshdr-tiling-linear.html * igt@kms_frontbuffer_tracking@fbchdr-1p-primscrn-cur-indfb-draw-blt: - shard-lnl: NOTRUN -> [SKIP][93] ([Intel XE#7865]) +13 other tests skip [93]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-lnl-3/igt@kms_frontbuffer_tracking@fbchdr-1p-primscrn-cur-indfb-draw-blt.html * igt@kms_frontbuffer_tracking@fbchdr-abgr161616f-draw-render: - shard-ptl: NOTRUN -> [SKIP][94] ([Intel XE#7061]) +4 other tests skip [94]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-ptl-1/igt@kms_frontbuffer_tracking@fbchdr-abgr161616f-draw-render.html - shard-lnl: NOTRUN -> [SKIP][95] ([Intel XE#7061]) [95]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-lnl-3/igt@kms_frontbuffer_tracking@fbchdr-abgr161616f-draw-render.html * igt@kms_frontbuffer_tracking@fbchdr-rgb565-draw-mmap-wc: - shard-ptl: NOTRUN -> [SKIP][96] ([Intel XE#7865]) +27 other tests skip [96]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-ptl-4/igt@kms_frontbuffer_tracking@fbchdr-rgb565-draw-mmap-wc.html * igt@kms_frontbuffer_tracking@fbcpsr-tiling-y: - shard-ptl: NOTRUN -> [SKIP][97] ([Intel XE#5865] / [Intel XE#7399]) [97]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-ptl-5/igt@kms_frontbuffer_tracking@fbcpsr-tiling-y.html * igt@kms_frontbuffer_tracking@psrhdr-2p-primscrn-spr-indfb-move: - shard-bmg: NOTRUN -> [SKIP][98] ([Intel XE#2313]) +13 other tests skip [98]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-bmg-10/igt@kms_frontbuffer_tracking@psrhdr-2p-primscrn-spr-indfb-move.html * igt@kms_frontbuffer_tracking@psrhdr-argb161616f-draw-mmap-wc: - shard-bmg: NOTRUN -> [SKIP][99] ([Intel XE#7061]) +1 other test skip [99]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-bmg-10/igt@kms_frontbuffer_tracking@psrhdr-argb161616f-draw-mmap-wc.html * igt@kms_hdmi_audio_bw@audio-bw-hblank80: - shard-ptl: NOTRUN -> [SKIP][100] ([Intel XE#9312]) [100]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-ptl-3/igt@kms_hdmi_audio_bw@audio-bw-hblank80.html * igt@kms_hdr@invalid-hdr: - shard-bmg: [PASS][101] -> [SKIP][102] ([Intel XE#1503]) [101]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5921-42fb41a656d70e2226e00726a8fedbe4152639ff/shard-bmg-2/igt@kms_hdr@invalid-hdr.html [102]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-bmg-1/igt@kms_hdr@invalid-hdr.html * igt@kms_hdr@static-toggle-suspend: - shard-ptl: NOTRUN -> [SKIP][103] ([Intel XE#5917] / [Intel XE#6174]) [103]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-ptl-4/igt@kms_hdr@static-toggle-suspend.html * igt@kms_joiner@invalid-modeset-big-joiner: - shard-ptl: NOTRUN -> [SKIP][104] ([Intel XE#6901]) [104]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-ptl-6/igt@kms_joiner@invalid-modeset-big-joiner.html * igt@kms_joiner@invalid-modeset-force-big-joiner: - shard-lnl: NOTRUN -> [SKIP][105] ([Intel XE#7086] / [Intel XE#7390]) [105]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-lnl-3/igt@kms_joiner@invalid-modeset-force-big-joiner.html * igt@kms_joiner@invalid-modeset-ultra-joiner: - shard-ptl: NOTRUN -> [SKIP][106] ([Intel XE#6900]) +2 other tests skip [106]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-ptl-3/igt@kms_joiner@invalid-modeset-ultra-joiner.html * igt@kms_multipipe_modeset@basic-max-pipe-crc-check: - shard-ptl: NOTRUN -> [SKIP][107] ([Intel XE#7591]) [107]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-ptl-6/igt@kms_multipipe_modeset@basic-max-pipe-crc-check.html * igt@kms_pipe_stress@stress-xrgb8888-ytiled: - shard-bmg: NOTRUN -> [SKIP][108] ([Intel XE#4329] / [Intel XE#6912] / [Intel XE#7375]) [108]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-bmg-10/igt@kms_pipe_stress@stress-xrgb8888-ytiled.html * igt@kms_plane@pixel-format-4-tiled-dg2-mc-ccs-modifier-source-clamping: - shard-lnl: NOTRUN -> [SKIP][109] ([Intel XE#7283]) +2 other tests skip [109]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-lnl-1/igt@kms_plane@pixel-format-4-tiled-dg2-mc-ccs-modifier-source-clamping.html * igt@kms_plane@pixel-format-4-tiled-dg2-rc-ccs-cc-modifier: - shard-ptl: NOTRUN -> [SKIP][110] ([Intel XE#7283]) +4 other tests skip [110]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-ptl-4/igt@kms_plane@pixel-format-4-tiled-dg2-rc-ccs-cc-modifier.html * igt@kms_plane@pixel-format-y-tiled-gen12-rc-ccs-cc-modifier-source-clamping: - shard-bmg: NOTRUN -> [SKIP][111] ([Intel XE#7283]) [111]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-bmg-3/igt@kms_plane@pixel-format-y-tiled-gen12-rc-ccs-cc-modifier-source-clamping.html * igt@kms_plane_lowres@tiling-none@pipe-b-edp-1: - shard-ptl: NOTRUN -> [SKIP][112] ([Intel XE#5844]) +4 other tests skip [112]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-ptl-4/igt@kms_plane_lowres@tiling-none@pipe-b-edp-1.html * igt@kms_plane_lowres@tiling-x: - shard-ptl: NOTRUN -> [SKIP][113] ([Intel XE#5946]) [113]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-ptl-3/igt@kms_plane_lowres@tiling-x.html * igt@kms_plane_multiple@2x-tiling-none: - shard-ptl: NOTRUN -> [SKIP][114] ([Intel XE#4596] / [Intel XE#5854]) [114]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-ptl-5/igt@kms_plane_multiple@2x-tiling-none.html * igt@kms_plane_scaling@plane-downscale-factor-0-5-with-pixel-format@pipe-c: - shard-lnl: NOTRUN -> [SKIP][115] ([Intel XE#2763] / [Intel XE#6886]) +11 other tests skip [115]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-lnl-1/igt@kms_plane_scaling@plane-downscale-factor-0-5-with-pixel-format@pipe-c.html * igt@kms_plane_scaling@planes-downscale-factor-0-5@pipe-c: - shard-bmg: NOTRUN -> [SKIP][116] ([Intel XE#2763] / [Intel XE#6886]) +4 other tests skip [116]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-bmg-3/igt@kms_plane_scaling@planes-downscale-factor-0-5@pipe-c.html * igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-75@pipe-d: - shard-ptl: NOTRUN -> [SKIP][117] ([Intel XE#6886]) +9 other tests skip [117]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-ptl-6/igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-75@pipe-d.html * igt@kms_pm_rpm@dpms-mode-unset-non-lpsp: - shard-ptl: NOTRUN -> [SKIP][118] ([Intel XE#5810]) [118]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-ptl-3/igt@kms_pm_rpm@dpms-mode-unset-non-lpsp.html * igt@kms_pm_rpm@dpms-non-lpsp: - shard-ptl: NOTRUN -> [SKIP][119] ([Intel XE#5849]) [119]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-ptl-4/igt@kms_pm_rpm@dpms-non-lpsp.html * igt@kms_pm_rpm@modeset-non-lpsp: - shard-lnl: NOTRUN -> [SKIP][120] ([Intel XE#1439] / [Intel XE#3141] / [Intel XE#7383]) [120]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-lnl-1/igt@kms_pm_rpm@modeset-non-lpsp.html * igt@kms_psr2_sf@fbc-pr-overlay-plane-update-sf-dmg-area: - shard-ptl: NOTRUN -> [SKIP][121] ([Intel XE#7304]) +3 other tests skip [121]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-ptl-1/igt@kms_psr2_sf@fbc-pr-overlay-plane-update-sf-dmg-area.html - shard-lnl: NOTRUN -> [SKIP][122] ([Intel XE#2893] / [Intel XE#7304]) +1 other test skip [122]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-lnl-3/igt@kms_psr2_sf@fbc-pr-overlay-plane-update-sf-dmg-area.html * igt@kms_psr2_sf@fbc-psr2-cursor-plane-move-continuous-exceed-sf@pipe-a-edp-1: - shard-ptl: NOTRUN -> [SKIP][123] ([Intel XE#5858]) +1 other test skip [123]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-ptl-4/igt@kms_psr2_sf@fbc-psr2-cursor-plane-move-continuous-exceed-sf@pipe-a-edp-1.html * igt@kms_psr2_sf@fbc-psr2-overlay-plane-update-sf-dmg-area: - shard-lnl: NOTRUN -> [SKIP][124] ([Intel XE#2893] / [Intel XE#4608] / [Intel XE#7304]) [124]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-lnl-1/igt@kms_psr2_sf@fbc-psr2-overlay-plane-update-sf-dmg-area.html * igt@kms_psr2_sf@fbc-psr2-overlay-plane-update-sf-dmg-area@pipe-a-edp-1: - shard-lnl: NOTRUN -> [SKIP][125] ([Intel XE#4608]) [125]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-lnl-1/igt@kms_psr2_sf@fbc-psr2-overlay-plane-update-sf-dmg-area@pipe-a-edp-1.html * igt@kms_psr2_sf@fbc-psr2-overlay-plane-update-sf-dmg-area@pipe-b-edp-1: - shard-lnl: NOTRUN -> [SKIP][126] ([Intel XE#4608] / [Intel XE#7304]) [126]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-lnl-1/igt@kms_psr2_sf@fbc-psr2-overlay-plane-update-sf-dmg-area@pipe-b-edp-1.html * igt@kms_psr2_sf@fbc-psr2-plane-move-sf-dmg-area@pipe-b-edp-1: - shard-ptl: NOTRUN -> [SKIP][127] ([Intel XE#5858] / [Intel XE#7304]) +3 other tests skip [127]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-ptl-3/igt@kms_psr2_sf@fbc-psr2-plane-move-sf-dmg-area@pipe-b-edp-1.html * igt@kms_psr2_su@page_flip-xrgb8888: - shard-ptl: NOTRUN -> [SKIP][128] ([Intel XE#7413]) [128]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-ptl-6/igt@kms_psr2_su@page_flip-xrgb8888.html * igt@kms_psr@fbc-pr-dpms: - shard-ptl: NOTRUN -> [SKIP][129] ([Intel XE#1406]) +6 other tests skip [129]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-ptl-3/igt@kms_psr@fbc-pr-dpms.html * igt@kms_psr@fbc-pr-no-drrs: - shard-bmg: NOTRUN -> [SKIP][130] ([Intel XE#2234] / [Intel XE#2850]) +4 other tests skip [130]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-bmg-10/igt@kms_psr@fbc-pr-no-drrs.html * igt@kms_psr@fbc-psr2-dpms: - shard-ptl: NOTRUN -> [SKIP][131] ([Intel XE#1406] / [Intel XE#5835]) +1 other test skip [131]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-ptl-1/igt@kms_psr@fbc-psr2-dpms.html - shard-lnl: NOTRUN -> [SKIP][132] ([Intel XE#1406] / [Intel XE#7345]) +1 other test skip [132]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-lnl-3/igt@kms_psr@fbc-psr2-dpms.html * igt@kms_psr@fbc-psr2-dpms@edp-1: - shard-lnl: NOTRUN -> [SKIP][133] ([Intel XE#1406] / [Intel XE#4609] / [Intel XE#7345]) +1 other test skip [133]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-lnl-3/igt@kms_psr@fbc-psr2-dpms@edp-1.html * igt@kms_psr@pr-primary-page-flip: - shard-lnl: NOTRUN -> [SKIP][134] ([Intel XE#1406]) +1 other test skip [134]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-lnl-3/igt@kms_psr@pr-primary-page-flip.html * igt@kms_rotation_crc@sprite-rotation-270: - shard-ptl: NOTRUN -> [SKIP][135] ([Intel XE#5821]) +1 other test skip [135]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-ptl-4/igt@kms_rotation_crc@sprite-rotation-270.html * igt@kms_rotation_crc@sprite-rotation-90-pos-100-0: - shard-lnl: NOTRUN -> [SKIP][136] ([Intel XE#3414] / [Intel XE#3904] / [Intel XE#7342]) +1 other test skip [136]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-lnl-1/igt@kms_rotation_crc@sprite-rotation-90-pos-100-0.html * igt@kms_sharpness_filter@filter-suspend@pipe-a-edp-1-suspend: - shard-ptl: [PASS][137] -> [ABORT][138] ([Intel XE#9362]) +5 other tests abort [137]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5921-42fb41a656d70e2226e00726a8fedbe4152639ff/shard-ptl-7/igt@kms_sharpness_filter@filter-suspend@pipe-a-edp-1-suspend.html [138]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-ptl-1/igt@kms_sharpness_filter@filter-suspend@pipe-a-edp-1-suspend.html * igt@kms_sharpness_filter@invalid-filter-with-scaler: - shard-bmg: NOTRUN -> [SKIP][139] ([Intel XE#6503]) [139]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-bmg-10/igt@kms_sharpness_filter@invalid-filter-with-scaler.html * igt@kms_vblank@ts-continuation-dpms-suspend: - shard-bmg: [PASS][140] -> [DMESG-WARN][141] ([Intel XE#9365] / [Intel XE#9465]) [140]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5921-42fb41a656d70e2226e00726a8fedbe4152639ff/shard-bmg-1/igt@kms_vblank@ts-continuation-dpms-suspend.html [141]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-bmg-9/igt@kms_vblank@ts-continuation-dpms-suspend.html * igt@kms_vblank@ts-continuation-dpms-suspend@pipe-a-dp-2: - shard-bmg: [PASS][142] -> [DMESG-WARN][143] ([Intel XE#9365]) [142]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5921-42fb41a656d70e2226e00726a8fedbe4152639ff/shard-bmg-1/igt@kms_vblank@ts-continuation-dpms-suspend@pipe-a-dp-2.html [143]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-bmg-9/igt@kms_vblank@ts-continuation-dpms-suspend@pipe-a-dp-2.html * igt@kms_vrr@flip-basic: - shard-ptl: [PASS][144] -> [FAIL][145] ([Intel XE#4227] / [Intel XE#7397]) +1 other test fail [144]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5921-42fb41a656d70e2226e00726a8fedbe4152639ff/shard-ptl-5/igt@kms_vrr@flip-basic.html [145]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-ptl-7/igt@kms_vrr@flip-basic.html * igt@kms_vrr@flip-basic-fastset: - shard-ptl: NOTRUN -> [FAIL][146] ([Intel XE#4227] / [Intel XE#7397]) [146]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-ptl-1/igt@kms_vrr@flip-basic-fastset.html * igt@kms_vrr@flip-basic-fastset@pipe-a-edp-1: - shard-ptl: NOTRUN -> [FAIL][147] ([Intel XE#6293] / [Intel XE#7397]) [147]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-ptl-1/igt@kms_vrr@flip-basic-fastset@pipe-a-edp-1.html * igt@kms_vrr@flip-suspend: - shard-bmg: NOTRUN -> [SKIP][148] ([Intel XE#1499] / [Intel XE#9271]) [148]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-bmg-10/igt@kms_vrr@flip-suspend.html * igt@kms_vrr@seamless-rr-switch-vrr: - shard-lnl: NOTRUN -> [SKIP][149] ([Intel XE#1499] / [Intel XE#9271]) [149]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-lnl-1/igt@kms_vrr@seamless-rr-switch-vrr.html * igt@xe_ccs@suspend-resume: - shard-bmg: [PASS][150] -> [ABORT][151] ([Intel XE#9362] / [Intel XE#9425]) +1 other test abort [150]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5921-42fb41a656d70e2226e00726a8fedbe4152639ff/shard-bmg-9/igt@xe_ccs@suspend-resume.html [151]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-bmg-2/igt@xe_ccs@suspend-resume.html * igt@xe_ccs@vm-bind-fault-mode-decompress: - shard-ptl: NOTRUN -> [SKIP][152] ([Intel XE#7644]) [152]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-ptl-7/igt@xe_ccs@vm-bind-fault-mode-decompress.html * igt@xe_compute@ccs-mode-compute-kernel: - shard-ptl: NOTRUN -> [SKIP][153] ([Intel XE#6599]) [153]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-ptl-1/igt@xe_compute@ccs-mode-compute-kernel.html - shard-lnl: NOTRUN -> [SKIP][154] ([Intel XE#1447] / [Intel XE#7469]) [154]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-lnl-3/igt@xe_compute@ccs-mode-compute-kernel.html * igt@xe_create@create-big-vram: - shard-ptl: NOTRUN -> [SKIP][155] ([Intel XE#5853] / [Intel XE#7457]) [155]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-ptl-5/igt@xe_create@create-big-vram.html * igt@xe_cw_post_sync@walker-post-sync: - shard-ptl: NOTRUN -> [SKIP][156] ([Intel XE#8608]) [156]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-ptl-1/igt@xe_cw_post_sync@walker-post-sync.html - shard-lnl: NOTRUN -> [SKIP][157] ([Intel XE#8608]) [157]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-lnl-3/igt@xe_cw_post_sync@walker-post-sync.html * igt@xe_evict@evict-beng-cm-threads-large-multi-vm: - shard-ptl: NOTRUN -> [SKIP][158] ([Intel XE#5764]) +10 other tests skip [158]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-ptl-3/igt@xe_evict@evict-beng-cm-threads-large-multi-vm.html * igt@xe_evict@evict-beng-threads-large-multi-vm: - shard-lnl: NOTRUN -> [SKIP][159] ([Intel XE#6540] / [Intel XE#688]) +3 other tests skip [159]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-lnl-1/igt@xe_evict@evict-beng-threads-large-multi-vm.html * igt@xe_evict@evict-mixed-many-threads-small: - shard-bmg: [PASS][160] -> [INCOMPLETE][161] ([Intel XE#6321] / [Intel XE#8355]) [160]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5921-42fb41a656d70e2226e00726a8fedbe4152639ff/shard-bmg-3/igt@xe_evict@evict-mixed-many-threads-small.html [161]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-bmg-10/igt@xe_evict@evict-mixed-many-threads-small.html * igt@xe_evict@evict-small-multi-queue-priority: - shard-bmg: NOTRUN -> [SKIP][162] ([Intel XE#8370]) [162]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-bmg-10/igt@xe_evict@evict-small-multi-queue-priority.html * igt@xe_exec_balancer@many-virtual-userptr-rebind: - shard-ptl: NOTRUN -> [SKIP][163] ([Intel XE#7482]) +21 other tests skip [163]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-ptl-4/igt@xe_exec_balancer@many-virtual-userptr-rebind.html * igt@xe_exec_balancer@once-cm-parallel-userptr: - shard-lnl: NOTRUN -> [SKIP][164] ([Intel XE#7482]) +9 other tests skip [164]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-lnl-1/igt@xe_exec_balancer@once-cm-parallel-userptr.html * igt@xe_exec_basic@multigpu-no-exec-userptr: - shard-ptl: NOTRUN -> [SKIP][165] ([Intel XE#5575] / [Intel XE#7484]) +7 other tests skip [165]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-ptl-1/igt@xe_exec_basic@multigpu-no-exec-userptr.html - shard-lnl: NOTRUN -> [SKIP][166] ([Intel XE#1392]) +3 other tests skip [166]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-lnl-3/igt@xe_exec_basic@multigpu-no-exec-userptr.html * igt@xe_exec_basic@multigpu-once-basic-defer-bind: - shard-bmg: NOTRUN -> [SKIP][167] ([Intel XE#2322] / [Intel XE#7372]) +1 other test skip [167]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-bmg-10/igt@xe_exec_basic@multigpu-once-basic-defer-bind.html * igt@xe_exec_fault_mode@many-multi-queue-userptr-invalidate-race: - shard-lnl: NOTRUN -> [SKIP][168] ([Intel XE#8374]) +4 other tests skip [168]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-lnl-3/igt@xe_exec_fault_mode@many-multi-queue-userptr-invalidate-race.html * igt@xe_exec_fault_mode@once-multi-queue: - shard-bmg: NOTRUN -> [SKIP][169] ([Intel XE#8374]) [169]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-bmg-3/igt@xe_exec_fault_mode@once-multi-queue.html * igt@xe_exec_fault_mode@once-multi-queue-invalid-fault: - shard-ptl: NOTRUN -> [SKIP][170] ([Intel XE#8374]) +8 other tests skip [170]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-ptl-4/igt@xe_exec_fault_mode@once-multi-queue-invalid-fault.html * igt@xe_exec_mix_modes@exec-multi-queue-spinner-interrupted-lr: - shard-ptl: NOTRUN -> [SKIP][171] ([Intel XE#9003]) [171]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-ptl-4/igt@xe_exec_mix_modes@exec-multi-queue-spinner-interrupted-lr.html * igt@xe_exec_multi_queue@many-queues-preempt-mode-basic: - shard-lnl: NOTRUN -> [SKIP][172] ([Intel XE#8364]) +15 other tests skip [172]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-lnl-3/igt@xe_exec_multi_queue@many-queues-preempt-mode-basic.html * igt@xe_exec_multi_queue@one-queue-preempt-mode-priority: - shard-bmg: NOTRUN -> [SKIP][173] ([Intel XE#8364]) +6 other tests skip [173]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-bmg-10/igt@xe_exec_multi_queue@one-queue-preempt-mode-priority.html * igt@xe_exec_multi_queue@one-queue-preempt-mode-userptr: - shard-ptl: NOTRUN -> [SKIP][174] ([Intel XE#8364]) +33 other tests skip [174]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-ptl-4/igt@xe_exec_multi_queue@one-queue-preempt-mode-userptr.html * igt@xe_exec_reset@cm-multi-queue-close-fd: - shard-lnl: NOTRUN -> [SKIP][175] ([Intel XE#8369]) +1 other test skip [175]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-lnl-3/igt@xe_exec_reset@cm-multi-queue-close-fd.html - shard-bmg: NOTRUN -> [SKIP][176] ([Intel XE#8369]) [176]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-bmg-3/igt@xe_exec_reset@cm-multi-queue-close-fd.html * igt@xe_exec_reset@gt-reset-fault-injection: - shard-ptl: NOTRUN -> [DMESG-WARN][177] ([Intel XE#9130]) [177]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-ptl-4/igt@xe_exec_reset@gt-reset-fault-injection.html * igt@xe_exec_reset@multi-queue-long-spin-many-queue-switch: - shard-ptl: NOTRUN -> [SKIP][178] ([Intel XE#8369]) +2 other tests skip [178]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-ptl-4/igt@xe_exec_reset@multi-queue-long-spin-many-queue-switch.html * igt@xe_exec_threads@threads-multi-queue-cm-fd-userptr: - shard-bmg: NOTRUN -> [SKIP][179] ([Intel XE#8378]) +1 other test skip [179]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-bmg-10/igt@xe_exec_threads@threads-multi-queue-cm-fd-userptr.html * igt@xe_exec_threads@threads-multi-queue-shared-vm-userptr: - shard-ptl: NOTRUN -> [SKIP][180] ([Intel XE#8378]) +7 other tests skip [180]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-ptl-1/igt@xe_exec_threads@threads-multi-queue-shared-vm-userptr.html - shard-lnl: NOTRUN -> [SKIP][181] ([Intel XE#8378]) +3 other tests skip [181]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-lnl-3/igt@xe_exec_threads@threads-multi-queue-shared-vm-userptr.html * igt@xe_fault_injection@probe-fail-guc-xe_guc_ct_send_recv: - shard-bmg: [PASS][182] -> [ABORT][183] ([Intel XE#6652] / [Intel XE#9470]) [182]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5921-42fb41a656d70e2226e00726a8fedbe4152639ff/shard-bmg-1/igt@xe_fault_injection@probe-fail-guc-xe_guc_ct_send_recv.html [183]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-bmg-4/igt@xe_fault_injection@probe-fail-guc-xe_guc_ct_send_recv.html * igt@xe_gpgpu_fill@offset-4x4: - shard-ptl: NOTRUN -> [SKIP][184] ([Intel XE#7954]) [184]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-ptl-4/igt@xe_gpgpu_fill@offset-4x4.html * igt@xe_mmap@pci-membarrier: - shard-ptl: NOTRUN -> [SKIP][185] ([Intel XE#5100] / [Intel XE#7408]) +1 other test skip [185]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-ptl-3/igt@xe_mmap@pci-membarrier.html * igt@xe_module_load@load: - shard-lnl: ([PASS][186], [PASS][187], [PASS][188], [PASS][189], [PASS][190], [PASS][191], [PASS][192], [PASS][193], [PASS][194], [PASS][195], [PASS][196], [PASS][197], [PASS][198], [PASS][199], [PASS][200], [PASS][201], [PASS][202], [PASS][203], [PASS][204], [PASS][205], [PASS][206], [PASS][207], [PASS][208]) -> ([PASS][209], [PASS][210], [PASS][211], [PASS][212], [PASS][213], [PASS][214], [PASS][215], [PASS][216], [SKIP][217], [PASS][218], [PASS][219], [PASS][220], [PASS][221], [PASS][222], [PASS][223], [PASS][224], [PASS][225], [PASS][226], [PASS][227], [PASS][228], [PASS][229], [PASS][230], [PASS][231], [PASS][232], [PASS][233], [PASS][234]) ([Intel XE#378] / [Intel XE#7405]) [186]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5921-42fb41a656d70e2226e00726a8fedbe4152639ff/shard-lnl-8/igt@xe_module_load@load.html [187]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5921-42fb41a656d70e2226e00726a8fedbe4152639ff/shard-lnl-1/igt@xe_module_load@load.html [188]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5921-42fb41a656d70e2226e00726a8fedbe4152639ff/shard-lnl-1/igt@xe_module_load@load.html [189]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5921-42fb41a656d70e2226e00726a8fedbe4152639ff/shard-lnl-7/igt@xe_module_load@load.html [190]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5921-42fb41a656d70e2226e00726a8fedbe4152639ff/shard-lnl-4/igt@xe_module_load@load.html [191]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5921-42fb41a656d70e2226e00726a8fedbe4152639ff/shard-lnl-6/igt@xe_module_load@load.html [192]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5921-42fb41a656d70e2226e00726a8fedbe4152639ff/shard-lnl-3/igt@xe_module_load@load.html [193]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5921-42fb41a656d70e2226e00726a8fedbe4152639ff/shard-lnl-3/igt@xe_module_load@load.html [194]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5921-42fb41a656d70e2226e00726a8fedbe4152639ff/shard-lnl-4/igt@xe_module_load@load.html [195]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5921-42fb41a656d70e2226e00726a8fedbe4152639ff/shard-lnl-4/igt@xe_module_load@load.html [196]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5921-42fb41a656d70e2226e00726a8fedbe4152639ff/shard-lnl-5/igt@xe_module_load@load.html [197]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5921-42fb41a656d70e2226e00726a8fedbe4152639ff/shard-lnl-5/igt@xe_module_load@load.html [198]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5921-42fb41a656d70e2226e00726a8fedbe4152639ff/shard-lnl-3/igt@xe_module_load@load.html [199]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5921-42fb41a656d70e2226e00726a8fedbe4152639ff/shard-lnl-5/igt@xe_module_load@load.html [200]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5921-42fb41a656d70e2226e00726a8fedbe4152639ff/shard-lnl-1/igt@xe_module_load@load.html [201]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5921-42fb41a656d70e2226e00726a8fedbe4152639ff/shard-lnl-7/igt@xe_module_load@load.html [202]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5921-42fb41a656d70e2226e00726a8fedbe4152639ff/shard-lnl-7/igt@xe_module_load@load.html [203]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5921-42fb41a656d70e2226e00726a8fedbe4152639ff/shard-lnl-3/igt@xe_module_load@load.html [204]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5921-42fb41a656d70e2226e00726a8fedbe4152639ff/shard-lnl-2/igt@xe_module_load@load.html [205]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5921-42fb41a656d70e2226e00726a8fedbe4152639ff/shard-lnl-2/igt@xe_module_load@load.html [206]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5921-42fb41a656d70e2226e00726a8fedbe4152639ff/shard-lnl-2/igt@xe_module_load@load.html [207]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5921-42fb41a656d70e2226e00726a8fedbe4152639ff/shard-lnl-8/igt@xe_module_load@load.html [208]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5921-42fb41a656d70e2226e00726a8fedbe4152639ff/shard-lnl-8/igt@xe_module_load@load.html [209]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-lnl-3/igt@xe_module_load@load.html [210]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-lnl-1/igt@xe_module_load@load.html [211]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-lnl-1/igt@xe_module_load@load.html [212]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-lnl-8/igt@xe_module_load@load.html [213]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-lnl-6/igt@xe_module_load@load.html [214]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-lnl-6/igt@xe_module_load@load.html [215]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-lnl-6/igt@xe_module_load@load.html [216]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-lnl-8/igt@xe_module_load@load.html [217]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-lnl-1/igt@xe_module_load@load.html [218]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-lnl-1/igt@xe_module_load@load.html [219]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-lnl-3/igt@xe_module_load@load.html [220]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-lnl-3/igt@xe_module_load@load.html [221]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-lnl-5/igt@xe_module_load@load.html [222]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-lnl-5/igt@xe_module_load@load.html [223]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-lnl-5/igt@xe_module_load@load.html [224]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-lnl-2/igt@xe_module_load@load.html [225]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-lnl-4/igt@xe_module_load@load.html [226]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-lnl-4/igt@xe_module_load@load.html [227]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-lnl-4/igt@xe_module_load@load.html [228]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-lnl-8/igt@xe_module_load@load.html [229]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-lnl-1/igt@xe_module_load@load.html [230]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-lnl-2/igt@xe_module_load@load.html [231]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-lnl-2/igt@xe_module_load@load.html [232]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-lnl-7/igt@xe_module_load@load.html [233]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-lnl-7/igt@xe_module_load@load.html [234]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-lnl-7/igt@xe_module_load@load.html * igt@xe_multigpu_svm@mgpu-coherency-basic: - shard-lnl: NOTRUN -> [SKIP][235] ([Intel XE#6964]) [235]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-lnl-3/igt@xe_multigpu_svm@mgpu-coherency-basic.html * igt@xe_multigpu_svm@mgpu-xgpu-access-prefetch: - shard-ptl: NOTRUN -> [SKIP][236] ([Intel XE#6964]) +5 other tests skip [236]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-ptl-6/igt@xe_multigpu_svm@mgpu-xgpu-access-prefetch.html * igt@xe_page_reclaim@binds-large-split: - shard-ptl: NOTRUN -> [SKIP][237] ([Intel XE#7793]) [237]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-ptl-4/igt@xe_page_reclaim@binds-large-split.html * igt@xe_page_reclaim@many-vma-same-bo: - shard-bmg: NOTRUN -> [SKIP][238] ([Intel XE#7793]) [238]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-bmg-10/igt@xe_page_reclaim@many-vma-same-bo.html * igt@xe_pm@d3cold-multiple-execs: - shard-ptl: NOTRUN -> [SKIP][239] ([Intel XE#5741]) [239]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-ptl-7/igt@xe_pm@d3cold-multiple-execs.html * igt@xe_pm@s3-basic-exec: - shard-ptl: NOTRUN -> [SKIP][240] ([Intel XE#6867]) +2 other tests skip [240]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-ptl-1/igt@xe_pm@s3-basic-exec.html - shard-lnl: NOTRUN -> [SKIP][241] ([Intel XE#584] / [Intel XE#7369]) +1 other test skip [241]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-lnl-3/igt@xe_pm@s3-basic-exec.html * igt@xe_pm@s4-vm-bind-unbind-all: - shard-lnl: [PASS][242] -> [ABORT][243] ([Intel XE#9362]) [242]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5921-42fb41a656d70e2226e00726a8fedbe4152639ff/shard-lnl-5/igt@xe_pm@s4-vm-bind-unbind-all.html [243]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-lnl-3/igt@xe_pm@s4-vm-bind-unbind-all.html * igt@xe_pxp@pxp-stale-queue-post-suspend: - shard-ptl: NOTRUN -> [ABORT][244] ([Intel XE#9362]) [244]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-ptl-7/igt@xe_pxp@pxp-stale-queue-post-suspend.html * igt@xe_query@multigpu-query-oa-units: - shard-ptl: NOTRUN -> [SKIP][245] ([Intel XE#6019]) +3 other tests skip [245]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-ptl-1/igt@xe_query@multigpu-query-oa-units.html - shard-lnl: NOTRUN -> [SKIP][246] ([Intel XE#944]) +1 other test skip [246]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-lnl-3/igt@xe_query@multigpu-query-oa-units.html - shard-bmg: NOTRUN -> [SKIP][247] ([Intel XE#944]) [247]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-bmg-3/igt@xe_query@multigpu-query-oa-units.html * igt@xe_sriov_admin@bulk-exec-quantum-vfs-disabled: - shard-lnl: NOTRUN -> [SKIP][248] ([Intel XE#7174]) [248]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-lnl-1/igt@xe_sriov_admin@bulk-exec-quantum-vfs-disabled.html * igt@xe_sriov_auto_provisioning@fair-allocation: - shard-lnl: NOTRUN -> [SKIP][249] ([Intel XE#4130] / [Intel XE#7366]) [249]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-lnl-1/igt@xe_sriov_auto_provisioning@fair-allocation.html * igt@xe_sriov_flr@flr-vfs-parallel: - shard-lnl: NOTRUN -> [SKIP][250] ([Intel XE#4273]) [250]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-lnl-3/igt@xe_sriov_flr@flr-vfs-parallel.html * igt@xe_survivability@runtime-survivability: - shard-bmg: [PASS][251] -> [DMESG-WARN][252] ([Intel XE#8966] / [Intel XE#9365]) [251]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5921-42fb41a656d70e2226e00726a8fedbe4152639ff/shard-bmg-1/igt@xe_survivability@runtime-survivability.html [252]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-bmg-9/igt@xe_survivability@runtime-survivability.html - shard-ptl: NOTRUN -> [SKIP][253] ([Intel XE#8415] / [Intel XE#8432]) [253]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-ptl-7/igt@xe_survivability@runtime-survivability.html * igt@xe_vm@overcommit-fault-vram-lr: - shard-ptl: NOTRUN -> [SKIP][254] ([Intel XE#7892]) [254]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-ptl-4/igt@xe_vm@overcommit-fault-vram-lr.html * igt@xe_wedged@wedged-at-any-timeout: - shard-ptl: NOTRUN -> [DMESG-WARN][255] ([Intel XE#8963]) [255]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-ptl-6/igt@xe_wedged@wedged-at-any-timeout.html #### Possible fixes #### * igt@kms_async_flips@alternate-sync-async-flip: - shard-ptl: [FAIL][256] ([Intel XE#6078]) -> [PASS][257] +1 other test pass [256]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5921-42fb41a656d70e2226e00726a8fedbe4152639ff/shard-ptl-2/igt@kms_async_flips@alternate-sync-async-flip.html [257]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-ptl-5/igt@kms_async_flips@alternate-sync-async-flip.html * igt@kms_cursor_crc@cursor-suspend: - shard-bmg: [ABORT][258] ([Intel XE#9375]) -> [PASS][259] +1 other test pass [258]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5921-42fb41a656d70e2226e00726a8fedbe4152639ff/shard-bmg-3/igt@kms_cursor_crc@cursor-suspend.html [259]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-bmg-10/igt@kms_cursor_crc@cursor-suspend.html * igt@kms_flip@flip-vs-expired-vblank-interruptible@b-dp2: - shard-bmg: [FAIL][260] ([Intel XE#3321]) -> [PASS][261] [260]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5921-42fb41a656d70e2226e00726a8fedbe4152639ff/shard-bmg-10/igt@kms_flip@flip-vs-expired-vblank-interruptible@b-dp2.html [261]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-bmg-3/igt@kms_flip@flip-vs-expired-vblank-interruptible@b-dp2.html * igt@kms_hdr@bpc-switch-suspend: - shard-ptl: [ABORT][262] ([Intel XE#9362]) -> [PASS][263] +9 other tests pass [262]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5921-42fb41a656d70e2226e00726a8fedbe4152639ff/shard-ptl-8/igt@kms_hdr@bpc-switch-suspend.html [263]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-ptl-3/igt@kms_hdr@bpc-switch-suspend.html * igt@kms_setmode@basic-no-cpu-idle@pipe-a-hdmi-a-3: - shard-bmg: [FAIL][264] ([Intel XE#8618]) -> [PASS][265] +5 other tests pass [264]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5921-42fb41a656d70e2226e00726a8fedbe4152639ff/shard-bmg-6/igt@kms_setmode@basic-no-cpu-idle@pipe-a-hdmi-a-3.html [265]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-bmg-2/igt@kms_setmode@basic-no-cpu-idle@pipe-a-hdmi-a-3.html * igt@kms_vrr@flip-dpms@pipe-a-edp-1: - shard-ptl: [FAIL][266] ([Intel XE#4227] / [Intel XE#7397]) -> [PASS][267] +1 other test pass [266]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5921-42fb41a656d70e2226e00726a8fedbe4152639ff/shard-ptl-5/igt@kms_vrr@flip-dpms@pipe-a-edp-1.html [267]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-ptl-6/igt@kms_vrr@flip-dpms@pipe-a-edp-1.html * igt@xe_pmu@engine-activity-most-load-idle: - shard-bmg: [INCOMPLETE][268] -> [PASS][269] +1 other test pass [268]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5921-42fb41a656d70e2226e00726a8fedbe4152639ff/shard-bmg-10/igt@xe_pmu@engine-activity-most-load-idle.html [269]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-bmg-3/igt@xe_pmu@engine-activity-most-load-idle.html #### Warnings #### * igt@kms_tiled_display@basic-test-pattern-with-chamelium: - shard-bmg: [SKIP][270] ([Intel XE#2509] / [Intel XE#7437]) -> [SKIP][271] ([Intel XE#2426] / [Intel XE#5848]) [270]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5921-42fb41a656d70e2226e00726a8fedbe4152639ff/shard-bmg-5/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html [271]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/shard-bmg-8/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html [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#1428]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1428 [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#1499]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1499 [Intel XE#1503]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1503 [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#2252]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2252 [Intel XE#2311]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2311 [Intel XE#2313]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2313 [Intel XE#2316]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2316 [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#2426]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2426 [Intel XE#2509]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2509 [Intel XE#2652]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2652 [Intel XE#2724]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2724 [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#306]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/306 [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#3321]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3321 [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#367]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/367 [Intel XE#373]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/373 [Intel XE#378]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/378 [Intel XE#3904]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3904 [Intel XE#4130]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4130 [Intel XE#4141]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4141 [Intel XE#4227]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4227 [Intel XE#4273]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4273 [Intel XE#4329]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4329 [Intel XE#4422]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4422 [Intel XE#4596]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4596 [Intel XE#4608]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4608 [Intel XE#4609]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4609 [Intel XE#5100]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5100 [Intel XE#5408]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5408 [Intel XE#5575]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5575 [Intel XE#5741]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5741 [Intel XE#5764]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5764 [Intel XE#5765]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5765 [Intel XE#5800]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5800 [Intel XE#5808]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5808 [Intel XE#5810]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5810 [Intel XE#5812]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5812 [Intel XE#5821]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5821 [Intel XE#5822]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5822 [Intel XE#5823]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5823 [Intel XE#5824]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5824 [Intel XE#5828]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5828 [Intel XE#5835]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5835 [Intel XE#584]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/584 [Intel XE#5844]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5844 [Intel XE#5845]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5845 [Intel XE#5846]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5846 [Intel XE#5848]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5848 [Intel XE#5849]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5849 [Intel XE#5851]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5851 [Intel XE#5853]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5853 [Intel XE#5854]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5854 [Intel XE#5858]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5858 [Intel XE#5865]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5865 [Intel XE#5900]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5900 [Intel XE#5901]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5901 [Intel XE#5907]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5907 [Intel XE#5917]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5917 [Intel XE#5946]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5946 [Intel XE#5962]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5962 [Intel XE#6019]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6019 [Intel XE#6035]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6035 [Intel XE#6078]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6078 [Intel XE#6174]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6174 [Intel XE#6266]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6266 [Intel XE#6293]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6293 [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#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#6599]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6599 [Intel XE#6652]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6652 [Intel XE#6867]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6867 [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#6912]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6912 [Intel XE#6918]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6918 [Intel XE#6925]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6925 [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#7006]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7006 [Intel XE#7008]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7008 [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#7086]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7086 [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#7179]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7179 [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#7342]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7342 [Intel XE#7343]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7343 [Intel XE#7344]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7344 [Intel XE#7345]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7345 [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#7366]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7366 [Intel XE#7369]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7369 [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#7375]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7375 [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#7387]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7387 [Intel XE#7390]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7390 [Intel XE#7397]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7397 [Intel XE#7399]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7399 [Intel XE#7405]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7405 [Intel XE#7408]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7408 [Intel XE#7413]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7413 [Intel XE#7437]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7437 [Intel XE#7442]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7442 [Intel XE#7449]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7449 [Intel XE#7457]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7457 [Intel XE#7469]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7469 [Intel XE#7482]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7482 [Intel XE#7484]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7484 [Intel XE#7591]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7591 [Intel XE#7642]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7642 [Intel XE#7644]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7644 [Intel XE#7679]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7679 [Intel XE#7793]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7793 [Intel XE#7809]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7809 [Intel XE#7865]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7865 [Intel XE#7892]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7892 [Intel XE#7905]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7905 [Intel XE#7954]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7954 [Intel XE#8265]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8265 [Intel XE#8355]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8355 [Intel XE#8364]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8364 [Intel XE#8369]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8369 [Intel XE#8370]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8370 [Intel XE#8374]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8374 [Intel XE#8378]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8378 [Intel XE#8391]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8391 [Intel XE#8415]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8415 [Intel XE#8432]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8432 [Intel XE#8608]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8608 [Intel XE#8618]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8618 [Intel XE#8963]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8963 [Intel XE#8966]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8966 [Intel XE#9003]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9003 [Intel XE#9009]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9009 [Intel XE#9130]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9130 [Intel XE#9144]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9144 [Intel XE#9271]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9271 [Intel XE#9312]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9312 [Intel XE#9362]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9362 [Intel XE#9365]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9365 [Intel XE#9367]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9367 [Intel XE#9375]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9375 [Intel XE#9412]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9412 [Intel XE#9425]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9425 [Intel XE#944]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/944 [Intel XE#9463]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9463 [Intel XE#9465]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9465 [Intel XE#9470]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9470 [Intel XE#9527]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9527 [Intel XE#9528]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9528 [Intel XE#9534]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9534 Build changes ------------- * Linux: xe-5921-42fb41a656d70e2226e00726a8fedbe4152639ff -> xe-pw-173011v3 IGT_9138: 9138 xe-5921-42fb41a656d70e2226e00726a8fedbe4152639ff: 42fb41a656d70e2226e00726a8fedbe4152639ff xe-pw-173011v3: 173011v3 == Logs == For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173011v3/index.html [-- Attachment #2: Type: text/html, Size: 89453 bytes --] ^ permalink raw reply [flat|nested] 16+ messages in thread
end of thread, other threads:[~2026-10-12 20:46 UTC | newest] Thread overview: 16+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2026-10-10 9:06 [PATCH v4 0/5] Introduce xe_wedge Raag Jadav 2026-10-10 9:06 ` [PATCH v4 1/5] drm/xe/gt: Use GT ordered workqueue for wedging Raag Jadav 2026-10-10 9:17 ` sashiko-bot 2026-10-12 20:43 ` Matthew Brost 2026-10-10 9:06 ` [PATCH v4 2/5] drm/xe: Move xe_device_wedged_fini() registration to xe_device_probe_early() Raag Jadav 2026-10-10 9:06 ` [PATCH v4 3/5] drm/xe: Make xe_device_declare_wedged() IRQ safe Raag Jadav 2026-10-10 9:19 ` sashiko-bot 2026-10-12 15:09 ` Raag Jadav 2026-10-10 9:06 ` [PATCH v4 4/5] drm/xe: Introduce xe_wedge Raag Jadav 2026-10-12 20:46 ` Matthew Brost 2026-10-10 9:06 ` [PATCH v4 5/5] drm/xe/ras: Move xe_ras_process_errors() to xe_ras Raag Jadav 2026-10-10 9:28 ` sashiko-bot 2026-10-10 9:15 ` ✗ CI.checkpatch: warning for Introduce xe_wedge (rev3) Patchwork 2026-10-10 9:17 ` ✓ CI.KUnit: success " Patchwork 2026-10-10 10:06 ` ✓ Xe.CI.BAT: " Patchwork 2026-10-10 11:29 ` ✓ Xe.CI.FULL: " Patchwork
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox