intel-xe.lists.freedesktop.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v4 0/2] Introduce GT runtime suspend/resume
@ 2025-09-04  9:14 Raag Jadav
  2025-09-04  9:14 ` [PATCH v4 1/2] drm/xe/guc: Split xe_guc_ct_enable() Raag Jadav
                   ` (5 more replies)
  0 siblings, 6 replies; 12+ messages in thread
From: Raag Jadav @ 2025-09-04  9:14 UTC (permalink / raw)
  To: lucas.demarchi, rodrigo.vivi
  Cc: intel-xe, riana.tauro, daniele.ceraolospurio, matthew.brost,
	michal.wajdeczko, 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() (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)

Raag Jadav (2):
  drm/xe/guc: Split xe_guc_ct_enable()
  drm/xe/gt: Introduce runtime suspend/resume

 drivers/gpu/drm/xe/xe_gt.c     | 58 ++++++++++++++++++++++++++++++++
 drivers/gpu/drm/xe/xe_gt.h     |  2 ++
 drivers/gpu/drm/xe/xe_guc.c    | 31 ++++++++++++++++-
 drivers/gpu/drm/xe/xe_guc.h    |  2 ++
 drivers/gpu/drm/xe/xe_guc_ct.c | 61 +++++++++++++++++++++++++++++-----
 drivers/gpu/drm/xe/xe_guc_ct.h |  5 ++-
 drivers/gpu/drm/xe/xe_pm.c     | 10 +++---
 drivers/gpu/drm/xe/xe_uc.c     | 29 ++++++++++++++++
 drivers/gpu/drm/xe/xe_uc.h     |  2 ++
 9 files changed, 185 insertions(+), 15 deletions(-)

-- 
2.34.1


^ permalink raw reply	[flat|nested] 12+ messages in thread

* [PATCH v4 1/2] drm/xe/guc: Split xe_guc_ct_enable()
  2025-09-04  9:14 [PATCH v4 0/2] Introduce GT runtime suspend/resume Raag Jadav
@ 2025-09-04  9:14 ` Raag Jadav
  2025-09-10 16:51   ` Rodrigo Vivi
  2025-09-04  9:14 ` [PATCH v4 2/2] drm/xe/gt: Introduce runtime suspend/resume Raag Jadav
                   ` (4 subsequent siblings)
  5 siblings, 1 reply; 12+ messages in thread
From: Raag Jadav @ 2025-09-04  9:14 UTC (permalink / raw)
  To: lucas.demarchi, rodrigo.vivi
  Cc: intel-xe, riana.tauro, daniele.ceraolospurio, matthew.brost,
	michal.wajdeczko, Raag Jadav

In preparation of usecases which require dynamically enabling GuC CT state,
split xe_guc_ct_enable().

Suggested-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Signed-off-by: Raag Jadav <raag.jadav@intel.com>
---
 drivers/gpu/drm/xe/xe_guc.c    |  2 +-
 drivers/gpu/drm/xe/xe_guc_ct.c | 34 ++++++++++++++++++++++++++--------
 drivers/gpu/drm/xe/xe_guc_ct.h |  3 ++-
 3 files changed, 29 insertions(+), 10 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_guc.c b/drivers/gpu/drm/xe/xe_guc.c
index b3a6408a5760..fd82eef8f372 100644
--- a/drivers/gpu/drm/xe/xe_guc.c
+++ b/drivers/gpu/drm/xe/xe_guc.c
@@ -1355,7 +1355,7 @@ int xe_guc_enable_communication(struct xe_guc *guc)
 		guc_enable_irq(guc);
 	}
 
-	err = xe_guc_ct_enable(&guc->ct);
+	err = xe_guc_ct_register(&guc->ct);
 	if (err)
 		return err;
 
diff --git a/drivers/gpu/drm/xe/xe_guc_ct.c b/drivers/gpu/drm/xe/xe_guc_ct.c
index e431ff73227c..f2b2db780e53 100644
--- a/drivers/gpu/drm/xe/xe_guc_ct.c
+++ b/drivers/gpu/drm/xe/xe_guc_ct.c
@@ -504,7 +504,31 @@ static void ct_exit_safe_mode(struct xe_guc_ct *ct)
 		xe_gt_dbg(ct_to_gt(ct), "GuC CT safe-mode disabled\n");
 }
 
-int xe_guc_ct_enable(struct xe_guc_ct *ct)
+/**
+ * xe_guc_ct_enable() - Enable GuC CT
+ * @ct: the &xe_guc_ct
+ *
+ * Set GuC CT to enabled state and ready to send/received new messages.
+ */
+void xe_guc_ct_enable(struct xe_guc_ct *ct)
+{
+	guc_ct_change_state(ct, XE_GUC_CT_STATE_ENABLED);
+
+	smp_mb();
+	wake_up_all(&ct->wq);
+
+	ct_enter_safe_mode(ct);
+}
+
+/**
+ * xe_guc_ct_register() - Register GuC CT
+ * @ct: the &xe_guc_ct
+ *
+ * Initialize and register H2G and G2H CTBs and enable GuC CT.
+ *
+ * Return: 0 on success, negative error code otherwise.
+ */
+int xe_guc_ct_register(struct xe_guc_ct *ct)
 {
 	struct xe_device *xe = ct_to_xe(ct);
 	struct xe_gt *gt = ct_to_gt(ct);
@@ -528,13 +552,7 @@ int xe_guc_ct_enable(struct xe_guc_ct *ct)
 	if (err)
 		goto err_out;
 
-	guc_ct_change_state(ct, XE_GUC_CT_STATE_ENABLED);
-
-	smp_mb();
-	wake_up_all(&ct->wq);
-
-	if (ct_needs_safe_mode(ct))
-		ct_enter_safe_mode(ct);
+	xe_guc_ct_enable(ct);
 
 #if IS_ENABLED(CONFIG_DRM_XE_DEBUG)
 	/*
diff --git a/drivers/gpu/drm/xe/xe_guc_ct.h b/drivers/gpu/drm/xe/xe_guc_ct.h
index cf41210ab30a..c821517e87d0 100644
--- a/drivers/gpu/drm/xe/xe_guc_ct.h
+++ b/drivers/gpu/drm/xe/xe_guc_ct.h
@@ -14,8 +14,9 @@ struct xe_device;
 int xe_guc_ct_init_noalloc(struct xe_guc_ct *ct);
 int xe_guc_ct_init(struct xe_guc_ct *ct);
 int xe_guc_ct_init_post_hwconfig(struct xe_guc_ct *ct);
-int xe_guc_ct_enable(struct xe_guc_ct *ct);
+void xe_guc_ct_enable(struct xe_guc_ct *ct);
 void xe_guc_ct_disable(struct xe_guc_ct *ct);
+int xe_guc_ct_register(struct xe_guc_ct *ct);
 void xe_guc_ct_stop(struct xe_guc_ct *ct);
 void xe_guc_ct_fast_path(struct xe_guc_ct *ct);
 
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [PATCH v4 2/2] drm/xe/gt: Introduce runtime suspend/resume
  2025-09-04  9:14 [PATCH v4 0/2] Introduce GT runtime suspend/resume Raag Jadav
  2025-09-04  9:14 ` [PATCH v4 1/2] drm/xe/guc: Split xe_guc_ct_enable() Raag Jadav
@ 2025-09-04  9:14 ` Raag Jadav
  2025-10-01 16:46   ` Daniele Ceraolo Spurio
  2025-09-04  9:31 ` ✗ CI.checkpatch: warning for Introduce GT " Patchwork
                   ` (3 subsequent siblings)
  5 siblings, 1 reply; 12+ messages in thread
From: Raag Jadav @ 2025-09-04  9:14 UTC (permalink / raw)
  To: lucas.demarchi, rodrigo.vivi
  Cc: intel-xe, riana.tauro, daniele.ceraolospurio, matthew.brost,
	michal.wajdeczko, 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)

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>
---
 drivers/gpu/drm/xe/xe_gt.c     | 58 ++++++++++++++++++++++++++++++++++
 drivers/gpu/drm/xe/xe_gt.h     |  2 ++
 drivers/gpu/drm/xe/xe_guc.c    | 29 +++++++++++++++++
 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     | 29 +++++++++++++++++
 drivers/gpu/drm/xe/xe_uc.h     |  2 ++
 9 files changed, 156 insertions(+), 5 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_gt.c b/drivers/gpu/drm/xe/xe_gt.c
index 34505a6d93ed..7ff0dfab0854 100644
--- a/drivers/gpu/drm/xe/xe_gt.c
+++ b/drivers/gpu/drm/xe/xe_gt.c
@@ -943,6 +943,35 @@ int xe_gt_suspend(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(&gt->uc);
+
+	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;
+}
+
 void xe_gt_shutdown(struct xe_gt *gt)
 {
 	unsigned int fw_ref;
@@ -1002,6 +1031,35 @@ int xe_gt_resume(struct xe_gt *gt)
 	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_uc_runtime_resume(&gt->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 41880979f4de..3f793230e78a 100644
--- a/drivers/gpu/drm/xe/xe_gt.h
+++ b/drivers/gpu/drm/xe/xe_gt.h
@@ -51,6 +51,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 fd82eef8f372..c750f564a856 100644
--- a/drivers/gpu/drm/xe/xe_guc.c
+++ b/drivers/gpu/drm/xe/xe_guc.c
@@ -1626,6 +1626,35 @@ void xe_guc_stop_prepare(struct xe_guc *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);
+	guc->submission_state.enabled = false;
+	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)
+{
+	guc_enable_irq(guc);
+	xe_guc_ct_runtime_resume(&guc->ct);
+	guc->submission_state.enabled = true;
+	xe_guc_submit_unpause(guc);
+}
+
 void xe_guc_stop(struct xe_guc *guc)
 {
 	xe_guc_ct_stop(&guc->ct);
diff --git a/drivers/gpu/drm/xe/xe_guc.h b/drivers/gpu/drm/xe/xe_guc.h
index 22cf019a11bf..e3736300ffd8 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 f2b2db780e53..1ee0b3aba9d5 100644
--- a/drivers/gpu/drm/xe/xe_guc_ct.c
+++ b/drivers/gpu/drm/xe/xe_guc_ct.c
@@ -520,6 +520,17 @@ void xe_guc_ct_enable(struct xe_guc_ct *ct)
 	ct_enter_safe_mode(ct);
 }
 
+/**
+ * xe_guc_ct_runtime_resume() - GuC CT runtime resume
+ * @ct: the &xe_guc_ct
+ *
+ * Runtime resume GuC CT and set it to enabled state.
+ */
+void xe_guc_ct_runtime_resume(struct xe_guc_ct *ct)
+{
+	xe_guc_ct_enable(ct);
+}
+
 /**
  * xe_guc_ct_register() - Register GuC CT
  * @ct: the &xe_guc_ct
@@ -610,6 +621,22 @@ 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
+ *
+ * Runtime suspend GuC CT and set it 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);
+}
+
 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 c821517e87d0..8bc34a0a78e2 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);
 void xe_guc_ct_enable(struct xe_guc_ct *ct);
 void xe_guc_ct_disable(struct xe_guc_ct *ct);
 int xe_guc_ct_register(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_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 d4b54cd34cff..df61876fda87 100644
--- a/drivers/gpu/drm/xe/xe_pm.c
+++ b/drivers/gpu/drm/xe/xe_pm.c
@@ -498,7 +498,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;
 	}
@@ -540,10 +540,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;
@@ -564,7 +564,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..d99b8a795690 100644
--- a/drivers/gpu/drm/xe/xe_uc.c
+++ b/drivers/gpu/drm/xe/xe_uc.c
@@ -15,6 +15,7 @@
 #include "xe_guc.h"
 #include "xe_guc_pc.h"
 #include "xe_guc_engine_activity.h"
+#include "xe_guc_submit.h"
 #include "xe_huc.h"
 #include "xe_sriov.h"
 #include "xe_uc_fw.h"
@@ -301,6 +302,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] 12+ messages in thread

* ✗ CI.checkpatch: warning for Introduce GT runtime suspend/resume
  2025-09-04  9:14 [PATCH v4 0/2] Introduce GT runtime suspend/resume Raag Jadav
  2025-09-04  9:14 ` [PATCH v4 1/2] drm/xe/guc: Split xe_guc_ct_enable() Raag Jadav
  2025-09-04  9:14 ` [PATCH v4 2/2] drm/xe/gt: Introduce runtime suspend/resume Raag Jadav
@ 2025-09-04  9:31 ` Patchwork
  2025-09-04  9:32 ` ✓ CI.KUnit: success " Patchwork
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 12+ messages in thread
From: Patchwork @ 2025-09-04  9:31 UTC (permalink / raw)
  To: Raag Jadav; +Cc: intel-xe

== Series Details ==

Series: Introduce GT runtime suspend/resume
URL   : https://patchwork.freedesktop.org/series/154017/
State : warning

== Summary ==

+ KERNEL=/kernel
+ git clone https://gitlab.freedesktop.org/drm/maintainer-tools mt
Cloning into 'mt'...
warning: redirecting to https://gitlab.freedesktop.org/drm/maintainer-tools.git/
+ git -C mt rev-list -n1 origin/master
e0fa7d6ad11ac6dc8dfa757164e518968a98b897
+ cd /kernel
+ git config --global --add safe.directory /kernel
+ git log -n1
commit b5961a054572f550c2f5521780ebb4524bb26abb
Author: Raag Jadav <raag.jadav@intel.com>
Date:   Thu Sep 4 14:44:39 2025 +0530

    drm/xe/gt: Introduce runtime suspend/resume
    
    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)
    
    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>
+ /mt/dim checkpatch 76dbb37ec196e36c129b63b102b4884c90506bd7 drm-intel
d640141f8dc5 drm/xe/guc: Split xe_guc_ct_enable()
-:44: WARNING:MEMORY_BARRIER: memory barrier without comment
#44: FILE: drivers/gpu/drm/xe/xe_guc_ct.c:517:
+	smp_mb();

total: 0 errors, 1 warnings, 0 checks, 64 lines checked
b5961a054572 drm/xe/gt: Introduce runtime suspend/resume



^ permalink raw reply	[flat|nested] 12+ messages in thread

* ✓ CI.KUnit: success for Introduce GT runtime suspend/resume
  2025-09-04  9:14 [PATCH v4 0/2] Introduce GT runtime suspend/resume Raag Jadav
                   ` (2 preceding siblings ...)
  2025-09-04  9:31 ` ✗ CI.checkpatch: warning for Introduce GT " Patchwork
@ 2025-09-04  9:32 ` Patchwork
  2025-09-04 10:08 ` ✓ Xe.CI.BAT: " Patchwork
  2025-09-04 21:01 ` ✗ Xe.CI.Full: failure " Patchwork
  5 siblings, 0 replies; 12+ messages in thread
From: Patchwork @ 2025-09-04  9:32 UTC (permalink / raw)
  To: Raag Jadav; +Cc: intel-xe

== Series Details ==

Series: Introduce GT runtime suspend/resume
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:31:46] Configuring KUnit Kernel ...
Generating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[09:31:50] 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:32:18] Starting KUnit Kernel (1/1)...
[09:32:18] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[09:32:19] ================== guc_buf (11 subtests) ===================
[09:32:19] [PASSED] test_smallest
[09:32:19] [PASSED] test_largest
[09:32:19] [PASSED] test_granular
[09:32:19] [PASSED] test_unique
[09:32:19] [PASSED] test_overlap
[09:32:19] [PASSED] test_reusable
[09:32:19] [PASSED] test_too_big
[09:32:19] [PASSED] test_flush
[09:32:19] [PASSED] test_lookup
[09:32:19] [PASSED] test_data
[09:32:19] [PASSED] test_class
[09:32:19] ===================== [PASSED] guc_buf =====================
[09:32:19] =================== guc_dbm (7 subtests) ===================
[09:32:19] [PASSED] test_empty
[09:32:19] [PASSED] test_default
[09:32:19] ======================== test_size  ========================
[09:32:19] [PASSED] 4
[09:32:19] [PASSED] 8
[09:32:19] [PASSED] 32
[09:32:19] [PASSED] 256
[09:32:19] ==================== [PASSED] test_size ====================
[09:32:19] ======================= test_reuse  ========================
[09:32:19] [PASSED] 4
[09:32:19] [PASSED] 8
[09:32:19] [PASSED] 32
[09:32:19] [PASSED] 256
[09:32:19] =================== [PASSED] test_reuse ====================
[09:32:19] =================== test_range_overlap  ====================
[09:32:19] [PASSED] 4
[09:32:19] [PASSED] 8
[09:32:19] [PASSED] 32
[09:32:19] [PASSED] 256
[09:32:19] =============== [PASSED] test_range_overlap ================
[09:32:19] =================== test_range_compact  ====================
[09:32:19] [PASSED] 4
[09:32:19] [PASSED] 8
[09:32:19] [PASSED] 32
[09:32:19] [PASSED] 256
[09:32:19] =============== [PASSED] test_range_compact ================
[09:32:19] ==================== test_range_spare  =====================
[09:32:19] [PASSED] 4
[09:32:19] [PASSED] 8
[09:32:19] [PASSED] 32
[09:32:19] [PASSED] 256
[09:32:19] ================ [PASSED] test_range_spare =================
[09:32:19] ===================== [PASSED] guc_dbm =====================
[09:32:19] =================== guc_idm (6 subtests) ===================
[09:32:19] [PASSED] bad_init
[09:32:19] [PASSED] no_init
[09:32:19] [PASSED] init_fini
[09:32:19] [PASSED] check_used
[09:32:19] [PASSED] check_quota
[09:32:19] [PASSED] check_all
[09:32:19] ===================== [PASSED] guc_idm =====================
[09:32:19] ================== no_relay (3 subtests) ===================
[09:32:19] [PASSED] xe_drops_guc2pf_if_not_ready
[09:32:19] [PASSED] xe_drops_guc2vf_if_not_ready
[09:32:19] [PASSED] xe_rejects_send_if_not_ready
[09:32:19] ==================== [PASSED] no_relay =====================
[09:32:19] ================== pf_relay (14 subtests) ==================
[09:32:19] [PASSED] pf_rejects_guc2pf_too_short
[09:32:19] [PASSED] pf_rejects_guc2pf_too_long
[09:32:19] [PASSED] pf_rejects_guc2pf_no_payload
[09:32:19] [PASSED] pf_fails_no_payload
[09:32:19] [PASSED] pf_fails_bad_origin
[09:32:19] [PASSED] pf_fails_bad_type
[09:32:19] [PASSED] pf_txn_reports_error
[09:32:19] [PASSED] pf_txn_sends_pf2guc
[09:32:19] [PASSED] pf_sends_pf2guc
[09:32:19] [SKIPPED] pf_loopback_nop
[09:32:19] [SKIPPED] pf_loopback_echo
[09:32:19] [SKIPPED] pf_loopback_fail
[09:32:19] [SKIPPED] pf_loopback_busy
[09:32:19] [SKIPPED] pf_loopback_retry
[09:32:19] ==================== [PASSED] pf_relay =====================
[09:32:19] ================== vf_relay (3 subtests) ===================
[09:32:19] [PASSED] vf_rejects_guc2vf_too_short
[09:32:19] [PASSED] vf_rejects_guc2vf_too_long
[09:32:19] [PASSED] vf_rejects_guc2vf_no_payload
[09:32:19] ==================== [PASSED] vf_relay =====================
[09:32:19] ===================== lmtt (1 subtest) =====================
[09:32:19] ======================== test_ops  =========================
[09:32:19] [PASSED] 2-level
[09:32:19] [PASSED] multi-level
[09:32:19] ==================== [PASSED] test_ops =====================
[09:32:19] ====================== [PASSED] lmtt =======================
[09:32:19] ================= pf_service (11 subtests) =================
[09:32:19] [PASSED] pf_negotiate_any
[09:32:19] [PASSED] pf_negotiate_base_match
[09:32:19] [PASSED] pf_negotiate_base_newer
[09:32:19] [PASSED] pf_negotiate_base_next
[09:32:19] [SKIPPED] pf_negotiate_base_older
[09:32:19] [PASSED] pf_negotiate_base_prev
[09:32:19] [PASSED] pf_negotiate_latest_match
[09:32:19] [PASSED] pf_negotiate_latest_newer
[09:32:19] [PASSED] pf_negotiate_latest_next
[09:32:19] [SKIPPED] pf_negotiate_latest_older
[09:32:19] [SKIPPED] pf_negotiate_latest_prev
[09:32:19] =================== [PASSED] pf_service ====================
[09:32:19] =================== xe_mocs (2 subtests) ===================
[09:32:19] ================ xe_live_mocs_kernel_kunit  ================
[09:32:19] =========== [SKIPPED] xe_live_mocs_kernel_kunit ============
[09:32:19] ================ xe_live_mocs_reset_kunit  =================
[09:32:19] ============ [SKIPPED] xe_live_mocs_reset_kunit ============
[09:32:19] ==================== [SKIPPED] xe_mocs =====================
[09:32:19] ================= xe_migrate (2 subtests) ==================
[09:32:19] ================= xe_migrate_sanity_kunit  =================
[09:32:19] ============ [SKIPPED] xe_migrate_sanity_kunit =============
[09:32:19] ================== xe_validate_ccs_kunit  ==================
[09:32:19] ============= [SKIPPED] xe_validate_ccs_kunit ==============
[09:32:19] =================== [SKIPPED] xe_migrate ===================
[09:32:19] ================== xe_dma_buf (1 subtest) ==================
[09:32:19] ==================== xe_dma_buf_kunit  =====================
[09:32:19] ================ [SKIPPED] xe_dma_buf_kunit ================
[09:32:19] =================== [SKIPPED] xe_dma_buf ===================
[09:32:19] ================= xe_bo_shrink (1 subtest) =================
[09:32:19] =================== xe_bo_shrink_kunit  ====================
[09:32:19] =============== [SKIPPED] xe_bo_shrink_kunit ===============
[09:32:19] ================== [SKIPPED] xe_bo_shrink ==================
[09:32:19] ==================== xe_bo (2 subtests) ====================
[09:32:19] ================== xe_ccs_migrate_kunit  ===================
[09:32:19] ============== [SKIPPED] xe_ccs_migrate_kunit ==============
[09:32:19] ==================== xe_bo_evict_kunit  ====================
[09:32:19] =============== [SKIPPED] xe_bo_evict_kunit ================
[09:32:19] ===================== [SKIPPED] xe_bo ======================
[09:32:19] ==================== args (11 subtests) ====================
[09:32:19] [PASSED] count_args_test
[09:32:19] [PASSED] call_args_example
[09:32:19] [PASSED] call_args_test
[09:32:19] [PASSED] drop_first_arg_example
[09:32:19] [PASSED] drop_first_arg_test
[09:32:19] [PASSED] first_arg_example
[09:32:19] [PASSED] first_arg_test
[09:32:19] [PASSED] last_arg_example
[09:32:19] [PASSED] last_arg_test
[09:32:19] [PASSED] pick_arg_example
[09:32:19] [PASSED] sep_comma_example
[09:32:19] ====================== [PASSED] args =======================
[09:32:19] =================== xe_pci (3 subtests) ====================
[09:32:19] ==================== check_graphics_ip  ====================
[09:32:19] [PASSED] 12.70 Xe_LPG
[09:32:19] [PASSED] 12.71 Xe_LPG
[09:32:19] [PASSED] 12.74 Xe_LPG+
[09:32:19] [PASSED] 20.01 Xe2_HPG
[09:32:19] [PASSED] 20.02 Xe2_HPG
[09:32:19] [PASSED] 20.04 Xe2_LPG
[09:32:19] [PASSED] 30.00 Xe3_LPG
[09:32:19] [PASSED] 30.01 Xe3_LPG
[09:32:19] [PASSED] 30.03 Xe3_LPG
[09:32:19] ================ [PASSED] check_graphics_ip ================
[09:32:19] ===================== check_media_ip  ======================
[09:32:19] [PASSED] 13.00 Xe_LPM+
[09:32:19] [PASSED] 13.01 Xe2_HPM
[09:32:19] [PASSED] 20.00 Xe2_LPM
[09:32:19] [PASSED] 30.00 Xe3_LPM
[09:32:19] [PASSED] 30.02 Xe3_LPM
[09:32:19] ================= [PASSED] check_media_ip ==================
[09:32:19] ================= check_platform_gt_count  =================
[09:32:19] [PASSED] 0x9A60 (TIGERLAKE)
[09:32:19] [PASSED] 0x9A68 (TIGERLAKE)
[09:32:19] [PASSED] 0x9A70 (TIGERLAKE)
[09:32:19] [PASSED] 0x9A40 (TIGERLAKE)
[09:32:19] [PASSED] 0x9A49 (TIGERLAKE)
[09:32:19] [PASSED] 0x9A59 (TIGERLAKE)
[09:32:19] [PASSED] 0x9A78 (TIGERLAKE)
[09:32:19] [PASSED] 0x9AC0 (TIGERLAKE)
[09:32:19] [PASSED] 0x9AC9 (TIGERLAKE)
[09:32:19] [PASSED] 0x9AD9 (TIGERLAKE)
[09:32:19] [PASSED] 0x9AF8 (TIGERLAKE)
[09:32:19] [PASSED] 0x4C80 (ROCKETLAKE)
[09:32:19] [PASSED] 0x4C8A (ROCKETLAKE)
[09:32:19] [PASSED] 0x4C8B (ROCKETLAKE)
[09:32:19] [PASSED] 0x4C8C (ROCKETLAKE)
[09:32:19] [PASSED] 0x4C90 (ROCKETLAKE)
[09:32:19] [PASSED] 0x4C9A (ROCKETLAKE)
[09:32:19] [PASSED] 0x4680 (ALDERLAKE_S)
[09:32:19] [PASSED] 0x4682 (ALDERLAKE_S)
[09:32:19] [PASSED] 0x4688 (ALDERLAKE_S)
[09:32:19] [PASSED] 0x468A (ALDERLAKE_S)
[09:32:19] [PASSED] 0x468B (ALDERLAKE_S)
[09:32:19] [PASSED] 0x4690 (ALDERLAKE_S)
[09:32:19] [PASSED] 0x4692 (ALDERLAKE_S)
[09:32:19] [PASSED] 0x4693 (ALDERLAKE_S)
[09:32:19] [PASSED] 0x46A0 (ALDERLAKE_P)
[09:32:19] [PASSED] 0x46A1 (ALDERLAKE_P)
[09:32:19] [PASSED] 0x46A2 (ALDERLAKE_P)
[09:32:19] [PASSED] 0x46A3 (ALDERLAKE_P)
[09:32:19] [PASSED] 0x46A6 (ALDERLAKE_P)
[09:32:19] [PASSED] 0x46A8 (ALDERLAKE_P)
[09:32:19] [PASSED] 0x46AA (ALDERLAKE_P)
[09:32:19] [PASSED] 0x462A (ALDERLAKE_P)
[09:32:19] [PASSED] 0x4626 (ALDERLAKE_P)
[09:32:19] [PASSED] 0x4628 (ALDERLAKE_P)
[09:32:19] [PASSED] 0x46B0 (ALDERLAKE_P)
[09:32:19] [PASSED] 0x46B1 (ALDERLAKE_P)
[09:32:19] [PASSED] 0x46B2 (ALDERLAKE_P)
[09:32:19] [PASSED] 0x46B3 (ALDERLAKE_P)
[09:32:19] [PASSED] 0x46C0 (ALDERLAKE_P)
[09:32:19] [PASSED] 0x46C1 (ALDERLAKE_P)
[09:32:19] [PASSED] 0x46C2 (ALDERLAKE_P)
[09:32:19] [PASSED] 0x46C3 (ALDERLAKE_P)
[09:32:19] [PASSED] 0x46D0 (ALDERLAKE_N)
[09:32:19] [PASSED] 0x46D1 (ALDERLAKE_N)
[09:32:19] [PASSED] 0x46D2 (ALDERLAKE_N)
[09:32:19] [PASSED] 0x46D3 (ALDERLAKE_N)
[09:32:19] [PASSED] 0x46D4 (ALDERLAKE_N)
[09:32:19] [PASSED] 0xA721 (ALDERLAKE_P)
[09:32:19] [PASSED] 0xA7A1 (ALDERLAKE_P)
[09:32:19] [PASSED] 0xA7A9 (ALDERLAKE_P)
[09:32:19] [PASSED] 0xA7AC (ALDERLAKE_P)
[09:32:19] [PASSED] 0xA7AD (ALDERLAKE_P)
[09:32:19] [PASSED] 0xA720 (ALDERLAKE_P)
[09:32:19] [PASSED] 0xA7A0 (ALDERLAKE_P)
[09:32:19] [PASSED] 0xA7A8 (ALDERLAKE_P)
[09:32:19] [PASSED] 0xA7AA (ALDERLAKE_P)
[09:32:19] [PASSED] 0xA7AB (ALDERLAKE_P)
[09:32:19] [PASSED] 0xA780 (ALDERLAKE_S)
[09:32:19] [PASSED] 0xA781 (ALDERLAKE_S)
[09:32:19] [PASSED] 0xA782 (ALDERLAKE_S)
[09:32:19] [PASSED] 0xA783 (ALDERLAKE_S)
[09:32:19] [PASSED] 0xA788 (ALDERLAKE_S)
[09:32:19] [PASSED] 0xA789 (ALDERLAKE_S)
[09:32:19] [PASSED] 0xA78A (ALDERLAKE_S)
[09:32:19] [PASSED] 0xA78B (ALDERLAKE_S)
[09:32:19] [PASSED] 0x4905 (DG1)
[09:32:19] [PASSED] 0x4906 (DG1)
[09:32:19] [PASSED] 0x4907 (DG1)
[09:32:19] [PASSED] 0x4908 (DG1)
[09:32:19] [PASSED] 0x4909 (DG1)
[09:32:19] [PASSED] 0x56C0 (DG2)
[09:32:19] [PASSED] 0x56C2 (DG2)
[09:32:19] [PASSED] 0x56C1 (DG2)
[09:32:19] [PASSED] 0x7D51 (METEORLAKE)
[09:32:19] [PASSED] 0x7DD1 (METEORLAKE)
[09:32:19] [PASSED] 0x7D41 (METEORLAKE)
[09:32:19] [PASSED] 0x7D67 (METEORLAKE)
[09:32:19] [PASSED] 0xB640 (METEORLAKE)
[09:32:19] [PASSED] 0x56A0 (DG2)
[09:32:19] [PASSED] 0x56A1 (DG2)
[09:32:19] [PASSED] 0x56A2 (DG2)
[09:32:19] [PASSED] 0x56BE (DG2)
[09:32:19] [PASSED] 0x56BF (DG2)
[09:32:19] [PASSED] 0x5690 (DG2)
[09:32:19] [PASSED] 0x5691 (DG2)
[09:32:19] [PASSED] 0x5692 (DG2)
[09:32:19] [PASSED] 0x56A5 (DG2)
[09:32:19] [PASSED] 0x56A6 (DG2)
[09:32:19] [PASSED] 0x56B0 (DG2)
[09:32:19] [PASSED] 0x56B1 (DG2)
[09:32:19] [PASSED] 0x56BA (DG2)
[09:32:19] [PASSED] 0x56BB (DG2)
[09:32:19] [PASSED] 0x56BC (DG2)
[09:32:19] [PASSED] 0x56BD (DG2)
[09:32:19] [PASSED] 0x5693 (DG2)
[09:32:19] [PASSED] 0x5694 (DG2)
[09:32:19] [PASSED] 0x5695 (DG2)
[09:32:19] [PASSED] 0x56A3 (DG2)
[09:32:19] [PASSED] 0x56A4 (DG2)
[09:32:19] [PASSED] 0x56B2 (DG2)
[09:32:19] [PASSED] 0x56B3 (DG2)
[09:32:19] [PASSED] 0x5696 (DG2)
[09:32:19] [PASSED] 0x5697 (DG2)
[09:32:19] [PASSED] 0xB69 (PVC)
[09:32:19] [PASSED] 0xB6E (PVC)
[09:32:19] [PASSED] 0xBD4 (PVC)
[09:32:19] [PASSED] 0xBD5 (PVC)
[09:32:19] [PASSED] 0xBD6 (PVC)
[09:32:19] [PASSED] 0xBD7 (PVC)
[09:32:19] [PASSED] 0xBD8 (PVC)
[09:32:19] [PASSED] 0xBD9 (PVC)
[09:32:19] [PASSED] 0xBDA (PVC)
[09:32:19] [PASSED] 0xBDB (PVC)
[09:32:19] [PASSED] 0xBE0 (PVC)
[09:32:19] [PASSED] 0xBE1 (PVC)
[09:32:19] [PASSED] 0xBE5 (PVC)
[09:32:19] [PASSED] 0x7D40 (METEORLAKE)
[09:32:19] [PASSED] 0x7D45 (METEORLAKE)
[09:32:19] [PASSED] 0x7D55 (METEORLAKE)
[09:32:19] [PASSED] 0x7D60 (METEORLAKE)
[09:32:19] [PASSED] 0x7DD5 (METEORLAKE)
[09:32:19] [PASSED] 0x6420 (LUNARLAKE)
[09:32:19] [PASSED] 0x64A0 (LUNARLAKE)
[09:32:19] [PASSED] 0x64B0 (LUNARLAKE)
[09:32:19] [PASSED] 0xE202 (BATTLEMAGE)
[09:32:19] [PASSED] 0xE209 (BATTLEMAGE)
[09:32:19] [PASSED] 0xE20B (BATTLEMAGE)
[09:32:19] [PASSED] 0xE20C (BATTLEMAGE)
[09:32:19] [PASSED] 0xE20D (BATTLEMAGE)
[09:32:19] [PASSED] 0xE210 (BATTLEMAGE)
[09:32:19] [PASSED] 0xE211 (BATTLEMAGE)
[09:32:19] [PASSED] 0xE212 (BATTLEMAGE)
[09:32:19] [PASSED] 0xE216 (BATTLEMAGE)
[09:32:19] [PASSED] 0xE220 (BATTLEMAGE)
[09:32:19] [PASSED] 0xE221 (BATTLEMAGE)
[09:32:19] [PASSED] 0xE222 (BATTLEMAGE)
[09:32:19] [PASSED] 0xE223 (BATTLEMAGE)
[09:32:19] [PASSED] 0xB080 (PANTHERLAKE)
[09:32:19] [PASSED] 0xB081 (PANTHERLAKE)
[09:32:19] [PASSED] 0xB082 (PANTHERLAKE)
[09:32:19] [PASSED] 0xB083 (PANTHERLAKE)
[09:32:19] [PASSED] 0xB084 (PANTHERLAKE)
[09:32:19] [PASSED] 0xB085 (PANTHERLAKE)
[09:32:19] [PASSED] 0xB086 (PANTHERLAKE)
[09:32:19] [PASSED] 0xB087 (PANTHERLAKE)
[09:32:19] [PASSED] 0xB08F (PANTHERLAKE)
[09:32:19] [PASSED] 0xB090 (PANTHERLAKE)
[09:32:19] [PASSED] 0xB0A0 (PANTHERLAKE)
[09:32:19] [PASSED] 0xB0B0 (PANTHERLAKE)
[09:32:19] [PASSED] 0xFD80 (PANTHERLAKE)
[09:32:19] [PASSED] 0xFD81 (PANTHERLAKE)
[09:32:19] ============= [PASSED] check_platform_gt_count =============
[09:32:19] ===================== [PASSED] xe_pci ======================
[09:32:19] =================== xe_rtp (2 subtests) ====================
[09:32:19] =============== xe_rtp_process_to_sr_tests  ================
[09:32:19] [PASSED] coalesce-same-reg
[09:32:19] [PASSED] no-match-no-add
[09:32:19] [PASSED] match-or
[09:32:19] [PASSED] match-or-xfail
[09:32:19] [PASSED] no-match-no-add-multiple-rules
[09:32:19] [PASSED] two-regs-two-entries
[09:32:19] [PASSED] clr-one-set-other
[09:32:19] [PASSED] set-field
[09:32:19] [PASSED] conflict-duplicate
[09:32:19] [PASSED] conflict-not-disjoint
[09:32:19] [PASSED] conflict-reg-type
[09:32:19] =========== [PASSED] xe_rtp_process_to_sr_tests ============
[09:32:19] ================== xe_rtp_process_tests  ===================
[09:32:19] [PASSED] active1
[09:32:19] [PASSED] active2
[09:32:19] [PASSED] active-inactive
[09:32:19] [PASSED] inactive-active
[09:32:19] [PASSED] inactive-1st_or_active-inactive
[09:32:19] [PASSED] inactive-2nd_or_active-inactive
[09:32:19] [PASSED] inactive-last_or_active-inactive
[09:32:19] [PASSED] inactive-no_or_active-inactive
[09:32:19] ============== [PASSED] xe_rtp_process_tests ===============
[09:32:19] ===================== [PASSED] xe_rtp ======================
[09:32:19] ==================== xe_wa (1 subtest) =====================
[09:32:19] ======================== xe_wa_gt  =========================
[09:32:19] [PASSED] TIGERLAKE (B0)
[09:32:19] [PASSED] DG1 (A0)
[09:32:19] [PASSED] DG1 (B0)
[09:32:19] [PASSED] ALDERLAKE_S (A0)
[09:32:19] [PASSED] ALDERLAKE_S (B0)
[09:32:19] [PASSED] ALDERLAKE_S (C0)
[09:32:19] [PASSED] ALDERLAKE_S (D0)
[09:32:19] [PASSED] ALDERLAKE_P (A0)
[09:32:19] [PASSED] ALDERLAKE_P (B0)
[09:32:19] [PASSED] ALDERLAKE_P (C0)
[09:32:19] [PASSED] ALDERLAKE_S_RPLS (D0)
[09:32:19] [PASSED] ALDERLAKE_P_RPLU (E0)
[09:32:19] [PASSED] DG2_G10 (C0)
[09:32:19] [PASSED] DG2_G11 (B1)
[09:32:19] [PASSED] DG2_G12 (A1)
[09:32:19] [PASSED] METEORLAKE (g:A0, m:A0)
[09:32:19] [PASSED] METEORLAKE (g:A0, m:A0)
[09:32:19] [PASSED] METEORLAKE (g:A0, m:A0)
[09:32:19] [PASSED] LUNARLAKE (g:A0, m:A0)
[09:32:19] [PASSED] LUNARLAKE (g:B0, m:A0)
stty: 'standard input': Inappropriate ioctl for device
[09:32:19] [PASSED] BATTLEMAGE (g:A0, m:A1)
[09:32:19] [PASSED] PANTHERLAKE (g:A0, m:A0)
[09:32:19] ==================== [PASSED] xe_wa_gt =====================
[09:32:19] ====================== [PASSED] xe_wa ======================
[09:32:19] ============================================================
[09:32:19] Testing complete. Ran 298 tests: passed: 282, skipped: 16
[09:32:19] Elapsed time: 33.190s total, 4.229s configuring, 28.595s building, 0.313s running

+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/tests/.kunitconfig
[09:32:19] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[09:32:21] 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:32:43] Starting KUnit Kernel (1/1)...
[09:32:43] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[09:32:44] == drm_test_atomic_get_connector_for_encoder (1 subtest) ===
[09:32:44] [PASSED] drm_test_drm_atomic_get_connector_for_encoder
[09:32:44] ==== [PASSED] drm_test_atomic_get_connector_for_encoder ====
[09:32:44] =========== drm_validate_clone_mode (2 subtests) ===========
[09:32:44] ============== drm_test_check_in_clone_mode  ===============
[09:32:44] [PASSED] in_clone_mode
[09:32:44] [PASSED] not_in_clone_mode
[09:32:44] ========== [PASSED] drm_test_check_in_clone_mode ===========
[09:32:44] =============== drm_test_check_valid_clones  ===============
[09:32:44] [PASSED] not_in_clone_mode
[09:32:44] [PASSED] valid_clone
[09:32:44] [PASSED] invalid_clone
[09:32:44] =========== [PASSED] drm_test_check_valid_clones ===========
[09:32:44] ============= [PASSED] drm_validate_clone_mode =============
[09:32:44] ============= drm_validate_modeset (1 subtest) =============
[09:32:44] [PASSED] drm_test_check_connector_changed_modeset
[09:32:44] ============== [PASSED] drm_validate_modeset ===============
[09:32:44] ====== drm_test_bridge_get_current_state (2 subtests) ======
[09:32:44] [PASSED] drm_test_drm_bridge_get_current_state_atomic
[09:32:44] [PASSED] drm_test_drm_bridge_get_current_state_legacy
[09:32:44] ======== [PASSED] drm_test_bridge_get_current_state ========
[09:32:44] ====== drm_test_bridge_helper_reset_crtc (3 subtests) ======
[09:32:44] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic
[09:32:44] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic_disabled
[09:32:44] [PASSED] drm_test_drm_bridge_helper_reset_crtc_legacy
[09:32:44] ======== [PASSED] drm_test_bridge_helper_reset_crtc ========
[09:32:44] ============== drm_bridge_alloc (2 subtests) ===============
[09:32:44] [PASSED] drm_test_drm_bridge_alloc_basic
[09:32:44] [PASSED] drm_test_drm_bridge_alloc_get_put
[09:32:44] ================ [PASSED] drm_bridge_alloc =================
[09:32:44] ================== drm_buddy (7 subtests) ==================
[09:32:44] [PASSED] drm_test_buddy_alloc_limit
[09:32:44] [PASSED] drm_test_buddy_alloc_optimistic
[09:32:44] [PASSED] drm_test_buddy_alloc_pessimistic
[09:32:44] [PASSED] drm_test_buddy_alloc_pathological
[09:32:44] [PASSED] drm_test_buddy_alloc_contiguous
[09:32:44] [PASSED] drm_test_buddy_alloc_clear
[09:32:44] [PASSED] drm_test_buddy_alloc_range_bias
[09:32:44] ==================== [PASSED] drm_buddy ====================
[09:32:44] ============= drm_cmdline_parser (40 subtests) =============
[09:32:44] [PASSED] drm_test_cmdline_force_d_only
[09:32:44] [PASSED] drm_test_cmdline_force_D_only_dvi
[09:32:44] [PASSED] drm_test_cmdline_force_D_only_hdmi
[09:32:44] [PASSED] drm_test_cmdline_force_D_only_not_digital
[09:32:44] [PASSED] drm_test_cmdline_force_e_only
[09:32:44] [PASSED] drm_test_cmdline_res
[09:32:44] [PASSED] drm_test_cmdline_res_vesa
[09:32:44] [PASSED] drm_test_cmdline_res_vesa_rblank
[09:32:44] [PASSED] drm_test_cmdline_res_rblank
[09:32:44] [PASSED] drm_test_cmdline_res_bpp
[09:32:44] [PASSED] drm_test_cmdline_res_refresh
[09:32:44] [PASSED] drm_test_cmdline_res_bpp_refresh
[09:32:44] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced
[09:32:44] [PASSED] drm_test_cmdline_res_bpp_refresh_margins
[09:32:44] [PASSED] drm_test_cmdline_res_bpp_refresh_force_off
[09:32:44] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on
[09:32:44] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_analog
[09:32:44] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_digital
[09:32:44] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced_margins_force_on
[09:32:44] [PASSED] drm_test_cmdline_res_margins_force_on
[09:32:44] [PASSED] drm_test_cmdline_res_vesa_margins
[09:32:44] [PASSED] drm_test_cmdline_name
[09:32:44] [PASSED] drm_test_cmdline_name_bpp
[09:32:44] [PASSED] drm_test_cmdline_name_option
[09:32:44] [PASSED] drm_test_cmdline_name_bpp_option
[09:32:44] [PASSED] drm_test_cmdline_rotate_0
[09:32:44] [PASSED] drm_test_cmdline_rotate_90
[09:32:44] [PASSED] drm_test_cmdline_rotate_180
[09:32:44] [PASSED] drm_test_cmdline_rotate_270
[09:32:44] [PASSED] drm_test_cmdline_hmirror
[09:32:44] [PASSED] drm_test_cmdline_vmirror
[09:32:44] [PASSED] drm_test_cmdline_margin_options
[09:32:44] [PASSED] drm_test_cmdline_multiple_options
[09:32:44] [PASSED] drm_test_cmdline_bpp_extra_and_option
[09:32:44] [PASSED] drm_test_cmdline_extra_and_option
[09:32:44] [PASSED] drm_test_cmdline_freestanding_options
[09:32:44] [PASSED] drm_test_cmdline_freestanding_force_e_and_options
[09:32:44] [PASSED] drm_test_cmdline_panel_orientation
[09:32:44] ================ drm_test_cmdline_invalid  =================
[09:32:44] [PASSED] margin_only
[09:32:44] [PASSED] interlace_only
[09:32:44] [PASSED] res_missing_x
[09:32:44] [PASSED] res_missing_y
[09:32:44] [PASSED] res_bad_y
[09:32:44] [PASSED] res_missing_y_bpp
[09:32:44] [PASSED] res_bad_bpp
[09:32:44] [PASSED] res_bad_refresh
[09:32:44] [PASSED] res_bpp_refresh_force_on_off
[09:32:44] [PASSED] res_invalid_mode
[09:32:44] [PASSED] res_bpp_wrong_place_mode
[09:32:44] [PASSED] name_bpp_refresh
[09:32:44] [PASSED] name_refresh
[09:32:44] [PASSED] name_refresh_wrong_mode
[09:32:44] [PASSED] name_refresh_invalid_mode
[09:32:44] [PASSED] rotate_multiple
[09:32:44] [PASSED] rotate_invalid_val
[09:32:44] [PASSED] rotate_truncated
[09:32:44] [PASSED] invalid_option
[09:32:44] [PASSED] invalid_tv_option
[09:32:44] [PASSED] truncated_tv_option
[09:32:44] ============ [PASSED] drm_test_cmdline_invalid =============
[09:32:44] =============== drm_test_cmdline_tv_options  ===============
[09:32:44] [PASSED] NTSC
[09:32:44] [PASSED] NTSC_443
[09:32:44] [PASSED] NTSC_J
[09:32:44] [PASSED] PAL
[09:32:44] [PASSED] PAL_M
[09:32:44] [PASSED] PAL_N
[09:32:44] [PASSED] SECAM
[09:32:44] [PASSED] MONO_525
[09:32:44] [PASSED] MONO_625
[09:32:44] =========== [PASSED] drm_test_cmdline_tv_options ===========
[09:32:44] =============== [PASSED] drm_cmdline_parser ================
[09:32:44] ========== drmm_connector_hdmi_init (20 subtests) ==========
[09:32:44] [PASSED] drm_test_connector_hdmi_init_valid
[09:32:44] [PASSED] drm_test_connector_hdmi_init_bpc_8
[09:32:44] [PASSED] drm_test_connector_hdmi_init_bpc_10
[09:32:44] [PASSED] drm_test_connector_hdmi_init_bpc_12
[09:32:44] [PASSED] drm_test_connector_hdmi_init_bpc_invalid
[09:32:44] [PASSED] drm_test_connector_hdmi_init_bpc_null
[09:32:44] [PASSED] drm_test_connector_hdmi_init_formats_empty
[09:32:44] [PASSED] drm_test_connector_hdmi_init_formats_no_rgb
[09:32:44] === drm_test_connector_hdmi_init_formats_yuv420_allowed  ===
[09:32:44] [PASSED] supported_formats=0x9 yuv420_allowed=1
[09:32:44] [PASSED] supported_formats=0x9 yuv420_allowed=0
[09:32:44] [PASSED] supported_formats=0x3 yuv420_allowed=1
[09:32:44] [PASSED] supported_formats=0x3 yuv420_allowed=0
[09:32:44] === [PASSED] drm_test_connector_hdmi_init_formats_yuv420_allowed ===
[09:32:44] [PASSED] drm_test_connector_hdmi_init_null_ddc
[09:32:44] [PASSED] drm_test_connector_hdmi_init_null_product
[09:32:44] [PASSED] drm_test_connector_hdmi_init_null_vendor
[09:32:44] [PASSED] drm_test_connector_hdmi_init_product_length_exact
[09:32:44] [PASSED] drm_test_connector_hdmi_init_product_length_too_long
[09:32:44] [PASSED] drm_test_connector_hdmi_init_product_valid
[09:32:44] [PASSED] drm_test_connector_hdmi_init_vendor_length_exact
[09:32:44] [PASSED] drm_test_connector_hdmi_init_vendor_length_too_long
[09:32:44] [PASSED] drm_test_connector_hdmi_init_vendor_valid
[09:32:44] ========= drm_test_connector_hdmi_init_type_valid  =========
[09:32:44] [PASSED] HDMI-A
[09:32:44] [PASSED] HDMI-B
[09:32:44] ===== [PASSED] drm_test_connector_hdmi_init_type_valid =====
[09:32:44] ======== drm_test_connector_hdmi_init_type_invalid  ========
[09:32:44] [PASSED] Unknown
[09:32:44] [PASSED] VGA
[09:32:44] [PASSED] DVI-I
[09:32:44] [PASSED] DVI-D
[09:32:44] [PASSED] DVI-A
[09:32:44] [PASSED] Composite
[09:32:44] [PASSED] SVIDEO
[09:32:44] [PASSED] LVDS
[09:32:44] [PASSED] Component
[09:32:44] [PASSED] DIN
[09:32:44] [PASSED] DP
[09:32:44] [PASSED] TV
[09:32:44] [PASSED] eDP
[09:32:44] [PASSED] Virtual
[09:32:44] [PASSED] DSI
[09:32:44] [PASSED] DPI
[09:32:44] [PASSED] Writeback
[09:32:44] [PASSED] SPI
[09:32:44] [PASSED] USB
[09:32:44] ==== [PASSED] drm_test_connector_hdmi_init_type_invalid ====
[09:32:44] ============ [PASSED] drmm_connector_hdmi_init =============
[09:32:44] ============= drmm_connector_init (3 subtests) =============
[09:32:44] [PASSED] drm_test_drmm_connector_init
[09:32:44] [PASSED] drm_test_drmm_connector_init_null_ddc
[09:32:44] ========= drm_test_drmm_connector_init_type_valid  =========
[09:32:44] [PASSED] Unknown
[09:32:44] [PASSED] VGA
[09:32:44] [PASSED] DVI-I
[09:32:44] [PASSED] DVI-D
[09:32:44] [PASSED] DVI-A
[09:32:44] [PASSED] Composite
[09:32:44] [PASSED] SVIDEO
[09:32:44] [PASSED] LVDS
[09:32:44] [PASSED] Component
[09:32:44] [PASSED] DIN
[09:32:44] [PASSED] DP
[09:32:44] [PASSED] HDMI-A
[09:32:44] [PASSED] HDMI-B
[09:32:44] [PASSED] TV
[09:32:44] [PASSED] eDP
[09:32:44] [PASSED] Virtual
[09:32:44] [PASSED] DSI
[09:32:44] [PASSED] DPI
[09:32:44] [PASSED] Writeback
[09:32:44] [PASSED] SPI
[09:32:44] [PASSED] USB
[09:32:44] ===== [PASSED] drm_test_drmm_connector_init_type_valid =====
[09:32:44] =============== [PASSED] drmm_connector_init ===============
[09:32:44] ========= drm_connector_dynamic_init (6 subtests) ==========
[09:32:44] [PASSED] drm_test_drm_connector_dynamic_init
[09:32:44] [PASSED] drm_test_drm_connector_dynamic_init_null_ddc
[09:32:44] [PASSED] drm_test_drm_connector_dynamic_init_not_added
[09:32:44] [PASSED] drm_test_drm_connector_dynamic_init_properties
[09:32:44] ===== drm_test_drm_connector_dynamic_init_type_valid  ======
[09:32:44] [PASSED] Unknown
[09:32:44] [PASSED] VGA
[09:32:44] [PASSED] DVI-I
[09:32:44] [PASSED] DVI-D
[09:32:44] [PASSED] DVI-A
[09:32:44] [PASSED] Composite
[09:32:44] [PASSED] SVIDEO
[09:32:44] [PASSED] LVDS
[09:32:44] [PASSED] Component
[09:32:44] [PASSED] DIN
[09:32:44] [PASSED] DP
[09:32:44] [PASSED] HDMI-A
[09:32:44] [PASSED] HDMI-B
[09:32:44] [PASSED] TV
[09:32:44] [PASSED] eDP
[09:32:44] [PASSED] Virtual
[09:32:44] [PASSED] DSI
[09:32:44] [PASSED] DPI
[09:32:44] [PASSED] Writeback
[09:32:44] [PASSED] SPI
[09:32:44] [PASSED] USB
[09:32:44] = [PASSED] drm_test_drm_connector_dynamic_init_type_valid ==
[09:32:44] ======== drm_test_drm_connector_dynamic_init_name  =========
[09:32:44] [PASSED] Unknown
[09:32:44] [PASSED] VGA
[09:32:44] [PASSED] DVI-I
[09:32:44] [PASSED] DVI-D
[09:32:44] [PASSED] DVI-A
[09:32:44] [PASSED] Composite
[09:32:44] [PASSED] SVIDEO
[09:32:44] [PASSED] LVDS
[09:32:44] [PASSED] Component
[09:32:44] [PASSED] DIN
[09:32:44] [PASSED] DP
[09:32:44] [PASSED] HDMI-A
[09:32:44] [PASSED] HDMI-B
[09:32:44] [PASSED] TV
[09:32:44] [PASSED] eDP
[09:32:44] [PASSED] Virtual
[09:32:44] [PASSED] DSI
[09:32:44] [PASSED] DPI
[09:32:44] [PASSED] Writeback
[09:32:44] [PASSED] SPI
[09:32:44] [PASSED] USB
[09:32:44] ==== [PASSED] drm_test_drm_connector_dynamic_init_name =====
[09:32:44] =========== [PASSED] drm_connector_dynamic_init ============
[09:32:44] ==== drm_connector_dynamic_register_early (4 subtests) =====
[09:32:44] [PASSED] drm_test_drm_connector_dynamic_register_early_on_list
[09:32:44] [PASSED] drm_test_drm_connector_dynamic_register_early_defer
[09:32:44] [PASSED] drm_test_drm_connector_dynamic_register_early_no_init
[09:32:44] [PASSED] drm_test_drm_connector_dynamic_register_early_no_mode_object
[09:32:44] ====== [PASSED] drm_connector_dynamic_register_early =======
[09:32:44] ======= drm_connector_dynamic_register (7 subtests) ========
[09:32:44] [PASSED] drm_test_drm_connector_dynamic_register_on_list
[09:32:44] [PASSED] drm_test_drm_connector_dynamic_register_no_defer
[09:32:44] [PASSED] drm_test_drm_connector_dynamic_register_no_init
[09:32:44] [PASSED] drm_test_drm_connector_dynamic_register_mode_object
[09:32:44] [PASSED] drm_test_drm_connector_dynamic_register_sysfs
[09:32:44] [PASSED] drm_test_drm_connector_dynamic_register_sysfs_name
[09:32:44] [PASSED] drm_test_drm_connector_dynamic_register_debugfs
[09:32:44] ========= [PASSED] drm_connector_dynamic_register ==========
[09:32:44] = drm_connector_attach_broadcast_rgb_property (2 subtests) =
[09:32:44] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property
[09:32:44] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property_hdmi_connector
[09:32:44] === [PASSED] drm_connector_attach_broadcast_rgb_property ===
[09:32:44] ========== drm_get_tv_mode_from_name (2 subtests) ==========
[09:32:44] ========== drm_test_get_tv_mode_from_name_valid  ===========
[09:32:44] [PASSED] NTSC
[09:32:44] [PASSED] NTSC-443
[09:32:44] [PASSED] NTSC-J
[09:32:44] [PASSED] PAL
[09:32:44] [PASSED] PAL-M
[09:32:44] [PASSED] PAL-N
[09:32:44] [PASSED] SECAM
[09:32:44] [PASSED] Mono
[09:32:44] ====== [PASSED] drm_test_get_tv_mode_from_name_valid =======
[09:32:44] [PASSED] drm_test_get_tv_mode_from_name_truncated
[09:32:44] ============ [PASSED] drm_get_tv_mode_from_name ============
[09:32:44] = drm_test_connector_hdmi_compute_mode_clock (12 subtests) =
[09:32:44] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb
[09:32:44] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc
[09:32:44] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc_vic_1
[09:32:44] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc
[09:32:44] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc_vic_1
[09:32:44] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_double
[09:32:44] = drm_test_connector_hdmi_compute_mode_clock_yuv420_valid  =
[09:32:44] [PASSED] VIC 96
[09:32:44] [PASSED] VIC 97
[09:32:44] [PASSED] VIC 101
[09:32:44] [PASSED] VIC 102
[09:32:44] [PASSED] VIC 106
[09:32:44] [PASSED] VIC 107
[09:32:44] === [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_valid ===
[09:32:44] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_10_bpc
[09:32:44] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_12_bpc
[09:32:44] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_8_bpc
[09:32:44] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_10_bpc
[09:32:44] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_12_bpc
[09:32:44] === [PASSED] drm_test_connector_hdmi_compute_mode_clock ====
[09:32:44] == drm_hdmi_connector_get_broadcast_rgb_name (2 subtests) ==
[09:32:44] === drm_test_drm_hdmi_connector_get_broadcast_rgb_name  ====
[09:32:44] [PASSED] Automatic
[09:32:44] [PASSED] Full
[09:32:44] [PASSED] Limited 16:235
[09:32:44] === [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name ===
[09:32:44] [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name_invalid
[09:32:44] ==== [PASSED] drm_hdmi_connector_get_broadcast_rgb_name ====
[09:32:44] == drm_hdmi_connector_get_output_format_name (2 subtests) ==
[09:32:44] === drm_test_drm_hdmi_connector_get_output_format_name  ====
[09:32:44] [PASSED] RGB
[09:32:44] [PASSED] YUV 4:2:0
[09:32:44] [PASSED] YUV 4:2:2
[09:32:44] [PASSED] YUV 4:4:4
[09:32:44] === [PASSED] drm_test_drm_hdmi_connector_get_output_format_name ===
[09:32:44] [PASSED] drm_test_drm_hdmi_connector_get_output_format_name_invalid
[09:32:44] ==== [PASSED] drm_hdmi_connector_get_output_format_name ====
[09:32:44] ============= drm_damage_helper (21 subtests) ==============
[09:32:44] [PASSED] drm_test_damage_iter_no_damage
[09:32:44] [PASSED] drm_test_damage_iter_no_damage_fractional_src
[09:32:44] [PASSED] drm_test_damage_iter_no_damage_src_moved
[09:32:44] [PASSED] drm_test_damage_iter_no_damage_fractional_src_moved
[09:32:44] [PASSED] drm_test_damage_iter_no_damage_not_visible
[09:32:44] [PASSED] drm_test_damage_iter_no_damage_no_crtc
[09:32:44] [PASSED] drm_test_damage_iter_no_damage_no_fb
[09:32:44] [PASSED] drm_test_damage_iter_simple_damage
[09:32:44] [PASSED] drm_test_damage_iter_single_damage
[09:32:44] [PASSED] drm_test_damage_iter_single_damage_intersect_src
[09:32:44] [PASSED] drm_test_damage_iter_single_damage_outside_src
[09:32:44] [PASSED] drm_test_damage_iter_single_damage_fractional_src
[09:32:44] [PASSED] drm_test_damage_iter_single_damage_intersect_fractional_src
[09:32:44] [PASSED] drm_test_damage_iter_single_damage_outside_fractional_src
[09:32:44] [PASSED] drm_test_damage_iter_single_damage_src_moved
[09:32:44] [PASSED] drm_test_damage_iter_single_damage_fractional_src_moved
[09:32:44] [PASSED] drm_test_damage_iter_damage
[09:32:44] [PASSED] drm_test_damage_iter_damage_one_intersect
[09:32:44] [PASSED] drm_test_damage_iter_damage_one_outside
[09:32:44] [PASSED] drm_test_damage_iter_damage_src_moved
[09:32:44] [PASSED] drm_test_damage_iter_damage_not_visible
[09:32:44] ================ [PASSED] drm_damage_helper ================
[09:32:44] ============== drm_dp_mst_helper (3 subtests) ==============
[09:32:44] ============== drm_test_dp_mst_calc_pbn_mode  ==============
[09:32:44] [PASSED] Clock 154000 BPP 30 DSC disabled
[09:32:44] [PASSED] Clock 234000 BPP 30 DSC disabled
[09:32:44] [PASSED] Clock 297000 BPP 24 DSC disabled
[09:32:44] [PASSED] Clock 332880 BPP 24 DSC enabled
[09:32:44] [PASSED] Clock 324540 BPP 24 DSC enabled
[09:32:44] ========== [PASSED] drm_test_dp_mst_calc_pbn_mode ==========
[09:32:44] ============== drm_test_dp_mst_calc_pbn_div  ===============
[09:32:44] [PASSED] Link rate 2000000 lane count 4
[09:32:44] [PASSED] Link rate 2000000 lane count 2
[09:32:44] [PASSED] Link rate 2000000 lane count 1
[09:32:44] [PASSED] Link rate 1350000 lane count 4
[09:32:44] [PASSED] Link rate 1350000 lane count 2
[09:32:44] [PASSED] Link rate 1350000 lane count 1
[09:32:44] [PASSED] Link rate 1000000 lane count 4
[09:32:44] [PASSED] Link rate 1000000 lane count 2
[09:32:44] [PASSED] Link rate 1000000 lane count 1
[09:32:44] [PASSED] Link rate 810000 lane count 4
[09:32:44] [PASSED] Link rate 810000 lane count 2
[09:32:44] [PASSED] Link rate 810000 lane count 1
[09:32:44] [PASSED] Link rate 540000 lane count 4
[09:32:44] [PASSED] Link rate 540000 lane count 2
[09:32:44] [PASSED] Link rate 540000 lane count 1
[09:32:44] [PASSED] Link rate 270000 lane count 4
[09:32:44] [PASSED] Link rate 270000 lane count 2
[09:32:44] [PASSED] Link rate 270000 lane count 1
[09:32:44] [PASSED] Link rate 162000 lane count 4
[09:32:44] [PASSED] Link rate 162000 lane count 2
[09:32:44] [PASSED] Link rate 162000 lane count 1
[09:32:44] ========== [PASSED] drm_test_dp_mst_calc_pbn_div ===========
[09:32:44] ========= drm_test_dp_mst_sideband_msg_req_decode  =========
[09:32:44] [PASSED] DP_ENUM_PATH_RESOURCES with port number
[09:32:44] [PASSED] DP_POWER_UP_PHY with port number
[09:32:44] [PASSED] DP_POWER_DOWN_PHY with port number
[09:32:44] [PASSED] DP_ALLOCATE_PAYLOAD with SDP stream sinks
[09:32:44] [PASSED] DP_ALLOCATE_PAYLOAD with port number
[09:32:44] [PASSED] DP_ALLOCATE_PAYLOAD with VCPI
[09:32:44] [PASSED] DP_ALLOCATE_PAYLOAD with PBN
[09:32:44] [PASSED] DP_QUERY_PAYLOAD with port number
[09:32:44] [PASSED] DP_QUERY_PAYLOAD with VCPI
[09:32:44] [PASSED] DP_REMOTE_DPCD_READ with port number
[09:32:44] [PASSED] DP_REMOTE_DPCD_READ with DPCD address
[09:32:44] [PASSED] DP_REMOTE_DPCD_READ with max number of bytes
[09:32:44] [PASSED] DP_REMOTE_DPCD_WRITE with port number
[09:32:44] [PASSED] DP_REMOTE_DPCD_WRITE with DPCD address
[09:32:44] [PASSED] DP_REMOTE_DPCD_WRITE with data array
[09:32:44] [PASSED] DP_REMOTE_I2C_READ with port number
[09:32:44] [PASSED] DP_REMOTE_I2C_READ with I2C device ID
[09:32:44] [PASSED] DP_REMOTE_I2C_READ with transactions array
[09:32:44] [PASSED] DP_REMOTE_I2C_WRITE with port number
[09:32:44] [PASSED] DP_REMOTE_I2C_WRITE with I2C device ID
[09:32:44] [PASSED] DP_REMOTE_I2C_WRITE with data array
[09:32:44] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream ID
[09:32:44] [PASSED] DP_QUERY_STREAM_ENC_STATUS with client ID
[09:32:44] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream event
[09:32:44] [PASSED] DP_QUERY_STREAM_ENC_STATUS with valid stream event
[09:32:44] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream behavior
[09:32:44] [PASSED] DP_QUERY_STREAM_ENC_STATUS with a valid stream behavior
[09:32:44] ===== [PASSED] drm_test_dp_mst_sideband_msg_req_decode =====
[09:32:44] ================ [PASSED] drm_dp_mst_helper ================
[09:32:44] ================== drm_exec (7 subtests) ===================
[09:32:44] [PASSED] sanitycheck
[09:32:44] [PASSED] test_lock
[09:32:44] [PASSED] test_lock_unlock
[09:32:44] [PASSED] test_duplicates
[09:32:44] [PASSED] test_prepare
[09:32:44] [PASSED] test_prepare_array
[09:32:44] [PASSED] test_multiple_loops
[09:32:44] ==================== [PASSED] drm_exec =====================
[09:32:44] =========== drm_format_helper_test (17 subtests) ===========
[09:32:44] ============== drm_test_fb_xrgb8888_to_gray8  ==============
[09:32:44] [PASSED] single_pixel_source_buffer
[09:32:44] [PASSED] single_pixel_clip_rectangle
[09:32:44] [PASSED] well_known_colors
[09:32:44] [PASSED] destination_pitch
[09:32:44] ========== [PASSED] drm_test_fb_xrgb8888_to_gray8 ==========
[09:32:44] ============= drm_test_fb_xrgb8888_to_rgb332  ==============
[09:32:44] [PASSED] single_pixel_source_buffer
[09:32:44] [PASSED] single_pixel_clip_rectangle
[09:32:44] [PASSED] well_known_colors
[09:32:44] [PASSED] destination_pitch
[09:32:44] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb332 ==========
[09:32:44] ============= drm_test_fb_xrgb8888_to_rgb565  ==============
[09:32:44] [PASSED] single_pixel_source_buffer
[09:32:44] [PASSED] single_pixel_clip_rectangle
[09:32:44] [PASSED] well_known_colors
[09:32:44] [PASSED] destination_pitch
[09:32:44] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb565 ==========
[09:32:44] ============ drm_test_fb_xrgb8888_to_xrgb1555  =============
[09:32:44] [PASSED] single_pixel_source_buffer
[09:32:44] [PASSED] single_pixel_clip_rectangle
[09:32:44] [PASSED] well_known_colors
[09:32:44] [PASSED] destination_pitch
[09:32:44] ======== [PASSED] drm_test_fb_xrgb8888_to_xrgb1555 =========
[09:32:44] ============ drm_test_fb_xrgb8888_to_argb1555  =============
[09:32:44] [PASSED] single_pixel_source_buffer
[09:32:44] [PASSED] single_pixel_clip_rectangle
[09:32:44] [PASSED] well_known_colors
[09:32:44] [PASSED] destination_pitch
[09:32:44] ======== [PASSED] drm_test_fb_xrgb8888_to_argb1555 =========
[09:32:44] ============ drm_test_fb_xrgb8888_to_rgba5551  =============
[09:32:44] [PASSED] single_pixel_source_buffer
[09:32:44] [PASSED] single_pixel_clip_rectangle
[09:32:44] [PASSED] well_known_colors
[09:32:44] [PASSED] destination_pitch
[09:32:44] ======== [PASSED] drm_test_fb_xrgb8888_to_rgba5551 =========
[09:32:44] ============= drm_test_fb_xrgb8888_to_rgb888  ==============
[09:32:44] [PASSED] single_pixel_source_buffer
[09:32:44] [PASSED] single_pixel_clip_rectangle
[09:32:44] [PASSED] well_known_colors
[09:32:44] [PASSED] destination_pitch
[09:32:44] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb888 ==========
[09:32:44] ============= drm_test_fb_xrgb8888_to_bgr888  ==============
[09:32:44] [PASSED] single_pixel_source_buffer
[09:32:44] [PASSED] single_pixel_clip_rectangle
[09:32:44] [PASSED] well_known_colors
[09:32:44] [PASSED] destination_pitch
[09:32:44] ========= [PASSED] drm_test_fb_xrgb8888_to_bgr888 ==========
[09:32:44] ============ drm_test_fb_xrgb8888_to_argb8888  =============
[09:32:44] [PASSED] single_pixel_source_buffer
[09:32:44] [PASSED] single_pixel_clip_rectangle
[09:32:44] [PASSED] well_known_colors
[09:32:44] [PASSED] destination_pitch
[09:32:44] ======== [PASSED] drm_test_fb_xrgb8888_to_argb8888 =========
[09:32:44] =========== drm_test_fb_xrgb8888_to_xrgb2101010  ===========
[09:32:44] [PASSED] single_pixel_source_buffer
[09:32:44] [PASSED] single_pixel_clip_rectangle
[09:32:44] [PASSED] well_known_colors
[09:32:44] [PASSED] destination_pitch
[09:32:44] ======= [PASSED] drm_test_fb_xrgb8888_to_xrgb2101010 =======
[09:32:44] =========== drm_test_fb_xrgb8888_to_argb2101010  ===========
[09:32:44] [PASSED] single_pixel_source_buffer
[09:32:44] [PASSED] single_pixel_clip_rectangle
[09:32:44] [PASSED] well_known_colors
[09:32:44] [PASSED] destination_pitch
[09:32:44] ======= [PASSED] drm_test_fb_xrgb8888_to_argb2101010 =======
[09:32:44] ============== drm_test_fb_xrgb8888_to_mono  ===============
[09:32:44] [PASSED] single_pixel_source_buffer
[09:32:44] [PASSED] single_pixel_clip_rectangle
[09:32:44] [PASSED] well_known_colors
[09:32:44] [PASSED] destination_pitch
[09:32:44] ========== [PASSED] drm_test_fb_xrgb8888_to_mono ===========
[09:32:44] ==================== drm_test_fb_swab  =====================
[09:32:44] [PASSED] single_pixel_source_buffer
[09:32:44] [PASSED] single_pixel_clip_rectangle
[09:32:44] [PASSED] well_known_colors
[09:32:44] [PASSED] destination_pitch
[09:32:44] ================ [PASSED] drm_test_fb_swab =================
[09:32:44] ============ drm_test_fb_xrgb8888_to_xbgr8888  =============
[09:32:44] [PASSED] single_pixel_source_buffer
[09:32:44] [PASSED] single_pixel_clip_rectangle
[09:32:44] [PASSED] well_known_colors
[09:32:44] [PASSED] destination_pitch
[09:32:44] ======== [PASSED] drm_test_fb_xrgb8888_to_xbgr8888 =========
[09:32:44] ============ drm_test_fb_xrgb8888_to_abgr8888  =============
[09:32:44] [PASSED] single_pixel_source_buffer
[09:32:44] [PASSED] single_pixel_clip_rectangle
[09:32:44] [PASSED] well_known_colors
[09:32:44] [PASSED] destination_pitch
[09:32:44] ======== [PASSED] drm_test_fb_xrgb8888_to_abgr8888 =========
[09:32:44] ================= drm_test_fb_clip_offset  =================
[09:32:44] [PASSED] pass through
[09:32:44] [PASSED] horizontal offset
[09:32:44] [PASSED] vertical offset
[09:32:44] [PASSED] horizontal and vertical offset
[09:32:44] [PASSED] horizontal offset (custom pitch)
[09:32:44] [PASSED] vertical offset (custom pitch)
[09:32:44] [PASSED] horizontal and vertical offset (custom pitch)
[09:32:44] ============= [PASSED] drm_test_fb_clip_offset =============
[09:32:44] =================== drm_test_fb_memcpy  ====================
[09:32:44] [PASSED] single_pixel_source_buffer: XR24 little-endian (0x34325258)
[09:32:44] [PASSED] single_pixel_source_buffer: XRA8 little-endian (0x38415258)
[09:32:44] [PASSED] single_pixel_source_buffer: YU24 little-endian (0x34325559)
[09:32:44] [PASSED] single_pixel_clip_rectangle: XB24 little-endian (0x34324258)
[09:32:44] [PASSED] single_pixel_clip_rectangle: XRA8 little-endian (0x38415258)
[09:32:44] [PASSED] single_pixel_clip_rectangle: YU24 little-endian (0x34325559)
[09:32:44] [PASSED] well_known_colors: XB24 little-endian (0x34324258)
[09:32:44] [PASSED] well_known_colors: XRA8 little-endian (0x38415258)
[09:32:44] [PASSED] well_known_colors: YU24 little-endian (0x34325559)
[09:32:44] [PASSED] destination_pitch: XB24 little-endian (0x34324258)
[09:32:44] [PASSED] destination_pitch: XRA8 little-endian (0x38415258)
[09:32:44] [PASSED] destination_pitch: YU24 little-endian (0x34325559)
[09:32:44] =============== [PASSED] drm_test_fb_memcpy ================
[09:32:44] ============= [PASSED] drm_format_helper_test ==============
[09:32:44] ================= drm_format (18 subtests) =================
[09:32:44] [PASSED] drm_test_format_block_width_invalid
[09:32:44] [PASSED] drm_test_format_block_width_one_plane
[09:32:44] [PASSED] drm_test_format_block_width_two_plane
[09:32:44] [PASSED] drm_test_format_block_width_three_plane
[09:32:44] [PASSED] drm_test_format_block_width_tiled
[09:32:44] [PASSED] drm_test_format_block_height_invalid
[09:32:44] [PASSED] drm_test_format_block_height_one_plane
[09:32:44] [PASSED] drm_test_format_block_height_two_plane
[09:32:44] [PASSED] drm_test_format_block_height_three_plane
[09:32:44] [PASSED] drm_test_format_block_height_tiled
[09:32:44] [PASSED] drm_test_format_min_pitch_invalid
[09:32:44] [PASSED] drm_test_format_min_pitch_one_plane_8bpp
[09:32:44] [PASSED] drm_test_format_min_pitch_one_plane_16bpp
[09:32:44] [PASSED] drm_test_format_min_pitch_one_plane_24bpp
[09:32:44] [PASSED] drm_test_format_min_pitch_one_plane_32bpp
[09:32:44] [PASSED] drm_test_format_min_pitch_two_plane
[09:32:44] [PASSED] drm_test_format_min_pitch_three_plane_8bpp
[09:32:44] [PASSED] drm_test_format_min_pitch_tiled
[09:32:44] =================== [PASSED] drm_format ====================
[09:32:44] ============== drm_framebuffer (10 subtests) ===============
[09:32:44] ========== drm_test_framebuffer_check_src_coords  ==========
[09:32:44] [PASSED] Success: source fits into fb
[09:32:44] [PASSED] Fail: overflowing fb with x-axis coordinate
[09:32:44] [PASSED] Fail: overflowing fb with y-axis coordinate
[09:32:44] [PASSED] Fail: overflowing fb with source width
[09:32:44] [PASSED] Fail: overflowing fb with source height
[09:32:44] ====== [PASSED] drm_test_framebuffer_check_src_coords ======
[09:32:44] [PASSED] drm_test_framebuffer_cleanup
[09:32:44] =============== drm_test_framebuffer_create  ===============
[09:32:44] [PASSED] ABGR8888 normal sizes
[09:32:44] [PASSED] ABGR8888 max sizes
[09:32:44] [PASSED] ABGR8888 pitch greater than min required
[09:32:44] [PASSED] ABGR8888 pitch less than min required
[09:32:44] [PASSED] ABGR8888 Invalid width
[09:32:44] [PASSED] ABGR8888 Invalid buffer handle
[09:32:44] [PASSED] No pixel format
[09:32:44] [PASSED] ABGR8888 Width 0
[09:32:44] [PASSED] ABGR8888 Height 0
[09:32:44] [PASSED] ABGR8888 Out of bound height * pitch combination
[09:32:44] [PASSED] ABGR8888 Large buffer offset
[09:32:44] [PASSED] ABGR8888 Buffer offset for inexistent plane
[09:32:44] [PASSED] ABGR8888 Invalid flag
[09:32:44] [PASSED] ABGR8888 Set DRM_MODE_FB_MODIFIERS without modifiers
[09:32:44] [PASSED] ABGR8888 Valid buffer modifier
[09:32:44] [PASSED] ABGR8888 Invalid buffer modifier(DRM_FORMAT_MOD_SAMSUNG_64_32_TILE)
[09:32:44] [PASSED] ABGR8888 Extra pitches without DRM_MODE_FB_MODIFIERS
[09:32:44] [PASSED] ABGR8888 Extra pitches with DRM_MODE_FB_MODIFIERS
[09:32:44] [PASSED] NV12 Normal sizes
[09:32:44] [PASSED] NV12 Max sizes
[09:32:44] [PASSED] NV12 Invalid pitch
[09:32:44] [PASSED] NV12 Invalid modifier/missing DRM_MODE_FB_MODIFIERS flag
[09:32:44] [PASSED] NV12 different  modifier per-plane
[09:32:44] [PASSED] NV12 with DRM_FORMAT_MOD_SAMSUNG_64_32_TILE
[09:32:44] [PASSED] NV12 Valid modifiers without DRM_MODE_FB_MODIFIERS
[09:32:44] [PASSED] NV12 Modifier for inexistent plane
[09:32:44] [PASSED] NV12 Handle for inexistent plane
[09:32:44] [PASSED] NV12 Handle for inexistent plane without DRM_MODE_FB_MODIFIERS
[09:32:44] [PASSED] YVU420 DRM_MODE_FB_MODIFIERS set without modifier
[09:32:44] [PASSED] YVU420 Normal sizes
[09:32:44] [PASSED] YVU420 Max sizes
[09:32:44] [PASSED] YVU420 Invalid pitch
[09:32:44] [PASSED] YVU420 Different pitches
[09:32:44] [PASSED] YVU420 Different buffer offsets/pitches
[09:32:44] [PASSED] YVU420 Modifier set just for plane 0, without DRM_MODE_FB_MODIFIERS
[09:32:44] [PASSED] YVU420 Modifier set just for planes 0, 1, without DRM_MODE_FB_MODIFIERS
[09:32:44] [PASSED] YVU420 Modifier set just for plane 0, 1, with DRM_MODE_FB_MODIFIERS
[09:32:44] [PASSED] YVU420 Valid modifier
[09:32:44] [PASSED] YVU420 Different modifiers per plane
[09:32:44] [PASSED] YVU420 Modifier for inexistent plane
[09:32:44] [PASSED] YUV420_10BIT Invalid modifier(DRM_FORMAT_MOD_LINEAR)
[09:32:44] [PASSED] X0L2 Normal sizes
[09:32:44] [PASSED] X0L2 Max sizes
[09:32:44] [PASSED] X0L2 Invalid pitch
[09:32:44] [PASSED] X0L2 Pitch greater than minimum required
[09:32:44] [PASSED] X0L2 Handle for inexistent plane
[09:32:44] [PASSED] X0L2 Offset for inexistent plane, without DRM_MODE_FB_MODIFIERS set
[09:32:44] [PASSED] X0L2 Modifier without DRM_MODE_FB_MODIFIERS set
[09:32:44] [PASSED] X0L2 Valid modifier
[09:32:44] [PASSED] X0L2 Modifier for inexistent plane
[09:32:44] =========== [PASSED] drm_test_framebuffer_create ===========
[09:32:44] [PASSED] drm_test_framebuffer_free
[09:32:44] [PASSED] drm_test_framebuffer_init
[09:32:44] [PASSED] drm_test_framebuffer_init_bad_format
[09:32:44] [PASSED] drm_test_framebuffer_init_dev_mismatch
[09:32:44] [PASSED] drm_test_framebuffer_lookup
[09:32:44] [PASSED] drm_test_framebuffer_lookup_inexistent
[09:32:44] [PASSED] drm_test_framebuffer_modifiers_not_supported
[09:32:44] ================= [PASSED] drm_framebuffer =================
[09:32:44] ================ drm_gem_shmem (8 subtests) ================
[09:32:44] [PASSED] drm_gem_shmem_test_obj_create
[09:32:44] [PASSED] drm_gem_shmem_test_obj_create_private
[09:32:44] [PASSED] drm_gem_shmem_test_pin_pages
[09:32:44] [PASSED] drm_gem_shmem_test_vmap
[09:32:44] [PASSED] drm_gem_shmem_test_get_pages_sgt
[09:32:44] [PASSED] drm_gem_shmem_test_get_sg_table
[09:32:44] [PASSED] drm_gem_shmem_test_madvise
[09:32:44] [PASSED] drm_gem_shmem_test_purge
[09:32:44] ================== [PASSED] drm_gem_shmem ==================
[09:32:44] === drm_atomic_helper_connector_hdmi_check (27 subtests) ===
[09:32:44] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode
[09:32:44] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode_vic_1
[09:32:44] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode
[09:32:44] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode_vic_1
[09:32:44] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode
[09:32:44] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode_vic_1
[09:32:44] ====== drm_test_check_broadcast_rgb_cea_mode_yuv420  =======
[09:32:44] [PASSED] Automatic
[09:32:44] [PASSED] Full
[09:32:44] [PASSED] Limited 16:235
[09:32:44] == [PASSED] drm_test_check_broadcast_rgb_cea_mode_yuv420 ===
[09:32:44] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_changed
[09:32:44] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_not_changed
[09:32:44] [PASSED] drm_test_check_disable_connector
[09:32:44] [PASSED] drm_test_check_hdmi_funcs_reject_rate
[09:32:44] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_rgb
[09:32:44] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_yuv420
[09:32:44] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv422
[09:32:44] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv420
[09:32:44] [PASSED] drm_test_check_driver_unsupported_fallback_yuv420
[09:32:44] [PASSED] drm_test_check_output_bpc_crtc_mode_changed
[09:32:44] [PASSED] drm_test_check_output_bpc_crtc_mode_not_changed
[09:32:44] [PASSED] drm_test_check_output_bpc_dvi
[09:32:44] [PASSED] drm_test_check_output_bpc_format_vic_1
[09:32:44] [PASSED] drm_test_check_output_bpc_format_display_8bpc_only
[09:32:44] [PASSED] drm_test_check_output_bpc_format_display_rgb_only
[09:32:44] [PASSED] drm_test_check_output_bpc_format_driver_8bpc_only
[09:32:44] [PASSED] drm_test_check_output_bpc_format_driver_rgb_only
[09:32:44] [PASSED] drm_test_check_tmds_char_rate_rgb_8bpc
[09:32:44] [PASSED] drm_test_check_tmds_char_rate_rgb_10bpc
[09:32:44] [PASSED] drm_test_check_tmds_char_rate_rgb_12bpc
[09:32:44] ===== [PASSED] drm_atomic_helper_connector_hdmi_check ======
[09:32:44] === drm_atomic_helper_connector_hdmi_reset (6 subtests) ====
[09:32:44] [PASSED] drm_test_check_broadcast_rgb_value
[09:32:44] [PASSED] drm_test_check_bpc_8_value
[09:32:44] [PASSED] drm_test_check_bpc_10_value
[09:32:44] [PASSED] drm_test_check_bpc_12_value
[09:32:44] [PASSED] drm_test_check_format_value
[09:32:44] [PASSED] drm_test_check_tmds_char_value
[09:32:44] ===== [PASSED] drm_atomic_helper_connector_hdmi_reset ======
[09:32:44] = drm_atomic_helper_connector_hdmi_mode_valid (4 subtests) =
[09:32:44] [PASSED] drm_test_check_mode_valid
[09:32:44] [PASSED] drm_test_check_mode_valid_reject
[09:32:44] [PASSED] drm_test_check_mode_valid_reject_rate
[09:32:44] [PASSED] drm_test_check_mode_valid_reject_max_clock
[09:32:44] === [PASSED] drm_atomic_helper_connector_hdmi_mode_valid ===
[09:32:44] ================= drm_managed (2 subtests) =================
[09:32:44] [PASSED] drm_test_managed_release_action
[09:32:44] [PASSED] drm_test_managed_run_action
[09:32:44] =================== [PASSED] drm_managed ===================
[09:32:44] =================== drm_mm (6 subtests) ====================
[09:32:44] [PASSED] drm_test_mm_init
[09:32:44] [PASSED] drm_test_mm_debug
[09:32:44] [PASSED] drm_test_mm_align32
[09:32:44] [PASSED] drm_test_mm_align64
[09:32:44] [PASSED] drm_test_mm_lowest
[09:32:44] [PASSED] drm_test_mm_highest
[09:32:44] ===================== [PASSED] drm_mm ======================
[09:32:44] ============= drm_modes_analog_tv (5 subtests) =============
[09:32:44] [PASSED] drm_test_modes_analog_tv_mono_576i
[09:32:44] [PASSED] drm_test_modes_analog_tv_ntsc_480i
[09:32:44] [PASSED] drm_test_modes_analog_tv_ntsc_480i_inlined
[09:32:44] [PASSED] drm_test_modes_analog_tv_pal_576i
[09:32:44] [PASSED] drm_test_modes_analog_tv_pal_576i_inlined
[09:32:44] =============== [PASSED] drm_modes_analog_tv ===============
[09:32:44] ============== drm_plane_helper (2 subtests) ===============
[09:32:44] =============== drm_test_check_plane_state  ================
[09:32:44] [PASSED] clipping_simple
[09:32:44] [PASSED] clipping_rotate_reflect
[09:32:44] [PASSED] positioning_simple
[09:32:44] [PASSED] upscaling
[09:32:44] [PASSED] downscaling
[09:32:44] [PASSED] rounding1
[09:32:44] [PASSED] rounding2
[09:32:44] [PASSED] rounding3
[09:32:44] [PASSED] rounding4
[09:32:44] =========== [PASSED] drm_test_check_plane_state ============
[09:32:44] =========== drm_test_check_invalid_plane_state  ============
[09:32:44] [PASSED] positioning_invalid
[09:32:44] [PASSED] upscaling_invalid
[09:32:44] [PASSED] downscaling_invalid
[09:32:44] ======= [PASSED] drm_test_check_invalid_plane_state ========
[09:32:44] ================ [PASSED] drm_plane_helper =================
[09:32:44] ====== drm_connector_helper_tv_get_modes (1 subtest) =======
[09:32:44] ====== drm_test_connector_helper_tv_get_modes_check  =======
[09:32:44] [PASSED] None
[09:32:44] [PASSED] PAL
[09:32:44] [PASSED] NTSC
[09:32:44] [PASSED] Both, NTSC Default
[09:32:44] [PASSED] Both, PAL Default
[09:32:44] [PASSED] Both, NTSC Default, with PAL on command-line
[09:32:44] [PASSED] Both, PAL Default, with NTSC on command-line
[09:32:44] == [PASSED] drm_test_connector_helper_tv_get_modes_check ===
[09:32:44] ======== [PASSED] drm_connector_helper_tv_get_modes ========
[09:32:44] ================== drm_rect (9 subtests) ===================
[09:32:44] [PASSED] drm_test_rect_clip_scaled_div_by_zero
[09:32:44] [PASSED] drm_test_rect_clip_scaled_not_clipped
[09:32:44] [PASSED] drm_test_rect_clip_scaled_clipped
[09:32:44] [PASSED] drm_test_rect_clip_scaled_signed_vs_unsigned
[09:32:44] ================= drm_test_rect_intersect  =================
[09:32:44] [PASSED] top-left x bottom-right: 2x2+1+1 x 2x2+0+0
[09:32:44] [PASSED] top-right x bottom-left: 2x2+0+0 x 2x2+1-1
[09:32:44] [PASSED] bottom-left x top-right: 2x2+1-1 x 2x2+0+0
[09:32:44] [PASSED] bottom-right x top-left: 2x2+0+0 x 2x2+1+1
[09:32:44] [PASSED] right x left: 2x1+0+0 x 3x1+1+0
[09:32:44] [PASSED] left x right: 3x1+1+0 x 2x1+0+0
[09:32:44] [PASSED] up x bottom: 1x2+0+0 x 1x3+0-1
[09:32:44] [PASSED] bottom x up: 1x3+0-1 x 1x2+0+0
[09:32:44] [PASSED] touching corner: 1x1+0+0 x 2x2+1+1
[09:32:44] [PASSED] touching side: 1x1+0+0 x 1x1+1+0
[09:32:44] [PASSED] equal rects: 2x2+0+0 x 2x2+0+0
[09:32:44] [PASSED] inside another: 2x2+0+0 x 1x1+1+1
[09:32:44] [PASSED] far away: 1x1+0+0 x 1x1+3+6
[09:32:44] [PASSED] points intersecting: 0x0+5+10 x 0x0+5+10
[09:32:44] [PASSED] points not intersecting: 0x0+0+0 x 0x0+5+10
[09:32:44] ============= [PASSED] drm_test_rect_intersect =============
[09:32:44] ================ drm_test_rect_calc_hscale  ================
[09:32:44] [PASSED] normal use
[09:32:44] [PASSED] out of max range
[09:32:44] [PASSED] out of min range
[09:32:44] [PASSED] zero dst
[09:32:44] [PASSED] negative src
[09:32:44] [PASSED] negative dst
[09:32:44] ============ [PASSED] drm_test_rect_calc_hscale ============
[09:32:44] ================ drm_test_rect_calc_vscale  ================
[09:32:44] [PASSED] normal use
[09:32:44] [PASSED] out of max range
[09:32:44] [PASSED] out of min range
[09:32:44] [PASSED] zero dst
[09:32:44] [PASSED] negative src
[09:32:44] [PASSED] negative dst
[09:32:44] ============ [PASSED] drm_test_rect_calc_vscale ============
[09:32:44] ================== drm_test_rect_rotate  ===================
[09:32:44] [PASSED] reflect-x
[09:32:44] [PASSED] reflect-y
[09:32:44] [PASSED] rotate-0
[09:32:44] [PASSED] rotate-90
[09:32:44] [PASSED] rotate-180
[09:32:44] [PASSED] rotate-270
stty: 'standard input': Inappropriate ioctl for device
[09:32:44] ============== [PASSED] drm_test_rect_rotate ===============
[09:32:44] ================ drm_test_rect_rotate_inv  =================
[09:32:44] [PASSED] reflect-x
[09:32:44] [PASSED] reflect-y
[09:32:44] [PASSED] rotate-0
[09:32:44] [PASSED] rotate-90
[09:32:44] [PASSED] rotate-180
[09:32:44] [PASSED] rotate-270
[09:32:44] ============ [PASSED] drm_test_rect_rotate_inv =============
[09:32:44] ==================== [PASSED] drm_rect =====================
[09:32:44] ============ drm_sysfb_modeset_test (1 subtest) ============
[09:32:44] ============ drm_test_sysfb_build_fourcc_list  =============
[09:32:44] [PASSED] no native formats
[09:32:44] [PASSED] XRGB8888 as native format
[09:32:44] [PASSED] remove duplicates
[09:32:44] [PASSED] convert alpha formats
[09:32:44] [PASSED] random formats
[09:32:44] ======== [PASSED] drm_test_sysfb_build_fourcc_list =========
[09:32:44] ============= [PASSED] drm_sysfb_modeset_test ==============
[09:32:44] ============================================================
[09:32:44] Testing complete. Ran 616 tests: passed: 616
[09:32:44] Elapsed time: 24.771s total, 1.749s configuring, 22.854s building, 0.144s running

+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/ttm/tests/.kunitconfig
[09:32:44] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[09:32:45] 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:32:53] Starting KUnit Kernel (1/1)...
[09:32:53] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[09:32:53] ================= ttm_device (5 subtests) ==================
[09:32:53] [PASSED] ttm_device_init_basic
[09:32:53] [PASSED] ttm_device_init_multiple
[09:32:53] [PASSED] ttm_device_fini_basic
[09:32:53] [PASSED] ttm_device_init_no_vma_man
[09:32:53] ================== ttm_device_init_pools  ==================
[09:32:53] [PASSED] No DMA allocations, no DMA32 required
[09:32:53] [PASSED] DMA allocations, DMA32 required
[09:32:53] [PASSED] No DMA allocations, DMA32 required
[09:32:53] [PASSED] DMA allocations, no DMA32 required
[09:32:53] ============== [PASSED] ttm_device_init_pools ==============
[09:32:53] =================== [PASSED] ttm_device ====================
[09:32:53] ================== ttm_pool (8 subtests) ===================
[09:32:53] ================== ttm_pool_alloc_basic  ===================
[09:32:53] [PASSED] One page
[09:32:53] [PASSED] More than one page
[09:32:53] [PASSED] Above the allocation limit
[09:32:53] [PASSED] One page, with coherent DMA mappings enabled
[09:32:53] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[09:32:53] ============== [PASSED] ttm_pool_alloc_basic ===============
[09:32:53] ============== ttm_pool_alloc_basic_dma_addr  ==============
[09:32:53] [PASSED] One page
[09:32:53] [PASSED] More than one page
[09:32:53] [PASSED] Above the allocation limit
[09:32:53] [PASSED] One page, with coherent DMA mappings enabled
[09:32:53] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[09:32:53] ========== [PASSED] ttm_pool_alloc_basic_dma_addr ==========
[09:32:53] [PASSED] ttm_pool_alloc_order_caching_match
[09:32:53] [PASSED] ttm_pool_alloc_caching_mismatch
[09:32:53] [PASSED] ttm_pool_alloc_order_mismatch
[09:32:53] [PASSED] ttm_pool_free_dma_alloc
[09:32:53] [PASSED] ttm_pool_free_no_dma_alloc
[09:32:53] [PASSED] ttm_pool_fini_basic
[09:32:53] ==================== [PASSED] ttm_pool =====================
[09:32:53] ================ ttm_resource (8 subtests) =================
[09:32:53] ================= ttm_resource_init_basic  =================
[09:32:53] [PASSED] Init resource in TTM_PL_SYSTEM
[09:32:53] [PASSED] Init resource in TTM_PL_VRAM
[09:32:53] [PASSED] Init resource in a private placement
[09:32:53] [PASSED] Init resource in TTM_PL_SYSTEM, set placement flags
[09:32:53] ============= [PASSED] ttm_resource_init_basic =============
[09:32:53] [PASSED] ttm_resource_init_pinned
[09:32:53] [PASSED] ttm_resource_fini_basic
[09:32:53] [PASSED] ttm_resource_manager_init_basic
[09:32:53] [PASSED] ttm_resource_manager_usage_basic
[09:32:53] [PASSED] ttm_resource_manager_set_used_basic
[09:32:53] [PASSED] ttm_sys_man_alloc_basic
[09:32:53] [PASSED] ttm_sys_man_free_basic
[09:32:53] ================== [PASSED] ttm_resource ===================
[09:32:53] =================== ttm_tt (15 subtests) ===================
[09:32:53] ==================== ttm_tt_init_basic  ====================
[09:32:53] [PASSED] Page-aligned size
[09:32:53] [PASSED] Extra pages requested
[09:32:53] ================ [PASSED] ttm_tt_init_basic ================
[09:32:53] [PASSED] ttm_tt_init_misaligned
[09:32:53] [PASSED] ttm_tt_fini_basic
[09:32:53] [PASSED] ttm_tt_fini_sg
[09:32:53] [PASSED] ttm_tt_fini_shmem
[09:32:53] [PASSED] ttm_tt_create_basic
[09:32:53] [PASSED] ttm_tt_create_invalid_bo_type
[09:32:53] [PASSED] ttm_tt_create_ttm_exists
[09:32:53] [PASSED] ttm_tt_create_failed
[09:32:53] [PASSED] ttm_tt_destroy_basic
[09:32:53] [PASSED] ttm_tt_populate_null_ttm
[09:32:53] [PASSED] ttm_tt_populate_populated_ttm
[09:32:53] [PASSED] ttm_tt_unpopulate_basic
[09:32:53] [PASSED] ttm_tt_unpopulate_empty_ttm
[09:32:53] [PASSED] ttm_tt_swapin_basic
[09:32:53] ===================== [PASSED] ttm_tt ======================
[09:32:53] =================== ttm_bo (14 subtests) ===================
[09:32:53] =========== ttm_bo_reserve_optimistic_no_ticket  ===========
[09:32:53] [PASSED] Cannot be interrupted and sleeps
[09:32:53] [PASSED] Cannot be interrupted, locks straight away
[09:32:53] [PASSED] Can be interrupted, sleeps
[09:32:53] ======= [PASSED] ttm_bo_reserve_optimistic_no_ticket =======
[09:32:53] [PASSED] ttm_bo_reserve_locked_no_sleep
[09:32:53] [PASSED] ttm_bo_reserve_no_wait_ticket
[09:32:53] [PASSED] ttm_bo_reserve_double_resv
[09:32:53] [PASSED] ttm_bo_reserve_interrupted
[09:32:53] [PASSED] ttm_bo_reserve_deadlock
[09:32:53] [PASSED] ttm_bo_unreserve_basic
[09:32:53] [PASSED] ttm_bo_unreserve_pinned
[09:32:53] [PASSED] ttm_bo_unreserve_bulk
[09:32:53] [PASSED] ttm_bo_put_basic
[09:32:53] [PASSED] ttm_bo_put_shared_resv
[09:32:53] [PASSED] ttm_bo_pin_basic
[09:32:53] [PASSED] ttm_bo_pin_unpin_resource
[09:32:53] [PASSED] ttm_bo_multiple_pin_one_unpin
[09:32:53] ===================== [PASSED] ttm_bo ======================
[09:32:53] ============== ttm_bo_validate (21 subtests) ===============
[09:32:53] ============== ttm_bo_init_reserved_sys_man  ===============
[09:32:53] [PASSED] Buffer object for userspace
[09:32:53] [PASSED] Kernel buffer object
[09:32:53] [PASSED] Shared buffer object
[09:32:53] ========== [PASSED] ttm_bo_init_reserved_sys_man ===========
[09:32:53] ============== ttm_bo_init_reserved_mock_man  ==============
[09:32:53] [PASSED] Buffer object for userspace
[09:32:53] [PASSED] Kernel buffer object
[09:32:53] [PASSED] Shared buffer object
[09:32:53] ========== [PASSED] ttm_bo_init_reserved_mock_man ==========
[09:32:53] [PASSED] ttm_bo_init_reserved_resv
[09:32:53] ================== ttm_bo_validate_basic  ==================
[09:32:53] [PASSED] Buffer object for userspace
[09:32:53] [PASSED] Kernel buffer object
[09:32:53] [PASSED] Shared buffer object
[09:32:53] ============== [PASSED] ttm_bo_validate_basic ==============
[09:32:53] [PASSED] ttm_bo_validate_invalid_placement
[09:32:53] ============= ttm_bo_validate_same_placement  ==============
[09:32:53] [PASSED] System manager
[09:32:53] [PASSED] VRAM manager
[09:32:53] ========= [PASSED] ttm_bo_validate_same_placement ==========
[09:32:53] [PASSED] ttm_bo_validate_failed_alloc
[09:32:53] [PASSED] ttm_bo_validate_pinned
[09:32:53] [PASSED] ttm_bo_validate_busy_placement
[09:32:53] ================ ttm_bo_validate_multihop  =================
[09:32:53] [PASSED] Buffer object for userspace
[09:32:53] [PASSED] Kernel buffer object
[09:32:53] [PASSED] Shared buffer object
[09:32:53] ============ [PASSED] ttm_bo_validate_multihop =============
[09:32:53] ========== ttm_bo_validate_no_placement_signaled  ==========
[09:32:53] [PASSED] Buffer object in system domain, no page vector
[09:32:53] [PASSED] Buffer object in system domain with an existing page vector
[09:32:53] ====== [PASSED] ttm_bo_validate_no_placement_signaled ======
[09:32:53] ======== ttm_bo_validate_no_placement_not_signaled  ========
[09:32:53] [PASSED] Buffer object for userspace
[09:32:53] [PASSED] Kernel buffer object
[09:32:53] [PASSED] Shared buffer object
[09:32:53] ==== [PASSED] ttm_bo_validate_no_placement_not_signaled ====
[09:32:53] [PASSED] ttm_bo_validate_move_fence_signaled
[09:32:53] ========= ttm_bo_validate_move_fence_not_signaled  =========
[09:32:53] [PASSED] Waits for GPU
[09:32:53] [PASSED] Tries to lock straight away
[09:32:53] ===== [PASSED] ttm_bo_validate_move_fence_not_signaled =====
[09:32:53] [PASSED] ttm_bo_validate_happy_evict
[09:32:53] [PASSED] ttm_bo_validate_all_pinned_evict
[09:32:53] [PASSED] ttm_bo_validate_allowed_only_evict
[09:32:53] [PASSED] ttm_bo_validate_deleted_evict
[09:32:53] [PASSED] ttm_bo_validate_busy_domain_evict
[09:32:53] [PASSED] ttm_bo_validate_evict_gutting
[09:32:53] [PASSED] ttm_bo_validate_recrusive_evict
stty: 'standard input': Inappropriate ioctl for device
[09:32:53] ================= [PASSED] ttm_bo_validate =================
[09:32:53] ============================================================
[09:32:53] Testing complete. Ran 101 tests: passed: 101
[09:32:53] Elapsed time: 9.785s total, 1.740s configuring, 7.829s building, 0.181s running

+ cleanup
++ stat -c %u:%g /kernel
+ chown -R 1003:1003 /kernel



^ permalink raw reply	[flat|nested] 12+ messages in thread

* ✓ Xe.CI.BAT: success for Introduce GT runtime suspend/resume
  2025-09-04  9:14 [PATCH v4 0/2] Introduce GT runtime suspend/resume Raag Jadav
                   ` (3 preceding siblings ...)
  2025-09-04  9:32 ` ✓ CI.KUnit: success " Patchwork
@ 2025-09-04 10:08 ` Patchwork
  2025-09-04 21:01 ` ✗ Xe.CI.Full: failure " Patchwork
  5 siblings, 0 replies; 12+ messages in thread
From: Patchwork @ 2025-09-04 10:08 UTC (permalink / raw)
  To: Raag Jadav; +Cc: intel-xe

[-- Attachment #1: Type: text/plain, Size: 2078 bytes --]

== Series Details ==

Series: Introduce GT runtime suspend/resume
URL   : https://patchwork.freedesktop.org/series/154017/
State : success

== Summary ==

CI Bug Log - changes from xe-3675-0644d5ef504634c91573f5afde6196984c8f49a8_BAT -> xe-pw-154017v1_BAT
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  

Participating hosts (11 -> 11)
------------------------------

  No changes in participating hosts

Known issues
------------

  Here are the changes found in xe-pw-154017v1_BAT that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@kms_flip@basic-plain-flip@b-edp1:
    - bat-adlp-7:         [PASS][1] -> [DMESG-WARN][2] ([Intel XE#4543])
   [1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3675-0644d5ef504634c91573f5afde6196984c8f49a8/bat-adlp-7/igt@kms_flip@basic-plain-flip@b-edp1.html
   [2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/bat-adlp-7/igt@kms_flip@basic-plain-flip@b-edp1.html

  
#### Possible fixes ####

  * igt@kms_flip@basic-plain-flip@a-edp1:
    - bat-adlp-7:         [DMESG-WARN][3] ([Intel XE#4543]) -> [PASS][4]
   [3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3675-0644d5ef504634c91573f5afde6196984c8f49a8/bat-adlp-7/igt@kms_flip@basic-plain-flip@a-edp1.html
   [4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/bat-adlp-7/igt@kms_flip@basic-plain-flip@a-edp1.html

  
  {name}: This element is suppressed. This means it is ignored when computing
          the status of the difference (SUCCESS, WARNING, or FAILURE).

  [Intel XE#4543]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4543
  [Intel XE#5783]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5783


Build changes
-------------

  * Linux: xe-3675-0644d5ef504634c91573f5afde6196984c8f49a8 -> xe-pw-154017v1

  IGT_8522: 8522
  xe-3675-0644d5ef504634c91573f5afde6196984c8f49a8: 0644d5ef504634c91573f5afde6196984c8f49a8
  xe-pw-154017v1: 154017v1

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/index.html

[-- Attachment #2: Type: text/html, Size: 2675 bytes --]

^ permalink raw reply	[flat|nested] 12+ messages in thread

* ✗ Xe.CI.Full: failure for Introduce GT runtime suspend/resume
  2025-09-04  9:14 [PATCH v4 0/2] Introduce GT runtime suspend/resume Raag Jadav
                   ` (4 preceding siblings ...)
  2025-09-04 10:08 ` ✓ Xe.CI.BAT: " Patchwork
@ 2025-09-04 21:01 ` Patchwork
  5 siblings, 0 replies; 12+ messages in thread
From: Patchwork @ 2025-09-04 21:01 UTC (permalink / raw)
  To: Raag Jadav; +Cc: intel-xe

[-- Attachment #1: Type: text/plain, Size: 43102 bytes --]

== Series Details ==

Series: Introduce GT runtime suspend/resume
URL   : https://patchwork.freedesktop.org/series/154017/
State : failure

== Summary ==

CI Bug Log - changes from xe-3675-0644d5ef504634c91573f5afde6196984c8f49a8_FULL -> xe-pw-154017v1_FULL
====================================================

Summary
-------

  **FAILURE**

  Serious unknown changes coming with xe-pw-154017v1_FULL absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in xe-pw-154017v1_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-154017v1_FULL:

### IGT changes ###

#### Possible regressions ####

  * igt@kms_async_flips@async-flip-with-page-flip-events-linear-atomic@pipe-c-edp-1:
    - shard-lnl:          [PASS][1] -> [FAIL][2] +3 other tests fail
   [1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3675-0644d5ef504634c91573f5afde6196984c8f49a8/shard-lnl-8/igt@kms_async_flips@async-flip-with-page-flip-events-linear-atomic@pipe-c-edp-1.html
   [2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-lnl-2/igt@kms_async_flips@async-flip-with-page-flip-events-linear-atomic@pipe-c-edp-1.html

  
Known issues
------------

  Here are the changes found in xe-pw-154017v1_FULL that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@kms_big_fb@linear-16bpp-rotate-90:
    - shard-dg2-set2:     NOTRUN -> [SKIP][3] ([Intel XE#316]) +1 other test skip
   [3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-dg2-436/igt@kms_big_fb@linear-16bpp-rotate-90.html
    - shard-bmg:          NOTRUN -> [SKIP][4] ([Intel XE#2327])
   [4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-bmg-8/igt@kms_big_fb@linear-16bpp-rotate-90.html

  * igt@kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-180-async-flip:
    - shard-adlp:         [PASS][5] -> [DMESG-FAIL][6] ([Intel XE#4543]) +1 other test dmesg-fail
   [5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3675-0644d5ef504634c91573f5afde6196984c8f49a8/shard-adlp-2/igt@kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-180-async-flip.html
   [6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-adlp-6/igt@kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-180-async-flip.html

  * igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-0:
    - shard-dg2-set2:     NOTRUN -> [SKIP][7] ([Intel XE#1124]) +2 other tests skip
   [7]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-dg2-466/igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-0.html

  * igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180-hflip:
    - shard-bmg:          NOTRUN -> [SKIP][8] ([Intel XE#1124])
   [8]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-bmg-8/igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180-hflip.html

  * igt@kms_bw@connected-linear-tiling-2-displays-1920x1080p:
    - shard-bmg:          [PASS][9] -> [SKIP][10] ([Intel XE#2314] / [Intel XE#2894]) +1 other test skip
   [9]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3675-0644d5ef504634c91573f5afde6196984c8f49a8/shard-bmg-1/igt@kms_bw@connected-linear-tiling-2-displays-1920x1080p.html
   [10]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-bmg-6/igt@kms_bw@connected-linear-tiling-2-displays-1920x1080p.html

  * igt@kms_ccs@bad-aux-stride-y-tiled-gen12-mc-ccs@pipe-c-hdmi-a-6:
    - shard-dg2-set2:     NOTRUN -> [SKIP][11] ([Intel XE#787]) +97 other tests skip
   [11]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-dg2-436/igt@kms_ccs@bad-aux-stride-y-tiled-gen12-mc-ccs@pipe-c-hdmi-a-6.html

  * igt@kms_ccs@crc-primary-basic-4-tiled-mtl-mc-ccs:
    - shard-bmg:          NOTRUN -> [SKIP][12] ([Intel XE#2887]) +2 other tests skip
   [12]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-bmg-8/igt@kms_ccs@crc-primary-basic-4-tiled-mtl-mc-ccs.html

  * igt@kms_ccs@crc-primary-rotation-180-4-tiled-lnl-ccs:
    - shard-dg2-set2:     NOTRUN -> [SKIP][13] ([Intel XE#2907])
   [13]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-dg2-435/igt@kms_ccs@crc-primary-rotation-180-4-tiled-lnl-ccs.html

  * igt@kms_ccs@crc-primary-suspend-4-tiled-dg2-mc-ccs@pipe-d-dp-4:
    - shard-dg2-set2:     [PASS][14] -> [INCOMPLETE][15] ([Intel XE#3862]) +1 other test incomplete
   [14]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3675-0644d5ef504634c91573f5afde6196984c8f49a8/shard-dg2-466/igt@kms_ccs@crc-primary-suspend-4-tiled-dg2-mc-ccs@pipe-d-dp-4.html
   [15]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-dg2-463/igt@kms_ccs@crc-primary-suspend-4-tiled-dg2-mc-ccs@pipe-d-dp-4.html

  * igt@kms_ccs@crc-primary-suspend-4-tiled-lnl-ccs:
    - shard-dg2-set2:     NOTRUN -> [SKIP][16] ([Intel XE#3442])
   [16]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-dg2-436/igt@kms_ccs@crc-primary-suspend-4-tiled-lnl-ccs.html

  * igt@kms_ccs@crc-primary-suspend-4-tiled-lnl-ccs@pipe-a-dp-2:
    - shard-bmg:          NOTRUN -> [SKIP][17] ([Intel XE#2652] / [Intel XE#787]) +8 other tests skip
   [17]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-bmg-8/igt@kms_ccs@crc-primary-suspend-4-tiled-lnl-ccs@pipe-a-dp-2.html

  * igt@kms_ccs@crc-sprite-planes-basic-4-tiled-bmg-ccs@pipe-a-dp-2:
    - shard-bmg:          [PASS][18] -> [FAIL][19] ([Intel XE#5376]) +2 other tests fail
   [18]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3675-0644d5ef504634c91573f5afde6196984c8f49a8/shard-bmg-7/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-bmg-ccs@pipe-a-dp-2.html
   [19]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-bmg-5/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-bmg-ccs@pipe-a-dp-2.html

  * igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs-cc@pipe-d-hdmi-a-2:
    - shard-dg2-set2:     NOTRUN -> [INCOMPLETE][20] ([Intel XE#1727] / [Intel XE#3113])
   [20]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-dg2-432/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs-cc@pipe-d-hdmi-a-2.html

  * igt@kms_ccs@random-ccs-data-yf-tiled-ccs@pipe-d-dp-4:
    - shard-dg2-set2:     NOTRUN -> [SKIP][21] ([Intel XE#455] / [Intel XE#787]) +15 other tests skip
   [21]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-dg2-436/igt@kms_ccs@random-ccs-data-yf-tiled-ccs@pipe-d-dp-4.html

  * igt@kms_cdclk@mode-transition-all-outputs:
    - shard-bmg:          NOTRUN -> [SKIP][22] ([Intel XE#2724])
   [22]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-bmg-8/igt@kms_cdclk@mode-transition-all-outputs.html
    - shard-dg2-set2:     NOTRUN -> [SKIP][23] ([Intel XE#4418])
   [23]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-dg2-436/igt@kms_cdclk@mode-transition-all-outputs.html

  * igt@kms_chamelium_hpd@vga-hpd-after-suspend:
    - shard-lnl:          NOTRUN -> [SKIP][24] ([Intel XE#373])
   [24]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-lnl-1/igt@kms_chamelium_hpd@vga-hpd-after-suspend.html

  * igt@kms_content_protection@legacy:
    - shard-dg2-set2:     NOTRUN -> [FAIL][25] ([Intel XE#1178]) +1 other test fail
   [25]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-dg2-435/igt@kms_content_protection@legacy.html
    - shard-lnl:          NOTRUN -> [SKIP][26] ([Intel XE#3278])
   [26]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-lnl-1/igt@kms_content_protection@legacy.html

  * igt@kms_cursor_crc@cursor-sliding-128x42:
    - shard-bmg:          NOTRUN -> [SKIP][27] ([Intel XE#2320])
   [27]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-bmg-8/igt@kms_cursor_crc@cursor-sliding-128x42.html

  * igt@kms_cursor_legacy@2x-flip-vs-cursor-atomic:
    - shard-bmg:          [PASS][28] -> [SKIP][29] ([Intel XE#2291]) +2 other tests skip
   [28]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3675-0644d5ef504634c91573f5afde6196984c8f49a8/shard-bmg-1/igt@kms_cursor_legacy@2x-flip-vs-cursor-atomic.html
   [29]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-bmg-6/igt@kms_cursor_legacy@2x-flip-vs-cursor-atomic.html

  * igt@kms_cursor_legacy@cursorb-vs-flipa-atomic-transitions:
    - shard-lnl:          NOTRUN -> [SKIP][30] ([Intel XE#309]) +1 other test skip
   [30]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-lnl-1/igt@kms_cursor_legacy@cursorb-vs-flipa-atomic-transitions.html

  * igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions:
    - shard-bmg:          [PASS][31] -> [FAIL][32] ([Intel XE#1475])
   [31]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3675-0644d5ef504634c91573f5afde6196984c8f49a8/shard-bmg-2/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions.html
   [32]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-bmg-5/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions.html

  * igt@kms_dp_linktrain_fallback@dp-fallback:
    - shard-bmg:          [PASS][33] -> [SKIP][34] ([Intel XE#4294])
   [33]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3675-0644d5ef504634c91573f5afde6196984c8f49a8/shard-bmg-3/igt@kms_dp_linktrain_fallback@dp-fallback.html
   [34]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-bmg-6/igt@kms_dp_linktrain_fallback@dp-fallback.html

  * igt@kms_dsc@dsc-with-bpc-formats:
    - shard-lnl:          NOTRUN -> [SKIP][35] ([Intel XE#2244])
   [35]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-lnl-1/igt@kms_dsc@dsc-with-bpc-formats.html

  * igt@kms_flip@2x-plain-flip-fb-recreate:
    - shard-bmg:          [PASS][36] -> [SKIP][37] ([Intel XE#2316]) +5 other tests skip
   [36]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3675-0644d5ef504634c91573f5afde6196984c8f49a8/shard-bmg-3/igt@kms_flip@2x-plain-flip-fb-recreate.html
   [37]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-bmg-6/igt@kms_flip@2x-plain-flip-fb-recreate.html

  * igt@kms_flip@flip-vs-dpms-on-nop@b-hdmi-a1:
    - shard-adlp:         [PASS][38] -> [DMESG-WARN][39] ([Intel XE#4543]) +9 other tests dmesg-warn
   [38]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3675-0644d5ef504634c91573f5afde6196984c8f49a8/shard-adlp-3/igt@kms_flip@flip-vs-dpms-on-nop@b-hdmi-a1.html
   [39]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-adlp-4/igt@kms_flip@flip-vs-dpms-on-nop@b-hdmi-a1.html

  * igt@kms_flip@flip-vs-expired-vblank-interruptible@b-edp1:
    - shard-lnl:          [PASS][40] -> [FAIL][41] ([Intel XE#301]) +1 other test fail
   [40]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3675-0644d5ef504634c91573f5afde6196984c8f49a8/shard-lnl-8/igt@kms_flip@flip-vs-expired-vblank-interruptible@b-edp1.html
   [41]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-lnl-2/igt@kms_flip@flip-vs-expired-vblank-interruptible@b-edp1.html

  * igt@kms_flip@flip-vs-suspend-interruptible:
    - shard-adlp:         [PASS][42] -> [DMESG-WARN][43] ([Intel XE#2953] / [Intel XE#4173]) +4 other tests dmesg-warn
   [42]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3675-0644d5ef504634c91573f5afde6196984c8f49a8/shard-adlp-8/igt@kms_flip@flip-vs-suspend-interruptible.html
   [43]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-adlp-9/igt@kms_flip@flip-vs-suspend-interruptible.html

  * igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytilegen12rcccs-downscaling:
    - shard-dg2-set2:     NOTRUN -> [SKIP][44] ([Intel XE#455]) +1 other test skip
   [44]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-dg2-466/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytilegen12rcccs-downscaling.html

  * igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling:
    - shard-bmg:          NOTRUN -> [SKIP][45] ([Intel XE#2293] / [Intel XE#2380]) +1 other test skip
   [45]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-bmg-8/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling.html

  * igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling@pipe-a-valid-mode:
    - shard-bmg:          NOTRUN -> [SKIP][46] ([Intel XE#2293]) +1 other test skip
   [46]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-bmg-8/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling@pipe-a-valid-mode.html

  * igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-fullscreen:
    - shard-bmg:          NOTRUN -> [SKIP][47] ([Intel XE#5390]) +1 other test skip
   [47]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-bmg-8/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-fullscreen.html

  * igt@kms_frontbuffer_tracking@fbcdrrs-1p-pri-indfb-multidraw:
    - shard-lnl:          NOTRUN -> [SKIP][48] ([Intel XE#651])
   [48]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-lnl-1/igt@kms_frontbuffer_tracking@fbcdrrs-1p-pri-indfb-multidraw.html

  * igt@kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-cur-indfb-draw-blt:
    - shard-bmg:          NOTRUN -> [SKIP][49] ([Intel XE#2311]) +3 other tests skip
   [49]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-bmg-8/igt@kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-cur-indfb-draw-blt.html
    - shard-dg2-set2:     NOTRUN -> [SKIP][50] ([Intel XE#651]) +2 other tests skip
   [50]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-dg2-436/igt@kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-cur-indfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-draw-render:
    - shard-lnl:          NOTRUN -> [SKIP][51] ([Intel XE#656]) +3 other tests skip
   [51]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-lnl-1/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-draw-render.html

  * igt@kms_frontbuffer_tracking@fbcpsr-indfb-scaledprimary:
    - shard-bmg:          NOTRUN -> [SKIP][52] ([Intel XE#2313]) +5 other tests skip
   [52]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-bmg-8/igt@kms_frontbuffer_tracking@fbcpsr-indfb-scaledprimary.html

  * igt@kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-move:
    - shard-dg2-set2:     NOTRUN -> [SKIP][53] ([Intel XE#653]) +9 other tests skip
   [53]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-dg2-466/igt@kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-move.html

  * igt@kms_hdr@static-swap:
    - shard-bmg:          [PASS][54] -> [SKIP][55] ([Intel XE#1503]) +2 other tests skip
   [54]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3675-0644d5ef504634c91573f5afde6196984c8f49a8/shard-bmg-5/igt@kms_hdr@static-swap.html
   [55]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-bmg-6/igt@kms_hdr@static-swap.html

  * igt@kms_joiner@invalid-modeset-ultra-joiner:
    - shard-lnl:          NOTRUN -> [SKIP][56] ([Intel XE#2927])
   [56]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-lnl-1/igt@kms_joiner@invalid-modeset-ultra-joiner.html

  * igt@kms_joiner@switch-modeset-ultra-joiner-big-joiner:
    - shard-bmg:          NOTRUN -> [SKIP][57] ([Intel XE#4090])
   [57]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-bmg-8/igt@kms_joiner@switch-modeset-ultra-joiner-big-joiner.html
    - shard-dg2-set2:     NOTRUN -> [SKIP][58] ([Intel XE#2925]) +1 other test skip
   [58]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-dg2-436/igt@kms_joiner@switch-modeset-ultra-joiner-big-joiner.html

  * igt@kms_plane_multiple@2x-tiling-4:
    - shard-bmg:          [PASS][59] -> [SKIP][60] ([Intel XE#4596])
   [59]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3675-0644d5ef504634c91573f5afde6196984c8f49a8/shard-bmg-1/igt@kms_plane_multiple@2x-tiling-4.html
   [60]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-bmg-6/igt@kms_plane_multiple@2x-tiling-4.html

  * igt@kms_plane_scaling@planes-downscale-factor-0-5-unity-scaling@pipe-b:
    - shard-lnl:          NOTRUN -> [SKIP][61] ([Intel XE#2763]) +3 other tests skip
   [61]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-lnl-1/igt@kms_plane_scaling@planes-downscale-factor-0-5-unity-scaling@pipe-b.html

  * igt@kms_psr2_sf@fbc-pr-cursor-plane-move-continuous-sf:
    - shard-bmg:          NOTRUN -> [SKIP][62] ([Intel XE#1406] / [Intel XE#1489]) +1 other test skip
   [62]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-bmg-8/igt@kms_psr2_sf@fbc-pr-cursor-plane-move-continuous-sf.html
    - shard-dg2-set2:     NOTRUN -> [SKIP][63] ([Intel XE#1406] / [Intel XE#1489]) +1 other test skip
   [63]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-dg2-436/igt@kms_psr2_sf@fbc-pr-cursor-plane-move-continuous-sf.html

  * igt@kms_psr@fbc-psr-cursor-plane-move:
    - shard-bmg:          NOTRUN -> [SKIP][64] ([Intel XE#1406] / [Intel XE#2234] / [Intel XE#2850]) +2 other tests skip
   [64]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-bmg-8/igt@kms_psr@fbc-psr-cursor-plane-move.html

  * igt@kms_psr@fbc-psr-dpms:
    - shard-dg2-set2:     NOTRUN -> [SKIP][65] ([Intel XE#1406] / [Intel XE#2850] / [Intel XE#929])
   [65]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-dg2-466/igt@kms_psr@fbc-psr-dpms.html

  * igt@kms_setmode@basic:
    - shard-bmg:          [PASS][66] -> [FAIL][67] ([Intel XE#2883]) +5 other tests fail
   [66]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3675-0644d5ef504634c91573f5afde6196984c8f49a8/shard-bmg-1/igt@kms_setmode@basic.html
   [67]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-bmg-3/igt@kms_setmode@basic.html

  * igt@kms_tv_load_detect@load-detect:
    - shard-dg2-set2:     NOTRUN -> [SKIP][68] ([Intel XE#330])
   [68]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-dg2-436/igt@kms_tv_load_detect@load-detect.html
    - shard-bmg:          NOTRUN -> [SKIP][69] ([Intel XE#2450])
   [69]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-bmg-8/igt@kms_tv_load_detect@load-detect.html

  * igt@kms_vrr@negative-basic:
    - shard-bmg:          [PASS][70] -> [SKIP][71] ([Intel XE#1499])
   [70]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3675-0644d5ef504634c91573f5afde6196984c8f49a8/shard-bmg-1/igt@kms_vrr@negative-basic.html
   [71]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-bmg-6/igt@kms_vrr@negative-basic.html

  * igt@xe_eudebug@basic-client:
    - shard-lnl:          NOTRUN -> [SKIP][72] ([Intel XE#4837])
   [72]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-lnl-1/igt@xe_eudebug@basic-client.html

  * igt@xe_eudebug@multiple-sessions:
    - shard-dg2-set2:     NOTRUN -> [SKIP][73] ([Intel XE#4837]) +2 other tests skip
   [73]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-dg2-466/igt@xe_eudebug@multiple-sessions.html

  * igt@xe_eudebug_online@interrupt-all-set-breakpoint-faultable:
    - shard-bmg:          NOTRUN -> [SKIP][74] ([Intel XE#4837]) +2 other tests skip
   [74]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-bmg-8/igt@xe_eudebug_online@interrupt-all-set-breakpoint-faultable.html

  * igt@xe_exec_basic@multigpu-many-execqueues-many-vm-basic-defer-mmap:
    - shard-bmg:          NOTRUN -> [SKIP][75] ([Intel XE#2322])
   [75]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-bmg-8/igt@xe_exec_basic@multigpu-many-execqueues-many-vm-basic-defer-mmap.html

  * igt@xe_exec_basic@multigpu-no-exec-userptr-invalidate-race:
    - shard-lnl:          NOTRUN -> [SKIP][76] ([Intel XE#1392])
   [76]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-lnl-1/igt@xe_exec_basic@multigpu-no-exec-userptr-invalidate-race.html

  * igt@xe_exec_fault_mode@many-execqueues-bindexecqueue-userptr-rebind-imm:
    - shard-dg2-set2:     NOTRUN -> [SKIP][77] ([Intel XE#288]) +2 other tests skip
   [77]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-dg2-436/igt@xe_exec_fault_mode@many-execqueues-bindexecqueue-userptr-rebind-imm.html

  * igt@xe_exec_mix_modes@exec-spinner-interrupted-dma-fence:
    - shard-dg2-set2:     NOTRUN -> [SKIP][78] ([Intel XE#2360])
   [78]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-dg2-466/igt@xe_exec_mix_modes@exec-spinner-interrupted-dma-fence.html

  * igt@xe_exec_system_allocator@many-large-mmap-huge-nomemset:
    - shard-lnl:          NOTRUN -> [SKIP][79] ([Intel XE#4943]) +2 other tests skip
   [79]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-lnl-1/igt@xe_exec_system_allocator@many-large-mmap-huge-nomemset.html

  * igt@xe_exec_system_allocator@process-many-stride-new:
    - shard-dg2-set2:     NOTRUN -> [SKIP][80] ([Intel XE#4915]) +48 other tests skip
   [80]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-dg2-436/igt@xe_exec_system_allocator@process-many-stride-new.html

  * igt@xe_exec_system_allocator@threads-many-execqueues-mmap-huge-nomemset:
    - shard-bmg:          NOTRUN -> [SKIP][81] ([Intel XE#4943]) +2 other tests skip
   [81]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-bmg-8/igt@xe_exec_system_allocator@threads-many-execqueues-mmap-huge-nomemset.html

  * igt@xe_exec_threads@threads-hang-userptr-rebind-err:
    - shard-dg2-set2:     [PASS][82] -> [DMESG-WARN][83] ([Intel XE#3876])
   [82]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3675-0644d5ef504634c91573f5afde6196984c8f49a8/shard-dg2-435/igt@xe_exec_threads@threads-hang-userptr-rebind-err.html
   [83]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-dg2-466/igt@xe_exec_threads@threads-hang-userptr-rebind-err.html

  * igt@xe_mmap@small-bar:
    - shard-bmg:          NOTRUN -> [SKIP][84] ([Intel XE#586])
   [84]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-bmg-8/igt@xe_mmap@small-bar.html
    - shard-dg2-set2:     NOTRUN -> [SKIP][85] ([Intel XE#512])
   [85]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-dg2-436/igt@xe_mmap@small-bar.html

  * igt@xe_oa@unprivileged-single-ctx-counters:
    - shard-dg2-set2:     NOTRUN -> [SKIP][86] ([Intel XE#3573]) +1 other test skip
   [86]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-dg2-436/igt@xe_oa@unprivileged-single-ctx-counters.html

  * igt@xe_pmu@fn-engine-activity-sched-if-idle:
    - shard-bmg:          NOTRUN -> [ABORT][87] ([Intel XE#3970])
   [87]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-bmg-8/igt@xe_pmu@fn-engine-activity-sched-if-idle.html

  * igt@xe_query@multigpu-query-topology-l3-bank-mask:
    - shard-bmg:          NOTRUN -> [SKIP][88] ([Intel XE#944])
   [88]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-bmg-8/igt@xe_query@multigpu-query-topology-l3-bank-mask.html
    - shard-dg2-set2:     NOTRUN -> [SKIP][89] ([Intel XE#944])
   [89]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-dg2-436/igt@xe_query@multigpu-query-topology-l3-bank-mask.html

  * igt@xe_sriov_scheduling@nonpreempt-engine-resets:
    - shard-lnl:          NOTRUN -> [SKIP][90] ([Intel XE#4351])
   [90]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-lnl-1/igt@xe_sriov_scheduling@nonpreempt-engine-resets.html

  
#### Possible fixes ####

  * igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-0-hflip-async-flip:
    - shard-adlp:         [DMESG-FAIL][91] ([Intel XE#4543]) -> [PASS][92] +1 other test pass
   [91]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3675-0644d5ef504634c91573f5afde6196984c8f49a8/shard-adlp-8/igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-0-hflip-async-flip.html
   [92]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-adlp-9/igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-0-hflip-async-flip.html

  * igt@kms_bw@connected-linear-tiling-2-displays-2160x1440p:
    - shard-bmg:          [SKIP][93] ([Intel XE#2314] / [Intel XE#2894]) -> [PASS][94]
   [93]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3675-0644d5ef504634c91573f5afde6196984c8f49a8/shard-bmg-6/igt@kms_bw@connected-linear-tiling-2-displays-2160x1440p.html
   [94]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-bmg-3/igt@kms_bw@connected-linear-tiling-2-displays-2160x1440p.html

  * igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs@pipe-b-hdmi-a-6:
    - shard-dg2-set2:     [DMESG-WARN][95] ([Intel XE#1727] / [Intel XE#3113]) -> [PASS][96]
   [95]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3675-0644d5ef504634c91573f5afde6196984c8f49a8/shard-dg2-463/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs@pipe-b-hdmi-a-6.html
   [96]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-dg2-464/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs@pipe-b-hdmi-a-6.html

  * igt@kms_cursor_edge_walk@128x128-top-bottom@pipe-a-hdmi-a-6:
    - shard-dg2-set2:     [INCOMPLETE][97] ([Intel XE#4842]) -> [PASS][98] +1 other test pass
   [97]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3675-0644d5ef504634c91573f5afde6196984c8f49a8/shard-dg2-464/igt@kms_cursor_edge_walk@128x128-top-bottom@pipe-a-hdmi-a-6.html
   [98]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-dg2-466/igt@kms_cursor_edge_walk@128x128-top-bottom@pipe-a-hdmi-a-6.html

  * igt@kms_cursor_legacy@cursora-vs-flipb-legacy:
    - shard-bmg:          [SKIP][99] ([Intel XE#2291]) -> [PASS][100] +2 other tests pass
   [99]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3675-0644d5ef504634c91573f5afde6196984c8f49a8/shard-bmg-6/igt@kms_cursor_legacy@cursora-vs-flipb-legacy.html
   [100]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-bmg-3/igt@kms_cursor_legacy@cursora-vs-flipb-legacy.html

  * igt@kms_flip@2x-plain-flip-fb-recreate-interruptible:
    - shard-bmg:          [SKIP][101] ([Intel XE#2316]) -> [PASS][102] +4 other tests pass
   [101]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3675-0644d5ef504634c91573f5afde6196984c8f49a8/shard-bmg-6/igt@kms_flip@2x-plain-flip-fb-recreate-interruptible.html
   [102]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-bmg-4/igt@kms_flip@2x-plain-flip-fb-recreate-interruptible.html

  * igt@kms_flip@flip-vs-expired-vblank@c-edp1:
    - shard-lnl:          [FAIL][103] ([Intel XE#301] / [Intel XE#3149]) -> [PASS][104] +1 other test pass
   [103]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3675-0644d5ef504634c91573f5afde6196984c8f49a8/shard-lnl-3/igt@kms_flip@flip-vs-expired-vblank@c-edp1.html
   [104]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-lnl-1/igt@kms_flip@flip-vs-expired-vblank@c-edp1.html

  * igt@kms_flip@flip-vs-rmfb@d-hdmi-a1:
    - shard-adlp:         [DMESG-WARN][105] ([Intel XE#4543]) -> [PASS][106] +3 other tests pass
   [105]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3675-0644d5ef504634c91573f5afde6196984c8f49a8/shard-adlp-9/igt@kms_flip@flip-vs-rmfb@d-hdmi-a1.html
   [106]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-adlp-8/igt@kms_flip@flip-vs-rmfb@d-hdmi-a1.html

  * igt@kms_pipe_crc_basic@suspend-read-crc@pipe-a-hdmi-a-1:
    - shard-adlp:         [DMESG-WARN][107] ([Intel XE#2953] / [Intel XE#4173]) -> [PASS][108] +2 other tests pass
   [107]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3675-0644d5ef504634c91573f5afde6196984c8f49a8/shard-adlp-3/igt@kms_pipe_crc_basic@suspend-read-crc@pipe-a-hdmi-a-1.html
   [108]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-adlp-4/igt@kms_pipe_crc_basic@suspend-read-crc@pipe-a-hdmi-a-1.html

  * igt@kms_setmode@basic@pipe-b-edp-1:
    - shard-lnl:          [FAIL][109] ([Intel XE#2883]) -> [PASS][110] +2 other tests pass
   [109]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3675-0644d5ef504634c91573f5afde6196984c8f49a8/shard-lnl-1/igt@kms_setmode@basic@pipe-b-edp-1.html
   [110]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-lnl-5/igt@kms_setmode@basic@pipe-b-edp-1.html

  * igt@xe_exec_basic@multigpu-many-execqueues-many-vm-basic-defer-bind:
    - shard-dg2-set2:     [SKIP][111] ([Intel XE#1392]) -> [PASS][112] +6 other tests pass
   [111]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3675-0644d5ef504634c91573f5afde6196984c8f49a8/shard-dg2-432/igt@xe_exec_basic@multigpu-many-execqueues-many-vm-basic-defer-bind.html
   [112]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-dg2-436/igt@xe_exec_basic@multigpu-many-execqueues-many-vm-basic-defer-bind.html

  * igt@xe_exec_reset@parallel-gt-reset:
    - shard-adlp:         [DMESG-WARN][113] ([Intel XE#3876]) -> [PASS][114]
   [113]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3675-0644d5ef504634c91573f5afde6196984c8f49a8/shard-adlp-4/igt@xe_exec_reset@parallel-gt-reset.html
   [114]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-adlp-3/igt@xe_exec_reset@parallel-gt-reset.html

  * igt@xe_fault_injection@probe-fail-guc-xe_guc_mmio_send_recv:
    - shard-dg2-set2:     [DMESG-WARN][115] ([Intel XE#5893]) -> [PASS][116]
   [115]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3675-0644d5ef504634c91573f5afde6196984c8f49a8/shard-dg2-464/igt@xe_fault_injection@probe-fail-guc-xe_guc_mmio_send_recv.html
   [116]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-dg2-466/igt@xe_fault_injection@probe-fail-guc-xe_guc_mmio_send_recv.html

  
#### Warnings ####

  * igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs:
    - shard-dg2-set2:     [INCOMPLETE][117] ([Intel XE#1727] / [Intel XE#3113] / [Intel XE#3124] / [Intel XE#4345]) -> [INCOMPLETE][118] ([Intel XE#1727] / [Intel XE#3113] / [Intel XE#4212] / [Intel XE#4522])
   [117]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3675-0644d5ef504634c91573f5afde6196984c8f49a8/shard-dg2-463/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs.html
   [118]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-dg2-464/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs.html

  * igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs-cc:
    - shard-dg2-set2:     [INCOMPLETE][119] ([Intel XE#1727] / [Intel XE#3113] / [Intel XE#3124]) -> [INCOMPLETE][120] ([Intel XE#1727] / [Intel XE#3113])
   [119]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3675-0644d5ef504634c91573f5afde6196984c8f49a8/shard-dg2-434/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs-cc.html
   [120]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-dg2-432/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs-cc.html

  * igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs@pipe-b-dp-4:
    - shard-dg2-set2:     [INCOMPLETE][121] ([Intel XE#3124]) -> [INCOMPLETE][122] ([Intel XE#1727] / [Intel XE#3113] / [Intel XE#4212] / [Intel XE#4522])
   [121]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3675-0644d5ef504634c91573f5afde6196984c8f49a8/shard-dg2-463/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs@pipe-b-dp-4.html
   [122]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-dg2-464/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs@pipe-b-dp-4.html

  * igt@kms_content_protection@atomic:
    - shard-bmg:          [FAIL][123] ([Intel XE#1178]) -> [SKIP][124] ([Intel XE#2341])
   [123]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3675-0644d5ef504634c91573f5afde6196984c8f49a8/shard-bmg-5/igt@kms_content_protection@atomic.html
   [124]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-bmg-6/igt@kms_content_protection@atomic.html

  * igt@kms_flip@flip-vs-rmfb:
    - shard-adlp:         [DMESG-WARN][125] ([Intel XE#5208]) -> [DMESG-WARN][126] ([Intel XE#4543] / [Intel XE#5208])
   [125]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3675-0644d5ef504634c91573f5afde6196984c8f49a8/shard-adlp-9/igt@kms_flip@flip-vs-rmfb.html
   [126]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-adlp-8/igt@kms_flip@flip-vs-rmfb.html

  * igt@kms_frontbuffer_tracking@drrs-2p-primscrn-shrfb-msflip-blt:
    - shard-bmg:          [SKIP][127] ([Intel XE#2312]) -> [SKIP][128] ([Intel XE#2311]) +10 other tests skip
   [127]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3675-0644d5ef504634c91573f5afde6196984c8f49a8/shard-bmg-6/igt@kms_frontbuffer_tracking@drrs-2p-primscrn-shrfb-msflip-blt.html
   [128]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-bmg-4/igt@kms_frontbuffer_tracking@drrs-2p-primscrn-shrfb-msflip-blt.html

  * igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-fullscreen:
    - shard-bmg:          [SKIP][129] ([Intel XE#5390]) -> [SKIP][130] ([Intel XE#2312]) +6 other tests skip
   [129]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3675-0644d5ef504634c91573f5afde6196984c8f49a8/shard-bmg-5/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-fullscreen.html
   [130]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-bmg-6/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-fullscreen.html

  * igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-shrfb-draw-mmap-wc:
    - shard-bmg:          [SKIP][131] ([Intel XE#2312]) -> [SKIP][132] ([Intel XE#5390]) +2 other tests skip
   [131]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3675-0644d5ef504634c91573f5afde6196984c8f49a8/shard-bmg-6/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-shrfb-draw-mmap-wc.html
   [132]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-bmg-4/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-shrfb-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-indfb-plflip-blt:
    - shard-bmg:          [SKIP][133] ([Intel XE#2311]) -> [SKIP][134] ([Intel XE#2312]) +10 other tests skip
   [133]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3675-0644d5ef504634c91573f5afde6196984c8f49a8/shard-bmg-5/igt@kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-indfb-plflip-blt.html
   [134]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-bmg-6/igt@kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-indfb-plflip-blt.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-draw-blt:
    - shard-bmg:          [SKIP][135] ([Intel XE#2313]) -> [SKIP][136] ([Intel XE#2312]) +10 other tests skip
   [135]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3675-0644d5ef504634c91573f5afde6196984c8f49a8/shard-bmg-3/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-draw-blt.html
   [136]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-bmg-6/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-shrfb-pgflip-blt:
    - shard-bmg:          [SKIP][137] ([Intel XE#2312]) -> [SKIP][138] ([Intel XE#2313]) +12 other tests skip
   [137]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3675-0644d5ef504634c91573f5afde6196984c8f49a8/shard-bmg-6/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-shrfb-pgflip-blt.html
   [138]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-bmg-4/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-shrfb-pgflip-blt.html

  * igt@kms_plane_multiple@2x-tiling-yf:
    - shard-bmg:          [SKIP][139] ([Intel XE#5021]) -> [SKIP][140] ([Intel XE#4596])
   [139]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3675-0644d5ef504634c91573f5afde6196984c8f49a8/shard-bmg-5/igt@kms_plane_multiple@2x-tiling-yf.html
   [140]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-bmg-6/igt@kms_plane_multiple@2x-tiling-yf.html

  * igt@kms_pm_dc@dc9-dpms:
    - shard-adlp:         [FAIL][141] ([Intel XE#3325]) -> [SKIP][142] ([Intel XE#734])
   [141]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3675-0644d5ef504634c91573f5afde6196984c8f49a8/shard-adlp-8/igt@kms_pm_dc@dc9-dpms.html
   [142]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-adlp-1/igt@kms_pm_dc@dc9-dpms.html

  * igt@xe_fault_injection@probe-fail-guc-xe_guc_ct_send_recv:
    - shard-bmg:          [ABORT][143] ([Intel XE#4917] / [Intel XE#5466] / [Intel XE#5530]) -> [ABORT][144] ([Intel XE#5466] / [Intel XE#5530])
   [143]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3675-0644d5ef504634c91573f5afde6196984c8f49a8/shard-bmg-7/igt@xe_fault_injection@probe-fail-guc-xe_guc_ct_send_recv.html
   [144]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/shard-bmg-8/igt@xe_fault_injection@probe-fail-guc-xe_guc_ct_send_recv.html

  
  {name}: This element is suppressed. This means it is ignored when computing
          the status of the difference (SUCCESS, WARNING, or FAILURE).

  [Intel XE#1124]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1124
  [Intel XE#1178]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1178
  [Intel XE#1392]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1392
  [Intel XE#1406]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1406
  [Intel XE#1475]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1475
  [Intel XE#1489]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1489
  [Intel XE#1499]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1499
  [Intel XE#1503]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1503
  [Intel XE#1727]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1727
  [Intel XE#2234]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2234
  [Intel XE#2244]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2244
  [Intel XE#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#2314]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2314
  [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#2322]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2322
  [Intel XE#2327]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2327
  [Intel XE#2341]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2341
  [Intel XE#2360]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2360
  [Intel XE#2380]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2380
  [Intel XE#2450]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2450
  [Intel XE#2652]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2652
  [Intel XE#2724]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2724
  [Intel XE#2763]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2763
  [Intel XE#2850]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2850
  [Intel XE#288]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/288
  [Intel XE#2883]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2883
  [Intel XE#2887]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2887
  [Intel XE#2894]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2894
  [Intel XE#2907]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2907
  [Intel XE#2925]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2925
  [Intel XE#2927]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2927
  [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#309]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/309
  [Intel XE#3113]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3113
  [Intel XE#3124]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3124
  [Intel XE#3149]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3149
  [Intel XE#316]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/316
  [Intel XE#3278]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3278
  [Intel XE#330]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/330
  [Intel XE#3325]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3325
  [Intel XE#3442]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3442
  [Intel XE#3573]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3573
  [Intel XE#373]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/373
  [Intel XE#3862]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3862
  [Intel XE#3876]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3876
  [Intel XE#3970]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3970
  [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#4212]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4212
  [Intel XE#4294]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4294
  [Intel XE#4345]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4345
  [Intel XE#4351]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4351
  [Intel XE#4418]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4418
  [Intel XE#4522]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4522
  [Intel XE#4543]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4543
  [Intel XE#455]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/455
  [Intel XE#4596]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4596
  [Intel XE#4837]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4837
  [Intel XE#4842]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4842
  [Intel XE#4915]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4915
  [Intel XE#4917]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4917
  [Intel XE#4943]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4943
  [Intel XE#5007]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5007
  [Intel XE#5021]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5021
  [Intel XE#512]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/512
  [Intel XE#5208]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5208
  [Intel XE#5376]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5376
  [Intel XE#5390]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5390
  [Intel XE#5466]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5466
  [Intel XE#5530]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5530
  [Intel XE#586]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/586
  [Intel XE#5893]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5893
  [Intel XE#651]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/651
  [Intel XE#653]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/653
  [Intel XE#656]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/656
  [Intel XE#734]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/734
  [Intel XE#787]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/787
  [Intel XE#929]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/929
  [Intel XE#944]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/944


Build changes
-------------

  * Linux: xe-3675-0644d5ef504634c91573f5afde6196984c8f49a8 -> xe-pw-154017v1

  IGT_8522: 8522
  xe-3675-0644d5ef504634c91573f5afde6196984c8f49a8: 0644d5ef504634c91573f5afde6196984c8f49a8
  xe-pw-154017v1: 154017v1

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154017v1/index.html

[-- Attachment #2: Type: text/html, Size: 50422 bytes --]

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH v4 1/2] drm/xe/guc: Split xe_guc_ct_enable()
  2025-09-04  9:14 ` [PATCH v4 1/2] drm/xe/guc: Split xe_guc_ct_enable() Raag Jadav
@ 2025-09-10 16:51   ` Rodrigo Vivi
  0 siblings, 0 replies; 12+ messages in thread
From: Rodrigo Vivi @ 2025-09-10 16:51 UTC (permalink / raw)
  To: Raag Jadav, Michal Wajdeczko
  Cc: lucas.demarchi, intel-xe, riana.tauro, daniele.ceraolospurio,
	matthew.brost, michal.wajdeczko

On Thu, Sep 04, 2025 at 02:44:38PM +0530, Raag Jadav wrote:
> In preparation of usecases which require dynamically enabling GuC CT state,
> split xe_guc_ct_enable().
> 
> Suggested-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
> Signed-off-by: Raag Jadav <raag.jadav@intel.com>
> ---
>  drivers/gpu/drm/xe/xe_guc.c    |  2 +-
>  drivers/gpu/drm/xe/xe_guc_ct.c | 34 ++++++++++++++++++++++++++--------
>  drivers/gpu/drm/xe/xe_guc_ct.h |  3 ++-
>  3 files changed, 29 insertions(+), 10 deletions(-)
> 
> diff --git a/drivers/gpu/drm/xe/xe_guc.c b/drivers/gpu/drm/xe/xe_guc.c
> index b3a6408a5760..fd82eef8f372 100644
> --- a/drivers/gpu/drm/xe/xe_guc.c
> +++ b/drivers/gpu/drm/xe/xe_guc.c
> @@ -1355,7 +1355,7 @@ int xe_guc_enable_communication(struct xe_guc *guc)
>  		guc_enable_irq(guc);
>  	}
>  
> -	err = xe_guc_ct_enable(&guc->ct);
> +	err = xe_guc_ct_register(&guc->ct);
>  	if (err)
>  		return err;
>  
> diff --git a/drivers/gpu/drm/xe/xe_guc_ct.c b/drivers/gpu/drm/xe/xe_guc_ct.c
> index e431ff73227c..f2b2db780e53 100644
> --- a/drivers/gpu/drm/xe/xe_guc_ct.c
> +++ b/drivers/gpu/drm/xe/xe_guc_ct.c
> @@ -504,7 +504,31 @@ static void ct_exit_safe_mode(struct xe_guc_ct *ct)
>  		xe_gt_dbg(ct_to_gt(ct), "GuC CT safe-mode disabled\n");
>  }
>  
> -int xe_guc_ct_enable(struct xe_guc_ct *ct)
> +/**
> + * xe_guc_ct_enable() - Enable GuC CT
> + * @ct: the &xe_guc_ct
> + *
> + * Set GuC CT to enabled state and ready to send/received new messages.
> + */
> +void xe_guc_ct_enable(struct xe_guc_ct *ct)
> +{
> +	guc_ct_change_state(ct, XE_GUC_CT_STATE_ENABLED);
> +
> +	smp_mb();
> +	wake_up_all(&ct->wq);
> +
> +	ct_enter_safe_mode(ct);

Where is the  if (ct_needs_safe_mode(ct)) ?
This change is not mentioned in the commit message and might have
implications specially on initialization and SRIOV flows?!

Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>


> +}
> +
> +/**
> + * xe_guc_ct_register() - Register GuC CT
> + * @ct: the &xe_guc_ct
> + *
> + * Initialize and register H2G and G2H CTBs and enable GuC CT.
> + *
> + * Return: 0 on success, negative error code otherwise.
> + */
> +int xe_guc_ct_register(struct xe_guc_ct *ct)
>  {
>  	struct xe_device *xe = ct_to_xe(ct);
>  	struct xe_gt *gt = ct_to_gt(ct);
> @@ -528,13 +552,7 @@ int xe_guc_ct_enable(struct xe_guc_ct *ct)
>  	if (err)
>  		goto err_out;
>  
> -	guc_ct_change_state(ct, XE_GUC_CT_STATE_ENABLED);
> -
> -	smp_mb();
> -	wake_up_all(&ct->wq);
> -
> -	if (ct_needs_safe_mode(ct))
> -		ct_enter_safe_mode(ct);
> +	xe_guc_ct_enable(ct);
>  
>  #if IS_ENABLED(CONFIG_DRM_XE_DEBUG)
>  	/*
> diff --git a/drivers/gpu/drm/xe/xe_guc_ct.h b/drivers/gpu/drm/xe/xe_guc_ct.h
> index cf41210ab30a..c821517e87d0 100644
> --- a/drivers/gpu/drm/xe/xe_guc_ct.h
> +++ b/drivers/gpu/drm/xe/xe_guc_ct.h
> @@ -14,8 +14,9 @@ struct xe_device;
>  int xe_guc_ct_init_noalloc(struct xe_guc_ct *ct);
>  int xe_guc_ct_init(struct xe_guc_ct *ct);
>  int xe_guc_ct_init_post_hwconfig(struct xe_guc_ct *ct);
> -int xe_guc_ct_enable(struct xe_guc_ct *ct);
> +void xe_guc_ct_enable(struct xe_guc_ct *ct);
>  void xe_guc_ct_disable(struct xe_guc_ct *ct);
> +int xe_guc_ct_register(struct xe_guc_ct *ct);
>  void xe_guc_ct_stop(struct xe_guc_ct *ct);
>  void xe_guc_ct_fast_path(struct xe_guc_ct *ct);
>  
> -- 
> 2.34.1
> 

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH v4 2/2] drm/xe/gt: Introduce runtime suspend/resume
  2025-09-04  9:14 ` [PATCH v4 2/2] drm/xe/gt: Introduce runtime suspend/resume Raag Jadav
@ 2025-10-01 16:46   ` Daniele Ceraolo Spurio
  2025-10-02 16:22     ` Raag Jadav
  0 siblings, 1 reply; 12+ messages in thread
From: Daniele Ceraolo Spurio @ 2025-10-01 16:46 UTC (permalink / raw)
  To: Raag Jadav, lucas.demarchi, rodrigo.vivi
  Cc: intel-xe, riana.tauro, matthew.brost, michal.wajdeczko



On 9/4/2025 2:14 AM, 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)
>
> 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>
> ---
>   drivers/gpu/drm/xe/xe_gt.c     | 58 ++++++++++++++++++++++++++++++++++
>   drivers/gpu/drm/xe/xe_gt.h     |  2 ++
>   drivers/gpu/drm/xe/xe_guc.c    | 29 +++++++++++++++++
>   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     | 29 +++++++++++++++++
>   drivers/gpu/drm/xe/xe_uc.h     |  2 ++
>   9 files changed, 156 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/gpu/drm/xe/xe_gt.c b/drivers/gpu/drm/xe/xe_gt.c
> index 34505a6d93ed..7ff0dfab0854 100644
> --- a/drivers/gpu/drm/xe/xe_gt.c
> +++ b/drivers/gpu/drm/xe/xe_gt.c
> @@ -943,6 +943,35 @@ int xe_gt_suspend(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(&gt->uc);

The full suspend also calls

     xe_gt_idle_disable_pg(gt);

and

     xe_gt_disable_host_l2_vram(gt);

Not sure if the first one is needed, but the host_l2_vram workaround 
seems to be applicable to the runtime scenario as well (although maybe 
we just need the resume side of it?)

> +
> +	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;
> +}
> +
>   void xe_gt_shutdown(struct xe_gt *gt)
>   {
>   	unsigned int fw_ref;
> @@ -1002,6 +1031,35 @@ int xe_gt_resume(struct xe_gt *gt)
>   	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_uc_runtime_resume(&gt->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 41880979f4de..3f793230e78a 100644
> --- a/drivers/gpu/drm/xe/xe_gt.h
> +++ b/drivers/gpu/drm/xe/xe_gt.h
> @@ -51,6 +51,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 fd82eef8f372..c750f564a856 100644
> --- a/drivers/gpu/drm/xe/xe_guc.c
> +++ b/drivers/gpu/drm/xe/xe_guc.c
> @@ -1626,6 +1626,35 @@ void xe_guc_stop_prepare(struct xe_guc *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);
> +	guc->submission_state.enabled = false;

We now have xe_guc_submit_disable() to set this

> +	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)
> +{
> +	guc_enable_irq(guc);

I don't think that this is a valid function to call in a VF (but will 
leave the final judgement to Michal).

> +	xe_guc_ct_runtime_resume(&guc->ct);
> +	guc->submission_state.enabled = true;

xe_guc_submit_enable() here. That one also sends an H2G to set scheduler 
policies, but it shouldn't be a problem to re-send that here (but please 
test that).

Daniele

> +	xe_guc_submit_unpause(guc);
> +}
> +
>   void xe_guc_stop(struct xe_guc *guc)
>   {
>   	xe_guc_ct_stop(&guc->ct);
> diff --git a/drivers/gpu/drm/xe/xe_guc.h b/drivers/gpu/drm/xe/xe_guc.h
> index 22cf019a11bf..e3736300ffd8 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 f2b2db780e53..1ee0b3aba9d5 100644
> --- a/drivers/gpu/drm/xe/xe_guc_ct.c
> +++ b/drivers/gpu/drm/xe/xe_guc_ct.c
> @@ -520,6 +520,17 @@ void xe_guc_ct_enable(struct xe_guc_ct *ct)
>   	ct_enter_safe_mode(ct);
>   }
>   
> +/**
> + * xe_guc_ct_runtime_resume() - GuC CT runtime resume
> + * @ct: the &xe_guc_ct
> + *
> + * Runtime resume GuC CT and set it to enabled state.
> + */
> +void xe_guc_ct_runtime_resume(struct xe_guc_ct *ct)
> +{
> +	xe_guc_ct_enable(ct);
> +}
> +
>   /**
>    * xe_guc_ct_register() - Register GuC CT
>    * @ct: the &xe_guc_ct
> @@ -610,6 +621,22 @@ 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
> + *
> + * Runtime suspend GuC CT and set it 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);
> +}
> +
>   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 c821517e87d0..8bc34a0a78e2 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);
>   void xe_guc_ct_enable(struct xe_guc_ct *ct);
>   void xe_guc_ct_disable(struct xe_guc_ct *ct);
>   int xe_guc_ct_register(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_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 d4b54cd34cff..df61876fda87 100644
> --- a/drivers/gpu/drm/xe/xe_pm.c
> +++ b/drivers/gpu/drm/xe/xe_pm.c
> @@ -498,7 +498,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;
>   	}
> @@ -540,10 +540,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;
> @@ -564,7 +564,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..d99b8a795690 100644
> --- a/drivers/gpu/drm/xe/xe_uc.c
> +++ b/drivers/gpu/drm/xe/xe_uc.c
> @@ -15,6 +15,7 @@
>   #include "xe_guc.h"
>   #include "xe_guc_pc.h"
>   #include "xe_guc_engine_activity.h"
> +#include "xe_guc_submit.h"
>   #include "xe_huc.h"
>   #include "xe_sriov.h"
>   #include "xe_uc_fw.h"
> @@ -301,6 +302,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);


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH v4 2/2] drm/xe/gt: Introduce runtime suspend/resume
  2025-10-01 16:46   ` Daniele Ceraolo Spurio
@ 2025-10-02 16:22     ` Raag Jadav
  2025-10-02 16:53       ` Daniele Ceraolo Spurio
  0 siblings, 1 reply; 12+ messages in thread
From: Raag Jadav @ 2025-10-02 16:22 UTC (permalink / raw)
  To: Daniele Ceraolo Spurio
  Cc: lucas.demarchi, rodrigo.vivi, intel-xe, riana.tauro,
	matthew.brost, michal.wajdeczko

On Wed, Oct 01, 2025 at 09:46:21AM -0700, Daniele Ceraolo Spurio wrote:
> On 9/4/2025 2:14 AM, 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)
> > 
> > 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>
> > ---
> >   drivers/gpu/drm/xe/xe_gt.c     | 58 ++++++++++++++++++++++++++++++++++
> >   drivers/gpu/drm/xe/xe_gt.h     |  2 ++
> >   drivers/gpu/drm/xe/xe_guc.c    | 29 +++++++++++++++++
> >   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     | 29 +++++++++++++++++
> >   drivers/gpu/drm/xe/xe_uc.h     |  2 ++
> >   9 files changed, 156 insertions(+), 5 deletions(-)
> > 
> > diff --git a/drivers/gpu/drm/xe/xe_gt.c b/drivers/gpu/drm/xe/xe_gt.c
> > index 34505a6d93ed..7ff0dfab0854 100644
> > --- a/drivers/gpu/drm/xe/xe_gt.c
> > +++ b/drivers/gpu/drm/xe/xe_gt.c
> > @@ -943,6 +943,35 @@ int xe_gt_suspend(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(&gt->uc);
> 
> The full suspend also calls
> 
>     xe_gt_idle_disable_pg(gt);
> 
> and
> 
>     xe_gt_disable_host_l2_vram(gt);
> 
> Not sure if the first one is needed, but the host_l2_vram workaround seems
> to be applicable to the runtime scenario as well (although maybe we just
> need the resume side of it?)

Sure, I'll add both sides of it to avoid any corner cases.

> > +
> > +	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;
> > +}
> > +
> >   void xe_gt_shutdown(struct xe_gt *gt)
> >   {
> >   	unsigned int fw_ref;
> > @@ -1002,6 +1031,35 @@ int xe_gt_resume(struct xe_gt *gt)
> >   	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_uc_runtime_resume(&gt->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 41880979f4de..3f793230e78a 100644
> > --- a/drivers/gpu/drm/xe/xe_gt.h
> > +++ b/drivers/gpu/drm/xe/xe_gt.h
> > @@ -51,6 +51,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 fd82eef8f372..c750f564a856 100644
> > --- a/drivers/gpu/drm/xe/xe_guc.c
> > +++ b/drivers/gpu/drm/xe/xe_guc.c
> > @@ -1626,6 +1626,35 @@ void xe_guc_stop_prepare(struct xe_guc *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);
> > +	guc->submission_state.enabled = false;
> 
> We now have xe_guc_submit_disable() to set this

Nice.

> > +	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)
> > +{
> > +	guc_enable_irq(guc);
> 
> I don't think that this is a valid function to call in a VF (but will leave
> the final judgement to Michal).

I think commit 14fcd7361ed1 covers those cases?

> > +	xe_guc_ct_runtime_resume(&guc->ct);
> > +	guc->submission_state.enabled = true;
> 
> xe_guc_submit_enable() here. That one also sends an H2G to set scheduler
> policies, but it shouldn't be a problem to re-send that here (but please
> test that).

Sure, thanks Daniele.

Raag

> > +	xe_guc_submit_unpause(guc);
> > +}
> > +
> >   void xe_guc_stop(struct xe_guc *guc)
> >   {
> >   	xe_guc_ct_stop(&guc->ct);
> > diff --git a/drivers/gpu/drm/xe/xe_guc.h b/drivers/gpu/drm/xe/xe_guc.h
> > index 22cf019a11bf..e3736300ffd8 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 f2b2db780e53..1ee0b3aba9d5 100644
> > --- a/drivers/gpu/drm/xe/xe_guc_ct.c
> > +++ b/drivers/gpu/drm/xe/xe_guc_ct.c
> > @@ -520,6 +520,17 @@ void xe_guc_ct_enable(struct xe_guc_ct *ct)
> >   	ct_enter_safe_mode(ct);
> >   }
> > +/**
> > + * xe_guc_ct_runtime_resume() - GuC CT runtime resume
> > + * @ct: the &xe_guc_ct
> > + *
> > + * Runtime resume GuC CT and set it to enabled state.
> > + */
> > +void xe_guc_ct_runtime_resume(struct xe_guc_ct *ct)
> > +{
> > +	xe_guc_ct_enable(ct);
> > +}
> > +
> >   /**
> >    * xe_guc_ct_register() - Register GuC CT
> >    * @ct: the &xe_guc_ct
> > @@ -610,6 +621,22 @@ 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
> > + *
> > + * Runtime suspend GuC CT and set it 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);
> > +}
> > +
> >   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 c821517e87d0..8bc34a0a78e2 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);
> >   void xe_guc_ct_enable(struct xe_guc_ct *ct);
> >   void xe_guc_ct_disable(struct xe_guc_ct *ct);
> >   int xe_guc_ct_register(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_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 d4b54cd34cff..df61876fda87 100644
> > --- a/drivers/gpu/drm/xe/xe_pm.c
> > +++ b/drivers/gpu/drm/xe/xe_pm.c
> > @@ -498,7 +498,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;
> >   	}
> > @@ -540,10 +540,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;
> > @@ -564,7 +564,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..d99b8a795690 100644
> > --- a/drivers/gpu/drm/xe/xe_uc.c
> > +++ b/drivers/gpu/drm/xe/xe_uc.c
> > @@ -15,6 +15,7 @@
> >   #include "xe_guc.h"
> >   #include "xe_guc_pc.h"
> >   #include "xe_guc_engine_activity.h"
> > +#include "xe_guc_submit.h"
> >   #include "xe_huc.h"
> >   #include "xe_sriov.h"
> >   #include "xe_uc_fw.h"
> > @@ -301,6 +302,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);
> 

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH v4 2/2] drm/xe/gt: Introduce runtime suspend/resume
  2025-10-02 16:22     ` Raag Jadav
@ 2025-10-02 16:53       ` Daniele Ceraolo Spurio
  2025-10-04  6:39         ` Raag Jadav
  0 siblings, 1 reply; 12+ messages in thread
From: Daniele Ceraolo Spurio @ 2025-10-02 16:53 UTC (permalink / raw)
  To: Raag Jadav
  Cc: lucas.demarchi, rodrigo.vivi, intel-xe, riana.tauro,
	matthew.brost, michal.wajdeczko

[-- Attachment #1: Type: text/plain, Size: 1328 bytes --]

<snip>
>>> +	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)
>>> +{
>>> +	guc_enable_irq(guc);
>> I don't think that this is a valid function to call in a VF (but will leave
>> the final judgement to Michal).
> I think commit 14fcd7361ed1 covers those cases?

I'm not familiar with the PM subsystem, so apologies if this is a dumb 
question, but what is the exact consequence of that patch?

1 - runtime suspend/resume functions for VFs are not called at all for 
VFs, even when the PF runtime suspends.
or
2 - runtime suspend/resume functions for VFs are called only when the PF 
runtime suspends.

If it is #1, are we saying that on VF it is fine to not call 
xe_guc_runtime_suspend/resume? and if so, why is this required on 
native/PF? None of the operations done in those functions are 
PF-specific, apart from the irq stuff.
If it is #2, then you still have the problem of not being able to call 
guc_enable_irq on VFs.

Or am I misunderstanding something?

Thanks,
Daniele

>
>>> +	xe_guc_ct_runtime_resume(&guc->ct);
>>> +	guc->submission_state.enabled = true;
>>

[-- Attachment #2: Type: text/html, Size: 2268 bytes --]

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH v4 2/2] drm/xe/gt: Introduce runtime suspend/resume
  2025-10-02 16:53       ` Daniele Ceraolo Spurio
@ 2025-10-04  6:39         ` Raag Jadav
  0 siblings, 0 replies; 12+ messages in thread
From: Raag Jadav @ 2025-10-04  6:39 UTC (permalink / raw)
  To: Daniele Ceraolo Spurio
  Cc: lucas.demarchi, rodrigo.vivi, intel-xe, riana.tauro,
	matthew.brost, michal.wajdeczko

On Thu, Oct 02, 2025 at 09:53:21AM -0700, Daniele Ceraolo Spurio wrote:
> <snip>
> > > > +	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)
> > > > +{
> > > > +	guc_enable_irq(guc);
> > > I don't think that this is a valid function to call in a VF (but will leave
> > > the final judgement to Michal).
> > I think commit 14fcd7361ed1 covers those cases?
> 
> I'm not familiar with the PM subsystem, so apologies if this is a dumb
> question, but what is the exact consequence of that patch?
> 
> 1 - runtime suspend/resume functions for VFs are not called at all for VFs,
> even when the PF runtime suspends.
> or
> 2 - runtime suspend/resume functions for VFs are called only when the PF
> runtime suspends.
> 
> If it is #1, are we saying that on VF it is fine to not call
> xe_guc_runtime_suspend/resume? and if so, why is this required on native/PF?
> None of the operations done in those functions are PF-specific, apart from
> the irq stuff.
> If it is #2, then you still have the problem of not being able to call
> guc_enable_irq on VFs.
> 
> Or am I misunderstanding something?

I remember reading somewhere that our VFs reflect power state of their
associated PF, and what commit 14fcd7361ed1 essentially does is prevents
runtime PM from being enabled for VFs so that runtime_suspend/resume()
handles don't execute at all for VFs.

But this is my limited understanding and perhaps Michal can confirm this.

Raag

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2025-10-04  6:39 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-09-04  9:14 [PATCH v4 0/2] Introduce GT runtime suspend/resume Raag Jadav
2025-09-04  9:14 ` [PATCH v4 1/2] drm/xe/guc: Split xe_guc_ct_enable() Raag Jadav
2025-09-10 16:51   ` Rodrigo Vivi
2025-09-04  9:14 ` [PATCH v4 2/2] drm/xe/gt: Introduce runtime suspend/resume Raag Jadav
2025-10-01 16:46   ` Daniele Ceraolo Spurio
2025-10-02 16:22     ` Raag Jadav
2025-10-02 16:53       ` Daniele Ceraolo Spurio
2025-10-04  6:39         ` Raag Jadav
2025-09-04  9:31 ` ✗ CI.checkpatch: warning for Introduce GT " Patchwork
2025-09-04  9:32 ` ✓ CI.KUnit: success " Patchwork
2025-09-04 10:08 ` ✓ Xe.CI.BAT: " Patchwork
2025-09-04 21:01 ` ✗ 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).