* [PATCH v8 0/4] Introduce GT runtime suspend/resume
@ 2025-10-30 12:23 Raag Jadav
2025-10-30 12:23 ` [PATCH v8 1/4] drm/xe/vf: Update pause/unpause() helpers with VF naming Raag Jadav
` (6 more replies)
0 siblings, 7 replies; 16+ messages in thread
From: Raag Jadav @ 2025-10-30 12:23 UTC (permalink / raw)
To: lucas.demarchi, rodrigo.vivi
Cc: intel-xe, riana.tauro, daniele.ceraolospurio, matthew.brost,
michal.wajdeczko, badal.nilawar, Raag Jadav
v2: Drop redundant xe_gt_sanitize() and xe_guc_ct_stop() (Daniele)
Use runtime naming for guc helpers (Daniele)
Split xe_guc_ct_enable() helper (Daniele)
v3: Drop redundant logging, add kernel doc (Michal)
Use runtime naming for ct helpers (Michal)
v4: Split xe_guc_ct_enable() patch (Rodrigo)
Fix tags (Rodrigo)
v5: Include host_l2_vram workaround (Daniele)
Reuse xe_guc_submit_enable/disable() helpers (Daniele)
v6: Split sumbit_pause/unpause() helpers for VF and PF (Matthew Brost)
Assert on runtime suspend if VFs are enabled (Daniele)
v7: Add IS_SRIOV_VF() assert in VF helpers (Matthew Brost)
Use "vf" suffix for VF helpers (Michal)
Reword commit message (Matthew Brost)
v8: Add !IS_SRIOV_VF() assert in runtime suspend path (Matthew Brost)
Raag Jadav (4):
drm/xe/vf: Update pause/unpause() helpers with VF naming
drm/xe/guc_submit: Introduce pause/unpause() helpers for PF
drm/xe/pm: Assert on runtime suspend if VFs are enabled
drm/xe/gt: Introduce runtime suspend/resume
drivers/gpu/drm/xe/xe_gt.c | 60 +++++++++++++++++++++++++++++
drivers/gpu/drm/xe/xe_gt.h | 2 +
drivers/gpu/drm/xe/xe_gt_sriov_vf.c | 6 +--
drivers/gpu/drm/xe/xe_guc.c | 34 ++++++++++++++++
drivers/gpu/drm/xe/xe_guc.h | 2 +
drivers/gpu/drm/xe/xe_guc_ct.c | 27 +++++++++++++
drivers/gpu/drm/xe/xe_guc_ct.h | 2 +
drivers/gpu/drm/xe/xe_guc_submit.c | 38 +++++++++++++++++-
drivers/gpu/drm/xe/xe_guc_submit.h | 6 ++-
drivers/gpu/drm/xe/xe_pci.c | 9 +++++
drivers/gpu/drm/xe/xe_pm.c | 10 ++---
drivers/gpu/drm/xe/xe_uc.c | 28 ++++++++++++++
drivers/gpu/drm/xe/xe_uc.h | 2 +
13 files changed, 214 insertions(+), 12 deletions(-)
--
2.34.1
^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH v8 1/4] drm/xe/vf: Update pause/unpause() helpers with VF naming
2025-10-30 12:23 [PATCH v8 0/4] Introduce GT runtime suspend/resume Raag Jadav
@ 2025-10-30 12:23 ` Raag Jadav
2025-10-30 12:23 ` [PATCH v8 2/4] drm/xe/guc_submit: Introduce pause/unpause() helpers for PF Raag Jadav
` (5 subsequent siblings)
6 siblings, 0 replies; 16+ messages in thread
From: Raag Jadav @ 2025-10-30 12:23 UTC (permalink / raw)
To: lucas.demarchi, rodrigo.vivi
Cc: intel-xe, riana.tauro, daniele.ceraolospurio, matthew.brost,
michal.wajdeczko, badal.nilawar, Raag Jadav
Now that pause/unpause() helpers have been updated for VF migration
usecase, update their naming to match the functionality and while at it,
add IS_SRIOV_VF() assert to make sure they are not abused.
v7: Add IS_SRIOV_VF() assert (Matthew Brost)
Use "vf" suffix (Michal)
Suggested-by: Matthew Brost <matthew.brost@intel.com>
Signed-off-by: Raag Jadav <raag.jadav@intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
---
drivers/gpu/drm/xe/xe_gt_sriov_vf.c | 6 +++---
drivers/gpu/drm/xe/xe_guc_submit.c | 16 ++++++++++------
drivers/gpu/drm/xe/xe_guc_submit.h | 6 +++---
3 files changed, 16 insertions(+), 12 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_vf.c b/drivers/gpu/drm/xe/xe_gt_sriov_vf.c
index 4c73a077d314..97c29c55f885 100644
--- a/drivers/gpu/drm/xe/xe_gt_sriov_vf.c
+++ b/drivers/gpu/drm/xe/xe_gt_sriov_vf.c
@@ -1128,7 +1128,7 @@ static bool vf_post_migration_shutdown(struct xe_gt *gt)
spin_unlock_irq(>->sriov.vf.migration.lock);
xe_guc_ct_flush_and_stop(>->uc.guc.ct);
- xe_guc_submit_pause(>->uc.guc);
+ xe_guc_submit_pause_vf(>->uc.guc);
xe_tlb_inval_reset(>->tlb_inval);
return false;
@@ -1163,12 +1163,12 @@ static int vf_post_migration_fixups(struct xe_gt *gt)
static void vf_post_migration_rearm(struct xe_gt *gt)
{
xe_guc_ct_restart(>->uc.guc.ct);
- xe_guc_submit_unpause_prepare(>->uc.guc);
+ xe_guc_submit_unpause_prepare_vf(>->uc.guc);
}
static void vf_post_migration_kickstart(struct xe_gt *gt)
{
- xe_guc_submit_unpause(>->uc.guc);
+ xe_guc_submit_unpause_vf(>->uc.guc);
}
static void vf_post_migration_abort(struct xe_gt *gt)
diff --git a/drivers/gpu/drm/xe/xe_guc_submit.c b/drivers/gpu/drm/xe/xe_guc_submit.c
index d4ffdb71ef3d..d9073dde9467 100644
--- a/drivers/gpu/drm/xe/xe_guc_submit.c
+++ b/drivers/gpu/drm/xe/xe_guc_submit.c
@@ -2162,14 +2162,15 @@ static void guc_exec_queue_pause(struct xe_guc *guc, struct xe_exec_queue *q)
}
/**
- * xe_guc_submit_pause - Stop further runs of submission tasks on given GuC.
+ * xe_guc_submit_pause_vf - Stop further runs of submission tasks for VF.
* @guc: the &xe_guc struct instance whose scheduler is to be disabled
*/
-void xe_guc_submit_pause(struct xe_guc *guc)
+void xe_guc_submit_pause_vf(struct xe_guc *guc)
{
struct xe_exec_queue *q;
unsigned long index;
+ xe_gt_assert(guc_to_gt(guc), IS_SRIOV_VF(guc_to_xe(guc)));
xe_gt_assert(guc_to_gt(guc), vf_recovery(guc));
mutex_lock(&guc->submission_state.lock);
@@ -2259,14 +2260,15 @@ static void guc_exec_queue_unpause_prepare(struct xe_guc *guc,
}
/**
- * xe_guc_submit_unpause_prepare - Prepare unpause submission tasks on given GuC.
+ * xe_guc_submit_unpause_prepare_vf - Prepare unpause submission tasks for VF.
* @guc: the &xe_guc struct instance whose scheduler is to be prepared for unpause
*/
-void xe_guc_submit_unpause_prepare(struct xe_guc *guc)
+void xe_guc_submit_unpause_prepare_vf(struct xe_guc *guc)
{
struct xe_exec_queue *q;
unsigned long index;
+ xe_gt_assert(guc_to_gt(guc), IS_SRIOV_VF(guc_to_xe(guc)));
xe_gt_assert(guc_to_gt(guc), vf_recovery(guc));
mutex_lock(&guc->submission_state.lock);
@@ -2334,14 +2336,16 @@ static void guc_exec_queue_unpause(struct xe_guc *guc, struct xe_exec_queue *q)
}
/**
- * xe_guc_submit_unpause - Allow further runs of submission tasks on given GuC.
+ * xe_guc_submit_unpause_vf - Allow further runs of submission tasks for VF.
* @guc: the &xe_guc struct instance whose scheduler is to be enabled
*/
-void xe_guc_submit_unpause(struct xe_guc *guc)
+void xe_guc_submit_unpause_vf(struct xe_guc *guc)
{
struct xe_exec_queue *q;
unsigned long index;
+ xe_gt_assert(guc_to_gt(guc), IS_SRIOV_VF(guc_to_xe(guc)));
+
mutex_lock(&guc->submission_state.lock);
xa_for_each(&guc->submission_state.exec_queue_lookup, index, q) {
/*
diff --git a/drivers/gpu/drm/xe/xe_guc_submit.h b/drivers/gpu/drm/xe/xe_guc_submit.h
index b49a2748ec46..0e7996836131 100644
--- a/drivers/gpu/drm/xe/xe_guc_submit.h
+++ b/drivers/gpu/drm/xe/xe_guc_submit.h
@@ -20,10 +20,10 @@ int xe_guc_submit_reset_prepare(struct xe_guc *guc);
void xe_guc_submit_reset_wait(struct xe_guc *guc);
void xe_guc_submit_stop(struct xe_guc *guc);
int xe_guc_submit_start(struct xe_guc *guc);
-void xe_guc_submit_pause(struct xe_guc *guc);
-void xe_guc_submit_unpause(struct xe_guc *guc);
-void xe_guc_submit_unpause_prepare(struct xe_guc *guc);
void xe_guc_submit_pause_abort(struct xe_guc *guc);
+void xe_guc_submit_pause_vf(struct xe_guc *guc);
+void xe_guc_submit_unpause_vf(struct xe_guc *guc);
+void xe_guc_submit_unpause_prepare_vf(struct xe_guc *guc);
void xe_guc_submit_wedge(struct xe_guc *guc);
int xe_guc_read_stopped(struct xe_guc *guc);
--
2.34.1
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH v8 2/4] drm/xe/guc_submit: Introduce pause/unpause() helpers for PF
2025-10-30 12:23 [PATCH v8 0/4] Introduce GT runtime suspend/resume Raag Jadav
2025-10-30 12:23 ` [PATCH v8 1/4] drm/xe/vf: Update pause/unpause() helpers with VF naming Raag Jadav
@ 2025-10-30 12:23 ` Raag Jadav
2025-10-30 12:23 ` [PATCH v8 3/4] drm/xe/pm: Assert on runtime suspend if VFs are enabled Raag Jadav
` (4 subsequent siblings)
6 siblings, 0 replies; 16+ messages in thread
From: Raag Jadav @ 2025-10-30 12:23 UTC (permalink / raw)
To: lucas.demarchi, rodrigo.vivi
Cc: intel-xe, riana.tauro, daniele.ceraolospurio, matthew.brost,
michal.wajdeczko, badal.nilawar, Raag Jadav
Introduce pause/unpause() helpers which stop/start further runs of
submission tasks on given GuC and can be called from PF context. This
is in preparation of usecases where we simply need to stop/start the
scheduler without losing GuC state and don't require dealing with VF
migration.
v7: Reword commit message (Matthew Brost)
Signed-off-by: Raag Jadav <raag.jadav@intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
---
drivers/gpu/drm/xe/xe_guc_submit.c | 30 ++++++++++++++++++++++++++++++
drivers/gpu/drm/xe/xe_guc_submit.h | 2 ++
2 files changed, 32 insertions(+)
diff --git a/drivers/gpu/drm/xe/xe_guc_submit.c b/drivers/gpu/drm/xe/xe_guc_submit.c
index d9073dde9467..3147d691e29e 100644
--- a/drivers/gpu/drm/xe/xe_guc_submit.c
+++ b/drivers/gpu/drm/xe/xe_guc_submit.c
@@ -2161,6 +2161,21 @@ static void guc_exec_queue_pause(struct xe_guc *guc, struct xe_exec_queue *q)
}
}
+/**
+ * xe_guc_submit_pause - Stop further runs of submission tasks on given GuC.
+ * @guc: the &xe_guc struct instance whose scheduler is to be disabled
+ */
+void xe_guc_submit_pause(struct xe_guc *guc)
+{
+ struct xe_exec_queue *q;
+ unsigned long index;
+
+ mutex_lock(&guc->submission_state.lock);
+ xa_for_each(&guc->submission_state.exec_queue_lookup, index, q)
+ xe_sched_submission_stop(&q->guc->sched);
+ mutex_unlock(&guc->submission_state.lock);
+}
+
/**
* xe_guc_submit_pause_vf - Stop further runs of submission tasks for VF.
* @guc: the &xe_guc struct instance whose scheduler is to be disabled
@@ -2335,6 +2350,21 @@ static void guc_exec_queue_unpause(struct xe_guc *guc, struct xe_exec_queue *q)
xe_sched_submission_resume_tdr(sched);
}
+/**
+ * xe_guc_submit_unpause - Allow further runs of submission tasks on given GuC.
+ * @guc: the &xe_guc struct instance whose scheduler is to be enabled
+ */
+void xe_guc_submit_unpause(struct xe_guc *guc)
+{
+ struct xe_exec_queue *q;
+ unsigned long index;
+
+ mutex_lock(&guc->submission_state.lock);
+ xa_for_each(&guc->submission_state.exec_queue_lookup, index, q)
+ xe_sched_submission_start(&q->guc->sched);
+ mutex_unlock(&guc->submission_state.lock);
+}
+
/**
* xe_guc_submit_unpause_vf - Allow further runs of submission tasks for VF.
* @guc: the &xe_guc struct instance whose scheduler is to be enabled
diff --git a/drivers/gpu/drm/xe/xe_guc_submit.h b/drivers/gpu/drm/xe/xe_guc_submit.h
index 0e7996836131..100a7891b918 100644
--- a/drivers/gpu/drm/xe/xe_guc_submit.h
+++ b/drivers/gpu/drm/xe/xe_guc_submit.h
@@ -20,8 +20,10 @@ int xe_guc_submit_reset_prepare(struct xe_guc *guc);
void xe_guc_submit_reset_wait(struct xe_guc *guc);
void xe_guc_submit_stop(struct xe_guc *guc);
int xe_guc_submit_start(struct xe_guc *guc);
+void xe_guc_submit_pause(struct xe_guc *guc);
void xe_guc_submit_pause_abort(struct xe_guc *guc);
void xe_guc_submit_pause_vf(struct xe_guc *guc);
+void xe_guc_submit_unpause(struct xe_guc *guc);
void xe_guc_submit_unpause_vf(struct xe_guc *guc);
void xe_guc_submit_unpause_prepare_vf(struct xe_guc *guc);
void xe_guc_submit_wedge(struct xe_guc *guc);
--
2.34.1
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH v8 3/4] drm/xe/pm: Assert on runtime suspend if VFs are enabled
2025-10-30 12:23 [PATCH v8 0/4] Introduce GT runtime suspend/resume Raag Jadav
2025-10-30 12:23 ` [PATCH v8 1/4] drm/xe/vf: Update pause/unpause() helpers with VF naming Raag Jadav
2025-10-30 12:23 ` [PATCH v8 2/4] drm/xe/guc_submit: Introduce pause/unpause() helpers for PF Raag Jadav
@ 2025-10-30 12:23 ` Raag Jadav
2025-10-30 18:33 ` Daniele Ceraolo Spurio
2025-11-03 17:42 ` Matthew Brost
2025-10-30 12:23 ` [PATCH v8 4/4] drm/xe/gt: Introduce runtime suspend/resume Raag Jadav
` (3 subsequent siblings)
6 siblings, 2 replies; 16+ messages in thread
From: Raag Jadav @ 2025-10-30 12:23 UTC (permalink / raw)
To: lucas.demarchi, rodrigo.vivi
Cc: intel-xe, riana.tauro, daniele.ceraolospurio, matthew.brost,
michal.wajdeczko, badal.nilawar, Raag Jadav
We hold an additional reference to the runtime PM to keep PF in D0
during VFs lifetime, as our VFs do not implement the PM capability.
This means we should never be runtime suspending as long as VFs are
enabled.
v8: Add !IS_SRIOV_VF() assert (Matthew Brost)
Suggested-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Signed-off-by: Raag Jadav <raag.jadav@intel.com>
---
drivers/gpu/drm/xe/xe_pci.c | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/drivers/gpu/drm/xe/xe_pci.c b/drivers/gpu/drm/xe/xe_pci.c
index 6e59642e7820..1c37f4d91047 100644
--- a/drivers/gpu/drm/xe/xe_pci.c
+++ b/drivers/gpu/drm/xe/xe_pci.c
@@ -1152,6 +1152,15 @@ static int xe_pci_runtime_suspend(struct device *dev)
struct xe_device *xe = pdev_to_xe_device(pdev);
int err;
+ /*
+ * We hold an additional reference to the runtime PM to keep PF in D0
+ * during VFs lifetime, as our VFs do not implement the PM capability.
+ * This means we should never be runtime suspending as long as VFs are
+ * enabled.
+ */
+ xe_assert(xe, !IS_SRIOV_VF(xe));
+ xe_assert(xe, !pci_num_vf(pdev));
+
err = xe_pm_runtime_suspend(xe);
if (err)
return err;
--
2.34.1
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH v8 4/4] drm/xe/gt: Introduce runtime suspend/resume
2025-10-30 12:23 [PATCH v8 0/4] Introduce GT runtime suspend/resume Raag Jadav
` (2 preceding siblings ...)
2025-10-30 12:23 ` [PATCH v8 3/4] drm/xe/pm: Assert on runtime suspend if VFs are enabled Raag Jadav
@ 2025-10-30 12:23 ` Raag Jadav
2025-11-04 17:47 ` Matthew Brost
2025-11-03 9:06 ` ✓ CI.KUnit: success for Introduce GT runtime suspend/resume (rev6) Patchwork
` (2 subsequent siblings)
6 siblings, 1 reply; 16+ messages in thread
From: Raag Jadav @ 2025-10-30 12:23 UTC (permalink / raw)
To: lucas.demarchi, rodrigo.vivi
Cc: intel-xe, riana.tauro, daniele.ceraolospurio, matthew.brost,
michal.wajdeczko, badal.nilawar, Raag Jadav
If power state is retained between suspend/resume cycle, we don't need
to perform full GT re-initialization. Introduce runtime helpers for GT
which greatly reduce suspend/resume delay.
v2: Drop redundant xe_gt_sanitize() and xe_guc_ct_stop() (Daniele)
Use runtime naming for guc helpers (Daniele)
v3: Drop redundant logging, add kernel doc (Michal)
Use runtime naming for ct helpers (Michal)
v4: Fix tags (Rodrigo)
v5: Include host_l2_vram workaround (Daniele)
Reuse xe_guc_submit_enable/disable() helpers (Daniele)
Co-developed-by: Riana Tauro <riana.tauro@intel.com>
Signed-off-by: Riana Tauro <riana.tauro@intel.com>
Signed-off-by: Raag Jadav <raag.jadav@intel.com>
Acked-by: Matthew Brost <matthew.brost@intel.com>
Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
---
drivers/gpu/drm/xe/xe_gt.c | 60 ++++++++++++++++++++++++++++++++++
drivers/gpu/drm/xe/xe_gt.h | 2 ++
drivers/gpu/drm/xe/xe_guc.c | 34 +++++++++++++++++++
drivers/gpu/drm/xe/xe_guc.h | 2 ++
drivers/gpu/drm/xe/xe_guc_ct.c | 27 +++++++++++++++
drivers/gpu/drm/xe/xe_guc_ct.h | 2 ++
drivers/gpu/drm/xe/xe_pm.c | 10 +++---
drivers/gpu/drm/xe/xe_uc.c | 28 ++++++++++++++++
drivers/gpu/drm/xe/xe_uc.h | 2 ++
9 files changed, 162 insertions(+), 5 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_gt.c b/drivers/gpu/drm/xe/xe_gt.c
index 89808b33d0a8..0c300f8dd588 100644
--- a/drivers/gpu/drm/xe/xe_gt.c
+++ b/drivers/gpu/drm/xe/xe_gt.c
@@ -1008,6 +1008,66 @@ int xe_gt_resume(struct xe_gt *gt)
return err;
}
+/**
+ * xe_gt_runtime_suspend() - GT runtime suspend
+ * @gt: the GT object
+ *
+ * Return: 0 on success, negative error code otherwise.
+ */
+int xe_gt_runtime_suspend(struct xe_gt *gt)
+{
+ unsigned int fw_ref;
+ int err = -ETIMEDOUT;
+
+ xe_gt_dbg(gt, "runtime suspending\n");
+
+ fw_ref = xe_force_wake_get(gt_to_fw(gt), XE_FORCEWAKE_ALL);
+ if (!xe_force_wake_ref_has_domain(fw_ref, XE_FORCEWAKE_ALL))
+ goto err_force_wake;
+
+ xe_uc_runtime_suspend(>->uc);
+ xe_gt_disable_host_l2_vram(gt);
+
+ xe_force_wake_put(gt_to_fw(gt), fw_ref);
+ xe_gt_dbg(gt, "runtime suspended\n");
+
+ return 0;
+
+err_force_wake:
+ xe_force_wake_put(gt_to_fw(gt), fw_ref);
+ return err;
+}
+
+/**
+ * xe_gt_runtime_resume() - GT runtime resume
+ * @gt: the GT object
+ *
+ * Return: 0 on success, negative error code otherwise.
+ */
+int xe_gt_runtime_resume(struct xe_gt *gt)
+{
+ unsigned int fw_ref;
+ int err = -ETIMEDOUT;
+
+ xe_gt_dbg(gt, "runtime resuming\n");
+
+ fw_ref = xe_force_wake_get(gt_to_fw(gt), XE_FORCEWAKE_ALL);
+ if (!xe_force_wake_ref_has_domain(fw_ref, XE_FORCEWAKE_ALL))
+ goto err_force_wake;
+
+ xe_gt_enable_host_l2_vram(gt);
+ xe_uc_runtime_resume(>->uc);
+
+ xe_force_wake_put(gt_to_fw(gt), fw_ref);
+ xe_gt_dbg(gt, "runtime resumed\n");
+
+ return 0;
+
+err_force_wake:
+ xe_force_wake_put(gt_to_fw(gt), fw_ref);
+ return err;
+}
+
struct xe_hw_engine *xe_gt_hw_engine(struct xe_gt *gt,
enum xe_engine_class class,
u16 instance, bool logical)
diff --git a/drivers/gpu/drm/xe/xe_gt.h b/drivers/gpu/drm/xe/xe_gt.h
index 9d710049da45..94969ddd9d88 100644
--- a/drivers/gpu/drm/xe/xe_gt.h
+++ b/drivers/gpu/drm/xe/xe_gt.h
@@ -58,6 +58,8 @@ int xe_gt_suspend(struct xe_gt *gt);
void xe_gt_shutdown(struct xe_gt *gt);
int xe_gt_resume(struct xe_gt *gt);
void xe_gt_reset_async(struct xe_gt *gt);
+int xe_gt_runtime_resume(struct xe_gt *gt);
+int xe_gt_runtime_suspend(struct xe_gt *gt);
void xe_gt_sanitize(struct xe_gt *gt);
int xe_gt_sanitize_freq(struct xe_gt *gt);
diff --git a/drivers/gpu/drm/xe/xe_guc.c b/drivers/gpu/drm/xe/xe_guc.c
index ecc3e091b89e..ee35f1d8c21b 100644
--- a/drivers/gpu/drm/xe/xe_guc.c
+++ b/drivers/gpu/drm/xe/xe_guc.c
@@ -1607,6 +1607,40 @@ int xe_guc_start(struct xe_guc *guc)
return xe_guc_submit_start(guc);
}
+/**
+ * xe_guc_runtime_suspend() - GuC runtime suspend
+ * @guc: The GuC object
+ *
+ * Stop further runs of submission tasks on given GuC and runtime suspend
+ * GuC CT.
+ */
+void xe_guc_runtime_suspend(struct xe_guc *guc)
+{
+ xe_guc_submit_pause(guc);
+ xe_guc_submit_disable(guc);
+ xe_guc_ct_runtime_suspend(&guc->ct);
+}
+
+/**
+ * xe_guc_runtime_resume() - GuC runtime resume
+ * @guc: The GuC object
+ *
+ * Runtime resume GuC CT and allow further runs of submission tasks on
+ * given GuC.
+ */
+void xe_guc_runtime_resume(struct xe_guc *guc)
+{
+ /*
+ * Runtime PM flows are not applicable for VFs, so it's safe to
+ * directly enable IRQ.
+ */
+ guc_enable_irq(guc);
+
+ xe_guc_ct_runtime_resume(&guc->ct);
+ xe_guc_submit_enable(guc);
+ xe_guc_submit_unpause(guc);
+}
+
void xe_guc_print_info(struct xe_guc *guc, struct drm_printer *p)
{
struct xe_gt *gt = guc_to_gt(guc);
diff --git a/drivers/gpu/drm/xe/xe_guc.h b/drivers/gpu/drm/xe/xe_guc.h
index e2d4c5f44ae3..fdb08658d05a 100644
--- a/drivers/gpu/drm/xe/xe_guc.h
+++ b/drivers/gpu/drm/xe/xe_guc.h
@@ -35,6 +35,8 @@ int xe_guc_upload(struct xe_guc *guc);
int xe_guc_min_load_for_hwconfig(struct xe_guc *guc);
int xe_guc_enable_communication(struct xe_guc *guc);
int xe_guc_opt_in_features_enable(struct xe_guc *guc);
+void xe_guc_runtime_suspend(struct xe_guc *guc);
+void xe_guc_runtime_resume(struct xe_guc *guc);
int xe_guc_suspend(struct xe_guc *guc);
void xe_guc_notify(struct xe_guc *guc);
int xe_guc_auth_huc(struct xe_guc *guc, u32 rsa_addr);
diff --git a/drivers/gpu/drm/xe/xe_guc_ct.c b/drivers/gpu/drm/xe/xe_guc_ct.c
index e68953ef3a00..a7b8d16d4041 100644
--- a/drivers/gpu/drm/xe/xe_guc_ct.c
+++ b/drivers/gpu/drm/xe/xe_guc_ct.c
@@ -634,6 +634,33 @@ void xe_guc_ct_stop(struct xe_guc_ct *ct)
stop_g2h_handler(ct);
}
+/**
+ * xe_guc_ct_runtime_suspend() - GuC CT runtime suspend
+ * @ct: the &xe_guc_ct
+ *
+ * Set GuC CT to disabled state.
+ */
+void xe_guc_ct_runtime_suspend(struct xe_guc_ct *ct)
+{
+ /*
+ * Since we're already in runtime suspend path, we shouldn't have pending
+ * messages. But if there happen to be any, we'd probably want them to be
+ * thrown as errors for further investigation.
+ */
+ xe_guc_ct_disable(ct);
+}
+
+/**
+ * xe_guc_ct_runtime_resume() - GuC CT runtime resume
+ * @ct: the &xe_guc_ct
+ *
+ * Restart GuC CT and set it to enabled state.
+ */
+void xe_guc_ct_runtime_resume(struct xe_guc_ct *ct)
+{
+ xe_guc_ct_restart(ct);
+}
+
static bool h2g_has_room(struct xe_guc_ct *ct, u32 cmd_len)
{
struct guc_ctb *h2g = &ct->ctbs.h2g;
diff --git a/drivers/gpu/drm/xe/xe_guc_ct.h b/drivers/gpu/drm/xe/xe_guc_ct.h
index ca1ce2b3c354..5599939f8fe1 100644
--- a/drivers/gpu/drm/xe/xe_guc_ct.h
+++ b/drivers/gpu/drm/xe/xe_guc_ct.h
@@ -17,6 +17,8 @@ int xe_guc_ct_init_post_hwconfig(struct xe_guc_ct *ct);
int xe_guc_ct_enable(struct xe_guc_ct *ct);
int xe_guc_ct_restart(struct xe_guc_ct *ct);
void xe_guc_ct_disable(struct xe_guc_ct *ct);
+void xe_guc_ct_runtime_resume(struct xe_guc_ct *ct);
+void xe_guc_ct_runtime_suspend(struct xe_guc_ct *ct);
void xe_guc_ct_stop(struct xe_guc_ct *ct);
void xe_guc_ct_flush_and_stop(struct xe_guc_ct *ct);
void xe_guc_ct_fast_path(struct xe_guc_ct *ct);
diff --git a/drivers/gpu/drm/xe/xe_pm.c b/drivers/gpu/drm/xe/xe_pm.c
index 7b089e6fb63f..56e1351776c0 100644
--- a/drivers/gpu/drm/xe/xe_pm.c
+++ b/drivers/gpu/drm/xe/xe_pm.c
@@ -591,7 +591,7 @@ int xe_pm_runtime_suspend(struct xe_device *xe)
}
for_each_gt(gt, xe, id) {
- err = xe_gt_suspend(gt);
+ err = xe->d3cold.allowed ? xe_gt_suspend(gt) : xe_gt_runtime_suspend(gt);
if (err)
goto out_resume;
}
@@ -633,10 +633,10 @@ int xe_pm_runtime_resume(struct xe_device *xe)
xe_rpm_lockmap_acquire(xe);
- for_each_gt(gt, xe, id)
- xe_gt_idle_disable_c6(gt);
-
if (xe->d3cold.allowed) {
+ for_each_gt(gt, xe, id)
+ xe_gt_idle_disable_c6(gt);
+
err = xe_pcode_ready(xe, true);
if (err)
goto out;
@@ -657,7 +657,7 @@ int xe_pm_runtime_resume(struct xe_device *xe)
xe_irq_resume(xe);
for_each_gt(gt, xe, id)
- xe_gt_resume(gt);
+ xe->d3cold.allowed ? xe_gt_resume(gt) : xe_gt_runtime_resume(gt);
xe_display_pm_runtime_resume(xe);
diff --git a/drivers/gpu/drm/xe/xe_uc.c b/drivers/gpu/drm/xe/xe_uc.c
index 465bda355443..6a58b33248f5 100644
--- a/drivers/gpu/drm/xe/xe_uc.c
+++ b/drivers/gpu/drm/xe/xe_uc.c
@@ -301,6 +301,34 @@ int xe_uc_suspend(struct xe_uc *uc)
return xe_guc_suspend(&uc->guc);
}
+/**
+ * xe_uc_runtime_suspend() - UC runtime suspend
+ * @uc: the UC object
+ *
+ * Runtime suspend all UCs.
+ */
+void xe_uc_runtime_suspend(struct xe_uc *uc)
+{
+ if (!xe_device_uc_enabled(uc_to_xe(uc)))
+ return;
+
+ xe_guc_runtime_suspend(&uc->guc);
+}
+
+/**
+ * xe_uc_runtime_resume() - UC runtime resume
+ * @uc: the UC object
+ *
+ * Runtime resume all UCs.
+ */
+void xe_uc_runtime_resume(struct xe_uc *uc)
+{
+ if (!xe_device_uc_enabled(uc_to_xe(uc)))
+ return;
+
+ xe_guc_runtime_resume(&uc->guc);
+}
+
/**
* xe_uc_declare_wedged() - Declare UC wedged
* @uc: the UC object
diff --git a/drivers/gpu/drm/xe/xe_uc.h b/drivers/gpu/drm/xe/xe_uc.h
index 21c9306098cf..5398da1a8097 100644
--- a/drivers/gpu/drm/xe/xe_uc.h
+++ b/drivers/gpu/drm/xe/xe_uc.h
@@ -14,6 +14,8 @@ int xe_uc_init_post_hwconfig(struct xe_uc *uc);
int xe_uc_load_hw(struct xe_uc *uc);
void xe_uc_gucrc_disable(struct xe_uc *uc);
int xe_uc_reset_prepare(struct xe_uc *uc);
+void xe_uc_runtime_resume(struct xe_uc *uc);
+void xe_uc_runtime_suspend(struct xe_uc *uc);
void xe_uc_stop_prepare(struct xe_uc *uc);
void xe_uc_stop(struct xe_uc *uc);
int xe_uc_start(struct xe_uc *uc);
--
2.34.1
^ permalink raw reply related [flat|nested] 16+ messages in thread
* Re: [PATCH v8 3/4] drm/xe/pm: Assert on runtime suspend if VFs are enabled
2025-10-30 12:23 ` [PATCH v8 3/4] drm/xe/pm: Assert on runtime suspend if VFs are enabled Raag Jadav
@ 2025-10-30 18:33 ` Daniele Ceraolo Spurio
2025-10-31 15:04 ` Raag Jadav
2025-11-03 17:42 ` Matthew Brost
1 sibling, 1 reply; 16+ messages in thread
From: Daniele Ceraolo Spurio @ 2025-10-30 18:33 UTC (permalink / raw)
To: Raag Jadav, lucas.demarchi, rodrigo.vivi
Cc: intel-xe, riana.tauro, matthew.brost, michal.wajdeczko,
badal.nilawar
On 10/30/2025 5:23 AM, Raag Jadav wrote:
> We hold an additional reference to the runtime PM to keep PF in D0
> during VFs lifetime, as our VFs do not implement the PM capability.
> This means we should never be runtime suspending as long as VFs are
> enabled.
>
> v8: Add !IS_SRIOV_VF() assert (Matthew Brost)
>
> Suggested-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
> Signed-off-by: Raag Jadav <raag.jadav@intel.com>
Reviewed-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Daniele
> ---
> drivers/gpu/drm/xe/xe_pci.c | 9 +++++++++
> 1 file changed, 9 insertions(+)
>
> diff --git a/drivers/gpu/drm/xe/xe_pci.c b/drivers/gpu/drm/xe/xe_pci.c
> index 6e59642e7820..1c37f4d91047 100644
> --- a/drivers/gpu/drm/xe/xe_pci.c
> +++ b/drivers/gpu/drm/xe/xe_pci.c
> @@ -1152,6 +1152,15 @@ static int xe_pci_runtime_suspend(struct device *dev)
> struct xe_device *xe = pdev_to_xe_device(pdev);
> int err;
>
> + /*
> + * We hold an additional reference to the runtime PM to keep PF in D0
> + * during VFs lifetime, as our VFs do not implement the PM capability.
> + * This means we should never be runtime suspending as long as VFs are
> + * enabled.
> + */
> + xe_assert(xe, !IS_SRIOV_VF(xe));
> + xe_assert(xe, !pci_num_vf(pdev));
> +
> err = xe_pm_runtime_suspend(xe);
> if (err)
> return err;
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH v8 3/4] drm/xe/pm: Assert on runtime suspend if VFs are enabled
2025-10-30 18:33 ` Daniele Ceraolo Spurio
@ 2025-10-31 15:04 ` Raag Jadav
2025-11-04 11:15 ` Raag Jadav
0 siblings, 1 reply; 16+ messages in thread
From: Raag Jadav @ 2025-10-31 15:04 UTC (permalink / raw)
To: Daniele Ceraolo Spurio
Cc: lucas.demarchi, rodrigo.vivi, intel-xe, riana.tauro,
matthew.brost, michal.wajdeczko, badal.nilawar
On Thu, Oct 30, 2025 at 11:33:38AM -0700, Daniele Ceraolo Spurio wrote:
> On 10/30/2025 5:23 AM, Raag Jadav wrote:
> > We hold an additional reference to the runtime PM to keep PF in D0
> > during VFs lifetime, as our VFs do not implement the PM capability.
> > This means we should never be runtime suspending as long as VFs are
> > enabled.
> >
> > v8: Add !IS_SRIOV_VF() assert (Matthew Brost)
> >
> > Suggested-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
> > Signed-off-by: Raag Jadav <raag.jadav@intel.com>
>
> Reviewed-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Thank you.
So I'm guessing this series is good to go?
Raag
> > ---
> > drivers/gpu/drm/xe/xe_pci.c | 9 +++++++++
> > 1 file changed, 9 insertions(+)
> >
> > diff --git a/drivers/gpu/drm/xe/xe_pci.c b/drivers/gpu/drm/xe/xe_pci.c
> > index 6e59642e7820..1c37f4d91047 100644
> > --- a/drivers/gpu/drm/xe/xe_pci.c
> > +++ b/drivers/gpu/drm/xe/xe_pci.c
> > @@ -1152,6 +1152,15 @@ static int xe_pci_runtime_suspend(struct device *dev)
> > struct xe_device *xe = pdev_to_xe_device(pdev);
> > int err;
> > + /*
> > + * We hold an additional reference to the runtime PM to keep PF in D0
> > + * during VFs lifetime, as our VFs do not implement the PM capability.
> > + * This means we should never be runtime suspending as long as VFs are
> > + * enabled.
> > + */
> > + xe_assert(xe, !IS_SRIOV_VF(xe));
> > + xe_assert(xe, !pci_num_vf(pdev));
> > +
> > err = xe_pm_runtime_suspend(xe);
> > if (err)
> > return err;
>
^ permalink raw reply [flat|nested] 16+ messages in thread
* ✓ CI.KUnit: success for Introduce GT runtime suspend/resume (rev6)
2025-10-30 12:23 [PATCH v8 0/4] Introduce GT runtime suspend/resume Raag Jadav
` (3 preceding siblings ...)
2025-10-30 12:23 ` [PATCH v8 4/4] drm/xe/gt: Introduce runtime suspend/resume Raag Jadav
@ 2025-11-03 9:06 ` Patchwork
2025-11-03 10:14 ` ✓ Xe.CI.BAT: " Patchwork
2025-11-03 11:38 ` ✗ Xe.CI.Full: failure " Patchwork
6 siblings, 0 replies; 16+ messages in thread
From: Patchwork @ 2025-11-03 9:06 UTC (permalink / raw)
To: Raag Jadav; +Cc: intel-xe
== Series Details ==
Series: Introduce GT runtime suspend/resume (rev6)
URL : https://patchwork.freedesktop.org/series/154017/
State : success
== Summary ==
+ trap cleanup EXIT
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/xe/.kunitconfig
[09:05:20] Configuring KUnit Kernel ...
Generating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[09:05:24] 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:05:54] Starting KUnit Kernel (1/1)...
[09:05:54] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[09:05:55] ================== guc_buf (11 subtests) ===================
[09:05:55] [PASSED] test_smallest
[09:05:55] [PASSED] test_largest
[09:05:55] [PASSED] test_granular
[09:05:55] [PASSED] test_unique
[09:05:55] [PASSED] test_overlap
[09:05:55] [PASSED] test_reusable
[09:05:55] [PASSED] test_too_big
[09:05:55] [PASSED] test_flush
[09:05:55] [PASSED] test_lookup
[09:05:55] [PASSED] test_data
[09:05:55] [PASSED] test_class
[09:05:55] ===================== [PASSED] guc_buf =====================
[09:05:55] =================== guc_dbm (7 subtests) ===================
[09:05:55] [PASSED] test_empty
[09:05:55] [PASSED] test_default
[09:05:55] ======================== test_size ========================
[09:05:55] [PASSED] 4
[09:05:55] [PASSED] 8
[09:05:55] [PASSED] 32
[09:05:55] [PASSED] 256
[09:05:55] ==================== [PASSED] test_size ====================
[09:05:55] ======================= test_reuse ========================
[09:05:55] [PASSED] 4
[09:05:55] [PASSED] 8
[09:05:55] [PASSED] 32
[09:05:55] [PASSED] 256
[09:05:55] =================== [PASSED] test_reuse ====================
[09:05:55] =================== test_range_overlap ====================
[09:05:55] [PASSED] 4
[09:05:55] [PASSED] 8
[09:05:55] [PASSED] 32
[09:05:55] [PASSED] 256
[09:05:55] =============== [PASSED] test_range_overlap ================
[09:05:55] =================== test_range_compact ====================
[09:05:55] [PASSED] 4
[09:05:55] [PASSED] 8
[09:05:55] [PASSED] 32
[09:05:55] [PASSED] 256
[09:05:55] =============== [PASSED] test_range_compact ================
[09:05:55] ==================== test_range_spare =====================
[09:05:55] [PASSED] 4
[09:05:55] [PASSED] 8
[09:05:55] [PASSED] 32
[09:05:55] [PASSED] 256
[09:05:55] ================ [PASSED] test_range_spare =================
[09:05:55] ===================== [PASSED] guc_dbm =====================
[09:05:55] =================== guc_idm (6 subtests) ===================
[09:05:55] [PASSED] bad_init
[09:05:55] [PASSED] no_init
[09:05:55] [PASSED] init_fini
[09:05:55] [PASSED] check_used
[09:05:55] [PASSED] check_quota
[09:05:55] [PASSED] check_all
[09:05:55] ===================== [PASSED] guc_idm =====================
[09:05:55] ================== no_relay (3 subtests) ===================
[09:05:55] [PASSED] xe_drops_guc2pf_if_not_ready
[09:05:55] [PASSED] xe_drops_guc2vf_if_not_ready
[09:05:55] [PASSED] xe_rejects_send_if_not_ready
[09:05:55] ==================== [PASSED] no_relay =====================
[09:05:55] ================== pf_relay (14 subtests) ==================
[09:05:55] [PASSED] pf_rejects_guc2pf_too_short
[09:05:55] [PASSED] pf_rejects_guc2pf_too_long
[09:05:55] [PASSED] pf_rejects_guc2pf_no_payload
[09:05:55] [PASSED] pf_fails_no_payload
[09:05:55] [PASSED] pf_fails_bad_origin
[09:05:55] [PASSED] pf_fails_bad_type
[09:05:55] [PASSED] pf_txn_reports_error
[09:05:55] [PASSED] pf_txn_sends_pf2guc
[09:05:55] [PASSED] pf_sends_pf2guc
[09:05:55] [SKIPPED] pf_loopback_nop
[09:05:55] [SKIPPED] pf_loopback_echo
[09:05:55] [SKIPPED] pf_loopback_fail
[09:05:55] [SKIPPED] pf_loopback_busy
[09:05:55] [SKIPPED] pf_loopback_retry
[09:05:55] ==================== [PASSED] pf_relay =====================
[09:05:55] ================== vf_relay (3 subtests) ===================
[09:05:55] [PASSED] vf_rejects_guc2vf_too_short
[09:05:55] [PASSED] vf_rejects_guc2vf_too_long
[09:05:55] [PASSED] vf_rejects_guc2vf_no_payload
[09:05:55] ==================== [PASSED] vf_relay =====================
[09:05:55] ===================== lmtt (1 subtest) =====================
[09:05:55] ======================== test_ops =========================
[09:05:55] [PASSED] 2-level
[09:05:55] [PASSED] multi-level
[09:05:55] ==================== [PASSED] test_ops =====================
[09:05:55] ====================== [PASSED] lmtt =======================
[09:05:55] ================= pf_service (11 subtests) =================
[09:05:55] [PASSED] pf_negotiate_any
[09:05:55] [PASSED] pf_negotiate_base_match
[09:05:55] [PASSED] pf_negotiate_base_newer
[09:05:55] [PASSED] pf_negotiate_base_next
[09:05:55] [SKIPPED] pf_negotiate_base_older
[09:05:55] [PASSED] pf_negotiate_base_prev
[09:05:55] [PASSED] pf_negotiate_latest_match
[09:05:55] [PASSED] pf_negotiate_latest_newer
[09:05:55] [PASSED] pf_negotiate_latest_next
[09:05:55] [SKIPPED] pf_negotiate_latest_older
[09:05:55] [SKIPPED] pf_negotiate_latest_prev
[09:05:55] =================== [PASSED] pf_service ====================
[09:05:55] ================= xe_guc_g2g (2 subtests) ==================
[09:05:55] ============== xe_live_guc_g2g_kunit_default ==============
[09:05:55] ========= [SKIPPED] xe_live_guc_g2g_kunit_default ==========
[09:05:55] ============== xe_live_guc_g2g_kunit_allmem ===============
[09:05:55] ========== [SKIPPED] xe_live_guc_g2g_kunit_allmem ==========
[09:05:55] =================== [SKIPPED] xe_guc_g2g ===================
[09:05:55] =================== xe_mocs (2 subtests) ===================
[09:05:55] ================ xe_live_mocs_kernel_kunit ================
[09:05:55] =========== [SKIPPED] xe_live_mocs_kernel_kunit ============
[09:05:55] ================ xe_live_mocs_reset_kunit =================
[09:05:55] ============ [SKIPPED] xe_live_mocs_reset_kunit ============
[09:05:55] ==================== [SKIPPED] xe_mocs =====================
[09:05:55] ================= xe_migrate (2 subtests) ==================
[09:05:55] ================= xe_migrate_sanity_kunit =================
[09:05:55] ============ [SKIPPED] xe_migrate_sanity_kunit =============
[09:05:55] ================== xe_validate_ccs_kunit ==================
[09:05:55] ============= [SKIPPED] xe_validate_ccs_kunit ==============
[09:05:55] =================== [SKIPPED] xe_migrate ===================
[09:05:55] ================== xe_dma_buf (1 subtest) ==================
[09:05:55] ==================== xe_dma_buf_kunit =====================
[09:05:55] ================ [SKIPPED] xe_dma_buf_kunit ================
[09:05:55] =================== [SKIPPED] xe_dma_buf ===================
[09:05:55] ================= xe_bo_shrink (1 subtest) =================
[09:05:55] =================== xe_bo_shrink_kunit ====================
[09:05:55] =============== [SKIPPED] xe_bo_shrink_kunit ===============
[09:05:55] ================== [SKIPPED] xe_bo_shrink ==================
[09:05:55] ==================== xe_bo (2 subtests) ====================
[09:05:55] ================== xe_ccs_migrate_kunit ===================
[09:05:55] ============== [SKIPPED] xe_ccs_migrate_kunit ==============
[09:05:55] ==================== xe_bo_evict_kunit ====================
[09:05:55] =============== [SKIPPED] xe_bo_evict_kunit ================
[09:05:55] ===================== [SKIPPED] xe_bo ======================
[09:05:55] ==================== args (11 subtests) ====================
[09:05:55] [PASSED] count_args_test
[09:05:55] [PASSED] call_args_example
[09:05:55] [PASSED] call_args_test
[09:05:55] [PASSED] drop_first_arg_example
[09:05:55] [PASSED] drop_first_arg_test
[09:05:55] [PASSED] first_arg_example
[09:05:55] [PASSED] first_arg_test
[09:05:55] [PASSED] last_arg_example
[09:05:55] [PASSED] last_arg_test
[09:05:55] [PASSED] pick_arg_example
[09:05:55] [PASSED] sep_comma_example
[09:05:55] ====================== [PASSED] args =======================
[09:05:55] =================== xe_pci (3 subtests) ====================
[09:05:55] ==================== check_graphics_ip ====================
[09:05:55] [PASSED] 12.00 Xe_LP
[09:05:55] [PASSED] 12.10 Xe_LP+
[09:05:55] [PASSED] 12.55 Xe_HPG
[09:05:55] [PASSED] 12.60 Xe_HPC
[09:05:55] [PASSED] 12.70 Xe_LPG
[09:05:55] [PASSED] 12.71 Xe_LPG
[09:05:55] [PASSED] 12.74 Xe_LPG+
[09:05:55] [PASSED] 20.01 Xe2_HPG
[09:05:55] [PASSED] 20.02 Xe2_HPG
[09:05:55] [PASSED] 20.04 Xe2_LPG
[09:05:55] [PASSED] 30.00 Xe3_LPG
[09:05:55] [PASSED] 30.01 Xe3_LPG
[09:05:55] [PASSED] 30.03 Xe3_LPG
[09:05:55] [PASSED] 30.04 Xe3_LPG
[09:05:55] [PASSED] 30.05 Xe3_LPG
[09:05:55] [PASSED] 35.11 Xe3p_XPC
[09:05:55] ================ [PASSED] check_graphics_ip ================
[09:05:55] ===================== check_media_ip ======================
[09:05:55] [PASSED] 12.00 Xe_M
[09:05:55] [PASSED] 12.55 Xe_HPM
[09:05:55] [PASSED] 13.00 Xe_LPM+
[09:05:55] [PASSED] 13.01 Xe2_HPM
[09:05:55] [PASSED] 20.00 Xe2_LPM
[09:05:55] [PASSED] 30.00 Xe3_LPM
[09:05:55] [PASSED] 30.02 Xe3_LPM
[09:05:55] [PASSED] 35.00 Xe3p_LPM
[09:05:55] [PASSED] 35.03 Xe3p_HPM
[09:05:55] ================= [PASSED] check_media_ip ==================
[09:05:55] =================== check_platform_desc ===================
[09:05:55] [PASSED] 0x9A60 (TIGERLAKE)
[09:05:55] [PASSED] 0x9A68 (TIGERLAKE)
[09:05:55] [PASSED] 0x9A70 (TIGERLAKE)
[09:05:55] [PASSED] 0x9A40 (TIGERLAKE)
[09:05:55] [PASSED] 0x9A49 (TIGERLAKE)
[09:05:55] [PASSED] 0x9A59 (TIGERLAKE)
[09:05:55] [PASSED] 0x9A78 (TIGERLAKE)
[09:05:55] [PASSED] 0x9AC0 (TIGERLAKE)
[09:05:55] [PASSED] 0x9AC9 (TIGERLAKE)
[09:05:55] [PASSED] 0x9AD9 (TIGERLAKE)
[09:05:55] [PASSED] 0x9AF8 (TIGERLAKE)
[09:05:55] [PASSED] 0x4C80 (ROCKETLAKE)
[09:05:55] [PASSED] 0x4C8A (ROCKETLAKE)
[09:05:55] [PASSED] 0x4C8B (ROCKETLAKE)
[09:05:55] [PASSED] 0x4C8C (ROCKETLAKE)
[09:05:55] [PASSED] 0x4C90 (ROCKETLAKE)
[09:05:55] [PASSED] 0x4C9A (ROCKETLAKE)
[09:05:55] [PASSED] 0x4680 (ALDERLAKE_S)
[09:05:55] [PASSED] 0x4682 (ALDERLAKE_S)
[09:05:55] [PASSED] 0x4688 (ALDERLAKE_S)
[09:05:55] [PASSED] 0x468A (ALDERLAKE_S)
[09:05:55] [PASSED] 0x468B (ALDERLAKE_S)
[09:05:55] [PASSED] 0x4690 (ALDERLAKE_S)
[09:05:55] [PASSED] 0x4692 (ALDERLAKE_S)
[09:05:55] [PASSED] 0x4693 (ALDERLAKE_S)
[09:05:55] [PASSED] 0x46A0 (ALDERLAKE_P)
[09:05:55] [PASSED] 0x46A1 (ALDERLAKE_P)
[09:05:55] [PASSED] 0x46A2 (ALDERLAKE_P)
[09:05:55] [PASSED] 0x46A3 (ALDERLAKE_P)
[09:05:55] [PASSED] 0x46A6 (ALDERLAKE_P)
[09:05:55] [PASSED] 0x46A8 (ALDERLAKE_P)
[09:05:55] [PASSED] 0x46AA (ALDERLAKE_P)
[09:05:55] [PASSED] 0x462A (ALDERLAKE_P)
[09:05:55] [PASSED] 0x4626 (ALDERLAKE_P)
[09:05:55] [PASSED] 0x4628 (ALDERLAKE_P)
[09:05:55] [PASSED] 0x46B0 (ALDERLAKE_P)
[09:05:55] [PASSED] 0x46B1 (ALDERLAKE_P)
[09:05:55] [PASSED] 0x46B2 (ALDERLAKE_P)
[09:05:55] [PASSED] 0x46B3 (ALDERLAKE_P)
[09:05:55] [PASSED] 0x46C0 (ALDERLAKE_P)
[09:05:55] [PASSED] 0x46C1 (ALDERLAKE_P)
[09:05:55] [PASSED] 0x46C2 (ALDERLAKE_P)
[09:05:55] [PASSED] 0x46C3 (ALDERLAKE_P)
[09:05:55] [PASSED] 0x46D0 (ALDERLAKE_N)
[09:05:55] [PASSED] 0x46D1 (ALDERLAKE_N)
[09:05:55] [PASSED] 0x46D2 (ALDERLAKE_N)
[09:05:55] [PASSED] 0x46D3 (ALDERLAKE_N)
[09:05:55] [PASSED] 0x46D4 (ALDERLAKE_N)
[09:05:55] [PASSED] 0xA721 (ALDERLAKE_P)
[09:05:55] [PASSED] 0xA7A1 (ALDERLAKE_P)
[09:05:55] [PASSED] 0xA7A9 (ALDERLAKE_P)
[09:05:55] [PASSED] 0xA7AC (ALDERLAKE_P)
[09:05:55] [PASSED] 0xA7AD (ALDERLAKE_P)
[09:05:55] [PASSED] 0xA720 (ALDERLAKE_P)
[09:05:55] [PASSED] 0xA7A0 (ALDERLAKE_P)
[09:05:55] [PASSED] 0xA7A8 (ALDERLAKE_P)
[09:05:55] [PASSED] 0xA7AA (ALDERLAKE_P)
[09:05:55] [PASSED] 0xA7AB (ALDERLAKE_P)
[09:05:55] [PASSED] 0xA780 (ALDERLAKE_S)
[09:05:55] [PASSED] 0xA781 (ALDERLAKE_S)
[09:05:55] [PASSED] 0xA782 (ALDERLAKE_S)
[09:05:55] [PASSED] 0xA783 (ALDERLAKE_S)
[09:05:55] [PASSED] 0xA788 (ALDERLAKE_S)
[09:05:55] [PASSED] 0xA789 (ALDERLAKE_S)
[09:05:55] [PASSED] 0xA78A (ALDERLAKE_S)
[09:05:55] [PASSED] 0xA78B (ALDERLAKE_S)
[09:05:55] [PASSED] 0x4905 (DG1)
[09:05:55] [PASSED] 0x4906 (DG1)
[09:05:55] [PASSED] 0x4907 (DG1)
[09:05:55] [PASSED] 0x4908 (DG1)
[09:05:55] [PASSED] 0x4909 (DG1)
[09:05:55] [PASSED] 0x56C0 (DG2)
[09:05:55] [PASSED] 0x56C2 (DG2)
[09:05:55] [PASSED] 0x56C1 (DG2)
[09:05:55] [PASSED] 0x7D51 (METEORLAKE)
[09:05:55] [PASSED] 0x7DD1 (METEORLAKE)
[09:05:55] [PASSED] 0x7D41 (METEORLAKE)
[09:05:55] [PASSED] 0x7D67 (METEORLAKE)
[09:05:55] [PASSED] 0xB640 (METEORLAKE)
[09:05:55] [PASSED] 0x56A0 (DG2)
[09:05:55] [PASSED] 0x56A1 (DG2)
[09:05:55] [PASSED] 0x56A2 (DG2)
[09:05:55] [PASSED] 0x56BE (DG2)
[09:05:55] [PASSED] 0x56BF (DG2)
[09:05:55] [PASSED] 0x5690 (DG2)
[09:05:55] [PASSED] 0x5691 (DG2)
[09:05:55] [PASSED] 0x5692 (DG2)
[09:05:55] [PASSED] 0x56A5 (DG2)
[09:05:55] [PASSED] 0x56A6 (DG2)
[09:05:55] [PASSED] 0x56B0 (DG2)
[09:05:55] [PASSED] 0x56B1 (DG2)
[09:05:55] [PASSED] 0x56BA (DG2)
[09:05:55] [PASSED] 0x56BB (DG2)
[09:05:55] [PASSED] 0x56BC (DG2)
[09:05:55] [PASSED] 0x56BD (DG2)
[09:05:55] [PASSED] 0x5693 (DG2)
[09:05:55] [PASSED] 0x5694 (DG2)
[09:05:55] [PASSED] 0x5695 (DG2)
[09:05:55] [PASSED] 0x56A3 (DG2)
[09:05:55] [PASSED] 0x56A4 (DG2)
[09:05:55] [PASSED] 0x56B2 (DG2)
[09:05:55] [PASSED] 0x56B3 (DG2)
[09:05:55] [PASSED] 0x5696 (DG2)
[09:05:55] [PASSED] 0x5697 (DG2)
[09:05:55] [PASSED] 0xB69 (PVC)
[09:05:55] [PASSED] 0xB6E (PVC)
[09:05:55] [PASSED] 0xBD4 (PVC)
[09:05:55] [PASSED] 0xBD5 (PVC)
[09:05:55] [PASSED] 0xBD6 (PVC)
[09:05:55] [PASSED] 0xBD7 (PVC)
[09:05:55] [PASSED] 0xBD8 (PVC)
[09:05:55] [PASSED] 0xBD9 (PVC)
[09:05:55] [PASSED] 0xBDA (PVC)
[09:05:55] [PASSED] 0xBDB (PVC)
[09:05:55] [PASSED] 0xBE0 (PVC)
[09:05:55] [PASSED] 0xBE1 (PVC)
[09:05:55] [PASSED] 0xBE5 (PVC)
[09:05:55] [PASSED] 0x7D40 (METEORLAKE)
[09:05:55] [PASSED] 0x7D45 (METEORLAKE)
[09:05:55] [PASSED] 0x7D55 (METEORLAKE)
[09:05:55] [PASSED] 0x7D60 (METEORLAKE)
[09:05:55] [PASSED] 0x7DD5 (METEORLAKE)
[09:05:55] [PASSED] 0x6420 (LUNARLAKE)
[09:05:55] [PASSED] 0x64A0 (LUNARLAKE)
[09:05:55] [PASSED] 0x64B0 (LUNARLAKE)
[09:05:55] [PASSED] 0xE202 (BATTLEMAGE)
[09:05:55] [PASSED] 0xE209 (BATTLEMAGE)
[09:05:55] [PASSED] 0xE20B (BATTLEMAGE)
[09:05:55] [PASSED] 0xE20C (BATTLEMAGE)
[09:05:55] [PASSED] 0xE20D (BATTLEMAGE)
[09:05:55] [PASSED] 0xE210 (BATTLEMAGE)
[09:05:55] [PASSED] 0xE211 (BATTLEMAGE)
[09:05:55] [PASSED] 0xE212 (BATTLEMAGE)
[09:05:55] [PASSED] 0xE216 (BATTLEMAGE)
[09:05:55] [PASSED] 0xE220 (BATTLEMAGE)
[09:05:55] [PASSED] 0xE221 (BATTLEMAGE)
[09:05:55] [PASSED] 0xE222 (BATTLEMAGE)
[09:05:55] [PASSED] 0xE223 (BATTLEMAGE)
[09:05:55] [PASSED] 0xB080 (PANTHERLAKE)
[09:05:55] [PASSED] 0xB081 (PANTHERLAKE)
[09:05:55] [PASSED] 0xB082 (PANTHERLAKE)
[09:05:55] [PASSED] 0xB083 (PANTHERLAKE)
[09:05:55] [PASSED] 0xB084 (PANTHERLAKE)
[09:05:55] [PASSED] 0xB085 (PANTHERLAKE)
[09:05:55] [PASSED] 0xB086 (PANTHERLAKE)
[09:05:55] [PASSED] 0xB087 (PANTHERLAKE)
[09:05:55] [PASSED] 0xB08F (PANTHERLAKE)
[09:05:55] [PASSED] 0xB090 (PANTHERLAKE)
[09:05:55] [PASSED] 0xB0A0 (PANTHERLAKE)
[09:05:55] [PASSED] 0xB0B0 (PANTHERLAKE)
[09:05:55] [PASSED] 0xD740 (NOVALAKE_S)
[09:05:55] [PASSED] 0xD741 (NOVALAKE_S)
[09:05:55] [PASSED] 0xD742 (NOVALAKE_S)
[09:05:55] [PASSED] 0xD743 (NOVALAKE_S)
[09:05:55] [PASSED] 0xD744 (NOVALAKE_S)
[09:05:55] [PASSED] 0xD745 (NOVALAKE_S)
[09:05:55] [PASSED] 0x674C (CRESCENTISLAND)
[09:05:55] [PASSED] 0xFD80 (PANTHERLAKE)
[09:05:55] [PASSED] 0xFD81 (PANTHERLAKE)
[09:05:55] =============== [PASSED] check_platform_desc ===============
[09:05:55] ===================== [PASSED] xe_pci ======================
[09:05:55] =================== xe_rtp (2 subtests) ====================
[09:05:55] =============== xe_rtp_process_to_sr_tests ================
[09:05:55] [PASSED] coalesce-same-reg
[09:05:55] [PASSED] no-match-no-add
[09:05:55] [PASSED] match-or
[09:05:55] [PASSED] match-or-xfail
[09:05:55] [PASSED] no-match-no-add-multiple-rules
[09:05:55] [PASSED] two-regs-two-entries
[09:05:55] [PASSED] clr-one-set-other
[09:05:55] [PASSED] set-field
[09:05:55] [PASSED] conflict-duplicate
[09:05:55] [PASSED] conflict-not-disjoint
[09:05:55] [PASSED] conflict-reg-type
[09:05:55] =========== [PASSED] xe_rtp_process_to_sr_tests ============
[09:05:55] ================== xe_rtp_process_tests ===================
[09:05:55] [PASSED] active1
[09:05:55] [PASSED] active2
[09:05:55] [PASSED] active-inactive
[09:05:55] [PASSED] inactive-active
[09:05:55] [PASSED] inactive-1st_or_active-inactive
[09:05:55] [PASSED] inactive-2nd_or_active-inactive
[09:05:55] [PASSED] inactive-last_or_active-inactive
stty: 'standard input': Inappropriate ioctl for device
[09:05:55] [PASSED] inactive-no_or_active-inactive
[09:05:55] ============== [PASSED] xe_rtp_process_tests ===============
[09:05:55] ===================== [PASSED] xe_rtp ======================
[09:05:55] ==================== xe_wa (1 subtest) =====================
[09:05:55] ======================== xe_wa_gt =========================
[09:05:55] [PASSED] TIGERLAKE B0
[09:05:55] [PASSED] DG1 A0
[09:05:55] [PASSED] DG1 B0
[09:05:55] [PASSED] ALDERLAKE_S A0
[09:05:55] [PASSED] ALDERLAKE_S B0
[09:05:55] [PASSED] ALDERLAKE_S C0
[09:05:55] [PASSED] ALDERLAKE_S D0
[09:05:55] [PASSED] ALDERLAKE_P A0
[09:05:55] [PASSED] ALDERLAKE_P B0
[09:05:55] [PASSED] ALDERLAKE_P C0
[09:05:55] [PASSED] ALDERLAKE_S RPLS D0
[09:05:55] [PASSED] ALDERLAKE_P RPLU E0
[09:05:55] [PASSED] DG2 G10 C0
[09:05:55] [PASSED] DG2 G11 B1
[09:05:55] [PASSED] DG2 G12 A1
[09:05:55] [PASSED] METEORLAKE 12.70(Xe_LPG) A0 13.00(Xe_LPM+) A0
[09:05:55] [PASSED] METEORLAKE 12.71(Xe_LPG) A0 13.00(Xe_LPM+) A0
[09:05:55] [PASSED] METEORLAKE 12.74(Xe_LPG+) A0 13.00(Xe_LPM+) A0
[09:05:55] [PASSED] LUNARLAKE 20.04(Xe2_LPG) A0 20.00(Xe2_LPM) A0
[09:05:55] [PASSED] LUNARLAKE 20.04(Xe2_LPG) B0 20.00(Xe2_LPM) A0
[09:05:55] [PASSED] BATTLEMAGE 20.01(Xe2_HPG) A0 13.01(Xe2_HPM) A1
[09:05:55] [PASSED] PANTHERLAKE 30.00(Xe3_LPG) A0 30.00(Xe3_LPM) A0
[09:05:55] ==================== [PASSED] xe_wa_gt =====================
[09:05:55] ====================== [PASSED] xe_wa ======================
[09:05:55] ============================================================
[09:05:55] Testing complete. Ran 318 tests: passed: 300, skipped: 18
[09:05:55] Elapsed time: 34.960s total, 4.190s configuring, 30.403s building, 0.333s running
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/tests/.kunitconfig
[09:05:55] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[09:05:57] 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:06:22] Starting KUnit Kernel (1/1)...
[09:06:22] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[09:06:22] ============ drm_test_pick_cmdline (2 subtests) ============
[09:06:22] [PASSED] drm_test_pick_cmdline_res_1920_1080_60
[09:06:22] =============== drm_test_pick_cmdline_named ===============
[09:06:22] [PASSED] NTSC
[09:06:22] [PASSED] NTSC-J
[09:06:22] [PASSED] PAL
[09:06:22] [PASSED] PAL-M
[09:06:22] =========== [PASSED] drm_test_pick_cmdline_named ===========
[09:06:22] ============== [PASSED] drm_test_pick_cmdline ==============
[09:06:22] == drm_test_atomic_get_connector_for_encoder (1 subtest) ===
[09:06:22] [PASSED] drm_test_drm_atomic_get_connector_for_encoder
[09:06:22] ==== [PASSED] drm_test_atomic_get_connector_for_encoder ====
[09:06:22] =========== drm_validate_clone_mode (2 subtests) ===========
[09:06:22] ============== drm_test_check_in_clone_mode ===============
[09:06:22] [PASSED] in_clone_mode
[09:06:22] [PASSED] not_in_clone_mode
[09:06:22] ========== [PASSED] drm_test_check_in_clone_mode ===========
[09:06:22] =============== drm_test_check_valid_clones ===============
[09:06:22] [PASSED] not_in_clone_mode
[09:06:22] [PASSED] valid_clone
[09:06:22] [PASSED] invalid_clone
[09:06:22] =========== [PASSED] drm_test_check_valid_clones ===========
[09:06:22] ============= [PASSED] drm_validate_clone_mode =============
[09:06:22] ============= drm_validate_modeset (1 subtest) =============
[09:06:22] [PASSED] drm_test_check_connector_changed_modeset
[09:06:22] ============== [PASSED] drm_validate_modeset ===============
[09:06:22] ====== drm_test_bridge_get_current_state (2 subtests) ======
[09:06:22] [PASSED] drm_test_drm_bridge_get_current_state_atomic
[09:06:22] [PASSED] drm_test_drm_bridge_get_current_state_legacy
[09:06:22] ======== [PASSED] drm_test_bridge_get_current_state ========
[09:06:22] ====== drm_test_bridge_helper_reset_crtc (3 subtests) ======
[09:06:22] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic
[09:06:22] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic_disabled
[09:06:22] [PASSED] drm_test_drm_bridge_helper_reset_crtc_legacy
[09:06:22] ======== [PASSED] drm_test_bridge_helper_reset_crtc ========
[09:06:22] ============== drm_bridge_alloc (2 subtests) ===============
[09:06:22] [PASSED] drm_test_drm_bridge_alloc_basic
[09:06:22] [PASSED] drm_test_drm_bridge_alloc_get_put
[09:06:22] ================ [PASSED] drm_bridge_alloc =================
[09:06:22] ================== drm_buddy (8 subtests) ==================
[09:06:22] [PASSED] drm_test_buddy_alloc_limit
[09:06:22] [PASSED] drm_test_buddy_alloc_optimistic
[09:06:22] [PASSED] drm_test_buddy_alloc_pessimistic
[09:06:22] [PASSED] drm_test_buddy_alloc_pathological
[09:06:22] [PASSED] drm_test_buddy_alloc_contiguous
[09:06:22] [PASSED] drm_test_buddy_alloc_clear
[09:06:22] [PASSED] drm_test_buddy_alloc_range_bias
[09:06:22] [PASSED] drm_test_buddy_fragmentation_performance
[09:06:22] ==================== [PASSED] drm_buddy ====================
[09:06:22] ============= drm_cmdline_parser (40 subtests) =============
[09:06:22] [PASSED] drm_test_cmdline_force_d_only
[09:06:22] [PASSED] drm_test_cmdline_force_D_only_dvi
[09:06:22] [PASSED] drm_test_cmdline_force_D_only_hdmi
[09:06:22] [PASSED] drm_test_cmdline_force_D_only_not_digital
[09:06:22] [PASSED] drm_test_cmdline_force_e_only
[09:06:22] [PASSED] drm_test_cmdline_res
[09:06:22] [PASSED] drm_test_cmdline_res_vesa
[09:06:22] [PASSED] drm_test_cmdline_res_vesa_rblank
[09:06:22] [PASSED] drm_test_cmdline_res_rblank
[09:06:22] [PASSED] drm_test_cmdline_res_bpp
[09:06:22] [PASSED] drm_test_cmdline_res_refresh
[09:06:22] [PASSED] drm_test_cmdline_res_bpp_refresh
[09:06:22] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced
[09:06:22] [PASSED] drm_test_cmdline_res_bpp_refresh_margins
[09:06:22] [PASSED] drm_test_cmdline_res_bpp_refresh_force_off
[09:06:22] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on
[09:06:22] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_analog
[09:06:22] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_digital
[09:06:22] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced_margins_force_on
[09:06:22] [PASSED] drm_test_cmdline_res_margins_force_on
[09:06:22] [PASSED] drm_test_cmdline_res_vesa_margins
[09:06:22] [PASSED] drm_test_cmdline_name
[09:06:22] [PASSED] drm_test_cmdline_name_bpp
[09:06:22] [PASSED] drm_test_cmdline_name_option
[09:06:22] [PASSED] drm_test_cmdline_name_bpp_option
[09:06:22] [PASSED] drm_test_cmdline_rotate_0
[09:06:22] [PASSED] drm_test_cmdline_rotate_90
[09:06:22] [PASSED] drm_test_cmdline_rotate_180
[09:06:22] [PASSED] drm_test_cmdline_rotate_270
[09:06:22] [PASSED] drm_test_cmdline_hmirror
[09:06:22] [PASSED] drm_test_cmdline_vmirror
[09:06:22] [PASSED] drm_test_cmdline_margin_options
[09:06:22] [PASSED] drm_test_cmdline_multiple_options
[09:06:22] [PASSED] drm_test_cmdline_bpp_extra_and_option
[09:06:22] [PASSED] drm_test_cmdline_extra_and_option
[09:06:22] [PASSED] drm_test_cmdline_freestanding_options
[09:06:22] [PASSED] drm_test_cmdline_freestanding_force_e_and_options
[09:06:22] [PASSED] drm_test_cmdline_panel_orientation
[09:06:22] ================ drm_test_cmdline_invalid =================
[09:06:22] [PASSED] margin_only
[09:06:22] [PASSED] interlace_only
[09:06:22] [PASSED] res_missing_x
[09:06:22] [PASSED] res_missing_y
[09:06:22] [PASSED] res_bad_y
[09:06:22] [PASSED] res_missing_y_bpp
[09:06:22] [PASSED] res_bad_bpp
[09:06:22] [PASSED] res_bad_refresh
[09:06:22] [PASSED] res_bpp_refresh_force_on_off
[09:06:22] [PASSED] res_invalid_mode
[09:06:22] [PASSED] res_bpp_wrong_place_mode
[09:06:22] [PASSED] name_bpp_refresh
[09:06:22] [PASSED] name_refresh
[09:06:22] [PASSED] name_refresh_wrong_mode
[09:06:22] [PASSED] name_refresh_invalid_mode
[09:06:22] [PASSED] rotate_multiple
[09:06:22] [PASSED] rotate_invalid_val
[09:06:22] [PASSED] rotate_truncated
[09:06:22] [PASSED] invalid_option
[09:06:22] [PASSED] invalid_tv_option
[09:06:22] [PASSED] truncated_tv_option
[09:06:22] ============ [PASSED] drm_test_cmdline_invalid =============
[09:06:22] =============== drm_test_cmdline_tv_options ===============
[09:06:22] [PASSED] NTSC
[09:06:22] [PASSED] NTSC_443
[09:06:22] [PASSED] NTSC_J
[09:06:22] [PASSED] PAL
[09:06:22] [PASSED] PAL_M
[09:06:22] [PASSED] PAL_N
[09:06:22] [PASSED] SECAM
[09:06:22] [PASSED] MONO_525
[09:06:22] [PASSED] MONO_625
[09:06:22] =========== [PASSED] drm_test_cmdline_tv_options ===========
[09:06:22] =============== [PASSED] drm_cmdline_parser ================
[09:06:22] ========== drmm_connector_hdmi_init (20 subtests) ==========
[09:06:22] [PASSED] drm_test_connector_hdmi_init_valid
[09:06:22] [PASSED] drm_test_connector_hdmi_init_bpc_8
[09:06:22] [PASSED] drm_test_connector_hdmi_init_bpc_10
[09:06:22] [PASSED] drm_test_connector_hdmi_init_bpc_12
[09:06:22] [PASSED] drm_test_connector_hdmi_init_bpc_invalid
[09:06:22] [PASSED] drm_test_connector_hdmi_init_bpc_null
[09:06:22] [PASSED] drm_test_connector_hdmi_init_formats_empty
[09:06:22] [PASSED] drm_test_connector_hdmi_init_formats_no_rgb
[09:06:22] === drm_test_connector_hdmi_init_formats_yuv420_allowed ===
[09:06:22] [PASSED] supported_formats=0x9 yuv420_allowed=1
[09:06:22] [PASSED] supported_formats=0x9 yuv420_allowed=0
[09:06:22] [PASSED] supported_formats=0x3 yuv420_allowed=1
[09:06:22] [PASSED] supported_formats=0x3 yuv420_allowed=0
[09:06:22] === [PASSED] drm_test_connector_hdmi_init_formats_yuv420_allowed ===
[09:06:22] [PASSED] drm_test_connector_hdmi_init_null_ddc
[09:06:22] [PASSED] drm_test_connector_hdmi_init_null_product
[09:06:22] [PASSED] drm_test_connector_hdmi_init_null_vendor
[09:06:22] [PASSED] drm_test_connector_hdmi_init_product_length_exact
[09:06:22] [PASSED] drm_test_connector_hdmi_init_product_length_too_long
[09:06:22] [PASSED] drm_test_connector_hdmi_init_product_valid
[09:06:22] [PASSED] drm_test_connector_hdmi_init_vendor_length_exact
[09:06:22] [PASSED] drm_test_connector_hdmi_init_vendor_length_too_long
[09:06:22] [PASSED] drm_test_connector_hdmi_init_vendor_valid
[09:06:22] ========= drm_test_connector_hdmi_init_type_valid =========
[09:06:22] [PASSED] HDMI-A
[09:06:22] [PASSED] HDMI-B
[09:06:22] ===== [PASSED] drm_test_connector_hdmi_init_type_valid =====
[09:06:22] ======== drm_test_connector_hdmi_init_type_invalid ========
[09:06:22] [PASSED] Unknown
[09:06:22] [PASSED] VGA
[09:06:22] [PASSED] DVI-I
[09:06:22] [PASSED] DVI-D
[09:06:22] [PASSED] DVI-A
[09:06:22] [PASSED] Composite
[09:06:22] [PASSED] SVIDEO
[09:06:22] [PASSED] LVDS
[09:06:22] [PASSED] Component
[09:06:22] [PASSED] DIN
[09:06:22] [PASSED] DP
[09:06:22] [PASSED] TV
[09:06:22] [PASSED] eDP
[09:06:22] [PASSED] Virtual
[09:06:22] [PASSED] DSI
[09:06:22] [PASSED] DPI
[09:06:22] [PASSED] Writeback
[09:06:22] [PASSED] SPI
[09:06:22] [PASSED] USB
[09:06:22] ==== [PASSED] drm_test_connector_hdmi_init_type_invalid ====
[09:06:22] ============ [PASSED] drmm_connector_hdmi_init =============
[09:06:22] ============= drmm_connector_init (3 subtests) =============
[09:06:22] [PASSED] drm_test_drmm_connector_init
[09:06:22] [PASSED] drm_test_drmm_connector_init_null_ddc
[09:06:22] ========= drm_test_drmm_connector_init_type_valid =========
[09:06:22] [PASSED] Unknown
[09:06:22] [PASSED] VGA
[09:06:22] [PASSED] DVI-I
[09:06:22] [PASSED] DVI-D
[09:06:22] [PASSED] DVI-A
[09:06:22] [PASSED] Composite
[09:06:22] [PASSED] SVIDEO
[09:06:22] [PASSED] LVDS
[09:06:22] [PASSED] Component
[09:06:22] [PASSED] DIN
[09:06:22] [PASSED] DP
[09:06:22] [PASSED] HDMI-A
[09:06:22] [PASSED] HDMI-B
[09:06:22] [PASSED] TV
[09:06:22] [PASSED] eDP
[09:06:22] [PASSED] Virtual
[09:06:22] [PASSED] DSI
[09:06:22] [PASSED] DPI
[09:06:22] [PASSED] Writeback
[09:06:22] [PASSED] SPI
[09:06:22] [PASSED] USB
[09:06:22] ===== [PASSED] drm_test_drmm_connector_init_type_valid =====
[09:06:22] =============== [PASSED] drmm_connector_init ===============
[09:06:22] ========= drm_connector_dynamic_init (6 subtests) ==========
[09:06:22] [PASSED] drm_test_drm_connector_dynamic_init
[09:06:22] [PASSED] drm_test_drm_connector_dynamic_init_null_ddc
[09:06:22] [PASSED] drm_test_drm_connector_dynamic_init_not_added
[09:06:22] [PASSED] drm_test_drm_connector_dynamic_init_properties
[09:06:22] ===== drm_test_drm_connector_dynamic_init_type_valid ======
[09:06:22] [PASSED] Unknown
[09:06:22] [PASSED] VGA
[09:06:22] [PASSED] DVI-I
[09:06:22] [PASSED] DVI-D
[09:06:22] [PASSED] DVI-A
[09:06:22] [PASSED] Composite
[09:06:22] [PASSED] SVIDEO
[09:06:22] [PASSED] LVDS
[09:06:22] [PASSED] Component
[09:06:22] [PASSED] DIN
[09:06:22] [PASSED] DP
[09:06:22] [PASSED] HDMI-A
[09:06:22] [PASSED] HDMI-B
[09:06:22] [PASSED] TV
[09:06:22] [PASSED] eDP
[09:06:22] [PASSED] Virtual
[09:06:22] [PASSED] DSI
[09:06:22] [PASSED] DPI
[09:06:22] [PASSED] Writeback
[09:06:22] [PASSED] SPI
[09:06:22] [PASSED] USB
[09:06:22] = [PASSED] drm_test_drm_connector_dynamic_init_type_valid ==
[09:06:22] ======== drm_test_drm_connector_dynamic_init_name =========
[09:06:22] [PASSED] Unknown
[09:06:22] [PASSED] VGA
[09:06:22] [PASSED] DVI-I
[09:06:22] [PASSED] DVI-D
[09:06:22] [PASSED] DVI-A
[09:06:22] [PASSED] Composite
[09:06:22] [PASSED] SVIDEO
[09:06:22] [PASSED] LVDS
[09:06:22] [PASSED] Component
[09:06:22] [PASSED] DIN
[09:06:22] [PASSED] DP
[09:06:22] [PASSED] HDMI-A
[09:06:22] [PASSED] HDMI-B
[09:06:22] [PASSED] TV
[09:06:22] [PASSED] eDP
[09:06:22] [PASSED] Virtual
[09:06:22] [PASSED] DSI
[09:06:22] [PASSED] DPI
[09:06:22] [PASSED] Writeback
[09:06:22] [PASSED] SPI
[09:06:22] [PASSED] USB
[09:06:22] ==== [PASSED] drm_test_drm_connector_dynamic_init_name =====
[09:06:22] =========== [PASSED] drm_connector_dynamic_init ============
[09:06:22] ==== drm_connector_dynamic_register_early (4 subtests) =====
[09:06:22] [PASSED] drm_test_drm_connector_dynamic_register_early_on_list
[09:06:22] [PASSED] drm_test_drm_connector_dynamic_register_early_defer
[09:06:22] [PASSED] drm_test_drm_connector_dynamic_register_early_no_init
[09:06:22] [PASSED] drm_test_drm_connector_dynamic_register_early_no_mode_object
[09:06:22] ====== [PASSED] drm_connector_dynamic_register_early =======
[09:06:22] ======= drm_connector_dynamic_register (7 subtests) ========
[09:06:22] [PASSED] drm_test_drm_connector_dynamic_register_on_list
[09:06:22] [PASSED] drm_test_drm_connector_dynamic_register_no_defer
[09:06:22] [PASSED] drm_test_drm_connector_dynamic_register_no_init
[09:06:22] [PASSED] drm_test_drm_connector_dynamic_register_mode_object
[09:06:22] [PASSED] drm_test_drm_connector_dynamic_register_sysfs
[09:06:22] [PASSED] drm_test_drm_connector_dynamic_register_sysfs_name
[09:06:22] [PASSED] drm_test_drm_connector_dynamic_register_debugfs
[09:06:22] ========= [PASSED] drm_connector_dynamic_register ==========
[09:06:22] = drm_connector_attach_broadcast_rgb_property (2 subtests) =
[09:06:22] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property
[09:06:22] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property_hdmi_connector
[09:06:22] === [PASSED] drm_connector_attach_broadcast_rgb_property ===
[09:06:22] ========== drm_get_tv_mode_from_name (2 subtests) ==========
[09:06:22] ========== drm_test_get_tv_mode_from_name_valid ===========
[09:06:22] [PASSED] NTSC
[09:06:22] [PASSED] NTSC-443
[09:06:22] [PASSED] NTSC-J
[09:06:22] [PASSED] PAL
[09:06:22] [PASSED] PAL-M
[09:06:22] [PASSED] PAL-N
[09:06:22] [PASSED] SECAM
[09:06:22] [PASSED] Mono
[09:06:22] ====== [PASSED] drm_test_get_tv_mode_from_name_valid =======
[09:06:22] [PASSED] drm_test_get_tv_mode_from_name_truncated
[09:06:22] ============ [PASSED] drm_get_tv_mode_from_name ============
[09:06:22] = drm_test_connector_hdmi_compute_mode_clock (12 subtests) =
[09:06:22] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb
[09:06:22] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc
[09:06:22] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc_vic_1
[09:06:22] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc
[09:06:22] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc_vic_1
[09:06:22] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_double
[09:06:22] = drm_test_connector_hdmi_compute_mode_clock_yuv420_valid =
[09:06:22] [PASSED] VIC 96
[09:06:22] [PASSED] VIC 97
[09:06:22] [PASSED] VIC 101
[09:06:22] [PASSED] VIC 102
[09:06:22] [PASSED] VIC 106
[09:06:22] [PASSED] VIC 107
[09:06:22] === [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_valid ===
[09:06:22] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_10_bpc
[09:06:22] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_12_bpc
[09:06:22] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_8_bpc
[09:06:22] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_10_bpc
[09:06:22] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_12_bpc
[09:06:22] === [PASSED] drm_test_connector_hdmi_compute_mode_clock ====
[09:06:22] == drm_hdmi_connector_get_broadcast_rgb_name (2 subtests) ==
[09:06:22] === drm_test_drm_hdmi_connector_get_broadcast_rgb_name ====
[09:06:22] [PASSED] Automatic
[09:06:22] [PASSED] Full
[09:06:22] [PASSED] Limited 16:235
[09:06:22] === [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name ===
[09:06:22] [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name_invalid
[09:06:22] ==== [PASSED] drm_hdmi_connector_get_broadcast_rgb_name ====
[09:06:22] == drm_hdmi_connector_get_output_format_name (2 subtests) ==
[09:06:22] === drm_test_drm_hdmi_connector_get_output_format_name ====
[09:06:22] [PASSED] RGB
[09:06:22] [PASSED] YUV 4:2:0
[09:06:22] [PASSED] YUV 4:2:2
[09:06:22] [PASSED] YUV 4:4:4
[09:06:22] === [PASSED] drm_test_drm_hdmi_connector_get_output_format_name ===
[09:06:22] [PASSED] drm_test_drm_hdmi_connector_get_output_format_name_invalid
[09:06:22] ==== [PASSED] drm_hdmi_connector_get_output_format_name ====
[09:06:22] ============= drm_damage_helper (21 subtests) ==============
[09:06:22] [PASSED] drm_test_damage_iter_no_damage
[09:06:22] [PASSED] drm_test_damage_iter_no_damage_fractional_src
[09:06:22] [PASSED] drm_test_damage_iter_no_damage_src_moved
[09:06:22] [PASSED] drm_test_damage_iter_no_damage_fractional_src_moved
[09:06:22] [PASSED] drm_test_damage_iter_no_damage_not_visible
[09:06:22] [PASSED] drm_test_damage_iter_no_damage_no_crtc
[09:06:22] [PASSED] drm_test_damage_iter_no_damage_no_fb
[09:06:22] [PASSED] drm_test_damage_iter_simple_damage
[09:06:22] [PASSED] drm_test_damage_iter_single_damage
[09:06:22] [PASSED] drm_test_damage_iter_single_damage_intersect_src
[09:06:22] [PASSED] drm_test_damage_iter_single_damage_outside_src
[09:06:22] [PASSED] drm_test_damage_iter_single_damage_fractional_src
[09:06:22] [PASSED] drm_test_damage_iter_single_damage_intersect_fractional_src
[09:06:22] [PASSED] drm_test_damage_iter_single_damage_outside_fractional_src
[09:06:22] [PASSED] drm_test_damage_iter_single_damage_src_moved
[09:06:22] [PASSED] drm_test_damage_iter_single_damage_fractional_src_moved
[09:06:22] [PASSED] drm_test_damage_iter_damage
[09:06:22] [PASSED] drm_test_damage_iter_damage_one_intersect
[09:06:22] [PASSED] drm_test_damage_iter_damage_one_outside
[09:06:22] [PASSED] drm_test_damage_iter_damage_src_moved
[09:06:22] [PASSED] drm_test_damage_iter_damage_not_visible
[09:06:22] ================ [PASSED] drm_damage_helper ================
[09:06:22] ============== drm_dp_mst_helper (3 subtests) ==============
[09:06:22] ============== drm_test_dp_mst_calc_pbn_mode ==============
[09:06:22] [PASSED] Clock 154000 BPP 30 DSC disabled
[09:06:22] [PASSED] Clock 234000 BPP 30 DSC disabled
[09:06:22] [PASSED] Clock 297000 BPP 24 DSC disabled
[09:06:22] [PASSED] Clock 332880 BPP 24 DSC enabled
[09:06:22] [PASSED] Clock 324540 BPP 24 DSC enabled
[09:06:22] ========== [PASSED] drm_test_dp_mst_calc_pbn_mode ==========
[09:06:22] ============== drm_test_dp_mst_calc_pbn_div ===============
[09:06:22] [PASSED] Link rate 2000000 lane count 4
[09:06:22] [PASSED] Link rate 2000000 lane count 2
[09:06:22] [PASSED] Link rate 2000000 lane count 1
[09:06:22] [PASSED] Link rate 1350000 lane count 4
[09:06:22] [PASSED] Link rate 1350000 lane count 2
[09:06:22] [PASSED] Link rate 1350000 lane count 1
[09:06:22] [PASSED] Link rate 1000000 lane count 4
[09:06:22] [PASSED] Link rate 1000000 lane count 2
[09:06:22] [PASSED] Link rate 1000000 lane count 1
[09:06:22] [PASSED] Link rate 810000 lane count 4
[09:06:22] [PASSED] Link rate 810000 lane count 2
[09:06:22] [PASSED] Link rate 810000 lane count 1
[09:06:22] [PASSED] Link rate 540000 lane count 4
[09:06:22] [PASSED] Link rate 540000 lane count 2
[09:06:22] [PASSED] Link rate 540000 lane count 1
[09:06:22] [PASSED] Link rate 270000 lane count 4
[09:06:22] [PASSED] Link rate 270000 lane count 2
[09:06:22] [PASSED] Link rate 270000 lane count 1
[09:06:22] [PASSED] Link rate 162000 lane count 4
[09:06:22] [PASSED] Link rate 162000 lane count 2
[09:06:22] [PASSED] Link rate 162000 lane count 1
[09:06:22] ========== [PASSED] drm_test_dp_mst_calc_pbn_div ===========
[09:06:22] ========= drm_test_dp_mst_sideband_msg_req_decode =========
[09:06:22] [PASSED] DP_ENUM_PATH_RESOURCES with port number
[09:06:22] [PASSED] DP_POWER_UP_PHY with port number
[09:06:22] [PASSED] DP_POWER_DOWN_PHY with port number
[09:06:22] [PASSED] DP_ALLOCATE_PAYLOAD with SDP stream sinks
[09:06:22] [PASSED] DP_ALLOCATE_PAYLOAD with port number
[09:06:22] [PASSED] DP_ALLOCATE_PAYLOAD with VCPI
[09:06:22] [PASSED] DP_ALLOCATE_PAYLOAD with PBN
[09:06:22] [PASSED] DP_QUERY_PAYLOAD with port number
[09:06:22] [PASSED] DP_QUERY_PAYLOAD with VCPI
[09:06:22] [PASSED] DP_REMOTE_DPCD_READ with port number
[09:06:22] [PASSED] DP_REMOTE_DPCD_READ with DPCD address
[09:06:22] [PASSED] DP_REMOTE_DPCD_READ with max number of bytes
[09:06:22] [PASSED] DP_REMOTE_DPCD_WRITE with port number
[09:06:22] [PASSED] DP_REMOTE_DPCD_WRITE with DPCD address
[09:06:22] [PASSED] DP_REMOTE_DPCD_WRITE with data array
[09:06:22] [PASSED] DP_REMOTE_I2C_READ with port number
[09:06:22] [PASSED] DP_REMOTE_I2C_READ with I2C device ID
[09:06:22] [PASSED] DP_REMOTE_I2C_READ with transactions array
[09:06:22] [PASSED] DP_REMOTE_I2C_WRITE with port number
[09:06:22] [PASSED] DP_REMOTE_I2C_WRITE with I2C device ID
[09:06:22] [PASSED] DP_REMOTE_I2C_WRITE with data array
[09:06:22] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream ID
[09:06:22] [PASSED] DP_QUERY_STREAM_ENC_STATUS with client ID
[09:06:22] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream event
[09:06:22] [PASSED] DP_QUERY_STREAM_ENC_STATUS with valid stream event
[09:06:22] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream behavior
[09:06:22] [PASSED] DP_QUERY_STREAM_ENC_STATUS with a valid stream behavior
[09:06:22] ===== [PASSED] drm_test_dp_mst_sideband_msg_req_decode =====
[09:06:22] ================ [PASSED] drm_dp_mst_helper ================
[09:06:22] ================== drm_exec (7 subtests) ===================
[09:06:22] [PASSED] sanitycheck
[09:06:22] [PASSED] test_lock
[09:06:22] [PASSED] test_lock_unlock
[09:06:22] [PASSED] test_duplicates
[09:06:22] [PASSED] test_prepare
[09:06:22] [PASSED] test_prepare_array
[09:06:22] [PASSED] test_multiple_loops
[09:06:22] ==================== [PASSED] drm_exec =====================
[09:06:22] =========== drm_format_helper_test (17 subtests) ===========
[09:06:22] ============== drm_test_fb_xrgb8888_to_gray8 ==============
[09:06:22] [PASSED] single_pixel_source_buffer
[09:06:22] [PASSED] single_pixel_clip_rectangle
[09:06:22] [PASSED] well_known_colors
[09:06:22] [PASSED] destination_pitch
[09:06:22] ========== [PASSED] drm_test_fb_xrgb8888_to_gray8 ==========
[09:06:22] ============= drm_test_fb_xrgb8888_to_rgb332 ==============
[09:06:22] [PASSED] single_pixel_source_buffer
[09:06:22] [PASSED] single_pixel_clip_rectangle
[09:06:22] [PASSED] well_known_colors
[09:06:22] [PASSED] destination_pitch
[09:06:22] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb332 ==========
[09:06:22] ============= drm_test_fb_xrgb8888_to_rgb565 ==============
[09:06:22] [PASSED] single_pixel_source_buffer
[09:06:22] [PASSED] single_pixel_clip_rectangle
[09:06:22] [PASSED] well_known_colors
[09:06:22] [PASSED] destination_pitch
[09:06:22] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb565 ==========
[09:06:22] ============ drm_test_fb_xrgb8888_to_xrgb1555 =============
[09:06:22] [PASSED] single_pixel_source_buffer
[09:06:22] [PASSED] single_pixel_clip_rectangle
[09:06:22] [PASSED] well_known_colors
[09:06:22] [PASSED] destination_pitch
[09:06:22] ======== [PASSED] drm_test_fb_xrgb8888_to_xrgb1555 =========
[09:06:22] ============ drm_test_fb_xrgb8888_to_argb1555 =============
[09:06:22] [PASSED] single_pixel_source_buffer
[09:06:22] [PASSED] single_pixel_clip_rectangle
[09:06:22] [PASSED] well_known_colors
[09:06:22] [PASSED] destination_pitch
[09:06:22] ======== [PASSED] drm_test_fb_xrgb8888_to_argb1555 =========
[09:06:22] ============ drm_test_fb_xrgb8888_to_rgba5551 =============
[09:06:22] [PASSED] single_pixel_source_buffer
[09:06:22] [PASSED] single_pixel_clip_rectangle
[09:06:22] [PASSED] well_known_colors
[09:06:22] [PASSED] destination_pitch
[09:06:22] ======== [PASSED] drm_test_fb_xrgb8888_to_rgba5551 =========
[09:06:22] ============= drm_test_fb_xrgb8888_to_rgb888 ==============
[09:06:22] [PASSED] single_pixel_source_buffer
[09:06:22] [PASSED] single_pixel_clip_rectangle
[09:06:22] [PASSED] well_known_colors
[09:06:22] [PASSED] destination_pitch
[09:06:22] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb888 ==========
[09:06:22] ============= drm_test_fb_xrgb8888_to_bgr888 ==============
[09:06:22] [PASSED] single_pixel_source_buffer
[09:06:22] [PASSED] single_pixel_clip_rectangle
[09:06:22] [PASSED] well_known_colors
[09:06:22] [PASSED] destination_pitch
[09:06:22] ========= [PASSED] drm_test_fb_xrgb8888_to_bgr888 ==========
[09:06:22] ============ drm_test_fb_xrgb8888_to_argb8888 =============
[09:06:22] [PASSED] single_pixel_source_buffer
[09:06:22] [PASSED] single_pixel_clip_rectangle
[09:06:22] [PASSED] well_known_colors
[09:06:22] [PASSED] destination_pitch
[09:06:22] ======== [PASSED] drm_test_fb_xrgb8888_to_argb8888 =========
[09:06:22] =========== drm_test_fb_xrgb8888_to_xrgb2101010 ===========
[09:06:22] [PASSED] single_pixel_source_buffer
[09:06:22] [PASSED] single_pixel_clip_rectangle
[09:06:22] [PASSED] well_known_colors
[09:06:22] [PASSED] destination_pitch
[09:06:22] ======= [PASSED] drm_test_fb_xrgb8888_to_xrgb2101010 =======
[09:06:22] =========== drm_test_fb_xrgb8888_to_argb2101010 ===========
[09:06:22] [PASSED] single_pixel_source_buffer
[09:06:22] [PASSED] single_pixel_clip_rectangle
[09:06:22] [PASSED] well_known_colors
[09:06:22] [PASSED] destination_pitch
[09:06:22] ======= [PASSED] drm_test_fb_xrgb8888_to_argb2101010 =======
[09:06:22] ============== drm_test_fb_xrgb8888_to_mono ===============
[09:06:22] [PASSED] single_pixel_source_buffer
[09:06:22] [PASSED] single_pixel_clip_rectangle
[09:06:22] [PASSED] well_known_colors
[09:06:22] [PASSED] destination_pitch
[09:06:22] ========== [PASSED] drm_test_fb_xrgb8888_to_mono ===========
[09:06:22] ==================== drm_test_fb_swab =====================
[09:06:22] [PASSED] single_pixel_source_buffer
[09:06:22] [PASSED] single_pixel_clip_rectangle
[09:06:22] [PASSED] well_known_colors
[09:06:22] [PASSED] destination_pitch
[09:06:22] ================ [PASSED] drm_test_fb_swab =================
[09:06:22] ============ drm_test_fb_xrgb8888_to_xbgr8888 =============
[09:06:22] [PASSED] single_pixel_source_buffer
[09:06:22] [PASSED] single_pixel_clip_rectangle
[09:06:22] [PASSED] well_known_colors
[09:06:22] [PASSED] destination_pitch
[09:06:22] ======== [PASSED] drm_test_fb_xrgb8888_to_xbgr8888 =========
[09:06:22] ============ drm_test_fb_xrgb8888_to_abgr8888 =============
[09:06:22] [PASSED] single_pixel_source_buffer
[09:06:22] [PASSED] single_pixel_clip_rectangle
[09:06:22] [PASSED] well_known_colors
[09:06:22] [PASSED] destination_pitch
[09:06:22] ======== [PASSED] drm_test_fb_xrgb8888_to_abgr8888 =========
[09:06:22] ================= drm_test_fb_clip_offset =================
[09:06:22] [PASSED] pass through
[09:06:22] [PASSED] horizontal offset
[09:06:22] [PASSED] vertical offset
[09:06:22] [PASSED] horizontal and vertical offset
[09:06:22] [PASSED] horizontal offset (custom pitch)
[09:06:22] [PASSED] vertical offset (custom pitch)
[09:06:22] [PASSED] horizontal and vertical offset (custom pitch)
[09:06:22] ============= [PASSED] drm_test_fb_clip_offset =============
[09:06:22] =================== drm_test_fb_memcpy ====================
[09:06:22] [PASSED] single_pixel_source_buffer: XR24 little-endian (0x34325258)
[09:06:22] [PASSED] single_pixel_source_buffer: XRA8 little-endian (0x38415258)
[09:06:22] [PASSED] single_pixel_source_buffer: YU24 little-endian (0x34325559)
[09:06:22] [PASSED] single_pixel_clip_rectangle: XB24 little-endian (0x34324258)
[09:06:22] [PASSED] single_pixel_clip_rectangle: XRA8 little-endian (0x38415258)
[09:06:22] [PASSED] single_pixel_clip_rectangle: YU24 little-endian (0x34325559)
[09:06:22] [PASSED] well_known_colors: XB24 little-endian (0x34324258)
[09:06:22] [PASSED] well_known_colors: XRA8 little-endian (0x38415258)
[09:06:22] [PASSED] well_known_colors: YU24 little-endian (0x34325559)
[09:06:22] [PASSED] destination_pitch: XB24 little-endian (0x34324258)
[09:06:22] [PASSED] destination_pitch: XRA8 little-endian (0x38415258)
[09:06:22] [PASSED] destination_pitch: YU24 little-endian (0x34325559)
[09:06:22] =============== [PASSED] drm_test_fb_memcpy ================
[09:06:22] ============= [PASSED] drm_format_helper_test ==============
[09:06:22] ================= drm_format (18 subtests) =================
[09:06:22] [PASSED] drm_test_format_block_width_invalid
[09:06:22] [PASSED] drm_test_format_block_width_one_plane
[09:06:22] [PASSED] drm_test_format_block_width_two_plane
[09:06:22] [PASSED] drm_test_format_block_width_three_plane
[09:06:22] [PASSED] drm_test_format_block_width_tiled
[09:06:22] [PASSED] drm_test_format_block_height_invalid
[09:06:22] [PASSED] drm_test_format_block_height_one_plane
[09:06:22] [PASSED] drm_test_format_block_height_two_plane
[09:06:22] [PASSED] drm_test_format_block_height_three_plane
[09:06:22] [PASSED] drm_test_format_block_height_tiled
[09:06:22] [PASSED] drm_test_format_min_pitch_invalid
[09:06:22] [PASSED] drm_test_format_min_pitch_one_plane_8bpp
[09:06:22] [PASSED] drm_test_format_min_pitch_one_plane_16bpp
[09:06:22] [PASSED] drm_test_format_min_pitch_one_plane_24bpp
[09:06:22] [PASSED] drm_test_format_min_pitch_one_plane_32bpp
[09:06:22] [PASSED] drm_test_format_min_pitch_two_plane
[09:06:22] [PASSED] drm_test_format_min_pitch_three_plane_8bpp
[09:06:22] [PASSED] drm_test_format_min_pitch_tiled
[09:06:22] =================== [PASSED] drm_format ====================
[09:06:22] ============== drm_framebuffer (10 subtests) ===============
[09:06:22] ========== drm_test_framebuffer_check_src_coords ==========
[09:06:22] [PASSED] Success: source fits into fb
[09:06:22] [PASSED] Fail: overflowing fb with x-axis coordinate
[09:06:22] [PASSED] Fail: overflowing fb with y-axis coordinate
[09:06:22] [PASSED] Fail: overflowing fb with source width
[09:06:22] [PASSED] Fail: overflowing fb with source height
[09:06:22] ====== [PASSED] drm_test_framebuffer_check_src_coords ======
[09:06:22] [PASSED] drm_test_framebuffer_cleanup
[09:06:22] =============== drm_test_framebuffer_create ===============
[09:06:22] [PASSED] ABGR8888 normal sizes
[09:06:22] [PASSED] ABGR8888 max sizes
[09:06:22] [PASSED] ABGR8888 pitch greater than min required
[09:06:22] [PASSED] ABGR8888 pitch less than min required
[09:06:22] [PASSED] ABGR8888 Invalid width
[09:06:22] [PASSED] ABGR8888 Invalid buffer handle
[09:06:22] [PASSED] No pixel format
[09:06:22] [PASSED] ABGR8888 Width 0
[09:06:22] [PASSED] ABGR8888 Height 0
[09:06:22] [PASSED] ABGR8888 Out of bound height * pitch combination
[09:06:22] [PASSED] ABGR8888 Large buffer offset
[09:06:22] [PASSED] ABGR8888 Buffer offset for inexistent plane
[09:06:22] [PASSED] ABGR8888 Invalid flag
[09:06:22] [PASSED] ABGR8888 Set DRM_MODE_FB_MODIFIERS without modifiers
[09:06:22] [PASSED] ABGR8888 Valid buffer modifier
[09:06:22] [PASSED] ABGR8888 Invalid buffer modifier(DRM_FORMAT_MOD_SAMSUNG_64_32_TILE)
[09:06:22] [PASSED] ABGR8888 Extra pitches without DRM_MODE_FB_MODIFIERS
[09:06:22] [PASSED] ABGR8888 Extra pitches with DRM_MODE_FB_MODIFIERS
[09:06:22] [PASSED] NV12 Normal sizes
[09:06:22] [PASSED] NV12 Max sizes
[09:06:22] [PASSED] NV12 Invalid pitch
[09:06:22] [PASSED] NV12 Invalid modifier/missing DRM_MODE_FB_MODIFIERS flag
[09:06:22] [PASSED] NV12 different modifier per-plane
[09:06:22] [PASSED] NV12 with DRM_FORMAT_MOD_SAMSUNG_64_32_TILE
[09:06:22] [PASSED] NV12 Valid modifiers without DRM_MODE_FB_MODIFIERS
[09:06:22] [PASSED] NV12 Modifier for inexistent plane
[09:06:22] [PASSED] NV12 Handle for inexistent plane
[09:06:22] [PASSED] NV12 Handle for inexistent plane without DRM_MODE_FB_MODIFIERS
[09:06:22] [PASSED] YVU420 DRM_MODE_FB_MODIFIERS set without modifier
[09:06:22] [PASSED] YVU420 Normal sizes
[09:06:22] [PASSED] YVU420 Max sizes
[09:06:22] [PASSED] YVU420 Invalid pitch
[09:06:22] [PASSED] YVU420 Different pitches
[09:06:22] [PASSED] YVU420 Different buffer offsets/pitches
[09:06:22] [PASSED] YVU420 Modifier set just for plane 0, without DRM_MODE_FB_MODIFIERS
[09:06:22] [PASSED] YVU420 Modifier set just for planes 0, 1, without DRM_MODE_FB_MODIFIERS
[09:06:22] [PASSED] YVU420 Modifier set just for plane 0, 1, with DRM_MODE_FB_MODIFIERS
[09:06:22] [PASSED] YVU420 Valid modifier
[09:06:22] [PASSED] YVU420 Different modifiers per plane
[09:06:22] [PASSED] YVU420 Modifier for inexistent plane
[09:06:22] [PASSED] YUV420_10BIT Invalid modifier(DRM_FORMAT_MOD_LINEAR)
[09:06:22] [PASSED] X0L2 Normal sizes
[09:06:22] [PASSED] X0L2 Max sizes
[09:06:22] [PASSED] X0L2 Invalid pitch
[09:06:22] [PASSED] X0L2 Pitch greater than minimum required
[09:06:22] [PASSED] X0L2 Handle for inexistent plane
[09:06:22] [PASSED] X0L2 Offset for inexistent plane, without DRM_MODE_FB_MODIFIERS set
[09:06:22] [PASSED] X0L2 Modifier without DRM_MODE_FB_MODIFIERS set
[09:06:22] [PASSED] X0L2 Valid modifier
[09:06:22] [PASSED] X0L2 Modifier for inexistent plane
[09:06:22] =========== [PASSED] drm_test_framebuffer_create ===========
[09:06:22] [PASSED] drm_test_framebuffer_free
[09:06:22] [PASSED] drm_test_framebuffer_init
[09:06:22] [PASSED] drm_test_framebuffer_init_bad_format
[09:06:22] [PASSED] drm_test_framebuffer_init_dev_mismatch
[09:06:22] [PASSED] drm_test_framebuffer_lookup
[09:06:22] [PASSED] drm_test_framebuffer_lookup_inexistent
[09:06:22] [PASSED] drm_test_framebuffer_modifiers_not_supported
[09:06:22] ================= [PASSED] drm_framebuffer =================
[09:06:22] ================ drm_gem_shmem (8 subtests) ================
[09:06:22] [PASSED] drm_gem_shmem_test_obj_create
[09:06:22] [PASSED] drm_gem_shmem_test_obj_create_private
[09:06:22] [PASSED] drm_gem_shmem_test_pin_pages
[09:06:22] [PASSED] drm_gem_shmem_test_vmap
[09:06:22] [PASSED] drm_gem_shmem_test_get_pages_sgt
[09:06:22] [PASSED] drm_gem_shmem_test_get_sg_table
[09:06:22] [PASSED] drm_gem_shmem_test_madvise
[09:06:22] [PASSED] drm_gem_shmem_test_purge
[09:06:22] ================== [PASSED] drm_gem_shmem ==================
[09:06:22] === drm_atomic_helper_connector_hdmi_check (27 subtests) ===
[09:06:22] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode
[09:06:22] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode_vic_1
[09:06:22] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode
[09:06:22] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode_vic_1
[09:06:22] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode
[09:06:22] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode_vic_1
[09:06:22] ====== drm_test_check_broadcast_rgb_cea_mode_yuv420 =======
[09:06:22] [PASSED] Automatic
[09:06:22] [PASSED] Full
[09:06:22] [PASSED] Limited 16:235
[09:06:22] == [PASSED] drm_test_check_broadcast_rgb_cea_mode_yuv420 ===
[09:06:22] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_changed
[09:06:22] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_not_changed
[09:06:22] [PASSED] drm_test_check_disable_connector
[09:06:22] [PASSED] drm_test_check_hdmi_funcs_reject_rate
[09:06:22] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_rgb
[09:06:22] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_yuv420
[09:06:22] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv422
[09:06:22] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv420
[09:06:22] [PASSED] drm_test_check_driver_unsupported_fallback_yuv420
[09:06:22] [PASSED] drm_test_check_output_bpc_crtc_mode_changed
[09:06:22] [PASSED] drm_test_check_output_bpc_crtc_mode_not_changed
[09:06:22] [PASSED] drm_test_check_output_bpc_dvi
[09:06:22] [PASSED] drm_test_check_output_bpc_format_vic_1
[09:06:22] [PASSED] drm_test_check_output_bpc_format_display_8bpc_only
[09:06:22] [PASSED] drm_test_check_output_bpc_format_display_rgb_only
[09:06:22] [PASSED] drm_test_check_output_bpc_format_driver_8bpc_only
[09:06:22] [PASSED] drm_test_check_output_bpc_format_driver_rgb_only
[09:06:22] [PASSED] drm_test_check_tmds_char_rate_rgb_8bpc
[09:06:22] [PASSED] drm_test_check_tmds_char_rate_rgb_10bpc
[09:06:22] [PASSED] drm_test_check_tmds_char_rate_rgb_12bpc
[09:06:22] ===== [PASSED] drm_atomic_helper_connector_hdmi_check ======
[09:06:22] === drm_atomic_helper_connector_hdmi_reset (6 subtests) ====
[09:06:22] [PASSED] drm_test_check_broadcast_rgb_value
[09:06:22] [PASSED] drm_test_check_bpc_8_value
[09:06:22] [PASSED] drm_test_check_bpc_10_value
[09:06:22] [PASSED] drm_test_check_bpc_12_value
[09:06:22] [PASSED] drm_test_check_format_value
[09:06:22] [PASSED] drm_test_check_tmds_char_value
[09:06:22] ===== [PASSED] drm_atomic_helper_connector_hdmi_reset ======
[09:06:22] = drm_atomic_helper_connector_hdmi_mode_valid (4 subtests) =
[09:06:22] [PASSED] drm_test_check_mode_valid
[09:06:22] [PASSED] drm_test_check_mode_valid_reject
[09:06:22] [PASSED] drm_test_check_mode_valid_reject_rate
[09:06:22] [PASSED] drm_test_check_mode_valid_reject_max_clock
[09:06:22] === [PASSED] drm_atomic_helper_connector_hdmi_mode_valid ===
[09:06:22] ================= drm_managed (2 subtests) =================
[09:06:22] [PASSED] drm_test_managed_release_action
[09:06:22] [PASSED] drm_test_managed_run_action
[09:06:22] =================== [PASSED] drm_managed ===================
[09:06:22] =================== drm_mm (6 subtests) ====================
[09:06:22] [PASSED] drm_test_mm_init
[09:06:22] [PASSED] drm_test_mm_debug
[09:06:22] [PASSED] drm_test_mm_align32
[09:06:22] [PASSED] drm_test_mm_align64
[09:06:22] [PASSED] drm_test_mm_lowest
[09:06:22] [PASSED] drm_test_mm_highest
[09:06:22] ===================== [PASSED] drm_mm ======================
[09:06:22] ============= drm_modes_analog_tv (5 subtests) =============
[09:06:22] [PASSED] drm_test_modes_analog_tv_mono_576i
[09:06:22] [PASSED] drm_test_modes_analog_tv_ntsc_480i
[09:06:22] [PASSED] drm_test_modes_analog_tv_ntsc_480i_inlined
[09:06:22] [PASSED] drm_test_modes_analog_tv_pal_576i
[09:06:22] [PASSED] drm_test_modes_analog_tv_pal_576i_inlined
[09:06:22] =============== [PASSED] drm_modes_analog_tv ===============
[09:06:22] ============== drm_plane_helper (2 subtests) ===============
[09:06:22] =============== drm_test_check_plane_state ================
[09:06:22] [PASSED] clipping_simple
[09:06:22] [PASSED] clipping_rotate_reflect
[09:06:22] [PASSED] positioning_simple
[09:06:22] [PASSED] upscaling
[09:06:22] [PASSED] downscaling
[09:06:22] [PASSED] rounding1
[09:06:22] [PASSED] rounding2
[09:06:22] [PASSED] rounding3
[09:06:22] [PASSED] rounding4
[09:06:22] =========== [PASSED] drm_test_check_plane_state ============
[09:06:22] =========== drm_test_check_invalid_plane_state ============
[09:06:22] [PASSED] positioning_invalid
[09:06:22] [PASSED] upscaling_invalid
[09:06:22] [PASSED] downscaling_invalid
[09:06:22] ======= [PASSED] drm_test_check_invalid_plane_state ========
[09:06:22] ================ [PASSED] drm_plane_helper =================
[09:06:22] ====== drm_connector_helper_tv_get_modes (1 subtest) =======
[09:06:22] ====== drm_test_connector_helper_tv_get_modes_check =======
[09:06:22] [PASSED] None
[09:06:22] [PASSED] PAL
[09:06:22] [PASSED] NTSC
[09:06:22] [PASSED] Both, NTSC Default
[09:06:22] [PASSED] Both, PAL Default
[09:06:22] [PASSED] Both, NTSC Default, with PAL on command-line
[09:06:22] [PASSED] Both, PAL Default, with NTSC on command-line
[09:06:22] == [PASSED] drm_test_connector_helper_tv_get_modes_check ===
[09:06:22] ======== [PASSED] drm_connector_helper_tv_get_modes ========
[09:06:22] ================== drm_rect (9 subtests) ===================
[09:06:22] [PASSED] drm_test_rect_clip_scaled_div_by_zero
[09:06:22] [PASSED] drm_test_rect_clip_scaled_not_clipped
[09:06:22] [PASSED] drm_test_rect_clip_scaled_clipped
[09:06:22] [PASSED] drm_test_rect_clip_scaled_signed_vs_unsigned
[09:06:22] ================= drm_test_rect_intersect =================
[09:06:22] [PASSED] top-left x bottom-right: 2x2+1+1 x 2x2+0+0
[09:06:22] [PASSED] top-right x bottom-left: 2x2+0+0 x 2x2+1-1
[09:06:22] [PASSED] bottom-left x top-right: 2x2+1-1 x 2x2+0+0
[09:06:22] [PASSED] bottom-right x top-left: 2x2+0+0 x 2x2+1+1
[09:06:22] [PASSED] right x left: 2x1+0+0 x 3x1+1+0
[09:06:22] [PASSED] left x right: 3x1+1+0 x 2x1+0+0
[09:06:22] [PASSED] up x bottom: 1x2+0+0 x 1x3+0-1
[09:06:22] [PASSED] bottom x up: 1x3+0-1 x 1x2+0+0
[09:06:22] [PASSED] touching corner: 1x1+0+0 x 2x2+1+1
[09:06:22] [PASSED] touching side: 1x1+0+0 x 1x1+1+0
[09:06:22] [PASSED] equal rects: 2x2+0+0 x 2x2+0+0
[09:06:22] [PASSED] inside another: 2x2+0+0 x 1x1+1+1
[09:06:22] [PASSED] far away: 1x1+0+0 x 1x1+3+6
[09:06:22] [PASSED] points intersecting: 0x0+5+10 x 0x0+5+10
[09:06:22] [PASSED] points not intersecting: 0x0+0+0 x 0x0+5+10
[09:06:22] ============= [PASSED] drm_test_rect_intersect =============
[09:06:22] ================ drm_test_rect_calc_hscale ================
[09:06:22] [PASSED] normal use
[09:06:22] [PASSED] out of max range
[09:06:22] [PASSED] out of min range
[09:06:22] [PASSED] zero dst
[09:06:22] [PASSED] negative src
[09:06:22] [PASSED] negative dst
[09:06:22] ============ [PASSED] drm_test_rect_calc_hscale ============
[09:06:22] ================ drm_test_rect_calc_vscale ================
[09:06:22] [PASSED] normal use
stty: 'standard input': Inappropriate ioctl for device
[09:06:22] [PASSED] out of max range
[09:06:22] [PASSED] out of min range
[09:06:22] [PASSED] zero dst
[09:06:22] [PASSED] negative src
[09:06:22] [PASSED] negative dst
[09:06:22] ============ [PASSED] drm_test_rect_calc_vscale ============
[09:06:22] ================== drm_test_rect_rotate ===================
[09:06:22] [PASSED] reflect-x
[09:06:22] [PASSED] reflect-y
[09:06:22] [PASSED] rotate-0
[09:06:22] [PASSED] rotate-90
[09:06:22] [PASSED] rotate-180
[09:06:22] [PASSED] rotate-270
[09:06:22] ============== [PASSED] drm_test_rect_rotate ===============
[09:06:22] ================ drm_test_rect_rotate_inv =================
[09:06:22] [PASSED] reflect-x
[09:06:22] [PASSED] reflect-y
[09:06:22] [PASSED] rotate-0
[09:06:22] [PASSED] rotate-90
[09:06:22] [PASSED] rotate-180
[09:06:22] [PASSED] rotate-270
[09:06:22] ============ [PASSED] drm_test_rect_rotate_inv =============
[09:06:22] ==================== [PASSED] drm_rect =====================
[09:06:22] ============ drm_sysfb_modeset_test (1 subtest) ============
[09:06:22] ============ drm_test_sysfb_build_fourcc_list =============
[09:06:22] [PASSED] no native formats
[09:06:22] [PASSED] XRGB8888 as native format
[09:06:22] [PASSED] remove duplicates
[09:06:22] [PASSED] convert alpha formats
[09:06:22] [PASSED] random formats
[09:06:22] ======== [PASSED] drm_test_sysfb_build_fourcc_list =========
[09:06:22] ============= [PASSED] drm_sysfb_modeset_test ==============
[09:06:22] ============================================================
[09:06:22] Testing complete. Ran 622 tests: passed: 622
[09:06:22] Elapsed time: 27.222s total, 1.774s configuring, 25.028s building, 0.391s running
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/ttm/tests/.kunitconfig
[09:06:22] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[09:06:24] 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:06:33] Starting KUnit Kernel (1/1)...
[09:06:33] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[09:06:33] ================= ttm_device (5 subtests) ==================
[09:06:33] [PASSED] ttm_device_init_basic
[09:06:33] [PASSED] ttm_device_init_multiple
[09:06:33] [PASSED] ttm_device_fini_basic
[09:06:33] [PASSED] ttm_device_init_no_vma_man
[09:06:33] ================== ttm_device_init_pools ==================
[09:06:33] [PASSED] No DMA allocations, no DMA32 required
[09:06:33] [PASSED] DMA allocations, DMA32 required
[09:06:33] [PASSED] No DMA allocations, DMA32 required
[09:06:33] [PASSED] DMA allocations, no DMA32 required
[09:06:33] ============== [PASSED] ttm_device_init_pools ==============
[09:06:33] =================== [PASSED] ttm_device ====================
[09:06:33] ================== ttm_pool (8 subtests) ===================
[09:06:33] ================== ttm_pool_alloc_basic ===================
[09:06:33] [PASSED] One page
[09:06:33] [PASSED] More than one page
[09:06:33] [PASSED] Above the allocation limit
[09:06:33] [PASSED] One page, with coherent DMA mappings enabled
[09:06:33] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[09:06:33] ============== [PASSED] ttm_pool_alloc_basic ===============
[09:06:33] ============== ttm_pool_alloc_basic_dma_addr ==============
[09:06:33] [PASSED] One page
[09:06:33] [PASSED] More than one page
[09:06:33] [PASSED] Above the allocation limit
[09:06:33] [PASSED] One page, with coherent DMA mappings enabled
[09:06:33] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[09:06:33] ========== [PASSED] ttm_pool_alloc_basic_dma_addr ==========
[09:06:33] [PASSED] ttm_pool_alloc_order_caching_match
[09:06:33] [PASSED] ttm_pool_alloc_caching_mismatch
[09:06:33] [PASSED] ttm_pool_alloc_order_mismatch
[09:06:33] [PASSED] ttm_pool_free_dma_alloc
[09:06:33] [PASSED] ttm_pool_free_no_dma_alloc
[09:06:33] [PASSED] ttm_pool_fini_basic
[09:06:33] ==================== [PASSED] ttm_pool =====================
[09:06:33] ================ ttm_resource (8 subtests) =================
[09:06:33] ================= ttm_resource_init_basic =================
[09:06:33] [PASSED] Init resource in TTM_PL_SYSTEM
[09:06:33] [PASSED] Init resource in TTM_PL_VRAM
[09:06:33] [PASSED] Init resource in a private placement
[09:06:33] [PASSED] Init resource in TTM_PL_SYSTEM, set placement flags
[09:06:33] ============= [PASSED] ttm_resource_init_basic =============
[09:06:33] [PASSED] ttm_resource_init_pinned
[09:06:33] [PASSED] ttm_resource_fini_basic
[09:06:33] [PASSED] ttm_resource_manager_init_basic
[09:06:33] [PASSED] ttm_resource_manager_usage_basic
[09:06:33] [PASSED] ttm_resource_manager_set_used_basic
[09:06:33] [PASSED] ttm_sys_man_alloc_basic
[09:06:33] [PASSED] ttm_sys_man_free_basic
[09:06:33] ================== [PASSED] ttm_resource ===================
[09:06:33] =================== ttm_tt (15 subtests) ===================
[09:06:33] ==================== ttm_tt_init_basic ====================
[09:06:33] [PASSED] Page-aligned size
[09:06:33] [PASSED] Extra pages requested
[09:06:33] ================ [PASSED] ttm_tt_init_basic ================
[09:06:33] [PASSED] ttm_tt_init_misaligned
[09:06:33] [PASSED] ttm_tt_fini_basic
[09:06:33] [PASSED] ttm_tt_fini_sg
[09:06:33] [PASSED] ttm_tt_fini_shmem
[09:06:33] [PASSED] ttm_tt_create_basic
[09:06:33] [PASSED] ttm_tt_create_invalid_bo_type
[09:06:33] [PASSED] ttm_tt_create_ttm_exists
[09:06:33] [PASSED] ttm_tt_create_failed
[09:06:33] [PASSED] ttm_tt_destroy_basic
[09:06:33] [PASSED] ttm_tt_populate_null_ttm
[09:06:33] [PASSED] ttm_tt_populate_populated_ttm
[09:06:33] [PASSED] ttm_tt_unpopulate_basic
[09:06:33] [PASSED] ttm_tt_unpopulate_empty_ttm
[09:06:33] [PASSED] ttm_tt_swapin_basic
[09:06:33] ===================== [PASSED] ttm_tt ======================
[09:06:33] =================== ttm_bo (14 subtests) ===================
[09:06:33] =========== ttm_bo_reserve_optimistic_no_ticket ===========
[09:06:33] [PASSED] Cannot be interrupted and sleeps
[09:06:33] [PASSED] Cannot be interrupted, locks straight away
[09:06:33] [PASSED] Can be interrupted, sleeps
[09:06:33] ======= [PASSED] ttm_bo_reserve_optimistic_no_ticket =======
[09:06:33] [PASSED] ttm_bo_reserve_locked_no_sleep
[09:06:33] [PASSED] ttm_bo_reserve_no_wait_ticket
[09:06:33] [PASSED] ttm_bo_reserve_double_resv
[09:06:33] [PASSED] ttm_bo_reserve_interrupted
[09:06:33] [PASSED] ttm_bo_reserve_deadlock
[09:06:33] [PASSED] ttm_bo_unreserve_basic
[09:06:33] [PASSED] ttm_bo_unreserve_pinned
[09:06:33] [PASSED] ttm_bo_unreserve_bulk
[09:06:33] [PASSED] ttm_bo_fini_basic
[09:06:33] [PASSED] ttm_bo_fini_shared_resv
[09:06:33] [PASSED] ttm_bo_pin_basic
[09:06:33] [PASSED] ttm_bo_pin_unpin_resource
[09:06:33] [PASSED] ttm_bo_multiple_pin_one_unpin
[09:06:33] ===================== [PASSED] ttm_bo ======================
[09:06:33] ============== ttm_bo_validate (21 subtests) ===============
[09:06:33] ============== ttm_bo_init_reserved_sys_man ===============
[09:06:33] [PASSED] Buffer object for userspace
[09:06:33] [PASSED] Kernel buffer object
[09:06:33] [PASSED] Shared buffer object
[09:06:33] ========== [PASSED] ttm_bo_init_reserved_sys_man ===========
[09:06:33] ============== ttm_bo_init_reserved_mock_man ==============
[09:06:33] [PASSED] Buffer object for userspace
[09:06:33] [PASSED] Kernel buffer object
[09:06:33] [PASSED] Shared buffer object
[09:06:33] ========== [PASSED] ttm_bo_init_reserved_mock_man ==========
[09:06:33] [PASSED] ttm_bo_init_reserved_resv
[09:06:33] ================== ttm_bo_validate_basic ==================
[09:06:33] [PASSED] Buffer object for userspace
[09:06:33] [PASSED] Kernel buffer object
[09:06:33] [PASSED] Shared buffer object
[09:06:33] ============== [PASSED] ttm_bo_validate_basic ==============
[09:06:33] [PASSED] ttm_bo_validate_invalid_placement
[09:06:33] ============= ttm_bo_validate_same_placement ==============
[09:06:33] [PASSED] System manager
[09:06:33] [PASSED] VRAM manager
[09:06:33] ========= [PASSED] ttm_bo_validate_same_placement ==========
[09:06:33] [PASSED] ttm_bo_validate_failed_alloc
[09:06:33] [PASSED] ttm_bo_validate_pinned
[09:06:33] [PASSED] ttm_bo_validate_busy_placement
[09:06:33] ================ ttm_bo_validate_multihop =================
[09:06:33] [PASSED] Buffer object for userspace
[09:06:33] [PASSED] Kernel buffer object
[09:06:33] [PASSED] Shared buffer object
[09:06:33] ============ [PASSED] ttm_bo_validate_multihop =============
[09:06:33] ========== ttm_bo_validate_no_placement_signaled ==========
[09:06:33] [PASSED] Buffer object in system domain, no page vector
[09:06:33] [PASSED] Buffer object in system domain with an existing page vector
[09:06:33] ====== [PASSED] ttm_bo_validate_no_placement_signaled ======
[09:06:33] ======== ttm_bo_validate_no_placement_not_signaled ========
[09:06:33] [PASSED] Buffer object for userspace
[09:06:33] [PASSED] Kernel buffer object
[09:06:33] [PASSED] Shared buffer object
[09:06:33] ==== [PASSED] ttm_bo_validate_no_placement_not_signaled ====
[09:06:33] [PASSED] ttm_bo_validate_move_fence_signaled
[09:06:34] ========= ttm_bo_validate_move_fence_not_signaled =========
[09:06:34] [PASSED] Waits for GPU
[09:06:34] [PASSED] Tries to lock straight away
[09:06:34] ===== [PASSED] ttm_bo_validate_move_fence_not_signaled =====
[09:06:34] [PASSED] ttm_bo_validate_happy_evict
[09:06:34] [PASSED] ttm_bo_validate_all_pinned_evict
[09:06:34] [PASSED] ttm_bo_validate_allowed_only_evict
[09:06:34] [PASSED] ttm_bo_validate_deleted_evict
[09:06:34] [PASSED] ttm_bo_validate_busy_domain_evict
[09:06:34] [PASSED] ttm_bo_validate_evict_gutting
[09:06:34] [PASSED] ttm_bo_validate_recrusive_evict
stty: 'standard input': Inappropriate ioctl for device
[09:06:34] ================= [PASSED] ttm_bo_validate =================
[09:06:34] ============================================================
[09:06:34] Testing complete. Ran 101 tests: passed: 101
[09:06:34] Elapsed time: 11.396s total, 1.669s configuring, 9.510s building, 0.182s 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 GT runtime suspend/resume (rev6)
2025-10-30 12:23 [PATCH v8 0/4] Introduce GT runtime suspend/resume Raag Jadav
` (4 preceding siblings ...)
2025-11-03 9:06 ` ✓ CI.KUnit: success for Introduce GT runtime suspend/resume (rev6) Patchwork
@ 2025-11-03 10:14 ` Patchwork
2025-11-03 11:38 ` ✗ Xe.CI.Full: failure " Patchwork
6 siblings, 0 replies; 16+ messages in thread
From: Patchwork @ 2025-11-03 10:14 UTC (permalink / raw)
To: Raag Jadav; +Cc: intel-xe
[-- Attachment #1: Type: text/plain, Size: 865 bytes --]
== Series Details ==
Series: Introduce GT runtime suspend/resume (rev6)
URL : https://patchwork.freedesktop.org/series/154017/
State : success
== Summary ==
CI Bug Log - changes from xe-4031-2901e10c5a4844b6d9eb9001c60cd99f5c0f84c9_BAT -> xe-pw-154017v6_BAT
====================================================
Summary
-------
**SUCCESS**
No regressions found.
Participating hosts (12 -> 12)
------------------------------
No changes in participating hosts
Changes
-------
No changes found
Build changes
-------------
* Linux: xe-4031-2901e10c5a4844b6d9eb9001c60cd99f5c0f84c9 -> xe-pw-154017v6
IGT_8605: 8605
xe-4031-2901e10c5a4844b6d9eb9001c60cd99f5c0f84c9: 2901e10c5a4844b6d9eb9001c60cd99f5c0f84c9
xe-pw-154017v6: 154017v6
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v6/index.html
[-- Attachment #2: Type: text/html, Size: 1413 bytes --]
^ permalink raw reply [flat|nested] 16+ messages in thread
* ✗ Xe.CI.Full: failure for Introduce GT runtime suspend/resume (rev6)
2025-10-30 12:23 [PATCH v8 0/4] Introduce GT runtime suspend/resume Raag Jadav
` (5 preceding siblings ...)
2025-11-03 10:14 ` ✓ Xe.CI.BAT: " Patchwork
@ 2025-11-03 11:38 ` Patchwork
6 siblings, 0 replies; 16+ messages in thread
From: Patchwork @ 2025-11-03 11:38 UTC (permalink / raw)
To: Raag Jadav; +Cc: intel-xe
[-- Attachment #1: Type: text/plain, Size: 33708 bytes --]
== Series Details ==
Series: Introduce GT runtime suspend/resume (rev6)
URL : https://patchwork.freedesktop.org/series/154017/
State : failure
== Summary ==
CI Bug Log - changes from xe-4031-2901e10c5a4844b6d9eb9001c60cd99f5c0f84c9_FULL -> xe-pw-154017v6_FULL
====================================================
Summary
-------
**FAILURE**
Serious unknown changes coming with xe-pw-154017v6_FULL absolutely need to be
verified manually.
If you think the reported changes have nothing to do with the changes
introduced in xe-pw-154017v6_FULL, please notify your bug team (I915-ci-infra@lists.freedesktop.org) to allow them
to document this new failure mode, which will reduce false positives in CI.
Participating hosts (4 -> 4)
------------------------------
No changes in participating hosts
Possible new issues
-------------------
Here are the unknown changes that may have been introduced in xe-pw-154017v6_FULL:
### IGT changes ###
#### Possible regressions ####
* igt@kms_dp_link_training@non-uhbr-sst:
- shard-bmg: [PASS][1] -> [FAIL][2] +1 other test fail
[1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4031-2901e10c5a4844b6d9eb9001c60cd99f5c0f84c9/shard-bmg-8/igt@kms_dp_link_training@non-uhbr-sst.html
[2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v6/shard-bmg-6/igt@kms_dp_link_training@non-uhbr-sst.html
Known issues
------------
Here are the changes found in xe-pw-154017v6_FULL that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@kms_big_fb@x-tiled-8bpp-rotate-90:
- shard-bmg: NOTRUN -> [SKIP][3] ([Intel XE#2327])
[3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v6/shard-bmg-7/igt@kms_big_fb@x-tiled-8bpp-rotate-90.html
* igt@kms_big_fb@y-tiled-8bpp-rotate-270:
- shard-bmg: NOTRUN -> [SKIP][4] ([Intel XE#1124])
[4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v6/shard-bmg-7/igt@kms_big_fb@y-tiled-8bpp-rotate-270.html
* igt@kms_ccs@bad-rotation-90-4-tiled-lnl-ccs@pipe-c-dp-2:
- shard-bmg: NOTRUN -> [SKIP][5] ([Intel XE#2652] / [Intel XE#787]) +3 other tests skip
[5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v6/shard-bmg-5/igt@kms_ccs@bad-rotation-90-4-tiled-lnl-ccs@pipe-c-dp-2.html
* igt@kms_ccs@crc-sprite-planes-basic-4-tiled-mtl-mc-ccs:
- shard-bmg: NOTRUN -> [SKIP][6] ([Intel XE#2887])
[6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v6/shard-bmg-7/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-mtl-mc-ccs.html
* igt@kms_ccs@crc-sprite-planes-basic-y-tiled-ccs:
- shard-lnl: NOTRUN -> [SKIP][7] ([Intel XE#2887])
[7]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v6/shard-lnl-3/igt@kms_ccs@crc-sprite-planes-basic-y-tiled-ccs.html
* igt@kms_ccs@random-ccs-data-4-tiled-dg2-mc-ccs@pipe-d-dp-4:
- shard-dg2-set2: NOTRUN -> [INCOMPLETE][8] ([Intel XE#1727] / [Intel XE#3113] / [Intel XE#4345] / [Intel XE#6168])
[8]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v6/shard-dg2-463/igt@kms_ccs@random-ccs-data-4-tiled-dg2-mc-ccs@pipe-d-dp-4.html
* igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs-cc:
- shard-dg2-set2: [PASS][9] -> [INCOMPLETE][10] ([Intel XE#1727] / [Intel XE#3113] / [Intel XE#4345] / [Intel XE#6168])
[9]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4031-2901e10c5a4844b6d9eb9001c60cd99f5c0f84c9/shard-dg2-463/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs-cc.html
[10]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v6/shard-dg2-434/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs-cc.html
* igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs-cc@pipe-a-dp-4:
- shard-dg2-set2: [PASS][11] -> [INCOMPLETE][12] ([Intel XE#6168])
[11]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4031-2901e10c5a4844b6d9eb9001c60cd99f5c0f84c9/shard-dg2-463/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs-cc@pipe-a-dp-4.html
[12]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v6/shard-dg2-434/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs-cc@pipe-a-dp-4.html
* igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs-cc@pipe-a-hdmi-a-6:
- shard-dg2-set2: [PASS][13] -> [DMESG-WARN][14] ([Intel XE#1727] / [Intel XE#3113])
[13]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4031-2901e10c5a4844b6d9eb9001c60cd99f5c0f84c9/shard-dg2-463/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs-cc@pipe-a-hdmi-a-6.html
[14]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v6/shard-dg2-434/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs-cc@pipe-a-hdmi-a-6.html
* igt@kms_chamelium_hpd@dp-hpd-after-suspend:
- shard-bmg: NOTRUN -> [SKIP][15] ([Intel XE#2252])
[15]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v6/shard-bmg-7/igt@kms_chamelium_hpd@dp-hpd-after-suspend.html
* igt@kms_content_protection@legacy:
- shard-lnl: NOTRUN -> [SKIP][16] ([Intel XE#3278])
[16]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v6/shard-lnl-3/igt@kms_content_protection@legacy.html
* igt@kms_cursor_crc@cursor-random-32x32:
- shard-bmg: NOTRUN -> [SKIP][17] ([Intel XE#2320])
[17]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v6/shard-bmg-7/igt@kms_cursor_crc@cursor-random-32x32.html
* igt@kms_cursor_legacy@2x-flip-vs-cursor-atomic:
- shard-bmg: [PASS][18] -> [SKIP][19] ([Intel XE#2291]) +1 other test skip
[18]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4031-2901e10c5a4844b6d9eb9001c60cd99f5c0f84c9/shard-bmg-8/igt@kms_cursor_legacy@2x-flip-vs-cursor-atomic.html
[19]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v6/shard-bmg-6/igt@kms_cursor_legacy@2x-flip-vs-cursor-atomic.html
* igt@kms_cursor_legacy@flip-vs-cursor-legacy:
- shard-bmg: [PASS][20] -> [FAIL][21] ([Intel XE#4633])
[20]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4031-2901e10c5a4844b6d9eb9001c60cd99f5c0f84c9/shard-bmg-5/igt@kms_cursor_legacy@flip-vs-cursor-legacy.html
[21]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v6/shard-bmg-2/igt@kms_cursor_legacy@flip-vs-cursor-legacy.html
* igt@kms_cursor_legacy@forked-bo:
- shard-bmg: [PASS][22] -> [DMESG-WARN][23] ([Intel XE#5354]) +1 other test dmesg-warn
[22]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4031-2901e10c5a4844b6d9eb9001c60cd99f5c0f84c9/shard-bmg-8/igt@kms_cursor_legacy@forked-bo.html
[23]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v6/shard-bmg-6/igt@kms_cursor_legacy@forked-bo.html
* igt@kms_flip@flip-vs-expired-vblank@a-edp1:
- shard-lnl: [PASS][24] -> [FAIL][25] ([Intel XE#301])
[24]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4031-2901e10c5a4844b6d9eb9001c60cd99f5c0f84c9/shard-lnl-3/igt@kms_flip@flip-vs-expired-vblank@a-edp1.html
[25]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v6/shard-lnl-2/igt@kms_flip@flip-vs-expired-vblank@a-edp1.html
* igt@kms_flip@flip-vs-expired-vblank@c-edp1:
- shard-lnl: [PASS][26] -> [FAIL][27] ([Intel XE#301] / [Intel XE#3149]) +1 other test fail
[26]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4031-2901e10c5a4844b6d9eb9001c60cd99f5c0f84c9/shard-lnl-3/igt@kms_flip@flip-vs-expired-vblank@c-edp1.html
[27]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v6/shard-lnl-2/igt@kms_flip@flip-vs-expired-vblank@c-edp1.html
* igt@kms_flip@flip-vs-suspend-interruptible:
- shard-dg2-set2: [PASS][28] -> [INCOMPLETE][29] ([Intel XE#2049] / [Intel XE#2597]) +1 other test incomplete
[28]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4031-2901e10c5a4844b6d9eb9001c60cd99f5c0f84c9/shard-dg2-463/igt@kms_flip@flip-vs-suspend-interruptible.html
[29]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v6/shard-dg2-434/igt@kms_flip@flip-vs-suspend-interruptible.html
* igt@kms_flip@flip-vs-suspend@b-hdmi-a1:
- shard-adlp: [PASS][30] -> [DMESG-WARN][31] ([Intel XE#4543]) +2 other tests dmesg-warn
[30]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4031-2901e10c5a4844b6d9eb9001c60cd99f5c0f84c9/shard-adlp-9/igt@kms_flip@flip-vs-suspend@b-hdmi-a1.html
[31]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v6/shard-adlp-4/igt@kms_flip@flip-vs-suspend@b-hdmi-a1.html
* igt@kms_flip@plain-flip-ts-check:
- shard-bmg: [PASS][32] -> [FAIL][33] ([Intel XE#3098] / [Intel XE#6266])
[32]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4031-2901e10c5a4844b6d9eb9001c60cd99f5c0f84c9/shard-bmg-8/igt@kms_flip@plain-flip-ts-check.html
[33]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v6/shard-bmg-6/igt@kms_flip@plain-flip-ts-check.html
* igt@kms_flip@plain-flip-ts-check@a-hdmi-a3:
- shard-bmg: [PASS][34] -> [FAIL][35] ([Intel XE#3098])
[34]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4031-2901e10c5a4844b6d9eb9001c60cd99f5c0f84c9/shard-bmg-8/igt@kms_flip@plain-flip-ts-check@a-hdmi-a3.html
[35]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v6/shard-bmg-6/igt@kms_flip@plain-flip-ts-check@a-hdmi-a3.html
* igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling:
- shard-bmg: NOTRUN -> [SKIP][36] ([Intel XE#2293] / [Intel XE#2380])
[36]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v6/shard-bmg-7/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling.html
* igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling@pipe-a-valid-mode:
- shard-bmg: NOTRUN -> [SKIP][37] ([Intel XE#2293])
[37]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v6/shard-bmg-7/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling@pipe-a-valid-mode.html
* igt@kms_flip_tiling@flip-change-tiling:
- shard-adlp: [PASS][38] -> [DMESG-FAIL][39] ([Intel XE#4543]) +1 other test dmesg-fail
[38]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4031-2901e10c5a4844b6d9eb9001c60cd99f5c0f84c9/shard-adlp-3/igt@kms_flip_tiling@flip-change-tiling.html
[39]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v6/shard-adlp-2/igt@kms_flip_tiling@flip-change-tiling.html
* igt@kms_flip_tiling@flip-change-tiling@pipe-d-hdmi-a-1-y-to-y:
- shard-adlp: [PASS][40] -> [FAIL][41] ([Intel XE#1874]) +2 other tests fail
[40]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4031-2901e10c5a4844b6d9eb9001c60cd99f5c0f84c9/shard-adlp-3/igt@kms_flip_tiling@flip-change-tiling@pipe-d-hdmi-a-1-y-to-y.html
[41]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v6/shard-adlp-2/igt@kms_flip_tiling@flip-change-tiling@pipe-d-hdmi-a-1-y-to-y.html
* igt@kms_frontbuffer_tracking@drrs-1p-primscrn-shrfb-msflip-blt:
- shard-lnl: NOTRUN -> [SKIP][42] ([Intel XE#651])
[42]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v6/shard-lnl-3/igt@kms_frontbuffer_tracking@drrs-1p-primscrn-shrfb-msflip-blt.html
* igt@kms_frontbuffer_tracking@fbc-1p-pri-indfb-multidraw:
- shard-bmg: NOTRUN -> [SKIP][43] ([Intel XE#5390]) +2 other tests skip
[43]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v6/shard-bmg-7/igt@kms_frontbuffer_tracking@fbc-1p-pri-indfb-multidraw.html
* igt@kms_frontbuffer_tracking@fbcdrrs-1p-offscreen-pri-shrfb-draw-mmap-wc:
- shard-bmg: NOTRUN -> [SKIP][44] ([Intel XE#2311]) +4 other tests skip
[44]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v6/shard-bmg-7/igt@kms_frontbuffer_tracking@fbcdrrs-1p-offscreen-pri-shrfb-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@psr-2p-scndscrn-cur-indfb-draw-mmap-wc:
- shard-lnl: NOTRUN -> [SKIP][45] ([Intel XE#656])
[45]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v6/shard-lnl-3/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-cur-indfb-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@psr-2p-scndscrn-pri-indfb-draw-mmap-wc:
- shard-bmg: NOTRUN -> [SKIP][46] ([Intel XE#2313])
[46]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v6/shard-bmg-7/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-pri-indfb-draw-mmap-wc.html
* igt@kms_joiner@switch-modeset-ultra-joiner-big-joiner:
- shard-bmg: NOTRUN -> [SKIP][47] ([Intel XE#4090])
[47]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v6/shard-bmg-7/igt@kms_joiner@switch-modeset-ultra-joiner-big-joiner.html
* igt@kms_plane@plane-panning-top-left@pipe-a:
- shard-adlp: [PASS][48] -> [DMESG-WARN][49] ([Intel XE#2953] / [Intel XE#4173]) +8 other tests dmesg-warn
[48]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4031-2901e10c5a4844b6d9eb9001c60cd99f5c0f84c9/shard-adlp-3/igt@kms_plane@plane-panning-top-left@pipe-a.html
[49]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v6/shard-adlp-2/igt@kms_plane@plane-panning-top-left@pipe-a.html
* igt@kms_pm_rpm@dpms-mode-unset-lpsp:
- shard-bmg: NOTRUN -> [SKIP][50] ([Intel XE#1439] / [Intel XE#836])
[50]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v6/shard-bmg-7/igt@kms_pm_rpm@dpms-mode-unset-lpsp.html
* igt@kms_psr@psr2-sprite-blt:
- shard-bmg: NOTRUN -> [SKIP][51] ([Intel XE#1406] / [Intel XE#2234] / [Intel XE#2850]) +2 other tests skip
[51]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v6/shard-bmg-7/igt@kms_psr@psr2-sprite-blt.html
* igt@xe_compute@ccs-mode-basic:
- shard-lnl: NOTRUN -> [SKIP][52] ([Intel XE#1447])
[52]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v6/shard-lnl-3/igt@xe_compute@ccs-mode-basic.html
* igt@xe_eudebug_online@preempt-breakpoint:
- shard-bmg: NOTRUN -> [SKIP][53] ([Intel XE#4837])
[53]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v6/shard-bmg-7/igt@xe_eudebug_online@preempt-breakpoint.html
* igt@xe_evict@evict-beng-mixed-many-threads-small:
- shard-bmg: [PASS][54] -> [INCOMPLETE][55] ([Intel XE#6321])
[54]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4031-2901e10c5a4844b6d9eb9001c60cd99f5c0f84c9/shard-bmg-5/igt@xe_evict@evict-beng-mixed-many-threads-small.html
[55]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v6/shard-bmg-2/igt@xe_evict@evict-beng-mixed-many-threads-small.html
* igt@xe_exec_system_allocator@threads-many-mmap-new-huge:
- shard-bmg: NOTRUN -> [SKIP][56] ([Intel XE#4943]) +4 other tests skip
[56]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v6/shard-bmg-7/igt@xe_exec_system_allocator@threads-many-mmap-new-huge.html
* igt@xe_intel_bb@intel-bb-blit-x:
- shard-bmg: [PASS][57] -> [DMESG-WARN][58] ([Intel XE#3428]) +16 other tests dmesg-warn
[57]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4031-2901e10c5a4844b6d9eb9001c60cd99f5c0f84c9/shard-bmg-1/igt@xe_intel_bb@intel-bb-blit-x.html
[58]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v6/shard-bmg-6/igt@xe_intel_bb@intel-bb-blit-x.html
* igt@xe_pm@d3hot-mmap-system:
- shard-bmg: [PASS][59] -> [DMESG-FAIL][60] ([Intel XE#3428])
[59]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4031-2901e10c5a4844b6d9eb9001c60cd99f5c0f84c9/shard-bmg-1/igt@xe_pm@d3hot-mmap-system.html
[60]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v6/shard-bmg-6/igt@xe_pm@d3hot-mmap-system.html
* igt@xe_pmu@gt-frequency:
- shard-dg2-set2: [PASS][61] -> [FAIL][62] ([Intel XE#5841]) +1 other test fail
[61]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4031-2901e10c5a4844b6d9eb9001c60cd99f5c0f84c9/shard-dg2-433/igt@xe_pmu@gt-frequency.html
[62]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v6/shard-dg2-432/igt@xe_pmu@gt-frequency.html
#### Possible fixes ####
* igt@kms_async_flips@async-flip-with-page-flip-events-linear@pipe-c-edp-1:
- shard-lnl: [FAIL][63] ([Intel XE#5993]) -> [PASS][64] +3 other tests pass
[63]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4031-2901e10c5a4844b6d9eb9001c60cd99f5c0f84c9/shard-lnl-2/igt@kms_async_flips@async-flip-with-page-flip-events-linear@pipe-c-edp-1.html
[64]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v6/shard-lnl-8/igt@kms_async_flips@async-flip-with-page-flip-events-linear@pipe-c-edp-1.html
* igt@kms_atomic_interruptible@legacy-pageflip:
- shard-adlp: [DMESG-WARN][65] ([Intel XE#2953] / [Intel XE#4173]) -> [PASS][66]
[65]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4031-2901e10c5a4844b6d9eb9001c60cd99f5c0f84c9/shard-adlp-4/igt@kms_atomic_interruptible@legacy-pageflip.html
[66]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v6/shard-adlp-2/igt@kms_atomic_interruptible@legacy-pageflip.html
* igt@kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-0-async-flip:
- shard-adlp: [DMESG-FAIL][67] ([Intel XE#4543]) -> [PASS][68]
[67]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4031-2901e10c5a4844b6d9eb9001c60cd99f5c0f84c9/shard-adlp-8/igt@kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-0-async-flip.html
[68]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v6/shard-adlp-4/igt@kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-0-async-flip.html
* igt@kms_ccs@random-ccs-data-4-tiled-dg2-mc-ccs@pipe-a-hdmi-a-6:
- shard-dg2-set2: [INCOMPLETE][69] ([Intel XE#1727] / [Intel XE#3113] / [Intel XE#6168]) -> [PASS][70]
[69]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4031-2901e10c5a4844b6d9eb9001c60cd99f5c0f84c9/shard-dg2-436/igt@kms_ccs@random-ccs-data-4-tiled-dg2-mc-ccs@pipe-a-hdmi-a-6.html
[70]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v6/shard-dg2-463/igt@kms_ccs@random-ccs-data-4-tiled-dg2-mc-ccs@pipe-a-hdmi-a-6.html
* igt@kms_cursor_crc@cursor-tearing-framebuffer-change:
- shard-bmg: [SKIP][71] ([Intel XE#2320]) -> [PASS][72]
[71]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4031-2901e10c5a4844b6d9eb9001c60cd99f5c0f84c9/shard-bmg-6/igt@kms_cursor_crc@cursor-tearing-framebuffer-change.html
[72]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v6/shard-bmg-4/igt@kms_cursor_crc@cursor-tearing-framebuffer-change.html
* igt@kms_cursor_legacy@cursora-vs-flipb-atomic-transitions:
- shard-bmg: [SKIP][73] ([Intel XE#2291]) -> [PASS][74]
[73]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4031-2901e10c5a4844b6d9eb9001c60cd99f5c0f84c9/shard-bmg-6/igt@kms_cursor_legacy@cursora-vs-flipb-atomic-transitions.html
[74]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v6/shard-bmg-5/igt@kms_cursor_legacy@cursora-vs-flipb-atomic-transitions.html
* igt@kms_cursor_legacy@single-move:
- shard-dg2-set2: [DMESG-WARN][75] ([Intel XE#6363]) -> [PASS][76] +1 other test pass
[75]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4031-2901e10c5a4844b6d9eb9001c60cd99f5c0f84c9/shard-dg2-464/igt@kms_cursor_legacy@single-move.html
[76]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v6/shard-dg2-464/igt@kms_cursor_legacy@single-move.html
* igt@kms_flip@2x-blocking-absolute-wf_vblank-interruptible:
- shard-bmg: [SKIP][77] ([Intel XE#2316]) -> [PASS][78]
[77]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4031-2901e10c5a4844b6d9eb9001c60cd99f5c0f84c9/shard-bmg-6/igt@kms_flip@2x-blocking-absolute-wf_vblank-interruptible.html
[78]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v6/shard-bmg-4/igt@kms_flip@2x-blocking-absolute-wf_vblank-interruptible.html
* igt@kms_flip@plain-flip-interruptible@d-hdmi-a1:
- shard-adlp: [DMESG-WARN][79] ([Intel XE#4543]) -> [PASS][80] +3 other tests pass
[79]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4031-2901e10c5a4844b6d9eb9001c60cd99f5c0f84c9/shard-adlp-1/igt@kms_flip@plain-flip-interruptible@d-hdmi-a1.html
[80]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v6/shard-adlp-9/igt@kms_flip@plain-flip-interruptible@d-hdmi-a1.html
* igt@kms_plane@planar-pixel-format-settings:
- shard-bmg: [FAIL][81] -> [PASS][82]
[81]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4031-2901e10c5a4844b6d9eb9001c60cd99f5c0f84c9/shard-bmg-6/igt@kms_plane@planar-pixel-format-settings.html
[82]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v6/shard-bmg-4/igt@kms_plane@planar-pixel-format-settings.html
* igt@kms_plane_lowres@tiling-x@pipe-b-dp-2:
- shard-bmg: [SKIP][83] -> [PASS][84] +3 other tests pass
[83]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4031-2901e10c5a4844b6d9eb9001c60cd99f5c0f84c9/shard-bmg-6/igt@kms_plane_lowres@tiling-x@pipe-b-dp-2.html
[84]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v6/shard-bmg-5/igt@kms_plane_lowres@tiling-x@pipe-b-dp-2.html
* igt@kms_pm_rpm@universal-planes@plane-63:
- shard-bmg: [DMESG-WARN][85] ([Intel XE#3428]) -> [PASS][86] +10 other tests pass
[85]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4031-2901e10c5a4844b6d9eb9001c60cd99f5c0f84c9/shard-bmg-6/igt@kms_pm_rpm@universal-planes@plane-63.html
[86]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v6/shard-bmg-5/igt@kms_pm_rpm@universal-planes@plane-63.html
* igt@kms_vblank@query-forked@pipe-d-dp-2:
- shard-bmg: [FAIL][87] ([Intel XE#6473]) -> [PASS][88] +1 other test pass
[87]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4031-2901e10c5a4844b6d9eb9001c60cd99f5c0f84c9/shard-bmg-6/igt@kms_vblank@query-forked@pipe-d-dp-2.html
[88]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v6/shard-bmg-5/igt@kms_vblank@query-forked@pipe-d-dp-2.html
* igt@xe_exec_system_allocator@process-many-large-free:
- shard-bmg: [DMESG-WARN][89] ([Intel XE#6381]) -> [PASS][90] +15 other tests pass
[89]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4031-2901e10c5a4844b6d9eb9001c60cd99f5c0f84c9/shard-bmg-6/igt@xe_exec_system_allocator@process-many-large-free.html
[90]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v6/shard-bmg-5/igt@xe_exec_system_allocator@process-many-large-free.html
* igt@xe_module_load@many-reload:
- shard-bmg: [DMESG-WARN][91] ([Intel XE#5244]) -> [PASS][92]
[91]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4031-2901e10c5a4844b6d9eb9001c60cd99f5c0f84c9/shard-bmg-6/igt@xe_module_load@many-reload.html
[92]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v6/shard-bmg-5/igt@xe_module_load@many-reload.html
* igt@xe_pm@d3hot-multiple-execs:
- shard-adlp: [WARN][93] -> [PASS][94]
[93]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4031-2901e10c5a4844b6d9eb9001c60cd99f5c0f84c9/shard-adlp-3/igt@xe_pm@d3hot-multiple-execs.html
[94]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v6/shard-adlp-2/igt@xe_pm@d3hot-multiple-execs.html
* igt@xe_pm_residency@gt-c6-freeze@gt0:
- shard-adlp: [DMESG-WARN][95] ([Intel XE#2953] / [Intel XE#3088] / [Intel XE#4173]) -> [PASS][96] +1 other test pass
[95]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4031-2901e10c5a4844b6d9eb9001c60cd99f5c0f84c9/shard-adlp-9/igt@xe_pm_residency@gt-c6-freeze@gt0.html
[96]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v6/shard-adlp-9/igt@xe_pm_residency@gt-c6-freeze@gt0.html
#### Warnings ####
* igt@kms_big_fb@x-tiled-64bpp-rotate-180:
- shard-adlp: [DMESG-FAIL][97] ([Intel XE#4543]) -> [DMESG-FAIL][98] ([Intel XE#2953] / [Intel XE#4173] / [Intel XE#4543])
[97]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4031-2901e10c5a4844b6d9eb9001c60cd99f5c0f84c9/shard-adlp-3/igt@kms_big_fb@x-tiled-64bpp-rotate-180.html
[98]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v6/shard-adlp-2/igt@kms_big_fb@x-tiled-64bpp-rotate-180.html
* igt@kms_frontbuffer_tracking@drrs-2p-primscrn-indfb-pgflip-blt:
- shard-bmg: [SKIP][99] ([Intel XE#2311]) -> [SKIP][100] ([Intel XE#2312]) +4 other tests skip
[99]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4031-2901e10c5a4844b6d9eb9001c60cd99f5c0f84c9/shard-bmg-8/igt@kms_frontbuffer_tracking@drrs-2p-primscrn-indfb-pgflip-blt.html
[100]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v6/shard-bmg-6/igt@kms_frontbuffer_tracking@drrs-2p-primscrn-indfb-pgflip-blt.html
* igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-pri-shrfb-draw-mmap-wc:
- shard-bmg: [SKIP][101] ([Intel XE#2312]) -> [SKIP][102] ([Intel XE#2311]) +1 other test skip
[101]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4031-2901e10c5a4844b6d9eb9001c60cd99f5c0f84c9/shard-bmg-6/igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-pri-shrfb-draw-mmap-wc.html
[102]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v6/shard-bmg-4/igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-pri-shrfb-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-onoff:
- shard-bmg: [SKIP][103] ([Intel XE#5390]) -> [SKIP][104] ([Intel XE#2312]) +2 other tests skip
[103]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4031-2901e10c5a4844b6d9eb9001c60cd99f5c0f84c9/shard-bmg-8/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-onoff.html
[104]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v6/shard-bmg-6/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-onoff.html
* igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-indfb-pgflip-blt:
- shard-bmg: [SKIP][105] ([Intel XE#2312]) -> [SKIP][106] ([Intel XE#5390]) +1 other test skip
[105]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4031-2901e10c5a4844b6d9eb9001c60cd99f5c0f84c9/shard-bmg-6/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-indfb-pgflip-blt.html
[106]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v6/shard-bmg-5/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-indfb-pgflip-blt.html
* igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-indfb-draw-blt:
- shard-bmg: [SKIP][107] ([Intel XE#2313]) -> [SKIP][108] ([Intel XE#2312]) +3 other tests skip
[107]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4031-2901e10c5a4844b6d9eb9001c60cd99f5c0f84c9/shard-bmg-8/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-indfb-draw-blt.html
[108]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v6/shard-bmg-6/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-indfb-draw-blt.html
* igt@kms_frontbuffer_tracking@psr-2p-scndscrn-pri-indfb-draw-render:
- shard-bmg: [SKIP][109] ([Intel XE#2312]) -> [SKIP][110] ([Intel XE#2313])
[109]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4031-2901e10c5a4844b6d9eb9001c60cd99f5c0f84c9/shard-bmg-6/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-pri-indfb-draw-render.html
[110]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v6/shard-bmg-5/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-pri-indfb-draw-render.html
* igt@kms_hdr@brightness-with-hdr:
- shard-bmg: [SKIP][111] ([Intel XE#3544]) -> [SKIP][112] ([Intel XE#3374] / [Intel XE#3544])
[111]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4031-2901e10c5a4844b6d9eb9001c60cd99f5c0f84c9/shard-bmg-1/igt@kms_hdr@brightness-with-hdr.html
[112]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v6/shard-bmg-4/igt@kms_hdr@brightness-with-hdr.html
* igt@kms_tiled_display@basic-test-pattern:
- shard-bmg: [SKIP][113] ([Intel XE#2426]) -> [FAIL][114] ([Intel XE#1729])
[113]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4031-2901e10c5a4844b6d9eb9001c60cd99f5c0f84c9/shard-bmg-7/igt@kms_tiled_display@basic-test-pattern.html
[114]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v6/shard-bmg-1/igt@kms_tiled_display@basic-test-pattern.html
- shard-dg2-set2: [FAIL][115] ([Intel XE#1729]) -> [SKIP][116] ([Intel XE#362])
[115]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4031-2901e10c5a4844b6d9eb9001c60cd99f5c0f84c9/shard-dg2-466/igt@kms_tiled_display@basic-test-pattern.html
[116]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v6/shard-dg2-463/igt@kms_tiled_display@basic-test-pattern.html
* igt@kms_tiled_display@basic-test-pattern-with-chamelium:
- shard-bmg: [SKIP][117] ([Intel XE#2509]) -> [SKIP][118] ([Intel XE#2426])
[117]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4031-2901e10c5a4844b6d9eb9001c60cd99f5c0f84c9/shard-bmg-5/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html
[118]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v6/shard-bmg-2/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html
* igt@xe_sriov_scheduling@equal-throughput:
- shard-adlp: [DMESG-FAIL][119] ([Intel XE#3868] / [Intel XE#5213]) -> [DMESG-FAIL][120] ([Intel XE#3868] / [Intel XE#5213] / [Intel XE#5545]) +1 other test dmesg-fail
[119]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4031-2901e10c5a4844b6d9eb9001c60cd99f5c0f84c9/shard-adlp-2/igt@xe_sriov_scheduling@equal-throughput.html
[120]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v6/shard-adlp-6/igt@xe_sriov_scheduling@equal-throughput.html
[Intel XE#1124]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1124
[Intel XE#1406]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1406
[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#1727]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1727
[Intel XE#1729]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1729
[Intel XE#1874]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1874
[Intel XE#2049]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2049
[Intel XE#2234]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2234
[Intel XE#2252]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2252
[Intel XE#2291]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2291
[Intel XE#2293]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2293
[Intel XE#2311]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2311
[Intel XE#2312]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2312
[Intel XE#2313]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2313
[Intel XE#2316]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2316
[Intel XE#2320]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2320
[Intel XE#2327]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2327
[Intel XE#2380]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2380
[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#2597]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2597
[Intel XE#2652]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2652
[Intel XE#2850]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2850
[Intel XE#2887]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2887
[Intel XE#2953]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2953
[Intel XE#301]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/301
[Intel XE#3088]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3088
[Intel XE#3098]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3098
[Intel XE#3113]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3113
[Intel XE#3149]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3149
[Intel XE#3278]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3278
[Intel XE#3374]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3374
[Intel XE#3428]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3428
[Intel XE#3544]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3544
[Intel XE#362]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/362
[Intel XE#3868]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3868
[Intel XE#4090]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4090
[Intel XE#4173]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4173
[Intel XE#4345]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4345
[Intel XE#4543]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4543
[Intel XE#4633]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4633
[Intel XE#4837]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4837
[Intel XE#4943]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4943
[Intel XE#5213]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5213
[Intel XE#5244]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5244
[Intel XE#5354]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5354
[Intel XE#5390]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5390
[Intel XE#5545]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5545
[Intel XE#5841]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5841
[Intel XE#5993]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5993
[Intel XE#6168]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6168
[Intel XE#6266]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6266
[Intel XE#6321]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6321
[Intel XE#6363]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6363
[Intel XE#6381]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6381
[Intel XE#6473]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6473
[Intel XE#651]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/651
[Intel XE#656]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/656
[Intel XE#787]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/787
[Intel XE#836]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/836
Build changes
-------------
* Linux: xe-4031-2901e10c5a4844b6d9eb9001c60cd99f5c0f84c9 -> xe-pw-154017v6
IGT_8605: 8605
xe-4031-2901e10c5a4844b6d9eb9001c60cd99f5c0f84c9: 2901e10c5a4844b6d9eb9001c60cd99f5c0f84c9
xe-pw-154017v6: 154017v6
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v6/index.html
[-- Attachment #2: Type: text/html, Size: 38923 bytes --]
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH v8 3/4] drm/xe/pm: Assert on runtime suspend if VFs are enabled
2025-10-30 12:23 ` [PATCH v8 3/4] drm/xe/pm: Assert on runtime suspend if VFs are enabled Raag Jadav
2025-10-30 18:33 ` Daniele Ceraolo Spurio
@ 2025-11-03 17:42 ` Matthew Brost
1 sibling, 0 replies; 16+ messages in thread
From: Matthew Brost @ 2025-11-03 17:42 UTC (permalink / raw)
To: Raag Jadav
Cc: lucas.demarchi, rodrigo.vivi, intel-xe, riana.tauro,
daniele.ceraolospurio, michal.wajdeczko, badal.nilawar
On Thu, Oct 30, 2025 at 05:53:56PM +0530, Raag Jadav wrote:
> We hold an additional reference to the runtime PM to keep PF in D0
> during VFs lifetime, as our VFs do not implement the PM capability.
> This means we should never be runtime suspending as long as VFs are
> enabled.
>
> v8: Add !IS_SRIOV_VF() assert (Matthew Brost)
>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
> Suggested-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
> Signed-off-by: Raag Jadav <raag.jadav@intel.com>
> ---
> drivers/gpu/drm/xe/xe_pci.c | 9 +++++++++
> 1 file changed, 9 insertions(+)
>
> diff --git a/drivers/gpu/drm/xe/xe_pci.c b/drivers/gpu/drm/xe/xe_pci.c
> index 6e59642e7820..1c37f4d91047 100644
> --- a/drivers/gpu/drm/xe/xe_pci.c
> +++ b/drivers/gpu/drm/xe/xe_pci.c
> @@ -1152,6 +1152,15 @@ static int xe_pci_runtime_suspend(struct device *dev)
> struct xe_device *xe = pdev_to_xe_device(pdev);
> int err;
>
> + /*
> + * We hold an additional reference to the runtime PM to keep PF in D0
> + * during VFs lifetime, as our VFs do not implement the PM capability.
> + * This means we should never be runtime suspending as long as VFs are
> + * enabled.
> + */
> + xe_assert(xe, !IS_SRIOV_VF(xe));
> + xe_assert(xe, !pci_num_vf(pdev));
> +
> err = xe_pm_runtime_suspend(xe);
> if (err)
> return err;
> --
> 2.34.1
>
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH v8 3/4] drm/xe/pm: Assert on runtime suspend if VFs are enabled
2025-10-31 15:04 ` Raag Jadav
@ 2025-11-04 11:15 ` Raag Jadav
2025-11-14 14:53 ` Raag Jadav
0 siblings, 1 reply; 16+ messages in thread
From: Raag Jadav @ 2025-11-04 11:15 UTC (permalink / raw)
To: Daniele Ceraolo Spurio
Cc: lucas.demarchi, rodrigo.vivi, intel-xe, riana.tauro,
matthew.brost, michal.wajdeczko, badal.nilawar
On Fri, Oct 31, 2025 at 04:04:30PM +0100, Raag Jadav wrote:
> On Thu, Oct 30, 2025 at 11:33:38AM -0700, Daniele Ceraolo Spurio wrote:
> > On 10/30/2025 5:23 AM, Raag Jadav wrote:
> > > We hold an additional reference to the runtime PM to keep PF in D0
> > > during VFs lifetime, as our VFs do not implement the PM capability.
> > > This means we should never be runtime suspending as long as VFs are
> > > enabled.
> > >
> > > v8: Add !IS_SRIOV_VF() assert (Matthew Brost)
> > >
> > > Suggested-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
> > > Signed-off-by: Raag Jadav <raag.jadav@intel.com>
> >
> > Reviewed-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
>
> Thank you.
>
> So I'm guessing this series is good to go?
Or perhaps anything else I can do here?
Raag
> > > ---
> > > drivers/gpu/drm/xe/xe_pci.c | 9 +++++++++
> > > 1 file changed, 9 insertions(+)
> > >
> > > diff --git a/drivers/gpu/drm/xe/xe_pci.c b/drivers/gpu/drm/xe/xe_pci.c
> > > index 6e59642e7820..1c37f4d91047 100644
> > > --- a/drivers/gpu/drm/xe/xe_pci.c
> > > +++ b/drivers/gpu/drm/xe/xe_pci.c
> > > @@ -1152,6 +1152,15 @@ static int xe_pci_runtime_suspend(struct device *dev)
> > > struct xe_device *xe = pdev_to_xe_device(pdev);
> > > int err;
> > > + /*
> > > + * We hold an additional reference to the runtime PM to keep PF in D0
> > > + * during VFs lifetime, as our VFs do not implement the PM capability.
> > > + * This means we should never be runtime suspending as long as VFs are
> > > + * enabled.
> > > + */
> > > + xe_assert(xe, !IS_SRIOV_VF(xe));
> > > + xe_assert(xe, !pci_num_vf(pdev));
> > > +
> > > err = xe_pm_runtime_suspend(xe);
> > > if (err)
> > > return err;
> >
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH v8 4/4] drm/xe/gt: Introduce runtime suspend/resume
2025-10-30 12:23 ` [PATCH v8 4/4] drm/xe/gt: Introduce runtime suspend/resume Raag Jadav
@ 2025-11-04 17:47 ` Matthew Brost
2025-11-05 9:02 ` Raag Jadav
0 siblings, 1 reply; 16+ messages in thread
From: Matthew Brost @ 2025-11-04 17:47 UTC (permalink / raw)
To: Raag Jadav
Cc: lucas.demarchi, rodrigo.vivi, intel-xe, riana.tauro,
daniele.ceraolospurio, michal.wajdeczko, badal.nilawar
On Thu, Oct 30, 2025 at 05:53:57PM +0530, Raag Jadav wrote:
> If power state is retained between suspend/resume cycle, we don't need
> to perform full GT re-initialization. Introduce runtime helpers for GT
> which greatly reduce suspend/resume delay.
>
> v2: Drop redundant xe_gt_sanitize() and xe_guc_ct_stop() (Daniele)
> Use runtime naming for guc helpers (Daniele)
> v3: Drop redundant logging, add kernel doc (Michal)
> Use runtime naming for ct helpers (Michal)
> v4: Fix tags (Rodrigo)
> v5: Include host_l2_vram workaround (Daniele)
> Reuse xe_guc_submit_enable/disable() helpers (Daniele)
>
> Co-developed-by: Riana Tauro <riana.tauro@intel.com>
> Signed-off-by: Riana Tauro <riana.tauro@intel.com>
> Signed-off-by: Raag Jadav <raag.jadav@intel.com>
> Acked-by: Matthew Brost <matthew.brost@intel.com>
> Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
> ---
> drivers/gpu/drm/xe/xe_gt.c | 60 ++++++++++++++++++++++++++++++++++
> drivers/gpu/drm/xe/xe_gt.h | 2 ++
> drivers/gpu/drm/xe/xe_guc.c | 34 +++++++++++++++++++
> drivers/gpu/drm/xe/xe_guc.h | 2 ++
> drivers/gpu/drm/xe/xe_guc_ct.c | 27 +++++++++++++++
> drivers/gpu/drm/xe/xe_guc_ct.h | 2 ++
> drivers/gpu/drm/xe/xe_pm.c | 10 +++---
> drivers/gpu/drm/xe/xe_uc.c | 28 ++++++++++++++++
> drivers/gpu/drm/xe/xe_uc.h | 2 ++
> 9 files changed, 162 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/gpu/drm/xe/xe_gt.c b/drivers/gpu/drm/xe/xe_gt.c
> index 89808b33d0a8..0c300f8dd588 100644
> --- a/drivers/gpu/drm/xe/xe_gt.c
> +++ b/drivers/gpu/drm/xe/xe_gt.c
> @@ -1008,6 +1008,66 @@ int xe_gt_resume(struct xe_gt *gt)
> return err;
> }
>
> +/**
> + * xe_gt_runtime_suspend() - GT runtime suspend
> + * @gt: the GT object
> + *
> + * Return: 0 on success, negative error code otherwise.
> + */
> +int xe_gt_runtime_suspend(struct xe_gt *gt)
> +{
> + unsigned int fw_ref;
> + int err = -ETIMEDOUT;
> +
> + xe_gt_dbg(gt, "runtime suspending\n");
> +
> + fw_ref = xe_force_wake_get(gt_to_fw(gt), XE_FORCEWAKE_ALL);
> + if (!xe_force_wake_ref_has_domain(fw_ref, XE_FORCEWAKE_ALL))
> + goto err_force_wake;
> +
> + xe_uc_runtime_suspend(>->uc);
> + xe_gt_disable_host_l2_vram(gt);
> +
> + xe_force_wake_put(gt_to_fw(gt), fw_ref);
> + xe_gt_dbg(gt, "runtime suspended\n");
> +
> + return 0;
> +
> +err_force_wake:
> + xe_force_wake_put(gt_to_fw(gt), fw_ref);
> + return err;
> +}
> +
> +/**
> + * xe_gt_runtime_resume() - GT runtime resume
> + * @gt: the GT object
> + *
> + * Return: 0 on success, negative error code otherwise.
> + */
> +int xe_gt_runtime_resume(struct xe_gt *gt)
> +{
> + unsigned int fw_ref;
> + int err = -ETIMEDOUT;
> +
> + xe_gt_dbg(gt, "runtime resuming\n");
> +
> + fw_ref = xe_force_wake_get(gt_to_fw(gt), XE_FORCEWAKE_ALL);
> + if (!xe_force_wake_ref_has_domain(fw_ref, XE_FORCEWAKE_ALL))
> + goto err_force_wake;
> +
> + xe_gt_enable_host_l2_vram(gt);
> + xe_uc_runtime_resume(>->uc);
> +
> + xe_force_wake_put(gt_to_fw(gt), fw_ref);
> + xe_gt_dbg(gt, "runtime resumed\n");
> +
> + return 0;
> +
> +err_force_wake:
> + xe_force_wake_put(gt_to_fw(gt), fw_ref);
> + return err;
> +}
> +
> struct xe_hw_engine *xe_gt_hw_engine(struct xe_gt *gt,
> enum xe_engine_class class,
> u16 instance, bool logical)
> diff --git a/drivers/gpu/drm/xe/xe_gt.h b/drivers/gpu/drm/xe/xe_gt.h
> index 9d710049da45..94969ddd9d88 100644
> --- a/drivers/gpu/drm/xe/xe_gt.h
> +++ b/drivers/gpu/drm/xe/xe_gt.h
> @@ -58,6 +58,8 @@ int xe_gt_suspend(struct xe_gt *gt);
> void xe_gt_shutdown(struct xe_gt *gt);
> int xe_gt_resume(struct xe_gt *gt);
> void xe_gt_reset_async(struct xe_gt *gt);
> +int xe_gt_runtime_resume(struct xe_gt *gt);
> +int xe_gt_runtime_suspend(struct xe_gt *gt);
> void xe_gt_sanitize(struct xe_gt *gt);
> int xe_gt_sanitize_freq(struct xe_gt *gt);
>
> diff --git a/drivers/gpu/drm/xe/xe_guc.c b/drivers/gpu/drm/xe/xe_guc.c
> index ecc3e091b89e..ee35f1d8c21b 100644
> --- a/drivers/gpu/drm/xe/xe_guc.c
> +++ b/drivers/gpu/drm/xe/xe_guc.c
> @@ -1607,6 +1607,40 @@ int xe_guc_start(struct xe_guc *guc)
> return xe_guc_submit_start(guc);
> }
>
> +/**
> + * xe_guc_runtime_suspend() - GuC runtime suspend
> + * @guc: The GuC object
> + *
> + * Stop further runs of submission tasks on given GuC and runtime suspend
> + * GuC CT.
> + */
> +void xe_guc_runtime_suspend(struct xe_guc *guc)
> +{
> + xe_guc_submit_pause(guc);
> + xe_guc_submit_disable(guc);
> + xe_guc_ct_runtime_suspend(&guc->ct);
> +}
> +
> +/**
> + * xe_guc_runtime_resume() - GuC runtime resume
> + * @guc: The GuC object
> + *
> + * Runtime resume GuC CT and allow further runs of submission tasks on
> + * given GuC.
> + */
> +void xe_guc_runtime_resume(struct xe_guc *guc)
> +{
> + /*
> + * Runtime PM flows are not applicable for VFs, so it's safe to
> + * directly enable IRQ.
> + */
> + guc_enable_irq(guc);
> +
> + xe_guc_ct_runtime_resume(&guc->ct);
> + xe_guc_submit_enable(guc);
> + xe_guc_submit_unpause(guc);
> +}
> +
> void xe_guc_print_info(struct xe_guc *guc, struct drm_printer *p)
> {
> struct xe_gt *gt = guc_to_gt(guc);
> diff --git a/drivers/gpu/drm/xe/xe_guc.h b/drivers/gpu/drm/xe/xe_guc.h
> index e2d4c5f44ae3..fdb08658d05a 100644
> --- a/drivers/gpu/drm/xe/xe_guc.h
> +++ b/drivers/gpu/drm/xe/xe_guc.h
> @@ -35,6 +35,8 @@ int xe_guc_upload(struct xe_guc *guc);
> int xe_guc_min_load_for_hwconfig(struct xe_guc *guc);
> int xe_guc_enable_communication(struct xe_guc *guc);
> int xe_guc_opt_in_features_enable(struct xe_guc *guc);
> +void xe_guc_runtime_suspend(struct xe_guc *guc);
> +void xe_guc_runtime_resume(struct xe_guc *guc);
> int xe_guc_suspend(struct xe_guc *guc);
> void xe_guc_notify(struct xe_guc *guc);
> int xe_guc_auth_huc(struct xe_guc *guc, u32 rsa_addr);
> diff --git a/drivers/gpu/drm/xe/xe_guc_ct.c b/drivers/gpu/drm/xe/xe_guc_ct.c
> index e68953ef3a00..a7b8d16d4041 100644
> --- a/drivers/gpu/drm/xe/xe_guc_ct.c
> +++ b/drivers/gpu/drm/xe/xe_guc_ct.c
> @@ -634,6 +634,33 @@ void xe_guc_ct_stop(struct xe_guc_ct *ct)
> stop_g2h_handler(ct);
> }
>
> +/**
> + * xe_guc_ct_runtime_suspend() - GuC CT runtime suspend
> + * @ct: the &xe_guc_ct
> + *
> + * Set GuC CT to disabled state.
> + */
> +void xe_guc_ct_runtime_suspend(struct xe_guc_ct *ct)
> +{
> + /*
> + * Since we're already in runtime suspend path, we shouldn't have pending
> + * messages. But if there happen to be any, we'd probably want them to be
> + * thrown as errors for further investigation.
> + */
What would also be helpful here is an assert the G2H credits are in a
fully idle state too. We can do this in follow up if this has already
merged.
Matt
> + xe_guc_ct_disable(ct);
> +}
> +
> +/**
> + * xe_guc_ct_runtime_resume() - GuC CT runtime resume
> + * @ct: the &xe_guc_ct
> + *
> + * Restart GuC CT and set it to enabled state.
> + */
> +void xe_guc_ct_runtime_resume(struct xe_guc_ct *ct)
> +{
> + xe_guc_ct_restart(ct);
> +}
> +
> static bool h2g_has_room(struct xe_guc_ct *ct, u32 cmd_len)
> {
> struct guc_ctb *h2g = &ct->ctbs.h2g;
> diff --git a/drivers/gpu/drm/xe/xe_guc_ct.h b/drivers/gpu/drm/xe/xe_guc_ct.h
> index ca1ce2b3c354..5599939f8fe1 100644
> --- a/drivers/gpu/drm/xe/xe_guc_ct.h
> +++ b/drivers/gpu/drm/xe/xe_guc_ct.h
> @@ -17,6 +17,8 @@ int xe_guc_ct_init_post_hwconfig(struct xe_guc_ct *ct);
> int xe_guc_ct_enable(struct xe_guc_ct *ct);
> int xe_guc_ct_restart(struct xe_guc_ct *ct);
> void xe_guc_ct_disable(struct xe_guc_ct *ct);
> +void xe_guc_ct_runtime_resume(struct xe_guc_ct *ct);
> +void xe_guc_ct_runtime_suspend(struct xe_guc_ct *ct);
> void xe_guc_ct_stop(struct xe_guc_ct *ct);
> void xe_guc_ct_flush_and_stop(struct xe_guc_ct *ct);
> void xe_guc_ct_fast_path(struct xe_guc_ct *ct);
> diff --git a/drivers/gpu/drm/xe/xe_pm.c b/drivers/gpu/drm/xe/xe_pm.c
> index 7b089e6fb63f..56e1351776c0 100644
> --- a/drivers/gpu/drm/xe/xe_pm.c
> +++ b/drivers/gpu/drm/xe/xe_pm.c
> @@ -591,7 +591,7 @@ int xe_pm_runtime_suspend(struct xe_device *xe)
> }
>
> for_each_gt(gt, xe, id) {
> - err = xe_gt_suspend(gt);
> + err = xe->d3cold.allowed ? xe_gt_suspend(gt) : xe_gt_runtime_suspend(gt);
> if (err)
> goto out_resume;
> }
> @@ -633,10 +633,10 @@ int xe_pm_runtime_resume(struct xe_device *xe)
>
> xe_rpm_lockmap_acquire(xe);
>
> - for_each_gt(gt, xe, id)
> - xe_gt_idle_disable_c6(gt);
> -
> if (xe->d3cold.allowed) {
> + for_each_gt(gt, xe, id)
> + xe_gt_idle_disable_c6(gt);
> +
> err = xe_pcode_ready(xe, true);
> if (err)
> goto out;
> @@ -657,7 +657,7 @@ int xe_pm_runtime_resume(struct xe_device *xe)
> xe_irq_resume(xe);
>
> for_each_gt(gt, xe, id)
> - xe_gt_resume(gt);
> + xe->d3cold.allowed ? xe_gt_resume(gt) : xe_gt_runtime_resume(gt);
>
> xe_display_pm_runtime_resume(xe);
>
> diff --git a/drivers/gpu/drm/xe/xe_uc.c b/drivers/gpu/drm/xe/xe_uc.c
> index 465bda355443..6a58b33248f5 100644
> --- a/drivers/gpu/drm/xe/xe_uc.c
> +++ b/drivers/gpu/drm/xe/xe_uc.c
> @@ -301,6 +301,34 @@ int xe_uc_suspend(struct xe_uc *uc)
> return xe_guc_suspend(&uc->guc);
> }
>
> +/**
> + * xe_uc_runtime_suspend() - UC runtime suspend
> + * @uc: the UC object
> + *
> + * Runtime suspend all UCs.
> + */
> +void xe_uc_runtime_suspend(struct xe_uc *uc)
> +{
> + if (!xe_device_uc_enabled(uc_to_xe(uc)))
> + return;
> +
> + xe_guc_runtime_suspend(&uc->guc);
> +}
> +
> +/**
> + * xe_uc_runtime_resume() - UC runtime resume
> + * @uc: the UC object
> + *
> + * Runtime resume all UCs.
> + */
> +void xe_uc_runtime_resume(struct xe_uc *uc)
> +{
> + if (!xe_device_uc_enabled(uc_to_xe(uc)))
> + return;
> +
> + xe_guc_runtime_resume(&uc->guc);
> +}
> +
> /**
> * xe_uc_declare_wedged() - Declare UC wedged
> * @uc: the UC object
> diff --git a/drivers/gpu/drm/xe/xe_uc.h b/drivers/gpu/drm/xe/xe_uc.h
> index 21c9306098cf..5398da1a8097 100644
> --- a/drivers/gpu/drm/xe/xe_uc.h
> +++ b/drivers/gpu/drm/xe/xe_uc.h
> @@ -14,6 +14,8 @@ int xe_uc_init_post_hwconfig(struct xe_uc *uc);
> int xe_uc_load_hw(struct xe_uc *uc);
> void xe_uc_gucrc_disable(struct xe_uc *uc);
> int xe_uc_reset_prepare(struct xe_uc *uc);
> +void xe_uc_runtime_resume(struct xe_uc *uc);
> +void xe_uc_runtime_suspend(struct xe_uc *uc);
> void xe_uc_stop_prepare(struct xe_uc *uc);
> void xe_uc_stop(struct xe_uc *uc);
> int xe_uc_start(struct xe_uc *uc);
> --
> 2.34.1
>
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH v8 4/4] drm/xe/gt: Introduce runtime suspend/resume
2025-11-04 17:47 ` Matthew Brost
@ 2025-11-05 9:02 ` Raag Jadav
2025-12-01 17:29 ` Matthew Brost
0 siblings, 1 reply; 16+ messages in thread
From: Raag Jadav @ 2025-11-05 9:02 UTC (permalink / raw)
To: Matthew Brost
Cc: lucas.demarchi, rodrigo.vivi, intel-xe, riana.tauro,
daniele.ceraolospurio, michal.wajdeczko, badal.nilawar
On Tue, Nov 04, 2025 at 09:47:10AM -0800, Matthew Brost wrote:
> On Thu, Oct 30, 2025 at 05:53:57PM +0530, Raag Jadav wrote:
> > If power state is retained between suspend/resume cycle, we don't need
> > to perform full GT re-initialization. Introduce runtime helpers for GT
> > which greatly reduce suspend/resume delay.
> >
> > v2: Drop redundant xe_gt_sanitize() and xe_guc_ct_stop() (Daniele)
> > Use runtime naming for guc helpers (Daniele)
> > v3: Drop redundant logging, add kernel doc (Michal)
> > Use runtime naming for ct helpers (Michal)
> > v4: Fix tags (Rodrigo)
> > v5: Include host_l2_vram workaround (Daniele)
> > Reuse xe_guc_submit_enable/disable() helpers (Daniele)
> >
> > Co-developed-by: Riana Tauro <riana.tauro@intel.com>
> > Signed-off-by: Riana Tauro <riana.tauro@intel.com>
> > Signed-off-by: Raag Jadav <raag.jadav@intel.com>
> > Acked-by: Matthew Brost <matthew.brost@intel.com>
> > Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
> > ---
> > drivers/gpu/drm/xe/xe_gt.c | 60 ++++++++++++++++++++++++++++++++++
> > drivers/gpu/drm/xe/xe_gt.h | 2 ++
> > drivers/gpu/drm/xe/xe_guc.c | 34 +++++++++++++++++++
> > drivers/gpu/drm/xe/xe_guc.h | 2 ++
> > drivers/gpu/drm/xe/xe_guc_ct.c | 27 +++++++++++++++
> > drivers/gpu/drm/xe/xe_guc_ct.h | 2 ++
> > drivers/gpu/drm/xe/xe_pm.c | 10 +++---
> > drivers/gpu/drm/xe/xe_uc.c | 28 ++++++++++++++++
> > drivers/gpu/drm/xe/xe_uc.h | 2 ++
> > 9 files changed, 162 insertions(+), 5 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/xe/xe_gt.c b/drivers/gpu/drm/xe/xe_gt.c
> > index 89808b33d0a8..0c300f8dd588 100644
> > --- a/drivers/gpu/drm/xe/xe_gt.c
> > +++ b/drivers/gpu/drm/xe/xe_gt.c
> > @@ -1008,6 +1008,66 @@ int xe_gt_resume(struct xe_gt *gt)
> > return err;
> > }
> >
> > +/**
> > + * xe_gt_runtime_suspend() - GT runtime suspend
> > + * @gt: the GT object
> > + *
> > + * Return: 0 on success, negative error code otherwise.
> > + */
> > +int xe_gt_runtime_suspend(struct xe_gt *gt)
> > +{
> > + unsigned int fw_ref;
> > + int err = -ETIMEDOUT;
> > +
> > + xe_gt_dbg(gt, "runtime suspending\n");
> > +
> > + fw_ref = xe_force_wake_get(gt_to_fw(gt), XE_FORCEWAKE_ALL);
> > + if (!xe_force_wake_ref_has_domain(fw_ref, XE_FORCEWAKE_ALL))
> > + goto err_force_wake;
> > +
> > + xe_uc_runtime_suspend(>->uc);
> > + xe_gt_disable_host_l2_vram(gt);
> > +
> > + xe_force_wake_put(gt_to_fw(gt), fw_ref);
> > + xe_gt_dbg(gt, "runtime suspended\n");
> > +
> > + return 0;
> > +
> > +err_force_wake:
> > + xe_force_wake_put(gt_to_fw(gt), fw_ref);
> > + return err;
> > +}
> > +
> > +/**
> > + * xe_gt_runtime_resume() - GT runtime resume
> > + * @gt: the GT object
> > + *
> > + * Return: 0 on success, negative error code otherwise.
> > + */
> > +int xe_gt_runtime_resume(struct xe_gt *gt)
> > +{
> > + unsigned int fw_ref;
> > + int err = -ETIMEDOUT;
> > +
> > + xe_gt_dbg(gt, "runtime resuming\n");
> > +
> > + fw_ref = xe_force_wake_get(gt_to_fw(gt), XE_FORCEWAKE_ALL);
> > + if (!xe_force_wake_ref_has_domain(fw_ref, XE_FORCEWAKE_ALL))
> > + goto err_force_wake;
> > +
> > + xe_gt_enable_host_l2_vram(gt);
> > + xe_uc_runtime_resume(>->uc);
> > +
> > + xe_force_wake_put(gt_to_fw(gt), fw_ref);
> > + xe_gt_dbg(gt, "runtime resumed\n");
> > +
> > + return 0;
> > +
> > +err_force_wake:
> > + xe_force_wake_put(gt_to_fw(gt), fw_ref);
> > + return err;
> > +}
> > +
> > struct xe_hw_engine *xe_gt_hw_engine(struct xe_gt *gt,
> > enum xe_engine_class class,
> > u16 instance, bool logical)
> > diff --git a/drivers/gpu/drm/xe/xe_gt.h b/drivers/gpu/drm/xe/xe_gt.h
> > index 9d710049da45..94969ddd9d88 100644
> > --- a/drivers/gpu/drm/xe/xe_gt.h
> > +++ b/drivers/gpu/drm/xe/xe_gt.h
> > @@ -58,6 +58,8 @@ int xe_gt_suspend(struct xe_gt *gt);
> > void xe_gt_shutdown(struct xe_gt *gt);
> > int xe_gt_resume(struct xe_gt *gt);
> > void xe_gt_reset_async(struct xe_gt *gt);
> > +int xe_gt_runtime_resume(struct xe_gt *gt);
> > +int xe_gt_runtime_suspend(struct xe_gt *gt);
> > void xe_gt_sanitize(struct xe_gt *gt);
> > int xe_gt_sanitize_freq(struct xe_gt *gt);
> >
> > diff --git a/drivers/gpu/drm/xe/xe_guc.c b/drivers/gpu/drm/xe/xe_guc.c
> > index ecc3e091b89e..ee35f1d8c21b 100644
> > --- a/drivers/gpu/drm/xe/xe_guc.c
> > +++ b/drivers/gpu/drm/xe/xe_guc.c
> > @@ -1607,6 +1607,40 @@ int xe_guc_start(struct xe_guc *guc)
> > return xe_guc_submit_start(guc);
> > }
> >
> > +/**
> > + * xe_guc_runtime_suspend() - GuC runtime suspend
> > + * @guc: The GuC object
> > + *
> > + * Stop further runs of submission tasks on given GuC and runtime suspend
> > + * GuC CT.
> > + */
> > +void xe_guc_runtime_suspend(struct xe_guc *guc)
> > +{
> > + xe_guc_submit_pause(guc);
> > + xe_guc_submit_disable(guc);
> > + xe_guc_ct_runtime_suspend(&guc->ct);
> > +}
> > +
> > +/**
> > + * xe_guc_runtime_resume() - GuC runtime resume
> > + * @guc: The GuC object
> > + *
> > + * Runtime resume GuC CT and allow further runs of submission tasks on
> > + * given GuC.
> > + */
> > +void xe_guc_runtime_resume(struct xe_guc *guc)
> > +{
> > + /*
> > + * Runtime PM flows are not applicable for VFs, so it's safe to
> > + * directly enable IRQ.
> > + */
> > + guc_enable_irq(guc);
> > +
> > + xe_guc_ct_runtime_resume(&guc->ct);
> > + xe_guc_submit_enable(guc);
> > + xe_guc_submit_unpause(guc);
> > +}
> > +
> > void xe_guc_print_info(struct xe_guc *guc, struct drm_printer *p)
> > {
> > struct xe_gt *gt = guc_to_gt(guc);
> > diff --git a/drivers/gpu/drm/xe/xe_guc.h b/drivers/gpu/drm/xe/xe_guc.h
> > index e2d4c5f44ae3..fdb08658d05a 100644
> > --- a/drivers/gpu/drm/xe/xe_guc.h
> > +++ b/drivers/gpu/drm/xe/xe_guc.h
> > @@ -35,6 +35,8 @@ int xe_guc_upload(struct xe_guc *guc);
> > int xe_guc_min_load_for_hwconfig(struct xe_guc *guc);
> > int xe_guc_enable_communication(struct xe_guc *guc);
> > int xe_guc_opt_in_features_enable(struct xe_guc *guc);
> > +void xe_guc_runtime_suspend(struct xe_guc *guc);
> > +void xe_guc_runtime_resume(struct xe_guc *guc);
> > int xe_guc_suspend(struct xe_guc *guc);
> > void xe_guc_notify(struct xe_guc *guc);
> > int xe_guc_auth_huc(struct xe_guc *guc, u32 rsa_addr);
> > diff --git a/drivers/gpu/drm/xe/xe_guc_ct.c b/drivers/gpu/drm/xe/xe_guc_ct.c
> > index e68953ef3a00..a7b8d16d4041 100644
> > --- a/drivers/gpu/drm/xe/xe_guc_ct.c
> > +++ b/drivers/gpu/drm/xe/xe_guc_ct.c
> > @@ -634,6 +634,33 @@ void xe_guc_ct_stop(struct xe_guc_ct *ct)
> > stop_g2h_handler(ct);
> > }
> >
> > +/**
> > + * xe_guc_ct_runtime_suspend() - GuC CT runtime suspend
> > + * @ct: the &xe_guc_ct
> > + *
> > + * Set GuC CT to disabled state.
> > + */
> > +void xe_guc_ct_runtime_suspend(struct xe_guc_ct *ct)
> > +{
> > + /*
> > + * Since we're already in runtime suspend path, we shouldn't have pending
> > + * messages. But if there happen to be any, we'd probably want them to be
> > + * thrown as errors for further investigation.
> > + */
>
> What would also be helpful here is an assert the G2H credits are in a
> fully idle state too. We can do this in follow up if this has already
> merged.
Sorry, by credits do you mean to check g2h_outstanding?
IIUC guc_ct_change_state() already does it for us, or did I miss something?
Raag
> > + xe_guc_ct_disable(ct);
> > +}
> > +
> > +/**
> > + * xe_guc_ct_runtime_resume() - GuC CT runtime resume
> > + * @ct: the &xe_guc_ct
> > + *
> > + * Restart GuC CT and set it to enabled state.
> > + */
> > +void xe_guc_ct_runtime_resume(struct xe_guc_ct *ct)
> > +{
> > + xe_guc_ct_restart(ct);
> > +}
> > +
> > static bool h2g_has_room(struct xe_guc_ct *ct, u32 cmd_len)
> > {
> > struct guc_ctb *h2g = &ct->ctbs.h2g;
> > diff --git a/drivers/gpu/drm/xe/xe_guc_ct.h b/drivers/gpu/drm/xe/xe_guc_ct.h
> > index ca1ce2b3c354..5599939f8fe1 100644
> > --- a/drivers/gpu/drm/xe/xe_guc_ct.h
> > +++ b/drivers/gpu/drm/xe/xe_guc_ct.h
> > @@ -17,6 +17,8 @@ int xe_guc_ct_init_post_hwconfig(struct xe_guc_ct *ct);
> > int xe_guc_ct_enable(struct xe_guc_ct *ct);
> > int xe_guc_ct_restart(struct xe_guc_ct *ct);
> > void xe_guc_ct_disable(struct xe_guc_ct *ct);
> > +void xe_guc_ct_runtime_resume(struct xe_guc_ct *ct);
> > +void xe_guc_ct_runtime_suspend(struct xe_guc_ct *ct);
> > void xe_guc_ct_stop(struct xe_guc_ct *ct);
> > void xe_guc_ct_flush_and_stop(struct xe_guc_ct *ct);
> > void xe_guc_ct_fast_path(struct xe_guc_ct *ct);
> > diff --git a/drivers/gpu/drm/xe/xe_pm.c b/drivers/gpu/drm/xe/xe_pm.c
> > index 7b089e6fb63f..56e1351776c0 100644
> > --- a/drivers/gpu/drm/xe/xe_pm.c
> > +++ b/drivers/gpu/drm/xe/xe_pm.c
> > @@ -591,7 +591,7 @@ int xe_pm_runtime_suspend(struct xe_device *xe)
> > }
> >
> > for_each_gt(gt, xe, id) {
> > - err = xe_gt_suspend(gt);
> > + err = xe->d3cold.allowed ? xe_gt_suspend(gt) : xe_gt_runtime_suspend(gt);
> > if (err)
> > goto out_resume;
> > }
> > @@ -633,10 +633,10 @@ int xe_pm_runtime_resume(struct xe_device *xe)
> >
> > xe_rpm_lockmap_acquire(xe);
> >
> > - for_each_gt(gt, xe, id)
> > - xe_gt_idle_disable_c6(gt);
> > -
> > if (xe->d3cold.allowed) {
> > + for_each_gt(gt, xe, id)
> > + xe_gt_idle_disable_c6(gt);
> > +
> > err = xe_pcode_ready(xe, true);
> > if (err)
> > goto out;
> > @@ -657,7 +657,7 @@ int xe_pm_runtime_resume(struct xe_device *xe)
> > xe_irq_resume(xe);
> >
> > for_each_gt(gt, xe, id)
> > - xe_gt_resume(gt);
> > + xe->d3cold.allowed ? xe_gt_resume(gt) : xe_gt_runtime_resume(gt);
> >
> > xe_display_pm_runtime_resume(xe);
> >
> > diff --git a/drivers/gpu/drm/xe/xe_uc.c b/drivers/gpu/drm/xe/xe_uc.c
> > index 465bda355443..6a58b33248f5 100644
> > --- a/drivers/gpu/drm/xe/xe_uc.c
> > +++ b/drivers/gpu/drm/xe/xe_uc.c
> > @@ -301,6 +301,34 @@ int xe_uc_suspend(struct xe_uc *uc)
> > return xe_guc_suspend(&uc->guc);
> > }
> >
> > +/**
> > + * xe_uc_runtime_suspend() - UC runtime suspend
> > + * @uc: the UC object
> > + *
> > + * Runtime suspend all UCs.
> > + */
> > +void xe_uc_runtime_suspend(struct xe_uc *uc)
> > +{
> > + if (!xe_device_uc_enabled(uc_to_xe(uc)))
> > + return;
> > +
> > + xe_guc_runtime_suspend(&uc->guc);
> > +}
> > +
> > +/**
> > + * xe_uc_runtime_resume() - UC runtime resume
> > + * @uc: the UC object
> > + *
> > + * Runtime resume all UCs.
> > + */
> > +void xe_uc_runtime_resume(struct xe_uc *uc)
> > +{
> > + if (!xe_device_uc_enabled(uc_to_xe(uc)))
> > + return;
> > +
> > + xe_guc_runtime_resume(&uc->guc);
> > +}
> > +
> > /**
> > * xe_uc_declare_wedged() - Declare UC wedged
> > * @uc: the UC object
> > diff --git a/drivers/gpu/drm/xe/xe_uc.h b/drivers/gpu/drm/xe/xe_uc.h
> > index 21c9306098cf..5398da1a8097 100644
> > --- a/drivers/gpu/drm/xe/xe_uc.h
> > +++ b/drivers/gpu/drm/xe/xe_uc.h
> > @@ -14,6 +14,8 @@ int xe_uc_init_post_hwconfig(struct xe_uc *uc);
> > int xe_uc_load_hw(struct xe_uc *uc);
> > void xe_uc_gucrc_disable(struct xe_uc *uc);
> > int xe_uc_reset_prepare(struct xe_uc *uc);
> > +void xe_uc_runtime_resume(struct xe_uc *uc);
> > +void xe_uc_runtime_suspend(struct xe_uc *uc);
> > void xe_uc_stop_prepare(struct xe_uc *uc);
> > void xe_uc_stop(struct xe_uc *uc);
> > int xe_uc_start(struct xe_uc *uc);
> > --
> > 2.34.1
> >
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH v8 3/4] drm/xe/pm: Assert on runtime suspend if VFs are enabled
2025-11-04 11:15 ` Raag Jadav
@ 2025-11-14 14:53 ` Raag Jadav
0 siblings, 0 replies; 16+ messages in thread
From: Raag Jadav @ 2025-11-14 14:53 UTC (permalink / raw)
To: Daniele Ceraolo Spurio
Cc: lucas.demarchi, rodrigo.vivi, intel-xe, riana.tauro,
matthew.brost, michal.wajdeczko, badal.nilawar
On Tue, Nov 04, 2025 at 12:15:41PM +0100, Raag Jadav wrote:
> On Fri, Oct 31, 2025 at 04:04:30PM +0100, Raag Jadav wrote:
> > On Thu, Oct 30, 2025 at 11:33:38AM -0700, Daniele Ceraolo Spurio wrote:
> > > On 10/30/2025 5:23 AM, Raag Jadav wrote:
> > > > We hold an additional reference to the runtime PM to keep PF in D0
> > > > during VFs lifetime, as our VFs do not implement the PM capability.
> > > > This means we should never be runtime suspending as long as VFs are
> > > > enabled.
> > > >
> > > > v8: Add !IS_SRIOV_VF() assert (Matthew Brost)
> > > >
> > > > Suggested-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
> > > > Signed-off-by: Raag Jadav <raag.jadav@intel.com>
> > >
> > > Reviewed-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
> >
> > Thank you.
> >
> > So I'm guessing this series is good to go?
>
> Or perhaps anything else I can do here?
Is this still on the cards by any chance?
Raag
> > > > ---
> > > > drivers/gpu/drm/xe/xe_pci.c | 9 +++++++++
> > > > 1 file changed, 9 insertions(+)
> > > >
> > > > diff --git a/drivers/gpu/drm/xe/xe_pci.c b/drivers/gpu/drm/xe/xe_pci.c
> > > > index 6e59642e7820..1c37f4d91047 100644
> > > > --- a/drivers/gpu/drm/xe/xe_pci.c
> > > > +++ b/drivers/gpu/drm/xe/xe_pci.c
> > > > @@ -1152,6 +1152,15 @@ static int xe_pci_runtime_suspend(struct device *dev)
> > > > struct xe_device *xe = pdev_to_xe_device(pdev);
> > > > int err;
> > > > + /*
> > > > + * We hold an additional reference to the runtime PM to keep PF in D0
> > > > + * during VFs lifetime, as our VFs do not implement the PM capability.
> > > > + * This means we should never be runtime suspending as long as VFs are
> > > > + * enabled.
> > > > + */
> > > > + xe_assert(xe, !IS_SRIOV_VF(xe));
> > > > + xe_assert(xe, !pci_num_vf(pdev));
> > > > +
> > > > err = xe_pm_runtime_suspend(xe);
> > > > if (err)
> > > > return err;
> > >
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH v8 4/4] drm/xe/gt: Introduce runtime suspend/resume
2025-11-05 9:02 ` Raag Jadav
@ 2025-12-01 17:29 ` Matthew Brost
0 siblings, 0 replies; 16+ messages in thread
From: Matthew Brost @ 2025-12-01 17:29 UTC (permalink / raw)
To: Raag Jadav
Cc: lucas.demarchi, rodrigo.vivi, intel-xe, riana.tauro,
daniele.ceraolospurio, michal.wajdeczko, badal.nilawar
On Wed, Nov 05, 2025 at 10:02:46AM +0100, Raag Jadav wrote:
> On Tue, Nov 04, 2025 at 09:47:10AM -0800, Matthew Brost wrote:
> > On Thu, Oct 30, 2025 at 05:53:57PM +0530, Raag Jadav wrote:
> > > If power state is retained between suspend/resume cycle, we don't need
> > > to perform full GT re-initialization. Introduce runtime helpers for GT
> > > which greatly reduce suspend/resume delay.
> > >
> > > v2: Drop redundant xe_gt_sanitize() and xe_guc_ct_stop() (Daniele)
> > > Use runtime naming for guc helpers (Daniele)
> > > v3: Drop redundant logging, add kernel doc (Michal)
> > > Use runtime naming for ct helpers (Michal)
> > > v4: Fix tags (Rodrigo)
> > > v5: Include host_l2_vram workaround (Daniele)
> > > Reuse xe_guc_submit_enable/disable() helpers (Daniele)
> > >
> > > Co-developed-by: Riana Tauro <riana.tauro@intel.com>
> > > Signed-off-by: Riana Tauro <riana.tauro@intel.com>
> > > Signed-off-by: Raag Jadav <raag.jadav@intel.com>
> > > Acked-by: Matthew Brost <matthew.brost@intel.com>
> > > Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
> > > ---
> > > drivers/gpu/drm/xe/xe_gt.c | 60 ++++++++++++++++++++++++++++++++++
> > > drivers/gpu/drm/xe/xe_gt.h | 2 ++
> > > drivers/gpu/drm/xe/xe_guc.c | 34 +++++++++++++++++++
> > > drivers/gpu/drm/xe/xe_guc.h | 2 ++
> > > drivers/gpu/drm/xe/xe_guc_ct.c | 27 +++++++++++++++
> > > drivers/gpu/drm/xe/xe_guc_ct.h | 2 ++
> > > drivers/gpu/drm/xe/xe_pm.c | 10 +++---
> > > drivers/gpu/drm/xe/xe_uc.c | 28 ++++++++++++++++
> > > drivers/gpu/drm/xe/xe_uc.h | 2 ++
> > > 9 files changed, 162 insertions(+), 5 deletions(-)
> > >
> > > diff --git a/drivers/gpu/drm/xe/xe_gt.c b/drivers/gpu/drm/xe/xe_gt.c
> > > index 89808b33d0a8..0c300f8dd588 100644
> > > --- a/drivers/gpu/drm/xe/xe_gt.c
> > > +++ b/drivers/gpu/drm/xe/xe_gt.c
> > > @@ -1008,6 +1008,66 @@ int xe_gt_resume(struct xe_gt *gt)
> > > return err;
> > > }
> > >
> > > +/**
> > > + * xe_gt_runtime_suspend() - GT runtime suspend
> > > + * @gt: the GT object
> > > + *
> > > + * Return: 0 on success, negative error code otherwise.
> > > + */
> > > +int xe_gt_runtime_suspend(struct xe_gt *gt)
> > > +{
> > > + unsigned int fw_ref;
> > > + int err = -ETIMEDOUT;
> > > +
> > > + xe_gt_dbg(gt, "runtime suspending\n");
> > > +
> > > + fw_ref = xe_force_wake_get(gt_to_fw(gt), XE_FORCEWAKE_ALL);
> > > + if (!xe_force_wake_ref_has_domain(fw_ref, XE_FORCEWAKE_ALL))
> > > + goto err_force_wake;
> > > +
> > > + xe_uc_runtime_suspend(>->uc);
> > > + xe_gt_disable_host_l2_vram(gt);
> > > +
> > > + xe_force_wake_put(gt_to_fw(gt), fw_ref);
> > > + xe_gt_dbg(gt, "runtime suspended\n");
> > > +
> > > + return 0;
> > > +
> > > +err_force_wake:
> > > + xe_force_wake_put(gt_to_fw(gt), fw_ref);
> > > + return err;
> > > +}
> > > +
> > > +/**
> > > + * xe_gt_runtime_resume() - GT runtime resume
> > > + * @gt: the GT object
> > > + *
> > > + * Return: 0 on success, negative error code otherwise.
> > > + */
> > > +int xe_gt_runtime_resume(struct xe_gt *gt)
> > > +{
> > > + unsigned int fw_ref;
> > > + int err = -ETIMEDOUT;
> > > +
> > > + xe_gt_dbg(gt, "runtime resuming\n");
> > > +
> > > + fw_ref = xe_force_wake_get(gt_to_fw(gt), XE_FORCEWAKE_ALL);
> > > + if (!xe_force_wake_ref_has_domain(fw_ref, XE_FORCEWAKE_ALL))
> > > + goto err_force_wake;
> > > +
> > > + xe_gt_enable_host_l2_vram(gt);
> > > + xe_uc_runtime_resume(>->uc);
> > > +
> > > + xe_force_wake_put(gt_to_fw(gt), fw_ref);
> > > + xe_gt_dbg(gt, "runtime resumed\n");
> > > +
> > > + return 0;
> > > +
> > > +err_force_wake:
> > > + xe_force_wake_put(gt_to_fw(gt), fw_ref);
> > > + return err;
> > > +}
> > > +
> > > struct xe_hw_engine *xe_gt_hw_engine(struct xe_gt *gt,
> > > enum xe_engine_class class,
> > > u16 instance, bool logical)
> > > diff --git a/drivers/gpu/drm/xe/xe_gt.h b/drivers/gpu/drm/xe/xe_gt.h
> > > index 9d710049da45..94969ddd9d88 100644
> > > --- a/drivers/gpu/drm/xe/xe_gt.h
> > > +++ b/drivers/gpu/drm/xe/xe_gt.h
> > > @@ -58,6 +58,8 @@ int xe_gt_suspend(struct xe_gt *gt);
> > > void xe_gt_shutdown(struct xe_gt *gt);
> > > int xe_gt_resume(struct xe_gt *gt);
> > > void xe_gt_reset_async(struct xe_gt *gt);
> > > +int xe_gt_runtime_resume(struct xe_gt *gt);
> > > +int xe_gt_runtime_suspend(struct xe_gt *gt);
> > > void xe_gt_sanitize(struct xe_gt *gt);
> > > int xe_gt_sanitize_freq(struct xe_gt *gt);
> > >
> > > diff --git a/drivers/gpu/drm/xe/xe_guc.c b/drivers/gpu/drm/xe/xe_guc.c
> > > index ecc3e091b89e..ee35f1d8c21b 100644
> > > --- a/drivers/gpu/drm/xe/xe_guc.c
> > > +++ b/drivers/gpu/drm/xe/xe_guc.c
> > > @@ -1607,6 +1607,40 @@ int xe_guc_start(struct xe_guc *guc)
> > > return xe_guc_submit_start(guc);
> > > }
> > >
> > > +/**
> > > + * xe_guc_runtime_suspend() - GuC runtime suspend
> > > + * @guc: The GuC object
> > > + *
> > > + * Stop further runs of submission tasks on given GuC and runtime suspend
> > > + * GuC CT.
> > > + */
> > > +void xe_guc_runtime_suspend(struct xe_guc *guc)
> > > +{
> > > + xe_guc_submit_pause(guc);
> > > + xe_guc_submit_disable(guc);
> > > + xe_guc_ct_runtime_suspend(&guc->ct);
> > > +}
> > > +
> > > +/**
> > > + * xe_guc_runtime_resume() - GuC runtime resume
> > > + * @guc: The GuC object
> > > + *
> > > + * Runtime resume GuC CT and allow further runs of submission tasks on
> > > + * given GuC.
> > > + */
> > > +void xe_guc_runtime_resume(struct xe_guc *guc)
> > > +{
> > > + /*
> > > + * Runtime PM flows are not applicable for VFs, so it's safe to
> > > + * directly enable IRQ.
> > > + */
> > > + guc_enable_irq(guc);
> > > +
> > > + xe_guc_ct_runtime_resume(&guc->ct);
> > > + xe_guc_submit_enable(guc);
> > > + xe_guc_submit_unpause(guc);
> > > +}
> > > +
> > > void xe_guc_print_info(struct xe_guc *guc, struct drm_printer *p)
> > > {
> > > struct xe_gt *gt = guc_to_gt(guc);
> > > diff --git a/drivers/gpu/drm/xe/xe_guc.h b/drivers/gpu/drm/xe/xe_guc.h
> > > index e2d4c5f44ae3..fdb08658d05a 100644
> > > --- a/drivers/gpu/drm/xe/xe_guc.h
> > > +++ b/drivers/gpu/drm/xe/xe_guc.h
> > > @@ -35,6 +35,8 @@ int xe_guc_upload(struct xe_guc *guc);
> > > int xe_guc_min_load_for_hwconfig(struct xe_guc *guc);
> > > int xe_guc_enable_communication(struct xe_guc *guc);
> > > int xe_guc_opt_in_features_enable(struct xe_guc *guc);
> > > +void xe_guc_runtime_suspend(struct xe_guc *guc);
> > > +void xe_guc_runtime_resume(struct xe_guc *guc);
> > > int xe_guc_suspend(struct xe_guc *guc);
> > > void xe_guc_notify(struct xe_guc *guc);
> > > int xe_guc_auth_huc(struct xe_guc *guc, u32 rsa_addr);
> > > diff --git a/drivers/gpu/drm/xe/xe_guc_ct.c b/drivers/gpu/drm/xe/xe_guc_ct.c
> > > index e68953ef3a00..a7b8d16d4041 100644
> > > --- a/drivers/gpu/drm/xe/xe_guc_ct.c
> > > +++ b/drivers/gpu/drm/xe/xe_guc_ct.c
> > > @@ -634,6 +634,33 @@ void xe_guc_ct_stop(struct xe_guc_ct *ct)
> > > stop_g2h_handler(ct);
> > > }
> > >
> > > +/**
> > > + * xe_guc_ct_runtime_suspend() - GuC CT runtime suspend
> > > + * @ct: the &xe_guc_ct
> > > + *
> > > + * Set GuC CT to disabled state.
> > > + */
> > > +void xe_guc_ct_runtime_suspend(struct xe_guc_ct *ct)
> > > +{
> > > + /*
> > > + * Since we're already in runtime suspend path, we shouldn't have pending
> > > + * messages. But if there happen to be any, we'd probably want them to be
> > > + * thrown as errors for further investigation.
> > > + */
> >
> > What would also be helpful here is an assert the G2H credits are in a
> > fully idle state too. We can do this in follow up if this has already
> > merged.
>
> Sorry, by credits do you mean to check g2h_outstanding?
> IIUC guc_ct_change_state() already does it for us, or did I miss something?
>
I was suggesting we assert 'ct->ctbs.g2h.info.space' is equal the
initial value we set it to in guc_ct_ctb_g2h_init.
Matt
> Raag
>
> > > + xe_guc_ct_disable(ct);
> > > +}
> > > +
> > > +/**
> > > + * xe_guc_ct_runtime_resume() - GuC CT runtime resume
> > > + * @ct: the &xe_guc_ct
> > > + *
> > > + * Restart GuC CT and set it to enabled state.
> > > + */
> > > +void xe_guc_ct_runtime_resume(struct xe_guc_ct *ct)
> > > +{
> > > + xe_guc_ct_restart(ct);
> > > +}
> > > +
> > > static bool h2g_has_room(struct xe_guc_ct *ct, u32 cmd_len)
> > > {
> > > struct guc_ctb *h2g = &ct->ctbs.h2g;
> > > diff --git a/drivers/gpu/drm/xe/xe_guc_ct.h b/drivers/gpu/drm/xe/xe_guc_ct.h
> > > index ca1ce2b3c354..5599939f8fe1 100644
> > > --- a/drivers/gpu/drm/xe/xe_guc_ct.h
> > > +++ b/drivers/gpu/drm/xe/xe_guc_ct.h
> > > @@ -17,6 +17,8 @@ int xe_guc_ct_init_post_hwconfig(struct xe_guc_ct *ct);
> > > int xe_guc_ct_enable(struct xe_guc_ct *ct);
> > > int xe_guc_ct_restart(struct xe_guc_ct *ct);
> > > void xe_guc_ct_disable(struct xe_guc_ct *ct);
> > > +void xe_guc_ct_runtime_resume(struct xe_guc_ct *ct);
> > > +void xe_guc_ct_runtime_suspend(struct xe_guc_ct *ct);
> > > void xe_guc_ct_stop(struct xe_guc_ct *ct);
> > > void xe_guc_ct_flush_and_stop(struct xe_guc_ct *ct);
> > > void xe_guc_ct_fast_path(struct xe_guc_ct *ct);
> > > diff --git a/drivers/gpu/drm/xe/xe_pm.c b/drivers/gpu/drm/xe/xe_pm.c
> > > index 7b089e6fb63f..56e1351776c0 100644
> > > --- a/drivers/gpu/drm/xe/xe_pm.c
> > > +++ b/drivers/gpu/drm/xe/xe_pm.c
> > > @@ -591,7 +591,7 @@ int xe_pm_runtime_suspend(struct xe_device *xe)
> > > }
> > >
> > > for_each_gt(gt, xe, id) {
> > > - err = xe_gt_suspend(gt);
> > > + err = xe->d3cold.allowed ? xe_gt_suspend(gt) : xe_gt_runtime_suspend(gt);
> > > if (err)
> > > goto out_resume;
> > > }
> > > @@ -633,10 +633,10 @@ int xe_pm_runtime_resume(struct xe_device *xe)
> > >
> > > xe_rpm_lockmap_acquire(xe);
> > >
> > > - for_each_gt(gt, xe, id)
> > > - xe_gt_idle_disable_c6(gt);
> > > -
> > > if (xe->d3cold.allowed) {
> > > + for_each_gt(gt, xe, id)
> > > + xe_gt_idle_disable_c6(gt);
> > > +
> > > err = xe_pcode_ready(xe, true);
> > > if (err)
> > > goto out;
> > > @@ -657,7 +657,7 @@ int xe_pm_runtime_resume(struct xe_device *xe)
> > > xe_irq_resume(xe);
> > >
> > > for_each_gt(gt, xe, id)
> > > - xe_gt_resume(gt);
> > > + xe->d3cold.allowed ? xe_gt_resume(gt) : xe_gt_runtime_resume(gt);
> > >
> > > xe_display_pm_runtime_resume(xe);
> > >
> > > diff --git a/drivers/gpu/drm/xe/xe_uc.c b/drivers/gpu/drm/xe/xe_uc.c
> > > index 465bda355443..6a58b33248f5 100644
> > > --- a/drivers/gpu/drm/xe/xe_uc.c
> > > +++ b/drivers/gpu/drm/xe/xe_uc.c
> > > @@ -301,6 +301,34 @@ int xe_uc_suspend(struct xe_uc *uc)
> > > return xe_guc_suspend(&uc->guc);
> > > }
> > >
> > > +/**
> > > + * xe_uc_runtime_suspend() - UC runtime suspend
> > > + * @uc: the UC object
> > > + *
> > > + * Runtime suspend all UCs.
> > > + */
> > > +void xe_uc_runtime_suspend(struct xe_uc *uc)
> > > +{
> > > + if (!xe_device_uc_enabled(uc_to_xe(uc)))
> > > + return;
> > > +
> > > + xe_guc_runtime_suspend(&uc->guc);
> > > +}
> > > +
> > > +/**
> > > + * xe_uc_runtime_resume() - UC runtime resume
> > > + * @uc: the UC object
> > > + *
> > > + * Runtime resume all UCs.
> > > + */
> > > +void xe_uc_runtime_resume(struct xe_uc *uc)
> > > +{
> > > + if (!xe_device_uc_enabled(uc_to_xe(uc)))
> > > + return;
> > > +
> > > + xe_guc_runtime_resume(&uc->guc);
> > > +}
> > > +
> > > /**
> > > * xe_uc_declare_wedged() - Declare UC wedged
> > > * @uc: the UC object
> > > diff --git a/drivers/gpu/drm/xe/xe_uc.h b/drivers/gpu/drm/xe/xe_uc.h
> > > index 21c9306098cf..5398da1a8097 100644
> > > --- a/drivers/gpu/drm/xe/xe_uc.h
> > > +++ b/drivers/gpu/drm/xe/xe_uc.h
> > > @@ -14,6 +14,8 @@ int xe_uc_init_post_hwconfig(struct xe_uc *uc);
> > > int xe_uc_load_hw(struct xe_uc *uc);
> > > void xe_uc_gucrc_disable(struct xe_uc *uc);
> > > int xe_uc_reset_prepare(struct xe_uc *uc);
> > > +void xe_uc_runtime_resume(struct xe_uc *uc);
> > > +void xe_uc_runtime_suspend(struct xe_uc *uc);
> > > void xe_uc_stop_prepare(struct xe_uc *uc);
> > > void xe_uc_stop(struct xe_uc *uc);
> > > int xe_uc_start(struct xe_uc *uc);
> > > --
> > > 2.34.1
> > >
^ permalink raw reply [flat|nested] 16+ messages in thread
end of thread, other threads:[~2025-12-01 17:29 UTC | newest]
Thread overview: 16+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-10-30 12:23 [PATCH v8 0/4] Introduce GT runtime suspend/resume Raag Jadav
2025-10-30 12:23 ` [PATCH v8 1/4] drm/xe/vf: Update pause/unpause() helpers with VF naming Raag Jadav
2025-10-30 12:23 ` [PATCH v8 2/4] drm/xe/guc_submit: Introduce pause/unpause() helpers for PF Raag Jadav
2025-10-30 12:23 ` [PATCH v8 3/4] drm/xe/pm: Assert on runtime suspend if VFs are enabled Raag Jadav
2025-10-30 18:33 ` Daniele Ceraolo Spurio
2025-10-31 15:04 ` Raag Jadav
2025-11-04 11:15 ` Raag Jadav
2025-11-14 14:53 ` Raag Jadav
2025-11-03 17:42 ` Matthew Brost
2025-10-30 12:23 ` [PATCH v8 4/4] drm/xe/gt: Introduce runtime suspend/resume Raag Jadav
2025-11-04 17:47 ` Matthew Brost
2025-11-05 9:02 ` Raag Jadav
2025-12-01 17:29 ` Matthew Brost
2025-11-03 9:06 ` ✓ CI.KUnit: success for Introduce GT runtime suspend/resume (rev6) Patchwork
2025-11-03 10:14 ` ✓ Xe.CI.BAT: " Patchwork
2025-11-03 11:38 ` ✗ Xe.CI.Full: failure " Patchwork
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).