intel-xe.lists.freedesktop.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/9] Ensure xe_force_wake_put is always called after xe_force_wake_get
@ 2024-06-04 11:02 Nirmoy Das
  2024-06-04 11:02 ` [PATCH 1/9] drm/xe/display: Always call xe_force_wake_put/get in pairs Nirmoy Das
                   ` (17 more replies)
  0 siblings, 18 replies; 28+ messages in thread
From: Nirmoy Das @ 2024-06-04 11:02 UTC (permalink / raw)
  To: intel-xe; +Cc: Nirmoy Das, Himal Prasad Ghimiray, Matthew Brost, Rodrigo Vivi

Cuurently there is inconsistency how we handle force wake get and put
calls. We have three cases: 
1 Return value of xe_force_wake_get is not checked.
2 Return value of xe_force_wake_get is checked but continue.
3 Return value of xe_force_wake_get is checked but the caller returns
  without calling xe_force_wake_put.

2nd case is perfectly valid but 1st and 3rd cases shouldn't happen. As
xe_force_wake_get() will increment the ref count regardless of success
or failure so xe_force_wake_get() should be followed by a
xe_force_wake_put().

For case 1, the last patch added __must_check attribute and rest of
patches are making sure we always call get and put in pairs even if
xe_force_wake_get() returns error.

Cc: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Cc: Matthew Brost <matthew.brost@intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>

Nirmoy Das (9):
  drm/xe/display: Always call xe_force_wake_put/get in pairs
  drm/xe/pat: Always call xe_force_wake_put/get in pairs
  drm/xe/xe_reg_sr: Always call xe_force_wake_put/get in pairs
  drm/xe/xe_gt: Always call xe_force_wake_put/get in pairs
  drm/xe/uc: Always call xe_force_wake_put/get in pairs
  drm/xe: Add xe_force_wake_tryget to simplify forcewake handling
  drm/xe: Use xe_force_wake_tryget when possible
  drm/xe/client: Check return value of xe_force_wake_get
  drm/xe: Add __must_check for xe_force_wake_get

 drivers/gpu/drm/xe/display/xe_hdcp_gsc.c |  2 +-
 drivers/gpu/drm/xe/xe_device.c           |  4 +-
 drivers/gpu/drm/xe/xe_drm_client.c       | 10 +++--
 drivers/gpu/drm/xe/xe_force_wake.c       | 49 +++++++++++++++++++++++-
 drivers/gpu/drm/xe/xe_force_wake.h       |  6 ++-
 drivers/gpu/drm/xe/xe_gsc_proxy.c        |  3 +-
 drivers/gpu/drm/xe/xe_gt.c               | 27 ++++++-------
 drivers/gpu/drm/xe/xe_gt_debugfs.c       | 10 ++---
 drivers/gpu/drm/xe/xe_guc.c              |  2 +-
 drivers/gpu/drm/xe/xe_guc_pc.c           |  8 ++--
 drivers/gpu/drm/xe/xe_huc.c              |  2 +-
 drivers/gpu/drm/xe/xe_pat.c              | 10 ++---
 drivers/gpu/drm/xe/xe_query.c            |  2 +-
 drivers/gpu/drm/xe/xe_reg_sr.c           | 20 ++++------
 drivers/gpu/drm/xe/xe_vram.c             |  2 +-
 15 files changed, 98 insertions(+), 59 deletions(-)

-- 
2.42.0


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

* [PATCH 1/9] drm/xe/display: Always call xe_force_wake_put/get in pairs
  2024-06-04 11:02 [PATCH 0/9] Ensure xe_force_wake_put is always called after xe_force_wake_get Nirmoy Das
@ 2024-06-04 11:02 ` Nirmoy Das
  2024-06-04 11:41   ` Ghimiray, Himal Prasad
  2024-06-04 11:02 ` [PATCH 2/9] drm/xe/pat: " Nirmoy Das
                   ` (16 subsequent siblings)
  17 siblings, 1 reply; 28+ messages in thread
From: Nirmoy Das @ 2024-06-04 11:02 UTC (permalink / raw)
  To: intel-xe; +Cc: Nirmoy Das

xe_force_wake_get() increments the domain ref regardless of success or
failure so call xe_force_wake_put() even on failure to keep ref count
accurate.

Signed-off-by: Nirmoy Das <nirmoy.das@intel.com>
---
 drivers/gpu/drm/xe/display/xe_hdcp_gsc.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c b/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c
index 14b8b4278317..6cd82ef495c2 100644
--- a/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c
+++ b/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c
@@ -56,8 +56,8 @@ bool intel_hdcp_gsc_check_status(struct xe_device *xe)
 	if (!xe_gsc_proxy_init_done(&gt->uc.gsc))
 		ret = false;
 
-	xe_force_wake_put(gt_to_fw(gt), XE_FW_GSC);
 out:
+	xe_force_wake_put(gt_to_fw(gt), XE_FW_GSC);
 	xe_pm_runtime_put(xe);
 	return ret;
 }
-- 
2.42.0


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

* [PATCH 2/9] drm/xe/pat: Always call xe_force_wake_put/get in pairs
  2024-06-04 11:02 [PATCH 0/9] Ensure xe_force_wake_put is always called after xe_force_wake_get Nirmoy Das
  2024-06-04 11:02 ` [PATCH 1/9] drm/xe/display: Always call xe_force_wake_put/get in pairs Nirmoy Das
@ 2024-06-04 11:02 ` Nirmoy Das
  2024-06-04 12:54   ` Michal Wajdeczko
  2024-06-04 11:02 ` [PATCH 3/9] drm/xe/xe_reg_sr: " Nirmoy Das
                   ` (15 subsequent siblings)
  17 siblings, 1 reply; 28+ messages in thread
From: Nirmoy Das @ 2024-06-04 11:02 UTC (permalink / raw)
  To: intel-xe; +Cc: Nirmoy Das

xe_force_wake_get() increments the domain ref regardless of success
or failure so call xe_force_wake_put() even on failure to keep ref
count accurate.

Signed-off-by: Nirmoy Das <nirmoy.das@intel.com>
---
 drivers/gpu/drm/xe/xe_pat.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_pat.c b/drivers/gpu/drm/xe/xe_pat.c
index 4ee32ee1cc88..a5bdf4de845c 100644
--- a/drivers/gpu/drm/xe/xe_pat.c
+++ b/drivers/gpu/drm/xe/xe_pat.c
@@ -190,9 +190,9 @@ static void xelp_dump(struct xe_gt *gt, struct drm_printer *p)
 			   XELP_MEM_TYPE_STR_MAP[mem_type], pat);
 	}
 
-	err = xe_force_wake_put(gt_to_fw(gt), XE_FW_GT);
 err_fw:
 	xe_assert(xe, !err);
+	xe_assert(xe, !xe_force_wake_put(gt_to_fw(gt), XE_FW_GT));
 }
 
 static const struct xe_pat_ops xelp_pat_ops = {
@@ -221,9 +221,9 @@ static void xehp_dump(struct xe_gt *gt, struct drm_printer *p)
 			   XELP_MEM_TYPE_STR_MAP[mem_type], pat);
 	}
 
-	err = xe_force_wake_put(gt_to_fw(gt), XE_FW_GT);
 err_fw:
 	xe_assert(xe, !err);
+	xe_assert(xe, !xe_force_wake_put(gt_to_fw(gt), XE_FW_GT));
 }
 
 static const struct xe_pat_ops xehp_pat_ops = {
@@ -250,9 +250,9 @@ static void xehpc_dump(struct xe_gt *gt, struct drm_printer *p)
 			   REG_FIELD_GET(XEHPC_CLOS_LEVEL_MASK, pat), pat);
 	}
 
-	err = xe_force_wake_put(gt_to_fw(gt), XE_FW_GT);
 err_fw:
 	xe_assert(xe, !err);
+	xe_assert(xe, !xe_force_wake_put(gt_to_fw(gt), XE_FW_GT));
 }
 
 static const struct xe_pat_ops xehpc_pat_ops = {
@@ -284,9 +284,9 @@ static void xelpg_dump(struct xe_gt *gt, struct drm_printer *p)
 			   REG_FIELD_GET(XELPG_INDEX_COH_MODE_MASK, pat), pat);
 	}
 
-	err = xe_force_wake_put(gt_to_fw(gt), XE_FW_GT);
 err_fw:
 	xe_assert(xe, !err);
+	xe_assert(xe, !xe_force_wake_put(gt_to_fw(gt), XE_FW_GT));
 }
 
 /*
@@ -366,9 +366,9 @@ static void xe2_dump(struct xe_gt *gt, struct drm_printer *p)
 		   REG_FIELD_GET(XE2_COH_MODE, pat),
 		   pat);
 
-	err = xe_force_wake_put(gt_to_fw(gt), XE_FW_GT);
 err_fw:
 	xe_assert(xe, !err);
+	xe_assert(xe, !xe_force_wake_put(gt_to_fw(gt), XE_FW_GT));
 }
 
 static const struct xe_pat_ops xe2_pat_ops = {
-- 
2.42.0


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

* [PATCH 3/9] drm/xe/xe_reg_sr: Always call xe_force_wake_put/get in pairs
  2024-06-04 11:02 [PATCH 0/9] Ensure xe_force_wake_put is always called after xe_force_wake_get Nirmoy Das
  2024-06-04 11:02 ` [PATCH 1/9] drm/xe/display: Always call xe_force_wake_put/get in pairs Nirmoy Das
  2024-06-04 11:02 ` [PATCH 2/9] drm/xe/pat: " Nirmoy Das
@ 2024-06-04 11:02 ` Nirmoy Das
  2024-06-04 13:12   ` Michal Wajdeczko
  2024-06-04 11:02 ` [PATCH 4/9] drm/xe/xe_gt: " Nirmoy Das
                   ` (14 subsequent siblings)
  17 siblings, 1 reply; 28+ messages in thread
From: Nirmoy Das @ 2024-06-04 11:02 UTC (permalink / raw)
  To: intel-xe; +Cc: Nirmoy Das

xe_force_wake_get() increments the domain ref regardless of success
or failure so call xe_force_wake_put() even on failure to keep ref
count accurate.

Signed-off-by: Nirmoy Das <nirmoy.das@intel.com>
---
 drivers/gpu/drm/xe/xe_reg_sr.c | 20 ++++++++------------
 1 file changed, 8 insertions(+), 12 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_reg_sr.c b/drivers/gpu/drm/xe/xe_reg_sr.c
index 440ac572f6e5..8fcc08658d89 100644
--- a/drivers/gpu/drm/xe/xe_reg_sr.c
+++ b/drivers/gpu/drm/xe/xe_reg_sr.c
@@ -201,13 +201,11 @@ void xe_reg_sr_apply_mmio(struct xe_reg_sr *sr, struct xe_gt *gt)
 	xa_for_each(&sr->xa, reg, entry)
 		apply_one_mmio(gt, entry);
 
-	err = xe_force_wake_put(&gt->mmio.fw, XE_FORCEWAKE_ALL);
-	XE_WARN_ON(err);
-
-	return;
-
 err_force_wake:
-	xe_gt_err(gt, "Failed to apply, err=%d\n", err);
+	if (err)
+		xe_gt_err(gt, "Failed to whitelist %s registers, err=%d\n",
+			  sr->name, err);
+	XE_WARN_ON(xe_force_wake_put(&gt->mmio.fw, XE_FORCEWAKE_ALL));
 }
 
 void xe_reg_sr_apply_whitelist(struct xe_hw_engine *hwe)
@@ -253,13 +251,11 @@ void xe_reg_sr_apply_whitelist(struct xe_hw_engine *hwe)
 		xe_mmio_write32(gt, RING_FORCE_TO_NONPRIV(mmio_base, slot), addr);
 	}
 
-	err = xe_force_wake_put(&gt->mmio.fw, XE_FORCEWAKE_ALL);
-	XE_WARN_ON(err);
-
-	return;
-
 err_force_wake:
-	drm_err(&xe->drm, "Failed to apply, err=%d\n", err);
+	if (err)
+		xe_gt_err(gt, "Failed to whitelist %s registers, err=%d\n",
+			  sr->name, err);
+	XE_WARN_ON(xe_force_wake_put(&gt->mmio.fw, XE_FORCEWAKE_ALL));
 }
 
 /**
-- 
2.42.0


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

* [PATCH 4/9] drm/xe/xe_gt: Always call xe_force_wake_put/get in pairs
  2024-06-04 11:02 [PATCH 0/9] Ensure xe_force_wake_put is always called after xe_force_wake_get Nirmoy Das
                   ` (2 preceding siblings ...)
  2024-06-04 11:02 ` [PATCH 3/9] drm/xe/xe_reg_sr: " Nirmoy Das
@ 2024-06-04 11:02 ` Nirmoy Das
  2024-06-04 11:02 ` [PATCH 5/9] drm/xe/uc: " Nirmoy Das
                   ` (13 subsequent siblings)
  17 siblings, 0 replies; 28+ messages in thread
From: Nirmoy Das @ 2024-06-04 11:02 UTC (permalink / raw)
  To: intel-xe; +Cc: Nirmoy Das

xe_force_wake_get() increments the domain ref regardless of success
or failure so call xe_force_wake_put() even on failure to keep ref
count accurate.

Signed-off-by: Nirmoy Das <nirmoy.das@intel.com>
---
 drivers/gpu/drm/xe/xe_gt.c         | 27 +++++++++++----------------
 drivers/gpu/drm/xe/xe_gt_debugfs.c | 10 ++++------
 2 files changed, 15 insertions(+), 22 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_gt.c b/drivers/gpu/drm/xe/xe_gt.c
index 4e11662b78bd..8c899e203c45 100644
--- a/drivers/gpu/drm/xe/xe_gt.c
+++ b/drivers/gpu/drm/xe/xe_gt.c
@@ -363,7 +363,7 @@ static int gt_fw_domain_init(struct xe_gt *gt)
 	if (!xe_gt_is_media_type(gt)) {
 		err = xe_ggtt_init(gt_to_tile(gt)->mem.ggtt);
 		if (err)
-			goto err_force_wake;
+			goto err_dump_pat;
 		if (IS_SRIOV_PF(gt_to_xe(gt)))
 			xe_lmtt_init(&gt_to_tile(gt)->sriov.pf.lmtt);
 	}
@@ -376,16 +376,16 @@ static int gt_fw_domain_init(struct xe_gt *gt)
 
 	err = xe_hw_engines_init_early(gt);
 	if (err)
-		goto err_force_wake;
+		goto err_dump_pat;
 
 	err = xe_hw_engine_class_sysfs_init(gt);
 	if (err)
-		goto err_force_wake;
+		goto err_dump_pat;
 
 	/* Initialize CCS mode sysfs after early initialization of HW engines */
 	err = xe_gt_ccs_mode_sysfs_init(gt);
 	if (err)
-		goto err_force_wake;
+		goto err_dump_pat;
 
 	/*
 	 * Stash hardware-reported version.  Since this register does not exist
@@ -398,10 +398,10 @@ static int gt_fw_domain_init(struct xe_gt *gt)
 
 	return 0;
 
-err_force_wake:
+err_dump_pat:
 	dump_pat_on_error(gt);
-	xe_force_wake_put(gt_to_fw(gt), XE_FW_GT);
 err_hw_fence_irq:
+	xe_force_wake_put(gt_to_fw(gt), XE_FW_GT);
 	for (i = 0; i < XE_ENGINE_CLASS_MAX; ++i)
 		xe_hw_fence_irq_finish(&gt->fence_irq[i]);
 
@@ -414,7 +414,7 @@ static int all_fw_domain_init(struct xe_gt *gt)
 
 	err = xe_force_wake_get(gt_to_fw(gt), XE_FORCEWAKE_ALL);
 	if (err)
-		goto err_hw_fence_irq;
+		goto err_force_wake;
 
 	xe_gt_mcr_set_implicit_defaults(gt);
 	xe_reg_sr_apply_mmio(&gt->reg_sr, gt);
@@ -485,7 +485,6 @@ static int all_fw_domain_init(struct xe_gt *gt)
 
 err_force_wake:
 	xe_force_wake_put(gt_to_fw(gt), XE_FORCEWAKE_ALL);
-err_hw_fence_irq:
 	for (i = 0; i < XE_ENGINE_CLASS_MAX; ++i)
 		xe_hw_fence_irq_finish(&gt->fence_irq[i]);
 
@@ -502,7 +501,7 @@ int xe_gt_init_hwconfig(struct xe_gt *gt)
 
 	err = xe_force_wake_get(gt_to_fw(gt), XE_FW_GT);
 	if (err)
-		goto out;
+		goto out_fw;
 
 	xe_gt_mcr_init_early(gt);
 	xe_pat_init(gt);
@@ -520,7 +519,6 @@ int xe_gt_init_hwconfig(struct xe_gt *gt)
 
 out_fw:
 	xe_force_wake_put(gt_to_fw(gt), XE_FW_GT);
-out:
 	return err;
 }
 
@@ -682,7 +680,7 @@ static int gt_reset(struct xe_gt *gt)
 
 	err = xe_force_wake_get(gt_to_fw(gt), XE_FORCEWAKE_ALL);
 	if (err)
-		goto err_msg;
+		goto err_out;
 
 	xe_uc_gucrc_disable(&gt->uc);
 	xe_uc_stop_prepare(&gt->uc);
@@ -710,7 +708,6 @@ static int gt_reset(struct xe_gt *gt)
 
 err_out:
 	XE_WARN_ON(xe_force_wake_put(gt_to_fw(gt), XE_FORCEWAKE_ALL));
-err_msg:
 	XE_WARN_ON(xe_uc_start(&gt->uc));
 	xe_pm_runtime_put(gt_to_xe(gt));
 err_fail:
@@ -758,7 +755,7 @@ int xe_gt_suspend(struct xe_gt *gt)
 
 	err = xe_force_wake_get(gt_to_fw(gt), XE_FORCEWAKE_ALL);
 	if (err)
-		goto err_msg;
+		goto err_force_wake;
 
 	err = xe_uc_suspend(&gt->uc);
 	if (err)
@@ -773,7 +770,6 @@ int xe_gt_suspend(struct xe_gt *gt)
 
 err_force_wake:
 	XE_WARN_ON(xe_force_wake_put(gt_to_fw(gt), XE_FORCEWAKE_ALL));
-err_msg:
 	xe_gt_err(gt, "suspend failed (%pe)\n", ERR_PTR(err));
 
 	return err;
@@ -786,7 +782,7 @@ int xe_gt_resume(struct xe_gt *gt)
 	xe_gt_dbg(gt, "resuming\n");
 	err = xe_force_wake_get(gt_to_fw(gt), XE_FORCEWAKE_ALL);
 	if (err)
-		goto err_msg;
+		goto err_force_wake;
 
 	err = do_gt_restart(gt);
 	if (err)
@@ -801,7 +797,6 @@ int xe_gt_resume(struct xe_gt *gt)
 
 err_force_wake:
 	XE_WARN_ON(xe_force_wake_put(gt_to_fw(gt), XE_FORCEWAKE_ALL));
-err_msg:
 	xe_gt_err(gt, "resume failed (%pe)\n", ERR_PTR(err));
 
 	return err;
diff --git a/drivers/gpu/drm/xe/xe_gt_debugfs.c b/drivers/gpu/drm/xe/xe_gt_debugfs.c
index 66f897a9b6ca..9d98818045a7 100644
--- a/drivers/gpu/drm/xe/xe_gt_debugfs.c
+++ b/drivers/gpu/drm/xe/xe_gt_debugfs.c
@@ -91,15 +91,13 @@ static int hw_engines(struct xe_gt *gt, struct drm_printer *p)
 
 	xe_pm_runtime_get(xe);
 	err = xe_force_wake_get(gt_to_fw(gt), XE_FORCEWAKE_ALL);
-	if (err) {
-		xe_pm_runtime_put(xe);
-		return err;
-	}
+	if (err)
+		goto err_out;
 
 	for_each_hw_engine(hwe, gt, id)
 		xe_hw_engine_print(hwe, p);
-
-	err = xe_force_wake_put(gt_to_fw(gt), XE_FORCEWAKE_ALL);
+err_out:
+	XE_WARN_ON(xe_force_wake_put(gt_to_fw(gt), XE_FORCEWAKE_ALL));
 	xe_pm_runtime_put(xe);
 	if (err)
 		return err;
-- 
2.42.0


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

* [PATCH 5/9] drm/xe/uc: Always call xe_force_wake_put/get in pairs
  2024-06-04 11:02 [PATCH 0/9] Ensure xe_force_wake_put is always called after xe_force_wake_get Nirmoy Das
                   ` (3 preceding siblings ...)
  2024-06-04 11:02 ` [PATCH 4/9] drm/xe/xe_gt: " Nirmoy Das
@ 2024-06-04 11:02 ` Nirmoy Das
  2024-06-04 11:02 ` [PATCH 6/9] drm/xe: Add xe_force_wake_tryget to simplify forcewake handling Nirmoy Das
                   ` (12 subsequent siblings)
  17 siblings, 0 replies; 28+ messages in thread
From: Nirmoy Das @ 2024-06-04 11:02 UTC (permalink / raw)
  To: intel-xe; +Cc: Nirmoy Das

xe_force_wake_get() increments the domain ref regardless of success
or failure so call xe_force_wake_put() even on failure to keep ref
count accurate.

Signed-off-by: Nirmoy Das <nirmoy.das@intel.com>
---
 drivers/gpu/drm/xe/xe_gsc_proxy.c | 3 +--
 drivers/gpu/drm/xe/xe_guc_pc.c    | 2 +-
 2 files changed, 2 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_gsc_proxy.c b/drivers/gpu/drm/xe/xe_gsc_proxy.c
index aa812a2bc3ed..56376c10ab86 100644
--- a/drivers/gpu/drm/xe/xe_gsc_proxy.c
+++ b/drivers/gpu/drm/xe/xe_gsc_proxy.c
@@ -493,8 +493,7 @@ void xe_gsc_proxy_remove(struct xe_gsc *gsc)
 	/* try do disable irq even if forcewake failed */
 	gsc_proxy_irq_toggle(gsc, false);
 
-	if (!err)
-		xe_force_wake_put(gt_to_fw(gt), XE_FW_GSC);
+	xe_force_wake_put(gt_to_fw(gt), XE_FW_GSC);
 	xe_pm_runtime_put(xe);
 
 	xe_gsc_wait_for_worker_completion(gsc);
diff --git a/drivers/gpu/drm/xe/xe_guc_pc.c b/drivers/gpu/drm/xe/xe_guc_pc.c
index 8187dfb2ad6c..ab207a11ac0f 100644
--- a/drivers/gpu/drm/xe/xe_guc_pc.c
+++ b/drivers/gpu/drm/xe/xe_guc_pc.c
@@ -468,7 +468,7 @@ int xe_guc_pc_get_min_freq(struct xe_guc_pc *pc, u32 *freq)
 	 */
 	ret = xe_force_wake_get(gt_to_fw(gt), XE_FORCEWAKE_ALL);
 	if (ret)
-		goto out;
+		goto fw;
 
 	ret = pc_action_query_task_state(pc);
 	if (ret)
-- 
2.42.0


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

* [PATCH 6/9] drm/xe: Add xe_force_wake_tryget to simplify forcewake handling
  2024-06-04 11:02 [PATCH 0/9] Ensure xe_force_wake_put is always called after xe_force_wake_get Nirmoy Das
                   ` (4 preceding siblings ...)
  2024-06-04 11:02 ` [PATCH 5/9] drm/xe/uc: " Nirmoy Das
@ 2024-06-04 11:02 ` Nirmoy Das
  2024-06-04 11:02 ` [PATCH 7/9] drm/xe: Use xe_force_wake_tryget when possible Nirmoy Das
                   ` (11 subsequent siblings)
  17 siblings, 0 replies; 28+ messages in thread
From: Nirmoy Das @ 2024-06-04 11:02 UTC (permalink / raw)
  To: intel-xe; +Cc: Nirmoy Das

Add xe_force_wake_tryget() a caller of xe_force_wake_get() would like
to skip early and not have to worry about undoing changes made by
xe_force_wake_get() on error.

Signed-off-by: Nirmoy Das <nirmoy.das@intel.com>
---
 drivers/gpu/drm/xe/xe_force_wake.c | 22 ++++++++++++++++++++++
 drivers/gpu/drm/xe/xe_force_wake.h |  2 ++
 2 files changed, 24 insertions(+)

diff --git a/drivers/gpu/drm/xe/xe_force_wake.c b/drivers/gpu/drm/xe/xe_force_wake.c
index 9bbe8a5040da..9eef4ebaeccc 100644
--- a/drivers/gpu/drm/xe/xe_force_wake.c
+++ b/drivers/gpu/drm/xe/xe_force_wake.c
@@ -197,3 +197,25 @@ int xe_force_wake_put(struct xe_force_wake *fw,
 
 	return ret2;
 }
+
+/**
+ * xe_force_wake_tryget - Attempt to wake up the specified force wake domains
+ * @fw: Pointer to the force wake structure
+ * @domains: Bitmask representing the domains to be woken up
+ *
+ * This function attempts to wake up the specified domains by calling
+ * xe_force_wake_get(). If xe_force_wake_get() fails, it calls xe_force_wake_put()
+ * to revert any partial changes and ensure system stability.
+ *
+ * Return: 0 on success, non-zero on failure, indicating one or more domains failed to wake up.
+ */
+int __must_check xe_force_wake_tryget(struct xe_force_wake *fw,
+				      enum xe_force_wake_domains domains)
+{
+	int ret = xe_force_wake_get(fw, domains);
+
+	if (ret)
+		xe_force_wake_put(fw, domains);
+
+	return ret;
+}
diff --git a/drivers/gpu/drm/xe/xe_force_wake.h b/drivers/gpu/drm/xe/xe_force_wake.h
index 83cb157da7cc..3f918a09f029 100644
--- a/drivers/gpu/drm/xe/xe_force_wake.h
+++ b/drivers/gpu/drm/xe/xe_force_wake.h
@@ -17,6 +17,8 @@ void xe_force_wake_init_engines(struct xe_gt *gt,
 				struct xe_force_wake *fw);
 int xe_force_wake_get(struct xe_force_wake *fw,
 		      enum xe_force_wake_domains domains);
+int __must_check xe_force_wake_tryget(struct xe_force_wake *fw,
+				      enum xe_force_wake_domains domains);
 int xe_force_wake_put(struct xe_force_wake *fw,
 		      enum xe_force_wake_domains domains);
 
-- 
2.42.0


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

* [PATCH 7/9] drm/xe: Use xe_force_wake_tryget when possible
  2024-06-04 11:02 [PATCH 0/9] Ensure xe_force_wake_put is always called after xe_force_wake_get Nirmoy Das
                   ` (5 preceding siblings ...)
  2024-06-04 11:02 ` [PATCH 6/9] drm/xe: Add xe_force_wake_tryget to simplify forcewake handling Nirmoy Das
@ 2024-06-04 11:02 ` Nirmoy Das
  2024-06-04 11:02 ` [PATCH 8/9] drm/xe/client: Check return value of xe_force_wake_get Nirmoy Das
                   ` (10 subsequent siblings)
  17 siblings, 0 replies; 28+ messages in thread
From: Nirmoy Das @ 2024-06-04 11:02 UTC (permalink / raw)
  To: intel-xe; +Cc: Nirmoy Das

xe_force_wake_get() increments the domain ref regardless of success
or failure so call xe_force_wake_tryget() to ensure xe_force_wake_put
is called even on failure to keep ref count value accurate.

Signed-off-by: Nirmoy Das <nirmoy.das@intel.com>
---
 drivers/gpu/drm/xe/xe_device.c | 4 ++--
 drivers/gpu/drm/xe/xe_guc.c    | 2 +-
 drivers/gpu/drm/xe/xe_guc_pc.c | 6 +++---
 drivers/gpu/drm/xe/xe_huc.c    | 2 +-
 drivers/gpu/drm/xe/xe_query.c  | 2 +-
 drivers/gpu/drm/xe/xe_vram.c   | 2 +-
 6 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/xe_device.c
index 94dbfe5cf19c..0ff57b3dd0c1 100644
--- a/drivers/gpu/drm/xe/xe_device.c
+++ b/drivers/gpu/drm/xe/xe_device.c
@@ -527,7 +527,7 @@ static int xe_device_set_has_flat_ccs(struct  xe_device *xe)
 
 	struct xe_gt *gt = xe_root_mmio_gt(xe);
 
-	err = xe_force_wake_get(gt_to_fw(gt), XE_FW_GT);
+	err = xe_force_wake_tryget(gt_to_fw(gt), XE_FW_GT);
 	if (err)
 		return err;
 
@@ -756,7 +756,7 @@ void xe_device_td_flush(struct xe_device *xe)
 		if (xe_gt_is_media_type(gt))
 			continue;
 
-		if (xe_force_wake_get(gt_to_fw(gt), XE_FW_GT))
+		if (xe_force_wake_tryget(gt_to_fw(gt), XE_FW_GT))
 			return;
 
 		xe_mmio_write32(gt, XE2_TDF_CTRL, TRANSIENT_FLUSH_REQUEST);
diff --git a/drivers/gpu/drm/xe/xe_guc.c b/drivers/gpu/drm/xe/xe_guc.c
index 086a048876ba..728a20aa0700 100644
--- a/drivers/gpu/drm/xe/xe_guc.c
+++ b/drivers/gpu/drm/xe/xe_guc.c
@@ -1137,7 +1137,7 @@ void xe_guc_print_info(struct xe_guc *guc, struct drm_printer *p)
 
 	xe_uc_fw_print(&guc->fw, p);
 
-	err = xe_force_wake_get(gt_to_fw(gt), XE_FW_GT);
+	err = xe_force_wake_tryget(gt_to_fw(gt), XE_FW_GT);
 	if (err)
 		return;
 
diff --git a/drivers/gpu/drm/xe/xe_guc_pc.c b/drivers/gpu/drm/xe/xe_guc_pc.c
index ab207a11ac0f..09962634e519 100644
--- a/drivers/gpu/drm/xe/xe_guc_pc.c
+++ b/drivers/gpu/drm/xe/xe_guc_pc.c
@@ -394,7 +394,7 @@ int xe_guc_pc_get_cur_freq(struct xe_guc_pc *pc, u32 *freq)
 	 * GuC SLPC plays with cur freq request when GuCRC is enabled
 	 * Block RC6 for a more reliable read.
 	 */
-	ret = xe_force_wake_get(gt_to_fw(gt), XE_FORCEWAKE_ALL);
+	ret = xe_force_wake_tryget(gt_to_fw(gt), XE_FORCEWAKE_ALL);
 	if (ret)
 		return ret;
 
@@ -762,7 +762,7 @@ int xe_guc_pc_gucrc_disable(struct xe_guc_pc *pc)
 	if (ret)
 		return ret;
 
-	ret = xe_force_wake_get(gt_to_fw(gt), XE_FORCEWAKE_ALL);
+	ret = xe_force_wake_tryget(gt_to_fw(gt), XE_FORCEWAKE_ALL);
 	if (ret)
 		return ret;
 
@@ -823,7 +823,7 @@ int xe_guc_pc_start(struct xe_guc_pc *pc)
 
 	xe_gt_assert(gt, xe_device_uc_enabled(xe));
 
-	ret = xe_force_wake_get(gt_to_fw(gt), XE_FORCEWAKE_ALL);
+	ret = xe_force_wake_tryget(gt_to_fw(gt), XE_FORCEWAKE_ALL);
 	if (ret)
 		return ret;
 
diff --git a/drivers/gpu/drm/xe/xe_huc.c b/drivers/gpu/drm/xe/xe_huc.c
index b039ff49341b..1d300eea97da 100644
--- a/drivers/gpu/drm/xe/xe_huc.c
+++ b/drivers/gpu/drm/xe/xe_huc.c
@@ -310,7 +310,7 @@ void xe_huc_print_info(struct xe_huc *huc, struct drm_printer *p)
 	if (!xe_uc_fw_is_enabled(&huc->fw))
 		return;
 
-	err = xe_force_wake_get(gt_to_fw(gt), XE_FW_GT);
+	err = xe_force_wake_tryget(gt_to_fw(gt), XE_FW_GT);
 	if (err)
 		return;
 
diff --git a/drivers/gpu/drm/xe/xe_query.c b/drivers/gpu/drm/xe/xe_query.c
index 995effcb904b..55253b0e6490 100644
--- a/drivers/gpu/drm/xe/xe_query.c
+++ b/drivers/gpu/drm/xe/xe_query.c
@@ -149,7 +149,7 @@ query_engine_cycles(struct xe_device *xe,
 	if (!hwe)
 		return -EINVAL;
 
-	if (xe_force_wake_get(gt_to_fw(gt), XE_FORCEWAKE_ALL))
+	if (xe_force_wake_tryget(gt_to_fw(gt), XE_FORCEWAKE_ALL))
 		return -EIO;
 
 	__read_timestamps(gt,
diff --git a/drivers/gpu/drm/xe/xe_vram.c b/drivers/gpu/drm/xe/xe_vram.c
index 5bcd59190353..5cf8ac8025ef 100644
--- a/drivers/gpu/drm/xe/xe_vram.c
+++ b/drivers/gpu/drm/xe/xe_vram.c
@@ -238,7 +238,7 @@ static int tile_vram_size(struct xe_tile *tile, u64 *vram_size,
 		return 0;
 	}
 
-	err = xe_force_wake_get(gt_to_fw(gt), XE_FW_GT);
+	err = xe_force_wake_tryget(gt_to_fw(gt), XE_FW_GT);
 	if (err)
 		return err;
 
-- 
2.42.0


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

* [PATCH 8/9] drm/xe/client: Check return value of xe_force_wake_get
  2024-06-04 11:02 [PATCH 0/9] Ensure xe_force_wake_put is always called after xe_force_wake_get Nirmoy Das
                   ` (6 preceding siblings ...)
  2024-06-04 11:02 ` [PATCH 7/9] drm/xe: Use xe_force_wake_tryget when possible Nirmoy Das
@ 2024-06-04 11:02 ` Nirmoy Das
  2024-06-04 11:02 ` [PATCH 9/9] drm/xe: Add __must_check for xe_force_wake_get Nirmoy Das
                   ` (9 subsequent siblings)
  17 siblings, 0 replies; 28+ messages in thread
From: Nirmoy Das @ 2024-06-04 11:02 UTC (permalink / raw)
  To: intel-xe; +Cc: Nirmoy Das, Himal Prasad Ghimiray, Lucas De Marchi, Rodrigo Vivi

xe_force_wake_get() can return error so check it's return value
before reading gpu_timestamp value.

v3: Do not skip xe_force_wake_put(Himal)
v2: set HWE to NULL instead of setting timestamp to 0(Lucas)
    Add a warn on for xe_force_wake_put(Himal)

Fixes: 188ced1e0ff8 ("drm/xe/client: Print runtime to fdinfo")
Cc: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Cc: Lucas De Marchi <lucas.demarchi@intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Signed-off-by: Nirmoy Das <nirmoy.das@intel.com>
---
 drivers/gpu/drm/xe/xe_drm_client.c | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_drm_client.c b/drivers/gpu/drm/xe/xe_drm_client.c
index 4a19b771e3a0..0d6c7b813af4 100644
--- a/drivers/gpu/drm/xe/xe_drm_client.c
+++ b/drivers/gpu/drm/xe/xe_drm_client.c
@@ -264,9 +264,13 @@ static void show_run_ticks(struct drm_printer *p, struct drm_file *file)
 		if (!hwe)
 			continue;
 
-		xe_force_wake_get(gt_to_fw(gt), XE_FW_GT);
-		gpu_timestamp = xe_hw_engine_read_timestamp(hwe);
-		xe_force_wake_put(gt_to_fw(gt), XE_FW_GT);
+		if (xe_force_wake_get(gt_to_fw(gt), XE_FW_GT))
+			hwe = NULL;
+
+		if (hwe)
+			gpu_timestamp = xe_hw_engine_read_timestamp(hwe);
+
+		XE_WARN_ON(xe_force_wake_put(gt_to_fw(gt), XE_FW_GT));
 		break;
 	}
 
-- 
2.42.0


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

* [PATCH 9/9] drm/xe: Add __must_check for xe_force_wake_get
  2024-06-04 11:02 [PATCH 0/9] Ensure xe_force_wake_put is always called after xe_force_wake_get Nirmoy Das
                   ` (7 preceding siblings ...)
  2024-06-04 11:02 ` [PATCH 8/9] drm/xe/client: Check return value of xe_force_wake_get Nirmoy Das
@ 2024-06-04 11:02 ` Nirmoy Das
  2024-06-04 20:49 ` [PATCH 0/9] Ensure xe_force_wake_put is always called after xe_force_wake_get Lucas De Marchi
                   ` (8 subsequent siblings)
  17 siblings, 0 replies; 28+ messages in thread
From: Nirmoy Das @ 2024-06-04 11:02 UTC (permalink / raw)
  To: intel-xe; +Cc: Nirmoy Das

Return value of xe_force_wake_get()  should not be ignored. So add
a __must_check attribute. Also add documentation for all related functions.

Signed-off-by: Nirmoy Das <nirmoy.das@intel.com>
---
 drivers/gpu/drm/xe/xe_force_wake.c | 27 +++++++++++++++++++++++++--
 drivers/gpu/drm/xe/xe_force_wake.h |  4 ++--
 2 files changed, 27 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_force_wake.c b/drivers/gpu/drm/xe/xe_force_wake.c
index 9eef4ebaeccc..4d77f41fbf14 100644
--- a/drivers/gpu/drm/xe/xe_force_wake.c
+++ b/drivers/gpu/drm/xe/xe_force_wake.c
@@ -138,8 +138,20 @@ static int domain_sleep_wait(struct xe_gt *gt,
 					 (ffs(tmp__) - 1))) && \
 					 domain__->reg_ctl.addr)
 
-int xe_force_wake_get(struct xe_force_wake *fw,
-		      enum xe_force_wake_domains domains)
+/**
+ * xe_force_wake_get - Wake up the specified force wake domains if any are asleep
+ * @fw: Pointer to the force wake structure
+ * @domains: Bitmask representing the domains to be woken up
+ *
+ * This function ensures that the required domains are active and increments the
+ * reference count for each domain specified. If a domain was not previously active,
+ * it will be woken up. Logs an error message if any domain fails to acknowledge the
+ * wake-up request.
+ *
+ * Return: 0 on success, non-zero on failure.
+ */
+int __must_check xe_force_wake_get(struct xe_force_wake *fw,
+				   enum xe_force_wake_domains domains)
 {
 	struct xe_device *xe = fw_to_xe(fw);
 	struct xe_gt *gt = fw_to_gt(fw);
@@ -168,6 +180,17 @@ int xe_force_wake_get(struct xe_force_wake *fw,
 	return ret2;
 }
 
+/**
+ * xe_force_wake_put - Put the specified force wake domains to sleep when ref count becomes 0
+ * @fw: Pointer to the force wake structure
+ * @domains: Bitmask representing the domains to be put to sleep
+ *
+ * This function decrements the reference count for each domain specified. If a
+ * domain's reference count reaches zero, it will be put to sleep. Logs an error
+ * message if any domain fails to acknowledge the sleep request.
+ *
+ * Return: 0 on success, non-zero on failure.
+ */
 int xe_force_wake_put(struct xe_force_wake *fw,
 		      enum xe_force_wake_domains domains)
 {
diff --git a/drivers/gpu/drm/xe/xe_force_wake.h b/drivers/gpu/drm/xe/xe_force_wake.h
index 3f918a09f029..90948bf0054f 100644
--- a/drivers/gpu/drm/xe/xe_force_wake.h
+++ b/drivers/gpu/drm/xe/xe_force_wake.h
@@ -15,8 +15,8 @@ void xe_force_wake_init_gt(struct xe_gt *gt,
 			   struct xe_force_wake *fw);
 void xe_force_wake_init_engines(struct xe_gt *gt,
 				struct xe_force_wake *fw);
-int xe_force_wake_get(struct xe_force_wake *fw,
-		      enum xe_force_wake_domains domains);
+int __must_check xe_force_wake_get(struct xe_force_wake *fw,
+				   enum xe_force_wake_domains domains);
 int __must_check xe_force_wake_tryget(struct xe_force_wake *fw,
 				      enum xe_force_wake_domains domains);
 int xe_force_wake_put(struct xe_force_wake *fw,
-- 
2.42.0


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

* Re: [PATCH 1/9] drm/xe/display: Always call xe_force_wake_put/get in pairs
  2024-06-04 11:02 ` [PATCH 1/9] drm/xe/display: Always call xe_force_wake_put/get in pairs Nirmoy Das
@ 2024-06-04 11:41   ` Ghimiray, Himal Prasad
  0 siblings, 0 replies; 28+ messages in thread
From: Ghimiray, Himal Prasad @ 2024-06-04 11:41 UTC (permalink / raw)
  To: Nirmoy Das, intel-xe



On 04-06-2024 16:32, Nirmoy Das wrote:
> xe_force_wake_get() increments the domain ref regardless of success or
> failure so call xe_force_wake_put() even on failure to keep ref count
> accurate.
> 
> Signed-off-by: Nirmoy Das <nirmoy.das@intel.com>
> ---
>   drivers/gpu/drm/xe/display/xe_hdcp_gsc.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c b/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c
> index 14b8b4278317..6cd82ef495c2 100644
> --- a/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c
> +++ b/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c
> @@ -56,8 +56,8 @@ bool intel_hdcp_gsc_check_status(struct xe_device *xe)
>   	if (!xe_gsc_proxy_init_done(&gt->uc.gsc))
>   		ret = false;
>   
> -	xe_force_wake_put(gt_to_fw(gt), XE_FW_GSC);
>   out:
> +	xe_force_wake_put(gt_to_fw(gt), XE_FW_GSC);

LGTM.
Reviewed-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>

>   	xe_pm_runtime_put(xe);
>   	return ret;
>   }

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

* Re: [PATCH 2/9] drm/xe/pat: Always call xe_force_wake_put/get in pairs
  2024-06-04 11:02 ` [PATCH 2/9] drm/xe/pat: " Nirmoy Das
@ 2024-06-04 12:54   ` Michal Wajdeczko
  2024-06-04 13:06     ` Nirmoy Das
  0 siblings, 1 reply; 28+ messages in thread
From: Michal Wajdeczko @ 2024-06-04 12:54 UTC (permalink / raw)
  To: Nirmoy Das, intel-xe



On 04.06.2024 13:02, Nirmoy Das wrote:
> xe_force_wake_get() increments the domain ref regardless of success
> or failure so call xe_force_wake_put() even on failure to keep ref
> count accurate.
> 
> Signed-off-by: Nirmoy Das <nirmoy.das@intel.com>
> ---
>  drivers/gpu/drm/xe/xe_pat.c | 10 +++++-----
>  1 file changed, 5 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/gpu/drm/xe/xe_pat.c b/drivers/gpu/drm/xe/xe_pat.c
> index 4ee32ee1cc88..a5bdf4de845c 100644
> --- a/drivers/gpu/drm/xe/xe_pat.c
> +++ b/drivers/gpu/drm/xe/xe_pat.c
> @@ -190,9 +190,9 @@ static void xelp_dump(struct xe_gt *gt, struct drm_printer *p)
>  			   XELP_MEM_TYPE_STR_MAP[mem_type], pat);
>  	}
>  
> -	err = xe_force_wake_put(gt_to_fw(gt), XE_FW_GT);
>  err_fw:
>  	xe_assert(xe, !err);
> +	xe_assert(xe, !xe_force_wake_put(gt_to_fw(gt), XE_FW_GT));

this is wrong as xe_assert() will be compiled out on the production
builds, see [1]

[1]
https://www.kernel.org/doc/html/latest/gpu/xe/xe_debugging.html?highlight=xe_assert#debugging

>  }
>  
>  static const struct xe_pat_ops xelp_pat_ops = {
> @@ -221,9 +221,9 @@ static void xehp_dump(struct xe_gt *gt, struct drm_printer *p)
>  			   XELP_MEM_TYPE_STR_MAP[mem_type], pat);
>  	}
>  
> -	err = xe_force_wake_put(gt_to_fw(gt), XE_FW_GT);
>  err_fw:
>  	xe_assert(xe, !err);
> +	xe_assert(xe, !xe_force_wake_put(gt_to_fw(gt), XE_FW_GT));
>  }
>  
>  static const struct xe_pat_ops xehp_pat_ops = {
> @@ -250,9 +250,9 @@ static void xehpc_dump(struct xe_gt *gt, struct drm_printer *p)
>  			   REG_FIELD_GET(XEHPC_CLOS_LEVEL_MASK, pat), pat);
>  	}
>  
> -	err = xe_force_wake_put(gt_to_fw(gt), XE_FW_GT);
>  err_fw:
>  	xe_assert(xe, !err);
> +	xe_assert(xe, !xe_force_wake_put(gt_to_fw(gt), XE_FW_GT));
>  }
>  
>  static const struct xe_pat_ops xehpc_pat_ops = {
> @@ -284,9 +284,9 @@ static void xelpg_dump(struct xe_gt *gt, struct drm_printer *p)
>  			   REG_FIELD_GET(XELPG_INDEX_COH_MODE_MASK, pat), pat);
>  	}
>  
> -	err = xe_force_wake_put(gt_to_fw(gt), XE_FW_GT);
>  err_fw:
>  	xe_assert(xe, !err);
> +	xe_assert(xe, !xe_force_wake_put(gt_to_fw(gt), XE_FW_GT));
>  }
>  
>  /*
> @@ -366,9 +366,9 @@ static void xe2_dump(struct xe_gt *gt, struct drm_printer *p)
>  		   REG_FIELD_GET(XE2_COH_MODE, pat),
>  		   pat);
>  
> -	err = xe_force_wake_put(gt_to_fw(gt), XE_FW_GT);
>  err_fw:
>  	xe_assert(xe, !err);
> +	xe_assert(xe, !xe_force_wake_put(gt_to_fw(gt), XE_FW_GT));
>  }
>  
>  static const struct xe_pat_ops xe2_pat_ops = {

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

* Re: [PATCH 2/9] drm/xe/pat: Always call xe_force_wake_put/get in pairs
  2024-06-04 12:54   ` Michal Wajdeczko
@ 2024-06-04 13:06     ` Nirmoy Das
  0 siblings, 0 replies; 28+ messages in thread
From: Nirmoy Das @ 2024-06-04 13:06 UTC (permalink / raw)
  To: Michal Wajdeczko, Nirmoy Das, intel-xe

Hi Michal,

On 6/4/2024 2:54 PM, Michal Wajdeczko wrote:
>
> On 04.06.2024 13:02, Nirmoy Das wrote:
>> xe_force_wake_get() increments the domain ref regardless of success
>> or failure so call xe_force_wake_put() even on failure to keep ref
>> count accurate.
>>
>> Signed-off-by: Nirmoy Das <nirmoy.das@intel.com>
>> ---
>>   drivers/gpu/drm/xe/xe_pat.c | 10 +++++-----
>>   1 file changed, 5 insertions(+), 5 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/xe/xe_pat.c b/drivers/gpu/drm/xe/xe_pat.c
>> index 4ee32ee1cc88..a5bdf4de845c 100644
>> --- a/drivers/gpu/drm/xe/xe_pat.c
>> +++ b/drivers/gpu/drm/xe/xe_pat.c
>> @@ -190,9 +190,9 @@ static void xelp_dump(struct xe_gt *gt, struct drm_printer *p)
>>   			   XELP_MEM_TYPE_STR_MAP[mem_type], pat);
>>   	}
>>   
>> -	err = xe_force_wake_put(gt_to_fw(gt), XE_FW_GT);
>>   err_fw:
>>   	xe_assert(xe, !err);
>> +	xe_assert(xe, !xe_force_wake_put(gt_to_fw(gt), XE_FW_GT));
> this is wrong as xe_assert() will be compiled out on the production
> builds, see [1]
>
> [1]
> https://www.kernel.org/doc/html/latest/gpu/xe/xe_debugging.html?highlight=xe_assert#debugging

Ah, yes! thanks for catching this.


Regards,

Nirmoy

>
>>   }
>>   
>>   static const struct xe_pat_ops xelp_pat_ops = {
>> @@ -221,9 +221,9 @@ static void xehp_dump(struct xe_gt *gt, struct drm_printer *p)
>>   			   XELP_MEM_TYPE_STR_MAP[mem_type], pat);
>>   	}
>>   
>> -	err = xe_force_wake_put(gt_to_fw(gt), XE_FW_GT);
>>   err_fw:
>>   	xe_assert(xe, !err);
>> +	xe_assert(xe, !xe_force_wake_put(gt_to_fw(gt), XE_FW_GT));
>>   }
>>   
>>   static const struct xe_pat_ops xehp_pat_ops = {
>> @@ -250,9 +250,9 @@ static void xehpc_dump(struct xe_gt *gt, struct drm_printer *p)
>>   			   REG_FIELD_GET(XEHPC_CLOS_LEVEL_MASK, pat), pat);
>>   	}
>>   
>> -	err = xe_force_wake_put(gt_to_fw(gt), XE_FW_GT);
>>   err_fw:
>>   	xe_assert(xe, !err);
>> +	xe_assert(xe, !xe_force_wake_put(gt_to_fw(gt), XE_FW_GT));
>>   }
>>   
>>   static const struct xe_pat_ops xehpc_pat_ops = {
>> @@ -284,9 +284,9 @@ static void xelpg_dump(struct xe_gt *gt, struct drm_printer *p)
>>   			   REG_FIELD_GET(XELPG_INDEX_COH_MODE_MASK, pat), pat);
>>   	}
>>   
>> -	err = xe_force_wake_put(gt_to_fw(gt), XE_FW_GT);
>>   err_fw:
>>   	xe_assert(xe, !err);
>> +	xe_assert(xe, !xe_force_wake_put(gt_to_fw(gt), XE_FW_GT));
>>   }
>>   
>>   /*
>> @@ -366,9 +366,9 @@ static void xe2_dump(struct xe_gt *gt, struct drm_printer *p)
>>   		   REG_FIELD_GET(XE2_COH_MODE, pat),
>>   		   pat);
>>   
>> -	err = xe_force_wake_put(gt_to_fw(gt), XE_FW_GT);
>>   err_fw:
>>   	xe_assert(xe, !err);
>> +	xe_assert(xe, !xe_force_wake_put(gt_to_fw(gt), XE_FW_GT));
>>   }
>>   
>>   static const struct xe_pat_ops xe2_pat_ops = {

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

* Re: [PATCH 3/9] drm/xe/xe_reg_sr: Always call xe_force_wake_put/get in pairs
  2024-06-04 11:02 ` [PATCH 3/9] drm/xe/xe_reg_sr: " Nirmoy Das
@ 2024-06-04 13:12   ` Michal Wajdeczko
  2024-06-04 14:21     ` Nirmoy Das
  0 siblings, 1 reply; 28+ messages in thread
From: Michal Wajdeczko @ 2024-06-04 13:12 UTC (permalink / raw)
  To: Nirmoy Das, intel-xe, Rodrigo Vivi



On 04.06.2024 13:02, Nirmoy Das wrote:
> xe_force_wake_get() increments the domain ref regardless of success
> or failure so call xe_force_wake_put() even on failure to keep ref
> count accurate.
> 
> Signed-off-by: Nirmoy Das <nirmoy.das@intel.com>
> ---
>  drivers/gpu/drm/xe/xe_reg_sr.c | 20 ++++++++------------
>  1 file changed, 8 insertions(+), 12 deletions(-)
> 
> diff --git a/drivers/gpu/drm/xe/xe_reg_sr.c b/drivers/gpu/drm/xe/xe_reg_sr.c
> index 440ac572f6e5..8fcc08658d89 100644
> --- a/drivers/gpu/drm/xe/xe_reg_sr.c
> +++ b/drivers/gpu/drm/xe/xe_reg_sr.c
> @@ -201,13 +201,11 @@ void xe_reg_sr_apply_mmio(struct xe_reg_sr *sr, struct xe_gt *gt)
>  	xa_for_each(&sr->xa, reg, entry)
>  		apply_one_mmio(gt, entry);
>  
> -	err = xe_force_wake_put(&gt->mmio.fw, XE_FORCEWAKE_ALL);
> -	XE_WARN_ON(err);
> -
> -	return;
> -
>  err_force_wake:
> -	xe_gt_err(gt, "Failed to apply, err=%d\n", err);
> +	if (err)
> +		xe_gt_err(gt, "Failed to whitelist %s registers, err=%d\n",
> +			  sr->name, err);
> +	XE_WARN_ON(xe_force_wake_put(&gt->mmio.fw, XE_FORCEWAKE_ALL));

what's the rule whether to WARN about the failed xe_force_wake_put() or
not ? should we also WARN when xe_force_wake_get() failed ? does it make
sense to WARN about put() if get() already failed ?

maybe simpler solution would be make function xe_force_wake_put() void
as it almost nothing that caller can do and move WARN there if needed ?

what about making the flow more intuitive like this:

bool xe_force_wake_get(fw, d);
void xe_force_wake_put(fw, d);

	if (xe_force_wake_get(fw, d)) {
		...
		xe_force_wake_put(fw, d);
	}

>  }
>  
>  void xe_reg_sr_apply_whitelist(struct xe_hw_engine *hwe)
> @@ -253,13 +251,11 @@ void xe_reg_sr_apply_whitelist(struct xe_hw_engine *hwe)
>  		xe_mmio_write32(gt, RING_FORCE_TO_NONPRIV(mmio_base, slot), addr);
>  	}
>  
> -	err = xe_force_wake_put(&gt->mmio.fw, XE_FORCEWAKE_ALL);
> -	XE_WARN_ON(err);
> -
> -	return;
> -
>  err_force_wake:
> -	drm_err(&xe->drm, "Failed to apply, err=%d\n", err);
> +	if (err)
> +		xe_gt_err(gt, "Failed to whitelist %s registers, err=%d\n",
> +			  sr->name, err);
> +	XE_WARN_ON(xe_force_wake_put(&gt->mmio.fw, XE_FORCEWAKE_ALL));
>  }
>  
>  /**

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

* Re: [PATCH 3/9] drm/xe/xe_reg_sr: Always call xe_force_wake_put/get in pairs
  2024-06-04 13:12   ` Michal Wajdeczko
@ 2024-06-04 14:21     ` Nirmoy Das
  2024-06-04 21:13       ` Lucas De Marchi
  0 siblings, 1 reply; 28+ messages in thread
From: Nirmoy Das @ 2024-06-04 14:21 UTC (permalink / raw)
  To: Michal Wajdeczko, Nirmoy Das, intel-xe, Rodrigo Vivi

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

Hi Michal,

On 6/4/2024 3:12 PM, Michal Wajdeczko wrote:
>
> On 04.06.2024 13:02, Nirmoy Das wrote:
>> xe_force_wake_get() increments the domain ref regardless of success
>> or failure so call xe_force_wake_put() even on failure to keep ref
>> count accurate.
>>
>> Signed-off-by: Nirmoy Das<nirmoy.das@intel.com>
>> ---
>>   drivers/gpu/drm/xe/xe_reg_sr.c | 20 ++++++++------------
>>   1 file changed, 8 insertions(+), 12 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/xe/xe_reg_sr.c b/drivers/gpu/drm/xe/xe_reg_sr.c
>> index 440ac572f6e5..8fcc08658d89 100644
>> --- a/drivers/gpu/drm/xe/xe_reg_sr.c
>> +++ b/drivers/gpu/drm/xe/xe_reg_sr.c
>> @@ -201,13 +201,11 @@ void xe_reg_sr_apply_mmio(struct xe_reg_sr *sr, struct xe_gt *gt)
>>   	xa_for_each(&sr->xa, reg, entry)
>>   		apply_one_mmio(gt, entry);
>>   
>> -	err = xe_force_wake_put(&gt->mmio.fw, XE_FORCEWAKE_ALL);
>> -	XE_WARN_ON(err);
>> -
>> -	return;
>> -
>>   err_force_wake:
>> -	xe_gt_err(gt, "Failed to apply, err=%d\n", err);
>> +	if (err)
>> +		xe_gt_err(gt, "Failed to whitelist %s registers, err=%d\n",
>> +			  sr->name, err);
>> +	XE_WARN_ON(xe_force_wake_put(&gt->mmio.fw, XE_FORCEWAKE_ALL));
> what's the rule whether to WARN about the failed xe_force_wake_put() or
> not ? should we also WARN when xe_force_wake_get() failed ? does it make
> sense to WARN about put() if get() already failed ?
We don't have one yet.
>
> maybe simpler solution would be make function xe_force_wake_put() void
> as it almost nothing that caller can do and move WARN there if needed ?

We have code that  does "return xe_force_wake_put()" So question is what 
shall we do

if xe_force_wake_get() worked but subsequent xe_force_wake_put() fails ?

Regards,

Nirmoy

>
> what about making the flow more intuitive like this:
>
> bool xe_force_wake_get(fw, d);
> void xe_force_wake_put(fw, d);
>
> 	if (xe_force_wake_get(fw, d)) {
> 		...
> 		xe_force_wake_put(fw, d);
> 	}
>
>>   }
>>   
>>   void xe_reg_sr_apply_whitelist(struct xe_hw_engine *hwe)
>> @@ -253,13 +251,11 @@ void xe_reg_sr_apply_whitelist(struct xe_hw_engine *hwe)
>>   		xe_mmio_write32(gt, RING_FORCE_TO_NONPRIV(mmio_base, slot), addr);
>>   	}
>>   
>> -	err = xe_force_wake_put(&gt->mmio.fw, XE_FORCEWAKE_ALL);
>> -	XE_WARN_ON(err);
>> -
>> -	return;
>> -
>>   err_force_wake:
>> -	drm_err(&xe->drm, "Failed to apply, err=%d\n", err);
>> +	if (err)
>> +		xe_gt_err(gt, "Failed to whitelist %s registers, err=%d\n",
>> +			  sr->name, err);
>> +	XE_WARN_ON(xe_force_wake_put(&gt->mmio.fw, XE_FORCEWAKE_ALL));
>>   }
>>   
>>   /**

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

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

* Re: [PATCH 0/9] Ensure xe_force_wake_put is always called after xe_force_wake_get
  2024-06-04 11:02 [PATCH 0/9] Ensure xe_force_wake_put is always called after xe_force_wake_get Nirmoy Das
                   ` (8 preceding siblings ...)
  2024-06-04 11:02 ` [PATCH 9/9] drm/xe: Add __must_check for xe_force_wake_get Nirmoy Das
@ 2024-06-04 20:49 ` Lucas De Marchi
  2024-06-05  1:06 ` ✓ CI.Patch_applied: success for " Patchwork
                   ` (7 subsequent siblings)
  17 siblings, 0 replies; 28+ messages in thread
From: Lucas De Marchi @ 2024-06-04 20:49 UTC (permalink / raw)
  To: Nirmoy Das; +Cc: intel-xe, Himal Prasad Ghimiray, Matthew Brost, Rodrigo Vivi

On Tue, Jun 04, 2024 at 01:02:16PM GMT, Nirmoy Das wrote:
>Cuurently there is inconsistency how we handle force wake get and put
>calls. We have three cases:
>1 Return value of xe_force_wake_get is not checked.
>2 Return value of xe_force_wake_get is checked but continue.
>3 Return value of xe_force_wake_get is checked but the caller returns
>  without calling xe_force_wake_put.
>
>2nd case is perfectly valid but 1st and 3rd cases shouldn't happen. As
>xe_force_wake_get() will increment the ref count regardless of success
>or failure so xe_force_wake_get() should be followed by a
>xe_force_wake_put().

or rather xe_force_wake_get() should be fixed. Why does it increment the
refcount and at the same time return an error? 

Lucas De Marchi

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

* Re: [PATCH 3/9] drm/xe/xe_reg_sr: Always call xe_force_wake_put/get in pairs
  2024-06-04 14:21     ` Nirmoy Das
@ 2024-06-04 21:13       ` Lucas De Marchi
  2024-06-05 10:49         ` Nirmoy Das
  0 siblings, 1 reply; 28+ messages in thread
From: Lucas De Marchi @ 2024-06-04 21:13 UTC (permalink / raw)
  To: Nirmoy Das; +Cc: Michal Wajdeczko, Nirmoy Das, intel-xe, Rodrigo Vivi

On Tue, Jun 04, 2024 at 04:21:25PM GMT, Nirmoy Das wrote:
>Hi Michal,
>
>On 6/4/2024 3:12 PM, Michal Wajdeczko wrote:
>>
>>On 04.06.2024 13:02, Nirmoy Das wrote:
>>>xe_force_wake_get() increments the domain ref regardless of success
>>>or failure so call xe_force_wake_put() even on failure to keep ref
>>>count accurate.
>>>
>>>Signed-off-by: Nirmoy Das<nirmoy.das@intel.com>
>>>---
>>>  drivers/gpu/drm/xe/xe_reg_sr.c | 20 ++++++++------------
>>>  1 file changed, 8 insertions(+), 12 deletions(-)
>>>
>>>diff --git a/drivers/gpu/drm/xe/xe_reg_sr.c b/drivers/gpu/drm/xe/xe_reg_sr.c
>>>index 440ac572f6e5..8fcc08658d89 100644
>>>--- a/drivers/gpu/drm/xe/xe_reg_sr.c
>>>+++ b/drivers/gpu/drm/xe/xe_reg_sr.c
>>>@@ -201,13 +201,11 @@ void xe_reg_sr_apply_mmio(struct xe_reg_sr *sr, struct xe_gt *gt)
>>>  	xa_for_each(&sr->xa, reg, entry)
>>>  		apply_one_mmio(gt, entry);
>>>-	err = xe_force_wake_put(&gt->mmio.fw, XE_FORCEWAKE_ALL);
>>>-	XE_WARN_ON(err);
>>>-
>>>-	return;
>>>-
>>>  err_force_wake:
>>>-	xe_gt_err(gt, "Failed to apply, err=%d\n", err);
>>>+	if (err)
>>>+		xe_gt_err(gt, "Failed to whitelist %s registers, err=%d\n",
>>>+			  sr->name, err);
>>>+	XE_WARN_ON(xe_force_wake_put(&gt->mmio.fw, XE_FORCEWAKE_ALL));
>>what's the rule whether to WARN about the failed xe_force_wake_put() or
>>not ? should we also WARN when xe_force_wake_get() failed ? does it make
>>sense to WARN about put() if get() already failed ?
>We don't have one yet.
>>
>>maybe simpler solution would be make function xe_force_wake_put() void
>>as it almost nothing that caller can do and move WARN there if needed ?
>
>We have code that  does "return xe_force_wake_put()" So question is 
>what shall we do
>
>if xe_force_wake_get() worked but subsequent xe_force_wake_put() fails ?

there's not much can be done here. I even don't think there's a reason
to wait on ack for force_wake put... in most of the cases.
+Rodrigo, what exactly are we protecting against there?

If that xe_mmio_wait32() fails, driver is toast. The reason we check (or
should check) the return on _get() is because we want to bail out
whatever we are starting to do rather than attempting it and handling
bogus values of an IP that is not awaken.

So, maybe what could be done is

a) XE_WARN_ON(xe_force_wake_put()) -> xe_force_wake_put()

	We cann probably move the WARN_ON() inside xe_force_wake_put()
	if we want to maintain the behavior in most places

	Then make xe_force_wake_put() void as suggested here.

b) I'm not sure about the benefit of the weirdness of
xe_force_wake_get() incrementing the ref even if we failed to wait for
ack.  The only thing the caller is going to do is to call
xe_force_wake_put() and bail out. Why are we not unwinding then?


Lucas De Marchi

>
>Regards,
>
>Nirmoy
>
>>
>>what about making the flow more intuitive like this:
>>
>>bool xe_force_wake_get(fw, d);
>>void xe_force_wake_put(fw, d);
>>
>>	if (xe_force_wake_get(fw, d)) {
>>		...
>>		xe_force_wake_put(fw, d);
>>	}
>>
>>>  }
>>>  void xe_reg_sr_apply_whitelist(struct xe_hw_engine *hwe)
>>>@@ -253,13 +251,11 @@ void xe_reg_sr_apply_whitelist(struct xe_hw_engine *hwe)
>>>  		xe_mmio_write32(gt, RING_FORCE_TO_NONPRIV(mmio_base, slot), addr);
>>>  	}
>>>-	err = xe_force_wake_put(&gt->mmio.fw, XE_FORCEWAKE_ALL);
>>>-	XE_WARN_ON(err);
>>>-
>>>-	return;
>>>-
>>>  err_force_wake:
>>>-	drm_err(&xe->drm, "Failed to apply, err=%d\n", err);
>>>+	if (err)
>>>+		xe_gt_err(gt, "Failed to whitelist %s registers, err=%d\n",
>>>+			  sr->name, err);
>>>+	XE_WARN_ON(xe_force_wake_put(&gt->mmio.fw, XE_FORCEWAKE_ALL));
>>>  }
>>>  /**

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

* ✓ CI.Patch_applied: success for Ensure xe_force_wake_put is always called after xe_force_wake_get
  2024-06-04 11:02 [PATCH 0/9] Ensure xe_force_wake_put is always called after xe_force_wake_get Nirmoy Das
                   ` (9 preceding siblings ...)
  2024-06-04 20:49 ` [PATCH 0/9] Ensure xe_force_wake_put is always called after xe_force_wake_get Lucas De Marchi
@ 2024-06-05  1:06 ` Patchwork
  2024-06-05  1:07 ` ✓ CI.checkpatch: " Patchwork
                   ` (6 subsequent siblings)
  17 siblings, 0 replies; 28+ messages in thread
From: Patchwork @ 2024-06-05  1:06 UTC (permalink / raw)
  To: Nirmoy Das; +Cc: intel-xe

== Series Details ==

Series: Ensure xe_force_wake_put is always called after xe_force_wake_get
URL   : https://patchwork.freedesktop.org/series/134437/
State : success

== Summary ==

=== Applying kernel patches on branch 'drm-tip' with base: ===
Base commit: 596cf447db94 drm-tip: 2024y-06m-04d-20h-11m-26s UTC integration manifest
=== git am output follows ===
Applying: drm/xe/display: Always call xe_force_wake_put/get in pairs
Applying: drm/xe/pat: Always call xe_force_wake_put/get in pairs
Applying: drm/xe/xe_reg_sr: Always call xe_force_wake_put/get in pairs
Applying: drm/xe/xe_gt: Always call xe_force_wake_put/get in pairs
Applying: drm/xe/uc: Always call xe_force_wake_put/get in pairs
Applying: drm/xe: Add xe_force_wake_tryget to simplify forcewake handling
Applying: drm/xe: Use xe_force_wake_tryget when possible
Applying: drm/xe/client: Check return value of xe_force_wake_get
Applying: drm/xe: Add __must_check for xe_force_wake_get



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

* ✓ CI.checkpatch: success for Ensure xe_force_wake_put is always called after xe_force_wake_get
  2024-06-04 11:02 [PATCH 0/9] Ensure xe_force_wake_put is always called after xe_force_wake_get Nirmoy Das
                   ` (10 preceding siblings ...)
  2024-06-05  1:06 ` ✓ CI.Patch_applied: success for " Patchwork
@ 2024-06-05  1:07 ` Patchwork
  2024-06-05  1:08 ` ✓ CI.KUnit: " Patchwork
                   ` (5 subsequent siblings)
  17 siblings, 0 replies; 28+ messages in thread
From: Patchwork @ 2024-06-05  1:07 UTC (permalink / raw)
  To: Nirmoy Das; +Cc: intel-xe

== Series Details ==

Series: Ensure xe_force_wake_put is always called after xe_force_wake_get
URL   : https://patchwork.freedesktop.org/series/134437/
State : success

== 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
51ce9f6cd981d42d7467409d7dbc559a450abc1e
+ cd /kernel
+ git config --global --add safe.directory /kernel
+ git log -n1
commit 27e36d0422974c5d399fedb51d15df6bdcfbc764
Author: Nirmoy Das <nirmoy.das@intel.com>
Date:   Tue Jun 4 13:02:25 2024 +0200

    drm/xe: Add __must_check for xe_force_wake_get
    
    Return value of xe_force_wake_get()  should not be ignored. So add
    a __must_check attribute. Also add documentation for all related functions.
    
    Signed-off-by: Nirmoy Das <nirmoy.das@intel.com>
+ /mt/dim checkpatch 596cf447db94909c4788fd612876520531e439b0 drm-intel
b1c5daa081b0 drm/xe/display: Always call xe_force_wake_put/get in pairs
5899b9d41e18 drm/xe/pat: Always call xe_force_wake_put/get in pairs
f2e8caed592b drm/xe/xe_reg_sr: Always call xe_force_wake_put/get in pairs
36f71c9cd5b7 drm/xe/xe_gt: Always call xe_force_wake_put/get in pairs
213648c8182a drm/xe/uc: Always call xe_force_wake_put/get in pairs
2b60a6933f1d drm/xe: Add xe_force_wake_tryget to simplify forcewake handling
18f395ba0f2c drm/xe: Use xe_force_wake_tryget when possible
5a202755c76c drm/xe/client: Check return value of xe_force_wake_get
27e36d042297 drm/xe: Add __must_check for xe_force_wake_get



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

* ✓ CI.KUnit: success for Ensure xe_force_wake_put is always called after xe_force_wake_get
  2024-06-04 11:02 [PATCH 0/9] Ensure xe_force_wake_put is always called after xe_force_wake_get Nirmoy Das
                   ` (11 preceding siblings ...)
  2024-06-05  1:07 ` ✓ CI.checkpatch: " Patchwork
@ 2024-06-05  1:08 ` Patchwork
  2024-06-05  1:19 ` ✓ CI.Build: " Patchwork
                   ` (4 subsequent siblings)
  17 siblings, 0 replies; 28+ messages in thread
From: Patchwork @ 2024-06-05  1:08 UTC (permalink / raw)
  To: Nirmoy Das; +Cc: intel-xe

== Series Details ==

Series: Ensure xe_force_wake_put is always called after xe_force_wake_get
URL   : https://patchwork.freedesktop.org/series/134437/
State : success

== Summary ==

+ trap cleanup EXIT
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/xe/.kunitconfig
[01:07:04] Configuring KUnit Kernel ...
Generating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[01:07:08] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make ARCH=um O=.kunit --jobs=48
../lib/iomap.c:156:5: warning: no previous prototype for ‘ioread64_lo_hi’ [-Wmissing-prototypes]
  156 | u64 ioread64_lo_hi(const void __iomem *addr)
      |     ^~~~~~~~~~~~~~
../lib/iomap.c:163:5: warning: no previous prototype for ‘ioread64_hi_lo’ [-Wmissing-prototypes]
  163 | u64 ioread64_hi_lo(const void __iomem *addr)
      |     ^~~~~~~~~~~~~~
../lib/iomap.c:170:5: warning: no previous prototype for ‘ioread64be_lo_hi’ [-Wmissing-prototypes]
  170 | u64 ioread64be_lo_hi(const void __iomem *addr)
      |     ^~~~~~~~~~~~~~~~
../lib/iomap.c:178:5: warning: no previous prototype for ‘ioread64be_hi_lo’ [-Wmissing-prototypes]
  178 | u64 ioread64be_hi_lo(const void __iomem *addr)
      |     ^~~~~~~~~~~~~~~~
../lib/iomap.c:264:6: warning: no previous prototype for ‘iowrite64_lo_hi’ [-Wmissing-prototypes]
  264 | void iowrite64_lo_hi(u64 val, void __iomem *addr)
      |      ^~~~~~~~~~~~~~~
../lib/iomap.c:272:6: warning: no previous prototype for ‘iowrite64_hi_lo’ [-Wmissing-prototypes]
  272 | void iowrite64_hi_lo(u64 val, void __iomem *addr)
      |      ^~~~~~~~~~~~~~~
../lib/iomap.c:280:6: warning: no previous prototype for ‘iowrite64be_lo_hi’ [-Wmissing-prototypes]
  280 | void iowrite64be_lo_hi(u64 val, void __iomem *addr)
      |      ^~~~~~~~~~~~~~~~~
../lib/iomap.c:288:6: warning: no previous prototype for ‘iowrite64be_hi_lo’ [-Wmissing-prototypes]
  288 | void iowrite64be_hi_lo(u64 val, void __iomem *addr)
      |      ^~~~~~~~~~~~~~~~~

[01:07:33] Starting KUnit Kernel (1/1)...
[01:07:33] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[01:07:33] =================== guc_dbm (7 subtests) ===================
[01:07:33] [PASSED] test_empty
[01:07:33] [PASSED] test_default
[01:07:33] ======================== test_size  ========================
[01:07:33] [PASSED] 4
[01:07:33] [PASSED] 8
[01:07:33] [PASSED] 32
[01:07:33] [PASSED] 256
[01:07:33] ==================== [PASSED] test_size ====================
[01:07:33] ======================= test_reuse  ========================
[01:07:33] [PASSED] 4
[01:07:33] [PASSED] 8
[01:07:33] [PASSED] 32
[01:07:33] [PASSED] 256
[01:07:33] =================== [PASSED] test_reuse ====================
[01:07:33] =================== test_range_overlap  ====================
[01:07:33] [PASSED] 4
[01:07:33] [PASSED] 8
[01:07:33] [PASSED] 32
[01:07:33] [PASSED] 256
[01:07:33] =============== [PASSED] test_range_overlap ================
[01:07:33] =================== test_range_compact  ====================
[01:07:33] [PASSED] 4
[01:07:33] [PASSED] 8
[01:07:33] [PASSED] 32
[01:07:33] [PASSED] 256
[01:07:33] =============== [PASSED] test_range_compact ================
[01:07:33] ==================== test_range_spare  =====================
[01:07:33] [PASSED] 4
[01:07:33] [PASSED] 8
[01:07:33] [PASSED] 32
[01:07:33] [PASSED] 256
[01:07:33] ================ [PASSED] test_range_spare =================
[01:07:33] ===================== [PASSED] guc_dbm =====================
[01:07:33] =================== guc_idm (6 subtests) ===================
[01:07:33] [PASSED] bad_init
[01:07:33] [PASSED] no_init
[01:07:33] [PASSED] init_fini
[01:07:33] [PASSED] check_used
[01:07:33] [PASSED] check_quota
[01:07:33] [PASSED] check_all
[01:07:33] ===================== [PASSED] guc_idm =====================
[01:07:33] ================== no_relay (3 subtests) ===================
[01:07:33] [PASSED] xe_drops_guc2pf_if_not_ready
[01:07:33] [PASSED] xe_drops_guc2vf_if_not_ready
[01:07:33] [PASSED] xe_rejects_send_if_not_ready
[01:07:33] ==================== [PASSED] no_relay =====================
[01:07:33] ================== pf_relay (14 subtests) ==================
[01:07:33] [PASSED] pf_rejects_guc2pf_too_short
[01:07:33] [PASSED] pf_rejects_guc2pf_too_long
[01:07:33] [PASSED] pf_rejects_guc2pf_no_payload
[01:07:33] [PASSED] pf_fails_no_payload
[01:07:33] [PASSED] pf_fails_bad_origin
[01:07:33] [PASSED] pf_fails_bad_type
[01:07:33] [PASSED] pf_txn_reports_error
[01:07:33] [PASSED] pf_txn_sends_pf2guc
[01:07:33] [PASSED] pf_sends_pf2guc
[01:07:33] [SKIPPED] pf_loopback_nop
[01:07:33] [SKIPPED] pf_loopback_echo
[01:07:33] [SKIPPED] pf_loopback_fail
[01:07:33] [SKIPPED] pf_loopback_busy
[01:07:33] [SKIPPED] pf_loopback_retry
[01:07:33] ==================== [PASSED] pf_relay =====================
[01:07:33] ================== vf_relay (3 subtests) ===================
[01:07:33] [PASSED] vf_rejects_guc2vf_too_short
[01:07:33] [PASSED] vf_rejects_guc2vf_too_long
[01:07:33] [PASSED] vf_rejects_guc2vf_no_payload
[01:07:33] ==================== [PASSED] vf_relay =====================
[01:07:33] ================= pf_service (11 subtests) =================
[01:07:33] [PASSED] pf_negotiate_any
[01:07:33] [PASSED] pf_negotiate_base_match
[01:07:33] [PASSED] pf_negotiate_base_newer
[01:07:33] [PASSED] pf_negotiate_base_next
[01:07:33] [SKIPPED] pf_negotiate_base_older
[01:07:33] [PASSED] pf_negotiate_base_prev
[01:07:33] [PASSED] pf_negotiate_latest_match
[01:07:33] [PASSED] pf_negotiate_latest_newer
[01:07:33] [PASSED] pf_negotiate_latest_next
[01:07:33] [SKIPPED] pf_negotiate_latest_older
[01:07:33] [SKIPPED] pf_negotiate_latest_prev
[01:07:33] =================== [PASSED] pf_service ====================
[01:07:33] ===================== lmtt (1 subtest) =====================
[01:07:33] ======================== test_ops  =========================
[01:07:33] [PASSED] 2-level
[01:07:33] [PASSED] multi-level
[01:07:33] ==================== [PASSED] test_ops =====================
[01:07:33] ====================== [PASSED] lmtt =======================
[01:07:33] ==================== xe_bo (2 subtests) ====================
[01:07:33] [SKIPPED] xe_ccs_migrate_kunit
[01:07:33] [SKIPPED] xe_bo_evict_kunit
[01:07:33] ===================== [SKIPPED] xe_bo ======================
[01:07:33] ================== xe_dma_buf (1 subtest) ==================
[01:07:33] [SKIPPED] xe_dma_buf_kunit
[01:07:33] =================== [SKIPPED] xe_dma_buf ===================
[01:07:33] ================== xe_migrate (1 subtest) ==================
[01:07:33] [SKIPPED] xe_migrate_sanity_kunit
[01:07:33] =================== [SKIPPED] xe_migrate ===================
[01:07:33] =================== xe_mocs (2 subtests) ===================
[01:07:33] [SKIPPED] xe_live_mocs_kernel_kunit
[01:07:33] [SKIPPED] xe_live_mocs_reset_kunit
[01:07:33] ==================== [SKIPPED] xe_mocs =====================
[01:07:33] ==================== args (11 subtests) ====================
[01:07:33] [PASSED] count_args_test
[01:07:33] [PASSED] call_args_example
[01:07:33] [PASSED] call_args_test
[01:07:33] [PASSED] drop_first_arg_example
[01:07:33] [PASSED] drop_first_arg_test
[01:07:33] [PASSED] first_arg_example
[01:07:33] [PASSED] first_arg_test
[01:07:33] [PASSED] last_arg_example
[01:07:33] [PASSED] last_arg_test
[01:07:33] [PASSED] pick_arg_example
[01:07:33] [PASSED] sep_comma_example
[01:07:33] ====================== [PASSED] args =======================
[01:07:33] =================== xe_pci (2 subtests) ====================
[01:07:33] [PASSED] xe_gmdid_graphics_ip
[01:07:33] [PASSED] xe_gmdid_media_ip
[01:07:33] ===================== [PASSED] xe_pci ======================
[01:07:33] ==================== xe_rtp (1 subtest) ====================
[01:07:33] ================== xe_rtp_process_tests  ===================
[01:07:33] [PASSED] coalesce-same-reg
[01:07:33] [PASSED] no-match-no-add
[01:07:33] [PASSED] no-match-no-add-multiple-rules
[01:07:33] [PASSED] two-regs-two-entries
[01:07:33] [PASSED] clr-one-set-other
[01:07:33] [PASSED] set-field
[01:07:33] [PASSED] conflict-duplicate
[01:07:33] [PASSED] conflict-not-disjoint
[01:07:33] [PASSED] conflict-reg-type
[01:07:33] ============== [PASSED] xe_rtp_process_tests ===============
stty: 'standard input': Inappropriate ioctl for device
[01:07:33] ===================== [PASSED] xe_rtp ======================
[01:07:33] ==================== xe_wa (1 subtest) =====================
[01:07:33] ======================== xe_wa_gt  =========================
[01:07:33] [PASSED] TIGERLAKE (B0)
[01:07:33] [PASSED] DG1 (A0)
[01:07:33] [PASSED] DG1 (B0)
[01:07:33] [PASSED] ALDERLAKE_S (A0)
[01:07:33] [PASSED] ALDERLAKE_S (B0)
[01:07:33] [PASSED] ALDERLAKE_S (C0)
[01:07:33] [PASSED] ALDERLAKE_S (D0)
[01:07:33] [PASSED] ALDERLAKE_P (A0)
[01:07:33] [PASSED] ALDERLAKE_P (B0)
[01:07:33] [PASSED] ALDERLAKE_P (C0)
[01:07:33] [PASSED] ALDERLAKE_S_RPLS (D0)
[01:07:33] [PASSED] ALDERLAKE_P_RPLU (E0)
[01:07:33] [PASSED] DG2_G10 (C0)
[01:07:33] [PASSED] DG2_G11 (B1)
[01:07:33] [PASSED] DG2_G12 (A1)
[01:07:33] [PASSED] METEORLAKE (g:A0, m:A0)
[01:07:33] [PASSED] METEORLAKE (g:A0, m:A0)
[01:07:33] [PASSED] METEORLAKE (g:A0, m:A0)
[01:07:33] [PASSED] LUNARLAKE (g:A0, m:A0)
[01:07:33] [PASSED] LUNARLAKE (g:B0, m:A0)
[01:07:33] ==================== [PASSED] xe_wa_gt =====================
[01:07:33] ====================== [PASSED] xe_wa ======================
[01:07:33] ============================================================
[01:07:33] Testing complete. Ran 109 tests: passed: 95, skipped: 14
[01:07:34] Elapsed time: 29.854s total, 4.238s configuring, 25.296s building, 0.289s running

+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/tests/.kunitconfig
[01:07:34] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[01:07:35] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make ARCH=um O=.kunit --jobs=48
../lib/iomap.c:156:5: warning: no previous prototype for ‘ioread64_lo_hi’ [-Wmissing-prototypes]
  156 | u64 ioread64_lo_hi(const void __iomem *addr)
      |     ^~~~~~~~~~~~~~
../lib/iomap.c:163:5: warning: no previous prototype for ‘ioread64_hi_lo’ [-Wmissing-prototypes]
  163 | u64 ioread64_hi_lo(const void __iomem *addr)
      |     ^~~~~~~~~~~~~~
../lib/iomap.c:170:5: warning: no previous prototype for ‘ioread64be_lo_hi’ [-Wmissing-prototypes]
  170 | u64 ioread64be_lo_hi(const void __iomem *addr)
      |     ^~~~~~~~~~~~~~~~
../lib/iomap.c:178:5: warning: no previous prototype for ‘ioread64be_hi_lo’ [-Wmissing-prototypes]
  178 | u64 ioread64be_hi_lo(const void __iomem *addr)
      |     ^~~~~~~~~~~~~~~~
../lib/iomap.c:264:6: warning: no previous prototype for ‘iowrite64_lo_hi’ [-Wmissing-prototypes]
  264 | void iowrite64_lo_hi(u64 val, void __iomem *addr)
      |      ^~~~~~~~~~~~~~~
../lib/iomap.c:272:6: warning: no previous prototype for ‘iowrite64_hi_lo’ [-Wmissing-prototypes]
  272 | void iowrite64_hi_lo(u64 val, void __iomem *addr)
      |      ^~~~~~~~~~~~~~~
../lib/iomap.c:280:6: warning: no previous prototype for ‘iowrite64be_lo_hi’ [-Wmissing-prototypes]
  280 | void iowrite64be_lo_hi(u64 val, void __iomem *addr)
      |      ^~~~~~~~~~~~~~~~~
../lib/iomap.c:288:6: warning: no previous prototype for ‘iowrite64be_hi_lo’ [-Wmissing-prototypes]
  288 | void iowrite64be_hi_lo(u64 val, void __iomem *addr)
      |      ^~~~~~~~~~~~~~~~~

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

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



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

* ✓ CI.Build: success for Ensure xe_force_wake_put is always called after xe_force_wake_get
  2024-06-04 11:02 [PATCH 0/9] Ensure xe_force_wake_put is always called after xe_force_wake_get Nirmoy Das
                   ` (12 preceding siblings ...)
  2024-06-05  1:08 ` ✓ CI.KUnit: " Patchwork
@ 2024-06-05  1:19 ` Patchwork
  2024-06-05  1:19 ` ✗ CI.Hooks: failure " Patchwork
                   ` (3 subsequent siblings)
  17 siblings, 0 replies; 28+ messages in thread
From: Patchwork @ 2024-06-05  1:19 UTC (permalink / raw)
  To: Nirmoy Das; +Cc: intel-xe

== Series Details ==

Series: Ensure xe_force_wake_put is always called after xe_force_wake_get
URL   : https://patchwork.freedesktop.org/series/134437/
State : success

== Summary ==

lib/modules/6.10.0-rc2-xe/kernel/sound/core/seq/
lib/modules/6.10.0-rc2-xe/kernel/sound/core/seq/snd-seq.ko
lib/modules/6.10.0-rc2-xe/kernel/sound/core/snd-seq-device.ko
lib/modules/6.10.0-rc2-xe/kernel/sound/core/snd-hwdep.ko
lib/modules/6.10.0-rc2-xe/kernel/sound/core/snd.ko
lib/modules/6.10.0-rc2-xe/kernel/sound/core/snd-pcm.ko
lib/modules/6.10.0-rc2-xe/kernel/sound/core/snd-compress.ko
lib/modules/6.10.0-rc2-xe/kernel/sound/core/snd-timer.ko
lib/modules/6.10.0-rc2-xe/kernel/sound/soundcore.ko
lib/modules/6.10.0-rc2-xe/kernel/sound/soc/
lib/modules/6.10.0-rc2-xe/kernel/sound/soc/intel/
lib/modules/6.10.0-rc2-xe/kernel/sound/soc/intel/atom/
lib/modules/6.10.0-rc2-xe/kernel/sound/soc/intel/atom/snd-soc-sst-atom-hifi2-platform.ko
lib/modules/6.10.0-rc2-xe/kernel/sound/soc/intel/atom/sst/
lib/modules/6.10.0-rc2-xe/kernel/sound/soc/intel/atom/sst/snd-intel-sst-acpi.ko
lib/modules/6.10.0-rc2-xe/kernel/sound/soc/intel/atom/sst/snd-intel-sst-core.ko
lib/modules/6.10.0-rc2-xe/kernel/sound/soc/intel/common/
lib/modules/6.10.0-rc2-xe/kernel/sound/soc/intel/common/snd-soc-acpi-intel-match.ko
lib/modules/6.10.0-rc2-xe/kernel/sound/soc/amd/
lib/modules/6.10.0-rc2-xe/kernel/sound/soc/amd/snd-acp-config.ko
lib/modules/6.10.0-rc2-xe/kernel/sound/soc/sof/
lib/modules/6.10.0-rc2-xe/kernel/sound/soc/sof/intel/
lib/modules/6.10.0-rc2-xe/kernel/sound/soc/sof/intel/snd-sof-pci-intel-tgl.ko
lib/modules/6.10.0-rc2-xe/kernel/sound/soc/sof/intel/snd-sof-intel-hda-mlink.ko
lib/modules/6.10.0-rc2-xe/kernel/sound/soc/sof/intel/snd-sof-pci-intel-cnl.ko
lib/modules/6.10.0-rc2-xe/kernel/sound/soc/sof/intel/snd-sof-pci-intel-lnl.ko
lib/modules/6.10.0-rc2-xe/kernel/sound/soc/sof/intel/snd-sof-intel-hda-common.ko
lib/modules/6.10.0-rc2-xe/kernel/sound/soc/sof/intel/snd-sof-intel-hda-generic.ko
lib/modules/6.10.0-rc2-xe/kernel/sound/soc/sof/intel/snd-sof-intel-hda.ko
lib/modules/6.10.0-rc2-xe/kernel/sound/soc/sof/intel/snd-sof-pci-intel-mtl.ko
lib/modules/6.10.0-rc2-xe/kernel/sound/soc/sof/amd/
lib/modules/6.10.0-rc2-xe/kernel/sound/soc/sof/amd/snd-sof-amd-renoir.ko
lib/modules/6.10.0-rc2-xe/kernel/sound/soc/sof/amd/snd-sof-amd-acp.ko
lib/modules/6.10.0-rc2-xe/kernel/sound/soc/sof/snd-sof-utils.ko
lib/modules/6.10.0-rc2-xe/kernel/sound/soc/sof/snd-sof-pci.ko
lib/modules/6.10.0-rc2-xe/kernel/sound/soc/sof/snd-sof.ko
lib/modules/6.10.0-rc2-xe/kernel/sound/soc/sof/snd-sof-probes.ko
lib/modules/6.10.0-rc2-xe/kernel/sound/soc/sof/xtensa/
lib/modules/6.10.0-rc2-xe/kernel/sound/soc/sof/xtensa/snd-sof-xtensa-dsp.ko
lib/modules/6.10.0-rc2-xe/kernel/sound/soc/snd-soc-core.ko
lib/modules/6.10.0-rc2-xe/kernel/sound/soc/snd-soc-acpi.ko
lib/modules/6.10.0-rc2-xe/kernel/sound/soc/codecs/
lib/modules/6.10.0-rc2-xe/kernel/sound/soc/codecs/snd-soc-hdac-hda.ko
lib/modules/6.10.0-rc2-xe/kernel/sound/hda/
lib/modules/6.10.0-rc2-xe/kernel/sound/hda/snd-intel-sdw-acpi.ko
lib/modules/6.10.0-rc2-xe/kernel/sound/hda/ext/
lib/modules/6.10.0-rc2-xe/kernel/sound/hda/ext/snd-hda-ext-core.ko
lib/modules/6.10.0-rc2-xe/kernel/sound/hda/snd-intel-dspcfg.ko
lib/modules/6.10.0-rc2-xe/kernel/sound/hda/snd-hda-core.ko
lib/modules/6.10.0-rc2-xe/kernel/arch/
lib/modules/6.10.0-rc2-xe/kernel/arch/x86/
lib/modules/6.10.0-rc2-xe/kernel/arch/x86/kernel/
lib/modules/6.10.0-rc2-xe/kernel/arch/x86/kernel/msr.ko
lib/modules/6.10.0-rc2-xe/kernel/arch/x86/kernel/cpuid.ko
lib/modules/6.10.0-rc2-xe/kernel/arch/x86/crypto/
lib/modules/6.10.0-rc2-xe/kernel/arch/x86/crypto/sha512-ssse3.ko
lib/modules/6.10.0-rc2-xe/kernel/arch/x86/crypto/crct10dif-pclmul.ko
lib/modules/6.10.0-rc2-xe/kernel/arch/x86/crypto/ghash-clmulni-intel.ko
lib/modules/6.10.0-rc2-xe/kernel/arch/x86/crypto/sha1-ssse3.ko
lib/modules/6.10.0-rc2-xe/kernel/arch/x86/crypto/crc32-pclmul.ko
lib/modules/6.10.0-rc2-xe/kernel/arch/x86/crypto/sha256-ssse3.ko
lib/modules/6.10.0-rc2-xe/kernel/arch/x86/crypto/aesni-intel.ko
lib/modules/6.10.0-rc2-xe/kernel/arch/x86/crypto/polyval-clmulni.ko
lib/modules/6.10.0-rc2-xe/kernel/arch/x86/events/
lib/modules/6.10.0-rc2-xe/kernel/arch/x86/events/intel/
lib/modules/6.10.0-rc2-xe/kernel/arch/x86/events/intel/intel-cstate.ko
lib/modules/6.10.0-rc2-xe/kernel/arch/x86/events/rapl.ko
lib/modules/6.10.0-rc2-xe/kernel/arch/x86/kvm/
lib/modules/6.10.0-rc2-xe/kernel/arch/x86/kvm/kvm.ko
lib/modules/6.10.0-rc2-xe/kernel/arch/x86/kvm/kvm-intel.ko
lib/modules/6.10.0-rc2-xe/kernel/crypto/
lib/modules/6.10.0-rc2-xe/kernel/crypto/crypto_simd.ko
lib/modules/6.10.0-rc2-xe/kernel/crypto/cmac.ko
lib/modules/6.10.0-rc2-xe/kernel/crypto/ccm.ko
lib/modules/6.10.0-rc2-xe/kernel/crypto/cryptd.ko
lib/modules/6.10.0-rc2-xe/kernel/crypto/polyval-generic.ko
lib/modules/6.10.0-rc2-xe/kernel/crypto/async_tx/
lib/modules/6.10.0-rc2-xe/kernel/crypto/async_tx/async_xor.ko
lib/modules/6.10.0-rc2-xe/kernel/crypto/async_tx/async_tx.ko
lib/modules/6.10.0-rc2-xe/kernel/crypto/async_tx/async_memcpy.ko
lib/modules/6.10.0-rc2-xe/kernel/crypto/async_tx/async_pq.ko
lib/modules/6.10.0-rc2-xe/kernel/crypto/async_tx/async_raid6_recov.ko
lib/modules/6.10.0-rc2-xe/build
lib/modules/6.10.0-rc2-xe/modules.alias.bin
lib/modules/6.10.0-rc2-xe/modules.builtin
lib/modules/6.10.0-rc2-xe/modules.softdep
lib/modules/6.10.0-rc2-xe/modules.alias
lib/modules/6.10.0-rc2-xe/modules.order
lib/modules/6.10.0-rc2-xe/modules.symbols
lib/modules/6.10.0-rc2-xe/modules.dep.bin
+ mv kernel-nodebug.tar.gz ..
+ cd ..
+ rm -rf archive
++ date +%s
^[[0Ksection_end:1717550362:package_x86_64_nodebug
^[[0K
+ echo -e '\e[0Ksection_end:1717550362:package_x86_64_nodebug\r\e[0K'
+ sync
+ cleanup
++ stat -c %u:%g /kernel
+ chown -R 1003:1003 /kernel



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

* ✗ CI.Hooks: failure for Ensure xe_force_wake_put is always called after xe_force_wake_get
  2024-06-04 11:02 [PATCH 0/9] Ensure xe_force_wake_put is always called after xe_force_wake_get Nirmoy Das
                   ` (13 preceding siblings ...)
  2024-06-05  1:19 ` ✓ CI.Build: " Patchwork
@ 2024-06-05  1:19 ` Patchwork
  2024-06-05  1:21 ` ✓ CI.checksparse: success " Patchwork
                   ` (2 subsequent siblings)
  17 siblings, 0 replies; 28+ messages in thread
From: Patchwork @ 2024-06-05  1:19 UTC (permalink / raw)
  To: Nirmoy Das; +Cc: intel-xe

== Series Details ==

Series: Ensure xe_force_wake_put is always called after xe_force_wake_get
URL   : https://patchwork.freedesktop.org/series/134437/
State : failure

== Summary ==

run-parts: executing /workspace/ci/hooks/00-showenv
+ export
+ grep -Ei '(^|\W)CI_'
declare -x CI_KERNEL_BUILD_DIR="/workspace/kernel/build64-default"
declare -x CI_KERNEL_SRC_DIR="/workspace/kernel"
declare -x CI_TOOLS_SRC_DIR="/workspace/ci"
declare -x CI_WORKSPACE_DIR="/workspace"
run-parts: executing /workspace/ci/hooks/10-build-W1
+ SRC_DIR=/workspace/kernel
+ RESTORE_DISPLAY_CONFIG=0
+ '[' -n /workspace/kernel/build64-default ']'
+ BUILD_DIR=/workspace/kernel/build64-default
+ cd /workspace/kernel
++ nproc
+ make -j48 O=/workspace/kernel/build64-default modules_prepare
make[1]: Entering directory '/workspace/kernel/build64-default'
  GEN     Makefile
  UPD     include/generated/compile.h
  UPD     include/config/kernel.release
mkdir -p /workspace/kernel/build64-default/tools/objtool && make O=/workspace/kernel/build64-default subdir=tools/objtool --no-print-directory -C objtool 
  UPD     include/generated/utsrelease.h
  HOSTCC  /workspace/kernel/build64-default/tools/objtool/fixdep.o
  CALL    ../scripts/checksyscalls.sh
  HOSTLD  /workspace/kernel/build64-default/tools/objtool/fixdep-in.o
  LINK    /workspace/kernel/build64-default/tools/objtool/fixdep
  INSTALL libsubcmd_headers
  CC      /workspace/kernel/build64-default/tools/objtool/libsubcmd/exec-cmd.o
  CC      /workspace/kernel/build64-default/tools/objtool/libsubcmd/help.o
  CC      /workspace/kernel/build64-default/tools/objtool/libsubcmd/pager.o
  CC      /workspace/kernel/build64-default/tools/objtool/libsubcmd/parse-options.o
  CC      /workspace/kernel/build64-default/tools/objtool/libsubcmd/run-command.o
  CC      /workspace/kernel/build64-default/tools/objtool/libsubcmd/subcmd-config.o
  CC      /workspace/kernel/build64-default/tools/objtool/libsubcmd/sigchain.o
  LD      /workspace/kernel/build64-default/tools/objtool/libsubcmd/libsubcmd-in.o
  AR      /workspace/kernel/build64-default/tools/objtool/libsubcmd/libsubcmd.a
  CC      /workspace/kernel/build64-default/tools/objtool/weak.o
  CC      /workspace/kernel/build64-default/tools/objtool/check.o
  CC      /workspace/kernel/build64-default/tools/objtool/special.o
  CC      /workspace/kernel/build64-default/tools/objtool/builtin-check.o
  CC      /workspace/kernel/build64-default/tools/objtool/elf.o
  CC      /workspace/kernel/build64-default/tools/objtool/objtool.o
  CC      /workspace/kernel/build64-default/tools/objtool/orc_gen.o
  CC      /workspace/kernel/build64-default/tools/objtool/orc_dump.o
  CC      /workspace/kernel/build64-default/tools/objtool/libstring.o
  CC      /workspace/kernel/build64-default/tools/objtool/libctype.o
  CC      /workspace/kernel/build64-default/tools/objtool/str_error_r.o
  CC      /workspace/kernel/build64-default/tools/objtool/librbtree.o
  CC      /workspace/kernel/build64-default/tools/objtool/arch/x86/special.o
  CC      /workspace/kernel/build64-default/tools/objtool/arch/x86/decode.o
  CC      /workspace/kernel/build64-default/tools/objtool/arch/x86/orc.o
  LD      /workspace/kernel/build64-default/tools/objtool/arch/x86/objtool-in.o
  LD      /workspace/kernel/build64-default/tools/objtool/objtool-in.o
  LINK    /workspace/kernel/build64-default/tools/objtool/objtool
make[1]: Leaving directory '/workspace/kernel/build64-default'
++ nproc
+ make -j48 O=/workspace/kernel/build64-default M=drivers/gpu/drm/xe W=1
make[1]: Entering directory '/workspace/kernel/build64-default'
../scripts/Makefile.build:41: drivers/gpu/drm/xe/Makefile: No such file or directory
make[3]: *** No rule to make target 'drivers/gpu/drm/xe/Makefile'.  Stop.
make[2]: *** [/workspace/kernel/Makefile:1934: drivers/gpu/drm/xe] Error 2
make[1]: *** [/workspace/kernel/Makefile:240: __sub-make] Error 2
make[1]: Leaving directory '/workspace/kernel/build64-default'
make: *** [Makefile:240: __sub-make] Error 2
run-parts: /workspace/ci/hooks/10-build-W1 exited with return code 2



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

* ✓ CI.checksparse: success for Ensure xe_force_wake_put is always called after xe_force_wake_get
  2024-06-04 11:02 [PATCH 0/9] Ensure xe_force_wake_put is always called after xe_force_wake_get Nirmoy Das
                   ` (14 preceding siblings ...)
  2024-06-05  1:19 ` ✗ CI.Hooks: failure " Patchwork
@ 2024-06-05  1:21 ` Patchwork
  2024-06-05  1:48 ` ✓ CI.BAT: " Patchwork
  2024-06-05 10:15 ` ✗ CI.FULL: failure " Patchwork
  17 siblings, 0 replies; 28+ messages in thread
From: Patchwork @ 2024-06-05  1:21 UTC (permalink / raw)
  To: Nirmoy Das; +Cc: intel-xe

== Series Details ==

Series: Ensure xe_force_wake_put is always called after xe_force_wake_get
URL   : https://patchwork.freedesktop.org/series/134437/
State : success

== Summary ==

+ trap cleanup EXIT
+ KERNEL=/kernel
+ MT=/root/linux/maintainer-tools
+ git clone https://gitlab.freedesktop.org/drm/maintainer-tools /root/linux/maintainer-tools
Cloning into '/root/linux/maintainer-tools'...
warning: redirecting to https://gitlab.freedesktop.org/drm/maintainer-tools.git/
+ make -C /root/linux/maintainer-tools
make: Entering directory '/root/linux/maintainer-tools'
cc -O2 -g -Wextra -o remap-log remap-log.c
make: Leaving directory '/root/linux/maintainer-tools'
+ cd /kernel
+ git config --global --add safe.directory /kernel
+ /root/linux/maintainer-tools/dim sparse --fast 596cf447db94909c4788fd612876520531e439b0
Sparse version: 0.6.1 (Ubuntu: 0.6.1-2build1)
Fast mode used, each commit won't be checked separately.
Okay!

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



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

* ✓ CI.BAT: success for Ensure xe_force_wake_put is always called after xe_force_wake_get
  2024-06-04 11:02 [PATCH 0/9] Ensure xe_force_wake_put is always called after xe_force_wake_get Nirmoy Das
                   ` (15 preceding siblings ...)
  2024-06-05  1:21 ` ✓ CI.checksparse: success " Patchwork
@ 2024-06-05  1:48 ` Patchwork
  2024-06-05 10:15 ` ✗ CI.FULL: failure " Patchwork
  17 siblings, 0 replies; 28+ messages in thread
From: Patchwork @ 2024-06-05  1:48 UTC (permalink / raw)
  To: Nirmoy Das; +Cc: intel-xe

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

== Series Details ==

Series: Ensure xe_force_wake_put is always called after xe_force_wake_get
URL   : https://patchwork.freedesktop.org/series/134437/
State : success

== Summary ==

CI Bug Log - changes from xe-1399-596cf447db94909c4788fd612876520531e439b0_BAT -> xe-pw-134437v1_BAT
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  

Participating hosts (4 -> 5)
------------------------------

  Additional (1): bat-adlp-7 

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

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

### IGT changes ###

#### Issues hit ####

  * igt@kms_dsc@dsc-basic:
    - bat-adlp-7:         NOTRUN -> [SKIP][1] ([Intel XE#455])
   [1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/bat-adlp-7/igt@kms_dsc@dsc-basic.html

  * igt@kms_frontbuffer_tracking@basic:
    - bat-adlp-7:         NOTRUN -> [DMESG-FAIL][2] ([Intel XE#324])
   [2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/bat-adlp-7/igt@kms_frontbuffer_tracking@basic.html

  * igt@xe_evict@evict-small-cm:
    - bat-adlp-7:         NOTRUN -> [SKIP][3] ([Intel XE#261] / [Intel XE#688]) +15 other tests skip
   [3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/bat-adlp-7/igt@xe_evict@evict-small-cm.html

  * igt@xe_evict_ccs@evict-overcommit-simple:
    - bat-adlp-7:         NOTRUN -> [SKIP][4] ([Intel XE#688]) +1 other test skip
   [4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/bat-adlp-7/igt@xe_evict_ccs@evict-overcommit-simple.html

  * igt@xe_exec_fault_mode@twice-userptr-invalidate-prefetch:
    - bat-adlp-7:         NOTRUN -> [SKIP][5] ([Intel XE#288]) +32 other tests skip
   [5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/bat-adlp-7/igt@xe_exec_fault_mode@twice-userptr-invalidate-prefetch.html

  * igt@xe_mmap@vram:
    - bat-adlp-7:         NOTRUN -> [SKIP][6] ([Intel XE#1008])
   [6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/bat-adlp-7/igt@xe_mmap@vram.html

  * igt@xe_pat@pat-index-xe2:
    - bat-adlp-7:         NOTRUN -> [SKIP][7] ([Intel XE#977])
   [7]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/bat-adlp-7/igt@xe_pat@pat-index-xe2.html

  * igt@xe_pat@pat-index-xehpc:
    - bat-adlp-7:         NOTRUN -> [SKIP][8] ([Intel XE#979]) +1 other test skip
   [8]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/bat-adlp-7/igt@xe_pat@pat-index-xehpc.html

  
#### Possible fixes ####

  * igt@kms_flip@basic-flip-vs-wf_vblank:
    - {bat-lnl-1}:        [FAIL][9] ([Intel XE#886]) -> [PASS][10] +1 other test pass
   [9]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1399-596cf447db94909c4788fd612876520531e439b0/bat-lnl-1/igt@kms_flip@basic-flip-vs-wf_vblank.html
   [10]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/bat-lnl-1/igt@kms_flip@basic-flip-vs-wf_vblank.html

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

  [Intel XE#1008]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1008
  [Intel XE#261]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/261
  [Intel XE#288]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/288
  [Intel XE#324]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/324
  [Intel XE#455]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/455
  [Intel XE#688]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/688
  [Intel XE#886]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/886
  [Intel XE#977]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/977
  [Intel XE#979]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/979


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

  * Linux: xe-1399-596cf447db94909c4788fd612876520531e439b0 -> xe-pw-134437v1

  IGT_7877: 23b8b8a0168e1b5141e29346be1f83fdbed31037 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  xe-1399-596cf447db94909c4788fd612876520531e439b0: 596cf447db94909c4788fd612876520531e439b0
  xe-pw-134437v1: 134437v1

== Logs ==

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

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

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

* ✗ CI.FULL: failure for Ensure xe_force_wake_put is always called after xe_force_wake_get
  2024-06-04 11:02 [PATCH 0/9] Ensure xe_force_wake_put is always called after xe_force_wake_get Nirmoy Das
                   ` (16 preceding siblings ...)
  2024-06-05  1:48 ` ✓ CI.BAT: " Patchwork
@ 2024-06-05 10:15 ` Patchwork
  17 siblings, 0 replies; 28+ messages in thread
From: Patchwork @ 2024-06-05 10:15 UTC (permalink / raw)
  To: Nirmoy Das; +Cc: intel-xe

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

== Series Details ==

Series: Ensure xe_force_wake_put is always called after xe_force_wake_get
URL   : https://patchwork.freedesktop.org/series/134437/
State : failure

== Summary ==

CI Bug Log - changes from xe-1399-596cf447db94909c4788fd612876520531e439b0_full -> xe-pw-134437v1_full
====================================================

Summary
-------

  **WARNING**

  Minor unknown changes coming with xe-pw-134437v1_full need to be verified
  manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in xe-pw-134437v1_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 (3 -> 3)
------------------------------

  No changes in participating hosts

Possible new issues
-------------------

  Here are the unknown changes that may have been introduced in xe-pw-134437v1_full:

### IGT changes ###

#### Possible regressions ####

  * igt@xe_exec_compute_mode (NEW):
    - {shard-lnl}:        NOTRUN -> [INCOMPLETE][1]
   [1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-lnl-5/igt@xe_exec_compute_mode.html

  
#### Warnings ####

  * igt@kms_flip@flip-vs-suspend@b-hdmi-a1:
    - shard-adlp:         [DMESG-FAIL][2] ([Intel XE#1608]) -> [FAIL][3] +2 other tests fail
   [2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1399-596cf447db94909c4788fd612876520531e439b0/shard-adlp-4/igt@kms_flip@flip-vs-suspend@b-hdmi-a1.html
   [3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-adlp-2/igt@kms_flip@flip-vs-suspend@b-hdmi-a1.html

  
#### Suppressed ####

  The following results come from untrusted machines, tests, or statuses.
  They do not affect the overall result.

  * igt@kms_fbcon_fbt@psr-suspend:
    - {shard-lnl}:        NOTRUN -> [FAIL][4] +1 other test fail
   [4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-lnl-8/igt@kms_fbcon_fbt@psr-suspend.html

  * igt@kms_psr@psr-suspend@edp-1:
    - {shard-lnl}:        [DMESG-FAIL][5] -> [FAIL][6] +1 other test fail
   [5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1399-596cf447db94909c4788fd612876520531e439b0/shard-lnl-8/igt@kms_psr@psr-suspend@edp-1.html
   [6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-lnl-6/igt@kms_psr@psr-suspend@edp-1.html

  * igt@xe_pm@s2idle-vm-bind-userptr:
    - {shard-lnl}:        NOTRUN -> [DMESG-FAIL][7]
   [7]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-lnl-7/igt@xe_pm@s2idle-vm-bind-userptr.html

  
New tests
---------

  New tests have been introduced between xe-1399-596cf447db94909c4788fd612876520531e439b0_full and xe-pw-134437v1_full:

### New IGT tests (1) ###

  * igt@xe_exec_compute_mode:
    - Statuses : 1 incomplete(s)
    - Exec time: [0.0] s

  

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

  Here are the changes found in xe-pw-134437v1_full that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@intel_hwmon@hwmon-read:
    - shard-adlp:         NOTRUN -> [SKIP][8] ([Intel XE#1125] / [Intel XE#1201])
   [8]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-adlp-8/igt@intel_hwmon@hwmon-read.html

  * igt@kms_big_fb@4-tiled-8bpp-rotate-90:
    - shard-dg2-set2:     NOTRUN -> [SKIP][9] ([Intel XE#1201] / [Intel XE#316]) +2 other tests skip
   [9]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-436/igt@kms_big_fb@4-tiled-8bpp-rotate-90.html

  * igt@kms_big_fb@linear-16bpp-rotate-270:
    - shard-dg2-set2:     NOTRUN -> [SKIP][10] ([Intel XE#316])
   [10]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-432/igt@kms_big_fb@linear-16bpp-rotate-270.html

  * igt@kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-0:
    - shard-adlp:         NOTRUN -> [FAIL][11] ([Intel XE#1874]) +1 other test fail
   [11]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-adlp-8/igt@kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-0.html

  * igt@kms_big_fb@y-tiled-16bpp-rotate-270:
    - shard-adlp:         NOTRUN -> [SKIP][12] ([Intel XE#1201] / [Intel XE#316]) +1 other test skip
   [12]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-adlp-6/igt@kms_big_fb@y-tiled-16bpp-rotate-270.html

  * igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-180-hflip-async-flip:
    - shard-adlp:         NOTRUN -> [DMESG-FAIL][13] ([Intel XE#1033]) +1 other test dmesg-fail
   [13]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-adlp-6/igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-180-hflip-async-flip.html

  * igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180-hflip:
    - shard-dg2-set2:     NOTRUN -> [SKIP][14] ([Intel XE#1124] / [Intel XE#1201]) +10 other tests skip
   [14]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-466/igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180-hflip.html

  * igt@kms_big_fb@yf-tiled-8bpp-rotate-90:
    - shard-adlp:         NOTRUN -> [SKIP][15] ([Intel XE#1124] / [Intel XE#1201]) +2 other tests skip
   [15]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-adlp-8/igt@kms_big_fb@yf-tiled-8bpp-rotate-90.html

  * igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-180-hflip-async-flip:
    - shard-dg2-set2:     NOTRUN -> [SKIP][16] ([Intel XE#1124]) +2 other tests skip
   [16]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-432/igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-180-hflip-async-flip.html

  * igt@kms_bw@linear-tiling-1-displays-3840x2160p:
    - shard-dg2-set2:     NOTRUN -> [SKIP][17] ([Intel XE#367]) +2 other tests skip
   [17]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-432/igt@kms_bw@linear-tiling-1-displays-3840x2160p.html

  * igt@kms_bw@linear-tiling-3-displays-2160x1440p:
    - shard-dg2-set2:     NOTRUN -> [SKIP][18] ([Intel XE#1201] / [Intel XE#367])
   [18]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-436/igt@kms_bw@linear-tiling-3-displays-2160x1440p.html

  * igt@kms_bw@linear-tiling-4-displays-2560x1440p:
    - shard-adlp:         NOTRUN -> [SKIP][19] ([Intel XE#1201] / [Intel XE#367])
   [19]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-adlp-8/igt@kms_bw@linear-tiling-4-displays-2560x1440p.html

  * igt@kms_ccs@crc-primary-basic-yf-tiled-ccs:
    - shard-adlp:         NOTRUN -> [SKIP][20] ([Intel XE#1201] / [Intel XE#455] / [Intel XE#787]) +11 other tests skip
   [20]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-adlp-8/igt@kms_ccs@crc-primary-basic-yf-tiled-ccs.html

  * igt@kms_ccs@crc-primary-basic-yf-tiled-ccs@pipe-b-hdmi-a-1:
    - shard-adlp:         NOTRUN -> [SKIP][21] ([Intel XE#1201] / [Intel XE#787]) +17 other tests skip
   [21]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-adlp-8/igt@kms_ccs@crc-primary-basic-yf-tiled-ccs@pipe-b-hdmi-a-1.html

  * igt@kms_ccs@crc-sprite-planes-basic-4-tiled-xe2-ccs:
    - shard-dg2-set2:     NOTRUN -> [SKIP][22] ([Intel XE#1201] / [Intel XE#1252])
   [22]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-464/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-xe2-ccs.html

  * igt@kms_ccs@crc-sprite-planes-basic-yf-tiled-ccs:
    - shard-dg2-set2:     NOTRUN -> [SKIP][23] ([Intel XE#455] / [Intel XE#787]) +3 other tests skip
   [23]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-432/igt@kms_ccs@crc-sprite-planes-basic-yf-tiled-ccs.html

  * igt@kms_ccs@crc-sprite-planes-basic-yf-tiled-ccs@pipe-d-hdmi-a-6:
    - shard-dg2-set2:     NOTRUN -> [SKIP][24] ([Intel XE#787]) +13 other tests skip
   [24]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-432/igt@kms_ccs@crc-sprite-planes-basic-yf-tiled-ccs@pipe-d-hdmi-a-6.html

  * igt@kms_ccs@missing-ccs-buffer-y-tiled-gen12-rc-ccs-cc@pipe-c-hdmi-a-6:
    - shard-dg2-set2:     NOTRUN -> [SKIP][25] ([Intel XE#1201] / [Intel XE#787]) +20 other tests skip
   [25]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-433/igt@kms_ccs@missing-ccs-buffer-y-tiled-gen12-rc-ccs-cc@pipe-c-hdmi-a-6.html

  * igt@kms_ccs@random-ccs-data-y-tiled-gen12-mc-ccs@pipe-d-dp-4:
    - shard-dg2-set2:     NOTRUN -> [SKIP][26] ([Intel XE#1201] / [Intel XE#455] / [Intel XE#787]) +5 other tests skip
   [26]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-435/igt@kms_ccs@random-ccs-data-y-tiled-gen12-mc-ccs@pipe-d-dp-4.html

  * igt@kms_chamelium_color@ctm-0-50:
    - shard-adlp:         NOTRUN -> [SKIP][27] ([Intel XE#1201] / [Intel XE#306])
   [27]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-adlp-8/igt@kms_chamelium_color@ctm-0-50.html

  * igt@kms_chamelium_color@ctm-0-75:
    - shard-dg2-set2:     NOTRUN -> [SKIP][28] ([Intel XE#1201] / [Intel XE#306])
   [28]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-464/igt@kms_chamelium_color@ctm-0-75.html

  * igt@kms_chamelium_color@ctm-green-to-red:
    - shard-dg2-set2:     NOTRUN -> [SKIP][29] ([Intel XE#306])
   [29]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-432/igt@kms_chamelium_color@ctm-green-to-red.html

  * igt@kms_chamelium_frames@hdmi-cmp-planar-formats:
    - shard-adlp:         NOTRUN -> [SKIP][30] ([Intel XE#1201] / [Intel XE#373]) +2 other tests skip
   [30]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-adlp-8/igt@kms_chamelium_frames@hdmi-cmp-planar-formats.html

  * igt@kms_chamelium_hpd@hdmi-hpd:
    - shard-dg2-set2:     NOTRUN -> [SKIP][31] ([Intel XE#373]) +2 other tests skip
   [31]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-432/igt@kms_chamelium_hpd@hdmi-hpd.html

  * igt@kms_chamelium_hpd@hdmi-hpd-with-enabled-mode:
    - shard-dg2-set2:     NOTRUN -> [SKIP][32] ([Intel XE#1201] / [Intel XE#373]) +4 other tests skip
   [32]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-464/igt@kms_chamelium_hpd@hdmi-hpd-with-enabled-mode.html

  * igt@kms_content_protection@atomic-dpms:
    - shard-dg2-set2:     NOTRUN -> [FAIL][33] ([Intel XE#1178]) +1 other test fail
   [33]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-432/igt@kms_content_protection@atomic-dpms.html

  * igt@kms_content_protection@dp-mst-type-1:
    - shard-dg2-set2:     NOTRUN -> [SKIP][34] ([Intel XE#307])
   [34]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-432/igt@kms_content_protection@dp-mst-type-1.html

  * igt@kms_cursor_crc@cursor-onscreen-512x512:
    - shard-dg2-set2:     NOTRUN -> [SKIP][35] ([Intel XE#1201] / [Intel XE#308])
   [35]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-433/igt@kms_cursor_crc@cursor-onscreen-512x512.html
    - shard-adlp:         NOTRUN -> [SKIP][36] ([Intel XE#1201] / [Intel XE#308]) +1 other test skip
   [36]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-adlp-6/igt@kms_cursor_crc@cursor-onscreen-512x512.html

  * igt@kms_cursor_crc@cursor-rapid-movement-256x85:
    - shard-dg2-set2:     [PASS][37] -> [INCOMPLETE][38] ([Intel XE#1195]) +1 other test incomplete
   [37]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1399-596cf447db94909c4788fd612876520531e439b0/shard-dg2-466/igt@kms_cursor_crc@cursor-rapid-movement-256x85.html
   [38]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-436/igt@kms_cursor_crc@cursor-rapid-movement-256x85.html

  * igt@kms_cursor_crc@cursor-rapid-movement-512x512:
    - shard-dg2-set2:     NOTRUN -> [SKIP][39] ([Intel XE#308])
   [39]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-432/igt@kms_cursor_crc@cursor-rapid-movement-512x512.html

  * igt@kms_cursor_edge_walk@256x256-top-bottom:
    - shard-dg2-set2:     NOTRUN -> [DMESG-WARN][40] ([Intel XE#1214] / [Intel XE#282]) +12 other tests dmesg-warn
   [40]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-466/igt@kms_cursor_edge_walk@256x256-top-bottom.html

  * igt@kms_cursor_legacy@2x-long-cursor-vs-flip-legacy:
    - shard-dg2-set2:     NOTRUN -> [DMESG-WARN][41] ([Intel XE#1214] / [Intel XE#282] / [Intel XE#910])
   [41]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-433/igt@kms_cursor_legacy@2x-long-cursor-vs-flip-legacy.html

  * igt@kms_cursor_legacy@basic-busy-flip-before-cursor-varying-size:
    - shard-dg2-set2:     NOTRUN -> [SKIP][42] ([Intel XE#323]) +1 other test skip
   [42]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-432/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-varying-size.html

  * igt@kms_cursor_legacy@cursor-vs-flip-atomic:
    - shard-dg2-set2:     [PASS][43] -> [DMESG-WARN][44] ([Intel XE#1214] / [Intel XE#282]) +1 other test dmesg-warn
   [43]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1399-596cf447db94909c4788fd612876520531e439b0/shard-dg2-436/igt@kms_cursor_legacy@cursor-vs-flip-atomic.html
   [44]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-463/igt@kms_cursor_legacy@cursor-vs-flip-atomic.html

  * igt@kms_cursor_legacy@cursorb-vs-flipa-atomic-transitions-varying-size:
    - shard-adlp:         NOTRUN -> [SKIP][45] ([Intel XE#1201] / [Intel XE#309]) +2 other tests skip
   [45]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-adlp-6/igt@kms_cursor_legacy@cursorb-vs-flipa-atomic-transitions-varying-size.html

  * igt@kms_cursor_legacy@flip-vs-cursor-varying-size:
    - shard-dg2-set2:     NOTRUN -> [DMESG-WARN][46] ([Intel XE#282])
   [46]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-432/igt@kms_cursor_legacy@flip-vs-cursor-varying-size.html

  * igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions:
    - shard-dg2-set2:     NOTRUN -> [SKIP][47] ([Intel XE#1201] / [Intel XE#323])
   [47]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-464/igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions.html

  * igt@kms_dsc@dsc-with-bpc-formats:
    - shard-dg2-set2:     NOTRUN -> [SKIP][48] ([Intel XE#455]) +3 other tests skip
   [48]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-432/igt@kms_dsc@dsc-with-bpc-formats.html

  * igt@kms_feature_discovery@psr2:
    - shard-dg2-set2:     NOTRUN -> [SKIP][49] ([Intel XE#1135])
   [49]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-432/igt@kms_feature_discovery@psr2.html

  * igt@kms_flip@2x-flip-vs-wf_vblank:
    - shard-adlp:         NOTRUN -> [SKIP][50] ([Intel XE#1201] / [Intel XE#310])
   [50]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-adlp-8/igt@kms_flip@2x-flip-vs-wf_vblank.html

  * igt@kms_flip@flip-vs-suspend-interruptible@b-hdmi-a1:
    - shard-adlp:         NOTRUN -> [DMESG-FAIL][51] ([Intel XE#1608]) +2 other tests dmesg-fail
   [51]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-adlp-6/igt@kms_flip@flip-vs-suspend-interruptible@b-hdmi-a1.html

  * igt@kms_frontbuffer_tracking@drrs-2p-primscrn-cur-indfb-draw-mmap-wc:
    - shard-dg2-set2:     NOTRUN -> [SKIP][52] ([Intel XE#1201] / [Intel XE#651]) +16 other tests skip
   [52]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-464/igt@kms_frontbuffer_tracking@drrs-2p-primscrn-cur-indfb-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@fbcdrrs-1p-offscren-pri-indfb-draw-mmap-wc:
    - shard-adlp:         NOTRUN -> [SKIP][53] ([Intel XE#1201] / [Intel XE#651]) +2 other tests skip
   [53]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-adlp-6/igt@kms_frontbuffer_tracking@fbcdrrs-1p-offscren-pri-indfb-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@fbcdrrs-indfb-scaledprimary:
    - shard-dg2-set2:     NOTRUN -> [SKIP][54] ([Intel XE#651]) +6 other tests skip
   [54]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-432/igt@kms_frontbuffer_tracking@fbcdrrs-indfb-scaledprimary.html

  * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-blt:
    - shard-dg2-set2:     NOTRUN -> [SKIP][55] ([Intel XE#1201] / [Intel XE#653]) +23 other tests skip
   [55]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-436/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-indfb-draw-render:
    - shard-adlp:         NOTRUN -> [SKIP][56] ([Intel XE#1201] / [Intel XE#656]) +9 other tests skip
   [56]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-adlp-8/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-indfb-draw-render.html

  * igt@kms_frontbuffer_tracking@fbcpsr-indfb-scaledprimary:
    - shard-adlp:         NOTRUN -> [SKIP][57] ([Intel XE#1201] / [Intel XE#653]) +3 other tests skip
   [57]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-adlp-8/igt@kms_frontbuffer_tracking@fbcpsr-indfb-scaledprimary.html

  * igt@kms_frontbuffer_tracking@psr-2p-primscrn-pri-shrfb-draw-mmap-wc:
    - shard-dg2-set2:     NOTRUN -> [SKIP][58] ([Intel XE#653]) +10 other tests skip
   [58]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-432/igt@kms_frontbuffer_tracking@psr-2p-primscrn-pri-shrfb-draw-mmap-wc.html

  * igt@kms_hdr@invalid-hdr:
    - shard-dg2-set2:     NOTRUN -> [SKIP][59] ([Intel XE#1201] / [Intel XE#455]) +9 other tests skip
   [59]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-464/igt@kms_hdr@invalid-hdr.html

  * igt@kms_plane_cursor@primary@pipe-a-hdmi-a-6-size-256:
    - shard-dg2-set2:     NOTRUN -> [FAIL][60] ([Intel XE#616]) +3 other tests fail
   [60]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-436/igt@kms_plane_cursor@primary@pipe-a-hdmi-a-6-size-256.html

  * igt@kms_pm_backlight@fade-with-dpms:
    - shard-dg2-set2:     NOTRUN -> [SKIP][61] ([Intel XE#870])
   [61]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-432/igt@kms_pm_backlight@fade-with-dpms.html

  * igt@kms_pm_rpm@cursor-dpms:
    - shard-adlp:         NOTRUN -> [SKIP][62] ([Intel XE#1201] / [Intel XE#1211])
   [62]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-adlp-6/igt@kms_pm_rpm@cursor-dpms.html

  * igt@kms_psr2_sf@overlay-primary-update-sf-dmg-area:
    - shard-adlp:         NOTRUN -> [SKIP][63] ([Intel XE#1201]) +1 other test skip
   [63]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-adlp-6/igt@kms_psr2_sf@overlay-primary-update-sf-dmg-area.html

  * igt@kms_psr2_su@frontbuffer-xrgb8888:
    - shard-dg2-set2:     NOTRUN -> [SKIP][64] ([Intel XE#1122] / [Intel XE#1201])
   [64]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-466/igt@kms_psr2_su@frontbuffer-xrgb8888.html

  * igt@kms_psr@fbc-psr2-primary-blt:
    - shard-adlp:         NOTRUN -> [SKIP][65] ([Intel XE#1201] / [Intel XE#929]) +2 other tests skip
   [65]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-adlp-6/igt@kms_psr@fbc-psr2-primary-blt.html

  * igt@kms_psr@fbc-psr2-primary-render:
    - shard-dg2-set2:     NOTRUN -> [SKIP][66] ([Intel XE#1201] / [Intel XE#929]) +8 other tests skip
   [66]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-436/igt@kms_psr@fbc-psr2-primary-render.html

  * igt@kms_psr@pr-cursor-plane-onoff:
    - shard-dg2-set2:     NOTRUN -> [SKIP][67] ([Intel XE#929]) +6 other tests skip
   [67]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-432/igt@kms_psr@pr-cursor-plane-onoff.html

  * igt@kms_rmfb@close-fd:
    - shard-dg2-set2:     NOTRUN -> [FAIL][68] ([Intel XE#294]) +2 other tests fail
   [68]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-432/igt@kms_rmfb@close-fd.html

  * igt@kms_rotation_crc@primary-yf-tiled-reflect-x-180:
    - shard-dg2-set2:     NOTRUN -> [SKIP][69] ([Intel XE#1127] / [Intel XE#1201])
   [69]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-436/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-180.html

  * igt@kms_rotation_crc@primary-yf-tiled-reflect-x-270:
    - shard-adlp:         NOTRUN -> [SKIP][70] ([Intel XE#1201] / [Intel XE#327])
   [70]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-adlp-8/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-270.html

  * igt@kms_rotation_crc@sprite-rotation-270:
    - shard-dg2-set2:     NOTRUN -> [SKIP][71] ([Intel XE#327])
   [71]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-432/igt@kms_rotation_crc@sprite-rotation-270.html

  * igt@kms_tv_load_detect@load-detect:
    - shard-adlp:         NOTRUN -> [SKIP][72] ([Intel XE#1201] / [Intel XE#330])
   [72]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-adlp-8/igt@kms_tv_load_detect@load-detect.html

  * igt@kms_vrr@flip-dpms:
    - shard-adlp:         NOTRUN -> [SKIP][73] ([Intel XE#1201] / [Intel XE#455]) +7 other tests skip
   [73]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-adlp-8/igt@kms_vrr@flip-dpms.html

  * igt@kms_writeback@writeback-check-output-xrgb2101010:
    - shard-dg2-set2:     NOTRUN -> [SKIP][74] ([Intel XE#1201] / [Intel XE#756])
   [74]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-435/igt@kms_writeback@writeback-check-output-xrgb2101010.html

  * igt@kms_writeback@writeback-fb-id-xrgb2101010:
    - shard-adlp:         NOTRUN -> [SKIP][75] ([Intel XE#1201] / [Intel XE#756])
   [75]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-adlp-8/igt@kms_writeback@writeback-fb-id-xrgb2101010.html

  * igt@xe_copy_basic@mem-copy-linear-0x369:
    - shard-adlp:         NOTRUN -> [SKIP][76] ([Intel XE#1123] / [Intel XE#1201])
   [76]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-adlp-6/igt@xe_copy_basic@mem-copy-linear-0x369.html
    - shard-dg2-set2:     NOTRUN -> [SKIP][77] ([Intel XE#1123] / [Intel XE#1201])
   [77]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-433/igt@xe_copy_basic@mem-copy-linear-0x369.html

  * igt@xe_copy_basic@mem-copy-linear-0xfffe:
    - shard-dg2-set2:     NOTRUN -> [SKIP][78] ([Intel XE#1123])
   [78]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-432/igt@xe_copy_basic@mem-copy-linear-0xfffe.html

  * igt@xe_evict@evict-beng-cm-threads-large:
    - shard-dg2-set2:     [PASS][79] -> [INCOMPLETE][80] ([Intel XE#1195] / [Intel XE#1473] / [Intel XE#392])
   [79]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1399-596cf447db94909c4788fd612876520531e439b0/shard-dg2-434/igt@xe_evict@evict-beng-cm-threads-large.html
   [80]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-463/igt@xe_evict@evict-beng-cm-threads-large.html

  * igt@xe_evict@evict-beng-large-multi-vm:
    - shard-adlp:         NOTRUN -> [SKIP][81] ([Intel XE#1201] / [Intel XE#261])
   [81]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-adlp-8/igt@xe_evict@evict-beng-large-multi-vm.html

  * igt@xe_evict@evict-beng-mixed-many-threads-small:
    - shard-dg2-set2:     [PASS][82] -> [TIMEOUT][83] ([Intel XE#1473] / [Intel XE#402])
   [82]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1399-596cf447db94909c4788fd612876520531e439b0/shard-dg2-466/igt@xe_evict@evict-beng-mixed-many-threads-small.html
   [83]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-436/igt@xe_evict@evict-beng-mixed-many-threads-small.html

  * igt@xe_evict@evict-mixed-threads-large:
    - shard-dg2-set2:     NOTRUN -> [INCOMPLETE][84] ([Intel XE#1195] / [Intel XE#1473])
   [84]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-435/igt@xe_evict@evict-mixed-threads-large.html

  * igt@xe_evict@evict-small-multi-vm-cm:
    - shard-adlp:         NOTRUN -> [SKIP][85] ([Intel XE#1201] / [Intel XE#261] / [Intel XE#688])
   [85]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-adlp-8/igt@xe_evict@evict-small-multi-vm-cm.html

  * igt@xe_exec_basic@multigpu-once-bindexecqueue-userptr-rebind:
    - shard-adlp:         NOTRUN -> [SKIP][86] ([Intel XE#1201] / [Intel XE#1392]) +3 other tests skip
   [86]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-adlp-8/igt@xe_exec_basic@multigpu-once-bindexecqueue-userptr-rebind.html

  * igt@xe_exec_fault_mode@many-execqueues-basic-prefetch:
    - shard-dg2-set2:     NOTRUN -> [SKIP][87] ([Intel XE#1201] / [Intel XE#288]) +18 other tests skip
   [87]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-433/igt@xe_exec_fault_mode@many-execqueues-basic-prefetch.html

  * igt@xe_exec_fault_mode@many-userptr-invalidate-race-prefetch:
    - shard-adlp:         NOTRUN -> [SKIP][88] ([Intel XE#1201] / [Intel XE#288]) +9 other tests skip
   [88]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-adlp-6/igt@xe_exec_fault_mode@many-userptr-invalidate-race-prefetch.html

  * igt@xe_exec_fault_mode@once-invalid-userptr-fault:
    - shard-dg2-set2:     NOTRUN -> [SKIP][89] ([Intel XE#288]) +7 other tests skip
   [89]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-432/igt@xe_exec_fault_mode@once-invalid-userptr-fault.html

  * igt@xe_mmap@small-bar:
    - shard-adlp:         NOTRUN -> [SKIP][90] ([Intel XE#1201] / [Intel XE#512])
   [90]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-adlp-8/igt@xe_mmap@small-bar.html

  * igt@xe_pm@d3cold-multiple-execs:
    - shard-adlp:         NOTRUN -> [SKIP][91] ([Intel XE#1201] / [Intel XE#366])
   [91]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-adlp-6/igt@xe_pm@d3cold-multiple-execs.html
    - shard-dg2-set2:     NOTRUN -> [SKIP][92] ([Intel XE#1201] / [Intel XE#366])
   [92]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-433/igt@xe_pm@d3cold-multiple-execs.html

  * igt@xe_pm@d3hot-basic-exec:
    - shard-adlp:         NOTRUN -> [FAIL][93] ([Intel XE#355])
   [93]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-adlp-8/igt@xe_pm@d3hot-basic-exec.html

  * igt@xe_pm@s3-basic-exec:
    - shard-dg2-set2:     NOTRUN -> [DMESG-WARN][94] ([Intel XE#1162] / [Intel XE#1214]) +1 other test dmesg-warn
   [94]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-464/igt@xe_pm@s3-basic-exec.html

  * igt@xe_pm@s4-vm-bind-unbind-all:
    - shard-adlp:         [PASS][95] -> [DMESG-WARN][96] ([Intel XE#1214])
   [95]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1399-596cf447db94909c4788fd612876520531e439b0/shard-adlp-1/igt@xe_pm@s4-vm-bind-unbind-all.html
   [96]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-adlp-8/igt@xe_pm@s4-vm-bind-unbind-all.html

  * igt@xe_query@multigpu-query-cs-cycles:
    - shard-adlp:         NOTRUN -> [SKIP][97] ([Intel XE#1201] / [Intel XE#944])
   [97]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-adlp-8/igt@xe_query@multigpu-query-cs-cycles.html

  * igt@xe_query@multigpu-query-uc-fw-version-huc:
    - shard-dg2-set2:     NOTRUN -> [SKIP][98] ([Intel XE#1201] / [Intel XE#944])
   [98]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-436/igt@xe_query@multigpu-query-uc-fw-version-huc.html

  
#### Possible fixes ####

  * igt@kms_async_flips@async-flip-with-page-flip-events@pipe-b-hdmi-a-1-y:
    - shard-adlp:         [DMESG-WARN][99] ([Intel XE#1214] / [Intel XE#324]) -> [PASS][100] +2 other tests pass
   [99]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1399-596cf447db94909c4788fd612876520531e439b0/shard-adlp-1/igt@kms_async_flips@async-flip-with-page-flip-events@pipe-b-hdmi-a-1-y.html
   [100]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-adlp-8/igt@kms_async_flips@async-flip-with-page-flip-events@pipe-b-hdmi-a-1-y.html

  * igt@kms_async_flips@async-flip-with-page-flip-events@pipe-c-hdmi-a-1-x:
    - shard-adlp:         [DMESG-WARN][101] ([Intel XE#1033] / [Intel XE#1214]) -> [PASS][102]
   [101]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1399-596cf447db94909c4788fd612876520531e439b0/shard-adlp-1/igt@kms_async_flips@async-flip-with-page-flip-events@pipe-c-hdmi-a-1-x.html
   [102]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-adlp-8/igt@kms_async_flips@async-flip-with-page-flip-events@pipe-c-hdmi-a-1-x.html

  * igt@kms_cursor_legacy@2x-cursor-vs-flip-atomic:
    - shard-dg2-set2:     [DMESG-WARN][103] ([Intel XE#1214] / [Intel XE#282] / [Intel XE#910]) -> [PASS][104]
   [103]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1399-596cf447db94909c4788fd612876520531e439b0/shard-dg2-466/igt@kms_cursor_legacy@2x-cursor-vs-flip-atomic.html
   [104]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-436/igt@kms_cursor_legacy@2x-cursor-vs-flip-atomic.html

  * igt@kms_cursor_legacy@2x-long-cursor-vs-flip-atomic:
    - shard-dg2-set2:     [DMESG-WARN][105] ([Intel XE#1214] / [Intel XE#282]) -> [PASS][106] +1 other test pass
   [105]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1399-596cf447db94909c4788fd612876520531e439b0/shard-dg2-434/igt@kms_cursor_legacy@2x-long-cursor-vs-flip-atomic.html
   [106]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-466/igt@kms_cursor_legacy@2x-long-cursor-vs-flip-atomic.html

  * igt@kms_cursor_legacy@flip-vs-cursor-varying-size:
    - {shard-lnl}:        [FAIL][107] -> [PASS][108]
   [107]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1399-596cf447db94909c4788fd612876520531e439b0/shard-lnl-6/igt@kms_cursor_legacy@flip-vs-cursor-varying-size.html
   [108]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-lnl-2/igt@kms_cursor_legacy@flip-vs-cursor-varying-size.html

  * igt@kms_cursor_legacy@torture-bo@pipe-a:
    - {shard-lnl}:        [DMESG-WARN][109] ([Intel XE#877]) -> [PASS][110] +1 other test pass
   [109]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1399-596cf447db94909c4788fd612876520531e439b0/shard-lnl-1/igt@kms_cursor_legacy@torture-bo@pipe-a.html
   [110]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-lnl-4/igt@kms_cursor_legacy@torture-bo@pipe-a.html

  * igt@kms_flip@flip-vs-absolute-wf_vblank:
    - {shard-lnl}:        [FAIL][111] ([Intel XE#480] / [Intel XE#886]) -> [PASS][112] +1 other test pass
   [111]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1399-596cf447db94909c4788fd612876520531e439b0/shard-lnl-2/igt@kms_flip@flip-vs-absolute-wf_vblank.html
   [112]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-lnl-8/igt@kms_flip@flip-vs-absolute-wf_vblank.html

  * igt@kms_flip@wf_vblank-ts-check-interruptible:
    - shard-dg2-set2:     [INCOMPLETE][113] ([Intel XE#1195]) -> [PASS][114] +4 other tests pass
   [113]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1399-596cf447db94909c4788fd612876520531e439b0/shard-dg2-463/igt@kms_flip@wf_vblank-ts-check-interruptible.html
   [114]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-464/igt@kms_flip@wf_vblank-ts-check-interruptible.html

  * igt@kms_flip_tiling@flip-change-tiling@pipe-b-hdmi-a-1-y-to-x:
    - shard-adlp:         [FAIL][115] ([Intel XE#1874]) -> [PASS][116] +1 other test pass
   [115]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1399-596cf447db94909c4788fd612876520531e439b0/shard-adlp-9/igt@kms_flip_tiling@flip-change-tiling@pipe-b-hdmi-a-1-y-to-x.html
   [116]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-adlp-1/igt@kms_flip_tiling@flip-change-tiling@pipe-b-hdmi-a-1-y-to-x.html

  * igt@kms_pm_rpm@modeset-lpsp:
    - {shard-lnl}:        [SKIP][117] ([Intel XE#1211]) -> [PASS][118]
   [117]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1399-596cf447db94909c4788fd612876520531e439b0/shard-lnl-8/igt@kms_pm_rpm@modeset-lpsp.html
   [118]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-lnl-6/igt@kms_pm_rpm@modeset-lpsp.html

  * igt@xe_exec_compute_mode@many-execqueues-userptr-invalidate:
    - shard-adlp:         [FAIL][119] ([Intel XE#1069]) -> [PASS][120]
   [119]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1399-596cf447db94909c4788fd612876520531e439b0/shard-adlp-2/igt@xe_exec_compute_mode@many-execqueues-userptr-invalidate.html
   [120]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-adlp-2/igt@xe_exec_compute_mode@many-execqueues-userptr-invalidate.html

  * igt@xe_gt_freq@freq_fixed_exec:
    - shard-dg2-set2:     [FAIL][121] ([Intel XE#1414]) -> [PASS][122]
   [121]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1399-596cf447db94909c4788fd612876520531e439b0/shard-dg2-432/igt@xe_gt_freq@freq_fixed_exec.html
   [122]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-464/igt@xe_gt_freq@freq_fixed_exec.html
    - shard-adlp:         [FAIL][123] ([Intel XE#1414]) -> [PASS][124]
   [123]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1399-596cf447db94909c4788fd612876520531e439b0/shard-adlp-6/igt@xe_gt_freq@freq_fixed_exec.html
   [124]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-adlp-4/igt@xe_gt_freq@freq_fixed_exec.html

  * igt@xe_gt_freq@freq_low_max:
    - {shard-lnl}:        [FAIL][125] ([Intel XE#1045]) -> [PASS][126]
   [125]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1399-596cf447db94909c4788fd612876520531e439b0/shard-lnl-4/igt@xe_gt_freq@freq_low_max.html
   [126]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-lnl-2/igt@xe_gt_freq@freq_low_max.html

  * igt@xe_pm@s2idle-d3hot-basic-exec:
    - shard-dg2-set2:     [INCOMPLETE][127] ([Intel XE#1195] / [Intel XE#1358]) -> [PASS][128]
   [127]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1399-596cf447db94909c4788fd612876520531e439b0/shard-dg2-436/igt@xe_pm@s2idle-d3hot-basic-exec.html
   [128]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-432/igt@xe_pm@s2idle-d3hot-basic-exec.html

  * igt@xe_pm@s4-d3hot-basic-exec:
    - shard-adlp:         [DMESG-WARN][129] ([Intel XE#1214]) -> [PASS][130]
   [129]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1399-596cf447db94909c4788fd612876520531e439b0/shard-adlp-4/igt@xe_pm@s4-d3hot-basic-exec.html
   [130]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-adlp-2/igt@xe_pm@s4-d3hot-basic-exec.html

  * igt@xe_pm@s4-exec-after:
    - shard-adlp:         [ABORT][131] ([Intel XE#1358]) -> [PASS][132]
   [131]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1399-596cf447db94909c4788fd612876520531e439b0/shard-adlp-9/igt@xe_pm@s4-exec-after.html
   [132]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-adlp-8/igt@xe_pm@s4-exec-after.html

  * igt@xe_pm@s4-vm-bind-userptr:
    - {shard-lnl}:        [ABORT][133] ([Intel XE#1794]) -> [PASS][134]
   [133]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1399-596cf447db94909c4788fd612876520531e439b0/shard-lnl-2/igt@xe_pm@s4-vm-bind-userptr.html
   [134]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-lnl-8/igt@xe_pm@s4-vm-bind-userptr.html

  
#### Warnings ####

  * igt@kms_async_flips@async-flip-with-page-flip-events:
    - shard-adlp:         [DMESG-WARN][135] ([Intel XE#1033] / [Intel XE#1214] / [Intel XE#324]) -> [DMESG-WARN][136] ([Intel XE#1033] / [Intel XE#1214])
   [135]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1399-596cf447db94909c4788fd612876520531e439b0/shard-adlp-1/igt@kms_async_flips@async-flip-with-page-flip-events.html
   [136]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-adlp-8/igt@kms_async_flips@async-flip-with-page-flip-events.html

  * igt@kms_big_fb@4-tiled-32bpp-rotate-90:
    - shard-dg2-set2:     [SKIP][137] ([Intel XE#316]) -> [SKIP][138] ([Intel XE#1201] / [Intel XE#316]) +2 other tests skip
   [137]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1399-596cf447db94909c4788fd612876520531e439b0/shard-dg2-432/igt@kms_big_fb@4-tiled-32bpp-rotate-90.html
   [138]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-464/igt@kms_big_fb@4-tiled-32bpp-rotate-90.html

  * igt@kms_big_fb@linear-8bpp-rotate-90:
    - shard-dg2-set2:     [SKIP][139] ([Intel XE#1201] / [Intel XE#316]) -> [SKIP][140] ([Intel XE#316])
   [139]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1399-596cf447db94909c4788fd612876520531e439b0/shard-dg2-466/igt@kms_big_fb@linear-8bpp-rotate-90.html
   [140]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-432/igt@kms_big_fb@linear-8bpp-rotate-90.html

  * igt@kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-180-async-flip:
    - shard-adlp:         [DMESG-FAIL][141] ([Intel XE#324]) -> [FAIL][142] ([Intel XE#1231])
   [141]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1399-596cf447db94909c4788fd612876520531e439b0/shard-adlp-2/igt@kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-180-async-flip.html
   [142]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-adlp-6/igt@kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-180-async-flip.html

  * igt@kms_big_fb@y-tiled-addfb-size-offset-overflow:
    - shard-dg2-set2:     [SKIP][143] ([Intel XE#607]) -> [SKIP][144] ([Intel XE#1201] / [Intel XE#607])
   [143]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1399-596cf447db94909c4788fd612876520531e439b0/shard-dg2-432/igt@kms_big_fb@y-tiled-addfb-size-offset-overflow.html
   [144]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-435/igt@kms_big_fb@y-tiled-addfb-size-offset-overflow.html

  * igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-180-hflip:
    - shard-dg2-set2:     [SKIP][145] ([Intel XE#1124] / [Intel XE#1201]) -> [SKIP][146] ([Intel XE#1124]) +4 other tests skip
   [145]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1399-596cf447db94909c4788fd612876520531e439b0/shard-dg2-466/igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-180-hflip.html
   [146]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-432/igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-180-hflip.html

  * igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-180-hflip-async-flip:
    - shard-dg2-set2:     [SKIP][147] ([Intel XE#1124]) -> [SKIP][148] ([Intel XE#1124] / [Intel XE#1201]) +4 other tests skip
   [147]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1399-596cf447db94909c4788fd612876520531e439b0/shard-dg2-432/igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-180-hflip-async-flip.html
   [148]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-435/igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-180-hflip-async-flip.html

  * igt@kms_bw@linear-tiling-2-displays-2160x1440p:
    - shard-dg2-set2:     [SKIP][149] ([Intel XE#367]) -> [SKIP][150] ([Intel XE#1201] / [Intel XE#367])
   [149]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1399-596cf447db94909c4788fd612876520531e439b0/shard-dg2-432/igt@kms_bw@linear-tiling-2-displays-2160x1440p.html
   [150]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-464/igt@kms_bw@linear-tiling-2-displays-2160x1440p.html

  * igt@kms_bw@linear-tiling-4-displays-2560x1440p:
    - shard-dg2-set2:     [SKIP][151] ([Intel XE#1201] / [Intel XE#367]) -> [SKIP][152] ([Intel XE#367])
   [151]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1399-596cf447db94909c4788fd612876520531e439b0/shard-dg2-466/igt@kms_bw@linear-tiling-4-displays-2560x1440p.html
   [152]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-432/igt@kms_bw@linear-tiling-4-displays-2560x1440p.html

  * igt@kms_ccs@bad-pixel-format-4-tiled-mtl-mc-ccs@pipe-a-dp-4:
    - shard-dg2-set2:     [SKIP][153] ([Intel XE#787]) -> [SKIP][154] ([Intel XE#1201] / [Intel XE#787]) +41 other tests skip
   [153]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1399-596cf447db94909c4788fd612876520531e439b0/shard-dg2-432/igt@kms_ccs@bad-pixel-format-4-tiled-mtl-mc-ccs@pipe-a-dp-4.html
   [154]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-464/igt@kms_ccs@bad-pixel-format-4-tiled-mtl-mc-ccs@pipe-a-dp-4.html

  * igt@kms_ccs@ccs-on-another-bo-yf-tiled-ccs@pipe-a-dp-4:
    - shard-dg2-set2:     [SKIP][155] ([Intel XE#1201] / [Intel XE#787]) -> [SKIP][156] ([Intel XE#787]) +20 other tests skip
   [155]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1399-596cf447db94909c4788fd612876520531e439b0/shard-dg2-436/igt@kms_ccs@ccs-on-another-bo-yf-tiled-ccs@pipe-a-dp-4.html
   [156]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-432/igt@kms_ccs@ccs-on-another-bo-yf-tiled-ccs@pipe-a-dp-4.html

  * igt@kms_ccs@crc-primary-basic-yf-tiled-ccs@pipe-d-dp-4:
    - shard-dg2-set2:     [SKIP][157] ([Intel XE#1201] / [Intel XE#455] / [Intel XE#787]) -> [SKIP][158] ([Intel XE#455] / [Intel XE#787]) +5 other tests skip
   [157]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1399-596cf447db94909c4788fd612876520531e439b0/shard-dg2-466/igt@kms_ccs@crc-primary-basic-yf-tiled-ccs@pipe-d-dp-4.html
   [158]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-432/igt@kms_ccs@crc-primary-basic-yf-tiled-ccs@pipe-d-dp-4.html

  * igt@kms_ccs@crc-primary-rotation-180-4-tiled-xe2-ccs:
    - shard-dg2-set2:     [SKIP][159] ([Intel XE#1252]) -> [SKIP][160] ([Intel XE#1201] / [Intel XE#1252])
   [159]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1399-596cf447db94909c4788fd612876520531e439b0/shard-dg2-432/igt@kms_ccs@crc-primary-rotation-180-4-tiled-xe2-ccs.html
   [160]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-435/igt@kms_ccs@crc-primary-rotation-180-4-tiled-xe2-ccs.html

  * igt@kms_ccs@missing-ccs-buffer-4-tiled-mtl-rc-ccs-cc:
    - shard-dg2-set2:     [SKIP][161] ([Intel XE#455] / [Intel XE#787]) -> [SKIP][162] ([Intel XE#1201] / [Intel XE#455] / [Intel XE#787]) +11 other tests skip
   [161]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1399-596cf447db94909c4788fd612876520531e439b0/shard-dg2-432/igt@kms_ccs@missing-ccs-buffer-4-tiled-mtl-rc-ccs-cc.html
   [162]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-435/igt@kms_ccs@missing-ccs-buffer-4-tiled-mtl-rc-ccs-cc.html

  * igt@kms_cdclk@mode-transition@pipe-c-dp-4:
    - shard-dg2-set2:     [SKIP][163] ([Intel XE#314]) -> [SKIP][164] ([Intel XE#1201] / [Intel XE#314]) +3 other tests skip
   [163]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1399-596cf447db94909c4788fd612876520531e439b0/shard-dg2-432/igt@kms_cdclk@mode-transition@pipe-c-dp-4.html
   [164]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-464/igt@kms_cdclk@mode-transition@pipe-c-dp-4.html

  * igt@kms_chamelium_color@ctm-0-50:
    - shard-dg2-set2:     [SKIP][165] ([Intel XE#1201] / [Intel XE#306]) -> [SKIP][166] ([Intel XE#306]) +1 other test skip
   [165]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1399-596cf447db94909c4788fd612876520531e439b0/shard-dg2-466/igt@kms_chamelium_color@ctm-0-50.html
   [166]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-432/igt@kms_chamelium_color@ctm-0-50.html

  * igt@kms_chamelium_edid@dp-edid-change-during-suspend:
    - shard-dg2-set2:     [SKIP][167] ([Intel XE#1201] / [Intel XE#373]) -> [SKIP][168] ([Intel XE#373]) +3 other tests skip
   [167]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1399-596cf447db94909c4788fd612876520531e439b0/shard-dg2-466/igt@kms_chamelium_edid@dp-edid-change-during-suspend.html
   [168]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-432/igt@kms_chamelium_edid@dp-edid-change-during-suspend.html

  * igt@kms_chamelium_hpd@hdmi-hpd-after-hibernate:
    - shard-dg2-set2:     [SKIP][169] ([Intel XE#373]) -> [SKIP][170] ([Intel XE#1201] / [Intel XE#373]) +4 other tests skip
   [169]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1399-596cf447db94909c4788fd612876520531e439b0/shard-dg2-432/igt@kms_chamelium_hpd@hdmi-hpd-after-hibernate.html
   [170]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-464/igt@kms_chamelium_hpd@hdmi-hpd-after-hibernate.html

  * igt@kms_content_protection@dp-mst-type-0:
    - shard-dg2-set2:     [SKIP][171] ([Intel XE#307]) -> [SKIP][172] ([Intel XE#1201] / [Intel XE#307]) +1 other test skip
   [171]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1399-596cf447db94909c4788fd612876520531e439b0/shard-dg2-432/igt@kms_content_protection@dp-mst-type-0.html
   [172]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-435/igt@kms_content_protection@dp-mst-type-0.html

  * igt@kms_cursor_crc@cursor-onscreen-512x170:
    - shard-dg2-set2:     [SKIP][173] ([Intel XE#1201] / [Intel XE#308]) -> [SKIP][174] ([Intel XE#308]) +1 other test skip
   [173]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1399-596cf447db94909c4788fd612876520531e439b0/shard-dg2-466/igt@kms_cursor_crc@cursor-onscreen-512x170.html
   [174]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-432/igt@kms_cursor_crc@cursor-onscreen-512x170.html

  * igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions-varying-size:
    - shard-dg2-set2:     [DMESG-WARN][175] ([Intel XE#1214] / [Intel XE#282]) -> [DMESG-WARN][176] ([Intel XE#282]) +2 other tests dmesg-warn
   [175]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1399-596cf447db94909c4788fd612876520531e439b0/shard-dg2-466/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions-varying-size.html
   [176]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-432/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions-varying-size.html

  * igt@kms_cursor_legacy@forked-bo@all-pipes:
    - shard-dg2-set2:     [INCOMPLETE][177] ([Intel XE#1195]) -> [DMESG-WARN][178] ([Intel XE#282]) +1 other test dmesg-warn
   [177]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1399-596cf447db94909c4788fd612876520531e439b0/shard-dg2-466/igt@kms_cursor_legacy@forked-bo@all-pipes.html
   [178]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-432/igt@kms_cursor_legacy@forked-bo@all-pipes.html

  * igt@kms_cursor_legacy@single-bo@all-pipes:
    - shard-dg2-set2:     [DMESG-WARN][179] ([Intel XE#282]) -> [DMESG-WARN][180] ([Intel XE#1214] / [Intel XE#282]) +1 other test dmesg-warn
   [179]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1399-596cf447db94909c4788fd612876520531e439b0/shard-dg2-432/igt@kms_cursor_legacy@single-bo@all-pipes.html
   [180]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-435/igt@kms_cursor_legacy@single-bo@all-pipes.html

  * igt@kms_fbcon_fbt@fbc-suspend:
    - shard-adlp:         [DMESG-FAIL][181] ([Intel XE#1608]) -> [INCOMPLETE][182] ([Intel XE#1195] / [Intel XE#927])
   [181]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1399-596cf447db94909c4788fd612876520531e439b0/shard-adlp-6/igt@kms_fbcon_fbt@fbc-suspend.html
   [182]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-adlp-9/igt@kms_fbcon_fbt@fbc-suspend.html

  * igt@kms_feature_discovery@chamelium:
    - shard-dg2-set2:     [SKIP][183] ([Intel XE#701]) -> [SKIP][184] ([Intel XE#1201] / [Intel XE#701])
   [183]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1399-596cf447db94909c4788fd612876520531e439b0/shard-dg2-432/igt@kms_feature_discovery@chamelium.html
   [184]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-435/igt@kms_feature_discovery@chamelium.html

  * igt@kms_flip@flip-vs-suspend-interruptible:
    - shard-adlp:         [INCOMPLETE][185] ([Intel XE#1195] / [Intel XE#927]) -> [DMESG-FAIL][186] ([Intel XE#1608])
   [185]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1399-596cf447db94909c4788fd612876520531e439b0/shard-adlp-1/igt@kms_flip@flip-vs-suspend-interruptible.html
   [186]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-adlp-6/igt@kms_flip@flip-vs-suspend-interruptible.html
    - shard-dg2-set2:     [INCOMPLETE][187] ([Intel XE#1195]) -> [DMESG-WARN][188] ([Intel XE#1162] / [Intel XE#1214])
   [187]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1399-596cf447db94909c4788fd612876520531e439b0/shard-dg2-435/igt@kms_flip@flip-vs-suspend-interruptible.html
   [188]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-433/igt@kms_flip@flip-vs-suspend-interruptible.html

  * igt@kms_flip@flip-vs-suspend-interruptible@a-hdmi-a1:
    - shard-adlp:         [INCOMPLETE][189] ([Intel XE#1195]) -> [DMESG-FAIL][190] ([Intel XE#1608]) +1 other test dmesg-fail
   [189]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1399-596cf447db94909c4788fd612876520531e439b0/shard-adlp-1/igt@kms_flip@flip-vs-suspend-interruptible@a-hdmi-a1.html
   [190]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-adlp-6/igt@kms_flip@flip-vs-suspend-interruptible@a-hdmi-a1.html

  * igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-shrfb-msflip-blt:
    - shard-dg2-set2:     [SKIP][191] ([Intel XE#1201] / [Intel XE#651]) -> [SKIP][192] ([Intel XE#651]) +13 other tests skip
   [191]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1399-596cf447db94909c4788fd612876520531e439b0/shard-dg2-466/igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-shrfb-msflip-blt.html
   [192]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-432/igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-shrfb-msflip-blt.html

  * igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-spr-indfb-fullscreen:
    - shard-dg2-set2:     [SKIP][193] ([Intel XE#651]) -> [SKIP][194] ([Intel XE#1201] / [Intel XE#651]) +15 other tests skip
   [193]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1399-596cf447db94909c4788fd612876520531e439b0/shard-dg2-432/igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-spr-indfb-fullscreen.html
   [194]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-464/igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-spr-indfb-fullscreen.html

  * igt@kms_frontbuffer_tracking@fbc-suspend:
    - shard-adlp:         [DMESG-FAIL][195] ([Intel XE#1162] / [Intel XE#1191]) -> [DMESG-FAIL][196] ([Intel XE#1608])
   [195]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1399-596cf447db94909c4788fd612876520531e439b0/shard-adlp-8/igt@kms_frontbuffer_tracking@fbc-suspend.html
   [196]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-adlp-6/igt@kms_frontbuffer_tracking@fbc-suspend.html

  * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-cur-indfb-move:
    - shard-dg2-set2:     [SKIP][197] ([Intel XE#1201] / [Intel XE#653]) -> [SKIP][198] ([Intel XE#653]) +7 other tests skip
   [197]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1399-596cf447db94909c4788fd612876520531e439b0/shard-dg2-466/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-cur-indfb-move.html
   [198]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-432/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-cur-indfb-move.html

  * igt@kms_frontbuffer_tracking@psr-1p-rte:
    - shard-dg2-set2:     [SKIP][199] ([Intel XE#653]) -> [SKIP][200] ([Intel XE#1201] / [Intel XE#653]) +15 other tests skip
   [199]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1399-596cf447db94909c4788fd612876520531e439b0/shard-dg2-432/igt@kms_frontbuffer_tracking@psr-1p-rte.html
   [200]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-435/igt@kms_frontbuffer_tracking@psr-1p-rte.html

  * igt@kms_getfb@getfb-reject-ccs:
    - shard-dg2-set2:     [SKIP][201] ([Intel XE#1201] / [Intel XE#605]) -> [SKIP][202] ([Intel XE#605])
   [201]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1399-596cf447db94909c4788fd612876520531e439b0/shard-dg2-436/igt@kms_getfb@getfb-reject-ccs.html
   [202]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-432/igt@kms_getfb@getfb-reject-ccs.html

  * igt@kms_plane_lowres@tiling-y:
    - shard-dg2-set2:     [SKIP][203] ([Intel XE#1201] / [Intel XE#455]) -> [SKIP][204] ([Intel XE#455]) +8 other tests skip
   [203]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1399-596cf447db94909c4788fd612876520531e439b0/shard-dg2-466/igt@kms_plane_lowres@tiling-y.html
   [204]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-432/igt@kms_plane_lowres@tiling-y.html

  * igt@kms_plane_scaling@plane-downscale-factor-0-25-with-modifiers:
    - shard-dg2-set2:     [SKIP][205] ([Intel XE#1201] / [Intel XE#455] / [Intel XE#498]) -> [SKIP][206] ([Intel XE#455] / [Intel XE#498]) +1 other test skip
   [205]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1399-596cf447db94909c4788fd612876520531e439b0/shard-dg2-466/igt@kms_plane_scaling@plane-downscale-factor-0-25-with-modifiers.html
   [206]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-432/igt@kms_plane_scaling@plane-downscale-factor-0-25-with-modifiers.html

  * igt@kms_plane_scaling@plane-downscale-factor-0-25-with-modifiers@pipe-a-hdmi-a-6:
    - shard-dg2-set2:     [SKIP][207] ([Intel XE#1201] / [Intel XE#498]) -> [SKIP][208] ([Intel XE#498]) +2 other tests skip
   [207]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1399-596cf447db94909c4788fd612876520531e439b0/shard-dg2-466/igt@kms_plane_scaling@plane-downscale-factor-0-25-with-modifiers@pipe-a-hdmi-a-6.html
   [208]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-432/igt@kms_plane_scaling@plane-downscale-factor-0-25-with-modifiers@pipe-a-hdmi-a-6.html

  * igt@kms_plane_scaling@plane-downscale-factor-0-25-with-rotation:
    - shard-dg2-set2:     [SKIP][209] ([Intel XE#455] / [Intel XE#498]) -> [SKIP][210] ([Intel XE#1201] / [Intel XE#455] / [Intel XE#498]) +1 other test skip
   [209]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1399-596cf447db94909c4788fd612876520531e439b0/shard-dg2-432/igt@kms_plane_scaling@plane-downscale-factor-0-25-with-rotation.html
   [210]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-435/igt@kms_plane_scaling@plane-downscale-factor-0-25-with-rotation.html

  * igt@kms_plane_scaling@plane-downscale-factor-0-25-with-rotation@pipe-b-hdmi-a-6:
    - shard-dg2-set2:     [SKIP][211] ([Intel XE#498]) -> [SKIP][212] ([Intel XE#1201] / [Intel XE#498]) +2 other tests skip
   [211]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1399-596cf447db94909c4788fd612876520531e439b0/shard-dg2-432/igt@kms_plane_scaling@plane-downscale-factor-0-25-with-rotation@pipe-b-hdmi-a-6.html
   [212]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-435/igt@kms_plane_scaling@plane-downscale-factor-0-25-with-rotation@pipe-b-hdmi-a-6.html

  * igt@kms_plane_scaling@planes-downscale-factor-0-25@pipe-b-hdmi-a-6:
    - shard-dg2-set2:     [SKIP][213] ([Intel XE#1201] / [Intel XE#305]) -> [SKIP][214] ([Intel XE#305]) +2 other tests skip
   [213]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1399-596cf447db94909c4788fd612876520531e439b0/shard-dg2-466/igt@kms_plane_scaling@planes-downscale-factor-0-25@pipe-b-hdmi-a-6.html
   [214]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-432/igt@kms_plane_scaling@planes-downscale-factor-0-25@pipe-b-hdmi-a-6.html

  * igt@kms_plane_scaling@planes-downscale-factor-0-25@pipe-d-hdmi-a-6:
    - shard-dg2-set2:     [SKIP][215] ([Intel XE#1201] / [Intel XE#305] / [Intel XE#455]) -> [SKIP][216] ([Intel XE#305] / [Intel XE#455]) +1 other test skip
   [215]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1399-596cf447db94909c4788fd612876520531e439b0/shard-dg2-466/igt@kms_plane_scaling@planes-downscale-factor-0-25@pipe-d-hdmi-a-6.html
   [216]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-432/igt@kms_plane_scaling@planes-downscale-factor-0-25@pipe-d-hdmi-a-6.html

  * igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-25:
    - shard-dg2-set2:     [SKIP][217] ([Intel XE#305] / [Intel XE#455]) -> [SKIP][218] ([Intel XE#1201] / [Intel XE#305] / [Intel XE#455])
   [217]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1399-596cf447db94909c4788fd612876520531e439b0/shard-dg2-432/igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-25.html
   [218]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-435/igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-25.html

  * igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-25@pipe-c-hdmi-a-6:
    - shard-dg2-set2:     [SKIP][219] ([Intel XE#305]) -> [SKIP][220] ([Intel XE#1201] / [Intel XE#305]) +2 other tests skip
   [219]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1399-596cf447db94909c4788fd612876520531e439b0/shard-dg2-432/igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-25@pipe-c-hdmi-a-6.html
   [220]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-435/igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-25@pipe-c-hdmi-a-6.html

  * igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-25@pipe-d-hdmi-a-6:
    - shard-dg2-set2:     [SKIP][221] ([Intel XE#455]) -> [SKIP][222] ([Intel XE#1201] / [Intel XE#455]) +8 other tests skip
   [221]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1399-596cf447db94909c4788fd612876520531e439b0/shard-dg2-432/igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-25@pipe-d-hdmi-a-6.html
   [222]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-435/igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-25@pipe-d-hdmi-a-6.html

  * igt@kms_pm_dc@dc5-psr:
    - shard-dg2-set2:     [SKIP][223] ([Intel XE#1129]) -> [SKIP][224] ([Intel XE#1129] / [Intel XE#1201])
   [223]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1399-596cf447db94909c4788fd612876520531e439b0/shard-dg2-432/igt@kms_pm_dc@dc5-psr.html
   [224]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-464/igt@kms_pm_dc@dc5-psr.html

  * igt@kms_pm_dc@dc6-dpms:
    - shard-dg2-set2:     [SKIP][225] ([Intel XE#908]) -> [SKIP][226] ([Intel XE#1201] / [Intel XE#908])
   [225]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1399-596cf447db94909c4788fd612876520531e439b0/shard-dg2-432/igt@kms_pm_dc@dc6-dpms.html
   [226]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-435/igt@kms_pm_dc@dc6-dpms.html

  * igt@kms_pm_dc@deep-pkgc:
    - shard-adlp:         [SKIP][227] ([Intel XE#1201]) -> [SKIP][228] ([Intel XE#1201] / [Intel XE#2007])
   [227]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1399-596cf447db94909c4788fd612876520531e439b0/shard-adlp-2/igt@kms_pm_dc@deep-pkgc.html
   [228]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-adlp-2/igt@kms_pm_dc@deep-pkgc.html

  * igt@kms_psr@fbc-pr-primary-render:
    - shard-dg2-set2:     [SKIP][229] ([Intel XE#1201] / [Intel XE#929]) -> [SKIP][230] ([Intel XE#929]) +7 other tests skip
   [229]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1399-596cf447db94909c4788fd612876520531e439b0/shard-dg2-466/igt@kms_psr@fbc-pr-primary-render.html
   [230]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-432/igt@kms_psr@fbc-pr-primary-render.html

  * igt@kms_psr@fbc-psr2-sprite-plane-onoff:
    - shard-dg2-set2:     [SKIP][231] ([Intel XE#929]) -> [SKIP][232] ([Intel XE#1201] / [Intel XE#929]) +8 other tests skip
   [231]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1399-596cf447db94909c4788fd612876520531e439b0/shard-dg2-432/igt@kms_psr@fbc-psr2-sprite-plane-onoff.html
   [232]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-435/igt@kms_psr@fbc-psr2-sprite-plane-onoff.html

  * igt@kms_psr_stress_test@flip-primary-invalidate-overlay:
    - shard-dg2-set2:     [SKIP][233] ([Intel XE#1149]) -> [SKIP][234] ([Intel XE#1149] / [Intel XE#1201])
   [233]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1399-596cf447db94909c4788fd612876520531e439b0/shard-dg2-432/igt@kms_psr_stress_test@flip-primary-invalidate-overlay.html
   [234]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-435/igt@kms_psr_stress_test@flip-primary-invalidate-overlay.html

  * igt@kms_rotation_crc@primary-y-tiled-reflect-x-0:
    - shard-dg2-set2:     [SKIP][235] ([Intel XE#1127]) -> [SKIP][236] ([Intel XE#1127] / [Intel XE#1201]) +1 other test skip
   [235]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1399-596cf447db94909c4788fd612876520531e439b0/shard-dg2-432/igt@kms_rotation_crc@primary-y-tiled-reflect-x-0.html
   [236]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-464/igt@kms_rotation_crc@primary-y-tiled-reflect-x-0.html

  * igt@kms_rotation_crc@primary-y-tiled-reflect-x-90:
    - shard-dg2-set2:     [SKIP][237] ([Intel XE#1201] / [Intel XE#327]) -> [SKIP][238] ([Intel XE#327]) +1 other test skip
   [237]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1399-596cf447db94909c4788fd612876520531e439b0/shard-dg2-466/igt@kms_rotation_crc@primary-y-tiled-reflect-x-90.html
   [238]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-432/igt@kms_rotation_crc@primary-y-tiled-reflect-x-90.html

  * igt@kms_tiled_display@basic-test-pattern-with-chamelium:
    - shard-dg2-set2:     [SKIP][239] ([Intel XE#1500]) -> [SKIP][240] ([Intel XE#1201] / [Intel XE#1500])
   [239]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1399-596cf447db94909c4788fd612876520531e439b0/shard-dg2-432/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html
   [240]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-435/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html

  * igt@kms_writeback@writeback-fb-id:
    - shard-dg2-set2:     [SKIP][241] ([Intel XE#756]) -> [SKIP][242] ([Intel XE#1201] / [Intel XE#756])
   [241]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1399-596cf447db94909c4788fd612876520531e439b0/shard-dg2-432/igt@kms_writeback@writeback-fb-id.html
   [242]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-435/igt@kms_writeback@writeback-fb-id.html

  * igt@kms_writeback@writeback-fb-id-xrgb2101010:
    - shard-dg2-set2:     [SKIP][243] ([Intel XE#1201] / [Intel XE#756]) -> [SKIP][244] ([Intel XE#756]) +1 other test skip
   [243]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1399-596cf447db94909c4788fd612876520531e439b0/shard-dg2-466/igt@kms_writeback@writeback-fb-id-xrgb2101010.html
   [244]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-432/igt@kms_writeback@writeback-fb-id-xrgb2101010.html

  * igt@xe_compute_preempt@compute-threadgroup-preempt@engine-drm_xe_engine_class_compute:
    - shard-dg2-set2:     [SKIP][245] ([Intel XE#1280] / [Intel XE#455]) -> [SKIP][246] ([Intel XE#1201] / [Intel XE#1280] / [Intel XE#455]) +1 other test skip
   [245]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1399-596cf447db94909c4788fd612876520531e439b0/shard-dg2-432/igt@xe_compute_preempt@compute-threadgroup-preempt@engine-drm_xe_engine_class_compute.html
   [246]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-464/igt@xe_compute_preempt@compute-threadgroup-preempt@engine-drm_xe_engine_class_compute.html

  * igt@xe_copy_basic@mem-set-linear-0xfd:
    - shard-dg2-set2:     [SKIP][247] ([Intel XE#1126]) -> [SKIP][248] ([Intel XE#1126] / [Intel XE#1201])
   [247]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1399-596cf447db94909c4788fd612876520531e439b0/shard-dg2-432/igt@xe_copy_basic@mem-set-linear-0xfd.html
   [248]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-435/igt@xe_copy_basic@mem-set-linear-0xfd.html

  * igt@xe_evict@evict-threads-large:
    - shard-dg2-set2:     [INCOMPLETE][249] ([Intel XE#1195] / [Intel XE#1473]) -> [TIMEOUT][250] ([Intel XE#1473] / [Intel XE#392])
   [249]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1399-596cf447db94909c4788fd612876520531e439b0/shard-dg2-436/igt@xe_evict@evict-threads-large.html
   [250]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-436/igt@xe_evict@evict-threads-large.html

  * igt@xe_exec_fault_mode@many-bindexecqueue-rebind:
    - shard-dg2-set2:     [SKIP][251] ([Intel XE#1201] / [Intel XE#288]) -> [SKIP][252] ([Intel XE#288]) +9 other tests skip
   [251]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1399-596cf447db94909c4788fd612876520531e439b0/shard-dg2-466/igt@xe_exec_fault_mode@many-bindexecqueue-rebind.html
   [252]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-432/igt@xe_exec_fault_mode@many-bindexecqueue-rebind.html

  * igt@xe_exec_fault_mode@twice-bindexecqueue-userptr-invalidate-race:
    - shard-dg2-set2:     [SKIP][253] ([Intel XE#288]) -> [SKIP][254] ([Intel XE#1201] / [Intel XE#288]) +9 other tests skip
   [253]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1399-596cf447db94909c4788fd612876520531e439b0/shard-dg2-432/igt@xe_exec_fault_mode@twice-bindexecqueue-userptr-invalidate-race.html
   [254]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-464/igt@xe_exec_fault_mode@twice-bindexecqueue-userptr-invalidate-race.html

  * igt@xe_mmap@small-bar:
    - shard-dg2-set2:     [SKIP][255] ([Intel XE#1201] / [Intel XE#512]) -> [SKIP][256] ([Intel XE#512])
   [255]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1399-596cf447db94909c4788fd612876520531e439b0/shard-dg2-466/igt@xe_mmap@small-bar.html
   [256]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-432/igt@xe_mmap@small-bar.html

  * igt@xe_pat@pat-index-xehpc:
    - shard-dg2-set2:     [SKIP][257] ([Intel XE#1201] / [Intel XE#979]) -> [SKIP][258] ([Intel XE#979])
   [257]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1399-596cf447db94909c4788fd612876520531e439b0/shard-dg2-466/igt@xe_pat@pat-index-xehpc.html
   [258]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-432/igt@xe_pat@pat-index-xehpc.html

  * igt@xe_pm@d3cold-mmap-vram:
    - shard-dg2-set2:     [SKIP][259] ([Intel XE#366]) -> [SKIP][260] ([Intel XE#1201] / [Intel XE#366])
   [259]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1399-596cf447db94909c4788fd612876520531e439b0/shard-dg2-432/igt@xe_pm@d3cold-mmap-vram.html
   [260]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-435/igt@xe_pm@d3cold-mmap-vram.html

  * igt@xe_pm@s3-vm-bind-prefetch:
    - shard-dg2-set2:     [DMESG-WARN][261] ([Intel XE#1162] / [Intel XE#1551]) -> [DMESG-WARN][262] ([Intel XE#1162] / [Intel XE#1214] / [Intel XE#1551])
   [261]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1399-596cf447db94909c4788fd612876520531e439b0/shard-dg2-432/igt@xe_pm@s3-vm-bind-prefetch.html
   [262]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-464/igt@xe_pm@s3-vm-bind-prefetch.html

  * igt@xe_pm@s3-vm-bind-unbind-all:
    - shard-adlp:         [DMESG-FAIL][263] ([Intel XE#1608]) -> [INCOMPLETE][264] ([Intel XE#1195])
   [263]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1399-596cf447db94909c4788fd612876520531e439b0/shard-adlp-2/igt@xe_pm@s3-vm-bind-unbind-all.html
   [264]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-adlp-1/igt@xe_pm@s3-vm-bind-unbind-all.html

  * igt@xe_pm@s3-vm-bind-userptr:
    - shard-dg2-set2:     [DMESG-WARN][265] ([Intel XE#1162] / [Intel XE#1214]) -> [DMESG-WARN][266] ([Intel XE#1162]) +1 other test dmesg-warn
   [265]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1399-596cf447db94909c4788fd612876520531e439b0/shard-dg2-436/igt@xe_pm@s3-vm-bind-userptr.html
   [266]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-432/igt@xe_pm@s3-vm-bind-userptr.html

  * igt@xe_pm@s4-multiple-execs:
    - shard-adlp:         [DMESG-WARN][267] ([Intel XE#1214]) -> [ABORT][268] ([Intel XE#1358] / [Intel XE#1794])
   [267]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1399-596cf447db94909c4788fd612876520531e439b0/shard-adlp-8/igt@xe_pm@s4-multiple-execs.html
   [268]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-adlp-9/igt@xe_pm@s4-multiple-execs.html

  * igt@xe_pm@vram-d3cold-threshold:
    - shard-dg2-set2:     [SKIP][269] ([Intel XE#579]) -> [SKIP][270] ([Intel XE#1201] / [Intel XE#579])
   [269]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1399-596cf447db94909c4788fd612876520531e439b0/shard-dg2-432/igt@xe_pm@vram-d3cold-threshold.html
   [270]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-435/igt@xe_pm@vram-d3cold-threshold.html

  * igt@xe_query@multigpu-query-cs-cycles:
    - shard-dg2-set2:     [SKIP][271] ([Intel XE#1201] / [Intel XE#944]) -> [SKIP][272] ([Intel XE#944])
   [271]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1399-596cf447db94909c4788fd612876520531e439b0/shard-dg2-466/igt@xe_query@multigpu-query-cs-cycles.html
   [272]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-dg2-432/igt@xe_query@multigpu-query-cs-cycles.html

  * igt@xe_wedged@wedged-at-any-timeout:
    - shard-adlp:         [DMESG-WARN][273] ([Intel XE#1214] / [Intel XE#1760]) -> [DMESG-WARN][274] ([Intel XE#1214] / [Intel XE#1330] / [Intel XE#1760])
   [273]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1399-596cf447db94909c4788fd612876520531e439b0/shard-adlp-9/igt@xe_wedged@wedged-at-any-timeout.html
   [274]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134437v1/shard-adlp-8/igt@xe_wedged@wedged-at-any-timeout.html

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

  [Intel XE#1033]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1033
  [Intel XE#1045]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1045
  [Intel XE#1069]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1069
  [Intel XE#1091]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1091
  [Intel XE#1122]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1122
  [Intel XE#1123]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1123
  [Intel XE#1124]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1124
  [Intel XE#1125]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1125
  [Intel XE#1126]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1126
  [Intel XE#1127]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1127
  [Intel XE#1128]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1128
  [Intel XE#1129]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1129
  [Intel XE#1135]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1135
  [Intel XE#1149]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1149
  [Intel XE#1162]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1162
  [Intel XE#1178]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1178
  [Intel XE#1191]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1191
  [Intel XE#1192]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1192
  [Intel XE#1195]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1195
  [Intel XE#1201]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1201
  [Intel XE#1211]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1211
  [Intel XE#1214]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1214
  [Intel XE#1231]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1231
  [Intel XE#1252]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1252
  [Intel XE#1280]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1280
  [Intel XE#1330]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1330
  [Intel XE#1358]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1358
  [Intel XE#1392]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1392
  [Intel XE#1397]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1397
  [Intel XE#1399]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1399
  [Intel XE#1401]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1401
  [Intel XE#1406]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1406
  [Intel XE#1407]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1407
  [Intel XE#1414]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1414
  [Intel XE#1421]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1421
  [Intel XE#1424]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1424
  [Intel XE#1430]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1430
  [Intel XE#1435]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1435
  [Intel XE#1442]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1442
  [Intel XE#1446]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1446
  [Intel XE#1473]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1473
  [Intel XE#1500]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1500
  [Intel XE#1551]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1551
  [Intel XE#1607]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1607
  [Intel XE#1608]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1608
  [Intel XE#1620]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1620
  [Intel XE#1659]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1659
  [Intel XE#1745]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1745
  [Intel XE#1760]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1760
  [Intel XE#1761]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1761
  [Intel XE#1794]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1794
  [Intel XE#1874]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1874
  [Intel XE#2007]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2007
  [Intel XE#261]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/261
  [Intel XE#282]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/282
  [Intel XE#288]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/288
  [Intel XE#294]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/294
  [Intel XE#305]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/305
  [Intel XE#306]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/306
  [Intel XE#307]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/307
  [Intel XE#308]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/308
  [Intel XE#309]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/309
  [Intel XE#310]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/310
  [Intel XE#314]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/314
  [Intel XE#316]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/316
  [Intel XE#323]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/323
  [Intel XE#324]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/324
  [Intel XE#327]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/327
  [Intel XE#330]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/330
  [Intel XE#355]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/355
  [Intel XE#362]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/362
  [Intel XE#366]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/366
  [Intel XE#367]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/367
  [Intel XE#373]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/373
  [Intel XE#392]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/392
  [Intel XE#402]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/402
  [Intel XE#455]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/455
  [Intel XE#480]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/480
  [Intel XE#498]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/498
  [Intel XE#512]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/512
  [Intel XE#579]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/579
  [Intel XE#584]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/584
  [Intel XE#599]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/599
  [Intel XE#605]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/605
  [Intel XE#607]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/607
  [Intel XE#616]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/616
  [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#664]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/664
  [Intel XE#688]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/688
  [Intel XE#701]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/701
  [Intel XE#736]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/736
  [Intel XE#756]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/756
  [Intel XE#787]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/787
  [Intel XE#870]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/870
  [Intel XE#877]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/877
  [Intel XE#886]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/886
  [Intel XE#908]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/908
  [Intel XE#910]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/910
  [Intel XE#927]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/927
  [Intel XE#929]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/929
  [Intel XE#944]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/944
  [Intel XE#979]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/979


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

  * Linux: xe-1399-596cf447db94909c4788fd612876520531e439b0 -> xe-pw-134437v1

  IGT_7877: 23b8b8a0168e1b5141e29346be1f83fdbed31037 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  xe-1399-596cf447db94909c4788fd612876520531e439b0: 596cf447db94909c4788fd612876520531e439b0
  xe-pw-134437v1: 134437v1

== Logs ==

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

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

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

* Re: [PATCH 3/9] drm/xe/xe_reg_sr: Always call xe_force_wake_put/get in pairs
  2024-06-04 21:13       ` Lucas De Marchi
@ 2024-06-05 10:49         ` Nirmoy Das
  2024-06-06 17:46           ` Rodrigo Vivi
  0 siblings, 1 reply; 28+ messages in thread
From: Nirmoy Das @ 2024-06-05 10:49 UTC (permalink / raw)
  To: Lucas De Marchi, Nirmoy Das, Rodrigo Vivi; +Cc: Michal Wajdeczko, intel-xe


On 6/4/2024 11:13 PM, Lucas De Marchi wrote:
> On Tue, Jun 04, 2024 at 04:21:25PM GMT, Nirmoy Das wrote:
>> Hi Michal,
>>
>> On 6/4/2024 3:12 PM, Michal Wajdeczko wrote:
>>>
>>> On 04.06.2024 13:02, Nirmoy Das wrote:
>>>> xe_force_wake_get() increments the domain ref regardless of success
>>>> or failure so call xe_force_wake_put() even on failure to keep ref
>>>> count accurate.
>>>>
>>>> Signed-off-by: Nirmoy Das<nirmoy.das@intel.com>
>>>> ---
>>>>  drivers/gpu/drm/xe/xe_reg_sr.c | 20 ++++++++------------
>>>>  1 file changed, 8 insertions(+), 12 deletions(-)
>>>>
>>>> diff --git a/drivers/gpu/drm/xe/xe_reg_sr.c 
>>>> b/drivers/gpu/drm/xe/xe_reg_sr.c
>>>> index 440ac572f6e5..8fcc08658d89 100644
>>>> --- a/drivers/gpu/drm/xe/xe_reg_sr.c
>>>> +++ b/drivers/gpu/drm/xe/xe_reg_sr.c
>>>> @@ -201,13 +201,11 @@ void xe_reg_sr_apply_mmio(struct xe_reg_sr 
>>>> *sr, struct xe_gt *gt)
>>>>      xa_for_each(&sr->xa, reg, entry)
>>>>          apply_one_mmio(gt, entry);
>>>> -    err = xe_force_wake_put(&gt->mmio.fw, XE_FORCEWAKE_ALL);
>>>> -    XE_WARN_ON(err);
>>>> -
>>>> -    return;
>>>> -
>>>>  err_force_wake:
>>>> -    xe_gt_err(gt, "Failed to apply, err=%d\n", err);
>>>> +    if (err)
>>>> +        xe_gt_err(gt, "Failed to whitelist %s registers, err=%d\n",
>>>> +              sr->name, err);
>>>> +    XE_WARN_ON(xe_force_wake_put(&gt->mmio.fw, XE_FORCEWAKE_ALL));
>>> what's the rule whether to WARN about the failed xe_force_wake_put() or
>>> not ? should we also WARN when xe_force_wake_get() failed ? does it 
>>> make
>>> sense to WARN about put() if get() already failed ?
>> We don't have one yet.
>>>
>>> maybe simpler solution would be make function xe_force_wake_put() void
>>> as it almost nothing that caller can do and move WARN there if needed ?
>>
>> We have code that  does "return xe_force_wake_put()" So question is 
>> what shall we do
>>
>> if xe_force_wake_get() worked but subsequent xe_force_wake_put() fails ?
>
> there's not much can be done here. I even don't think there's a reason
> to wait on ack for force_wake put... in most of the cases.
> +Rodrigo, what exactly are we protecting against there?
>
> If that xe_mmio_wait32() fails, driver is toast. The reason we check (or
> should check) the return on _get() is because we want to bail out
> whatever we are starting to do rather than attempting it and handling
> bogus values of an IP that is not awaken.
>
> So, maybe what could be done is
>
> a) XE_WARN_ON(xe_force_wake_put()) -> xe_force_wake_put()
>
>     We cann probably move the WARN_ON() inside xe_force_wake_put()
>     if we want to maintain the behavior in most places
>
>     Then make xe_force_wake_put() void as suggested here.
>
> b) I'm not sure about the benefit of the weirdness of
> xe_force_wake_get() incrementing the ref even if we failed to wait for
> ack.  The only thing the caller is going to do is to call
> xe_force_wake_put() and bail out. Why are we not unwinding then?

With unwinding of ref count and partial woken domains on error, we 
should be able do


     if (xe_force_wake_get(fw, d)) {
         ...
         xe_force_wake_put(fw, d);

     }

I will let Rodrigo suggest how best to handle this.


Thanks,

Nirmoy

>
>
> Lucas De Marchi
>
>>
>> Regards,
>>
>> Nirmoy
>>
>>>
>>> what about making the flow more intuitive like this:
>>>
>>> bool xe_force_wake_get(fw, d);
>>> void xe_force_wake_put(fw, d);
>>>
>>>     if (xe_force_wake_get(fw, d)) {
>>>         ...
>>>         xe_force_wake_put(fw, d);
>>>     }
>>>
>>>>  }
>>>>  void xe_reg_sr_apply_whitelist(struct xe_hw_engine *hwe)
>>>> @@ -253,13 +251,11 @@ void xe_reg_sr_apply_whitelist(struct 
>>>> xe_hw_engine *hwe)
>>>>          xe_mmio_write32(gt, RING_FORCE_TO_NONPRIV(mmio_base, 
>>>> slot), addr);
>>>>      }
>>>> -    err = xe_force_wake_put(&gt->mmio.fw, XE_FORCEWAKE_ALL);
>>>> -    XE_WARN_ON(err);
>>>> -
>>>> -    return;
>>>> -
>>>>  err_force_wake:
>>>> -    drm_err(&xe->drm, "Failed to apply, err=%d\n", err);
>>>> +    if (err)
>>>> +        xe_gt_err(gt, "Failed to whitelist %s registers, err=%d\n",
>>>> +              sr->name, err);
>>>> +    XE_WARN_ON(xe_force_wake_put(&gt->mmio.fw, XE_FORCEWAKE_ALL));
>>>>  }
>>>>  /**

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

* Re: [PATCH 3/9] drm/xe/xe_reg_sr: Always call xe_force_wake_put/get in pairs
  2024-06-05 10:49         ` Nirmoy Das
@ 2024-06-06 17:46           ` Rodrigo Vivi
  2024-06-10  9:59             ` Nirmoy Das
  0 siblings, 1 reply; 28+ messages in thread
From: Rodrigo Vivi @ 2024-06-06 17:46 UTC (permalink / raw)
  To: Nirmoy Das; +Cc: Lucas De Marchi, Nirmoy Das, Michal Wajdeczko, intel-xe

On Wed, Jun 05, 2024 at 12:49:42PM +0200, Nirmoy Das wrote:
> 
> On 6/4/2024 11:13 PM, Lucas De Marchi wrote:
> > On Tue, Jun 04, 2024 at 04:21:25PM GMT, Nirmoy Das wrote:
> > > Hi Michal,
> > > 
> > > On 6/4/2024 3:12 PM, Michal Wajdeczko wrote:
> > > > 
> > > > On 04.06.2024 13:02, Nirmoy Das wrote:
> > > > > xe_force_wake_get() increments the domain ref regardless of success
> > > > > or failure so call xe_force_wake_put() even on failure to keep ref
> > > > > count accurate.
> > > > > 
> > > > > Signed-off-by: Nirmoy Das<nirmoy.das@intel.com>
> > > > > ---
> > > > >  drivers/gpu/drm/xe/xe_reg_sr.c | 20 ++++++++------------
> > > > >  1 file changed, 8 insertions(+), 12 deletions(-)
> > > > > 
> > > > > diff --git a/drivers/gpu/drm/xe/xe_reg_sr.c
> > > > > b/drivers/gpu/drm/xe/xe_reg_sr.c
> > > > > index 440ac572f6e5..8fcc08658d89 100644
> > > > > --- a/drivers/gpu/drm/xe/xe_reg_sr.c
> > > > > +++ b/drivers/gpu/drm/xe/xe_reg_sr.c
> > > > > @@ -201,13 +201,11 @@ void xe_reg_sr_apply_mmio(struct
> > > > > xe_reg_sr *sr, struct xe_gt *gt)
> > > > >      xa_for_each(&sr->xa, reg, entry)
> > > > >          apply_one_mmio(gt, entry);
> > > > > -    err = xe_force_wake_put(&gt->mmio.fw, XE_FORCEWAKE_ALL);
> > > > > -    XE_WARN_ON(err);
> > > > > -
> > > > > -    return;
> > > > > -
> > > > >  err_force_wake:
> > > > > -    xe_gt_err(gt, "Failed to apply, err=%d\n", err);
> > > > > +    if (err)
> > > > > +        xe_gt_err(gt, "Failed to whitelist %s registers, err=%d\n",
> > > > > +              sr->name, err);
> > > > > +    XE_WARN_ON(xe_force_wake_put(&gt->mmio.fw, XE_FORCEWAKE_ALL));
> > > > what's the rule whether to WARN about the failed xe_force_wake_put() or
> > > > not ? should we also WARN when xe_force_wake_get() failed ? does
> > > > it make
> > > > sense to WARN about put() if get() already failed ?
> > > We don't have one yet.
> > > > 
> > > > maybe simpler solution would be make function xe_force_wake_put() void
> > > > as it almost nothing that caller can do and move WARN there if needed ?
> > > 
> > > We have code that  does "return xe_force_wake_put()" So question is
> > > what shall we do
> > > 
> > > if xe_force_wake_get() worked but subsequent xe_force_wake_put() fails ?
> > 
> > there's not much can be done here. I even don't think there's a reason
> > to wait on ack for force_wake put... in most of the cases.
> > +Rodrigo, what exactly are we protecting against there?
> > 
> > If that xe_mmio_wait32() fails, driver is toast. The reason we check (or
> > should check) the return on _get() is because we want to bail out
> > whatever we are starting to do rather than attempting it and handling
> > bogus values of an IP that is not awaken.
> > 
> > So, maybe what could be done is
> > 
> > a) XE_WARN_ON(xe_force_wake_put()) -> xe_force_wake_put()
> > 
> >     We cann probably move the WARN_ON() inside xe_force_wake_put()
> >     if we want to maintain the behavior in most places
> > 
> >     Then make xe_force_wake_put() void as suggested here.

yeap, I believe we have a rough consensus here that put should be void function
and perhaps (likely?!) with some warn inside it.

> > 
> > b) I'm not sure about the benefit of the weirdness of
> > xe_force_wake_get() incrementing the ref even if we failed to wait for
> > ack.  The only thing the caller is going to do is to call
> > xe_force_wake_put() and bail out. Why are we not unwinding then?
> 
> With unwinding of ref count and partial woken domains on error, we should be
> able do
> 
> 
>     if (xe_force_wake_get(fw, d)) {
>         ...
>         xe_force_wake_put(fw, d);
> 
>     }
> 
> I will let Rodrigo suggest how best to handle this.

I believe the benefit of trying to run the code even when ack timed out
is on clean up cases, since we use this force_wake on a broader scope,
rather then only around the specific mmio calls that we really need it.

So, I'm okay with make this proposed flow as the rule, on always
checking the force_wake_get result before doing operations.
But maybe on top of that it would be worth to scrutinize a bit
the callers and see if we can/should reduce the scope of impact.

> 
> 
> Thanks,
> 
> Nirmoy
> 
> > 
> > 
> > Lucas De Marchi
> > 
> > > 
> > > Regards,
> > > 
> > > Nirmoy
> > > 
> > > > 
> > > > what about making the flow more intuitive like this:
> > > > 
> > > > bool xe_force_wake_get(fw, d);
> > > > void xe_force_wake_put(fw, d);
> > > > 
> > > >     if (xe_force_wake_get(fw, d)) {
> > > >         ...
> > > >         xe_force_wake_put(fw, d);
> > > >     }
> > > > 
> > > > >  }
> > > > >  void xe_reg_sr_apply_whitelist(struct xe_hw_engine *hwe)
> > > > > @@ -253,13 +251,11 @@ void xe_reg_sr_apply_whitelist(struct
> > > > > xe_hw_engine *hwe)
> > > > >          xe_mmio_write32(gt,
> > > > > RING_FORCE_TO_NONPRIV(mmio_base, slot), addr);
> > > > >      }
> > > > > -    err = xe_force_wake_put(&gt->mmio.fw, XE_FORCEWAKE_ALL);
> > > > > -    XE_WARN_ON(err);
> > > > > -
> > > > > -    return;
> > > > > -
> > > > >  err_force_wake:
> > > > > -    drm_err(&xe->drm, "Failed to apply, err=%d\n", err);
> > > > > +    if (err)
> > > > > +        xe_gt_err(gt, "Failed to whitelist %s registers, err=%d\n",
> > > > > +              sr->name, err);
> > > > > +    XE_WARN_ON(xe_force_wake_put(&gt->mmio.fw, XE_FORCEWAKE_ALL));
> > > > >  }
> > > > >  /**

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

* Re: [PATCH 3/9] drm/xe/xe_reg_sr: Always call xe_force_wake_put/get in pairs
  2024-06-06 17:46           ` Rodrigo Vivi
@ 2024-06-10  9:59             ` Nirmoy Das
  0 siblings, 0 replies; 28+ messages in thread
From: Nirmoy Das @ 2024-06-10  9:59 UTC (permalink / raw)
  To: Rodrigo Vivi, Nirmoy Das; +Cc: Lucas De Marchi, Michal Wajdeczko, intel-xe


On 6/6/2024 7:46 PM, Rodrigo Vivi wrote:
> On Wed, Jun 05, 2024 at 12:49:42PM +0200, Nirmoy Das wrote:
>> On 6/4/2024 11:13 PM, Lucas De Marchi wrote:
>>> On Tue, Jun 04, 2024 at 04:21:25PM GMT, Nirmoy Das wrote:
>>>> Hi Michal,
>>>>
>>>> On 6/4/2024 3:12 PM, Michal Wajdeczko wrote:
>>>>> On 04.06.2024 13:02, Nirmoy Das wrote:
>>>>>> xe_force_wake_get() increments the domain ref regardless of success
>>>>>> or failure so call xe_force_wake_put() even on failure to keep ref
>>>>>> count accurate.
>>>>>>
>>>>>> Signed-off-by: Nirmoy Das<nirmoy.das@intel.com>
>>>>>> ---
>>>>>>   drivers/gpu/drm/xe/xe_reg_sr.c | 20 ++++++++------------
>>>>>>   1 file changed, 8 insertions(+), 12 deletions(-)
>>>>>>
>>>>>> diff --git a/drivers/gpu/drm/xe/xe_reg_sr.c
>>>>>> b/drivers/gpu/drm/xe/xe_reg_sr.c
>>>>>> index 440ac572f6e5..8fcc08658d89 100644
>>>>>> --- a/drivers/gpu/drm/xe/xe_reg_sr.c
>>>>>> +++ b/drivers/gpu/drm/xe/xe_reg_sr.c
>>>>>> @@ -201,13 +201,11 @@ void xe_reg_sr_apply_mmio(struct
>>>>>> xe_reg_sr *sr, struct xe_gt *gt)
>>>>>>       xa_for_each(&sr->xa, reg, entry)
>>>>>>           apply_one_mmio(gt, entry);
>>>>>> -    err = xe_force_wake_put(&gt->mmio.fw, XE_FORCEWAKE_ALL);
>>>>>> -    XE_WARN_ON(err);
>>>>>> -
>>>>>> -    return;
>>>>>> -
>>>>>>   err_force_wake:
>>>>>> -    xe_gt_err(gt, "Failed to apply, err=%d\n", err);
>>>>>> +    if (err)
>>>>>> +        xe_gt_err(gt, "Failed to whitelist %s registers, err=%d\n",
>>>>>> +              sr->name, err);
>>>>>> +    XE_WARN_ON(xe_force_wake_put(&gt->mmio.fw, XE_FORCEWAKE_ALL));
>>>>> what's the rule whether to WARN about the failed xe_force_wake_put() or
>>>>> not ? should we also WARN when xe_force_wake_get() failed ? does
>>>>> it make
>>>>> sense to WARN about put() if get() already failed ?
>>>> We don't have one yet.
>>>>> maybe simpler solution would be make function xe_force_wake_put() void
>>>>> as it almost nothing that caller can do and move WARN there if needed ?
>>>> We have code that  does "return xe_force_wake_put()" So question is
>>>> what shall we do
>>>>
>>>> if xe_force_wake_get() worked but subsequent xe_force_wake_put() fails ?
>>> there's not much can be done here. I even don't think there's a reason
>>> to wait on ack for force_wake put... in most of the cases.
>>> +Rodrigo, what exactly are we protecting against there?
>>>
>>> If that xe_mmio_wait32() fails, driver is toast. The reason we check (or
>>> should check) the return on _get() is because we want to bail out
>>> whatever we are starting to do rather than attempting it and handling
>>> bogus values of an IP that is not awaken.
>>>
>>> So, maybe what could be done is
>>>
>>> a) XE_WARN_ON(xe_force_wake_put()) -> xe_force_wake_put()
>>>
>>>      We cann probably move the WARN_ON() inside xe_force_wake_put()
>>>      if we want to maintain the behavior in most places
>>>
>>>      Then make xe_force_wake_put() void as suggested here.
> yeap, I believe we have a rough consensus here that put should be void function
> and perhaps (likely?!) with some warn inside it.
>
>>> b) I'm not sure about the benefit of the weirdness of
>>> xe_force_wake_get() incrementing the ref even if we failed to wait for
>>> ack.  The only thing the caller is going to do is to call
>>> xe_force_wake_put() and bail out. Why are we not unwinding then?
>> With unwinding of ref count and partial woken domains on error, we should be
>> able do
>>
>>
>>      if (xe_force_wake_get(fw, d)) {
>>          ...
>>          xe_force_wake_put(fw, d);
>>
>>      }
>>
>> I will let Rodrigo suggest how best to handle this.
> I believe the benefit of trying to run the code even when ack timed out
> is on clean up cases, since we use this force_wake on a broader scope,
> rather then only around the specific mmio calls that we really need it.
>
> So, I'm okay with make this proposed flow as the rule, on always
> checking the force_wake_get result before doing operations.
> But maybe on top of that it would be worth to scrutinize a bit
> the callers and see if we can/should reduce the scope of impact.


Thanks, Rodrigo. I will send a series for follow below patter

  if (xe_force_wake_get(fw, d)) {
         ...
         xe_force_wake_put(fw, d);

     }

Regards,
Nirmoy

>
>>
>> Thanks,
>>
>> Nirmoy
>>
>>>
>>> Lucas De Marchi
>>>
>>>> Regards,
>>>>
>>>> Nirmoy
>>>>
>>>>> what about making the flow more intuitive like this:
>>>>>
>>>>> bool xe_force_wake_get(fw, d);
>>>>> void xe_force_wake_put(fw, d);
>>>>>
>>>>>      if (xe_force_wake_get(fw, d)) {
>>>>>          ...
>>>>>          xe_force_wake_put(fw, d);
>>>>>      }
>>>>>
>>>>>>   }
>>>>>>   void xe_reg_sr_apply_whitelist(struct xe_hw_engine *hwe)
>>>>>> @@ -253,13 +251,11 @@ void xe_reg_sr_apply_whitelist(struct
>>>>>> xe_hw_engine *hwe)
>>>>>>           xe_mmio_write32(gt,
>>>>>> RING_FORCE_TO_NONPRIV(mmio_base, slot), addr);
>>>>>>       }
>>>>>> -    err = xe_force_wake_put(&gt->mmio.fw, XE_FORCEWAKE_ALL);
>>>>>> -    XE_WARN_ON(err);
>>>>>> -
>>>>>> -    return;
>>>>>> -
>>>>>>   err_force_wake:
>>>>>> -    drm_err(&xe->drm, "Failed to apply, err=%d\n", err);
>>>>>> +    if (err)
>>>>>> +        xe_gt_err(gt, "Failed to whitelist %s registers, err=%d\n",
>>>>>> +              sr->name, err);
>>>>>> +    XE_WARN_ON(xe_force_wake_put(&gt->mmio.fw, XE_FORCEWAKE_ALL));
>>>>>>   }
>>>>>>   /**

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

end of thread, other threads:[~2024-06-10  9:59 UTC | newest]

Thread overview: 28+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-06-04 11:02 [PATCH 0/9] Ensure xe_force_wake_put is always called after xe_force_wake_get Nirmoy Das
2024-06-04 11:02 ` [PATCH 1/9] drm/xe/display: Always call xe_force_wake_put/get in pairs Nirmoy Das
2024-06-04 11:41   ` Ghimiray, Himal Prasad
2024-06-04 11:02 ` [PATCH 2/9] drm/xe/pat: " Nirmoy Das
2024-06-04 12:54   ` Michal Wajdeczko
2024-06-04 13:06     ` Nirmoy Das
2024-06-04 11:02 ` [PATCH 3/9] drm/xe/xe_reg_sr: " Nirmoy Das
2024-06-04 13:12   ` Michal Wajdeczko
2024-06-04 14:21     ` Nirmoy Das
2024-06-04 21:13       ` Lucas De Marchi
2024-06-05 10:49         ` Nirmoy Das
2024-06-06 17:46           ` Rodrigo Vivi
2024-06-10  9:59             ` Nirmoy Das
2024-06-04 11:02 ` [PATCH 4/9] drm/xe/xe_gt: " Nirmoy Das
2024-06-04 11:02 ` [PATCH 5/9] drm/xe/uc: " Nirmoy Das
2024-06-04 11:02 ` [PATCH 6/9] drm/xe: Add xe_force_wake_tryget to simplify forcewake handling Nirmoy Das
2024-06-04 11:02 ` [PATCH 7/9] drm/xe: Use xe_force_wake_tryget when possible Nirmoy Das
2024-06-04 11:02 ` [PATCH 8/9] drm/xe/client: Check return value of xe_force_wake_get Nirmoy Das
2024-06-04 11:02 ` [PATCH 9/9] drm/xe: Add __must_check for xe_force_wake_get Nirmoy Das
2024-06-04 20:49 ` [PATCH 0/9] Ensure xe_force_wake_put is always called after xe_force_wake_get Lucas De Marchi
2024-06-05  1:06 ` ✓ CI.Patch_applied: success for " Patchwork
2024-06-05  1:07 ` ✓ CI.checkpatch: " Patchwork
2024-06-05  1:08 ` ✓ CI.KUnit: " Patchwork
2024-06-05  1:19 ` ✓ CI.Build: " Patchwork
2024-06-05  1:19 ` ✗ CI.Hooks: failure " Patchwork
2024-06-05  1:21 ` ✓ CI.checksparse: success " Patchwork
2024-06-05  1:48 ` ✓ CI.BAT: " Patchwork
2024-06-05 10:15 ` ✗ 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).