Intel-XE Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 0/5] Use SIG_ID logs for GuC component
@ 2026-09-01 21:12 Umesh Nerlige Ramappa
  2026-09-01 21:12 ` [PATCH v2 1/5] drm/xe/guc: Use different error codes for GuC load errors Umesh Nerlige Ramappa
                   ` (8 more replies)
  0 siblings, 9 replies; 17+ messages in thread
From: Umesh Nerlige Ramappa @ 2026-09-01 21:12 UTC (permalink / raw)
  To: intel-xe
  Cc: daniele.ceraolospurio, michal.wajdeczko, aravind.iddamsetty,
	mallesh.koujalagi, alan.previn.teres.alexis, julia.filipchuk

Add SIG ID logging support for some parts of the GuC interface code.

Signed-off-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Signed-off-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>

Daniele Ceraolo Spurio (4):
  drm/xe/guc: Use different error codes for GuC load errors
  drm/xe/uc: Report DMA failure using SIGID
  drm/xe/guc: Report major GuC failures using SIGID
  drm/xe/guc: Report errors that cause a CT shutdown using SIGID

Umesh Nerlige Ramappa (1):
  drm/xe/guc: Use different error codes for CT errors

 drivers/gpu/drm/xe/xe_guc.c    |  41 +++++-----
 drivers/gpu/drm/xe/xe_guc_ct.c | 135 ++++++++++++++++++++++-----------
 drivers/gpu/drm/xe/xe_uc_fw.c  |  13 +++-
 3 files changed, 122 insertions(+), 67 deletions(-)

-- 
2.55.0


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

* [PATCH v2 1/5] drm/xe/guc: Use different error codes for GuC load errors
  2026-09-01 21:12 [PATCH v2 0/5] Use SIG_ID logs for GuC component Umesh Nerlige Ramappa
@ 2026-09-01 21:12 ` Umesh Nerlige Ramappa
  2026-09-02 12:56   ` Michal Wajdeczko
  2026-09-01 21:12 ` [PATCH v2 2/5] drm/xe/guc: Use different error codes for CT errors Umesh Nerlige Ramappa
                   ` (7 subsequent siblings)
  8 siblings, 1 reply; 17+ messages in thread
From: Umesh Nerlige Ramappa @ 2026-09-01 21:12 UTC (permalink / raw)
  To: intel-xe
  Cc: daniele.ceraolospurio, michal.wajdeczko, aravind.iddamsetty,
	mallesh.koujalagi, alan.previn.teres.alexis, julia.filipchuk

From: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>

Instead of always returning -EPROTO no matter what goes wrong, use
different error codes based on the error type.

v2: split to its own patch

Signed-off-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
Cc: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
---
 drivers/gpu/drm/xe/xe_guc.c | 22 ++++++++++++----------
 1 file changed, 12 insertions(+), 10 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_guc.c b/drivers/gpu/drm/xe/xe_guc.c
index c7f8bbd4cb92..5285d4cecbc8 100644
--- a/drivers/gpu/drm/xe/xe_guc.c
+++ b/drivers/gpu/drm/xe/xe_guc.c
@@ -1144,8 +1144,8 @@ static void print_load_status_err(struct xe_gt *gt, u32 status)
  * Check GUC_STATUS looking for known terminal states (either completion or
  * failure) of either the microkernel status field or the boot ROM status field.
  *
- * Returns 1 for successful completion, -1 for failure and 0 for any
- * intermediate state.
+ * Returns 0 for successful completion, -EBUSY for any intermediate state and
+ * other errno values for failure cases.
  */
 static int guc_load_done(struct xe_gt *gt, u32 *status, u32 *tries)
 {
@@ -1157,20 +1157,22 @@ static int guc_load_done(struct xe_gt *gt, u32 *status, u32 *tries)
 
 	switch (ukernel) {
 	case XE_GUC_LOAD_STATUS_READY:
-		return 1;
+		return 0;
 	case XE_GUC_LOAD_STATUS_ERROR_DEVID_BUILD_MISMATCH:
 	case XE_GUC_LOAD_STATUS_GUC_PREPROD_BUILD_MISMATCH:
 	case XE_GUC_LOAD_STATUS_ERROR_DEVID_INVALID_GUCTYPE:
 	case XE_GUC_LOAD_STATUS_HWCONFIG_ERROR:
 	case XE_GUC_LOAD_STATUS_BOOTROM_VERSION_MISMATCH:
+		return -ENOEXEC;
 	case XE_GUC_LOAD_STATUS_DPC_ERROR:
 	case XE_GUC_LOAD_STATUS_EXCEPTION:
+		return -EIO;
 	case XE_GUC_LOAD_STATUS_INIT_DATA_INVALID:
 	case XE_GUC_LOAD_STATUS_MPU_DATA_INVALID:
 	case XE_GUC_LOAD_STATUS_INIT_MMIO_SAVE_RESTORE_INVALID:
 	case XE_GUC_LOAD_STATUS_KLV_WORKAROUND_INIT_ERROR:
 	case XE_GUC_LOAD_STATUS_INVALID_FTR_FLAG:
-		return -1;
+		return -EINVAL;
 	}
 
 	switch (bootrom) {
@@ -1184,7 +1186,7 @@ static int guc_load_done(struct xe_gt *gt, u32 *status, u32 *tries)
 	case XE_BOOTROM_STATUS_MPUMAP_INCORRECT:
 	case XE_BOOTROM_STATUS_EXCEPTION:
 	case XE_BOOTROM_STATUS_PROD_KEY_CHECK_FAILURE:
-		return -1;
+		return -ENOEXEC;
 	}
 
 	if (++*tries >= 100) {
@@ -1197,7 +1199,7 @@ static int guc_load_done(struct xe_gt *gt, u32 *status, u32 *tries)
 			  *status, ukernel, bootrom);
 	}
 
-	return 0;
+	return -EBUSY;
 }
 
 static int guc_wait_ucode(struct xe_guc *guc)
@@ -1213,21 +1215,21 @@ static int guc_wait_ucode(struct xe_guc *guc)
 	before_freq = xe_guc_pc_get_act_freq(guc_pc);
 	before = ktime_get();
 
-	ret = poll_timeout_us(load_result = guc_load_done(gt, &status, &tries), load_result,
-			      10 * USEC_PER_MSEC,
+	ret = poll_timeout_us(load_result = guc_load_done(gt, &status, &tries),
+			      load_result != -EBUSY, 10 * USEC_PER_MSEC,
 			      GUC_LOAD_TIMEOUT_SEC * USEC_PER_SEC, false);
 
 	delta_ms = ktime_to_ms(ktime_sub(ktime_get(), before));
 	act_freq = xe_guc_pc_get_act_freq(guc_pc);
 	cur_freq = xe_guc_pc_get_cur_freq_fw(guc_pc);
 
-	if (ret || load_result <= 0) {
+	if (ret || load_result) {
 		xe_gt_err(gt, "load failed: status = 0x%08X, time = %lldms, freq = %dMHz (req %dMHz)\n",
 			  status, delta_ms, xe_guc_pc_get_act_freq(guc_pc),
 			  xe_guc_pc_get_cur_freq_fw(guc_pc));
 		print_load_status_err(gt, status);
 
-		return -EPROTO;
+		return ret ?: load_result;
 	}
 
 	if (delta_ms > GUC_LOAD_TIME_WARN_MSEC) {
-- 
2.55.0


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

* [PATCH v2 2/5] drm/xe/guc: Use different error codes for CT errors
  2026-09-01 21:12 [PATCH v2 0/5] Use SIG_ID logs for GuC component Umesh Nerlige Ramappa
  2026-09-01 21:12 ` [PATCH v2 1/5] drm/xe/guc: Use different error codes for GuC load errors Umesh Nerlige Ramappa
@ 2026-09-01 21:12 ` Umesh Nerlige Ramappa
  2026-09-02 14:22   ` Michal Wajdeczko
  2026-09-01 21:12 ` [PATCH v2 3/5] drm/xe/uc: Report DMA failure using SIGID Umesh Nerlige Ramappa
                   ` (6 subsequent siblings)
  8 siblings, 1 reply; 17+ messages in thread
From: Umesh Nerlige Ramappa @ 2026-09-01 21:12 UTC (permalink / raw)
  To: intel-xe
  Cc: daniele.ceraolospurio, michal.wajdeczko, aravind.iddamsetty,
	mallesh.koujalagi, alan.previn.teres.alexis, julia.filipchuk

Instead of always returning -EPROTO for most errors, use different error
codes based on the error type. -EPROTO is retained for the cases that
are genuine protocol violations by the GuC.  The remaining cases now
report what actually went wrong.

receive_g2h() used to escalate to CT_DEAD + kick_reset() by matching the
two error codes that dequeue_one_g2h() could return on a fatal error.
Invert the check to simplify reset handling.

Signed-off-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
Assisted-by: Claude:claude-opus-5
---
 drivers/gpu/drm/xe/xe_guc_ct.c | 48 +++++++++++++++++++++++++++++-----
 1 file changed, 42 insertions(+), 6 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_guc_ct.c b/drivers/gpu/drm/xe/xe_guc_ct.c
index 5c4733da385c..dcd457f38b89 100644
--- a/drivers/gpu/drm/xe/xe_guc_ct.c
+++ b/drivers/gpu/drm/xe/xe_guc_ct.c
@@ -947,6 +947,7 @@ static int h2g_write(struct xe_guc_ct *ct, const u32 *action, u32 len,
 	u32 cmd[H2G_CT_HEADERS];
 	u32 tail = h2g->info.tail;
 	u32 full_len;
+	int err;
 	struct iosys_map map = IOSYS_MAP_INIT_OFFSET(&h2g->cmds,
 							 tail * sizeof(u32));
 
@@ -961,12 +962,14 @@ static int h2g_write(struct xe_guc_ct *ct, const u32 *action, u32 len,
 
 		desc_status = desc_read(xe, h2g, status);
 		if (desc_status) {
+			err = -EPROTO;
 			xe_gt_err(gt, "CT write: non-zero status: %u\n", desc_status);
 			goto corrupted;
 		}
 
 		if (tail > h2g->info.size) {
 			desc_write(xe, h2g, status, desc_status | GUC_CTB_STATUS_OVERFLOW);
+			err = -EPROTO;
 			xe_gt_err(gt, "CT write: tail out of range: %u vs %u\n",
 				  tail, h2g->info.size);
 			goto corrupted;
@@ -974,6 +977,7 @@ static int h2g_write(struct xe_guc_ct *ct, const u32 *action, u32 len,
 
 		if (desc_head >= h2g->info.size) {
 			desc_write(xe, h2g, status, desc_status | GUC_CTB_STATUS_OVERFLOW);
+			err = -EPIPE;
 			xe_gt_err(gt, "CT write: invalid head offset %u >= %u)\n",
 				  desc_head, h2g->info.size);
 			goto corrupted;
@@ -1591,14 +1595,19 @@ static int parse_g2h_response(struct xe_guc_ct *ct, u32 *msg, u32 len)
 	 * failure to trigger a reset.
 	 */
 	if (fence & CT_SEQNO_UNTRACKED) {
-		if (type == GUC_HXG_TYPE_RESPONSE_FAILURE)
+		int err;
+
+		if (type == GUC_HXG_TYPE_RESPONSE_FAILURE) {
+			err = -EBADE;
 			xe_gt_err(gt, "FAST_REQ H2G fence 0x%x failed! e=0x%x, h=%u\n",
 				  fence,
 				  FIELD_GET(GUC_HXG_FAILURE_MSG_0_ERROR, hxg[0]),
 				  FIELD_GET(GUC_HXG_FAILURE_MSG_0_HINT, hxg[0]));
-		else
+		} else {
+			err = -EPROTO;
 			xe_gt_err(gt, "unexpected response %u for FAST_REQ H2G fence 0x%x!\n",
 				  type, fence);
+		}
 
 		fast_req_report(ct, fence);
 
@@ -1608,7 +1617,7 @@ static int parse_g2h_response(struct xe_guc_ct *ct, u32 *msg, u32 len)
 
 		CT_DEAD(ct, NULL, PARSE_G2H_RESPONSE);
 
-		return -EPROTO;
+		return err;
 	}
 
 	/* don't erase as we still expect a final response with the same fence */
@@ -1809,10 +1818,12 @@ static int g2h_read(struct xe_guc_ct *ct, u32 *msg, bool fast_path)
 	s32 avail;
 	u32 action;
 	u32 *hxg;
+	int err;
 
 	xe_gt_assert(gt, xe_guc_ct_initialized(ct));
 	lockdep_assert_held(&ct->fast_lock);
 
+	/* Keep in sync with g2h_err_is_fatal() */
 	if (xe_device_wedged(xe))
 		return -ENOTRECOVERABLE;
 
@@ -1840,6 +1851,7 @@ static int g2h_read(struct xe_guc_ct *ct, u32 *msg, bool fast_path)
 		}
 
 		if (desc_status) {
+			err = -EIO;
 			xe_gt_err(gt, "CT read: non-zero status: %u\n", desc_status);
 			goto corrupted;
 		}
@@ -1871,6 +1883,7 @@ static int g2h_read(struct xe_guc_ct *ct, u32 *msg, bool fast_path)
 
 		if (g2h->info.head > g2h->info.size) {
 			desc_write(xe, g2h, status, desc_status | GUC_CTB_STATUS_OVERFLOW);
+			err = -ERANGE;
 			xe_gt_err(gt, "CT read: head out of range: %u vs %u\n",
 				  g2h->info.head, g2h->info.size);
 			goto corrupted;
@@ -1878,6 +1891,7 @@ static int g2h_read(struct xe_guc_ct *ct, u32 *msg, bool fast_path)
 
 		if (desc_tail >= g2h->info.size) {
 			desc_write(xe, g2h, status, desc_status | GUC_CTB_STATUS_OVERFLOW);
+			err = -ERANGE;
 			xe_gt_err(gt, "CT read: invalid tail offset %u >= %u)\n",
 				  desc_tail, g2h->info.size);
 			goto corrupted;
@@ -1898,6 +1912,7 @@ static int g2h_read(struct xe_guc_ct *ct, u32 *msg, bool fast_path)
 			   sizeof(u32));
 	len = FIELD_GET(GUC_CTB_MSG_0_NUM_DWORDS, msg[0]) + GUC_CTB_MSG_MIN_LEN;
 	if (len > avail) {
+		err = -EBADMSG;
 		xe_gt_err(gt, "G2H channel broken on read, avail=%d, len=%d, reset required\n",
 			  avail, len);
 		goto corrupted;
@@ -1950,7 +1965,7 @@ static int g2h_read(struct xe_guc_ct *ct, u32 *msg, bool fast_path)
 
 corrupted:
 	CT_DEAD(ct, &ct->ctbs.g2h, G2H_READ);
-	return -EPROTO;
+	return err;
 }
 
 static void g2h_fast_path(struct xe_guc_ct *ct, u32 *msg, u32 len)
@@ -2042,6 +2057,27 @@ static int dequeue_one_g2h(struct xe_guc_ct *ct)
 	return 1;
 }
 
+/*
+ * Errors reported by dequeue_one_g2h() come in two flavours: either the channel
+ * is simply not available right now, which is expected and handled gracefully,
+ * or the channel state or the message itself is inconsistent, in which case the
+ * only way forward is to declare the CT dead and reset the GuC. Since the
+ * former is a short and well known list, check against that and treat anything
+ * else as fatal, so that new error codes don't silently escape the escalation.
+ */
+static bool g2h_err_is_fatal(int err)
+{
+	switch (err) {
+	case -ENOTRECOVERABLE:	/* device wedged */
+	case -ENODEV:		/* CT disabled */
+	case -ECANCELED:	/* CT stopped */
+	case -EPIPE:		/* CT already declared broken */
+		return false;
+	default:
+		return true;
+	}
+}
+
 static void receive_g2h(struct xe_guc_ct *ct)
 {
 	bool ongoing;
@@ -2079,8 +2115,8 @@ static void receive_g2h(struct xe_guc_ct *ct)
 		ret = dequeue_one_g2h(ct);
 		mutex_unlock(&ct->lock);
 
-		if (unlikely(ret == -EPROTO || ret == -EOPNOTSUPP)) {
-			xe_gt_err(ct_to_gt(ct), "CT dequeue failed: %d\n", ret);
+		if (unlikely(ret < 0 && g2h_err_is_fatal(ret))) {
+			xe_gt_err(ct_to_gt(ct), "CT dequeue failed (%pe)\n", ERR_PTR(ret));
 			CT_DEAD(ct, NULL, G2H_RECV);
 			kick_reset(ct);
 		}
-- 
2.55.0


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

* [PATCH v2 3/5] drm/xe/uc: Report DMA failure using SIGID
  2026-09-01 21:12 [PATCH v2 0/5] Use SIG_ID logs for GuC component Umesh Nerlige Ramappa
  2026-09-01 21:12 ` [PATCH v2 1/5] drm/xe/guc: Use different error codes for GuC load errors Umesh Nerlige Ramappa
  2026-09-01 21:12 ` [PATCH v2 2/5] drm/xe/guc: Use different error codes for CT errors Umesh Nerlige Ramappa
@ 2026-09-01 21:12 ` Umesh Nerlige Ramappa
  2026-09-01 21:12 ` [PATCH v2 4/5] drm/xe/guc: Report major GuC failures " Umesh Nerlige Ramappa
                   ` (5 subsequent siblings)
  8 siblings, 0 replies; 17+ messages in thread
From: Umesh Nerlige Ramappa @ 2026-09-01 21:12 UTC (permalink / raw)
  To: intel-xe
  Cc: daniele.ceraolospurio, michal.wajdeczko, aravind.iddamsetty,
	mallesh.koujalagi, alan.previn.teres.alexis, julia.filipchuk

From: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>

Convert the uC DMA failure error to use the xe_log_err() helper.

v2: add assert and simplify if/else

Signed-off-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
Cc: Aravind Iddamsetty <aravind.iddamsetty@intel.com>
Cc: Mallesh Koujalagi <mallesh.koujalagi@intel.com>
Cc: Alan Previn Teres Alexis <alan.previn.teres.alexis@intel.com>
Cc: Julia Filipchuk <julia.filipchuk@intel.com>
Cc: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
Reviewed-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
---
 drivers/gpu/drm/xe/xe_uc_fw.c | 13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_uc_fw.c b/drivers/gpu/drm/xe/xe_uc_fw.c
index e29878b255ba..df47bb8fc676 100644
--- a/drivers/gpu/drm/xe/xe_uc_fw.c
+++ b/drivers/gpu/drm/xe/xe_uc_fw.c
@@ -18,6 +18,7 @@
 #include "xe_gt_sriov_vf.h"
 #include "xe_gt_types.h"
 #include "xe_guc.h"
+#include "xe_log.h"
 #include "xe_map.h"
 #include "xe_mmio.h"
 #include "xe_module.h"
@@ -914,8 +915,12 @@ static int uc_fw_xfer(struct xe_uc_fw *uc_fw, u32 offset, u32 dma_flags)
 int xe_uc_fw_upload(struct xe_uc_fw *uc_fw, u32 offset, u32 dma_flags)
 {
 	struct xe_device *xe = uc_fw_to_xe(uc_fw);
+	struct xe_gt *gt = uc_fw_to_gt(uc_fw);
 	int err;
 
+	xe_gt_assert(gt, uc_fw->type == XE_UC_FW_TYPE_GUC ||
+			 uc_fw->type == XE_UC_FW_TYPE_HUC);
+
 	/* make sure the status was cleared the last time we reset the uc */
 	xe_assert(xe, !xe_uc_fw_is_loaded(uc_fw));
 
@@ -931,9 +936,11 @@ int xe_uc_fw_upload(struct xe_uc_fw *uc_fw, u32 offset, u32 dma_flags)
 	return 0;
 
 fail:
-	drm_err(&xe->drm, "Failed to load %s firmware %s (%d)\n",
-		xe_uc_fw_type_repr(uc_fw->type), uc_fw->path,
-		err);
+	if (uc_fw->type == XE_UC_FW_TYPE_GUC)
+		xe_log_err(gt, GUC, err, "Failed to load firmware %s\n", uc_fw->path);
+	else
+		xe_log_err(gt, HUC, err, "Failed to load firmware %s\n", uc_fw->path);
+
 	xe_uc_fw_change_status(uc_fw, XE_UC_FIRMWARE_LOAD_FAIL);
 	return err;
 }
-- 
2.55.0


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

* [PATCH v2 4/5] drm/xe/guc: Report major GuC failures using SIGID
  2026-09-01 21:12 [PATCH v2 0/5] Use SIG_ID logs for GuC component Umesh Nerlige Ramappa
                   ` (2 preceding siblings ...)
  2026-09-01 21:12 ` [PATCH v2 3/5] drm/xe/uc: Report DMA failure using SIGID Umesh Nerlige Ramappa
@ 2026-09-01 21:12 ` Umesh Nerlige Ramappa
  2026-09-02 14:33   ` Michal Wajdeczko
  2026-09-01 21:12 ` [PATCH v2 5/5] drm/xe/guc: Report errors that cause a CT shutdown " Umesh Nerlige Ramappa
                   ` (4 subsequent siblings)
  8 siblings, 1 reply; 17+ messages in thread
From: Umesh Nerlige Ramappa @ 2026-09-01 21:12 UTC (permalink / raw)
  To: intel-xe
  Cc: daniele.ceraolospurio, michal.wajdeczko, aravind.iddamsetty,
	mallesh.koujalagi, alan.previn.teres.alexis, julia.filipchuk

From: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>

Convert errors during critical GuC flows (init, load, reset, suspend)
to use the xe_log_err() helper.
While at it, simplify the error log for the GuC load failure to use the
cached frequency values instead of fetching them again.

v2: split guc_load_done changes to their own patch, use available ret
value for reset errors (Michal)

Signed-off-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
Cc: Aravind Iddamsetty <aravind.iddamsetty@intel.com>
Cc: Mallesh Koujalagi <mallesh.koujalagi@intel.com>
Cc: Alan Previn Teres Alexis <alan.previn.teres.alexis@intel.com>
Cc: Julia Filipchuk <julia.filipchuk@intel.com>
Cc: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
---
 drivers/gpu/drm/xe/xe_guc.c | 19 ++++++++++---------
 1 file changed, 10 insertions(+), 9 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_guc.c b/drivers/gpu/drm/xe/xe_guc.c
index 5285d4cecbc8..d0ddaaf35274 100644
--- a/drivers/gpu/drm/xe/xe_guc.c
+++ b/drivers/gpu/drm/xe/xe_guc.c
@@ -777,7 +777,7 @@ int xe_guc_init_noalloc(struct xe_guc *guc)
 	return 0;
 
 out:
-	xe_gt_err(gt, "GuC init failed with %pe\n", ERR_PTR(ret));
+	xe_log_err(gt, GUC, ret, "GuC init failed\n");
 	return ret;
 }
 
@@ -845,7 +845,7 @@ int xe_guc_init(struct xe_guc *guc)
 	return 0;
 
 out:
-	xe_gt_err(gt, "GuC init failed with %pe\n", ERR_PTR(ret));
+	xe_log_err(gt, GUC, ret, "GuC init failed\n");
 	return ret;
 }
 
@@ -998,15 +998,16 @@ int xe_guc_reset(struct xe_guc *guc)
 
 	ret = xe_mmio_wait32(mmio, GDRST, GRDOM_GUC, 0, 5000, &gdrst, false);
 	if (ret) {
-		xe_gt_err(gt, "GuC reset timed out, GDRST=%#x\n", gdrst);
+		xe_log_err(gt, GUC, ret, "GuC reset timed out, GDRST=%#x\n", gdrst);
 		goto err_out;
 	}
 
 	guc_status = xe_mmio_read32(mmio, GUC_STATUS);
 	if (!(guc_status & GS_MIA_IN_RESET)) {
-		xe_gt_err(gt, "GuC status: %#x, MIA core expected to be in reset\n",
-			  guc_status);
 		ret = -EIO;
+		xe_log_err(gt, GUC, ret,
+			   "GuC status: %#x, MIA core expected to be in reset\n",
+			   guc_status);
 		goto err_out;
 	}
 
@@ -1224,9 +1225,9 @@ static int guc_wait_ucode(struct xe_guc *guc)
 	cur_freq = xe_guc_pc_get_cur_freq_fw(guc_pc);
 
 	if (ret || load_result) {
-		xe_gt_err(gt, "load failed: status = 0x%08X, time = %lldms, freq = %dMHz (req %dMHz)\n",
-			  status, delta_ms, xe_guc_pc_get_act_freq(guc_pc),
-			  xe_guc_pc_get_cur_freq_fw(guc_pc));
+		xe_log_err(gt, GUC, ret ?: load_result,
+			   "load failed: status = 0x%08X, time = %lldms, freq = %dMHz (req %dMHz)\n",
+			   status, delta_ms, act_freq, cur_freq);
 		print_load_status_err(gt, status);
 
 		return ret ?: load_result;
@@ -1463,7 +1464,7 @@ int xe_guc_suspend(struct xe_guc *guc)
 
 	ret = xe_guc_softreset(guc);
 	if (ret) {
-		xe_gt_err(gt, "GuC suspend failed: %pe\n", ERR_PTR(ret));
+		xe_log_err(gt, GUC, ret, "GuC suspend failed\n");
 		return ret;
 	}
 
-- 
2.55.0


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

* [PATCH v2 5/5] drm/xe/guc: Report errors that cause a CT shutdown using SIGID
  2026-09-01 21:12 [PATCH v2 0/5] Use SIG_ID logs for GuC component Umesh Nerlige Ramappa
                   ` (3 preceding siblings ...)
  2026-09-01 21:12 ` [PATCH v2 4/5] drm/xe/guc: Report major GuC failures " Umesh Nerlige Ramappa
@ 2026-09-01 21:12 ` Umesh Nerlige Ramappa
  2026-09-02 14:45   ` Michal Wajdeczko
  2026-09-01 21:18 ` ✗ CI.checkpatch: warning for Use SIG_ID logs for GuC component Patchwork
                   ` (3 subsequent siblings)
  8 siblings, 1 reply; 17+ messages in thread
From: Umesh Nerlige Ramappa @ 2026-09-01 21:12 UTC (permalink / raw)
  To: intel-xe
  Cc: daniele.ceraolospurio, michal.wajdeczko, aravind.iddamsetty,
	mallesh.koujalagi, alan.previn.teres.alexis, julia.filipchuk

From: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>

Convert any errors that can cause the CT to be declared as dead to
use the xe_log_err() helper. Errors that are escalated to the callers
are left for the caller to report with SIGID if needed.
While at it, update some of the error messages to make what went wrong
clearer.

v2: use different error codes for different errors, better messages (Michal)

Signed-off-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
Cc: Aravind Iddamsetty <aravind.iddamsetty@intel.com>
Cc: Mallesh Koujalagi <mallesh.koujalagi@intel.com>
Cc: Alan Previn Teres Alexis <alan.previn.teres.alexis@intel.com>
Cc: Julia Filipchuk <julia.filipchuk@intel.com>
Assisted-by: Claude:claude-opus-5
---
 drivers/gpu/drm/xe/xe_guc_ct.c | 89 +++++++++++++++++++---------------
 1 file changed, 49 insertions(+), 40 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_guc_ct.c b/drivers/gpu/drm/xe/xe_guc_ct.c
index dcd457f38b89..cf347f960166 100644
--- a/drivers/gpu/drm/xe/xe_guc_ct.c
+++ b/drivers/gpu/drm/xe/xe_guc_ct.c
@@ -30,6 +30,7 @@
 #include "xe_guc_relay.h"
 #include "xe_guc_submit.h"
 #include "xe_guc_tlb_inval.h"
+#include "xe_log.h"
 #include "xe_map.h"
 #include "xe_page_reclaim.h"
 #include "xe_pm.h"
@@ -679,7 +680,7 @@ static int __xe_guc_ct_start(struct xe_guc_ct *ct, bool needs_register)
 	return 0;
 
 err_out:
-	xe_gt_err(gt, "Failed to enable GuC CT (%pe)\n", ERR_PTR(err));
+	xe_log_err(gt, GUC, err, "Failed to enable CT\n");
 	CT_DEAD(ct, NULL, SETUP);
 
 	return err;
@@ -803,8 +804,9 @@ static bool h2g_has_room(struct xe_guc_ct *ct, u32 cmd_len)
 
 			desc_write(xe, h2g, status, desc_status | GUC_CTB_STATUS_OVERFLOW);
 
-			xe_gt_err(ct_to_gt(ct), "CT: invalid head offset %u >= %u)\n",
-				  h2g->info.head, h2g->info.size);
+			xe_log_err(ct_to_gt(ct), GUC, -EPIPE,
+				   "CT: invalid head offset %u >= %u)\n",
+				   h2g->info.head, h2g->info.size);
 			CT_DEAD(ct, h2g, H2G_HAS_ROOM);
 			return false;
 		}
@@ -873,12 +875,13 @@ static void __g2h_release_space(struct xe_guc_ct *ct, u32 g2h_len)
 	bad |= !ct->g2h_outstanding;
 
 	if (bad) {
-		xe_gt_err(ct_to_gt(ct), "Invalid G2H release: %d + %d vs %d - %d -> %d vs %d, outstanding = %d!\n",
-			  ct->ctbs.g2h.info.space, g2h_len,
-			  ct->ctbs.g2h.info.size, ct->ctbs.g2h.info.resv_space,
-			  ct->ctbs.g2h.info.space + g2h_len,
-			  ct->ctbs.g2h.info.size - ct->ctbs.g2h.info.resv_space,
-			  ct->g2h_outstanding);
+		xe_log_err(ct_to_gt(ct), GUC, -ETOOMANYREFS,
+			   "Invalid G2H release: %d + %d vs %d - %d -> %d vs %d, outstanding = %d!\n",
+			   ct->ctbs.g2h.info.space, g2h_len,
+			   ct->ctbs.g2h.info.size, ct->ctbs.g2h.info.resv_space,
+			   ct->ctbs.g2h.info.space + g2h_len,
+			   ct->ctbs.g2h.info.size - ct->ctbs.g2h.info.resv_space,
+			   ct->g2h_outstanding);
 		CT_DEAD(ct, &ct->ctbs.g2h, G2H_RELEASE);
 		return;
 	}
@@ -963,23 +966,26 @@ static int h2g_write(struct xe_guc_ct *ct, const u32 *action, u32 len,
 		desc_status = desc_read(xe, h2g, status);
 		if (desc_status) {
 			err = -EPROTO;
-			xe_gt_err(gt, "CT write: non-zero status: %u\n", desc_status);
+			xe_log_err(gt, GUC, err,
+				   "CT write: non-zero status: %u\n", desc_status);
 			goto corrupted;
 		}
 
 		if (tail > h2g->info.size) {
 			desc_write(xe, h2g, status, desc_status | GUC_CTB_STATUS_OVERFLOW);
 			err = -EPROTO;
-			xe_gt_err(gt, "CT write: tail out of range: %u vs %u\n",
-				  tail, h2g->info.size);
+			xe_log_err(gt, GUC, err,
+				   "CT write: tail out of range: %u vs %u\n",
+				   tail, h2g->info.size);
 			goto corrupted;
 		}
 
 		if (desc_head >= h2g->info.size) {
 			desc_write(xe, h2g, status, desc_status | GUC_CTB_STATUS_OVERFLOW);
 			err = -EPIPE;
-			xe_gt_err(gt, "CT write: invalid head offset %u >= %u)\n",
-				  desc_head, h2g->info.size);
+			xe_log_err(gt, GUC, err,
+				   "CT write: invalid head offset %u >= %u)\n",
+				   desc_head, h2g->info.size);
 			goto corrupted;
 		}
 	}
@@ -1224,7 +1230,7 @@ static int guc_ct_send_locked(struct xe_guc_ct *ct, const u32 *action, u32 len,
 	return ret;
 
 broken:
-	xe_gt_err(gt, "No forward process on H2G, reset required\n");
+	xe_log_err(gt, GUC, -EDEADLK, "No forward process on H2G, reset required\n");
 	CT_DEAD(ct, &ct->ctbs.h2g, DEADLOCK);
 
 	return -EDEADLK;
@@ -1562,11 +1568,12 @@ static int guc_crash_process_msg(struct xe_guc_ct *ct, u32 action)
 	struct xe_gt *gt = ct_to_gt(ct);
 
 	if (action == XE_GUC_ACTION_NOTIFY_CRASH_DUMP_POSTED)
-		xe_gt_err(gt, "GuC Crash dump notification\n");
+		xe_log_err(gt, GUC, -EHOSTDOWN, "GuC Crash dump notification\n");
 	else if (action == XE_GUC_ACTION_NOTIFY_EXCEPTION)
-		xe_gt_err(gt, "GuC Exception notification\n");
+		xe_log_err(gt, GUC, -EHOSTDOWN, "GuC Exception notification\n");
 	else
-		xe_gt_err(gt, "Unknown GuC crash notification: 0x%04X\n", action);
+		xe_log_err(gt, GUC, -EHOSTDOWN,
+			   "Unknown GuC crash notification: 0x%04X\n", action);
 
 	CT_DEAD(ct, NULL, CRASH);
 
@@ -1599,14 +1606,16 @@ static int parse_g2h_response(struct xe_guc_ct *ct, u32 *msg, u32 len)
 
 		if (type == GUC_HXG_TYPE_RESPONSE_FAILURE) {
 			err = -EBADE;
-			xe_gt_err(gt, "FAST_REQ H2G fence 0x%x failed! e=0x%x, h=%u\n",
-				  fence,
-				  FIELD_GET(GUC_HXG_FAILURE_MSG_0_ERROR, hxg[0]),
-				  FIELD_GET(GUC_HXG_FAILURE_MSG_0_HINT, hxg[0]));
+			xe_log_err(gt, GUC, err,
+				   "FAST_REQ H2G fence 0x%x failed! e=0x%x, h=%u\n",
+				   fence,
+				   FIELD_GET(GUC_HXG_FAILURE_MSG_0_ERROR, hxg[0]),
+				   FIELD_GET(GUC_HXG_FAILURE_MSG_0_HINT, hxg[0]));
 		} else {
 			err = -EPROTO;
-			xe_gt_err(gt, "unexpected response %u for FAST_REQ H2G fence 0x%x!\n",
-				  type, fence);
+			xe_log_err(gt, GUC, err,
+				   "unexpected response %u for FAST_REQ H2G fence 0x%x!\n",
+				    type, fence);
 		}
 
 		fast_req_report(ct, fence);
@@ -1683,8 +1692,7 @@ static int parse_g2h_msg(struct xe_guc_ct *ct, u32 *msg, u32 len)
 
 	origin = FIELD_GET(GUC_HXG_MSG_0_ORIGIN, hxg[0]);
 	if (unlikely(origin != GUC_HXG_ORIGIN_GUC)) {
-		xe_gt_err(gt, "G2H channel broken on read, origin=%u, reset required\n",
-			  origin);
+		xe_log_err(gt, GUC, -EBADMSG, "Invalid G2H origin=%u, reset required\n", origin);
 		CT_DEAD(ct, &ct->ctbs.g2h, PARSE_G2H_ORIGIN);
 
 		return -EPROTO;
@@ -1702,8 +1710,9 @@ static int parse_g2h_msg(struct xe_guc_ct *ct, u32 *msg, u32 len)
 		ret = parse_g2h_response(ct, msg, len);
 		break;
 	default:
-		xe_gt_err(gt, "G2H channel broken on read, type=%u, reset required\n",
-			  type);
+		xe_log_err(gt, GUC, -EOPNOTSUPP,
+			   "Unexpected G2H message type %u, reset required\n",
+			   type);
 		CT_DEAD(ct, &ct->ctbs.g2h, PARSE_G2H_TYPE);
 
 		ret = -EOPNOTSUPP;
@@ -1801,8 +1810,8 @@ static int process_g2h_msg(struct xe_guc_ct *ct, u32 *msg, u32 len)
 	}
 
 	if (ret) {
-		xe_gt_err(gt, "G2H action %#04x failed (%pe) len %u msg %*ph\n",
-			  action, ERR_PTR(ret), hxg_len, (int)sizeof(u32) * hxg_len, hxg);
+		xe_log_err(gt, GUC, ret, "G2H action %#04x failed len %u msg %*ph\n",
+			   action, hxg_len, (int)sizeof(u32) * hxg_len, hxg);
 		CT_DEAD(ct, NULL, PROCESS_FAILED);
 	}
 
@@ -1852,7 +1861,7 @@ static int g2h_read(struct xe_guc_ct *ct, u32 *msg, bool fast_path)
 
 		if (desc_status) {
 			err = -EIO;
-			xe_gt_err(gt, "CT read: non-zero status: %u\n", desc_status);
+			xe_log_err(gt, GUC, err, "CT read: non-zero status: %u\n", desc_status);
 			goto corrupted;
 		}
 	}
@@ -1884,16 +1893,16 @@ static int g2h_read(struct xe_guc_ct *ct, u32 *msg, bool fast_path)
 		if (g2h->info.head > g2h->info.size) {
 			desc_write(xe, g2h, status, desc_status | GUC_CTB_STATUS_OVERFLOW);
 			err = -ERANGE;
-			xe_gt_err(gt, "CT read: head out of range: %u vs %u\n",
-				  g2h->info.head, g2h->info.size);
+			xe_log_err(gt, GUC, err, "CT read: head out of range: %u vs %u\n",
+				   g2h->info.head, g2h->info.size);
 			goto corrupted;
 		}
 
 		if (desc_tail >= g2h->info.size) {
 			desc_write(xe, g2h, status, desc_status | GUC_CTB_STATUS_OVERFLOW);
 			err = -ERANGE;
-			xe_gt_err(gt, "CT read: invalid tail offset %u >= %u)\n",
-				  desc_tail, g2h->info.size);
+			xe_log_err(gt, GUC, err, "CT read: invalid tail offset %u >= %u)\n",
+				   desc_tail, g2h->info.size);
 			goto corrupted;
 		}
 	}
@@ -1913,8 +1922,9 @@ static int g2h_read(struct xe_guc_ct *ct, u32 *msg, bool fast_path)
 	len = FIELD_GET(GUC_CTB_MSG_0_NUM_DWORDS, msg[0]) + GUC_CTB_MSG_MIN_LEN;
 	if (len > avail) {
 		err = -EBADMSG;
-		xe_gt_err(gt, "G2H channel broken on read, avail=%d, len=%d, reset required\n",
-			  avail, len);
+		xe_log_err(gt, GUC, err,
+			   "G2H channel broken on read, avail=%d, len=%d, reset required\n",
+			   avail, len);
 		goto corrupted;
 	}
 
@@ -1996,8 +2006,7 @@ static void g2h_fast_path(struct xe_guc_ct *ct, u32 *msg, u32 len)
 	}
 
 	if (ret) {
-		xe_gt_err(gt, "G2H action 0x%04x failed (%pe)\n",
-			  action, ERR_PTR(ret));
+		xe_log_err(gt, GUC, ret, "G2H action 0x%04x failed\n", action);
 		CT_DEAD(ct, NULL, FAST_G2H);
 	}
 }
@@ -2116,7 +2125,7 @@ static void receive_g2h(struct xe_guc_ct *ct)
 		mutex_unlock(&ct->lock);
 
 		if (unlikely(ret < 0 && g2h_err_is_fatal(ret))) {
-			xe_gt_err(ct_to_gt(ct), "CT dequeue failed (%pe)\n", ERR_PTR(ret));
+			xe_log_err(ct_to_gt(ct), GUC, ret, "CT dequeue failed, forcing GT reset\n");
 			CT_DEAD(ct, NULL, G2H_RECV);
 			kick_reset(ct);
 		}
-- 
2.55.0


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

* ✗ CI.checkpatch: warning for Use SIG_ID logs for GuC component
  2026-09-01 21:12 [PATCH v2 0/5] Use SIG_ID logs for GuC component Umesh Nerlige Ramappa
                   ` (4 preceding siblings ...)
  2026-09-01 21:12 ` [PATCH v2 5/5] drm/xe/guc: Report errors that cause a CT shutdown " Umesh Nerlige Ramappa
@ 2026-09-01 21:18 ` Patchwork
  2026-09-01 21:20 ` ✓ CI.KUnit: success " Patchwork
                   ` (2 subsequent siblings)
  8 siblings, 0 replies; 17+ messages in thread
From: Patchwork @ 2026-09-01 21:18 UTC (permalink / raw)
  To: Umesh Nerlige Ramappa; +Cc: intel-xe

== Series Details ==

Series: Use SIG_ID logs for GuC component
URL   : https://patchwork.freedesktop.org/series/173177/
State : warning

== Summary ==

+ KERNEL=/kernel
+ git clone https://gitlab.freedesktop.org/drm/maintainer-tools mt
Cloning into 'mt'...
warning: redirecting to https://gitlab.freedesktop.org/drm/maintainer-tools.git/
+ git -C mt rev-list -n1 origin/master
061140b9bc586ae7f40abc1249c97e1cc72d1b9d
+ cd /kernel
+ git config --global --add safe.directory /kernel
+ git log -n1
commit ff7c890cf8a3ad5dbde9a024ccbe62ae971bd96b
Author: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Date:   Tue Sep 1 14:12:10 2026 -0700

    drm/xe/guc: Report errors that cause a CT shutdown using SIGID
    
    Convert any errors that can cause the CT to be declared as dead to
    use the xe_log_err() helper. Errors that are escalated to the callers
    are left for the caller to report with SIGID if needed.
    While at it, update some of the error messages to make what went wrong
    clearer.
    
    v2: use different error codes for different errors, better messages (Michal)
    
    Signed-off-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
    Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
    Cc: Aravind Iddamsetty <aravind.iddamsetty@intel.com>
    Cc: Mallesh Koujalagi <mallesh.koujalagi@intel.com>
    Cc: Alan Previn Teres Alexis <alan.previn.teres.alexis@intel.com>
    Cc: Julia Filipchuk <julia.filipchuk@intel.com>
    Assisted-by: Claude:claude-opus-5
+ /mt/dim checkpatch c53467440a5196138d2d6610e269a43b6b47bf6b drm-intel
7cbbe5e7fce6 drm/xe/guc: Use different error codes for GuC load errors
085579a0b081 drm/xe/guc: Use different error codes for CT errors
1d59198d338b drm/xe/uc: Report DMA failure using SIGID
-:39: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#39: FILE: drivers/gpu/drm/xe/xe_uc_fw.c:922:
+	xe_gt_assert(gt, uc_fw->type == XE_UC_FW_TYPE_GUC ||
+			 uc_fw->type == XE_UC_FW_TYPE_HUC);

total: 0 errors, 0 warnings, 1 checks, 33 lines checked
71841d1a6559 drm/xe/guc: Report major GuC failures using SIGID
ff7c890cf8a3 drm/xe/guc: Report errors that cause a CT shutdown using SIGID
-:13: WARNING:COMMIT_LOG_LONG_LINE: Prefer a maximum 75 chars per line (possible unwrapped commit description?)
#13: 
v2: use different error codes for different errors, better messages (Michal)

total: 0 errors, 1 warnings, 0 checks, 207 lines checked



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

* ✓ CI.KUnit: success for Use SIG_ID logs for GuC component
  2026-09-01 21:12 [PATCH v2 0/5] Use SIG_ID logs for GuC component Umesh Nerlige Ramappa
                   ` (5 preceding siblings ...)
  2026-09-01 21:18 ` ✗ CI.checkpatch: warning for Use SIG_ID logs for GuC component Patchwork
@ 2026-09-01 21:20 ` Patchwork
  2026-09-02  6:57 ` ✓ Xe.CI.BAT: " Patchwork
  2026-09-02 12:05 ` ✓ Xe.CI.FULL: " Patchwork
  8 siblings, 0 replies; 17+ messages in thread
From: Patchwork @ 2026-09-01 21:20 UTC (permalink / raw)
  To: Umesh Nerlige Ramappa; +Cc: intel-xe

== Series Details ==

Series: Use SIG_ID logs for GuC component
URL   : https://patchwork.freedesktop.org/series/173177/
State : success

== Summary ==

+ trap cleanup EXIT
+ kunitconfigs=('/kernel/drivers/gpu/tests/.kunitconfig' '/kernel/drivers/gpu/drm/xe/.kunitconfig' '/kernel/drivers/gpu/drm/tests/.kunitconfig' '/kernel/drivers/gpu/drm/ttm/tests/.kunitconfig' '/kernel/drivers/dma-buf/.kunitconfig')
+ for kcfg in "${kunitconfigs[@]}"
+ [[ ! -f /kernel/drivers/gpu/tests/.kunitconfig ]]
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/tests/.kunitconfig
[21:18:47] Configuring KUnit Kernel ...
Generating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[21:18:51] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48
[21:19:12] Starting KUnit Kernel (1/1)...
[21:19:12] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[21:19:12] ============= refcount_interrupt (4 subtests) ==============
[21:19:12] [PASSED] test_single_irq_change
[21:19:12] [PASSED] test_nested_irq_change
[21:19:12] [PASSED] test_multiple_irq_change
[21:19:12] [PASSED] test_irq_save
[21:19:12] =============== [PASSED] refcount_interrupt ================
[21:19:12] ================= gpu_buddy (14 subtests) ==================
[21:19:12] [PASSED] gpu_test_buddy_alloc_limit
[21:19:12] [PASSED] gpu_test_buddy_alloc_optimistic
[21:19:12] [PASSED] gpu_test_buddy_alloc_pessimistic
[21:19:12] [PASSED] gpu_test_buddy_alloc_pathological
[21:19:12] [PASSED] gpu_test_buddy_alloc_contiguous
[21:19:12] [PASSED] gpu_test_buddy_alloc_clear
[21:19:12] [PASSED] gpu_test_buddy_alloc_range
[21:19:12] [PASSED] gpu_test_buddy_alloc_range_bias
[21:19:13] [PASSED] gpu_test_buddy_fragmentation_performance
[21:19:14] [PASSED] gpu_test_buddy_dirty_tracker_performance
[21:19:14] [PASSED] gpu_test_buddy_alloc_exceeds_max_order
[21:19:14] [PASSED] gpu_test_buddy_offset_aligned_allocation
[21:19:14] [PASSED] gpu_test_buddy_subtree_offset_alignment_stress
[21:19:14] [PASSED] gpu_test_buddy_addr_to_block
[21:19:14] ==================== [PASSED] gpu_buddy ====================
[21:19:14] ============================================================
[21:19:14] Testing complete. Ran 18 tests: passed: 18
[21:19:14] Elapsed time: 26.777s total, 4.406s configuring, 20.454s building, 1.856s running

+ for kcfg in "${kunitconfigs[@]}"
+ [[ ! -f /kernel/drivers/gpu/drm/xe/.kunitconfig ]]
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/xe/.kunitconfig
[21:19:14] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[21:19:16] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48
[21:19:49] Starting KUnit Kernel (1/1)...
[21:19:49] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[21:19:50] ============= refcount_interrupt (4 subtests) ==============
[21:19:50] [PASSED] test_single_irq_change
[21:19:50] [PASSED] test_nested_irq_change
[21:19:50] [PASSED] test_multiple_irq_change
[21:19:50] [PASSED] test_irq_save
[21:19:50] =============== [PASSED] refcount_interrupt ================
[21:19:50] ================== guc_buf (11 subtests) ===================
[21:19:50] [PASSED] test_smallest
[21:19:50] [PASSED] test_largest
[21:19:50] [PASSED] test_granular
[21:19:50] [PASSED] test_unique
[21:19:50] [PASSED] test_overlap
[21:19:50] [PASSED] test_reusable
[21:19:50] [PASSED] test_too_big
[21:19:50] [PASSED] test_flush
[21:19:50] [PASSED] test_lookup
[21:19:50] [PASSED] test_data
[21:19:50] [PASSED] test_class
[21:19:50] ===================== [PASSED] guc_buf =====================
[21:19:50] =================== guc_dbm (7 subtests) ===================
[21:19:50] [PASSED] test_empty
[21:19:50] [PASSED] test_default
[21:19:50] ======================== test_size  ========================
[21:19:50] [PASSED] 4
[21:19:50] [PASSED] 8
[21:19:50] [PASSED] 32
[21:19:50] [PASSED] 256
[21:19:50] ==================== [PASSED] test_size ====================
[21:19:50] ======================= test_reuse  ========================
[21:19:50] [PASSED] 4
[21:19:50] [PASSED] 8
[21:19:50] [PASSED] 32
[21:19:50] [PASSED] 256
[21:19:50] =================== [PASSED] test_reuse ====================
[21:19:50] =================== test_range_overlap  ====================
[21:19:50] [PASSED] 4
[21:19:50] [PASSED] 8
[21:19:50] [PASSED] 32
[21:19:50] [PASSED] 256
[21:19:50] =============== [PASSED] test_range_overlap ================
[21:19:50] =================== test_range_compact  ====================
[21:19:50] [PASSED] 4
[21:19:50] [PASSED] 8
[21:19:50] [PASSED] 32
[21:19:50] [PASSED] 256
[21:19:50] =============== [PASSED] test_range_compact ================
[21:19:50] ==================== test_range_spare  =====================
[21:19:50] [PASSED] 4
[21:19:50] [PASSED] 8
[21:19:50] [PASSED] 32
[21:19:50] [PASSED] 256
[21:19:50] ================ [PASSED] test_range_spare =================
[21:19:50] ===================== [PASSED] guc_dbm =====================
[21:19:50] =================== guc_idm (6 subtests) ===================
[21:19:50] [PASSED] bad_init
[21:19:50] [PASSED] no_init
[21:19:50] [PASSED] init_fini
[21:19:50] [PASSED] check_used
[21:19:50] [PASSED] check_quota
[21:19:50] [PASSED] check_all
[21:19:50] ===================== [PASSED] guc_idm =====================
[21:19:50] =============== guc_klv_helpers (9 subtests) ===============
[21:19:50] [PASSED] test_count
[21:19:50] [PASSED] test_encode_u32
[21:19:50] [PASSED] test_encode_u64
[21:19:50] [PASSED] test_encode_string
[21:19:50] [PASSED] test_encode_object_raw
[21:19:50] [PASSED] test_encode_object_klv
[21:19:50] [PASSED] test_encode_object_nested
[21:19:50] [PASSED] test_encode_object_basic
[21:19:50] [PASSED] test_print
[21:19:50] ================= [PASSED] guc_klv_helpers =================
[21:19:50] =================== xe_log (4 subtests) ====================
[21:19:50] [PASSED] demo_cper
[21:19:50] [PASSED] demo_dmesg
[21:19:50] ======================= test_dmesg  ========================
[21:19:50] [PASSED] test_fatal
[21:19:50] [PASSED] test_fatal_tile
[21:19:50] [PASSED] test_fatal_gt
[21:19:50] [PASSED] test_fatal_comp
[21:19:50] [PASSED] test_fatal_comp_tile
[21:19:50] [PASSED] test_fatal_comp_gt
[21:19:50] [PASSED] test_fatal_all
[21:19:50] [PASSED] test_recoverable
[21:19:50] [PASSED] test_recoverable_tile
[21:19:50] [PASSED] test_recoverable_gt
[21:19:50] [PASSED] test_recoverable_comp
[21:19:50] [PASSED] test_recoverable_comp_tile
[21:19:50] [PASSED] test_recoverable_comp_gt
[21:19:50] [PASSED] test_recoverable_all
[21:19:50] [PASSED] test_info
[21:19:50] [PASSED] test_info_tile
[21:19:50] [PASSED] test_info_gt
[21:19:50] [PASSED] test_info_err
[21:19:50] [PASSED] test_info_comp
[21:19:50] [PASSED] test_info_comp_tile
[21:19:50] [PASSED] test_info_comp_gt
[21:19:50] [PASSED] test_info_all
[21:19:50] [PASSED] test_hw_fatal
[21:19:50] [PASSED] test_hw_recoverable
[21:19:50] [PASSED] test_hw_corrected
[21:19:50] [PASSED] test_hw_informational
[21:19:50] =================== [PASSED] test_dmesg ====================
[21:19:50] ====================== test_invalid  =======================
[21:19:50] [SKIPPED] no-component no-location no-warn (requires CONFIG_DRM_XE_DEBUG)
[21:19:50] [SKIPPED] reserved location (requires CONFIG_DRM_XE_DEBUG)
[21:19:50] [SKIPPED] unknown location (requires CONFIG_DRM_XE_DEBUG)
[21:19:50] [SKIPPED] nonzero-device-id location (requires CONFIG_DRM_XE_DEBUG)
[21:19:50] [SKIPPED] invalid-tile-id location (requires CONFIG_DRM_XE_DEBUG)
[21:19:50] [SKIPPED] invalid-gt-id location (requires CONFIG_DRM_XE_DEBUG)
[21:19:50] [SKIPPED] unknown component class (requires CONFIG_DRM_XE_DEBUG)
[21:19:50] [SKIPPED] unknown system component (requires CONFIG_DRM_XE_DEBUG)
[21:19:50] [SKIPPED] unknown hardware component (requires CONFIG_DRM_XE_DEBUG)
[21:19:50] [SKIPPED] unknown component and location (requires CONFIG_DRM_XE_DEBUG)
[21:19:50] ================== [SKIPPED] test_invalid ==================
[21:19:50] ===================== [PASSED] xe_log ======================
[21:19:50] ================== no_relay (3 subtests) ===================
[21:19:50] [PASSED] xe_drops_guc2pf_if_not_ready
[21:19:50] [PASSED] xe_drops_guc2vf_if_not_ready
[21:19:50] [PASSED] xe_rejects_send_if_not_ready
[21:19:50] ==================== [PASSED] no_relay =====================
[21:19:50] ================== pf_relay (14 subtests) ==================
[21:19:50] [PASSED] pf_rejects_guc2pf_too_short
[21:19:50] [PASSED] pf_rejects_guc2pf_too_long
[21:19:50] [PASSED] pf_rejects_guc2pf_no_payload
[21:19:50] [PASSED] pf_fails_no_payload
[21:19:50] [PASSED] pf_fails_bad_origin
[21:19:50] [PASSED] pf_fails_bad_type
[21:19:50] [PASSED] pf_txn_reports_error
[21:19:50] [PASSED] pf_txn_sends_pf2guc
[21:19:50] [PASSED] pf_sends_pf2guc
[21:19:50] [SKIPPED] pf_loopback_nop (requires CONFIG_DRM_XE_DEBUG_SRIOV)
[21:19:50] [SKIPPED] pf_loopback_echo (requires CONFIG_DRM_XE_DEBUG_SRIOV)
[21:19:50] [SKIPPED] pf_loopback_fail (requires CONFIG_DRM_XE_DEBUG_SRIOV)
[21:19:50] [SKIPPED] pf_loopback_busy (requires CONFIG_DRM_XE_DEBUG_SRIOV)
[21:19:50] [SKIPPED] pf_loopback_retry (requires CONFIG_DRM_XE_DEBUG_SRIOV)
[21:19:50] ==================== [PASSED] pf_relay =====================
[21:19:50] ================== vf_relay (3 subtests) ===================
[21:19:50] [PASSED] vf_rejects_guc2vf_too_short
[21:19:50] [PASSED] vf_rejects_guc2vf_too_long
[21:19:50] [PASSED] vf_rejects_guc2vf_no_payload
[21:19:50] ==================== [PASSED] vf_relay =====================
[21:19:50] ================ pf_gt_config (9 subtests) =================
[21:19:50] [PASSED] fair_contexts_1vf
[21:19:50] [PASSED] fair_doorbells_1vf
[21:19:50] [PASSED] fair_ggtt_1vf
[21:19:50] ====================== fair_vram_1vf  ======================
[21:19:50] [PASSED] 3.50 GiB
[21:19:50] [PASSED] 11.5 GiB
[21:19:50] [PASSED] 15.5 GiB
[21:19:50] [PASSED] 31.5 GiB
[21:19:50] [PASSED] 63.5 GiB
[21:19:50] [PASSED] 1.91 GiB
[21:19:50] ================== [PASSED] fair_vram_1vf ==================
[21:19:50] ================ fair_vram_1vf_admin_only  =================
[21:19:50] [PASSED] 3.50 GiB
[21:19:50] [PASSED] 11.5 GiB
[21:19:50] [PASSED] 15.5 GiB
[21:19:50] [PASSED] 31.5 GiB
[21:19:50] [PASSED] 63.5 GiB
[21:19:50] [PASSED] 1.91 GiB
[21:19:50] ============ [PASSED] fair_vram_1vf_admin_only =============
[21:19:50] ====================== fair_contexts  ======================
[21:19:50] [PASSED] 1 VF
[21:19:50] [PASSED] 2 VFs
[21:19:50] [PASSED] 3 VFs
[21:19:50] [PASSED] 4 VFs
[21:19:50] [PASSED] 5 VFs
[21:19:50] [PASSED] 6 VFs
[21:19:50] [PASSED] 7 VFs
[21:19:50] [PASSED] 8 VFs
[21:19:50] [PASSED] 9 VFs
[21:19:50] [PASSED] 10 VFs
[21:19:50] [PASSED] 11 VFs
[21:19:50] [PASSED] 12 VFs
[21:19:50] [PASSED] 13 VFs
[21:19:50] [PASSED] 14 VFs
[21:19:50] [PASSED] 15 VFs
[21:19:50] [PASSED] 16 VFs
[21:19:50] [PASSED] 17 VFs
[21:19:50] [PASSED] 18 VFs
[21:19:50] [PASSED] 19 VFs
[21:19:50] [PASSED] 20 VFs
[21:19:50] [PASSED] 21 VFs
[21:19:50] [PASSED] 22 VFs
[21:19:50] [PASSED] 23 VFs
[21:19:50] [PASSED] 24 VFs
[21:19:50] [PASSED] 25 VFs
[21:19:50] [PASSED] 26 VFs
[21:19:50] [PASSED] 27 VFs
[21:19:50] [PASSED] 28 VFs
[21:19:50] [PASSED] 29 VFs
[21:19:50] [PASSED] 30 VFs
[21:19:50] [PASSED] 31 VFs
[21:19:50] [PASSED] 32 VFs
[21:19:50] [PASSED] 33 VFs
[21:19:50] [PASSED] 34 VFs
[21:19:50] [PASSED] 35 VFs
[21:19:50] [PASSED] 36 VFs
[21:19:50] [PASSED] 37 VFs
[21:19:50] [PASSED] 38 VFs
[21:19:50] [PASSED] 39 VFs
[21:19:50] [PASSED] 40 VFs
[21:19:50] [PASSED] 41 VFs
[21:19:50] [PASSED] 42 VFs
[21:19:50] [PASSED] 43 VFs
[21:19:50] [PASSED] 44 VFs
[21:19:50] [PASSED] 45 VFs
[21:19:50] [PASSED] 46 VFs
[21:19:50] [PASSED] 47 VFs
[21:19:50] [PASSED] 48 VFs
[21:19:50] [PASSED] 49 VFs
[21:19:50] [PASSED] 50 VFs
[21:19:50] [PASSED] 51 VFs
[21:19:50] [PASSED] 52 VFs
[21:19:50] [PASSED] 53 VFs
[21:19:50] [PASSED] 54 VFs
[21:19:50] [PASSED] 55 VFs
[21:19:50] [PASSED] 56 VFs
[21:19:50] [PASSED] 57 VFs
[21:19:50] [PASSED] 58 VFs
[21:19:50] [PASSED] 59 VFs
[21:19:50] [PASSED] 60 VFs
[21:19:50] [PASSED] 61 VFs
[21:19:50] [PASSED] 62 VFs
[21:19:50] [PASSED] 63 VFs
[21:19:50] ================== [PASSED] fair_contexts ==================
[21:19:50] ===================== fair_doorbells  ======================
[21:19:50] [PASSED] 1 VF
[21:19:50] [PASSED] 2 VFs
[21:19:50] [PASSED] 3 VFs
[21:19:50] [PASSED] 4 VFs
[21:19:50] [PASSED] 5 VFs
[21:19:50] [PASSED] 6 VFs
[21:19:50] [PASSED] 7 VFs
[21:19:50] [PASSED] 8 VFs
[21:19:50] [PASSED] 9 VFs
[21:19:50] [PASSED] 10 VFs
[21:19:50] [PASSED] 11 VFs
[21:19:50] [PASSED] 12 VFs
[21:19:50] [PASSED] 13 VFs
[21:19:50] [PASSED] 14 VFs
[21:19:50] [PASSED] 15 VFs
[21:19:50] [PASSED] 16 VFs
[21:19:50] [PASSED] 17 VFs
[21:19:50] [PASSED] 18 VFs
[21:19:50] [PASSED] 19 VFs
[21:19:50] [PASSED] 20 VFs
[21:19:50] [PASSED] 21 VFs
[21:19:50] [PASSED] 22 VFs
[21:19:50] [PASSED] 23 VFs
[21:19:50] [PASSED] 24 VFs
[21:19:50] [PASSED] 25 VFs
[21:19:50] [PASSED] 26 VFs
[21:19:50] [PASSED] 27 VFs
[21:19:50] [PASSED] 28 VFs
[21:19:50] [PASSED] 29 VFs
[21:19:50] [PASSED] 30 VFs
[21:19:50] [PASSED] 31 VFs
[21:19:50] [PASSED] 32 VFs
[21:19:50] [PASSED] 33 VFs
[21:19:50] [PASSED] 34 VFs
[21:19:50] [PASSED] 35 VFs
[21:19:50] [PASSED] 36 VFs
[21:19:50] [PASSED] 37 VFs
[21:19:50] [PASSED] 38 VFs
[21:19:50] [PASSED] 39 VFs
[21:19:50] [PASSED] 40 VFs
[21:19:50] [PASSED] 41 VFs
[21:19:50] [PASSED] 42 VFs
[21:19:50] [PASSED] 43 VFs
[21:19:50] [PASSED] 44 VFs
[21:19:50] [PASSED] 45 VFs
[21:19:50] [PASSED] 46 VFs
[21:19:50] [PASSED] 47 VFs
[21:19:50] [PASSED] 48 VFs
[21:19:50] [PASSED] 49 VFs
[21:19:50] [PASSED] 50 VFs
[21:19:50] [PASSED] 51 VFs
[21:19:50] [PASSED] 52 VFs
[21:19:50] [PASSED] 53 VFs
[21:19:50] [PASSED] 54 VFs
[21:19:50] [PASSED] 55 VFs
[21:19:50] [PASSED] 56 VFs
[21:19:50] [PASSED] 57 VFs
[21:19:50] [PASSED] 58 VFs
[21:19:50] [PASSED] 59 VFs
[21:19:50] [PASSED] 60 VFs
[21:19:50] [PASSED] 61 VFs
[21:19:50] [PASSED] 62 VFs
[21:19:50] [PASSED] 63 VFs
[21:19:50] ================= [PASSED] fair_doorbells ==================
[21:19:50] ======================== fair_ggtt  ========================
[21:19:50] [PASSED] 1 VF
[21:19:50] [PASSED] 2 VFs
[21:19:50] [PASSED] 3 VFs
[21:19:50] [PASSED] 4 VFs
[21:19:50] [PASSED] 5 VFs
[21:19:50] [PASSED] 6 VFs
[21:19:50] [PASSED] 7 VFs
[21:19:50] [PASSED] 8 VFs
[21:19:50] [PASSED] 9 VFs
[21:19:50] [PASSED] 10 VFs
[21:19:50] [PASSED] 11 VFs
[21:19:50] [PASSED] 12 VFs
[21:19:50] [PASSED] 13 VFs
[21:19:50] [PASSED] 14 VFs
[21:19:50] [PASSED] 15 VFs
[21:19:50] [PASSED] 16 VFs
[21:19:50] [PASSED] 17 VFs
[21:19:50] [PASSED] 18 VFs
[21:19:50] [PASSED] 19 VFs
[21:19:50] [PASSED] 20 VFs
[21:19:50] [PASSED] 21 VFs
[21:19:50] [PASSED] 22 VFs
[21:19:50] [PASSED] 23 VFs
[21:19:50] [PASSED] 24 VFs
[21:19:50] [PASSED] 25 VFs
[21:19:50] [PASSED] 26 VFs
[21:19:50] [PASSED] 27 VFs
[21:19:50] [PASSED] 28 VFs
[21:19:50] [PASSED] 29 VFs
[21:19:50] [PASSED] 30 VFs
[21:19:50] [PASSED] 31 VFs
[21:19:50] [PASSED] 32 VFs
[21:19:50] [PASSED] 33 VFs
[21:19:50] [PASSED] 34 VFs
[21:19:50] [PASSED] 35 VFs
[21:19:50] [PASSED] 36 VFs
[21:19:50] [PASSED] 37 VFs
[21:19:50] [PASSED] 38 VFs
[21:19:50] [PASSED] 39 VFs
[21:19:50] [PASSED] 40 VFs
[21:19:50] [PASSED] 41 VFs
[21:19:50] [PASSED] 42 VFs
[21:19:50] [PASSED] 43 VFs
[21:19:50] [PASSED] 44 VFs
[21:19:50] [PASSED] 45 VFs
[21:19:50] [PASSED] 46 VFs
[21:19:50] [PASSED] 47 VFs
[21:19:50] [PASSED] 48 VFs
[21:19:50] [PASSED] 49 VFs
[21:19:50] [PASSED] 50 VFs
[21:19:50] [PASSED] 51 VFs
[21:19:50] [PASSED] 52 VFs
[21:19:50] [PASSED] 53 VFs
[21:19:50] [PASSED] 54 VFs
[21:19:50] [PASSED] 55 VFs
[21:19:50] [PASSED] 56 VFs
[21:19:50] [PASSED] 57 VFs
[21:19:50] [PASSED] 58 VFs
[21:19:50] [PASSED] 59 VFs
[21:19:50] [PASSED] 60 VFs
[21:19:50] [PASSED] 61 VFs
[21:19:50] [PASSED] 62 VFs
[21:19:50] [PASSED] 63 VFs
[21:19:50] ==================== [PASSED] fair_ggtt ====================
[21:19:50] ======================== fair_vram  ========================
[21:19:50] [PASSED] 1 VF
[21:19:50] [PASSED] 2 VFs
[21:19:50] [PASSED] 3 VFs
[21:19:50] [PASSED] 4 VFs
[21:19:50] [PASSED] 5 VFs
[21:19:50] [PASSED] 6 VFs
[21:19:50] [PASSED] 7 VFs
[21:19:50] [PASSED] 8 VFs
[21:19:50] [PASSED] 9 VFs
[21:19:50] [PASSED] 10 VFs
[21:19:50] [PASSED] 11 VFs
[21:19:50] [PASSED] 12 VFs
[21:19:50] [PASSED] 13 VFs
[21:19:50] [PASSED] 14 VFs
[21:19:50] [PASSED] 15 VFs
[21:19:50] [PASSED] 16 VFs
[21:19:50] [PASSED] 17 VFs
[21:19:50] [PASSED] 18 VFs
[21:19:50] [PASSED] 19 VFs
[21:19:50] [PASSED] 20 VFs
[21:19:50] [PASSED] 21 VFs
[21:19:50] [PASSED] 22 VFs
[21:19:50] [PASSED] 23 VFs
[21:19:50] [PASSED] 24 VFs
[21:19:50] [PASSED] 25 VFs
[21:19:50] [PASSED] 26 VFs
[21:19:50] [PASSED] 27 VFs
[21:19:50] [PASSED] 28 VFs
[21:19:50] [PASSED] 29 VFs
[21:19:50] [PASSED] 30 VFs
[21:19:50] [PASSED] 31 VFs
[21:19:50] [PASSED] 32 VFs
[21:19:50] [PASSED] 33 VFs
[21:19:50] [PASSED] 34 VFs
[21:19:50] [PASSED] 35 VFs
[21:19:50] [PASSED] 36 VFs
[21:19:50] [PASSED] 37 VFs
[21:19:50] [PASSED] 38 VFs
[21:19:50] [PASSED] 39 VFs
[21:19:50] [PASSED] 40 VFs
[21:19:50] [PASSED] 41 VFs
[21:19:50] [PASSED] 42 VFs
[21:19:50] [PASSED] 43 VFs
[21:19:50] [PASSED] 44 VFs
[21:19:50] [PASSED] 45 VFs
[21:19:50] [PASSED] 46 VFs
[21:19:50] [PASSED] 47 VFs
[21:19:50] [PASSED] 48 VFs
[21:19:50] [PASSED] 49 VFs
[21:19:50] [PASSED] 50 VFs
[21:19:50] [PASSED] 51 VFs
[21:19:50] [PASSED] 52 VFs
[21:19:50] [PASSED] 53 VFs
[21:19:50] [PASSED] 54 VFs
[21:19:50] [PASSED] 55 VFs
[21:19:50] [PASSED] 56 VFs
[21:19:50] [PASSED] 57 VFs
[21:19:50] [PASSED] 58 VFs
[21:19:50] [PASSED] 59 VFs
[21:19:50] [PASSED] 60 VFs
[21:19:50] [PASSED] 61 VFs
[21:19:50] [PASSED] 62 VFs
[21:19:50] [PASSED] 63 VFs
[21:19:50] ==================== [PASSED] fair_vram ====================
[21:19:50] ================== [PASSED] pf_gt_config ===================
[21:19:50] ===================== lmtt (1 subtest) =====================
[21:19:50] ======================== test_ops  =========================
[21:19:50] [PASSED] 2-level
[21:19:50] [PASSED] multi-level
[21:19:50] ==================== [PASSED] test_ops =====================
[21:19:50] ====================== [PASSED] lmtt =======================
[21:19:50] ================= sriov_packet (1 subtest) =================
[21:19:50] [PASSED] test_descriptor_init
[21:19:50] ================== [PASSED] sriov_packet ===================
[21:19:50] ================= pf_service (11 subtests) =================
[21:19:50] [PASSED] pf_negotiate_any
[21:19:50] [PASSED] pf_negotiate_base_match
[21:19:50] [PASSED] pf_negotiate_base_newer
[21:19:50] [PASSED] pf_negotiate_base_next
[21:19:50] [SKIPPED] pf_negotiate_base_older (no older minor)
[21:19:50] [PASSED] pf_negotiate_base_prev
[21:19:50] [PASSED] pf_negotiate_latest_match
[21:19:50] [PASSED] pf_negotiate_latest_newer
[21:19:50] [PASSED] pf_negotiate_latest_next
[21:19:50] [SKIPPED] pf_negotiate_latest_older (no older minor)
[21:19:50] [SKIPPED] pf_negotiate_latest_prev (no prev major)
[21:19:50] =================== [PASSED] pf_service ====================
[21:19:50] ================= xe_guc_g2g (2 subtests) ==================
[21:19:50] ============== xe_live_guc_g2g_kunit_default  ==============
[21:19:50] ========= [SKIPPED] xe_live_guc_g2g_kunit_default ==========
[21:19:50] ============== xe_live_guc_g2g_kunit_allmem  ===============
[21:19:50] ========== [SKIPPED] xe_live_guc_g2g_kunit_allmem ==========
[21:19:50] =================== [SKIPPED] xe_guc_g2g ===================
[21:19:50] =================== xe_mocs (2 subtests) ===================
[21:19:50] ================ xe_live_mocs_kernel_kunit  ================
[21:19:50] =========== [SKIPPED] xe_live_mocs_kernel_kunit ============
[21:19:50] ================ xe_live_mocs_reset_kunit  =================
[21:19:50] ============ [SKIPPED] xe_live_mocs_reset_kunit ============
[21:19:50] ==================== [SKIPPED] xe_mocs =====================
[21:19:50] ================= xe_migrate (2 subtests) ==================
[21:19:50] ================= xe_migrate_sanity_kunit  =================
[21:19:50] ============ [SKIPPED] xe_migrate_sanity_kunit =============
[21:19:50] ================== xe_validate_ccs_kunit  ==================
[21:19:50] ============= [SKIPPED] xe_validate_ccs_kunit ==============
[21:19:50] =================== [SKIPPED] xe_migrate ===================
[21:19:50] ================== xe_dma_buf (1 subtest) ==================
[21:19:50] ==================== xe_dma_buf_kunit  =====================
[21:19:50] ================ [SKIPPED] xe_dma_buf_kunit ================
[21:19:50] =================== [SKIPPED] xe_dma_buf ===================
[21:19:50] ================= xe_bo_shrink (1 subtest) =================
[21:19:50] =================== xe_bo_shrink_kunit  ====================
[21:19:50] =============== [SKIPPED] xe_bo_shrink_kunit ===============
[21:19:50] ================== [SKIPPED] xe_bo_shrink ==================
[21:19:50] ==================== xe_bo (2 subtests) ====================
[21:19:50] ================== xe_ccs_migrate_kunit  ===================
[21:19:50] ============== [SKIPPED] xe_ccs_migrate_kunit ==============
[21:19:50] ==================== xe_bo_evict_kunit  ====================
[21:19:50] =============== [SKIPPED] xe_bo_evict_kunit ================
[21:19:50] ===================== [SKIPPED] xe_bo ======================
[21:19:50] =================== xe_any (9 subtests) ====================
[21:19:50] [PASSED] test_to_xe
[21:19:50] [PASSED] test_to_dev
[21:19:50] [PASSED] test_to_pdev
[21:19:50] [PASSED] test_to_drm
[21:19:50] [PASSED] test_if_pdev
[21:19:50] [PASSED] test_if_xe
[21:19:50] [PASSED] test_if_tile
[21:19:50] [PASSED] test_if_gt
[21:19:50] [PASSED] test_to_id
[21:19:50] ===================== [PASSED] xe_any ======================
[21:19:50] ==================== args (13 subtests) ====================
[21:19:50] [PASSED] count_args_test
[21:19:50] [PASSED] call_args_example
[21:19:50] [PASSED] call_args_test
[21:19:50] [PASSED] drop_first_arg_example
[21:19:50] [PASSED] drop_first_arg_test
[21:19:50] [PASSED] first_arg_example
[21:19:50] [PASSED] first_arg_test
[21:19:50] [PASSED] last_arg_example
[21:19:50] [PASSED] last_arg_test
[21:19:50] [PASSED] pick_arg_example
[21:19:50] [PASSED] if_args_example
[21:19:50] [PASSED] if_args_test
[21:19:50] [PASSED] sep_comma_example
[21:19:50] ====================== [PASSED] args =======================
[21:19:50] =================== xe_pci (3 subtests) ====================
[21:19:50] ==================== check_graphics_ip  ====================
[21:19:50] [PASSED] 12.00 Xe_LP
[21:19:50] [PASSED] 12.10 Xe_LP+
[21:19:50] [PASSED] 12.55 Xe_HPG
[21:19:50] [PASSED] 12.60 Xe_HPC
[21:19:50] [PASSED] 12.70 Xe_LPG
[21:19:50] [PASSED] 12.71 Xe_LPG
[21:19:50] [PASSED] 12.74 Xe_LPG+
[21:19:50] [PASSED] 20.01 Xe2_HPG
[21:19:50] [PASSED] 20.02 Xe2_HPG
[21:19:50] [PASSED] 20.04 Xe2_LPG
[21:19:50] [PASSED] 30.00 Xe3_LPG
[21:19:50] [PASSED] 30.01 Xe3_LPG
[21:19:50] [PASSED] 30.03 Xe3_LPG
[21:19:50] [PASSED] 30.04 Xe3_LPG
[21:19:50] [PASSED] 30.05 Xe3_LPG
[21:19:50] [PASSED] 35.10 Xe3p_LPG
[21:19:50] [PASSED] 35.11 Xe3p_XPC
[21:19:50] ================ [PASSED] check_graphics_ip ================
[21:19:50] ===================== check_media_ip  ======================
[21:19:50] [PASSED] 12.00 Xe_M
[21:19:50] [PASSED] 12.55 Xe_HPM
[21:19:50] [PASSED] 13.00 Xe_LPM+
[21:19:50] [PASSED] 13.01 Xe2_HPM
[21:19:50] [PASSED] 20.00 Xe2_LPM
[21:19:50] [PASSED] 30.00 Xe3_LPM
[21:19:50] [PASSED] 30.02 Xe3_LPM
[21:19:50] [PASSED] 35.00 Xe3p_LPM
[21:19:50] [PASSED] 35.03 Xe3p_HPM
[21:19:50] ================= [PASSED] check_media_ip ==================
[21:19:50] =================== check_platform_desc  ===================
[21:19:50] [PASSED] 0x9A60 (TIGERLAKE)
[21:19:50] [PASSED] 0x9A68 (TIGERLAKE)
[21:19:50] [PASSED] 0x9A70 (TIGERLAKE)
[21:19:50] [PASSED] 0x9A40 (TIGERLAKE)
[21:19:50] [PASSED] 0x9A49 (TIGERLAKE)
[21:19:50] [PASSED] 0x9A59 (TIGERLAKE)
[21:19:50] [PASSED] 0x9A78 (TIGERLAKE)
[21:19:50] [PASSED] 0x9AC0 (TIGERLAKE)
[21:19:50] [PASSED] 0x9AC9 (TIGERLAKE)
[21:19:50] [PASSED] 0x9AD9 (TIGERLAKE)
[21:19:50] [PASSED] 0x9AF8 (TIGERLAKE)
[21:19:50] [PASSED] 0x4C80 (ROCKETLAKE)
[21:19:50] [PASSED] 0x4C8A (ROCKETLAKE)
[21:19:50] [PASSED] 0x4C8B (ROCKETLAKE)
[21:19:50] [PASSED] 0x4C8C (ROCKETLAKE)
[21:19:50] [PASSED] 0x4C90 (ROCKETLAKE)
[21:19:50] [PASSED] 0x4C9A (ROCKETLAKE)
[21:19:50] [PASSED] 0x4680 (ALDERLAKE_S)
[21:19:50] [PASSED] 0x4682 (ALDERLAKE_S)
[21:19:50] [PASSED] 0x4688 (ALDERLAKE_S)
[21:19:50] [PASSED] 0x468A (ALDERLAKE_S)
[21:19:50] [PASSED] 0x468B (ALDERLAKE_S)
[21:19:50] [PASSED] 0x4690 (ALDERLAKE_S)
[21:19:50] [PASSED] 0x4692 (ALDERLAKE_S)
[21:19:50] [PASSED] 0x4693 (ALDERLAKE_S)
[21:19:50] [PASSED] 0x46A0 (ALDERLAKE_P)
[21:19:50] [PASSED] 0x46A1 (ALDERLAKE_P)
[21:19:50] [PASSED] 0x46A2 (ALDERLAKE_P)
[21:19:50] [PASSED] 0x46A3 (ALDERLAKE_P)
[21:19:50] [PASSED] 0x46A6 (ALDERLAKE_P)
[21:19:50] [PASSED] 0x46A8 (ALDERLAKE_P)
[21:19:50] [PASSED] 0x46AA (ALDERLAKE_P)
[21:19:50] [PASSED] 0x462A (ALDERLAKE_P)
[21:19:50] [PASSED] 0x4626 (ALDERLAKE_P)
[21:19:50] [PASSED] 0x4628 (ALDERLAKE_P)
[21:19:50] [PASSED] 0x46B0 (ALDERLAKE_P)
[21:19:50] [PASSED] 0x46B1 (ALDERLAKE_P)
[21:19:50] [PASSED] 0x46B2 (ALDERLAKE_P)
[21:19:50] [PASSED] 0x46B3 (ALDERLAKE_P)
[21:19:50] [PASSED] 0x46C0 (ALDERLAKE_P)
[21:19:50] [PASSED] 0x46C1 (ALDERLAKE_P)
[21:19:50] [PASSED] 0x46C2 (ALDERLAKE_P)
[21:19:50] [PASSED] 0x46C3 (ALDERLAKE_P)
[21:19:50] [PASSED] 0x46D0 (ALDERLAKE_N)
[21:19:50] [PASSED] 0x46D1 (ALDERLAKE_N)
[21:19:50] [PASSED] 0x46D2 (ALDERLAKE_N)
[21:19:50] [PASSED] 0x46D3 (ALDERLAKE_N)
[21:19:50] [PASSED] 0x46D4 (ALDERLAKE_N)
[21:19:50] [PASSED] 0xA721 (ALDERLAKE_P)
[21:19:50] [PASSED] 0xA7A1 (ALDERLAKE_P)
[21:19:50] [PASSED] 0xA7A9 (ALDERLAKE_P)
[21:19:50] [PASSED] 0xA7AC (ALDERLAKE_P)
[21:19:50] [PASSED] 0xA7AD (ALDERLAKE_P)
[21:19:50] [PASSED] 0xA720 (ALDERLAKE_P)
[21:19:50] [PASSED] 0xA7A0 (ALDERLAKE_P)
[21:19:50] [PASSED] 0xA7A8 (ALDERLAKE_P)
[21:19:50] [PASSED] 0xA7AA (ALDERLAKE_P)
[21:19:50] [PASSED] 0xA7AB (ALDERLAKE_P)
[21:19:50] [PASSED] 0xA780 (ALDERLAKE_S)
[21:19:50] [PASSED] 0xA781 (ALDERLAKE_S)
[21:19:50] [PASSED] 0xA782 (ALDERLAKE_S)
[21:19:50] [PASSED] 0xA783 (ALDERLAKE_S)
[21:19:50] [PASSED] 0xA788 (ALDERLAKE_S)
[21:19:50] [PASSED] 0xA789 (ALDERLAKE_S)
[21:19:50] [PASSED] 0xA78A (ALDERLAKE_S)
[21:19:50] [PASSED] 0xA78B (ALDERLAKE_S)
[21:19:50] [PASSED] 0x4905 (DG1)
[21:19:50] [PASSED] 0x4906 (DG1)
[21:19:50] [PASSED] 0x4907 (DG1)
[21:19:50] [PASSED] 0x4908 (DG1)
[21:19:50] [PASSED] 0x4909 (DG1)
[21:19:50] [PASSED] 0x56C0 (DG2)
[21:19:50] [PASSED] 0x56C2 (DG2)
[21:19:50] [PASSED] 0x56C1 (DG2)
[21:19:50] [PASSED] 0x7D51 (METEORLAKE)
[21:19:50] [PASSED] 0x7DD1 (METEORLAKE)
[21:19:50] [PASSED] 0x7D41 (METEORLAKE)
[21:19:50] [PASSED] 0x7D67 (METEORLAKE)
[21:19:50] [PASSED] 0xB640 (METEORLAKE)
[21:19:50] [PASSED] 0x56A0 (DG2)
[21:19:50] [PASSED] 0x56A1 (DG2)
[21:19:50] [PASSED] 0x56A2 (DG2)
[21:19:50] [PASSED] 0x56BE (DG2)
[21:19:50] [PASSED] 0x56BF (DG2)
[21:19:50] [PASSED] 0x5690 (DG2)
[21:19:50] [PASSED] 0x5691 (DG2)
[21:19:50] [PASSED] 0x5692 (DG2)
[21:19:50] [PASSED] 0x56A5 (DG2)
[21:19:50] [PASSED] 0x56A6 (DG2)
[21:19:50] [PASSED] 0x56B0 (DG2)
[21:19:50] [PASSED] 0x56B1 (DG2)
[21:19:50] [PASSED] 0x56BA (DG2)
[21:19:50] [PASSED] 0x56BB (DG2)
[21:19:50] [PASSED] 0x56BC (DG2)
[21:19:50] [PASSED] 0x56BD (DG2)
[21:19:50] [PASSED] 0x5693 (DG2)
[21:19:50] [PASSED] 0x5694 (DG2)
[21:19:50] [PASSED] 0x5695 (DG2)
[21:19:50] [PASSED] 0x56A3 (DG2)
[21:19:50] [PASSED] 0x56A4 (DG2)
[21:19:50] [PASSED] 0x56B2 (DG2)
[21:19:50] [PASSED] 0x56B3 (DG2)
[21:19:50] [PASSED] 0x5696 (DG2)
[21:19:50] [PASSED] 0x5697 (DG2)
[21:19:50] [PASSED] 0xB69 (PVC)
[21:19:50] [PASSED] 0xB6E (PVC)
[21:19:50] [PASSED] 0xBD4 (PVC)
[21:19:50] [PASSED] 0xBD5 (PVC)
[21:19:50] [PASSED] 0xBD6 (PVC)
[21:19:50] [PASSED] 0xBD7 (PVC)
[21:19:50] [PASSED] 0xBD8 (PVC)
[21:19:50] [PASSED] 0xBD9 (PVC)
[21:19:50] [PASSED] 0xBDA (PVC)
[21:19:50] [PASSED] 0xBDB (PVC)
[21:19:50] [PASSED] 0xBE0 (PVC)
[21:19:50] [PASSED] 0xBE1 (PVC)
[21:19:50] [PASSED] 0xBE5 (PVC)
[21:19:50] [PASSED] 0x7D40 (METEORLAKE)
[21:19:50] [PASSED] 0x7D45 (METEORLAKE)
[21:19:50] [PASSED] 0x7D55 (METEORLAKE)
[21:19:50] [PASSED] 0x7D60 (METEORLAKE)
[21:19:50] [PASSED] 0x7DD5 (METEORLAKE)
[21:19:50] [PASSED] 0x6420 (LUNARLAKE)
[21:19:50] [PASSED] 0x64A0 (LUNARLAKE)
[21:19:50] [PASSED] 0x64B0 (LUNARLAKE)
[21:19:50] [PASSED] 0xE202 (BATTLEMAGE)
[21:19:50] [PASSED] 0xE209 (BATTLEMAGE)
[21:19:50] [PASSED] 0xE20B (BATTLEMAGE)
[21:19:50] [PASSED] 0xE20C (BATTLEMAGE)
[21:19:50] [PASSED] 0xE20D (BATTLEMAGE)
[21:19:50] [PASSED] 0xE210 (BATTLEMAGE)
[21:19:50] [PASSED] 0xE211 (BATTLEMAGE)
[21:19:50] [PASSED] 0xE212 (BATTLEMAGE)
[21:19:50] [PASSED] 0xE216 (BATTLEMAGE)
[21:19:50] [PASSED] 0xE220 (BATTLEMAGE)
[21:19:50] [PASSED] 0xE221 (BATTLEMAGE)
[21:19:50] [PASSED] 0xE222 (BATTLEMAGE)
[21:19:50] [PASSED] 0xE223 (BATTLEMAGE)
[21:19:50] [PASSED] 0xB080 (PANTHERLAKE)
[21:19:50] [PASSED] 0xB081 (PANTHERLAKE)
[21:19:50] [PASSED] 0xB082 (PANTHERLAKE)
[21:19:50] [PASSED] 0xB083 (PANTHERLAKE)
[21:19:50] [PASSED] 0xB084 (PANTHERLAKE)
[21:19:50] [PASSED] 0xB085 (PANTHERLAKE)
[21:19:50] [PASSED] 0xB086 (PANTHERLAKE)
[21:19:50] [PASSED] 0xB087 (PANTHERLAKE)
[21:19:50] [PASSED] 0xB08F (PANTHERLAKE)
[21:19:50] [PASSED] 0xB090 (PANTHERLAKE)
[21:19:50] [PASSED] 0xB0A0 (PANTHERLAKE)
[21:19:50] [PASSED] 0xB0B0 (PANTHERLAKE)
[21:19:50] [PASSED] 0xFD80 (PANTHERLAKE)
[21:19:50] [PASSED] 0xFD81 (PANTHERLAKE)
[21:19:50] [PASSED] 0xD740 (NOVALAKE_S)
[21:19:50] [PASSED] 0xD741 (NOVALAKE_S)
[21:19:50] [PASSED] 0xD742 (NOVALAKE_S)
[21:19:50] [PASSED] 0xD743 (NOVALAKE_S)
[21:19:50] [PASSED] 0xD745 (NOVALAKE_S)
[21:19:50] [PASSED] 0xD74A (NOVALAKE_S)
[21:19:50] [PASSED] 0xD74B (NOVALAKE_S)
[21:19:50] [PASSED] 0x674C (CRESCENTISLAND)
[21:19:50] [PASSED] 0x674D (CRESCENTISLAND)
[21:19:50] [PASSED] 0x674E (CRESCENTISLAND)
[21:19:50] [PASSED] 0x674F (CRESCENTISLAND)
[21:19:50] [PASSED] 0x6750 (CRESCENTISLAND)
[21:19:50] [PASSED] 0xD750 (NOVALAKE_P)
[21:19:50] [PASSED] 0xD751 (NOVALAKE_P)
[21:19:50] [PASSED] 0xD752 (NOVALAKE_P)
[21:19:50] [PASSED] 0xD753 (NOVALAKE_P)
[21:19:50] [PASSED] 0xD754 (NOVALAKE_P)
[21:19:50] [PASSED] 0xD755 (NOVALAKE_P)
[21:19:50] [PASSED] 0xD756 (NOVALAKE_P)
[21:19:50] [PASSED] 0xD757 (NOVALAKE_P)
[21:19:50] [PASSED] 0xD75F (NOVALAKE_P)
[21:19:50] =============== [PASSED] check_platform_desc ===============
[21:19:50] ===================== [PASSED] xe_pci ======================
[21:19:50] ============= xe_rtp_tables_test (5 subtests) ==============
[21:19:50] ================== xe_rtp_table_gt_test  ===================
[21:19:50] [PASSED] gt_was/14011060649
[21:19:50] [PASSED] gt_was/14011059788
[21:19:50] [PASSED] gt_was/14015795083
[21:19:50] [PASSED] gt_was/16021867713
[21:19:50] [PASSED] gt_was/14019449301
[21:19:50] [PASSED] gt_was/16028005424
[21:19:50] [PASSED] gt_was/14026578760
[21:19:50] [PASSED] gt_was/1409420604
[21:19:50] [PASSED] gt_was/1408615072
[21:19:50] [PASSED] gt_was/22010523718
[21:19:50] [PASSED] gt_was/14011006942
[21:19:50] [PASSED] gt_was/14014830051
[21:19:50] [PASSED] gt_was/18018781329
[21:19:50] [PASSED] gt_was/1509235366
[21:19:50] [PASSED] gt_was/18018781329
[21:19:50] [PASSED] gt_was/16016694945
[21:19:50] [PASSED] gt_was/14018575942
[21:19:50] [PASSED] gt_was/22016670082
[21:19:50] [PASSED] gt_was/22016670082
[21:19:50] [PASSED] gt_was/14017421178
[21:19:50] [PASSED] gt_was/16025250150
[21:19:50] [PASSED] gt_was/14021871409
[21:19:50] [PASSED] gt_was/16021865536
[21:19:50] [PASSED] gt_was/14021486841
[21:19:50] [PASSED] gt_was/14025160223
[21:19:50] [PASSED] gt_was/14026144927, 16029437861, 14026127056
[21:19:50] [PASSED] gt_was/14025635424
[21:19:50] [PASSED] gt_was/16028005424
[21:19:50] ============== [PASSED] xe_rtp_table_gt_test ===============
[21:19:50] ================== xe_rtp_table_gt_test  ===================
[21:19:50] [PASSED] gt_tunings/Tuning: Blend Fill Caching Optimization Disable
[21:19:50] [PASSED] gt_tunings/Tuning: 32B Access Enable
[21:19:50] [PASSED] gt_tunings/Tuning: L3 cache
[21:19:50] [PASSED] gt_tunings/Tuning: L3 cache - media
[21:19:50] [PASSED] gt_tunings/Tuning: Compression Overfetch
[21:19:50] [PASSED] gt_tunings/Tuning: Compression Overfetch - media
[21:19:50] [PASSED] gt_tunings/Tuning: Enable compressible partial write overfetch in L3
[21:19:50] [PASSED] gt_tunings/Tuning: Enable compressible partial write overfetch in L3 - media
[21:19:50] [PASSED] gt_tunings/Tuning: L2 Overfetch Compressible Only
[21:19:50] [PASSED] gt_tunings/Tuning: L2 Overfetch Compressible Only - media
[21:19:50] [PASSED] gt_tunings/Tuning: Stateless compression control
[21:19:50] [PASSED] gt_tunings/Tuning: Stateless compression control - media
[21:19:50] [PASSED] gt_tunings/Tuning: L3 RW flush all Cache
[21:19:50] [PASSED] gt_tunings/Tuning: L3 RW flush all cache - media
[21:19:50] [PASSED] gt_tunings/Tuning: Set STLB Bank Hash Mode to 4KB
[21:19:50] ============== [PASSED] xe_rtp_table_gt_test ===============
[21:19:50] ================== xe_rtp_table_oob_test  ==================
[21:19:50] [PASSED] oob_was/1607983814
[21:19:50] [PASSED] oob_was/16010904313
[21:19:50] [PASSED] oob_was/18022495364
[21:19:50] [PASSED] oob_was/22012773006
[21:19:50] [PASSED] oob_was/14014475959
[21:19:50] [PASSED] oob_was/22011391025
[21:19:50] [PASSED] oob_was/22012727170
[21:19:50] [PASSED] oob_was/22012727685
[21:19:50] [PASSED] oob_was/22016596838
[21:19:50] [PASSED] oob_was/18020744125
[21:19:50] [PASSED] oob_was/1409600907
[21:19:50] [PASSED] oob_was/22014953428
[21:19:50] [PASSED] oob_was/16017236439
[21:19:50] [PASSED] oob_was/14019821291
[21:19:50] [PASSED] oob_was/14015076503
[21:19:50] [PASSED] oob_was/14018913170
[21:19:50] [PASSED] oob_was/14018094691
[21:19:50] [PASSED] oob_was/18024947630
[21:19:50] [PASSED] oob_was/16022287689
[21:19:50] [PASSED] oob_was/13011645652
[21:19:50] [PASSED] oob_was/14022293748
[21:19:50] [PASSED] oob_was/22019794406
[21:19:50] [PASSED] oob_was/22019338487
[21:19:50] [PASSED] oob_was/16023588340
[21:19:50] [PASSED] oob_was/14019789679
[21:19:50] [PASSED] oob_was/14022866841
[21:19:50] [PASSED] oob_was/16021333562
[21:19:50] [PASSED] oob_was/14016712196
[21:19:50] [PASSED] oob_was/14015568240
[21:19:50] [PASSED] oob_was/18013179988
[21:19:50] [PASSED] oob_was/1508761755
[21:19:50] [PASSED] oob_was/16023105232
[21:19:50] [PASSED] oob_was/16026508708
[21:19:50] [PASSED] oob_was/14020001231
[21:19:50] [PASSED] oob_was/16023683509
[21:19:50] [PASSED] oob_was/14025515070
[21:19:50] [PASSED] oob_was/15015404425_disable
[21:19:50] [PASSED] oob_was/16026007364
[21:19:50] [PASSED] oob_was/14020316580
[21:19:50] [PASSED] oob_was/14025883347
[21:19:50] [PASSED] oob_was/16029380221
[21:19:50] [PASSED] oob_was/22022079272
[21:19:50] [PASSED] oob_was/16029897822
[21:19:50] [PASSED] oob_was/14027054324
[21:19:50] ============== [PASSED] xe_rtp_table_oob_test ==============
[21:19:50] ================ xe_rtp_table_dev_oob_test  ================
[21:19:50] [PASSED] device_oob_was/22010954014
[21:19:50] [PASSED] device_oob_was/15015404425
[21:19:50] [PASSED] device_oob_was/22019338487_display
[21:19:50] [PASSED] device_oob_was/14022085890
[21:19:50] [PASSED] device_oob_was/14026539277
[21:19:50] [PASSED] device_oob_was/14026633728
[21:19:50] [PASSED] device_oob_was/14026746987
[21:19:50] [PASSED] device_oob_was/14026779378
[21:19:50] ============ [PASSED] xe_rtp_table_dev_oob_test ============
[21:19:50] ========== xe_rtp_table_missing_upper_bound_test  ==========
[21:19:50] [PASSED] register_whitelist/WaAllowPMDepthAndInvocationCountAccessFromUMD, 1408556865
[21:19:50] [PASSED] register_whitelist/1508744258, 14012131227, 1808121037
[21:19:50] [PASSED] register_whitelist/1806527549
[21:19:50] [PASSED] register_whitelist/allow_read_ctx_timestamp
[21:19:50] [PASSED] register_whitelist/allow_read_queue_timestamp
[21:19:50] [PASSED] register_whitelist/16014440446
[21:19:50] [PASSED] register_whitelist/16017236439
[21:19:50] [PASSED] register_whitelist/16020183090
[21:19:50] [PASSED] register_whitelist/14024997852
[21:19:50] [PASSED] register_whitelist/14024997852
[21:19:50] ====== [PASSED] xe_rtp_table_missing_upper_bound_test ======
[21:19:50] =============== [PASSED] xe_rtp_tables_test ================
[21:19:50] =================== xe_rtp (3 subtests) ====================
[21:19:50] =================== xe_rtp_rules_tests  ====================
[21:19:50] [PASSED] no
[21:19:50] [PASSED] yes
[21:19:50] [PASSED] no-and-no
[21:19:50] [PASSED] no-and-yes
[21:19:50] [PASSED] yes-and-no
[21:19:50] [PASSED] yes-and-yes
[21:19:50] [PASSED] no-or-no
[21:19:50] [PASSED] no-or-yes
[21:19:50] [PASSED] yes-or-no
[21:19:50] [PASSED] yes-or-yes
[21:19:50] [PASSED] no-yes-or-yes-no
[21:19:50] [PASSED] no-yes-or-yes-yes
[21:19:50] [PASSED] yes-yes-or-no-yes
[21:19:50] [PASSED] yes-yes-or-yes-yes
[21:19:50] [PASSED] no-no-or-yes-or-no
[21:19:50] [PASSED] or
[21:19:50] [PASSED] or-yes
[21:19:50] [PASSED] or-no
[21:19:50] [PASSED] yes-or
[21:19:50] [PASSED] no-or
[21:19:50] [PASSED] no-or-or-yes
[21:19:50] [PASSED] yes-or-or-no
[21:19:50] [PASSED] no-or-or-no
[21:19:50] [PASSED] missing-context-engine-class
[21:19:50] [PASSED] missing-context-engine-class-or-yes
[21:19:50] [PASSED] missing-context-engine-class-or-or-yes
[21:19:50] =============== [PASSED] xe_rtp_rules_tests ================
[21:19:50] =============== xe_rtp_process_to_sr_tests  ================
[21:19:50] [PASSED] coalesce-same-reg
[21:19:50] [PASSED] coalesce-same-reg-literal-and-func
[21:19:50] [PASSED] no-match-no-add
[21:19:50] [PASSED] two-regs-two-entries
[21:19:50] [PASSED] clr-one-set-other
[21:19:50] [PASSED] set-field
[21:19:50] [PASSED] conflict-duplicate
[21:19:50] [PASSED] conflict-not-disjoint
[21:19:50] [PASSED] conflict-not-disjoint-literal-and-func
[21:19:50] [PASSED] conflict-reg-type
[21:19:50] [PASSED] bad-mcr-reg-forced-to-regular
[21:19:50] [PASSED] bad-regular-reg-forced-to-mcr
[21:19:50] =========== [PASSED] xe_rtp_process_to_sr_tests ============
[21:19:50] ================== xe_rtp_process_tests  ===================
[21:19:50] [PASSED] active1
[21:19:50] [PASSED] active2
[21:19:50] [PASSED] active-inactive
[21:19:50] [PASSED] inactive-active
[21:19:50] [PASSED] inactive-active-inactive
[21:19:50] [PASSED] inactive-inactive-inactive
[21:19:50] ============== [PASSED] xe_rtp_process_tests ===============
[21:19:50] ===================== [PASSED] xe_rtp ======================
[21:19:50] ==================== xe_wa (1 subtest) =====================
[21:19:50] ======================== xe_wa_gt  =========================
[21:19:50] [PASSED] TIGERLAKE B0
[21:19:50] [PASSED] DG1 A0
[21:19:50] [PASSED] DG1 B0
[21:19:50] [PASSED] ALDERLAKE_S A0
[21:19:50] [PASSED] ALDERLAKE_S B0
[21:19:50] [PASSED] ALDERLAKE_S C0
[21:19:50] [PASSED] ALDERLAKE_S D0
[21:19:50] [PASSED] ALDERLAKE_P A0
[21:19:50] [PASSED] ALDERLAKE_P B0
[21:19:50] [PASSED] ALDERLAKE_P C0
[21:19:50] [PASSED] ALDERLAKE_S RPLS D0
[21:19:50] [PASSED] ALDERLAKE_P RPLU E0
[21:19:50] [PASSED] DG2 G10 C0
[21:19:50] [PASSED] DG2 G11 B1
[21:19:50] [PASSED] DG2 G12 A1
[21:19:50] [PASSED] METEORLAKE 12.70(Xe_LPG) A0 13.00(Xe_LPM+) A0
[21:19:50] [PASSED] METEORLAKE 12.71(Xe_LPG) A0 13.00(Xe_LPM+) A0
[21:19:50] [PASSED] METEORLAKE 12.74(Xe_LPG+) A0 13.00(Xe_LPM+) A0
[21:19:50] [PASSED] LUNARLAKE 20.04(Xe2_LPG) A0 20.00(Xe2_LPM) A0
[21:19:50] [PASSED] LUNARLAKE 20.04(Xe2_LPG) B0 20.00(Xe2_LPM) A0
[21:19:50] [PASSED] BATTLEMAGE 20.01(Xe2_HPG) A0 13.01(Xe2_HPM) A1
[21:19:50] [PASSED] PANTHERLAKE 30.00(Xe3_LPG) A0 30.00(Xe3_LPM) A0
[21:19:50] ==================== [PASSED] xe_wa_gt =====================
[21:19:50] ====================== [PASSED] xe_wa ======================
[21:19:50] ============================================================
[21:19:50] Testing complete. Ran 793 tests: passed: 765, skipped: 28
[21:19:50] Elapsed time: 36.270s total, 1.851s configuring, 33.703s building, 0.688s running

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

+ for kcfg in "${kunitconfigs[@]}"
+ [[ ! -f /kernel/drivers/gpu/drm/ttm/tests/.kunitconfig ]]
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/ttm/tests/.kunitconfig
[21:20:17] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[21:20:19] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48
[21:20:29] Starting KUnit Kernel (1/1)...
[21:20:29] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[21:20:29] ============= refcount_interrupt (4 subtests) ==============
[21:20:29] [PASSED] test_single_irq_change
[21:20:29] [PASSED] test_nested_irq_change
[21:20:29] [PASSED] test_multiple_irq_change
[21:20:29] [PASSED] test_irq_save
[21:20:29] =============== [PASSED] refcount_interrupt ================
[21:20:29] ================= ttm_device (5 subtests) ==================
[21:20:29] [PASSED] ttm_device_init_basic
[21:20:29] [PASSED] ttm_device_init_multiple
[21:20:29] [PASSED] ttm_device_fini_basic
[21:20:29] [PASSED] ttm_device_init_no_vma_man
[21:20:29] ================== ttm_device_init_pools  ==================
[21:20:29] [PASSED] No DMA allocations, no DMA32 required
[21:20:29] [PASSED] DMA allocations, DMA32 required
[21:20:29] [PASSED] No DMA allocations, DMA32 required
[21:20:29] [PASSED] DMA allocations, no DMA32 required
[21:20:29] ============== [PASSED] ttm_device_init_pools ==============
[21:20:29] =================== [PASSED] ttm_device ====================
[21:20:29] ================== ttm_pool (8 subtests) ===================
[21:20:29] ================== ttm_pool_alloc_basic  ===================
[21:20:29] [PASSED] One page
[21:20:29] [PASSED] More than one page
[21:20:29] [PASSED] Above the allocation limit
[21:20:29] [PASSED] One page, with coherent DMA mappings enabled
[21:20:29] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[21:20:29] ============== [PASSED] ttm_pool_alloc_basic ===============
[21:20:29] ============== ttm_pool_alloc_basic_dma_addr  ==============
[21:20:29] [PASSED] One page
[21:20:29] [PASSED] More than one page
[21:20:29] [PASSED] Above the allocation limit
[21:20:29] [PASSED] One page, with coherent DMA mappings enabled
[21:20:29] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[21:20:29] ========== [PASSED] ttm_pool_alloc_basic_dma_addr ==========
[21:20:29] [PASSED] ttm_pool_alloc_order_caching_match
[21:20:29] [PASSED] ttm_pool_alloc_caching_mismatch
[21:20:29] [PASSED] ttm_pool_alloc_order_mismatch
[21:20:29] [PASSED] ttm_pool_free_dma_alloc
[21:20:29] [PASSED] ttm_pool_free_no_dma_alloc
[21:20:29] [PASSED] ttm_pool_fini_basic
[21:20:29] ==================== [PASSED] ttm_pool =====================
[21:20:29] ================ ttm_resource (8 subtests) =================
[21:20:29] ================= ttm_resource_init_basic  =================
[21:20:29] [PASSED] Init resource in TTM_PL_SYSTEM
[21:20:29] [PASSED] Init resource in TTM_PL_VRAM
[21:20:29] [PASSED] Init resource in a private placement
[21:20:29] [PASSED] Init resource in TTM_PL_SYSTEM, set placement flags
[21:20:29] ============= [PASSED] ttm_resource_init_basic =============
[21:20:29] [PASSED] ttm_resource_init_pinned
[21:20:29] [PASSED] ttm_resource_fini_basic
[21:20:29] [PASSED] ttm_resource_manager_init_basic
[21:20:29] [PASSED] ttm_resource_manager_usage_basic
[21:20:29] [PASSED] ttm_resource_manager_set_used_basic
[21:20:29] [PASSED] ttm_sys_man_alloc_basic
[21:20:29] [PASSED] ttm_sys_man_free_basic
[21:20:29] ================== [PASSED] ttm_resource ===================
[21:20:29] =================== ttm_tt (15 subtests) ===================
[21:20:29] ==================== ttm_tt_init_basic  ====================
[21:20:29] [PASSED] Page-aligned size
[21:20:29] [PASSED] Extra pages requested
[21:20:29] ================ [PASSED] ttm_tt_init_basic ================
[21:20:29] [PASSED] ttm_tt_init_misaligned
[21:20:29] [PASSED] ttm_tt_fini_basic
[21:20:29] [PASSED] ttm_tt_fini_sg
[21:20:29] [PASSED] ttm_tt_fini_shmem
[21:20:29] [PASSED] ttm_tt_create_basic
[21:20:29] [PASSED] ttm_tt_create_invalid_bo_type
[21:20:29] [PASSED] ttm_tt_create_ttm_exists
[21:20:29] [PASSED] ttm_tt_create_failed
[21:20:29] [PASSED] ttm_tt_destroy_basic
[21:20:29] [PASSED] ttm_tt_populate_null_ttm
[21:20:29] [PASSED] ttm_tt_populate_populated_ttm
[21:20:29] [PASSED] ttm_tt_unpopulate_basic
[21:20:29] [PASSED] ttm_tt_unpopulate_empty_ttm
[21:20:29] [PASSED] ttm_tt_swapin_basic
[21:20:29] ===================== [PASSED] ttm_tt ======================
[21:20:29] =================== ttm_bo (14 subtests) ===================
[21:20:29] =========== ttm_bo_reserve_optimistic_no_ticket  ===========
[21:20:29] [PASSED] Cannot be interrupted and sleeps
[21:20:29] [PASSED] Cannot be interrupted, locks straight away
[21:20:29] [PASSED] Can be interrupted, sleeps
[21:20:29] ======= [PASSED] ttm_bo_reserve_optimistic_no_ticket =======
[21:20:29] [PASSED] ttm_bo_reserve_locked_no_sleep
[21:20:29] [PASSED] ttm_bo_reserve_no_wait_ticket
[21:20:29] [PASSED] ttm_bo_reserve_double_resv
[21:20:29] [PASSED] ttm_bo_reserve_interrupted
[21:20:29] [PASSED] ttm_bo_reserve_deadlock
[21:20:29] [PASSED] ttm_bo_unreserve_basic
[21:20:29] [PASSED] ttm_bo_unreserve_pinned
[21:20:29] [PASSED] ttm_bo_unreserve_bulk
[21:20:29] [PASSED] ttm_bo_fini_basic
[21:20:29] [PASSED] ttm_bo_fini_shared_resv
[21:20:29] [PASSED] ttm_bo_pin_basic
[21:20:29] [PASSED] ttm_bo_pin_unpin_resource
[21:20:29] [PASSED] ttm_bo_multiple_pin_one_unpin
[21:20:29] ===================== [PASSED] ttm_bo ======================
[21:20:29] ============== ttm_bo_validate (22 subtests) ===============
[21:20:29] ============== ttm_bo_init_reserved_sys_man  ===============
[21:20:29] [PASSED] Buffer object for userspace
[21:20:29] [PASSED] Kernel buffer object
[21:20:29] [PASSED] Shared buffer object
[21:20:29] ========== [PASSED] ttm_bo_init_reserved_sys_man ===========
[21:20:29] ============== ttm_bo_init_reserved_mock_man  ==============
[21:20:29] [PASSED] Buffer object for userspace
[21:20:29] [PASSED] Kernel buffer object
[21:20:29] [PASSED] Shared buffer object
[21:20:29] ========== [PASSED] ttm_bo_init_reserved_mock_man ==========
[21:20:29] [PASSED] ttm_bo_init_reserved_resv
[21:20:29] ================== ttm_bo_validate_basic  ==================
[21:20:29] [PASSED] Buffer object for userspace
[21:20:29] [PASSED] Kernel buffer object
[21:20:29] [PASSED] Shared buffer object
[21:20:29] ============== [PASSED] ttm_bo_validate_basic ==============
[21:20:29] [PASSED] ttm_bo_validate_invalid_placement
[21:20:29] ============= ttm_bo_validate_same_placement  ==============
[21:20:29] [PASSED] System manager
[21:20:29] [PASSED] VRAM manager
[21:20:29] ========= [PASSED] ttm_bo_validate_same_placement ==========
[21:20:29] [PASSED] ttm_bo_validate_failed_alloc
[21:20:29] [PASSED] ttm_bo_validate_pinned
[21:20:29] [PASSED] ttm_bo_validate_busy_placement
[21:20:29] ================ ttm_bo_validate_multihop  =================
[21:20:29] [PASSED] Buffer object for userspace
[21:20:29] [PASSED] Kernel buffer object
[21:20:29] [PASSED] Shared buffer object
[21:20:29] ============ [PASSED] ttm_bo_validate_multihop =============
[21:20:29] ========== ttm_bo_validate_no_placement_signaled  ==========
[21:20:29] [PASSED] Buffer object in system domain, no page vector
[21:20:29] [PASSED] Buffer object in system domain with an existing page vector
[21:20:29] ====== [PASSED] ttm_bo_validate_no_placement_signaled ======
[21:20:29] ======== ttm_bo_validate_no_placement_not_signaled  ========
[21:20:29] [PASSED] Buffer object for userspace
[21:20:29] [PASSED] Kernel buffer object
[21:20:29] [PASSED] Shared buffer object
[21:20:29] ==== [PASSED] ttm_bo_validate_no_placement_not_signaled ====
[21:20:29] [PASSED] ttm_bo_validate_move_fence_signaled
[21:20:29] ========= ttm_bo_validate_move_fence_not_signaled  =========
[21:20:29] [PASSED] Waits for GPU
[21:20:29] [PASSED] Tries to lock straight away
[21:20:29] ===== [PASSED] ttm_bo_validate_move_fence_not_signaled =====
[21:20:29] [PASSED] ttm_bo_validate_swapout
[21:20:29] [PASSED] ttm_bo_validate_happy_evict
[21:20:29] [PASSED] ttm_bo_validate_all_pinned_evict
[21:20:29] [PASSED] ttm_bo_validate_allowed_only_evict
[21:20:29] [PASSED] ttm_bo_validate_deleted_evict
[21:20:29] [PASSED] ttm_bo_validate_busy_domain_evict
[21:20:29] [PASSED] ttm_bo_validate_evict_gutting
[21:20:29] [PASSED] ttm_bo_validate_recrusive_evict
[21:20:29] ================= [PASSED] ttm_bo_validate =================
[21:20:29] ============================================================
[21:20:29] Testing complete. Ran 106 tests: passed: 106
[21:20:29] Elapsed time: 11.960s total, 1.784s configuring, 9.961s building, 0.174s running

+ for kcfg in "${kunitconfigs[@]}"
+ [[ ! -f /kernel/drivers/dma-buf/.kunitconfig ]]
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/dma-buf/.kunitconfig
[21:20:29] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[21:20:31] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48
[21:20:40] Starting KUnit Kernel (1/1)...
[21:20:40] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[21:20:40] ============= refcount_interrupt (4 subtests) ==============
[21:20:40] [PASSED] test_single_irq_change
[21:20:40] [PASSED] test_nested_irq_change
[21:20:40] [PASSED] test_multiple_irq_change
[21:20:40] [PASSED] test_irq_save
[21:20:40] =============== [PASSED] refcount_interrupt ================
[21:20:40] =============== dma-buf-fence (12 subtests) ================
[21:20:40] [PASSED] test_sanitycheck
[21:20:40] [PASSED] test_signaling
[21:20:40] [PASSED] test_add_callback
[21:20:40] [PASSED] test_late_add_callback
[21:20:40] [PASSED] test_rm_callback
[21:20:40] [PASSED] test_late_rm_callback
[21:20:40] [PASSED] test_status
[21:20:40] [PASSED] test_error
[21:20:40] [PASSED] test_wait
[21:20:40] [PASSED] test_wait_timeout
[21:20:40] [PASSED] test_stub
[21:20:40] [SKIPPED] test_race_signal_callback (requires at least 2 CPUs)
[21:20:40] ================== [PASSED] dma-buf-fence ==================
[21:20:40] ============ dma-buf-fence-chain (11 subtests) =============
[21:20:40] [PASSED] test_sanitycheck
[21:20:40] [PASSED] test_find_seqno
[21:20:40] [PASSED] test_find_signaled
[21:20:40] [PASSED] test_find_out_of_order
[21:20:45] [PASSED] test_find_gap
[21:20:45] [PASSED] test_find_race
[21:20:45] [PASSED] test_signal_forward
[21:20:45] [PASSED] test_signal_backward
[21:20:45] [PASSED] test_wait_forward
[21:20:45] [PASSED] test_wait_backward
[21:20:45] [PASSED] test_wait_random
[21:20:45] =============== [PASSED] dma-buf-fence-chain ===============
[21:20:45] ============ dma-buf-fence-unwrap (10 subtests) ============
[21:20:45] [PASSED] test_sanitycheck
[21:20:45] [PASSED] test_unwrap_array
[21:20:45] [PASSED] test_unwrap_chain
[21:20:45] [PASSED] test_unwrap_chain_array
[21:20:45] [PASSED] test_unwrap_merge
[21:20:45] [PASSED] test_unwrap_merge_duplicate
[21:20:45] [PASSED] test_unwrap_merge_seqno
[21:20:45] [PASSED] test_unwrap_merge_order
[21:20:45] [PASSED] test_unwrap_merge_complex
[21:20:45] [PASSED] test_unwrap_merge_complex_seqno
[21:20:45] ============== [PASSED] dma-buf-fence-unwrap ===============
[21:20:45] ================ dma-buf-resv (5 subtests) =================
[21:20:45] [PASSED] test_sanitycheck
[21:20:45] ===================== test_signaling  ======================
[21:20:45] [PASSED] kernel
[21:20:45] [PASSED] write
[21:20:45] [PASSED] read
[21:20:45] [PASSED] bookkeep
[21:20:45] ================= [PASSED] test_signaling ==================
[21:20:45] ====================== test_for_each  ======================
[21:20:45] [PASSED] kernel
[21:20:45] [PASSED] write
[21:20:45] [PASSED] read
[21:20:45] [PASSED] bookkeep
[21:20:45] ================== [PASSED] test_for_each ==================
[21:20:45] ================= test_for_each_unlocked  ==================
[21:20:45] [PASSED] kernel
[21:20:45] [PASSED] write
[21:20:45] [PASSED] read
[21:20:45] [PASSED] bookkeep
[21:20:45] ============= [PASSED] test_for_each_unlocked ==============
[21:20:45] ===================== test_get_fences  =====================
[21:20:45] [PASSED] kernel
[21:20:45] [PASSED] write
[21:20:45] [PASSED] read
[21:20:45] [PASSED] bookkeep
[21:20:45] ================= [PASSED] test_get_fences =================
[21:20:45] ================== [PASSED] dma-buf-resv ===================
[21:20:45] ============================================================
[21:20:45] Testing complete. Ran 54 tests: passed: 53, skipped: 1
[21:20:45] Elapsed time: 15.793s total, 1.794s configuring, 8.627s building, 5.346s running

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



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

* ✓ Xe.CI.BAT: success for Use SIG_ID logs for GuC component
  2026-09-01 21:12 [PATCH v2 0/5] Use SIG_ID logs for GuC component Umesh Nerlige Ramappa
                   ` (6 preceding siblings ...)
  2026-09-01 21:20 ` ✓ CI.KUnit: success " Patchwork
@ 2026-09-02  6:57 ` Patchwork
  2026-09-02 12:05 ` ✓ Xe.CI.FULL: " Patchwork
  8 siblings, 0 replies; 17+ messages in thread
From: Patchwork @ 2026-09-02  6:57 UTC (permalink / raw)
  To: Umesh Nerlige Ramappa; +Cc: intel-xe

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

== Series Details ==

Series: Use SIG_ID logs for GuC component
URL   : https://patchwork.freedesktop.org/series/173177/
State : success

== Summary ==

CI Bug Log - changes from xe-5671-c53467440a5196138d2d6610e269a43b6b47bf6b_BAT -> xe-pw-173177v1_BAT
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  

Participating hosts (10 -> 7)
------------------------------

  Additional (1): bat-nvls-1 
  Missing    (4): bat-lnl-2 bat-wcl-2 bat-ptl-1 bat-bmg-3 

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

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

### IGT changes ###

#### Issues hit ####

  * igt@kms_addfb_basic@addfb25-y-tiled-small-legacy:
    - bat-nvls-1:         NOTRUN -> [SKIP][1] ([Intel XE#8757])
   [1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173177v1/bat-nvls-1/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html

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

  * igt@xe_evict@evict-beng-small-multi-vm:
    - bat-nvls-1:         NOTRUN -> [SKIP][3] ([Intel XE#8777]) +9 other tests skip
   [3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173177v1/bat-nvls-1/igt@xe_evict@evict-beng-small-multi-vm.html

  * igt@xe_evict_ccs@evict-overcommit-parallel-nofree-samefd:
    - bat-nvls-1:         NOTRUN -> [SKIP][4] ([Intel XE#8744]) +1 other test skip
   [4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173177v1/bat-nvls-1/igt@xe_evict_ccs@evict-overcommit-parallel-nofree-samefd.html

  * igt@xe_exec_balancer@twice-virtual-userptr-invalidate:
    - bat-nvls-1:         NOTRUN -> [SKIP][5] ([Intel XE#8741]) +17 other tests skip
   [5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173177v1/bat-nvls-1/igt@xe_exec_balancer@twice-virtual-userptr-invalidate.html

  * igt@xe_exec_multi_queue@priority:
    - bat-nvls-1:         NOTRUN -> [SKIP][6] ([Intel XE#8377]) +13 other tests skip
   [6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173177v1/bat-nvls-1/igt@xe_exec_multi_queue@priority.html

  * igt@xe_huc_copy@huc_copy:
    - bat-nvls-1:         NOTRUN -> [SKIP][7] ([Intel XE#8746])
   [7]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173177v1/bat-nvls-1/igt@xe_huc_copy@huc_copy.html

  * igt@xe_live_ktest@xe_bo:
    - bat-nvls-1:         NOTRUN -> [SKIP][8] ([Intel XE#8792])
   [8]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173177v1/bat-nvls-1/igt@xe_live_ktest@xe_bo.html

  * igt@xe_live_ktest@xe_bo@xe_bo_evict_kunit:
    - bat-nvls-1:         NOTRUN -> [SKIP][9] ([Intel XE#8791] / [Intel XE#8792])
   [9]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173177v1/bat-nvls-1/igt@xe_live_ktest@xe_bo@xe_bo_evict_kunit.html

  * igt@xe_live_ktest@xe_migrate@xe_validate_ccs_kunit:
    - bat-nvls-1:         NOTRUN -> [SKIP][10] ([Intel XE#8791])
   [10]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173177v1/bat-nvls-1/igt@xe_live_ktest@xe_migrate@xe_validate_ccs_kunit.html

  * igt@xe_mmap@vram:
    - bat-nvls-1:         NOTRUN -> [SKIP][11] ([Intel XE#8747])
   [11]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173177v1/bat-nvls-1/igt@xe_mmap@vram.html

  * igt@xe_pat@pat-index-xehpc:
    - bat-nvls-1:         NOTRUN -> [SKIP][12] ([Intel XE#8748])
   [12]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173177v1/bat-nvls-1/igt@xe_pat@pat-index-xehpc.html

  * igt@xe_pat@pat-index-xelp:
    - bat-nvls-1:         NOTRUN -> [SKIP][13] ([Intel XE#8743])
   [13]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173177v1/bat-nvls-1/igt@xe_pat@pat-index-xelp.html

  * igt@xe_pat@pat-index-xelpg:
    - bat-nvls-1:         NOTRUN -> [SKIP][14] ([Intel XE#8745])
   [14]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173177v1/bat-nvls-1/igt@xe_pat@pat-index-xelpg.html

  
  [Intel XE#8377]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8377
  [Intel XE#8741]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8741
  [Intel XE#8743]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8743
  [Intel XE#8744]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8744
  [Intel XE#8745]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8745
  [Intel XE#8746]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8746
  [Intel XE#8747]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8747
  [Intel XE#8748]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8748
  [Intel XE#8757]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8757
  [Intel XE#8759]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8759
  [Intel XE#8777]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8777
  [Intel XE#8791]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8791
  [Intel XE#8792]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8792


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

  * Linux: xe-5671-c53467440a5196138d2d6610e269a43b6b47bf6b -> xe-pw-173177v1

  IGT_9079: 9079
  xe-5671-c53467440a5196138d2d6610e269a43b6b47bf6b: c53467440a5196138d2d6610e269a43b6b47bf6b
  xe-pw-173177v1: 173177v1

== Logs ==

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

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

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

* ✓ Xe.CI.FULL: success for Use SIG_ID logs for GuC component
  2026-09-01 21:12 [PATCH v2 0/5] Use SIG_ID logs for GuC component Umesh Nerlige Ramappa
                   ` (7 preceding siblings ...)
  2026-09-02  6:57 ` ✓ Xe.CI.BAT: " Patchwork
@ 2026-09-02 12:05 ` Patchwork
  8 siblings, 0 replies; 17+ messages in thread
From: Patchwork @ 2026-09-02 12:05 UTC (permalink / raw)
  To: Umesh Nerlige Ramappa; +Cc: intel-xe

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

== Series Details ==

Series: Use SIG_ID logs for GuC component
URL   : https://patchwork.freedesktop.org/series/173177/
State : success

== Summary ==

CI Bug Log - changes from xe-5671-c53467440a5196138d2d6610e269a43b6b47bf6b_FULL -> xe-pw-173177v1_FULL
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  

Participating hosts (2 -> 2)
------------------------------

  No changes in participating hosts

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

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

### IGT changes ###

#### Issues hit ####

  * igt@kms_big_fb@x-tiled-8bpp-rotate-0:
    - shard-lnl:          [PASS][1] -> [ABORT][2] ([Intel XE#4760])
   [1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5671-c53467440a5196138d2d6610e269a43b6b47bf6b/shard-lnl-3/igt@kms_big_fb@x-tiled-8bpp-rotate-0.html
   [2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173177v1/shard-lnl-5/igt@kms_big_fb@x-tiled-8bpp-rotate-0.html

  * igt@kms_big_fb@y-tiled-8bpp-rotate-0:
    - shard-bmg:          NOTRUN -> [SKIP][3] ([Intel XE#1124])
   [3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173177v1/shard-bmg-4/igt@kms_big_fb@y-tiled-8bpp-rotate-0.html

  * igt@kms_ccs@crc-primary-suspend-yf-tiled-ccs:
    - shard-bmg:          NOTRUN -> [SKIP][4] ([Intel XE#3432])
   [4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173177v1/shard-bmg-8/igt@kms_ccs@crc-primary-suspend-yf-tiled-ccs.html

  * igt@kms_chamelium_frames@hdmi-crc-nonplanar-formats:
    - shard-bmg:          NOTRUN -> [SKIP][5] ([Intel XE#2252])
   [5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173177v1/shard-bmg-4/igt@kms_chamelium_frames@hdmi-crc-nonplanar-formats.html

  * igt@kms_content_protection@lic-type-0-hdcp14@pipe-a-dp-2:
    - shard-bmg:          NOTRUN -> [FAIL][6] ([Intel XE#1178] / [Intel XE#3304] / [Intel XE#7374]) +2 other tests fail
   [6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173177v1/shard-bmg-5/igt@kms_content_protection@lic-type-0-hdcp14@pipe-a-dp-2.html

  * igt@kms_dirtyfb@drrs-dirtyfb-ioctl:
    - shard-bmg:          NOTRUN -> [SKIP][7] ([Intel XE#1508])
   [7]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173177v1/shard-bmg-4/igt@kms_dirtyfb@drrs-dirtyfb-ioctl.html

  * igt@kms_fbcon_fbt@fbc:
    - shard-bmg:          NOTRUN -> [SKIP][8] ([Intel XE#4156] / [Intel XE#7425])
   [8]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173177v1/shard-bmg-4/igt@kms_fbcon_fbt@fbc.html

  * igt@kms_flip@flip-vs-expired-vblank@c-edp1:
    - shard-lnl:          [PASS][9] -> [FAIL][10] ([Intel XE#301] / [Intel XE#3149]) +2 other tests fail
   [9]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5671-c53467440a5196138d2d6610e269a43b6b47bf6b/shard-lnl-4/igt@kms_flip@flip-vs-expired-vblank@c-edp1.html
   [10]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173177v1/shard-lnl-8/igt@kms_flip@flip-vs-expired-vblank@c-edp1.html

  * igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-upscaling:
    - shard-bmg:          NOTRUN -> [SKIP][11] ([Intel XE#7178] / [Intel XE#7351])
   [11]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173177v1/shard-bmg-4/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-upscaling.html

  * igt@kms_frontbuffer_tracking@drrshdr-argb161616f-draw-render:
    - shard-bmg:          NOTRUN -> [SKIP][12] ([Intel XE#7061])
   [12]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173177v1/shard-bmg-4/igt@kms_frontbuffer_tracking@drrshdr-argb161616f-draw-render.html

  * igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-draw-blt:
    - shard-bmg:          NOTRUN -> [SKIP][13] ([Intel XE#4141])
   [13]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173177v1/shard-bmg-4/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@fbcdrrs-1p-pri-indfb-multidraw:
    - shard-bmg:          NOTRUN -> [SKIP][14] ([Intel XE#2311]) +8 other tests skip
   [14]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173177v1/shard-bmg-4/igt@kms_frontbuffer_tracking@fbcdrrs-1p-pri-indfb-multidraw.html

  * igt@kms_frontbuffer_tracking@plane-fbc-rte:
    - shard-bmg:          NOTRUN -> [SKIP][15] ([Intel XE#2350] / [Intel XE#7503])
   [15]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173177v1/shard-bmg-1/igt@kms_frontbuffer_tracking@plane-fbc-rte.html

  * igt@kms_frontbuffer_tracking@psrhdr-2p-primscrn-spr-indfb-move:
    - shard-bmg:          NOTRUN -> [SKIP][16] ([Intel XE#2313]) +10 other tests skip
   [16]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173177v1/shard-bmg-8/igt@kms_frontbuffer_tracking@psrhdr-2p-primscrn-spr-indfb-move.html

  * igt@kms_pm_dc@dc3co-framedrop-check@pr-xrgb8888:
    - shard-bmg:          NOTRUN -> [SKIP][17] ([Intel XE#8395] / [Intel XE#8396])
   [17]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173177v1/shard-bmg-5/igt@kms_pm_dc@dc3co-framedrop-check@pr-xrgb8888.html

  * igt@kms_pm_dc@dc3co-framedrop-check@psr2-xrgb8888:
    - shard-bmg:          NOTRUN -> [SKIP][18] ([Intel XE#8396]) +1 other test skip
   [18]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173177v1/shard-bmg-5/igt@kms_pm_dc@dc3co-framedrop-check@psr2-xrgb8888.html

  * igt@kms_psr2_sf@fbc-pr-overlay-primary-update-sf-dmg-area:
    - shard-bmg:          NOTRUN -> [SKIP][19] ([Intel XE#1489]) +2 other tests skip
   [19]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173177v1/shard-bmg-4/igt@kms_psr2_sf@fbc-pr-overlay-primary-update-sf-dmg-area.html

  * igt@kms_psr@fbc-pr-sprite-plane-onoff:
    - shard-bmg:          NOTRUN -> [SKIP][20] ([Intel XE#2234] / [Intel XE#2850]) +2 other tests skip
   [20]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173177v1/shard-bmg-3/igt@kms_psr@fbc-pr-sprite-plane-onoff.html

  * igt@kms_rotation_crc@primary-rotation-270:
    - shard-bmg:          NOTRUN -> [SKIP][21] ([Intel XE#3904] / [Intel XE#7342])
   [21]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173177v1/shard-bmg-8/igt@kms_rotation_crc@primary-rotation-270.html

  * igt@kms_tiled_display@basic-test-pattern:
    - shard-bmg:          NOTRUN -> [FAIL][22] ([Intel XE#1729] / [Intel XE#7424])
   [22]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173177v1/shard-bmg-4/igt@kms_tiled_display@basic-test-pattern.html

  * igt@sriov_basic@enable-vfs-bind-unbind-each-numvfs-all:
    - shard-bmg:          [PASS][23] -> [FAIL][24] ([Intel XE#7992])
   [23]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5671-c53467440a5196138d2d6610e269a43b6b47bf6b/shard-bmg-1/igt@sriov_basic@enable-vfs-bind-unbind-each-numvfs-all.html
   [24]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173177v1/shard-bmg-7/igt@sriov_basic@enable-vfs-bind-unbind-each-numvfs-all.html

  * igt@xe_exec_fault_mode@many-multi-queue-userptr-rebind-imm:
    - shard-bmg:          NOTRUN -> [SKIP][25] ([Intel XE#8374]) +1 other test skip
   [25]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173177v1/shard-bmg-4/igt@xe_exec_fault_mode@many-multi-queue-userptr-rebind-imm.html

  * igt@xe_exec_multi_queue@many-queues-close-fd-smem:
    - shard-bmg:          NOTRUN -> [SKIP][26] ([Intel XE#8364]) +3 other tests skip
   [26]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173177v1/shard-bmg-4/igt@xe_exec_multi_queue@many-queues-close-fd-smem.html

  * igt@xe_exec_threads@threads-multi-queue-mixed-shared-vm-userptr-invalidate:
    - shard-bmg:          NOTRUN -> [SKIP][27] ([Intel XE#8378]) +1 other test skip
   [27]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173177v1/shard-bmg-4/igt@xe_exec_threads@threads-multi-queue-mixed-shared-vm-userptr-invalidate.html

  * igt@xe_fault_injection@inject-fault-probe-function-guc_wait_ucode:
    - shard-bmg:          [PASS][28] -> [ABORT][29] ([Intel XE#8007])
   [28]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5671-c53467440a5196138d2d6610e269a43b6b47bf6b/shard-bmg-6/igt@xe_fault_injection@inject-fault-probe-function-guc_wait_ucode.html
   [29]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173177v1/shard-bmg-9/igt@xe_fault_injection@inject-fault-probe-function-guc_wait_ucode.html

  * igt@xe_multigpu_svm@mgpu-migration-prefetch:
    - shard-bmg:          NOTRUN -> [SKIP][30] ([Intel XE#6964])
   [30]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173177v1/shard-bmg-4/igt@xe_multigpu_svm@mgpu-migration-prefetch.html

  * igt@xe_page_reclaim@prl-max-entries:
    - shard-bmg:          NOTRUN -> [SKIP][31] ([Intel XE#7793]) +1 other test skip
   [31]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173177v1/shard-bmg-3/igt@xe_page_reclaim@prl-max-entries.html

  * igt@xe_prefetch_fault@prefetch-fault-svm:
    - shard-bmg:          NOTRUN -> [SKIP][32] ([Intel XE#7599])
   [32]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173177v1/shard-bmg-1/igt@xe_prefetch_fault@prefetch-fault-svm.html

  * igt@xe_query@multigpu-query-uc-fw-version-guc:
    - shard-bmg:          NOTRUN -> [SKIP][33] ([Intel XE#944])
   [33]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173177v1/shard-bmg-8/igt@xe_query@multigpu-query-uc-fw-version-guc.html

  
#### Possible fixes ####

  * igt@core_hotunplug@hotunbind-rebind-with-load:
    - shard-bmg:          [SKIP][34] ([Intel XE#8749]) -> [PASS][35]
   [34]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5671-c53467440a5196138d2d6610e269a43b6b47bf6b/shard-bmg-5/igt@core_hotunplug@hotunbind-rebind-with-load.html
   [35]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173177v1/shard-bmg-5/igt@core_hotunplug@hotunbind-rebind-with-load.html

  * igt@kms_atomic_transition@plane-all-transition:
    - shard-bmg:          [DMESG-FAIL][36] -> [PASS][37]
   [36]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5671-c53467440a5196138d2d6610e269a43b6b47bf6b/shard-bmg-5/igt@kms_atomic_transition@plane-all-transition.html
   [37]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173177v1/shard-bmg-5/igt@kms_atomic_transition@plane-all-transition.html

  * igt@kms_atomic_transition@plane-all-transition@pipe-b-hdmi-a-3:
    - shard-bmg:          [DMESG-FAIL][38] ([Intel XE#7774]) -> [PASS][39]
   [38]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5671-c53467440a5196138d2d6610e269a43b6b47bf6b/shard-bmg-5/igt@kms_atomic_transition@plane-all-transition@pipe-b-hdmi-a-3.html
   [39]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173177v1/shard-bmg-5/igt@kms_atomic_transition@plane-all-transition@pipe-b-hdmi-a-3.html

  * igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs:
    - shard-bmg:          [INCOMPLETE][40] ([Intel XE#7084] / [Intel XE#8150]) -> [PASS][41] +1 other test pass
   [40]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5671-c53467440a5196138d2d6610e269a43b6b47bf6b/shard-bmg-4/igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs.html
   [41]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173177v1/shard-bmg-4/igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs.html

  * igt@kms_cursor_legacy@flip-vs-cursor-atomic:
    - shard-bmg:          [FAIL][42] ([Intel XE#7809]) -> [PASS][43]
   [42]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5671-c53467440a5196138d2d6610e269a43b6b47bf6b/shard-bmg-2/igt@kms_cursor_legacy@flip-vs-cursor-atomic.html
   [43]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173177v1/shard-bmg-9/igt@kms_cursor_legacy@flip-vs-cursor-atomic.html

  * igt@kms_flip@2x-plain-flip-ts-check@ac-dp2-hdmi-a3:
    - shard-bmg:          [FAIL][44] ([Intel XE#6266]) -> [PASS][45] +1 other test pass
   [44]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5671-c53467440a5196138d2d6610e269a43b6b47bf6b/shard-bmg-10/igt@kms_flip@2x-plain-flip-ts-check@ac-dp2-hdmi-a3.html
   [45]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173177v1/shard-bmg-6/igt@kms_flip@2x-plain-flip-ts-check@ac-dp2-hdmi-a3.html

  * igt@kms_pm_rpm@modeset-non-lpsp:
    - shard-bmg:          [SKIP][46] ([Intel XE#8710]) -> [PASS][47]
   [46]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5671-c53467440a5196138d2d6610e269a43b6b47bf6b/shard-bmg-5/igt@kms_pm_rpm@modeset-non-lpsp.html
   [47]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173177v1/shard-bmg-5/igt@kms_pm_rpm@modeset-non-lpsp.html

  * igt@xe_evict@evict-mixed-many-threads-small:
    - shard-bmg:          [INCOMPLETE][48] ([Intel XE#6321] / [Intel XE#8355]) -> [PASS][49]
   [48]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5671-c53467440a5196138d2d6610e269a43b6b47bf6b/shard-bmg-3/igt@xe_evict@evict-mixed-many-threads-small.html
   [49]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173177v1/shard-bmg-3/igt@xe_evict@evict-mixed-many-threads-small.html

  * igt@xe_exec_system_allocator@threads-many-large-mmap-new-huge-nomemset:
    - shard-bmg:          [INCOMPLETE][50] ([Intel XE#8159]) -> [PASS][51]
   [50]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5671-c53467440a5196138d2d6610e269a43b6b47bf6b/shard-bmg-9/igt@xe_exec_system_allocator@threads-many-large-mmap-new-huge-nomemset.html
   [51]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173177v1/shard-bmg-1/igt@xe_exec_system_allocator@threads-many-large-mmap-new-huge-nomemset.html

  * igt@xe_fault_injection@inject-fault-probe-function-xe_ggtt_init_early:
    - shard-bmg:          [SKIP][52] ([Intel XE#8589]) -> [PASS][53] +115 other tests pass
   [52]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5671-c53467440a5196138d2d6610e269a43b6b47bf6b/shard-bmg-5/igt@xe_fault_injection@inject-fault-probe-function-xe_ggtt_init_early.html
   [53]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173177v1/shard-bmg-5/igt@xe_fault_injection@inject-fault-probe-function-xe_ggtt_init_early.html

  * igt@xe_gt_freq@freq_suspend:
    - shard-bmg:          [ABORT][54] ([Intel XE#9093]) -> [PASS][55]
   [54]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5671-c53467440a5196138d2d6610e269a43b6b47bf6b/shard-bmg-4/igt@xe_gt_freq@freq_suspend.html
   [55]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173177v1/shard-bmg-3/igt@xe_gt_freq@freq_suspend.html

  
#### Warnings ####

  * igt@kms_big_fb@y-tiled-16bpp-rotate-0:
    - shard-bmg:          [SKIP][56] ([Intel XE#8589]) -> [SKIP][57] ([Intel XE#1124]) +1 other test skip
   [56]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5671-c53467440a5196138d2d6610e269a43b6b47bf6b/shard-bmg-5/igt@kms_big_fb@y-tiled-16bpp-rotate-0.html
   [57]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173177v1/shard-bmg-5/igt@kms_big_fb@y-tiled-16bpp-rotate-0.html

  * igt@kms_bw@connected-linear-tiling-4-displays-target-2560x1440p:
    - shard-bmg:          [SKIP][58] ([Intel XE#8589]) -> [SKIP][59] ([Intel XE#7679])
   [58]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5671-c53467440a5196138d2d6610e269a43b6b47bf6b/shard-bmg-5/igt@kms_bw@connected-linear-tiling-4-displays-target-2560x1440p.html
   [59]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173177v1/shard-bmg-5/igt@kms_bw@connected-linear-tiling-4-displays-target-2560x1440p.html

  * igt@kms_bw@linear-tiling-4-displays-target-3840x2160p:
    - shard-bmg:          [SKIP][60] ([Intel XE#8589]) -> [SKIP][61] ([Intel XE#367])
   [60]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5671-c53467440a5196138d2d6610e269a43b6b47bf6b/shard-bmg-5/igt@kms_bw@linear-tiling-4-displays-target-3840x2160p.html
   [61]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173177v1/shard-bmg-5/igt@kms_bw@linear-tiling-4-displays-target-3840x2160p.html

  * igt@kms_ccs@crc-primary-suspend-4-tiled-mtl-rc-ccs-cc:
    - shard-bmg:          [SKIP][62] ([Intel XE#8589]) -> [SKIP][63] ([Intel XE#3432])
   [62]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5671-c53467440a5196138d2d6610e269a43b6b47bf6b/shard-bmg-5/igt@kms_ccs@crc-primary-suspend-4-tiled-mtl-rc-ccs-cc.html
   [63]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173177v1/shard-bmg-5/igt@kms_ccs@crc-primary-suspend-4-tiled-mtl-rc-ccs-cc.html

  * igt@kms_cdclk@mode-transition:
    - shard-bmg:          [SKIP][64] ([Intel XE#8589]) -> [SKIP][65] ([Intel XE#2724] / [Intel XE#7449])
   [64]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5671-c53467440a5196138d2d6610e269a43b6b47bf6b/shard-bmg-5/igt@kms_cdclk@mode-transition.html
   [65]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173177v1/shard-bmg-5/igt@kms_cdclk@mode-transition.html

  * igt@kms_chamelium_hpd@dp-hpd:
    - shard-bmg:          [SKIP][66] ([Intel XE#8589]) -> [SKIP][67] ([Intel XE#2252]) +1 other test skip
   [66]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5671-c53467440a5196138d2d6610e269a43b6b47bf6b/shard-bmg-5/igt@kms_chamelium_hpd@dp-hpd.html
   [67]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173177v1/shard-bmg-5/igt@kms_chamelium_hpd@dp-hpd.html

  * igt@kms_content_protection@lic-type-0-hdcp14:
    - shard-bmg:          [SKIP][68] ([Intel XE#8589]) -> [FAIL][69] ([Intel XE#1178] / [Intel XE#3304] / [Intel XE#7374])
   [68]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5671-c53467440a5196138d2d6610e269a43b6b47bf6b/shard-bmg-5/igt@kms_content_protection@lic-type-0-hdcp14.html
   [69]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173177v1/shard-bmg-5/igt@kms_content_protection@lic-type-0-hdcp14.html

  * igt@kms_cursor_crc@cursor-sliding-64x21:
    - shard-bmg:          [SKIP][70] ([Intel XE#8589]) -> [SKIP][71] ([Intel XE#2320]) +1 other test skip
   [70]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5671-c53467440a5196138d2d6610e269a43b6b47bf6b/shard-bmg-5/igt@kms_cursor_crc@cursor-sliding-64x21.html
   [71]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173177v1/shard-bmg-5/igt@kms_cursor_crc@cursor-sliding-64x21.html

  * igt@kms_dsc@dsc-fractional-bpp-with-bpc:
    - shard-bmg:          [SKIP][72] ([Intel XE#8589]) -> [SKIP][73] ([Intel XE#8265]) +1 other test skip
   [72]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5671-c53467440a5196138d2d6610e269a43b6b47bf6b/shard-bmg-5/igt@kms_dsc@dsc-fractional-bpp-with-bpc.html
   [73]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173177v1/shard-bmg-5/igt@kms_dsc@dsc-fractional-bpp-with-bpc.html

  * igt@kms_flip@flip-vs-expired-vblank:
    - shard-lnl:          [FAIL][74] ([Intel XE#301]) -> [FAIL][75] ([Intel XE#301] / [Intel XE#3149])
   [74]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5671-c53467440a5196138d2d6610e269a43b6b47bf6b/shard-lnl-4/igt@kms_flip@flip-vs-expired-vblank.html
   [75]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173177v1/shard-lnl-8/igt@kms_flip@flip-vs-expired-vblank.html

  * igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs-downscaling:
    - shard-bmg:          [SKIP][76] ([Intel XE#8589]) -> [SKIP][77] ([Intel XE#7178] / [Intel XE#7351])
   [76]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5671-c53467440a5196138d2d6610e269a43b6b47bf6b/shard-bmg-5/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs-downscaling.html
   [77]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173177v1/shard-bmg-5/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs-downscaling.html

  * igt@kms_frontbuffer_tracking@drrs-1p-offscreen-pri-indfb-draw-mmap-wc:
    - shard-bmg:          [SKIP][78] ([Intel XE#8589]) -> [SKIP][79] ([Intel XE#2311]) +8 other tests skip
   [78]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5671-c53467440a5196138d2d6610e269a43b6b47bf6b/shard-bmg-5/igt@kms_frontbuffer_tracking@drrs-1p-offscreen-pri-indfb-draw-mmap-wc.html
   [79]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173177v1/shard-bmg-5/igt@kms_frontbuffer_tracking@drrs-1p-offscreen-pri-indfb-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@drrshdr-argb161616f-draw-mmap-wc:
    - shard-bmg:          [SKIP][80] ([Intel XE#8589]) -> [SKIP][81] ([Intel XE#7061])
   [80]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5671-c53467440a5196138d2d6610e269a43b6b47bf6b/shard-bmg-5/igt@kms_frontbuffer_tracking@drrshdr-argb161616f-draw-mmap-wc.html
   [81]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173177v1/shard-bmg-5/igt@kms_frontbuffer_tracking@drrshdr-argb161616f-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@fbc-1p-offscreen-pri-shrfb-draw-blt:
    - shard-bmg:          [SKIP][82] ([Intel XE#8589]) -> [SKIP][83] ([Intel XE#4141]) +3 other tests skip
   [82]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5671-c53467440a5196138d2d6610e269a43b6b47bf6b/shard-bmg-5/igt@kms_frontbuffer_tracking@fbc-1p-offscreen-pri-shrfb-draw-blt.html
   [83]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173177v1/shard-bmg-5/igt@kms_frontbuffer_tracking@fbc-1p-offscreen-pri-shrfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@fbcpsrhdr-1p-primscrn-cur-indfb-move:
    - shard-bmg:          [SKIP][84] ([Intel XE#8589]) -> [SKIP][85] ([Intel XE#2313]) +7 other tests skip
   [84]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5671-c53467440a5196138d2d6610e269a43b6b47bf6b/shard-bmg-5/igt@kms_frontbuffer_tracking@fbcpsrhdr-1p-primscrn-cur-indfb-move.html
   [85]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173177v1/shard-bmg-5/igt@kms_frontbuffer_tracking@fbcpsrhdr-1p-primscrn-cur-indfb-move.html

  * igt@kms_pm_dc@dc3co-framedrop-check:
    - shard-bmg:          [SKIP][86] ([Intel XE#8589]) -> [SKIP][87] ([Intel XE#8395] / [Intel XE#8396])
   [86]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5671-c53467440a5196138d2d6610e269a43b6b47bf6b/shard-bmg-5/igt@kms_pm_dc@dc3co-framedrop-check.html
   [87]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173177v1/shard-bmg-5/igt@kms_pm_dc@dc3co-framedrop-check.html

  * igt@kms_psr2_sf@psr2-primary-plane-update-sf-dmg-area:
    - shard-bmg:          [SKIP][88] ([Intel XE#8589]) -> [SKIP][89] ([Intel XE#1489])
   [88]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5671-c53467440a5196138d2d6610e269a43b6b47bf6b/shard-bmg-5/igt@kms_psr2_sf@psr2-primary-plane-update-sf-dmg-area.html
   [89]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173177v1/shard-bmg-5/igt@kms_psr2_sf@psr2-primary-plane-update-sf-dmg-area.html

  * igt@kms_psr@pr-sprite-blt:
    - shard-bmg:          [SKIP][90] ([Intel XE#8589]) -> [SKIP][91] ([Intel XE#2234] / [Intel XE#2850]) +1 other test skip
   [90]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5671-c53467440a5196138d2d6610e269a43b6b47bf6b/shard-bmg-5/igt@kms_psr@pr-sprite-blt.html
   [91]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173177v1/shard-bmg-5/igt@kms_psr@pr-sprite-blt.html

  * igt@kms_sharpness_filter@invalid-filter-with-scaler:
    - shard-bmg:          [SKIP][92] ([Intel XE#8589]) -> [SKIP][93] ([Intel XE#6503]) +1 other test skip
   [92]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5671-c53467440a5196138d2d6610e269a43b6b47bf6b/shard-bmg-5/igt@kms_sharpness_filter@invalid-filter-with-scaler.html
   [93]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173177v1/shard-bmg-5/igt@kms_sharpness_filter@invalid-filter-with-scaler.html

  * igt@xe_exec_basic@multigpu-once-userptr-invalidate-race:
    - shard-bmg:          [SKIP][94] ([Intel XE#8589]) -> [SKIP][95] ([Intel XE#2322] / [Intel XE#7372])
   [94]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5671-c53467440a5196138d2d6610e269a43b6b47bf6b/shard-bmg-5/igt@xe_exec_basic@multigpu-once-userptr-invalidate-race.html
   [95]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173177v1/shard-bmg-5/igt@xe_exec_basic@multigpu-once-userptr-invalidate-race.html

  * igt@xe_exec_fault_mode@many-multi-queue-imm:
    - shard-bmg:          [SKIP][96] ([Intel XE#8589]) -> [SKIP][97] ([Intel XE#8374]) +2 other tests skip
   [96]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5671-c53467440a5196138d2d6610e269a43b6b47bf6b/shard-bmg-5/igt@xe_exec_fault_mode@many-multi-queue-imm.html
   [97]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173177v1/shard-bmg-5/igt@xe_exec_fault_mode@many-multi-queue-imm.html

  * igt@xe_exec_multi_queue@many-execs-preempt-mode-dyn-priority:
    - shard-bmg:          [SKIP][98] ([Intel XE#8589]) -> [SKIP][99] ([Intel XE#8364]) +4 other tests skip
   [98]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5671-c53467440a5196138d2d6610e269a43b6b47bf6b/shard-bmg-5/igt@xe_exec_multi_queue@many-execs-preempt-mode-dyn-priority.html
   [99]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173177v1/shard-bmg-5/igt@xe_exec_multi_queue@many-execs-preempt-mode-dyn-priority.html

  * igt@xe_exec_reset@multi-queue-cancel:
    - shard-bmg:          [SKIP][100] ([Intel XE#8589]) -> [SKIP][101] ([Intel XE#8369])
   [100]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5671-c53467440a5196138d2d6610e269a43b6b47bf6b/shard-bmg-5/igt@xe_exec_reset@multi-queue-cancel.html
   [101]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173177v1/shard-bmg-5/igt@xe_exec_reset@multi-queue-cancel.html

  * igt@xe_exec_threads@threads-multi-queue-cm-fd-basic:
    - shard-bmg:          [SKIP][102] ([Intel XE#8589]) -> [SKIP][103] ([Intel XE#8378]) +1 other test skip
   [102]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5671-c53467440a5196138d2d6610e269a43b6b47bf6b/shard-bmg-5/igt@xe_exec_threads@threads-multi-queue-cm-fd-basic.html
   [103]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173177v1/shard-bmg-5/igt@xe_exec_threads@threads-multi-queue-cm-fd-basic.html

  * igt@xe_peer2peer@read:
    - shard-bmg:          [SKIP][104] ([Intel XE#6953] / [Intel XE#7326] / [Intel XE#7353]) -> [SKIP][105] ([Intel XE#2427] / [Intel XE#6953] / [Intel XE#7326] / [Intel XE#7353])
   [104]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5671-c53467440a5196138d2d6610e269a43b6b47bf6b/shard-bmg-5/igt@xe_peer2peer@read.html
   [105]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173177v1/shard-bmg-5/igt@xe_peer2peer@read.html

  * igt@xe_query@multigpu-query-gt-list:
    - shard-bmg:          [SKIP][106] ([Intel XE#8589]) -> [SKIP][107] ([Intel XE#944])
   [106]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5671-c53467440a5196138d2d6610e269a43b6b47bf6b/shard-bmg-5/igt@xe_query@multigpu-query-gt-list.html
   [107]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-173177v1/shard-bmg-5/igt@xe_query@multigpu-query-gt-list.html

  
  [Intel XE#1124]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1124
  [Intel XE#1178]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1178
  [Intel XE#1489]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1489
  [Intel XE#1508]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1508
  [Intel XE#1729]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1729
  [Intel XE#2234]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2234
  [Intel XE#2252]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2252
  [Intel XE#2311]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2311
  [Intel XE#2313]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2313
  [Intel XE#2320]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2320
  [Intel XE#2322]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2322
  [Intel XE#2350]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2350
  [Intel XE#2427]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2427
  [Intel XE#2724]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2724
  [Intel XE#2850]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2850
  [Intel XE#301]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/301
  [Intel XE#3149]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3149
  [Intel XE#3304]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3304
  [Intel XE#3432]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3432
  [Intel XE#367]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/367
  [Intel XE#3904]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3904
  [Intel XE#4141]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4141
  [Intel XE#4156]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4156
  [Intel XE#4760]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4760
  [Intel XE#6266]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6266
  [Intel XE#6321]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6321
  [Intel XE#6503]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6503
  [Intel XE#6953]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6953
  [Intel XE#6964]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6964
  [Intel XE#7061]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7061
  [Intel XE#7084]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7084
  [Intel XE#7178]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7178
  [Intel XE#7326]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7326
  [Intel XE#7342]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7342
  [Intel XE#7351]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7351
  [Intel XE#7353]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7353
  [Intel XE#7372]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7372
  [Intel XE#7374]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7374
  [Intel XE#7424]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7424
  [Intel XE#7425]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7425
  [Intel XE#7449]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7449
  [Intel XE#7503]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7503
  [Intel XE#7599]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7599
  [Intel XE#7679]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7679
  [Intel XE#7774]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7774
  [Intel XE#7793]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7793
  [Intel XE#7809]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7809
  [Intel XE#7992]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7992
  [Intel XE#8007]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8007
  [Intel XE#8150]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8150
  [Intel XE#8159]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8159
  [Intel XE#8265]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8265
  [Intel XE#8355]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8355
  [Intel XE#8364]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8364
  [Intel XE#8369]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8369
  [Intel XE#8374]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8374
  [Intel XE#8378]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8378
  [Intel XE#8395]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8395
  [Intel XE#8396]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8396
  [Intel XE#8589]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8589
  [Intel XE#8710]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8710
  [Intel XE#8749]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8749
  [Intel XE#9093]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9093
  [Intel XE#944]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/944


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

  * Linux: xe-5671-c53467440a5196138d2d6610e269a43b6b47bf6b -> xe-pw-173177v1

  IGT_9079: 9079
  xe-5671-c53467440a5196138d2d6610e269a43b6b47bf6b: c53467440a5196138d2d6610e269a43b6b47bf6b
  xe-pw-173177v1: 173177v1

== Logs ==

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

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

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

* Re: [PATCH v2 1/5] drm/xe/guc: Use different error codes for GuC load errors
  2026-09-01 21:12 ` [PATCH v2 1/5] drm/xe/guc: Use different error codes for GuC load errors Umesh Nerlige Ramappa
@ 2026-09-02 12:56   ` Michal Wajdeczko
  0 siblings, 0 replies; 17+ messages in thread
From: Michal Wajdeczko @ 2026-09-02 12:56 UTC (permalink / raw)
  To: Umesh Nerlige Ramappa, intel-xe
  Cc: daniele.ceraolospurio, aravind.iddamsetty, mallesh.koujalagi,
	alan.previn.teres.alexis, julia.filipchuk



On 9/1/2026 11:12 PM, Umesh Nerlige Ramappa wrote:
> From: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
> 
> Instead of always returning -EPROTO no matter what goes wrong, use
> different error codes based on the error type.
> 
> v2: split to its own patch
> 
> Signed-off-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
> Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
> Cc: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
> ---
>  drivers/gpu/drm/xe/xe_guc.c | 22 ++++++++++++----------
>  1 file changed, 12 insertions(+), 10 deletions(-)
> 
> diff --git a/drivers/gpu/drm/xe/xe_guc.c b/drivers/gpu/drm/xe/xe_guc.c
> index c7f8bbd4cb92..5285d4cecbc8 100644
> --- a/drivers/gpu/drm/xe/xe_guc.c
> +++ b/drivers/gpu/drm/xe/xe_guc.c
> @@ -1144,8 +1144,8 @@ static void print_load_status_err(struct xe_gt *gt, u32 status)
>   * Check GUC_STATUS looking for known terminal states (either completion or
>   * failure) of either the microkernel status field or the boot ROM status field.
>   *
> - * Returns 1 for successful completion, -1 for failure and 0 for any
> - * intermediate state.
> + * Returns 0 for successful completion, -EBUSY for any intermediate state and
> + * other errno values for failure cases.
>   */
>  static int guc_load_done(struct xe_gt *gt, u32 *status, u32 *tries)
>  {
> @@ -1157,20 +1157,22 @@ static int guc_load_done(struct xe_gt *gt, u32 *status, u32 *tries)
>  
>  	switch (ukernel) {
>  	case XE_GUC_LOAD_STATUS_READY:
> -		return 1;
> +		return 0;
>  	case XE_GUC_LOAD_STATUS_ERROR_DEVID_BUILD_MISMATCH:
>  	case XE_GUC_LOAD_STATUS_GUC_PREPROD_BUILD_MISMATCH:
>  	case XE_GUC_LOAD_STATUS_ERROR_DEVID_INVALID_GUCTYPE:
>  	case XE_GUC_LOAD_STATUS_HWCONFIG_ERROR:
>  	case XE_GUC_LOAD_STATUS_BOOTROM_VERSION_MISMATCH:
> +		return -ENOEXEC;
>  	case XE_GUC_LOAD_STATUS_DPC_ERROR:
>  	case XE_GUC_LOAD_STATUS_EXCEPTION:
> +		return -EIO;
>  	case XE_GUC_LOAD_STATUS_INIT_DATA_INVALID:
>  	case XE_GUC_LOAD_STATUS_MPU_DATA_INVALID:
>  	case XE_GUC_LOAD_STATUS_INIT_MMIO_SAVE_RESTORE_INVALID:
>  	case XE_GUC_LOAD_STATUS_KLV_WORKAROUND_INIT_ERROR:
>  	case XE_GUC_LOAD_STATUS_INVALID_FTR_FLAG:
> -		return -1;
> +		return -EINVAL;
>  	}
>  
>  	switch (bootrom) {
> @@ -1184,7 +1186,7 @@ static int guc_load_done(struct xe_gt *gt, u32 *status, u32 *tries)
>  	case XE_BOOTROM_STATUS_MPUMAP_INCORRECT:
>  	case XE_BOOTROM_STATUS_EXCEPTION:
>  	case XE_BOOTROM_STATUS_PROD_KEY_CHECK_FAILURE:
> -		return -1;
> +		return -ENOEXEC;
>  	}
>  
>  	if (++*tries >= 100) {
> @@ -1197,7 +1199,7 @@ static int guc_load_done(struct xe_gt *gt, u32 *status, u32 *tries)
>  			  *status, ukernel, bootrom);
>  	}
>  
> -	return 0;
> +	return -EBUSY;
>  }
>  
>  static int guc_wait_ucode(struct xe_guc *guc)
> @@ -1213,21 +1215,21 @@ static int guc_wait_ucode(struct xe_guc *guc)
>  	before_freq = xe_guc_pc_get_act_freq(guc_pc);
>  	before = ktime_get();
>  
> -	ret = poll_timeout_us(load_result = guc_load_done(gt, &status, &tries), load_result,
> -			      10 * USEC_PER_MSEC,
> +	ret = poll_timeout_us(load_result = guc_load_done(gt, &status, &tries),
> +			      load_result != -EBUSY, 10 * USEC_PER_MSEC,
>  			      GUC_LOAD_TIMEOUT_SEC * USEC_PER_SEC, false);
>  
>  	delta_ms = ktime_to_ms(ktime_sub(ktime_get(), before));
>  	act_freq = xe_guc_pc_get_act_freq(guc_pc);
>  	cur_freq = xe_guc_pc_get_cur_freq_fw(guc_pc);
>  
> -	if (ret || load_result <= 0) {
> +	if (ret || load_result) {
>  		xe_gt_err(gt, "load failed: status = 0x%08X, time = %lldms, freq = %dMHz (req %dMHz)\n",
>  			  status, delta_ms, xe_guc_pc_get_act_freq(guc_pc),
>  			  xe_guc_pc_get_cur_freq_fw(guc_pc));
>  		print_load_status_err(gt, status);
>  
> -		return -EPROTO;
> +		return ret ?: load_result;
>  	}
>  
>  	if (delta_ms > GUC_LOAD_TIME_WARN_MSEC) {

Reviewed-by: Michal Wajdeczko <michal.wajdeczko@intel.com>


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

* Re: [PATCH v2 2/5] drm/xe/guc: Use different error codes for CT errors
  2026-09-01 21:12 ` [PATCH v2 2/5] drm/xe/guc: Use different error codes for CT errors Umesh Nerlige Ramappa
@ 2026-09-02 14:22   ` Michal Wajdeczko
  2026-09-02 22:35     ` Umesh Nerlige Ramappa
  0 siblings, 1 reply; 17+ messages in thread
From: Michal Wajdeczko @ 2026-09-02 14:22 UTC (permalink / raw)
  To: Umesh Nerlige Ramappa, intel-xe, Matthew Brost
  Cc: daniele.ceraolospurio, aravind.iddamsetty, mallesh.koujalagi,
	alan.previn.teres.alexis, julia.filipchuk



On 9/1/2026 11:12 PM, Umesh Nerlige Ramappa wrote:
> Instead of always returning -EPROTO for most errors, use different error
> codes based on the error type. -EPROTO is retained for the cases that
> are genuine protocol violations by the GuC.  The remaining cases now
> report what actually went wrong.
> 
> receive_g2h() used to escalate to CT_DEAD + kick_reset() by matching the
> two error codes that dequeue_one_g2h() could return on a fatal error.
> Invert the check to simplify reset handling.
> 
> Signed-off-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
> Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
> Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
> Assisted-by: Claude:claude-opus-5
> ---
>  drivers/gpu/drm/xe/xe_guc_ct.c | 48 +++++++++++++++++++++++++++++-----
>  1 file changed, 42 insertions(+), 6 deletions(-)
> 
> diff --git a/drivers/gpu/drm/xe/xe_guc_ct.c b/drivers/gpu/drm/xe/xe_guc_ct.c
> index 5c4733da385c..dcd457f38b89 100644
> --- a/drivers/gpu/drm/xe/xe_guc_ct.c
> +++ b/drivers/gpu/drm/xe/xe_guc_ct.c
> @@ -947,6 +947,7 @@ static int h2g_write(struct xe_guc_ct *ct, const u32 *action, u32 len,
>  	u32 cmd[H2G_CT_HEADERS];
>  	u32 tail = h2g->info.tail;
>  	u32 full_len;
> +	int err;
>  	struct iosys_map map = IOSYS_MAP_INIT_OFFSET(&h2g->cmds,
>  							 tail * sizeof(u32));
>  
> @@ -961,12 +962,14 @@ static int h2g_write(struct xe_guc_ct *ct, const u32 *action, u32 len,
>  
>  		desc_status = desc_read(xe, h2g, status);
>  		if (desc_status) {
> +			err = -EPROTO;

didn't we agree to use -EPIPE for a bad CT descriptor status?

>  			xe_gt_err(gt, "CT write: non-zero status: %u\n", desc_status);
>  			goto corrupted;
>  		}
>  
>  		if (tail > h2g->info.size) {
>  			desc_write(xe, h2g, status, desc_status | GUC_CTB_STATUS_OVERFLOW);
> +			err = -EPROTO;

hmm, IMO it would be better to use -EPROTO only for the errors related
to the actual HXG messages, and for raw CT transport failures use -EPIPE

unless we want to use -EPIPE only for existing problems in descriptor
and for new error conditions use something else, like -ENFILE?
but maybe that's overkill as it is fatal anyway, and the message already
says what went wrong

>  			xe_gt_err(gt, "CT write: tail out of range: %u vs %u\n",
>  				  tail, h2g->info.size);
>  			goto corrupted;
> @@ -974,6 +977,7 @@ static int h2g_write(struct xe_guc_ct *ct, const u32 *action, u32 len,
>  
>  		if (desc_head >= h2g->info.size) {
>  			desc_write(xe, h2g, status, desc_status | GUC_CTB_STATUS_OVERFLOW);
> +			err = -EPIPE;

we should be consistent 

	-EPIPE = CT already broken
vs
	-EPIPE = all CT channel errors


>  			xe_gt_err(gt, "CT write: invalid head offset %u >= %u)\n",
>  				  desc_head, h2g->info.size);
>  			goto corrupted;
> @@ -1591,14 +1595,19 @@ static int parse_g2h_response(struct xe_guc_ct *ct, u32 *msg, u32 len)
>  	 * failure to trigger a reset.
>  	 */
>  	if (fence & CT_SEQNO_UNTRACKED) {
> -		if (type == GUC_HXG_TYPE_RESPONSE_FAILURE)
> +		int err;
> +
> +		if (type == GUC_HXG_TYPE_RESPONSE_FAILURE) {
> +			err = -EBADE;

I'm little concerned that there was no other proposal here ;)

>  			xe_gt_err(gt, "FAST_REQ H2G fence 0x%x failed! e=0x%x, h=%u\n",
>  				  fence,
>  				  FIELD_GET(GUC_HXG_FAILURE_MSG_0_ERROR, hxg[0]),
>  				  FIELD_GET(GUC_HXG_FAILURE_MSG_0_HINT, hxg[0]));
> -		else
> +		} else {
> +			err = -EPROTO;
>  			xe_gt_err(gt, "unexpected response %u for FAST_REQ H2G fence 0x%x!\n",
>  				  type, fence);
> +		}
>  
>  		fast_req_report(ct, fence);
>  
> @@ -1608,7 +1617,7 @@ static int parse_g2h_response(struct xe_guc_ct *ct, u32 *msg, u32 len)
>  
>  		CT_DEAD(ct, NULL, PARSE_G2H_RESPONSE);
>  
> -		return -EPROTO;
> +		return err;
>  	}
>  
>  	/* don't erase as we still expect a final response with the same fence */
> @@ -1809,10 +1818,12 @@ static int g2h_read(struct xe_guc_ct *ct, u32 *msg, bool fast_path)
>  	s32 avail;
>  	u32 action;
>  	u32 *hxg;
> +	int err;
>  
>  	xe_gt_assert(gt, xe_guc_ct_initialized(ct));
>  	lockdep_assert_held(&ct->fast_lock);
>  
> +	/* Keep in sync with g2h_err_is_fatal() */
>  	if (xe_device_wedged(xe))
>  		return -ENOTRECOVERABLE;
>  
> @@ -1840,6 +1851,7 @@ static int g2h_read(struct xe_guc_ct *ct, u32 *msg, bool fast_path)
>  		}
>  
>  		if (desc_status) {
> +			err = -EIO;

earlier in this patch in h2g_write you used -EPROTO for the similar issue
but I would go with -EPIPE here
>  			xe_gt_err(gt, "CT read: non-zero status: %u\n", desc_status);
>  			goto corrupted;
>  		}
> @@ -1871,6 +1883,7 @@ static int g2h_read(struct xe_guc_ct *ct, u32 *msg, bool fast_path)
>  
>  		if (g2h->info.head > g2h->info.size) {
>  			desc_write(xe, g2h, status, desc_status | GUC_CTB_STATUS_OVERFLOW);
> +			err = -ERANGE;

-EPIPE if we want to treat all CT descriptor problems in the same way

>  			xe_gt_err(gt, "CT read: head out of range: %u vs %u\n",
>  				  g2h->info.head, g2h->info.size);
>  			goto corrupted;
> @@ -1878,6 +1891,7 @@ static int g2h_read(struct xe_guc_ct *ct, u32 *msg, bool fast_path)
>  
>  		if (desc_tail >= g2h->info.size) {
>  			desc_write(xe, g2h, status, desc_status | GUC_CTB_STATUS_OVERFLOW);
> +			err = -ERANGE;

ditto

>  			xe_gt_err(gt, "CT read: invalid tail offset %u >= %u)\n",
>  				  desc_tail, g2h->info.size);
>  			goto corrupted;
> @@ -1898,6 +1912,7 @@ static int g2h_read(struct xe_guc_ct *ct, u32 *msg, bool fast_path)
>  			   sizeof(u32));
>  	len = FIELD_GET(GUC_CTB_MSG_0_NUM_DWORDS, msg[0]) + GUC_CTB_MSG_MIN_LEN;
>  	if (len > avail) {
> +		err = -EBADMSG;
>  		xe_gt_err(gt, "G2H channel broken on read, avail=%d, len=%d, reset required\n",
>  			  avail, len);
>  		goto corrupted;
> @@ -1950,7 +1965,7 @@ static int g2h_read(struct xe_guc_ct *ct, u32 *msg, bool fast_path)
>  
>  corrupted:
>  	CT_DEAD(ct, &ct->ctbs.g2h, G2H_READ);
> -	return -EPROTO;
> +	return err;
>  }
>  
>  static void g2h_fast_path(struct xe_guc_ct *ct, u32 *msg, u32 len)
> @@ -2042,6 +2057,27 @@ static int dequeue_one_g2h(struct xe_guc_ct *ct)
>  	return 1;
>  }
>  
> +/*
> + * Errors reported by dequeue_one_g2h() come in two flavours: either the channel
> + * is simply not available right now, which is expected and handled gracefully,
> + * or the channel state or the message itself is inconsistent, in which case the
> + * only way forward is to declare the CT dead and reset the GuC. Since the
> + * former is a short and well known list, check against that and treat anything
> + * else as fatal, so that new error codes don't silently escape the escalation.
> + */
> +static bool g2h_err_is_fatal(int err)
> +{
> +	switch (err) {
> +	case -ENOTRECOVERABLE:	/* device wedged */
> +	case -ENODEV:		/* CT disabled */
> +	case -ECANCELED:	/* CT stopped */
> +	case -EPIPE:		/* CT already declared broken */

btw, there is a different order of checks in

	__guc_ct_send_locked()
		if (xe_device_wedged(ct_to_xe(ct))) {
		if (unlikely(ct->ctbs.h2g.info.broken)) {
		if (ct->state == XE_GUC_CT_STATE_DISABLED) {
		if (ct->state == XE_GUC_CT_STATE_STOPPED || xe_gt_recovery_pending(gt)) {

vs

	g2h_read
		if (xe_device_wedged(xe))
		if (ct->state == XE_GUC_CT_STATE_DISABLED)
		if (ct->state == XE_GUC_CT_STATE_STOPPED)
		if (g2h->info.broken)
	
and IMO we should revisit usage of -ECANCELED as it should be used only
for already sent H2G which wait for G2H but were cancelled due to a reset

if someone is still trying to send H2G when CT is already stopped/
then we should use different code, maybe -EPERM ?

-ENOTRECOVERABLE	/* device already wedged */
-ENODEV			/* CT disabled */
-EPERM			/* CT already stopped */
-EPROTO			/* CT message broken */    => reset => stop/start => enabled|wedged
-EPIPE			/* CT channel broken */	   => reset => stop/start => enabled|wedged
-EDEADLK		/* CT deadlock detected */ => reset => stop/start => enabled|wedged
-ECANCELED		/* CT stopped/GT reset */



> +		return false;
> +	default:
> +		return true;

are we sure only all other errors need to be recovered immediately by
the full GT reset? not the other way around?

we should kick reset on the first report of -EPROTO/-EPIPE (when we detect broken
HXG message or CTB descriptor), subsequent calls to send() shall return new
either new errors, like -EPERM, as CTB should be already STOPPED, or -EPIPE
as we might still wait for the reset flow, but CTB is already marked BROKEN.

and I'm not sure that reset would help for -EOPNOTSUPP, as it is unlikely
that driver will suddenly start supporting some new messages ...

> +	}
> +}
> +
>  static void receive_g2h(struct xe_guc_ct *ct)
>  {
>  	bool ongoing;
> @@ -2079,8 +2115,8 @@ static void receive_g2h(struct xe_guc_ct *ct)
>  		ret = dequeue_one_g2h(ct);
>  		mutex_unlock(&ct->lock);
>  
> -		if (unlikely(ret == -EPROTO || ret == -EOPNOTSUPP)) {
> -			xe_gt_err(ct_to_gt(ct), "CT dequeue failed: %d\n", ret);
> +		if (unlikely(ret < 0 && g2h_err_is_fatal(ret))) {
> +			xe_gt_err(ct_to_gt(ct), "CT dequeue failed (%pe)\n", ERR_PTR(ret));

btw, shouldn't we always report an error and just kick reset on fatal?
or maybe even move kick_reset() somewhere else we know it is something
new and fatal (like detected corrupted descriptor) ?

>  			CT_DEAD(ct, NULL, G2H_RECV);
>  			kick_reset(ct);
>  		}


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

* Re: [PATCH v2 4/5] drm/xe/guc: Report major GuC failures using SIGID
  2026-09-01 21:12 ` [PATCH v2 4/5] drm/xe/guc: Report major GuC failures " Umesh Nerlige Ramappa
@ 2026-09-02 14:33   ` Michal Wajdeczko
  2026-09-02 19:02     ` Umesh Nerlige Ramappa
  0 siblings, 1 reply; 17+ messages in thread
From: Michal Wajdeczko @ 2026-09-02 14:33 UTC (permalink / raw)
  To: Umesh Nerlige Ramappa, intel-xe
  Cc: daniele.ceraolospurio, aravind.iddamsetty, mallesh.koujalagi,
	alan.previn.teres.alexis, julia.filipchuk



On 9/1/2026 11:12 PM, Umesh Nerlige Ramappa wrote:
> From: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
> 
> Convert errors during critical GuC flows (init, load, reset, suspend)
> to use the xe_log_err() helper.
> While at it, simplify the error log for the GuC load failure to use the
> cached frequency values instead of fetching them again.
> 
> v2: split guc_load_done changes to their own patch, use available ret
> value for reset errors (Michal)
> 
> Signed-off-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
> Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
> Cc: Aravind Iddamsetty <aravind.iddamsetty@intel.com>
> Cc: Mallesh Koujalagi <mallesh.koujalagi@intel.com>
> Cc: Alan Previn Teres Alexis <alan.previn.teres.alexis@intel.com>
> Cc: Julia Filipchuk <julia.filipchuk@intel.com>
> Cc: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
> ---
>  drivers/gpu/drm/xe/xe_guc.c | 19 ++++++++++---------
>  1 file changed, 10 insertions(+), 9 deletions(-)
> 
> diff --git a/drivers/gpu/drm/xe/xe_guc.c b/drivers/gpu/drm/xe/xe_guc.c
> index 5285d4cecbc8..d0ddaaf35274 100644
> --- a/drivers/gpu/drm/xe/xe_guc.c
> +++ b/drivers/gpu/drm/xe/xe_guc.c
> @@ -777,7 +777,7 @@ int xe_guc_init_noalloc(struct xe_guc *guc)
>  	return 0;
>  
>  out:
> -	xe_gt_err(gt, "GuC init failed with %pe\n", ERR_PTR(ret));
> +	xe_log_err(gt, GUC, ret, "GuC init failed\n");

note that there will be already "GUC: " prefix in the message,
so maybe just:

	"Initialization error\n"

>  	return ret;
>  }
>  
> @@ -845,7 +845,7 @@ int xe_guc_init(struct xe_guc *guc)
>  	return 0;
>  
>  out:
> -	xe_gt_err(gt, "GuC init failed with %pe\n", ERR_PTR(ret));
> +	xe_log_err(gt, GUC, ret, "GuC init failed\n");

ditto

>  	return ret;
>  }
>  
> @@ -998,15 +998,16 @@ int xe_guc_reset(struct xe_guc *guc)
>  
>  	ret = xe_mmio_wait32(mmio, GDRST, GRDOM_GUC, 0, 5000, &gdrst, false);
>  	if (ret) {
> -		xe_gt_err(gt, "GuC reset timed out, GDRST=%#x\n", gdrst);
> +		xe_log_err(gt, GUC, ret, "GuC reset timed out, GDRST=%#x\n", gdrst);

note that there will be already "GUC: " prefix in the message,
so maybe just:

	"Reset timeout, GDRST=%#x\n"

>  		goto err_out;
>  	}
>  
>  	guc_status = xe_mmio_read32(mmio, GUC_STATUS);
>  	if (!(guc_status & GS_MIA_IN_RESET)) {
> -		xe_gt_err(gt, "GuC status: %#x, MIA core expected to be in reset\n",
> -			  guc_status);
>  		ret = -EIO;
> +		xe_log_err(gt, GUC, ret,
> +			   "GuC status: %#x, MIA core expected to be in reset\n",
> +			   guc_status);

note that there will be already "GUC: " prefix in the message,
so maybe just:

	"MIA core not in reset, GUC_STATUS=%#x\n"

>  		goto err_out;
>  	}
>  
> @@ -1224,9 +1225,9 @@ static int guc_wait_ucode(struct xe_guc *guc)
>  	cur_freq = xe_guc_pc_get_cur_freq_fw(guc_pc);
>  
>  	if (ret || load_result) {
> -		xe_gt_err(gt, "load failed: status = 0x%08X, time = %lldms, freq = %dMHz (req %dMHz)\n",
> -			  status, delta_ms, xe_guc_pc_get_act_freq(guc_pc),
> -			  xe_guc_pc_get_cur_freq_fw(guc_pc));
> +		xe_log_err(gt, GUC, ret ?: load_result,
> +			   "load failed: status = 0x%08X, time = %lldms, freq = %dMHz (req %dMHz)\n",

as "status" is a register dump, maybe use the same naming as before:

	"Load failed, GUC_STATUS=%#x

> +			   status, delta_ms, act_freq, cur_freq);
>  		print_load_status_err(gt, status);

do we want to use xe_log_info() here ^^^ to get a better view?
then maybe above xe_log() could be split and keep only GUC_STATUS
and move rest (freq) to other logs?

>  
>  		return ret ?: load_result;
> @@ -1463,7 +1464,7 @@ int xe_guc_suspend(struct xe_guc *guc)
>  
>  	ret = xe_guc_softreset(guc);
>  	if (ret) {
> -		xe_gt_err(gt, "GuC suspend failed: %pe\n", ERR_PTR(ret));
> +		xe_log_err(gt, GUC, ret, "GuC suspend failed\n");

note that there will be already "GUC: " prefix in the message,
so maybe just:

	"Suspend aborted\n"

>  		return ret;
>  	}
>  


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

* Re: [PATCH v2 5/5] drm/xe/guc: Report errors that cause a CT shutdown using SIGID
  2026-09-01 21:12 ` [PATCH v2 5/5] drm/xe/guc: Report errors that cause a CT shutdown " Umesh Nerlige Ramappa
@ 2026-09-02 14:45   ` Michal Wajdeczko
  2026-09-03 22:21     ` Umesh Nerlige Ramappa
  0 siblings, 1 reply; 17+ messages in thread
From: Michal Wajdeczko @ 2026-09-02 14:45 UTC (permalink / raw)
  To: Umesh Nerlige Ramappa, intel-xe, Rodrigo Vivi, Matthew Brost
  Cc: daniele.ceraolospurio, aravind.iddamsetty, mallesh.koujalagi,
	alan.previn.teres.alexis, julia.filipchuk



On 9/1/2026 11:12 PM, Umesh Nerlige Ramappa wrote:
> From: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
> 
> Convert any errors that can cause the CT to be declared as dead to
> use the xe_log_err() helper. Errors that are escalated to the callers
> are left for the caller to report with SIGID if needed.
> While at it, update some of the error messages to make what went wrong
> clearer.
> 
> v2: use different error codes for different errors, better messages (Michal)
> 
> Signed-off-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
> Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
> Cc: Aravind Iddamsetty <aravind.iddamsetty@intel.com>
> Cc: Mallesh Koujalagi <mallesh.koujalagi@intel.com>
> Cc: Alan Previn Teres Alexis <alan.previn.teres.alexis@intel.com>
> Cc: Julia Filipchuk <julia.filipchuk@intel.com>
> Assisted-by: Claude:claude-opus-5
> ---
>  drivers/gpu/drm/xe/xe_guc_ct.c | 89 +++++++++++++++++++---------------
>  1 file changed, 49 insertions(+), 40 deletions(-)
> 
> diff --git a/drivers/gpu/drm/xe/xe_guc_ct.c b/drivers/gpu/drm/xe/xe_guc_ct.c
> index dcd457f38b89..cf347f960166 100644
> --- a/drivers/gpu/drm/xe/xe_guc_ct.c
> +++ b/drivers/gpu/drm/xe/xe_guc_ct.c
> @@ -30,6 +30,7 @@
>  #include "xe_guc_relay.h"
>  #include "xe_guc_submit.h"
>  #include "xe_guc_tlb_inval.h"
> +#include "xe_log.h"
>  #include "xe_map.h"
>  #include "xe_page_reclaim.h"
>  #include "xe_pm.h"
> @@ -679,7 +680,7 @@ static int __xe_guc_ct_start(struct xe_guc_ct *ct, bool needs_register)
>  	return 0;
>  
>  err_out:
> -	xe_gt_err(gt, "Failed to enable GuC CT (%pe)\n", ERR_PTR(err));
> +	xe_log_err(gt, GUC, err, "Failed to enable CT\n");

just wondering, if maybe we should add new component

	define(DRIVER, 8, GUCCT, RUNTIME_FW, "GuC CTB communication")		\
or	define(DRIVER, 8, CTB, RUNTIME_FW, "GuC CTB communication")		\

so the messages will look like:

	[drm] *ERROR* SIGID=104 (-EXXXX) Tile0: GT1: CTB: Initialization error
	[drm] *ERROR* SIGID=104 (-EPIPE) Tile0: GT1: CTB: invalid head offset ...


>  	CT_DEAD(ct, NULL, SETUP);
>  
>  	return err;
> @@ -803,8 +804,9 @@ static bool h2g_has_room(struct xe_guc_ct *ct, u32 cmd_len)
>  
>  			desc_write(xe, h2g, status, desc_status | GUC_CTB_STATUS_OVERFLOW);
>  
> -			xe_gt_err(ct_to_gt(ct), "CT: invalid head offset %u >= %u)\n",
> -				  h2g->info.head, h2g->info.size);
> +			xe_log_err(ct_to_gt(ct), GUC, -EPIPE,
> +				   "CT: invalid head offset %u >= %u)\n",
> +				   h2g->info.head, h2g->info.size);
>  			CT_DEAD(ct, h2g, H2G_HAS_ROOM);
>  			return false;
>  		}
> @@ -873,12 +875,13 @@ static void __g2h_release_space(struct xe_guc_ct *ct, u32 g2h_len)
>  	bad |= !ct->g2h_outstanding;
>  
>  	if (bad) {
> -		xe_gt_err(ct_to_gt(ct), "Invalid G2H release: %d + %d vs %d - %d -> %d vs %d, outstanding = %d!\n",
> -			  ct->ctbs.g2h.info.space, g2h_len,
> -			  ct->ctbs.g2h.info.size, ct->ctbs.g2h.info.resv_space,
> -			  ct->ctbs.g2h.info.space + g2h_len,
> -			  ct->ctbs.g2h.info.size - ct->ctbs.g2h.info.resv_space,
> -			  ct->g2h_outstanding);
> +		xe_log_err(ct_to_gt(ct), GUC, -ETOOMANYREFS,
> +			   "Invalid G2H release: %d + %d vs %d - %d -> %d vs %d, outstanding = %d!\n",
> +			   ct->ctbs.g2h.info.space, g2h_len,
> +			   ct->ctbs.g2h.info.size, ct->ctbs.g2h.info.resv_space,
> +			   ct->ctbs.g2h.info.space + g2h_len,
> +			   ct->ctbs.g2h.info.size - ct->ctbs.g2h.info.resv_space,
> +			   ct->g2h_outstanding);
>  		CT_DEAD(ct, &ct->ctbs.g2h, G2H_RELEASE);
>  		return;
>  	}
> @@ -963,23 +966,26 @@ static int h2g_write(struct xe_guc_ct *ct, const u32 *action, u32 len,
>  		desc_status = desc_read(xe, h2g, status);
>  		if (desc_status) {
>  			err = -EPROTO;
> -			xe_gt_err(gt, "CT write: non-zero status: %u\n", desc_status);
> +			xe_log_err(gt, GUC, err,
> +				   "CT write: non-zero status: %u\n", desc_status);
>  			goto corrupted;
>  		}
>  
>  		if (tail > h2g->info.size) {
>  			desc_write(xe, h2g, status, desc_status | GUC_CTB_STATUS_OVERFLOW);
>  			err = -EPROTO;
> -			xe_gt_err(gt, "CT write: tail out of range: %u vs %u\n",
> -				  tail, h2g->info.size);
> +			xe_log_err(gt, GUC, err,
> +				   "CT write: tail out of range: %u vs %u\n",
> +				   tail, h2g->info.size);
>  			goto corrupted;
>  		}
>  
>  		if (desc_head >= h2g->info.size) {
>  			desc_write(xe, h2g, status, desc_status | GUC_CTB_STATUS_OVERFLOW);
>  			err = -EPIPE;
> -			xe_gt_err(gt, "CT write: invalid head offset %u >= %u)\n",
> -				  desc_head, h2g->info.size);
> +			xe_log_err(gt, GUC, err,
> +				   "CT write: invalid head offset %u >= %u)\n",
> +				   desc_head, h2g->info.size);
>  			goto corrupted;
>  		}
>  	}
> @@ -1224,7 +1230,7 @@ static int guc_ct_send_locked(struct xe_guc_ct *ct, const u32 *action, u32 len,
>  	return ret;
>  
>  broken:
> -	xe_gt_err(gt, "No forward process on H2G, reset required\n");
> +	xe_log_err(gt, GUC, -EDEADLK, "No forward process on H2G, reset required\n");
>  	CT_DEAD(ct, &ct->ctbs.h2g, DEADLOCK);
>  
>  	return -EDEADLK;
> @@ -1562,11 +1568,12 @@ static int guc_crash_process_msg(struct xe_guc_ct *ct, u32 action)
>  	struct xe_gt *gt = ct_to_gt(ct);
>  
>  	if (action == XE_GUC_ACTION_NOTIFY_CRASH_DUMP_POSTED)
> -		xe_gt_err(gt, "GuC Crash dump notification\n");
> +		xe_log_err(gt, GUC, -EHOSTDOWN, "GuC Crash dump notification\n");
>  	else if (action == XE_GUC_ACTION_NOTIFY_EXCEPTION)
> -		xe_gt_err(gt, "GuC Exception notification\n");
> +		xe_log_err(gt, GUC, -EHOSTDOWN, "GuC Exception notification\n");
>  	else
> -		xe_gt_err(gt, "Unknown GuC crash notification: 0x%04X\n", action);
> +		xe_log_err(gt, GUC, -EHOSTDOWN,
> +			   "Unknown GuC crash notification: 0x%04X\n", action);

note that for the GUC component there will be "GUC: " prefix added by the xe_log()

	"Crash dump notification\n"
	"Exception notification\n"
	"Unknown crash notification\n"


>  
>  	CT_DEAD(ct, NULL, CRASH);
>  
> @@ -1599,14 +1606,16 @@ static int parse_g2h_response(struct xe_guc_ct *ct, u32 *msg, u32 len)
>  
>  		if (type == GUC_HXG_TYPE_RESPONSE_FAILURE) {
>  			err = -EBADE;
> -			xe_gt_err(gt, "FAST_REQ H2G fence 0x%x failed! e=0x%x, h=%u\n",
> -				  fence,
> -				  FIELD_GET(GUC_HXG_FAILURE_MSG_0_ERROR, hxg[0]),
> -				  FIELD_GET(GUC_HXG_FAILURE_MSG_0_HINT, hxg[0]));
> +			xe_log_err(gt, GUC, err,
> +				   "FAST_REQ H2G fence 0x%x failed! e=0x%x, h=%u\n",
> +				   fence,
> +				   FIELD_GET(GUC_HXG_FAILURE_MSG_0_ERROR, hxg[0]),
> +				   FIELD_GET(GUC_HXG_FAILURE_MSG_0_HINT, hxg[0]));
>  		} else {
>  			err = -EPROTO;
> -			xe_gt_err(gt, "unexpected response %u for FAST_REQ H2G fence 0x%x!\n",
> -				  type, fence);
> +			xe_log_err(gt, GUC, err,
> +				   "unexpected response %u for FAST_REQ H2G fence 0x%x!\n",
> +				    type, fence);
>  		}
>  
>  		fast_req_report(ct, fence);
> @@ -1683,8 +1692,7 @@ static int parse_g2h_msg(struct xe_guc_ct *ct, u32 *msg, u32 len)
>  
>  	origin = FIELD_GET(GUC_HXG_MSG_0_ORIGIN, hxg[0]);
>  	if (unlikely(origin != GUC_HXG_ORIGIN_GUC)) {
> -		xe_gt_err(gt, "G2H channel broken on read, origin=%u, reset required\n",
> -			  origin);
> +		xe_log_err(gt, GUC, -EBADMSG, "Invalid G2H origin=%u, reset required\n", origin);
>  		CT_DEAD(ct, &ct->ctbs.g2h, PARSE_G2H_ORIGIN);
>  
>  		return -EPROTO;
> @@ -1702,8 +1710,9 @@ static int parse_g2h_msg(struct xe_guc_ct *ct, u32 *msg, u32 len)
>  		ret = parse_g2h_response(ct, msg, len);
>  		break;
>  	default:
> -		xe_gt_err(gt, "G2H channel broken on read, type=%u, reset required\n",
> -			  type);
> +		xe_log_err(gt, GUC, -EOPNOTSUPP,
> +			   "Unexpected G2H message type %u, reset required\n",
> +			   type);
>  		CT_DEAD(ct, &ct->ctbs.g2h, PARSE_G2H_TYPE);
>  
>  		ret = -EOPNOTSUPP;
> @@ -1801,8 +1810,8 @@ static int process_g2h_msg(struct xe_guc_ct *ct, u32 *msg, u32 len)
>  	}
>  
>  	if (ret) {
> -		xe_gt_err(gt, "G2H action %#04x failed (%pe) len %u msg %*ph\n",
> -			  action, ERR_PTR(ret), hxg_len, (int)sizeof(u32) * hxg_len, hxg);
> +		xe_log_err(gt, GUC, ret, "G2H action %#04x failed len %u msg %*ph\n",
> +			   action, hxg_len, (int)sizeof(u32) * hxg_len, hxg);
>  		CT_DEAD(ct, NULL, PROCESS_FAILED);
>  	}
>  
> @@ -1852,7 +1861,7 @@ static int g2h_read(struct xe_guc_ct *ct, u32 *msg, bool fast_path)
>  
>  		if (desc_status) {
>  			err = -EIO;
> -			xe_gt_err(gt, "CT read: non-zero status: %u\n", desc_status);
> +			xe_log_err(gt, GUC, err, "CT read: non-zero status: %u\n", desc_status);
>  			goto corrupted;
>  		}
>  	}
> @@ -1884,16 +1893,16 @@ static int g2h_read(struct xe_guc_ct *ct, u32 *msg, bool fast_path)
>  		if (g2h->info.head > g2h->info.size) {
>  			desc_write(xe, g2h, status, desc_status | GUC_CTB_STATUS_OVERFLOW);
>  			err = -ERANGE;
> -			xe_gt_err(gt, "CT read: head out of range: %u vs %u\n",
> -				  g2h->info.head, g2h->info.size);
> +			xe_log_err(gt, GUC, err, "CT read: head out of range: %u vs %u\n",
> +				   g2h->info.head, g2h->info.size);
>  			goto corrupted;
>  		}
>  
>  		if (desc_tail >= g2h->info.size) {
>  			desc_write(xe, g2h, status, desc_status | GUC_CTB_STATUS_OVERFLOW);
>  			err = -ERANGE;
> -			xe_gt_err(gt, "CT read: invalid tail offset %u >= %u)\n",
> -				  desc_tail, g2h->info.size);
> +			xe_log_err(gt, GUC, err, "CT read: invalid tail offset %u >= %u)\n",
> +				   desc_tail, g2h->info.size);
>  			goto corrupted;
>  		}
>  	}
> @@ -1913,8 +1922,9 @@ static int g2h_read(struct xe_guc_ct *ct, u32 *msg, bool fast_path)
>  	len = FIELD_GET(GUC_CTB_MSG_0_NUM_DWORDS, msg[0]) + GUC_CTB_MSG_MIN_LEN;
>  	if (len > avail) {
>  		err = -EBADMSG;
> -		xe_gt_err(gt, "G2H channel broken on read, avail=%d, len=%d, reset required\n",
> -			  avail, len);
> +		xe_log_err(gt, GUC, err,
> +			   "G2H channel broken on read, avail=%d, len=%d, reset required\n",
> +			   avail, len);
>  		goto corrupted;
>  	}
>  
> @@ -1996,8 +2006,7 @@ static void g2h_fast_path(struct xe_guc_ct *ct, u32 *msg, u32 len)
>  	}
>  
>  	if (ret) {
> -		xe_gt_err(gt, "G2H action 0x%04x failed (%pe)\n",
> -			  action, ERR_PTR(ret));
> +		xe_log_err(gt, GUC, ret, "G2H action 0x%04x failed\n", action);
>  		CT_DEAD(ct, NULL, FAST_G2H);
>  	}
>  }
> @@ -2116,7 +2125,7 @@ static void receive_g2h(struct xe_guc_ct *ct)
>  		mutex_unlock(&ct->lock);
>  
>  		if (unlikely(ret < 0 && g2h_err_is_fatal(ret))) {
> -			xe_gt_err(ct_to_gt(ct), "CT dequeue failed (%pe)\n", ERR_PTR(ret));
> +			xe_log_err(ct_to_gt(ct), GUC, ret, "CT dequeue failed, forcing GT reset\n");
>  			CT_DEAD(ct, NULL, G2H_RECV);
>  			kick_reset(ct);
>  		}


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

* Re: [PATCH v2 4/5] drm/xe/guc: Report major GuC failures using SIGID
  2026-09-02 14:33   ` Michal Wajdeczko
@ 2026-09-02 19:02     ` Umesh Nerlige Ramappa
  0 siblings, 0 replies; 17+ messages in thread
From: Umesh Nerlige Ramappa @ 2026-09-02 19:02 UTC (permalink / raw)
  To: Michal Wajdeczko
  Cc: intel-xe, daniele.ceraolospurio, aravind.iddamsetty,
	mallesh.koujalagi, alan.previn.teres.alexis, julia.filipchuk

On Wed, Sep 02, 2026 at 04:33:52PM +0200, Michal Wajdeczko wrote:
>
>
>On 9/1/2026 11:12 PM, Umesh Nerlige Ramappa wrote:
>> From: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
>>
>> Convert errors during critical GuC flows (init, load, reset, suspend)
>> to use the xe_log_err() helper.
>> While at it, simplify the error log for the GuC load failure to use the
>> cached frequency values instead of fetching them again.
>>
>> v2: split guc_load_done changes to their own patch, use available ret
>> value for reset errors (Michal)
>>
>> Signed-off-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
>> Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
>> Cc: Aravind Iddamsetty <aravind.iddamsetty@intel.com>
>> Cc: Mallesh Koujalagi <mallesh.koujalagi@intel.com>
>> Cc: Alan Previn Teres Alexis <alan.previn.teres.alexis@intel.com>
>> Cc: Julia Filipchuk <julia.filipchuk@intel.com>
>> Cc: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
>> ---
>>  drivers/gpu/drm/xe/xe_guc.c | 19 ++++++++++---------
>>  1 file changed, 10 insertions(+), 9 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/xe/xe_guc.c b/drivers/gpu/drm/xe/xe_guc.c
>> index 5285d4cecbc8..d0ddaaf35274 100644
>> --- a/drivers/gpu/drm/xe/xe_guc.c
>> +++ b/drivers/gpu/drm/xe/xe_guc.c
>> @@ -777,7 +777,7 @@ int xe_guc_init_noalloc(struct xe_guc *guc)
>>  	return 0;
>>
>>  out:
>> -	xe_gt_err(gt, "GuC init failed with %pe\n", ERR_PTR(ret));
>> +	xe_log_err(gt, GUC, ret, "GuC init failed\n");
>
>note that there will be already "GUC: " prefix in the message,
>so maybe just:
>
>	"Initialization error\n"
>
>>  	return ret;
>>  }
>>
>> @@ -845,7 +845,7 @@ int xe_guc_init(struct xe_guc *guc)
>>  	return 0;
>>
>>  out:
>> -	xe_gt_err(gt, "GuC init failed with %pe\n", ERR_PTR(ret));
>> +	xe_log_err(gt, GUC, ret, "GuC init failed\n");
>
>ditto
>
>>  	return ret;
>>  }
>>
>> @@ -998,15 +998,16 @@ int xe_guc_reset(struct xe_guc *guc)
>>
>>  	ret = xe_mmio_wait32(mmio, GDRST, GRDOM_GUC, 0, 5000, &gdrst, false);
>>  	if (ret) {
>> -		xe_gt_err(gt, "GuC reset timed out, GDRST=%#x\n", gdrst);
>> +		xe_log_err(gt, GUC, ret, "GuC reset timed out, GDRST=%#x\n", gdrst);
>
>note that there will be already "GUC: " prefix in the message,
>so maybe just:
>
>	"Reset timeout, GDRST=%#x\n"
>
>>  		goto err_out;
>>  	}
>>
>>  	guc_status = xe_mmio_read32(mmio, GUC_STATUS);
>>  	if (!(guc_status & GS_MIA_IN_RESET)) {
>> -		xe_gt_err(gt, "GuC status: %#x, MIA core expected to be in reset\n",
>> -			  guc_status);
>>  		ret = -EIO;
>> +		xe_log_err(gt, GUC, ret,
>> +			   "GuC status: %#x, MIA core expected to be in reset\n",
>> +			   guc_status);
>
>note that there will be already "GUC: " prefix in the message,
>so maybe just:
>
>	"MIA core not in reset, GUC_STATUS=%#x\n"
>
>>  		goto err_out;
>>  	}
>>
>> @@ -1224,9 +1225,9 @@ static int guc_wait_ucode(struct xe_guc *guc)
>>  	cur_freq = xe_guc_pc_get_cur_freq_fw(guc_pc);
>>
>>  	if (ret || load_result) {
>> -		xe_gt_err(gt, "load failed: status = 0x%08X, time = %lldms, freq = %dMHz (req %dMHz)\n",
>> -			  status, delta_ms, xe_guc_pc_get_act_freq(guc_pc),
>> -			  xe_guc_pc_get_cur_freq_fw(guc_pc));
>> +		xe_log_err(gt, GUC, ret ?: load_result,
>> +			   "load failed: status = 0x%08X, time = %lldms, freq = %dMHz (req %dMHz)\n",
>
>as "status" is a register dump, maybe use the same naming as before:
>
>	"Load failed, GUC_STATUS=%#x
>
>> +			   status, delta_ms, act_freq, cur_freq);
>>  		print_load_status_err(gt, status);
>
>do we want to use xe_log_info() here ^^^ to get a better view?

maybe. Currently print_load_status_err uses xe_gt_err and I am not sure 
changing it to xe_log_info will preserve the behavior. I mean, what if 
info levels are filtered out?

>then maybe above xe_log() could be split and keep only GUC_STATUS
>and move rest (freq) to other logs?

looks like print_load_status_err is just decoding the status, so maybe 
we should not put the freq related stuff into it.

Thanks,
Umesh

>
>>
>>  		return ret ?: load_result;
>> @@ -1463,7 +1464,7 @@ int xe_guc_suspend(struct xe_guc *guc)
>>
>>  	ret = xe_guc_softreset(guc);
>>  	if (ret) {
>> -		xe_gt_err(gt, "GuC suspend failed: %pe\n", ERR_PTR(ret));
>> +		xe_log_err(gt, GUC, ret, "GuC suspend failed\n");
>
>note that there will be already "GUC: " prefix in the message,
>so maybe just:
>
>	"Suspend aborted\n"
>
>>  		return ret;
>>  	}
>>
>

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

* Re: [PATCH v2 2/5] drm/xe/guc: Use different error codes for CT errors
  2026-09-02 14:22   ` Michal Wajdeczko
@ 2026-09-02 22:35     ` Umesh Nerlige Ramappa
  0 siblings, 0 replies; 17+ messages in thread
From: Umesh Nerlige Ramappa @ 2026-09-02 22:35 UTC (permalink / raw)
  To: Michal Wajdeczko
  Cc: intel-xe, Matthew Brost, daniele.ceraolospurio,
	aravind.iddamsetty, mallesh.koujalagi, alan.previn.teres.alexis,
	julia.filipchuk

On Wed, Sep 02, 2026 at 04:22:38PM +0200, Michal Wajdeczko wrote:
>
>
>On 9/1/2026 11:12 PM, Umesh Nerlige Ramappa wrote:
>> Instead of always returning -EPROTO for most errors, use different error
>> codes based on the error type. -EPROTO is retained for the cases that
>> are genuine protocol violations by the GuC.  The remaining cases now
>> report what actually went wrong.
>>
>> receive_g2h() used to escalate to CT_DEAD + kick_reset() by matching the
>> two error codes that dequeue_one_g2h() could return on a fatal error.
>> Invert the check to simplify reset handling.
>>
>> Signed-off-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
>> Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
>> Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
>> Assisted-by: Claude:claude-opus-5
>> ---
>>  drivers/gpu/drm/xe/xe_guc_ct.c | 48 +++++++++++++++++++++++++++++-----
>>  1 file changed, 42 insertions(+), 6 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/xe/xe_guc_ct.c b/drivers/gpu/drm/xe/xe_guc_ct.c
>> index 5c4733da385c..dcd457f38b89 100644
>> --- a/drivers/gpu/drm/xe/xe_guc_ct.c
>> +++ b/drivers/gpu/drm/xe/xe_guc_ct.c
>> @@ -947,6 +947,7 @@ static int h2g_write(struct xe_guc_ct *ct, const u32 *action, u32 len,
>>  	u32 cmd[H2G_CT_HEADERS];
>>  	u32 tail = h2g->info.tail;
>>  	u32 full_len;
>> +	int err;
>>  	struct iosys_map map = IOSYS_MAP_INIT_OFFSET(&h2g->cmds,
>>  							 tail * sizeof(u32));
>>
>> @@ -961,12 +962,14 @@ static int h2g_write(struct xe_guc_ct *ct, const u32 *action, u32 len,
>>
>>  		desc_status = desc_read(xe, h2g, status);
>>  		if (desc_status) {
>> +			err = -EPROTO;
>
>didn't we agree to use -EPIPE for a bad CT descriptor status?
>
>>  			xe_gt_err(gt, "CT write: non-zero status: %u\n", desc_status);
>>  			goto corrupted;
>>  		}
>>
>>  		if (tail > h2g->info.size) {
>>  			desc_write(xe, h2g, status, desc_status | GUC_CTB_STATUS_OVERFLOW);
>> +			err = -EPROTO;
>
>hmm, IMO it would be better to use -EPROTO only for the errors related
>to the actual HXG messages, and for raw CT transport failures use -EPIPE
>
>unless we want to use -EPIPE only for existing problems in descriptor
>and for new error conditions use something else, like -ENFILE?
>but maybe that's overkill as it is fatal anyway, and the message already
>says what went wrong
>
>>  			xe_gt_err(gt, "CT write: tail out of range: %u vs %u\n",
>>  				  tail, h2g->info.size);
>>  			goto corrupted;
>> @@ -974,6 +977,7 @@ static int h2g_write(struct xe_guc_ct *ct, const u32 *action, u32 len,
>>
>>  		if (desc_head >= h2g->info.size) {
>>  			desc_write(xe, h2g, status, desc_status | GUC_CTB_STATUS_OVERFLOW);
>> +			err = -EPIPE;
>
>we should be consistent
>
>	-EPIPE = CT already broken
>vs
>	-EPIPE = all CT channel errors
>
>
>>  			xe_gt_err(gt, "CT write: invalid head offset %u >= %u)\n",
>>  				  desc_head, h2g->info.size);
>>  			goto corrupted;
>> @@ -1591,14 +1595,19 @@ static int parse_g2h_response(struct xe_guc_ct *ct, u32 *msg, u32 len)
>>  	 * failure to trigger a reset.
>>  	 */
>>  	if (fence & CT_SEQNO_UNTRACKED) {
>> -		if (type == GUC_HXG_TYPE_RESPONSE_FAILURE)
>> +		int err;
>> +
>> +		if (type == GUC_HXG_TYPE_RESPONSE_FAILURE) {
>> +			err = -EBADE;
>
>I'm little concerned that there was no other proposal here ;)
>
>>  			xe_gt_err(gt, "FAST_REQ H2G fence 0x%x failed! e=0x%x, h=%u\n",
>>  				  fence,
>>  				  FIELD_GET(GUC_HXG_FAILURE_MSG_0_ERROR, hxg[0]),
>>  				  FIELD_GET(GUC_HXG_FAILURE_MSG_0_HINT, hxg[0]));
>> -		else
>> +		} else {
>> +			err = -EPROTO;
>>  			xe_gt_err(gt, "unexpected response %u for FAST_REQ H2G fence 0x%x!\n",
>>  				  type, fence);
>> +		}
>>
>>  		fast_req_report(ct, fence);
>>
>> @@ -1608,7 +1617,7 @@ static int parse_g2h_response(struct xe_guc_ct *ct, u32 *msg, u32 len)
>>
>>  		CT_DEAD(ct, NULL, PARSE_G2H_RESPONSE);
>>
>> -		return -EPROTO;
>> +		return err;
>>  	}
>>
>>  	/* don't erase as we still expect a final response with the same fence */
>> @@ -1809,10 +1818,12 @@ static int g2h_read(struct xe_guc_ct *ct, u32 *msg, bool fast_path)
>>  	s32 avail;
>>  	u32 action;
>>  	u32 *hxg;
>> +	int err;
>>
>>  	xe_gt_assert(gt, xe_guc_ct_initialized(ct));
>>  	lockdep_assert_held(&ct->fast_lock);
>>
>> +	/* Keep in sync with g2h_err_is_fatal() */
>>  	if (xe_device_wedged(xe))
>>  		return -ENOTRECOVERABLE;
>>
>> @@ -1840,6 +1851,7 @@ static int g2h_read(struct xe_guc_ct *ct, u32 *msg, bool fast_path)
>>  		}
>>
>>  		if (desc_status) {
>> +			err = -EIO;
>
>earlier in this patch in h2g_write you used -EPROTO for the similar issue
>but I would go with -EPIPE here
>>  			xe_gt_err(gt, "CT read: non-zero status: %u\n", desc_status);
>>  			goto corrupted;
>>  		}
>> @@ -1871,6 +1883,7 @@ static int g2h_read(struct xe_guc_ct *ct, u32 *msg, bool fast_path)
>>
>>  		if (g2h->info.head > g2h->info.size) {
>>  			desc_write(xe, g2h, status, desc_status | GUC_CTB_STATUS_OVERFLOW);
>> +			err = -ERANGE;
>
>-EPIPE if we want to treat all CT descriptor problems in the same way
>
>>  			xe_gt_err(gt, "CT read: head out of range: %u vs %u\n",
>>  				  g2h->info.head, g2h->info.size);
>>  			goto corrupted;
>> @@ -1878,6 +1891,7 @@ static int g2h_read(struct xe_guc_ct *ct, u32 *msg, bool fast_path)
>>
>>  		if (desc_tail >= g2h->info.size) {
>>  			desc_write(xe, g2h, status, desc_status | GUC_CTB_STATUS_OVERFLOW);
>> +			err = -ERANGE;
>
>ditto
>
>>  			xe_gt_err(gt, "CT read: invalid tail offset %u >= %u)\n",
>>  				  desc_tail, g2h->info.size);
>>  			goto corrupted;
>> @@ -1898,6 +1912,7 @@ static int g2h_read(struct xe_guc_ct *ct, u32 *msg, bool fast_path)
>>  			   sizeof(u32));
>>  	len = FIELD_GET(GUC_CTB_MSG_0_NUM_DWORDS, msg[0]) + GUC_CTB_MSG_MIN_LEN;
>>  	if (len > avail) {
>> +		err = -EBADMSG;
>>  		xe_gt_err(gt, "G2H channel broken on read, avail=%d, len=%d, reset required\n",
>>  			  avail, len);
>>  		goto corrupted;
>> @@ -1950,7 +1965,7 @@ static int g2h_read(struct xe_guc_ct *ct, u32 *msg, bool fast_path)
>>
>>  corrupted:
>>  	CT_DEAD(ct, &ct->ctbs.g2h, G2H_READ);
>> -	return -EPROTO;
>> +	return err;
>>  }
>>
>>  static void g2h_fast_path(struct xe_guc_ct *ct, u32 *msg, u32 len)
>> @@ -2042,6 +2057,27 @@ static int dequeue_one_g2h(struct xe_guc_ct *ct)
>>  	return 1;
>>  }
>>
>> +/*
>> + * Errors reported by dequeue_one_g2h() come in two flavours: either the channel
>> + * is simply not available right now, which is expected and handled gracefully,
>> + * or the channel state or the message itself is inconsistent, in which case the
>> + * only way forward is to declare the CT dead and reset the GuC. Since the
>> + * former is a short and well known list, check against that and treat anything
>> + * else as fatal, so that new error codes don't silently escape the escalation.
>> + */
>> +static bool g2h_err_is_fatal(int err)
>> +{
>> +	switch (err) {
>> +	case -ENOTRECOVERABLE:	/* device wedged */
>> +	case -ENODEV:		/* CT disabled */
>> +	case -ECANCELED:	/* CT stopped */
>> +	case -EPIPE:		/* CT already declared broken */

I addressed the above in my WIP patches, and I am here now:
>
>btw, there is a different order of checks in
>
>	__guc_ct_send_locked()
>		if (xe_device_wedged(ct_to_xe(ct))) {
>		if (unlikely(ct->ctbs.h2g.info.broken)) {
>		if (ct->state == XE_GUC_CT_STATE_DISABLED) {
>		if (ct->state == XE_GUC_CT_STATE_STOPPED || xe_gt_recovery_pending(gt)) {
>
>vs
>
>	g2h_read
>		if (xe_device_wedged(xe))
>		if (ct->state == XE_GUC_CT_STATE_DISABLED)
>		if (ct->state == XE_GUC_CT_STATE_STOPPED)
>		if (g2h->info.broken)

I can fix the order in __guc_ct_send_locked to match g2h_read.
>	
>and IMO we should revisit usage of -ECANCELED as it should be used only
>for already sent H2G which wait for G2H but were cancelled due to a reset

maybe. I don't see a lot of ROI for mapping all these different 
scenarios to specific error codes. Final debug will still depend on the 
error messages and the specific CT states captured in CT_DEAD. IMO, CT 
disabled/stopped/broken can all be grouped into ENODEV and we can add a 
log stating the specific reason.

I feel it will be better to reduce the various errors instead of adding 
more (like you said - use EPROTO for HXG and EPIPE for CT errors). It 
would be easier to maintain.

>
>if someone is still trying to send H2G when CT is already stopped/
>then we should use different code, maybe -EPERM ?

or maybe just squash it into ENODEV

>
>-ENOTRECOVERABLE	/* device already wedged */
>-ENODEV			/* CT disabled */
>-EPERM			/* CT already stopped */
>-EPROTO			/* CT message broken */    => reset => stop/start => enabled|wedged
>-EPIPE			/* CT channel broken */	   => reset => stop/start => enabled|wedged
>-EDEADLK		/* CT deadlock detected */ => reset => stop/start => enabled|wedged
>-ECANCELED		/* CT stopped/GT reset */
>
>
>
>> +		return false;
>> +	default:
>> +		return true;
>
>are we sure only all other errors need to be recovered immediately by
>the full GT reset? not the other way around?

Just preserving the existing behavior of when the kick_reset() kicks 
in!!

>
>we should kick reset on the first report of -EPROTO/-EPIPE (when we detect broken
>HXG message or CTB descriptor), subsequent calls to send() shall return new
>either new errors, like -EPERM, as CTB should be already STOPPED, or -EPIPE
>as we might still wait for the reset flow, but CTB is already marked BROKEN.

Agree, reset should happen only once.

>
>and I'm not sure that reset would help for -EOPNOTSUPP, as it is unlikely
>that driver will suddenly start supporting some new messages ...

That is exactly what I was saying earlier. These errors are misplaced.  
The EOPNOTSUPP is returned when we are trying to process a G2H and don't 
recognize the MSG type. The error says ""G2H channel broken on read, 
type=%u, reset required\n", but the error returned is EOPNOTSUPP. It's 
not intuitive. I would just make it EPIPE (going by the categorization 
you recommended earlier...assuming I understood it correctly).

>
>> +	}
>> +}
>> +
>>  static void receive_g2h(struct xe_guc_ct *ct)
>>  {
>>  	bool ongoing;
>> @@ -2079,8 +2115,8 @@ static void receive_g2h(struct xe_guc_ct *ct)
>>  		ret = dequeue_one_g2h(ct);
>>  		mutex_unlock(&ct->lock);
>>
>> -		if (unlikely(ret == -EPROTO || ret == -EOPNOTSUPP)) {
>> -			xe_gt_err(ct_to_gt(ct), "CT dequeue failed: %d\n", ret);
>> +		if (unlikely(ret < 0 && g2h_err_is_fatal(ret))) {
>> +			xe_gt_err(ct_to_gt(ct), "CT dequeue failed (%pe)\n", ERR_PTR(ret));
>
>btw, shouldn't we always report an error and just kick reset on fatal?
>or maybe even move kick_reset() somewhere else we know it is something
>new and fatal (like detected corrupted descriptor) ?

I think this check is trying to avoid a duplicate kick_reset()/CT_DEAD 
since the caller is bailing out on ENOTRECOVERABLE, ENODEV, ECANCELED 
etc.

Thanks,
Umesh

>
>>  			CT_DEAD(ct, NULL, G2H_RECV);
>>  			kick_reset(ct);
>>  		}
>

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

* Re: [PATCH v2 5/5] drm/xe/guc: Report errors that cause a CT shutdown using SIGID
  2026-09-02 14:45   ` Michal Wajdeczko
@ 2026-09-03 22:21     ` Umesh Nerlige Ramappa
  0 siblings, 0 replies; 17+ messages in thread
From: Umesh Nerlige Ramappa @ 2026-09-03 22:21 UTC (permalink / raw)
  To: Michal Wajdeczko
  Cc: intel-xe, Rodrigo Vivi, Matthew Brost, daniele.ceraolospurio,
	aravind.iddamsetty, mallesh.koujalagi, alan.previn.teres.alexis,
	julia.filipchuk

I forgot to include the list on one of the responses and it branched 
off. Here it is:

On Wed, Sep 02, 2026 at 04:45:22PM +0200, Michal Wajdeczko wrote:
>
>
>On 9/1/2026 11:12 PM, Umesh Nerlige Ramappa wrote:
>> From: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
>>
>> Convert any errors that can cause the CT to be declared as dead to
>> use the xe_log_err() helper. Errors that are escalated to the callers
>> are left for the caller to report with SIGID if needed.
>> While at it, update some of the error messages to make what went wrong
>> clearer.
>>
>> v2: use different error codes for different errors, better messages (Michal)
>>
>> Signed-off-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
>> Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
>> Cc: Aravind Iddamsetty <aravind.iddamsetty@intel.com>
>> Cc: Mallesh Koujalagi <mallesh.koujalagi@intel.com>
>> Cc: Alan Previn Teres Alexis <alan.previn.teres.alexis@intel.com>
>> Cc: Julia Filipchuk <julia.filipchuk@intel.com>
>> Assisted-by: Claude:claude-opus-5
>> ---
>>  drivers/gpu/drm/xe/xe_guc_ct.c | 89 +++++++++++++++++++---------------
>>  1 file changed, 49 insertions(+), 40 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/xe/xe_guc_ct.c b/drivers/gpu/drm/xe/xe_guc_ct.c
>> index dcd457f38b89..cf347f960166 100644
>> --- a/drivers/gpu/drm/xe/xe_guc_ct.c
>> +++ b/drivers/gpu/drm/xe/xe_guc_ct.c
>> @@ -30,6 +30,7 @@
>>  #include "xe_guc_relay.h"
>>  #include "xe_guc_submit.h"
>>  #include "xe_guc_tlb_inval.h"
>> +#include "xe_log.h"
>>  #include "xe_map.h"
>>  #include "xe_page_reclaim.h"
>>  #include "xe_pm.h"
>> @@ -679,7 +680,7 @@ static int __xe_guc_ct_start(struct xe_guc_ct *ct, bool needs_register)
>>  	return 0;
>>
>>  err_out:
>> -	xe_gt_err(gt, "Failed to enable GuC CT (%pe)\n", ERR_PTR(err));
>> +	xe_log_err(gt, GUC, err, "Failed to enable CT\n");
>
>just wondering, if maybe we should add new component
>
>	define(DRIVER, 8, GUCCT, RUNTIME_FW, "GuC CTB communication")		\
>or	define(DRIVER, 8, CTB, RUNTIME_FW, "GuC CTB communication")		\
>
>so the messages will look like:
>
>	[drm] *ERROR* SIGID=104 (-EXXXX) Tile0: GT1: CTB: Initialization error
>	[drm] *ERROR* SIGID=104 (-EPIPE) Tile0: GT1: CTB: invalid head offset ...
>

[Umesh]
CTB itself does not sound like a component in itself, so I would lean on 
just having one component for all of GuC and just use CTB in the logs 
where relevant.

[Michal]
existing messages were like:

      [drm] *ERROR* Tile0: GT1: CT: Initialization error (-EXXXX)
      [drm] *ERROR* Tile0: GT1: CT: invalid head offset ...

so IMO adding CTB tag as official component isn't that bad idea

or we can add GUC_CTB if CTB alone is not enough

note that the SIGID will be the same as in plain GUC component it is 
just for a better/more friendly printout

[Umesh]
I just added a CT: prefix to the log strings. I agree that it can be 
hidden into a new TAG, but I am not clear on what defines a component. I 
thought it is a logical SW entity - like GuC (since everything in KMD is 
a GuC interface). CT is just a means of using the interface.

Thanks,
Umesh

>
>>  	CT_DEAD(ct, NULL, SETUP);
>>
>>  	return err;
>> @@ -803,8 +804,9 @@ static bool h2g_has_room(struct xe_guc_ct *ct, u32 cmd_len)
>>
>>  			desc_write(xe, h2g, status, desc_status | GUC_CTB_STATUS_OVERFLOW);
>>
>> -			xe_gt_err(ct_to_gt(ct), "CT: invalid head offset %u >= %u)\n",
>> -				  h2g->info.head, h2g->info.size);
>> +			xe_log_err(ct_to_gt(ct), GUC, -EPIPE,
>> +				   "CT: invalid head offset %u >= %u)\n",
>> +				   h2g->info.head, h2g->info.size);
>>  			CT_DEAD(ct, h2g, H2G_HAS_ROOM);
>>  			return false;
>>  		}
>> @@ -873,12 +875,13 @@ static void __g2h_release_space(struct xe_guc_ct *ct, u32 g2h_len)
>>  	bad |= !ct->g2h_outstanding;
>>
>>  	if (bad) {
>> -		xe_gt_err(ct_to_gt(ct), "Invalid G2H release: %d + %d vs %d - %d -> %d vs %d, outstanding = %d!\n",
>> -			  ct->ctbs.g2h.info.space, g2h_len,
>> -			  ct->ctbs.g2h.info.size, ct->ctbs.g2h.info.resv_space,
>> -			  ct->ctbs.g2h.info.space + g2h_len,
>> -			  ct->ctbs.g2h.info.size - ct->ctbs.g2h.info.resv_space,
>> -			  ct->g2h_outstanding);
>> +		xe_log_err(ct_to_gt(ct), GUC, -ETOOMANYREFS,
>> +			   "Invalid G2H release: %d + %d vs %d - %d -> %d vs %d, outstanding = %d!\n",
>> +			   ct->ctbs.g2h.info.space, g2h_len,
>> +			   ct->ctbs.g2h.info.size, ct->ctbs.g2h.info.resv_space,
>> +			   ct->ctbs.g2h.info.space + g2h_len,
>> +			   ct->ctbs.g2h.info.size - ct->ctbs.g2h.info.resv_space,
>> +			   ct->g2h_outstanding);
>>  		CT_DEAD(ct, &ct->ctbs.g2h, G2H_RELEASE);
>>  		return;
>>  	}
>> @@ -963,23 +966,26 @@ static int h2g_write(struct xe_guc_ct *ct, const u32 *action, u32 len,
>>  		desc_status = desc_read(xe, h2g, status);
>>  		if (desc_status) {
>>  			err = -EPROTO;
>> -			xe_gt_err(gt, "CT write: non-zero status: %u\n", desc_status);
>> +			xe_log_err(gt, GUC, err,
>> +				   "CT write: non-zero status: %u\n", desc_status);
>>  			goto corrupted;
>>  		}
>>
>>  		if (tail > h2g->info.size) {
>>  			desc_write(xe, h2g, status, desc_status | GUC_CTB_STATUS_OVERFLOW);
>>  			err = -EPROTO;
>> -			xe_gt_err(gt, "CT write: tail out of range: %u vs %u\n",
>> -				  tail, h2g->info.size);
>> +			xe_log_err(gt, GUC, err,
>> +				   "CT write: tail out of range: %u vs %u\n",
>> +				   tail, h2g->info.size);
>>  			goto corrupted;
>>  		}
>>
>>  		if (desc_head >= h2g->info.size) {
>>  			desc_write(xe, h2g, status, desc_status | GUC_CTB_STATUS_OVERFLOW);
>>  			err = -EPIPE;
>> -			xe_gt_err(gt, "CT write: invalid head offset %u >= %u)\n",
>> -				  desc_head, h2g->info.size);
>> +			xe_log_err(gt, GUC, err,
>> +				   "CT write: invalid head offset %u >= %u)\n",
>> +				   desc_head, h2g->info.size);
>>  			goto corrupted;
>>  		}
>>  	}
>> @@ -1224,7 +1230,7 @@ static int guc_ct_send_locked(struct xe_guc_ct *ct, const u32 *action, u32 len,
>>  	return ret;
>>
>>  broken:
>> -	xe_gt_err(gt, "No forward process on H2G, reset required\n");
>> +	xe_log_err(gt, GUC, -EDEADLK, "No forward process on H2G, reset required\n");
>>  	CT_DEAD(ct, &ct->ctbs.h2g, DEADLOCK);
>>
>>  	return -EDEADLK;
>> @@ -1562,11 +1568,12 @@ static int guc_crash_process_msg(struct xe_guc_ct *ct, u32 action)
>>  	struct xe_gt *gt = ct_to_gt(ct);
>>
>>  	if (action == XE_GUC_ACTION_NOTIFY_CRASH_DUMP_POSTED)
>> -		xe_gt_err(gt, "GuC Crash dump notification\n");
>> +		xe_log_err(gt, GUC, -EHOSTDOWN, "GuC Crash dump notification\n");
>>  	else if (action == XE_GUC_ACTION_NOTIFY_EXCEPTION)
>> -		xe_gt_err(gt, "GuC Exception notification\n");
>> +		xe_log_err(gt, GUC, -EHOSTDOWN, "GuC Exception notification\n");
>>  	else
>> -		xe_gt_err(gt, "Unknown GuC crash notification: 0x%04X\n", action);
>> +		xe_log_err(gt, GUC, -EHOSTDOWN,
>> +			   "Unknown GuC crash notification: 0x%04X\n", action);
>
>note that for the GUC component there will be "GUC: " prefix added by the xe_log()
>
>	"Crash dump notification\n"
>	"Exception notification\n"
>	"Unknown crash notification\n"
>
>
>>
>>  	CT_DEAD(ct, NULL, CRASH);
>>
>> @@ -1599,14 +1606,16 @@ static int parse_g2h_response(struct xe_guc_ct *ct, u32 *msg, u32 len)
>>
>>  		if (type == GUC_HXG_TYPE_RESPONSE_FAILURE) {
>>  			err = -EBADE;
>> -			xe_gt_err(gt, "FAST_REQ H2G fence 0x%x failed! e=0x%x, h=%u\n",
>> -				  fence,
>> -				  FIELD_GET(GUC_HXG_FAILURE_MSG_0_ERROR, hxg[0]),
>> -				  FIELD_GET(GUC_HXG_FAILURE_MSG_0_HINT, hxg[0]));
>> +			xe_log_err(gt, GUC, err,
>> +				   "FAST_REQ H2G fence 0x%x failed! e=0x%x, h=%u\n",
>> +				   fence,
>> +				   FIELD_GET(GUC_HXG_FAILURE_MSG_0_ERROR, hxg[0]),
>> +				   FIELD_GET(GUC_HXG_FAILURE_MSG_0_HINT, hxg[0]));
>>  		} else {
>>  			err = -EPROTO;
>> -			xe_gt_err(gt, "unexpected response %u for FAST_REQ H2G fence 0x%x!\n",
>> -				  type, fence);
>> +			xe_log_err(gt, GUC, err,
>> +				   "unexpected response %u for FAST_REQ H2G fence 0x%x!\n",
>> +				    type, fence);
>>  		}
>>
>>  		fast_req_report(ct, fence);
>> @@ -1683,8 +1692,7 @@ static int parse_g2h_msg(struct xe_guc_ct *ct, u32 *msg, u32 len)
>>
>>  	origin = FIELD_GET(GUC_HXG_MSG_0_ORIGIN, hxg[0]);
>>  	if (unlikely(origin != GUC_HXG_ORIGIN_GUC)) {
>> -		xe_gt_err(gt, "G2H channel broken on read, origin=%u, reset required\n",
>> -			  origin);
>> +		xe_log_err(gt, GUC, -EBADMSG, "Invalid G2H origin=%u, reset required\n", origin);
>>  		CT_DEAD(ct, &ct->ctbs.g2h, PARSE_G2H_ORIGIN);
>>
>>  		return -EPROTO;
>> @@ -1702,8 +1710,9 @@ static int parse_g2h_msg(struct xe_guc_ct *ct, u32 *msg, u32 len)
>>  		ret = parse_g2h_response(ct, msg, len);
>>  		break;
>>  	default:
>> -		xe_gt_err(gt, "G2H channel broken on read, type=%u, reset required\n",
>> -			  type);
>> +		xe_log_err(gt, GUC, -EOPNOTSUPP,
>> +			   "Unexpected G2H message type %u, reset required\n",
>> +			   type);
>>  		CT_DEAD(ct, &ct->ctbs.g2h, PARSE_G2H_TYPE);
>>
>>  		ret = -EOPNOTSUPP;
>> @@ -1801,8 +1810,8 @@ static int process_g2h_msg(struct xe_guc_ct *ct, u32 *msg, u32 len)
>>  	}
>>
>>  	if (ret) {
>> -		xe_gt_err(gt, "G2H action %#04x failed (%pe) len %u msg %*ph\n",
>> -			  action, ERR_PTR(ret), hxg_len, (int)sizeof(u32) * hxg_len, hxg);
>> +		xe_log_err(gt, GUC, ret, "G2H action %#04x failed len %u msg %*ph\n",
>> +			   action, hxg_len, (int)sizeof(u32) * hxg_len, hxg);
>>  		CT_DEAD(ct, NULL, PROCESS_FAILED);
>>  	}
>>
>> @@ -1852,7 +1861,7 @@ static int g2h_read(struct xe_guc_ct *ct, u32 *msg, bool fast_path)
>>
>>  		if (desc_status) {
>>  			err = -EIO;
>> -			xe_gt_err(gt, "CT read: non-zero status: %u\n", desc_status);
>> +			xe_log_err(gt, GUC, err, "CT read: non-zero status: %u\n", desc_status);
>>  			goto corrupted;
>>  		}
>>  	}
>> @@ -1884,16 +1893,16 @@ static int g2h_read(struct xe_guc_ct *ct, u32 *msg, bool fast_path)
>>  		if (g2h->info.head > g2h->info.size) {
>>  			desc_write(xe, g2h, status, desc_status | GUC_CTB_STATUS_OVERFLOW);
>>  			err = -ERANGE;
>> -			xe_gt_err(gt, "CT read: head out of range: %u vs %u\n",
>> -				  g2h->info.head, g2h->info.size);
>> +			xe_log_err(gt, GUC, err, "CT read: head out of range: %u vs %u\n",
>> +				   g2h->info.head, g2h->info.size);
>>  			goto corrupted;
>>  		}
>>
>>  		if (desc_tail >= g2h->info.size) {
>>  			desc_write(xe, g2h, status, desc_status | GUC_CTB_STATUS_OVERFLOW);
>>  			err = -ERANGE;
>> -			xe_gt_err(gt, "CT read: invalid tail offset %u >= %u)\n",
>> -				  desc_tail, g2h->info.size);
>> +			xe_log_err(gt, GUC, err, "CT read: invalid tail offset %u >= %u)\n",
>> +				   desc_tail, g2h->info.size);
>>  			goto corrupted;
>>  		}
>>  	}
>> @@ -1913,8 +1922,9 @@ static int g2h_read(struct xe_guc_ct *ct, u32 *msg, bool fast_path)
>>  	len = FIELD_GET(GUC_CTB_MSG_0_NUM_DWORDS, msg[0]) + GUC_CTB_MSG_MIN_LEN;
>>  	if (len > avail) {
>>  		err = -EBADMSG;
>> -		xe_gt_err(gt, "G2H channel broken on read, avail=%d, len=%d, reset required\n",
>> -			  avail, len);
>> +		xe_log_err(gt, GUC, err,
>> +			   "G2H channel broken on read, avail=%d, len=%d, reset required\n",
>> +			   avail, len);
>>  		goto corrupted;
>>  	}
>>
>> @@ -1996,8 +2006,7 @@ static void g2h_fast_path(struct xe_guc_ct *ct, u32 *msg, u32 len)
>>  	}
>>
>>  	if (ret) {
>> -		xe_gt_err(gt, "G2H action 0x%04x failed (%pe)\n",
>> -			  action, ERR_PTR(ret));
>> +		xe_log_err(gt, GUC, ret, "G2H action 0x%04x failed\n", action);
>>  		CT_DEAD(ct, NULL, FAST_G2H);
>>  	}
>>  }
>> @@ -2116,7 +2125,7 @@ static void receive_g2h(struct xe_guc_ct *ct)
>>  		mutex_unlock(&ct->lock);
>>
>>  		if (unlikely(ret < 0 && g2h_err_is_fatal(ret))) {
>> -			xe_gt_err(ct_to_gt(ct), "CT dequeue failed (%pe)\n", ERR_PTR(ret));
>> +			xe_log_err(ct_to_gt(ct), GUC, ret, "CT dequeue failed, forcing GT reset\n");
>>  			CT_DEAD(ct, NULL, G2H_RECV);
>>  			kick_reset(ct);
>>  		}
>

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

end of thread, other threads:[~2026-09-03 22:21 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-09-01 21:12 [PATCH v2 0/5] Use SIG_ID logs for GuC component Umesh Nerlige Ramappa
2026-09-01 21:12 ` [PATCH v2 1/5] drm/xe/guc: Use different error codes for GuC load errors Umesh Nerlige Ramappa
2026-09-02 12:56   ` Michal Wajdeczko
2026-09-01 21:12 ` [PATCH v2 2/5] drm/xe/guc: Use different error codes for CT errors Umesh Nerlige Ramappa
2026-09-02 14:22   ` Michal Wajdeczko
2026-09-02 22:35     ` Umesh Nerlige Ramappa
2026-09-01 21:12 ` [PATCH v2 3/5] drm/xe/uc: Report DMA failure using SIGID Umesh Nerlige Ramappa
2026-09-01 21:12 ` [PATCH v2 4/5] drm/xe/guc: Report major GuC failures " Umesh Nerlige Ramappa
2026-09-02 14:33   ` Michal Wajdeczko
2026-09-02 19:02     ` Umesh Nerlige Ramappa
2026-09-01 21:12 ` [PATCH v2 5/5] drm/xe/guc: Report errors that cause a CT shutdown " Umesh Nerlige Ramappa
2026-09-02 14:45   ` Michal Wajdeczko
2026-09-03 22:21     ` Umesh Nerlige Ramappa
2026-09-01 21:18 ` ✗ CI.checkpatch: warning for Use SIG_ID logs for GuC component Patchwork
2026-09-01 21:20 ` ✓ CI.KUnit: success " Patchwork
2026-09-02  6:57 ` ✓ Xe.CI.BAT: " Patchwork
2026-09-02 12:05 ` ✓ Xe.CI.FULL: " Patchwork

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox