Intel-XE Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3 0/2] VF double migration
@ 2025-11-07 14:10 Satyanarayana K V P
  2025-11-07 14:10 ` [PATCH v3 1/2] drm/xe/vf: Introduce RESFIX start marker support Satyanarayana K V P
                   ` (4 more replies)
  0 siblings, 5 replies; 8+ messages in thread
From: Satyanarayana K V P @ 2025-11-07 14:10 UTC (permalink / raw)
  To: intel-xe; +Cc: Satyanarayana K V P

In scenarios involving double migration, the VF KMD may encounter
situations where it is instructed to re-migrate before having the
opportunity to send RESFIX_DONE for the initial migration. This can occur
when the fix-up for the prior migration is still underway, but the VF KMD
is migrated again.

Consequently, this may lead to the possibility of sending two migration
notifications (i.e., pending fix-up for the first migration and a second
notification for the new migration). Upon receiving the first RES_FIX
notification, the GuC will resume VF submission on the GPU, potentially
resulting in undefined behavior, such as system hangs or crashes.

To avoid these hangs, a new VF2GUC action `VF2GUC_NOTIFY_RESFIX_START` is
sent along with marker and when GUC receives the same marker with
`VF2GUC_NOTIFY_RESFIX_DONE`action, it starts scheduling work loads from VF.

---
V2 -> V3:
- Fixed review comments (Michal W).
- Updated commit message.
- Fixed CI.BAT issues.
- Added helper function to assert on unsupported GUC versions.
- Added debugfs entries to test VF double migration.

V1 -> V2:
- Squashed "Enable RESFIX start marker only on supported GUC
versions" commit into a single commit. (Matt B)
- Use fault injection for testing VF double  migration feature (Matt B).


Satyanarayana K V P (2):
  drm/xe/vf: Introduce RESFIX start marker support
  drm/xe/vf: Add debugfs entries to test VF double migration

 .../gpu/drm/xe/abi/guc_actions_sriov_abi.h    |  40 +++++++
 drivers/gpu/drm/xe/xe_gt_sriov_vf.c           | 111 ++++++++++++++++--
 drivers/gpu/drm/xe/xe_gt_sriov_vf_debugfs.c   |   5 +
 drivers/gpu/drm/xe/xe_gt_sriov_vf_types.h     |  13 ++
 drivers/gpu/drm/xe/xe_sriov_vf.c              |  46 +++++++-
 drivers/gpu/drm/xe/xe_sriov_vf_types.h        |   5 +
 6 files changed, 211 insertions(+), 9 deletions(-)

-- 
2.51.0


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

* [PATCH v3 1/2] drm/xe/vf: Introduce RESFIX start marker support
  2025-11-07 14:10 [PATCH v3 0/2] VF double migration Satyanarayana K V P
@ 2025-11-07 14:10 ` Satyanarayana K V P
  2025-11-11 15:06   ` Michal Wajdeczko
  2025-11-07 14:10 ` [PATCH v3 2/2] drm/xe/vf: Add debugfs entries to test VF double migration Satyanarayana K V P
                   ` (3 subsequent siblings)
  4 siblings, 1 reply; 8+ messages in thread
From: Satyanarayana K V P @ 2025-11-07 14:10 UTC (permalink / raw)
  To: intel-xe; +Cc: Satyanarayana K V P, Michal Wajdeczko, Matthew Brost, Tomasz Lis

In scenarios involving double migration, the VF KMD may encounter
situations where it is instructed to re-migrate before having the
opportunity to send RESFIX_DONE for the initial migration. This can occur
when the fix-up for the prior migration is still underway, but the VF KMD
is migrated again.

Consequently, this may lead to the possibility of sending two migration
notifications (i.e., pending fix-up for the first migration and a second
notification for the new migration). Upon receiving the first RES_FIX
notification, the GuC will resume VF submission on the GPU, potentially
resulting in undefined behavior, such as system hangs or crashes.

To avoid this, post migration, a marker is sent to the GUC prior to the
start of resource fixups to indicate start of resource fixups. The same
marker is sent along with RESFIX_DONE notification so that GUC can avoid
submitting jobs to HW in case of double migration.

Signed-off-by: Satyanarayana K V P <satyanarayana.k.v.p@intel.com>
Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
Cc: Matthew Brost <matthew.brost@intel.com>
Cc: Tomasz Lis <tomasz.lis@intel.com>

---
V2 -> V3:
- Fixed review comments (Michal W).
- Updated commit message.
- Fixed CI.BAT issues.
- Added helper function to assert on unsupported GUC versions.

V1 -> V2:
- Squashed "Enable RESFIX start marker only on supported GUC
versions" commit into a single commit. (Matt B)
---
 .../gpu/drm/xe/abi/guc_actions_sriov_abi.h    | 40 ++++++++
 drivers/gpu/drm/xe/xe_gt_sriov_vf.c           | 98 +++++++++++++++++--
 drivers/gpu/drm/xe/xe_gt_sriov_vf_types.h     |  5 +
 drivers/gpu/drm/xe/xe_sriov_vf.c              | 46 ++++++++-
 drivers/gpu/drm/xe/xe_sriov_vf_types.h        |  5 +
 5 files changed, 185 insertions(+), 9 deletions(-)

diff --git a/drivers/gpu/drm/xe/abi/guc_actions_sriov_abi.h b/drivers/gpu/drm/xe/abi/guc_actions_sriov_abi.h
index 0b28659d94e9..8bc74cbc1c35 100644
--- a/drivers/gpu/drm/xe/abi/guc_actions_sriov_abi.h
+++ b/drivers/gpu/drm/xe/abi/guc_actions_sriov_abi.h
@@ -656,4 +656,44 @@
 #define PF2GUC_SAVE_RESTORE_VF_RESPONSE_MSG_LEN		GUC_HXG_RESPONSE_MSG_MIN_LEN
 #define PF2GUC_SAVE_RESTORE_VF_RESPONSE_MSG_0_USED	GUC_HXG_RESPONSE_MSG_0_DATA0
 
+/**
+ * DOC: VF2GUC_NOTIFY_RESFIX_START
+ *
+ * This action is used by VF to notify the GuC that the VF KMD will be starting
+ * post-migration recovery steps.
+ *
+ * This message must be sent as `MMIO HXG Message`_.
+ *
+ * Available since GuC version 70.54.0 (VF 1.27.0)
+ *
+ *  +---+-------+--------------------------------------------------------------+
+ *  |   | Bits  | Description                                                  |
+ *  +===+=======+==============================================================+
+ *  | 0 |    31 | ORIGIN = GUC_HXG_ORIGIN_HOST_                                |
+ *  |   +-------+--------------------------------------------------------------+
+ *  |   | 30:28 | TYPE = GUC_HXG_TYPE_REQUEST_                                 |
+ *  |   +-------+--------------------------------------------------------------+
+ *  |   | 27:16 | DATA0 = MARKER                                               |
+ *  |   +-------+--------------------------------------------------------------+
+ *  |   |  15:0 | ACTION = _`GUC_ACTION_VF2GUC_NOTIFY_RESFIX_START` = 0x550F   |
+ *  +---+-------+--------------------------------------------------------------+
+ *
+ *  +---+-------+--------------------------------------------------------------+
+ *  |   | Bits  | Description                                                  |
+ *  +===+=======+==============================================================+
+ *  | 0 |    31 | ORIGIN = GUC_HXG_ORIGIN_GUC_                                 |
+ *  |   +-------+--------------------------------------------------------------+
+ *  |   | 30:28 | TYPE = GUC_HXG_TYPE_RESPONSE_SUCCESS_                        |
+ *  |   +-------+--------------------------------------------------------------+
+ *  |   |  27:0 | DATA0 = MBZ                                                  |
+ *  +---+-------+--------------------------------------------------------------+
+ */
+#define GUC_ACTION_VF2GUC_NOTIFY_RESFIX_START		0x550Fu
+
+#define VF2GUC_NOTIFY_RESFIX_START_REQUEST_MSG_LEN	GUC_HXG_REQUEST_MSG_MIN_LEN
+#define VF2GUC_NOTIFY_RESFIX_START_REQUEST_MSG_0_MARKER	GUC_HXG_REQUEST_MSG_0_DATA0
+
+#define VF2GUC_NOTIFY_RESFIX_START_RESPONSE_MSG_LEN	GUC_HXG_RESPONSE_MSG_MIN_LEN
+#define VF2GUC_NOTIFY_RESFIX_START_RESPONSE_MSG_0_MBZ	GUC_HXG_RESPONSE_MSG_0_DATA0
+
 #endif
diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_vf.c b/drivers/gpu/drm/xe/xe_gt_sriov_vf.c
index d0b102ab6ce8..17f06cd63527 100644
--- a/drivers/gpu/drm/xe/xe_gt_sriov_vf.c
+++ b/drivers/gpu/drm/xe/xe_gt_sriov_vf.c
@@ -299,15 +299,69 @@ void xe_gt_sriov_vf_guc_versions(struct xe_gt *gt,
 		*found = gt->sriov.vf.guc_version;
 }
 
-static int guc_action_vf_notify_resfix_done(struct xe_guc *guc)
+/**
+ * When the marker is non-zero, the GUC compatibility version must be >= 1.27.0.
+ * When the marker is zero, the version must be < 1.27.0 — compatible with
+ * older GUCs that support sending RESFIX_DONE.
+ */
+static inline void guc_resfix_marker_assert_not_supported(struct xe_gt *gt, u16 marker)
+{
+	if (marker)
+		xe_gt_assert(gt, (GUC_SUBMIT_VER(&gt->uc.guc) >=
+				  MAKE_GUC_VER(1, 27, 0)));
+	else
+		xe_gt_assert(gt, (GUC_SUBMIT_VER(&gt->uc.guc) <
+				  MAKE_GUC_VER(1, 27, 0)));
+}
+
+static int guc_action_vf_notify_resfix_start(struct xe_guc *guc, u16 marker)
 {
 	u32 request[GUC_HXG_REQUEST_MSG_MIN_LEN] = {
 		FIELD_PREP(GUC_HXG_MSG_0_ORIGIN, GUC_HXG_ORIGIN_HOST) |
 		FIELD_PREP(GUC_HXG_MSG_0_TYPE, GUC_HXG_TYPE_REQUEST) |
-		FIELD_PREP(GUC_HXG_REQUEST_MSG_0_ACTION, GUC_ACTION_VF2GUC_NOTIFY_RESFIX_DONE),
+		FIELD_PREP(GUC_HXG_REQUEST_MSG_0_ACTION,
+			   GUC_ACTION_VF2GUC_NOTIFY_RESFIX_START) |
+		FIELD_PREP(GUC_HXG_REQUEST_MSG_0_DATA0, marker),
 	};
 	int ret;
 
+	guc_resfix_marker_assert_not_supported(guc_to_gt(guc), marker);
+
+	ret = xe_guc_mmio_send(guc, request, ARRAY_SIZE(request));
+
+	return ret > 0 ? -EPROTO : ret;
+}
+
+static int vf_notify_resfix_start(struct xe_gt *gt, u16 marker)
+{
+	struct xe_guc *guc = &gt->uc.guc;
+	int err;
+
+	xe_gt_assert(gt, IS_SRIOV_VF(gt_to_xe(gt)));
+
+	xe_gt_sriov_dbg(guc_to_gt(guc), "Sending resfix start marker %u\n", marker);
+
+	err = guc_action_vf_notify_resfix_start(guc, marker);
+	if (unlikely(err))
+		xe_gt_sriov_err(gt, "Failed to notify GuC about resource fixup start (%pe)\n",
+				ERR_PTR(err));
+
+	return err;
+}
+
+static int guc_action_vf_notify_resfix_done(struct xe_guc *guc, u16 marker)
+{
+	u32 request[GUC_HXG_REQUEST_MSG_MIN_LEN] = {
+		FIELD_PREP(GUC_HXG_MSG_0_ORIGIN, GUC_HXG_ORIGIN_HOST) |
+		FIELD_PREP(GUC_HXG_MSG_0_TYPE, GUC_HXG_TYPE_REQUEST) |
+		FIELD_PREP(GUC_HXG_REQUEST_MSG_0_ACTION,
+			   GUC_ACTION_VF2GUC_NOTIFY_RESFIX_DONE) |
+		FIELD_PREP(GUC_HXG_REQUEST_MSG_0_DATA0, marker),
+	};
+	int ret;
+
+	guc_resfix_marker_assert_not_supported(guc_to_gt(guc), marker);
+
 	ret = xe_guc_mmio_send(guc, request, ARRAY_SIZE(request));
 
 	return ret > 0 ? -EPROTO : ret;
@@ -316,18 +370,19 @@ static int guc_action_vf_notify_resfix_done(struct xe_guc *guc)
 /**
  * vf_notify_resfix_done - Notify GuC about resource fixups apply completed.
  * @gt: the &xe_gt struct instance linked to target GuC
+ * @marker: marker to identify the migration.
  *
  * Returns: 0 if the operation completed successfully, or a negative error
  * code otherwise.
  */
-static int vf_notify_resfix_done(struct xe_gt *gt)
+static int vf_notify_resfix_done(struct xe_gt *gt, u16 marker)
 {
 	struct xe_guc *guc = &gt->uc.guc;
 	int err;
 
 	xe_gt_assert(gt, IS_SRIOV_VF(gt_to_xe(gt)));
 
-	err = guc_action_vf_notify_resfix_done(guc);
+	err = guc_action_vf_notify_resfix_done(guc, marker);
 	if (unlikely(err))
 		xe_gt_sriov_err(gt, "Failed to notify GuC about resource fixup done (%pe)\n",
 				ERR_PTR(err));
@@ -1183,7 +1238,7 @@ static void vf_post_migration_abort(struct xe_gt *gt)
 	xe_guc_submit_pause_abort(&gt->uc.guc);
 }
 
-static int vf_post_migration_notify_resfix_done(struct xe_gt *gt)
+static int vf_post_migration_notify_resfix_done(struct xe_gt *gt, u16 marker)
 {
 	bool skip_resfix = false;
 
@@ -1206,12 +1261,27 @@ static int vf_post_migration_notify_resfix_done(struct xe_gt *gt)
 	 */
 	xe_irq_resume(gt_to_xe(gt));
 
-	return vf_notify_resfix_done(gt);
+	return vf_notify_resfix_done(gt, marker);
+}
+
+static bool vf_resfix_start_marker_supported(struct xe_gt *gt)
+{
+	struct xe_device *xe = gt_to_xe(gt);
+
+	xe_gt_assert(gt, IS_SRIOV_VF(xe));
+	return xe->sriov.vf.migration.resfix_marker_enabled;
+}
+
+static u16 vf_post_migration_resfix_start_marker(struct xe_gt *gt)
+{
+	xe_gt_assert(gt, IS_SRIOV_VF(gt_to_xe(gt)));
+	return ++gt->sriov.vf.migration.resfix_marker;
 }
 
 static void vf_post_migration_recovery(struct xe_gt *gt)
 {
 	struct xe_device *xe = gt_to_xe(gt);
+	u16 marker = 0;
 	int err;
 	bool retry;
 
@@ -1227,13 +1297,27 @@ static void vf_post_migration_recovery(struct xe_gt *gt)
 		goto fail;
 	}
 
+	/*
+	 * Increment the startup marker again if it overflows, since GUC
+	 * requires a non-zero marker to be set.
+	 */
+	if (vf_resfix_start_marker_supported(gt)) {
+		marker = vf_post_migration_resfix_start_marker(gt);
+		if (!marker)
+			marker = vf_post_migration_resfix_start_marker(gt);
+
+		err = vf_notify_resfix_start(gt, marker);
+		if (err)
+			goto fail;
+	}
+
 	err = vf_post_migration_fixups(gt);
 	if (err)
 		goto fail;
 
 	vf_post_migration_rearm(gt);
 
-	err = vf_post_migration_notify_resfix_done(gt);
+	err = vf_post_migration_notify_resfix_done(gt, marker);
 	if (err && err != -EAGAIN)
 		goto fail;
 
diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_vf_types.h b/drivers/gpu/drm/xe/xe_gt_sriov_vf_types.h
index 420b0e6089de..5707bb808d80 100644
--- a/drivers/gpu/drm/xe/xe_gt_sriov_vf_types.h
+++ b/drivers/gpu/drm/xe/xe_gt_sriov_vf_types.h
@@ -52,6 +52,11 @@ struct xe_gt_sriov_vf_migration {
 	wait_queue_head_t wq;
 	/** @scratch: Scratch memory for VF recovery */
 	void *scratch;
+	/**
+	 * @resfix_marker: Marker sent to Guc prior to starting the
+	 * post‑migration.
+	 */
+	u16 resfix_marker;
 	/** @recovery_teardown: VF post migration recovery is being torn down */
 	bool recovery_teardown;
 	/** @recovery_queued: VF post migration recovery in queued */
diff --git a/drivers/gpu/drm/xe/xe_sriov_vf.c b/drivers/gpu/drm/xe/xe_sriov_vf.c
index 39c829daa97c..bdde6867dcd9 100644
--- a/drivers/gpu/drm/xe/xe_sriov_vf.c
+++ b/drivers/gpu/drm/xe/xe_sriov_vf.c
@@ -55,7 +55,21 @@
  * When the VF driver is ready to continue operation on the newly connected
  * hardware, it sends `VF2GUC_NOTIFY_RESFIX_DONE` which causes it to
  * enter the long awaited `VF_RUNNING` state, and therefore start handling
- * CTB messages and scheduling workloads from the VF::
+ * CTB messages and scheduling workloads from the VF.
+ *
+ * In scenarios involving double migration, the VF KMD may encounter situations
+ * where it is instructed to re-migrate before having the opportunity to send
+ * RESFIX_DONE for the initial migration. This can occur when the fix-up for the
+ * prior migration is still underway, but the VF KMD is migrated again.
+ * Consequently, this may lead to the possibility of sending two migration
+ * notifications (i.e., pending fix-up for the first migration and a second
+ * notification for the new migration). Upon receiving the first RES_FIX
+ * notification, the GuC will resume VF submission on the GPU, potentially
+ * resulting in undefined behavior, such as system hangs or crashes.
+ *
+ * To avoid these hangs, a new VF2GUC action `VF2GUC_NOTIFY_RESFIX_START` is
+ * sent along with marker and when GUC receives the same marker with
+ * `VF2GUC_NOTIFY_RESFIX_DONE`action, it starts scheduling work loads from VF::
  *
  *      PF                             GuC                              VF
  *     [ ]                              |                               |
@@ -102,6 +116,11 @@
  *      |                              [ ]        new VF provisioning  [ ]
  *      |                              [ ]---------------------------> [ ]
  *      |                               |                              [ ]
+ *      |                               |   VF2GUC_NOTIFY_RESFIX_START [ ]
+ *      |                              [ ] <---------------------------[ ]
+ *      |                              [ ]                             [ ]
+ *      |                              [ ]                     success [ ]
+ *      |                              [ ]---------------------------> [ ]
  *      |                               |       VF driver applies post [ ]
  *      |                               |      migration fixups -------[ ]
  *      |                               |                       |      [ ]
@@ -114,7 +133,9 @@
  *      |                              [ ]------- VF_RUNNING           [ ]
  *      |                              [ ]      |                      [ ]
  *      |                              [ ] <-----                      [ ]
- *      |                              [ ]                     success [ ]
+ *      |                              [ ]   success (on marker match) [ ]
+ *      |                              [ ]---------------------------> [ ]
+ *      |                              [ ]  Error (on marker mismatch) [ ]
  *      |                              [ ]---------------------------> [ ]
  *      |                               |                               |
  *      |                               |                               |
@@ -169,6 +190,26 @@ static void vf_migration_init_early(struct xe_device *xe)
 
 }
 
+static void vf_resfix_start_marker_init(struct xe_device *xe)
+{
+	struct xe_gt *gt = xe_root_mmio_gt(xe);
+	struct xe_uc_fw_version guc_version;
+
+	if (xe->sriov.vf.migration.disabled)
+		return;
+
+	xe_gt_sriov_vf_guc_versions(gt, NULL, &guc_version);
+	if (MAKE_GUC_VER_STRUCT(guc_version) < MAKE_GUC_VER(1, 27, 0)) {
+		xe_sriov_notice(xe,
+				"Resfix start marker requires GUC ABI >= 1.27.0, but only %u.%u.%u found",
+				guc_version.major, guc_version.minor, guc_version.patch);
+		return;
+	}
+
+	xe->sriov.vf.migration.resfix_marker_enabled = true;
+	xe_sriov_dbg(xe, "migrate: Resfix start marker support is enabled\n");
+}
+
 /**
  * xe_sriov_vf_init_early - Initialize SR-IOV VF specific data.
  * @xe: the &xe_device to initialize
@@ -188,6 +229,7 @@ void xe_sriov_vf_init_early(struct xe_device *xe)
  */
 int xe_sriov_vf_init_late(struct xe_device *xe)
 {
+	vf_resfix_start_marker_init(xe);
 	return xe_sriov_vf_ccs_init(xe);
 }
 
diff --git a/drivers/gpu/drm/xe/xe_sriov_vf_types.h b/drivers/gpu/drm/xe/xe_sriov_vf_types.h
index d5f72d667817..626c11a6dd1b 100644
--- a/drivers/gpu/drm/xe/xe_sriov_vf_types.h
+++ b/drivers/gpu/drm/xe/xe_sriov_vf_types.h
@@ -38,6 +38,11 @@ struct xe_device_vf {
 		 * was turned off due to missing prerequisites
 		 */
 		bool disabled;
+		/**
+		 * @migration.resfix_marker_enabled: flag indicating if resfix marker
+		 * support was enabled or not due to missing prerequisites.
+		 */
+		bool resfix_marker_enabled;
 	} migration;
 
 	/** @ccs: VF CCS state data */
-- 
2.51.0


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

* [PATCH v3 2/2] drm/xe/vf: Add debugfs entries to test VF double migration
  2025-11-07 14:10 [PATCH v3 0/2] VF double migration Satyanarayana K V P
  2025-11-07 14:10 ` [PATCH v3 1/2] drm/xe/vf: Introduce RESFIX start marker support Satyanarayana K V P
@ 2025-11-07 14:10 ` Satyanarayana K V P
  2025-11-11 15:26   ` Michal Wajdeczko
  2025-11-07 15:03 ` ✓ CI.KUnit: success for VF double migration (rev3) Patchwork
                   ` (2 subsequent siblings)
  4 siblings, 1 reply; 8+ messages in thread
From: Satyanarayana K V P @ 2025-11-07 14:10 UTC (permalink / raw)
  To: intel-xe; +Cc: Satyanarayana K V P, Michal Wajdeczko, Matthew Brost, Tomasz Lis

VF migration sends a marker to the GUC before resource fixups begin,
and repeats the marker with the RESFIX_DONE notification. This prevents
the GUC from submitting jobs during double migration events.

To reliably test double migration, a second migration must be triggered
while fixups from the first migration are still in progress. Since fixups
complete quickly, reproducing this scenario is difficult. Introduce
debugfs controls to add delays in the post-fixup phase, creating a
deterministic window for subsequent migrations.

New debugfs entries:
  /sys/kernel/debug/dri/<card>/
  ├── gt0
  │   ├── vf
  │   │   ├── resfix_start_delay_ms

- resfix_start_delay_ms: delay after sending RESFIX_START marker

Signed-off-by: Satyanarayana K V P <satyanarayana.k.v.p@intel.com>
Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
Cc: Matthew Brost <matthew.brost@intel.com>
Cc: Tomasz Lis <tomasz.lis@intel.com>

---
V2 -> V3:
- New commit

V1 -> V2:
- None.
---
 drivers/gpu/drm/xe/xe_gt_sriov_vf.c         | 13 +++++++++++++
 drivers/gpu/drm/xe/xe_gt_sriov_vf_debugfs.c |  5 +++++
 drivers/gpu/drm/xe/xe_gt_sriov_vf_types.h   |  8 ++++++++
 3 files changed, 26 insertions(+)

diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_vf.c b/drivers/gpu/drm/xe/xe_gt_sriov_vf.c
index 17f06cd63527..6443997a1408 100644
--- a/drivers/gpu/drm/xe/xe_gt_sriov_vf.c
+++ b/drivers/gpu/drm/xe/xe_gt_sriov_vf.c
@@ -5,6 +5,7 @@
 
 #include <linux/bitfield.h>
 #include <linux/bsearch.h>
+#include <linux/delay.h>
 
 #include <drm/drm_managed.h>
 #include <drm/drm_print.h>
@@ -1278,6 +1279,16 @@ static u16 vf_post_migration_resfix_start_marker(struct xe_gt *gt)
 	return ++gt->sriov.vf.migration.resfix_marker;
 }
 
+static inline void vf_post_migration_inject_delay(struct xe_gt *gt)
+{
+	ulong delay_ms = gt->sriov.vf.migration.debug.resfix_start_delay_ms;
+
+	if (delay_ms && vf_resfix_start_marker_supported(gt)) {
+		xe_gt_sriov_dbg(gt, "Post migration delayed %lu msec", delay_ms);
+		msleep(delay_ms);
+	}
+}
+
 static void vf_post_migration_recovery(struct xe_gt *gt)
 {
 	struct xe_device *xe = gt_to_xe(gt);
@@ -1315,6 +1326,8 @@ static void vf_post_migration_recovery(struct xe_gt *gt)
 	if (err)
 		goto fail;
 
+	vf_post_migration_inject_delay(gt);
+
 	vf_post_migration_rearm(gt);
 
 	err = vf_post_migration_notify_resfix_done(gt, marker);
diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_vf_debugfs.c b/drivers/gpu/drm/xe/xe_gt_sriov_vf_debugfs.c
index 2ed5b6780d30..2928c65afd15 100644
--- a/drivers/gpu/drm/xe/xe_gt_sriov_vf_debugfs.c
+++ b/drivers/gpu/drm/xe/xe_gt_sriov_vf_debugfs.c
@@ -69,4 +69,9 @@ void xe_gt_sriov_vf_debugfs_register(struct xe_gt *gt, struct dentry *root)
 	vfdentry->d_inode->i_private = gt;
 
 	drm_debugfs_create_files(vf_info, ARRAY_SIZE(vf_info), vfdentry, minor);
+
+	if (IS_ENABLED(CONFIG_DRM_XE_DEBUG)) {
+		debugfs_create_ulong("resfix_start_delay_ms", 0600, root,
+				     &gt->sriov.vf.migration.debug.resfix_start_delay_ms);
+	}
 }
diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_vf_types.h b/drivers/gpu/drm/xe/xe_gt_sriov_vf_types.h
index 5707bb808d80..9f4a51cbe38e 100644
--- a/drivers/gpu/drm/xe/xe_gt_sriov_vf_types.h
+++ b/drivers/gpu/drm/xe/xe_gt_sriov_vf_types.h
@@ -52,6 +52,14 @@ struct xe_gt_sriov_vf_migration {
 	wait_queue_head_t wq;
 	/** @scratch: Scratch memory for VF recovery */
 	void *scratch;
+	/** @debug: Debug hooks for delaying migration */
+	struct {
+		/**
+		 * @debug.resfix_start_delay_ms: Delay in msec
+		 * after RESFIX_START marker is sent to GUC.
+		 */
+		ulong resfix_start_delay_ms;
+	} debug;
 	/**
 	 * @resfix_marker: Marker sent to Guc prior to starting the
 	 * post‑migration.
-- 
2.51.0


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

* ✓ CI.KUnit: success for VF double migration (rev3)
  2025-11-07 14:10 [PATCH v3 0/2] VF double migration Satyanarayana K V P
  2025-11-07 14:10 ` [PATCH v3 1/2] drm/xe/vf: Introduce RESFIX start marker support Satyanarayana K V P
  2025-11-07 14:10 ` [PATCH v3 2/2] drm/xe/vf: Add debugfs entries to test VF double migration Satyanarayana K V P
@ 2025-11-07 15:03 ` Patchwork
  2025-11-07 15:46 ` ✗ Xe.CI.BAT: failure " Patchwork
  2025-11-09  1:31 ` ✗ Xe.CI.Full: " Patchwork
  4 siblings, 0 replies; 8+ messages in thread
From: Patchwork @ 2025-11-07 15:03 UTC (permalink / raw)
  To: Satyanarayana K V P; +Cc: intel-xe

== Series Details ==

Series: VF double migration (rev3)
URL   : https://patchwork.freedesktop.org/series/156339/
State : success

== Summary ==

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

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

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

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



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

* ✗ Xe.CI.BAT: failure for VF double migration (rev3)
  2025-11-07 14:10 [PATCH v3 0/2] VF double migration Satyanarayana K V P
                   ` (2 preceding siblings ...)
  2025-11-07 15:03 ` ✓ CI.KUnit: success for VF double migration (rev3) Patchwork
@ 2025-11-07 15:46 ` Patchwork
  2025-11-09  1:31 ` ✗ Xe.CI.Full: " Patchwork
  4 siblings, 0 replies; 8+ messages in thread
From: Patchwork @ 2025-11-07 15:46 UTC (permalink / raw)
  To: Satyanarayana K V P; +Cc: intel-xe

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

== Series Details ==

Series: VF double migration (rev3)
URL   : https://patchwork.freedesktop.org/series/156339/
State : failure

== Summary ==

CI Bug Log - changes from xe-4068-35cd059ed9ec8f39c25a160137ba85a150349160_BAT -> xe-pw-156339v3_BAT
====================================================

Summary
-------

  **FAILURE**

  Serious unknown changes coming with xe-pw-156339v3_BAT absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in xe-pw-156339v3_BAT, please notify your bug team (I915-ci-infra@lists.freedesktop.org) to allow them
  to document this new failure mode, which will reduce false positives in CI.

  

Participating hosts (13 -> 13)
------------------------------

  No changes in participating hosts

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

  Here are the unknown changes that may have been introduced in xe-pw-156339v3_BAT:

### IGT changes ###

#### Possible regressions ####

  * igt@xe_exec_basic@multigpu-once-basic:
    - bat-bmg-3:          NOTRUN -> [ABORT][1]
   [1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156339v3/bat-bmg-3/igt@xe_exec_basic@multigpu-once-basic.html

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

  Here are the changes found in xe-pw-156339v3_BAT that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@xe_create@create-execqueues-noleak:
    - bat-ptl-vm:         NOTRUN -> [ABORT][2] ([Intel XE#6541])
   [2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156339v3/bat-ptl-vm/igt@xe_create@create-execqueues-noleak.html

  
#### Possible fixes ####

  * igt@xe_compute@compute-square:
    - bat-ptl-vm:         [ABORT][3] ([Intel XE#6541]) -> [PASS][4]
   [3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4068-35cd059ed9ec8f39c25a160137ba85a150349160/bat-ptl-vm/igt@xe_compute@compute-square.html
   [4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156339v3/bat-ptl-vm/igt@xe_compute@compute-square.html

  * igt@xe_create@multigpu-create-massive-size:
    - bat-bmg-3:          [ABORT][5] ([Intel XE#6541]) -> [PASS][6]
   [5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4068-35cd059ed9ec8f39c25a160137ba85a150349160/bat-bmg-3/igt@xe_create@multigpu-create-massive-size.html
   [6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156339v3/bat-bmg-3/igt@xe_create@multigpu-create-massive-size.html

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


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

  * Linux: xe-4068-35cd059ed9ec8f39c25a160137ba85a150349160 -> xe-pw-156339v3

  IGT_8613: b542242f5b116e3b554b4068ef5dfa4451075b2b @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  xe-4068-35cd059ed9ec8f39c25a160137ba85a150349160: 35cd059ed9ec8f39c25a160137ba85a150349160
  xe-pw-156339v3: 156339v3

== Logs ==

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

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

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

* ✗ Xe.CI.Full: failure for VF double migration (rev3)
  2025-11-07 14:10 [PATCH v3 0/2] VF double migration Satyanarayana K V P
                   ` (3 preceding siblings ...)
  2025-11-07 15:46 ` ✗ Xe.CI.BAT: failure " Patchwork
@ 2025-11-09  1:31 ` Patchwork
  4 siblings, 0 replies; 8+ messages in thread
From: Patchwork @ 2025-11-09  1:31 UTC (permalink / raw)
  To: Satyanarayana K V P; +Cc: intel-xe

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

== Series Details ==

Series: VF double migration (rev3)
URL   : https://patchwork.freedesktop.org/series/156339/
State : failure

== Summary ==

CI Bug Log - changes from xe-4068-35cd059ed9ec8f39c25a160137ba85a150349160_FULL -> xe-pw-156339v3_FULL
====================================================

Summary
-------

  **FAILURE**

  Serious unknown changes coming with xe-pw-156339v3_FULL absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in xe-pw-156339v3_FULL, please notify your bug team (I915-ci-infra@lists.freedesktop.org) to allow them
  to document this new failure mode, which will reduce false positives in CI.

  

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

  No changes in participating hosts

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

  Here are the unknown changes that may have been introduced in xe-pw-156339v3_FULL:

### IGT changes ###

#### Possible regressions ####

  * igt@kms_flip@nonexisting-fb-interruptible@a-hdmi-a1:
    - shard-adlp:         NOTRUN -> [ABORT][1] +6 other tests abort
   [1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156339v3/shard-adlp-3/igt@kms_flip@nonexisting-fb-interruptible@a-hdmi-a1.html

  * igt@kms_flip@nonexisting-fb-interruptible@b-hdmi-a1:
    - shard-adlp:         NOTRUN -> [DMESG-WARN][2] +2 other tests dmesg-warn
   [2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156339v3/shard-adlp-3/igt@kms_flip@nonexisting-fb-interruptible@b-hdmi-a1.html

  * igt@xe_exec_balancer@many-execqueues-cm-virtual-userptr-invalidate-race:
    - shard-adlp:         [PASS][3] -> [ABORT][4]
   [3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4068-35cd059ed9ec8f39c25a160137ba85a150349160/shard-adlp-8/igt@xe_exec_balancer@many-execqueues-cm-virtual-userptr-invalidate-race.html
   [4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156339v3/shard-adlp-9/igt@xe_exec_balancer@many-execqueues-cm-virtual-userptr-invalidate-race.html

  * igt@xe_exec_compute_mode@many-userptr-invalidate-race:
    - shard-dg2-set2:     NOTRUN -> [ABORT][5] +2 other tests abort
   [5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156339v3/shard-dg2-463/igt@xe_exec_compute_mode@many-userptr-invalidate-race.html

  * igt@xe_exec_system_allocator@many-stride-mmap-shared-nomemset:
    - shard-bmg:          NOTRUN -> [ABORT][6] +3 other tests abort
   [6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156339v3/shard-bmg-7/igt@xe_exec_system_allocator@many-stride-mmap-shared-nomemset.html

  * igt@xe_exec_system_allocator@threads-many-large-mmap-new-race:
    - shard-lnl:          NOTRUN -> [ABORT][7]
   [7]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156339v3/shard-lnl-5/igt@xe_exec_system_allocator@threads-many-large-mmap-new-race.html

  * igt@xe_exec_threads@threads-bal-shared-vm-userptr:
    - shard-dg2-set2:     [PASS][8] -> [ABORT][9]
   [8]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4068-35cd059ed9ec8f39c25a160137ba85a150349160/shard-dg2-464/igt@xe_exec_threads@threads-bal-shared-vm-userptr.html
   [9]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156339v3/shard-dg2-436/igt@xe_exec_threads@threads-bal-shared-vm-userptr.html

  * igt@xe_oa@mmio-triggered-reports-read:
    - shard-lnl:          [PASS][10] -> [ABORT][11] +1 other test abort
   [10]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4068-35cd059ed9ec8f39c25a160137ba85a150349160/shard-lnl-7/igt@xe_oa@mmio-triggered-reports-read.html
   [11]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156339v3/shard-lnl-1/igt@xe_oa@mmio-triggered-reports-read.html

  
#### Warnings ####

  * igt@kms_ccs@crc-primary-rotation-180-y-tiled-ccs:
    - shard-dg2-set2:     [SKIP][12] ([Intel XE#455] / [Intel XE#787]) -> [ABORT][13]
   [12]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4068-35cd059ed9ec8f39c25a160137ba85a150349160/shard-dg2-434/igt@kms_ccs@crc-primary-rotation-180-y-tiled-ccs.html
   [13]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156339v3/shard-dg2-433/igt@kms_ccs@crc-primary-rotation-180-y-tiled-ccs.html

  * igt@kms_ccs@crc-primary-rotation-180-y-tiled-ccs@pipe-a-hdmi-a-6:
    - shard-dg2-set2:     [SKIP][14] ([Intel XE#787]) -> [ABORT][15]
   [14]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4068-35cd059ed9ec8f39c25a160137ba85a150349160/shard-dg2-434/igt@kms_ccs@crc-primary-rotation-180-y-tiled-ccs@pipe-a-hdmi-a-6.html
   [15]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156339v3/shard-dg2-433/igt@kms_ccs@crc-primary-rotation-180-y-tiled-ccs@pipe-a-hdmi-a-6.html

  * igt@kms_frontbuffer_tracking@drrs-1p-primscrn-spr-indfb-draw-render:
    - shard-lnl:          [SKIP][16] ([Intel XE#651]) -> [ABORT][17]
   [16]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4068-35cd059ed9ec8f39c25a160137ba85a150349160/shard-lnl-5/igt@kms_frontbuffer_tracking@drrs-1p-primscrn-spr-indfb-draw-render.html
   [17]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156339v3/shard-lnl-1/igt@kms_frontbuffer_tracking@drrs-1p-primscrn-spr-indfb-draw-render.html

  * igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-move:
    - shard-bmg:          [SKIP][18] ([Intel XE#2312]) -> [ABORT][19]
   [18]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4068-35cd059ed9ec8f39c25a160137ba85a150349160/shard-bmg-6/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-move.html
   [19]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156339v3/shard-bmg-5/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-move.html

  * igt@kms_frontbuffer_tracking@psr-slowdraw:
    - shard-adlp:         [SKIP][20] ([Intel XE#653]) -> [ABORT][21]
   [20]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4068-35cd059ed9ec8f39c25a160137ba85a150349160/shard-adlp-4/igt@kms_frontbuffer_tracking@psr-slowdraw.html
   [21]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156339v3/shard-adlp-6/igt@kms_frontbuffer_tracking@psr-slowdraw.html

  * igt@kms_hdr@static-toggle-dpms@pipe-a-dp-4:
    - shard-dg2-set2:     [DMESG-WARN][22] -> [ABORT][23]
   [22]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4068-35cd059ed9ec8f39c25a160137ba85a150349160/shard-dg2-436/igt@kms_hdr@static-toggle-dpms@pipe-a-dp-4.html
   [23]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156339v3/shard-dg2-463/igt@kms_hdr@static-toggle-dpms@pipe-a-dp-4.html

  * igt@xe_eudebug_online@interrupt-all-set-breakpoint:
    - shard-bmg:          [SKIP][24] ([Intel XE#4837]) -> [ABORT][25]
   [24]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4068-35cd059ed9ec8f39c25a160137ba85a150349160/shard-bmg-7/igt@xe_eudebug_online@interrupt-all-set-breakpoint.html
   [25]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156339v3/shard-bmg-1/igt@xe_eudebug_online@interrupt-all-set-breakpoint.html

  * igt@xe_exec_system_allocator@threads-shared-vm-many-mmap-huge-nomemset:
    - shard-lnl:          [SKIP][26] ([Intel XE#4943]) -> [ABORT][27]
   [26]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4068-35cd059ed9ec8f39c25a160137ba85a150349160/shard-lnl-8/igt@xe_exec_system_allocator@threads-shared-vm-many-mmap-huge-nomemset.html
   [27]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156339v3/shard-lnl-2/igt@xe_exec_system_allocator@threads-shared-vm-many-mmap-huge-nomemset.html

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

  Here are the changes found in xe-pw-156339v3_FULL that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@kms_ccs@bad-pixel-format-y-tiled-gen12-rc-ccs-cc@pipe-a-hdmi-a-1:
    - shard-adlp:         NOTRUN -> [SKIP][28] ([Intel XE#787]) +2 other tests skip
   [28]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156339v3/shard-adlp-6/igt@kms_ccs@bad-pixel-format-y-tiled-gen12-rc-ccs-cc@pipe-a-hdmi-a-1.html

  * igt@kms_ccs@bad-pixel-format-y-tiled-gen12-rc-ccs-cc@pipe-d-hdmi-a-1:
    - shard-adlp:         NOTRUN -> [SKIP][29] ([Intel XE#455] / [Intel XE#787]) +1 other test skip
   [29]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156339v3/shard-adlp-6/igt@kms_ccs@bad-pixel-format-y-tiled-gen12-rc-ccs-cc@pipe-d-hdmi-a-1.html

  * igt@kms_flip@2x-flip-vs-dpms-on-nop:
    - shard-adlp:         NOTRUN -> [SKIP][30] ([Intel XE#310])
   [30]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156339v3/shard-adlp-1/igt@kms_flip@2x-flip-vs-dpms-on-nop.html

  * igt@kms_flip_scaled_crc@flip-32bpp-yftileccs-to-64bpp-yftile-upscaling:
    - shard-dg2-set2:     NOTRUN -> [SKIP][31] ([Intel XE#455]) +1 other test skip
   [31]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156339v3/shard-dg2-433/igt@kms_flip_scaled_crc@flip-32bpp-yftileccs-to-64bpp-yftile-upscaling.html

  * igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-cur-indfb-move:
    - shard-adlp:         NOTRUN -> [SKIP][32] ([Intel XE#656])
   [32]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156339v3/shard-adlp-6/igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-cur-indfb-move.html

  * igt@kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-pri-indfb-draw-render:
    - shard-dg2-set2:     NOTRUN -> [SKIP][33] ([Intel XE#651])
   [33]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156339v3/shard-dg2-433/igt@kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-pri-indfb-draw-render.html

  * igt@kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-spr-indfb-fullscreen:
    - shard-bmg:          NOTRUN -> [SKIP][34] ([Intel XE#2311])
   [34]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156339v3/shard-bmg-8/igt@kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-spr-indfb-fullscreen.html
    - shard-adlp:         NOTRUN -> [SKIP][35] ([Intel XE#651]) +2 other tests skip
   [35]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156339v3/shard-adlp-8/igt@kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-spr-indfb-fullscreen.html

  * igt@kms_frontbuffer_tracking@psr-slowdraw:
    - shard-dg2-set2:     NOTRUN -> [SKIP][36] ([Intel XE#653]) +1 other test skip
   [36]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156339v3/shard-dg2-433/igt@kms_frontbuffer_tracking@psr-slowdraw.html

  * igt@kms_psr2_sf@fbc-pr-overlay-plane-update-sf-dmg-area:
    - shard-dg2-set2:     NOTRUN -> [SKIP][37] ([Intel XE#1406] / [Intel XE#1489])
   [37]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156339v3/shard-dg2-433/igt@kms_psr2_sf@fbc-pr-overlay-plane-update-sf-dmg-area.html

  * igt@kms_psr_stress_test@flip-primary-invalidate-overlay:
    - shard-adlp:         NOTRUN -> [SKIP][38] ([Intel XE#1406] / [Intel XE#2939] / [Intel XE#5585])
   [38]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156339v3/shard-adlp-6/igt@kms_psr_stress_test@flip-primary-invalidate-overlay.html

  * igt@xe_eudebug_online@interrupt-all-set-breakpoint:
    - shard-dg2-set2:     NOTRUN -> [SKIP][39] ([Intel XE#4837])
   [39]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156339v3/shard-dg2-463/igt@xe_eudebug_online@interrupt-all-set-breakpoint.html

  * igt@xe_exec_basic@multigpu-no-exec-null:
    - shard-adlp:         NOTRUN -> [SKIP][40] ([Intel XE#1392] / [Intel XE#5575])
   [40]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156339v3/shard-adlp-6/igt@xe_exec_basic@multigpu-no-exec-null.html

  * igt@xe_exec_system_allocator@many-stride-mmap-prefetch:
    - shard-adlp:         NOTRUN -> [SKIP][41] ([Intel XE#4915]) +6 other tests skip
   [41]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156339v3/shard-adlp-3/igt@xe_exec_system_allocator@many-stride-mmap-prefetch.html

  * igt@xe_exec_system_allocator@twice-large-mmap-prefetch-shared:
    - shard-dg2-set2:     NOTRUN -> [SKIP][42] ([Intel XE#4915]) +5 other tests skip
   [42]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156339v3/shard-dg2-433/igt@xe_exec_system_allocator@twice-large-mmap-prefetch-shared.html

  
#### Possible fixes ####

  * igt@xe_evict@evict-mixed-threads-small-multi-vm:
    - shard-dg2-set2:     [ABORT][43] -> [PASS][44] +2 other tests pass
   [43]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4068-35cd059ed9ec8f39c25a160137ba85a150349160/shard-dg2-436/igt@xe_evict@evict-mixed-threads-small-multi-vm.html
   [44]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156339v3/shard-dg2-463/igt@xe_evict@evict-mixed-threads-small-multi-vm.html

  * igt@xe_exec_system_allocator@threads-many-stride-malloc-fork-read-after:
    - shard-lnl:          [ABORT][45] -> [PASS][46]
   [45]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4068-35cd059ed9ec8f39c25a160137ba85a150349160/shard-lnl-4/igt@xe_exec_system_allocator@threads-many-stride-malloc-fork-read-after.html
   [46]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156339v3/shard-lnl-5/igt@xe_exec_system_allocator@threads-many-stride-malloc-fork-read-after.html

  * igt@xe_exec_threads@threads-bal-shared-vm-userptr:
    - shard-adlp:         [ABORT][47] -> [PASS][48] +5 other tests pass
   [47]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4068-35cd059ed9ec8f39c25a160137ba85a150349160/shard-adlp-1/igt@xe_exec_threads@threads-bal-shared-vm-userptr.html
   [48]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156339v3/shard-adlp-8/igt@xe_exec_threads@threads-bal-shared-vm-userptr.html

  * igt@xe_vm@mixed-userptr-binds-3145728:
    - shard-bmg:          [ABORT][49] -> [PASS][50]
   [49]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4068-35cd059ed9ec8f39c25a160137ba85a150349160/shard-bmg-1/igt@xe_vm@mixed-userptr-binds-3145728.html
   [50]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156339v3/shard-bmg-6/igt@xe_vm@mixed-userptr-binds-3145728.html

  
#### Warnings ####

  * igt@kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-180:
    - shard-adlp:         [ABORT][51] -> [DMESG-FAIL][52] ([Intel XE#4543])
   [51]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4068-35cd059ed9ec8f39c25a160137ba85a150349160/shard-adlp-4/igt@kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-180.html
   [52]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156339v3/shard-adlp-2/igt@kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-180.html

  * igt@kms_chamelium_sharpness_filter@filter-basic:
    - shard-adlp:         [ABORT][53] -> [SKIP][54] ([Intel XE#6507])
   [53]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4068-35cd059ed9ec8f39c25a160137ba85a150349160/shard-adlp-8/igt@kms_chamelium_sharpness_filter@filter-basic.html
   [54]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156339v3/shard-adlp-1/igt@kms_chamelium_sharpness_filter@filter-basic.html

  * igt@kms_frontbuffer_tracking@drrs-1p-primscrn-spr-indfb-draw-render:
    - shard-bmg:          [ABORT][55] -> [SKIP][56] ([Intel XE#2311])
   [55]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4068-35cd059ed9ec8f39c25a160137ba85a150349160/shard-bmg-5/igt@kms_frontbuffer_tracking@drrs-1p-primscrn-spr-indfb-draw-render.html
   [56]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156339v3/shard-bmg-8/igt@kms_frontbuffer_tracking@drrs-1p-primscrn-spr-indfb-draw-render.html

  
  [Intel XE#1392]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1392
  [Intel XE#1406]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1406
  [Intel XE#1489]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1489
  [Intel XE#2311]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2311
  [Intel XE#2312]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2312
  [Intel XE#2939]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2939
  [Intel XE#310]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/310
  [Intel XE#4543]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4543
  [Intel XE#455]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/455
  [Intel XE#4837]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4837
  [Intel XE#4915]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4915
  [Intel XE#4943]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4943
  [Intel XE#5575]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5575
  [Intel XE#5585]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5585
  [Intel XE#6507]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6507
  [Intel XE#651]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/651
  [Intel XE#653]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/653
  [Intel XE#656]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/656
  [Intel XE#787]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/787


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

  * Linux: xe-4068-35cd059ed9ec8f39c25a160137ba85a150349160 -> xe-pw-156339v3

  IGT_8613: b542242f5b116e3b554b4068ef5dfa4451075b2b @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  xe-4068-35cd059ed9ec8f39c25a160137ba85a150349160: 35cd059ed9ec8f39c25a160137ba85a150349160
  xe-pw-156339v3: 156339v3

== Logs ==

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

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

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

* Re: [PATCH v3 1/2] drm/xe/vf: Introduce RESFIX start marker support
  2025-11-07 14:10 ` [PATCH v3 1/2] drm/xe/vf: Introduce RESFIX start marker support Satyanarayana K V P
@ 2025-11-11 15:06   ` Michal Wajdeczko
  0 siblings, 0 replies; 8+ messages in thread
From: Michal Wajdeczko @ 2025-11-11 15:06 UTC (permalink / raw)
  To: Satyanarayana K V P, intel-xe; +Cc: Matthew Brost, Tomasz Lis



On 11/7/2025 3:10 PM, Satyanarayana K V P wrote:
> In scenarios involving double migration, the VF KMD may encounter
> situations where it is instructed to re-migrate before having the
> opportunity to send RESFIX_DONE for the initial migration. This can occur
> when the fix-up for the prior migration is still underway, but the VF KMD
> is migrated again.
> 
> Consequently, this may lead to the possibility of sending two migration
> notifications (i.e., pending fix-up for the first migration and a second
> notification for the new migration). Upon receiving the first RES_FIX
> notification, the GuC will resume VF submission on the GPU, potentially
> resulting in undefined behavior, such as system hangs or crashes.
> 
> To avoid this, post migration, a marker is sent to the GUC prior to the
> start of resource fixups to indicate start of resource fixups. The same
> marker is sent along with RESFIX_DONE notification so that GUC can avoid
> submitting jobs to HW in case of double migration.
> 
> Signed-off-by: Satyanarayana K V P <satyanarayana.k.v.p@intel.com>
> Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
> Cc: Matthew Brost <matthew.brost@intel.com>
> Cc: Tomasz Lis <tomasz.lis@intel.com>
> 
> ---
> V2 -> V3:
> - Fixed review comments (Michal W).
> - Updated commit message.
> - Fixed CI.BAT issues.
> - Added helper function to assert on unsupported GUC versions.
> 
> V1 -> V2:
> - Squashed "Enable RESFIX start marker only on supported GUC
> versions" commit into a single commit. (Matt B)
> ---
>  .../gpu/drm/xe/abi/guc_actions_sriov_abi.h    | 40 ++++++++
>  drivers/gpu/drm/xe/xe_gt_sriov_vf.c           | 98 +++++++++++++++++--
>  drivers/gpu/drm/xe/xe_gt_sriov_vf_types.h     |  5 +
>  drivers/gpu/drm/xe/xe_sriov_vf.c              | 46 ++++++++-
>  drivers/gpu/drm/xe/xe_sriov_vf_types.h        |  5 +
>  5 files changed, 185 insertions(+), 9 deletions(-)
> 
> diff --git a/drivers/gpu/drm/xe/abi/guc_actions_sriov_abi.h b/drivers/gpu/drm/xe/abi/guc_actions_sriov_abi.h
> index 0b28659d94e9..8bc74cbc1c35 100644
> --- a/drivers/gpu/drm/xe/abi/guc_actions_sriov_abi.h
> +++ b/drivers/gpu/drm/xe/abi/guc_actions_sriov_abi.h
> @@ -656,4 +656,44 @@
>  #define PF2GUC_SAVE_RESTORE_VF_RESPONSE_MSG_LEN		GUC_HXG_RESPONSE_MSG_MIN_LEN
>  #define PF2GUC_SAVE_RESTORE_VF_RESPONSE_MSG_0_USED	GUC_HXG_RESPONSE_MSG_0_DATA0
>  
> +/**
> + * DOC: VF2GUC_NOTIFY_RESFIX_START

in the GuC spec there is no "NOTIFY", so this should be just:

	VF2GUC_RESFIX_START

here and in all below defs

> + *
> + * This action is used by VF to notify the GuC that the VF KMD will be starting
> + * post-migration recovery steps.
> + *
> + * This message must be sent as `MMIO HXG Message`_.
> + *
> + * Available since GuC version 70.54.0 (VF 1.27.0)

this is VF only action, only VF ABI version is relevant
we might mention FW version in the commit message

> + *
> + *  +---+-------+--------------------------------------------------------------+
> + *  |   | Bits  | Description                                                  |
> + *  +===+=======+==============================================================+
> + *  | 0 |    31 | ORIGIN = GUC_HXG_ORIGIN_HOST_                                |
> + *  |   +-------+--------------------------------------------------------------+
> + *  |   | 30:28 | TYPE = GUC_HXG_TYPE_REQUEST_                                 |
> + *  |   +-------+--------------------------------------------------------------+
> + *  |   | 27:16 | DATA0 = MARKER                                               |

we might want to add "MARKER - can't be zero"

btw, we might want to update (in separate patch) the VF2GUC_RESFIX_DONE documentation, with:


  *  |   +-------+--------------------------------------------------------------+
- *  |   | 27:16 | DATA0 = MBZ                                                  |
+ *  |   | 27:16 | DATA0 = MBZ (only for ABI < 1.27.0)                          |
+ *  |   +-------+--------------------------------------------------------------+
+ *  |   | 27:16 | DATA0 = MARKER (for ABI >= 1.27.0) see VF2GUC_RESFIX_START_  |
  *  |   +-------+--------------------------------------------------------------+
- *  |   |  15:0 | ACTION = _`GUC_ACTION_VF2GUC_NOTIFY_RESFIX_DONE` = 0x5508    |
+ *  |   |  15:0 | ACTION = _`GUC_ACTION_VF2GUC_RESFIX_DONE` = 0x5508           |
  *  +---+-------+--------------------------------------------------------------+

> + *  |   +-------+--------------------------------------------------------------+
> + *  |   |  15:0 | ACTION = _`GUC_ACTION_VF2GUC_NOTIFY_RESFIX_START` = 0x550F   |
> + *  +---+-------+--------------------------------------------------------------+
> + *
> + *  +---+-------+--------------------------------------------------------------+
> + *  |   | Bits  | Description                                                  |
> + *  +===+=======+==============================================================+
> + *  | 0 |    31 | ORIGIN = GUC_HXG_ORIGIN_GUC_                                 |
> + *  |   +-------+--------------------------------------------------------------+
> + *  |   | 30:28 | TYPE = GUC_HXG_TYPE_RESPONSE_SUCCESS_                        |
> + *  |   +-------+--------------------------------------------------------------+
> + *  |   |  27:0 | DATA0 = MBZ                                                  |
> + *  +---+-------+--------------------------------------------------------------+
> + */
> +#define GUC_ACTION_VF2GUC_NOTIFY_RESFIX_START		0x550Fu
> +> +#define VF2GUC_NOTIFY_RESFIX_START_REQUEST_MSG_LEN	GUC_HXG_REQUEST_MSG_MIN_LEN
> +#define VF2GUC_NOTIFY_RESFIX_START_REQUEST_MSG_0_MARKER	GUC_HXG_REQUEST_MSG_0_DATA0
> +
> +#define VF2GUC_NOTIFY_RESFIX_START_RESPONSE_MSG_LEN	GUC_HXG_RESPONSE_MSG_MIN_LEN
> +#define VF2GUC_NOTIFY_RESFIX_START_RESPONSE_MSG_0_MBZ	GUC_HXG_RESPONSE_MSG_0_DATA0
> +
>  #endif
> diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_vf.c b/drivers/gpu/drm/xe/xe_gt_sriov_vf.c
> index d0b102ab6ce8..17f06cd63527 100644
> --- a/drivers/gpu/drm/xe/xe_gt_sriov_vf.c
> +++ b/drivers/gpu/drm/xe/xe_gt_sriov_vf.c
> @@ -299,15 +299,69 @@ void xe_gt_sriov_vf_guc_versions(struct xe_gt *gt,
>  		*found = gt->sriov.vf.guc_version;
>  }
>  
> -static int guc_action_vf_notify_resfix_done(struct xe_guc *guc)
> +/**
> + * When the marker is non-zero, the GUC compatibility version must be >= 1.27.0.
> + * When the marker is zero, the version must be < 1.27.0 — compatible with
> + * older GUCs that support sending RESFIX_DONE.

I'm not sure we would need this, as in the pending PF patch [1] we will enforce 70.54.0 as a minimum baseline for save/restore

and while there might different PF than our Xe, we might also want to claim readiness for save/restore only for > 1.27 on the VF side

[1] https://patchwork.freedesktop.org/patch/687116/?series=155785&rev=5

> + */
> +static inline void guc_resfix_marker_assert_not_supported(struct xe_gt *gt, u16 marker)
> +{
> +	if (marker)
> +		xe_gt_assert(gt, (GUC_SUBMIT_VER(&gt->uc.guc) >=
> +				  MAKE_GUC_VER(1, 27, 0)));
> +	else
> +		xe_gt_assert(gt, (GUC_SUBMIT_VER(&gt->uc.guc) <
> +				  MAKE_GUC_VER(1, 27, 0)));
> +}
> +
> +static int guc_action_vf_notify_resfix_start(struct xe_guc *guc, u16 marker)
>  {
>  	u32 request[GUC_HXG_REQUEST_MSG_MIN_LEN] = {
>  		FIELD_PREP(GUC_HXG_MSG_0_ORIGIN, GUC_HXG_ORIGIN_HOST) |
>  		FIELD_PREP(GUC_HXG_MSG_0_TYPE, GUC_HXG_TYPE_REQUEST) |
> -		FIELD_PREP(GUC_HXG_REQUEST_MSG_0_ACTION, GUC_ACTION_VF2GUC_NOTIFY_RESFIX_DONE),
> +		FIELD_PREP(GUC_HXG_REQUEST_MSG_0_ACTION,
> +			   GUC_ACTION_VF2GUC_NOTIFY_RESFIX_START) |
> +		FIELD_PREP(GUC_HXG_REQUEST_MSG_0_DATA0, marker),

use
	VF2GUC_RESFIX_START_REQUEST_MSG_0_MARKER
>  	};
>  	int ret;
>  
> +	guc_resfix_marker_assert_not_supported(guc_to_gt(guc), marker);

START action is only available from 1.27 so it's sufficient to have:

	xe_gt_assert(gt, GUC_SUBMIT_VER(&gt->uc.guc) >= MAKE_GUC_VER(1, 27, 0));

but maybe, since other guc_action() functions are just simple wrappers without any extra enforcement,
move that assert to the caller ? or just drop it completely since we shouldn't be migrated on older GuC?

> +
> +	ret = xe_guc_mmio_send(guc, request, ARRAY_SIZE(request));
> +
> +	return ret > 0 ? -EPROTO : ret;
> +}
> +
> +static int vf_notify_resfix_start(struct xe_gt *gt, u16 marker)
> +{
> +	struct xe_guc *guc = &gt->uc.guc;
> +	int err;
> +
> +	xe_gt_assert(gt, IS_SRIOV_VF(gt_to_xe(gt)));
> +
> +	xe_gt_sriov_dbg(guc_to_gt(guc), "Sending resfix start marker %u\n", marker);
> +
> +	err = guc_action_vf_notify_resfix_start(guc, marker);
> +	if (unlikely(err))
> +		xe_gt_sriov_err(gt, "Failed to notify GuC about resource fixup start (%pe)\n",
> +				ERR_PTR(err));
> +
> +	return err;
> +}
> +
> +static int guc_action_vf_notify_resfix_done(struct xe_guc *guc, u16 marker)
> +{
> +	u32 request[GUC_HXG_REQUEST_MSG_MIN_LEN] = {
> +		FIELD_PREP(GUC_HXG_MSG_0_ORIGIN, GUC_HXG_ORIGIN_HOST) |
> +		FIELD_PREP(GUC_HXG_MSG_0_TYPE, GUC_HXG_TYPE_REQUEST) |
> +		FIELD_PREP(GUC_HXG_REQUEST_MSG_0_ACTION,
> +			   GUC_ACTION_VF2GUC_NOTIFY_RESFIX_DONE) |
> +		FIELD_PREP(GUC_HXG_REQUEST_MSG_0_DATA0, marker),

we need to update/add definition for

	VF2GUC_RESFIX_DONE_REQUEST_MSG_0_MARKER


> +	};
> +	int ret;
> +
> +	guc_resfix_marker_assert_not_supported(guc_to_gt(guc), marker);

maybe move asserts to the caller?

> +
>  	ret = xe_guc_mmio_send(guc, request, ARRAY_SIZE(request));
>  
>  	return ret > 0 ? -EPROTO : ret;
> @@ -316,18 +370,19 @@ static int guc_action_vf_notify_resfix_done(struct xe_guc *guc)
>  /**
>   * vf_notify_resfix_done - Notify GuC about resource fixups apply completed.
>   * @gt: the &xe_gt struct instance linked to target GuC
> + * @marker: marker to identify the migration.
>   *
>   * Returns: 0 if the operation completed successfully, or a negative error
>   * code otherwise.
>   */
> -static int vf_notify_resfix_done(struct xe_gt *gt)
> +static int vf_notify_resfix_done(struct xe_gt *gt, u16 marker)
>  {
>  	struct xe_guc *guc = &gt->uc.guc;
>  	int err;
>  
>  	xe_gt_assert(gt, IS_SRIOV_VF(gt_to_xe(gt)));
>  
> -	err = guc_action_vf_notify_resfix_done(guc);
> +	err = guc_action_vf_notify_resfix_done(guc, marker);
>  	if (unlikely(err))
>  		xe_gt_sriov_err(gt, "Failed to notify GuC about resource fixup done (%pe)\n",
>  				ERR_PTR(err));
> @@ -1183,7 +1238,7 @@ static void vf_post_migration_abort(struct xe_gt *gt)
>  	xe_guc_submit_pause_abort(&gt->uc.guc);
>  }
>  
> -static int vf_post_migration_notify_resfix_done(struct xe_gt *gt)
> +static int vf_post_migration_notify_resfix_done(struct xe_gt *gt, u16 marker)
>  {
>  	bool skip_resfix = false;
>  
> @@ -1206,12 +1261,27 @@ static int vf_post_migration_notify_resfix_done(struct xe_gt *gt)
>  	 */
>  	xe_irq_resume(gt_to_xe(gt));
>  
> -	return vf_notify_resfix_done(gt);
> +	return vf_notify_resfix_done(gt, marker);
> +}
> +
> +static bool vf_resfix_start_marker_supported(struct xe_gt *gt)
> +{
> +	struct xe_device *xe = gt_to_xe(gt);
> +
> +	xe_gt_assert(gt, IS_SRIOV_VF(xe));
> +	return xe->sriov.vf.migration.resfix_marker_enabled;
> +}
> +
> +static u16 vf_post_migration_resfix_start_marker(struct xe_gt *gt)
> +{
> +	xe_gt_assert(gt, IS_SRIOV_VF(gt_to_xe(gt)));
> +	return ++gt->sriov.vf.migration.resfix_marker;
>  }
>  
>  static void vf_post_migration_recovery(struct xe_gt *gt)
>  {
>  	struct xe_device *xe = gt_to_xe(gt);
> +	u16 marker = 0;
>  	int err;
>  	bool retry;
>  
> @@ -1227,13 +1297,27 @@ static void vf_post_migration_recovery(struct xe_gt *gt)
>  		goto fail;
>  	}
>  
> +	/*
> +	 * Increment the startup marker again if it overflows, since GUC
> +	 * requires a non-zero marker to be set.
> +	 */
> +	if (vf_resfix_start_marker_supported(gt)) {
> +		marker = vf_post_migration_resfix_start_marker(gt);
> +		if (!marker)
> +			marker = vf_post_migration_resfix_start_marker(gt);
> +
> +		err = vf_notify_resfix_start(gt, marker);
> +		if (err)
> +			goto fail;
> +	}
> +
>  	err = vf_post_migration_fixups(gt);
>  	if (err)
>  		goto fail;
>  
>  	vf_post_migration_rearm(gt);
>  
> -	err = vf_post_migration_notify_resfix_done(gt);
> +	err = vf_post_migration_notify_resfix_done(gt, marker);
>  	if (err && err != -EAGAIN)
>  		goto fail;
>  
> diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_vf_types.h b/drivers/gpu/drm/xe/xe_gt_sriov_vf_types.h
> index 420b0e6089de..5707bb808d80 100644
> --- a/drivers/gpu/drm/xe/xe_gt_sriov_vf_types.h
> +++ b/drivers/gpu/drm/xe/xe_gt_sriov_vf_types.h
> @@ -52,6 +52,11 @@ struct xe_gt_sriov_vf_migration {
>  	wait_queue_head_t wq;
>  	/** @scratch: Scratch memory for VF recovery */
>  	void *scratch;
> +	/**
> +	 * @resfix_marker: Marker sent to Guc prior to starting the
> +	 * post‑migration.

... sent on start and on end of post-migration steps

> +	 */
> +	u16 resfix_marker;
>  	/** @recovery_teardown: VF post migration recovery is being torn down */
>  	bool recovery_teardown;
>  	/** @recovery_queued: VF post migration recovery in queued */
> diff --git a/drivers/gpu/drm/xe/xe_sriov_vf.c b/drivers/gpu/drm/xe/xe_sriov_vf.c
> index 39c829daa97c..bdde6867dcd9 100644
> --- a/drivers/gpu/drm/xe/xe_sriov_vf.c
> +++ b/drivers/gpu/drm/xe/xe_sriov_vf.c
> @@ -55,7 +55,21 @@
>   * When the VF driver is ready to continue operation on the newly connected
>   * hardware, it sends `VF2GUC_NOTIFY_RESFIX_DONE` which causes it to
>   * enter the long awaited `VF_RUNNING` state, and therefore start handling
> - * CTB messages and scheduling workloads from the VF::
> + * CTB messages and scheduling workloads from the VF.
> + *
> + * In scenarios involving double migration, the VF KMD may encounter situations

... In some scenarios, the VF driver ...

> + * where it is instructed to re-migrate before having the opportunity to send
> + * RESFIX_DONE for the initial migration. This can occur when the fix-up for the
> + * prior migration is still underway, but the VF KMD is migrated again.
> + * Consequently, this may lead to the possibility of sending two migration
> + * notifications (i.e., pending fix-up for the first migration and a second
> + * notification for the new migration). Upon receiving the first RES_FIX
> + * notification, the GuC will resume VF submission on the GPU, potentially
> + * resulting in undefined behavior, such as system hangs or crashes.
> + *
> + * To avoid these hangs, a new VF2GUC action `VF2GUC_NOTIFY_RESFIX_START` is
> + * sent along with marker and when GUC receives the same marker with
> + * `VF2GUC_NOTIFY_RESFIX_DONE`action, it starts scheduling work loads from VF::

hmm, I'm not sure we need to keep the discussion/rationale as part of the kernel-doc of the actual flow.

maybe just document here those new steps, and explain the double-migration problem only in the cover/commit message

>   *
>   *      PF                             GuC                              VF
>   *     [ ]                              |                               |
> @@ -102,6 +116,11 @@
>   *      |                              [ ]        new VF provisioning  [ ]
>   *      |                              [ ]---------------------------> [ ]
>   *      |                               |                              [ ]
> + *      |                               |   VF2GUC_NOTIFY_RESFIX_START [ ]
> + *      |                              [ ] <---------------------------[ ]
> + *      |                              [ ]                             [ ]
> + *      |                              [ ]                     success [ ]
> + *      |                              [ ]---------------------------> [ ]
>   *      |                               |       VF driver applies post [ ]
>   *      |                               |      migration fixups -------[ ]
>   *      |                               |                       |      [ ]
> @@ -114,7 +133,9 @@
>   *      |                              [ ]------- VF_RUNNING           [ ]
>   *      |                              [ ]      |                      [ ]
>   *      |                              [ ] <-----                      [ ]
> - *      |                              [ ]                     success [ ]
> + *      |                              [ ]   success (on marker match) [ ]
> + *      |                              [ ]---------------------------> [ ]
> + *      |                              [ ]  Error (on marker mismatch) [ ]
>   *      |                              [ ]---------------------------> [ ]

note that in case of double-migration we expect dedicated VF_MIGRATED state/error

>   *      |                               |                               |
>   *      |                               |                               |
> @@ -169,6 +190,26 @@ static void vf_migration_init_early(struct xe_device *xe)
>  
>  }
>  
> +static void vf_resfix_start_marker_init(struct xe_device *xe)
> +{
> +	struct xe_gt *gt = xe_root_mmio_gt(xe);
> +	struct xe_uc_fw_version guc_version;
> +
> +	if (xe->sriov.vf.migration.disabled)
> +		return;
> +
> +	xe_gt_sriov_vf_guc_versions(gt, NULL, &guc_version);
> +	if (MAKE_GUC_VER_STRUCT(guc_version) < MAKE_GUC_VER(1, 27, 0)) {
> +		xe_sriov_notice(xe,
> +				"Resfix start marker requires GUC ABI >= 1.27.0, but only %u.%u.%u found",
> +				guc_version.major, guc_version.minor, guc_version.patch);

shouldn't we call xe_sriov_vf_migration_disable() instead ?

> +		return;
> +	}
> +
> +	xe->sriov.vf.migration.resfix_marker_enabled = true;
> +	xe_sriov_dbg(xe, "migrate: Resfix start marker support is enabled\n");
> +}
> +
>  /**
>   * xe_sriov_vf_init_early - Initialize SR-IOV VF specific data.
>   * @xe: the &xe_device to initialize
> @@ -188,6 +229,7 @@ void xe_sriov_vf_init_early(struct xe_device *xe)
>   */
>  int xe_sriov_vf_init_late(struct xe_device *xe)
>  {
> +	vf_resfix_start_marker_init(xe);
>  	return xe_sriov_vf_ccs_init(xe);
>  }
>  
> diff --git a/drivers/gpu/drm/xe/xe_sriov_vf_types.h b/drivers/gpu/drm/xe/xe_sriov_vf_types.h
> index d5f72d667817..626c11a6dd1b 100644
> --- a/drivers/gpu/drm/xe/xe_sriov_vf_types.h
> +++ b/drivers/gpu/drm/xe/xe_sriov_vf_types.h
> @@ -38,6 +38,11 @@ struct xe_device_vf {
>  		 * was turned off due to missing prerequisites
>  		 */
>  		bool disabled;
> +		/**
> +		 * @migration.resfix_marker_enabled: flag indicating if resfix marker
> +		 * support was enabled or not due to missing prerequisites.
> +		 */
> +		bool resfix_marker_enabled;
>  	} migration;
>  
>  	/** @ccs: VF CCS state data */


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

* Re: [PATCH v3 2/2] drm/xe/vf: Add debugfs entries to test VF double migration
  2025-11-07 14:10 ` [PATCH v3 2/2] drm/xe/vf: Add debugfs entries to test VF double migration Satyanarayana K V P
@ 2025-11-11 15:26   ` Michal Wajdeczko
  0 siblings, 0 replies; 8+ messages in thread
From: Michal Wajdeczko @ 2025-11-11 15:26 UTC (permalink / raw)
  To: Satyanarayana K V P, intel-xe; +Cc: Matthew Brost, Tomasz Lis



On 11/7/2025 3:10 PM, Satyanarayana K V P wrote:
> VF migration sends a marker to the GUC before resource fixups begin,
> and repeats the marker with the RESFIX_DONE notification. This prevents
> the GUC from submitting jobs during double migration events.
> 
> To reliably test double migration, a second migration must be triggered
> while fixups from the first migration are still in progress. Since fixups
> complete quickly, reproducing this scenario is difficult. Introduce
> debugfs controls to add delays in the post-fixup phase, creating a
> deterministic window for subsequent migrations.
> 
> New debugfs entries:
>   /sys/kernel/debug/dri/<card>/
>   ├── gt0
>   │   ├── vf
>   │   │   ├── resfix_start_delay_ms
> 
> - resfix_start_delay_ms: delay after sending RESFIX_START marker
> 
> Signed-off-by: Satyanarayana K V P <satyanarayana.k.v.p@intel.com>
> Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
> Cc: Matthew Brost <matthew.brost@intel.com>
> Cc: Tomasz Lis <tomasz.lis@intel.com>
> 
> ---
> V2 -> V3:
> - New commit
> 
> V1 -> V2:
> - None.
> ---
>  drivers/gpu/drm/xe/xe_gt_sriov_vf.c         | 13 +++++++++++++
>  drivers/gpu/drm/xe/xe_gt_sriov_vf_debugfs.c |  5 +++++
>  drivers/gpu/drm/xe/xe_gt_sriov_vf_types.h   |  8 ++++++++
>  3 files changed, 26 insertions(+)
> 
> diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_vf.c b/drivers/gpu/drm/xe/xe_gt_sriov_vf.c
> index 17f06cd63527..6443997a1408 100644
> --- a/drivers/gpu/drm/xe/xe_gt_sriov_vf.c
> +++ b/drivers/gpu/drm/xe/xe_gt_sriov_vf.c
> @@ -5,6 +5,7 @@
>  
>  #include <linux/bitfield.h>
>  #include <linux/bsearch.h>
> +#include <linux/delay.h>
>  
>  #include <drm/drm_managed.h>
>  #include <drm/drm_print.h>
> @@ -1278,6 +1279,16 @@ static u16 vf_post_migration_resfix_start_marker(struct xe_gt *gt)
>  	return ++gt->sriov.vf.migration.resfix_marker;
>  }
>  
> +static inline void vf_post_migration_inject_delay(struct xe_gt *gt)
> +{
> +	ulong delay_ms = gt->sriov.vf.migration.debug.resfix_start_delay_ms;
> +
> +	if (delay_ms && vf_resfix_start_marker_supported(gt)) {

drop vf_resfix_start_marker_supported(), it should be always true

> +		xe_gt_sriov_dbg(gt, "Post migration delayed %lu msec", delay_ms);

	"*TESTING* injecting %lu ms delay ...\n"
or
	"*TESTING* sleeping for %lu ms ...\n"


> +		msleep(delay_ms);
> +	}
> +}
> +
>  static void vf_post_migration_recovery(struct xe_gt *gt)
>  {
>  	struct xe_device *xe = gt_to_xe(gt);
> @@ -1315,6 +1326,8 @@ static void vf_post_migration_recovery(struct xe_gt *gt)
>  	if (err)
>  		goto fail;
>  
> +	vf_post_migration_inject_delay(gt);

maybe we should inject delays also at other points:

* before sending a START
* before calling vf_post_migration_fixups
* before calling vf_post_migration_rearm (this patch)
* just before sending DONE

> +
>  	vf_post_migration_rearm(gt);
>  
>  	err = vf_post_migration_notify_resfix_done(gt, marker);
> diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_vf_debugfs.c b/drivers/gpu/drm/xe/xe_gt_sriov_vf_debugfs.c
> index 2ed5b6780d30..2928c65afd15 100644
> --- a/drivers/gpu/drm/xe/xe_gt_sriov_vf_debugfs.c
> +++ b/drivers/gpu/drm/xe/xe_gt_sriov_vf_debugfs.c
> @@ -69,4 +69,9 @@ void xe_gt_sriov_vf_debugfs_register(struct xe_gt *gt, struct dentry *root)
>  	vfdentry->d_inode->i_private = gt;
>  
>  	drm_debugfs_create_files(vf_info, ARRAY_SIZE(vf_info), vfdentry, minor);
> +
> +	if (IS_ENABLED(CONFIG_DRM_XE_DEBUG)) {

do we plan to have double-migration tests in official CI?

if this is only for internal testing, then maybe CONFIG_DRM_XE_DEBUG_SRIOV is more appropriate?

> +		debugfs_create_ulong("resfix_start_delay_ms", 0600, root,

"resfix_delay_ms" ?


> +				     &gt->sriov.vf.migration.debug.resfix_start_delay_ms);
> +	}
>  }
> diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_vf_types.h b/drivers/gpu/drm/xe/xe_gt_sriov_vf_types.h
> index 5707bb808d80..9f4a51cbe38e 100644
> --- a/drivers/gpu/drm/xe/xe_gt_sriov_vf_types.h
> +++ b/drivers/gpu/drm/xe/xe_gt_sriov_vf_types.h
> @@ -52,6 +52,14 @@ struct xe_gt_sriov_vf_migration {
>  	wait_queue_head_t wq;
>  	/** @scratch: Scratch memory for VF recovery */
>  	void *scratch;
> +	/** @debug: Debug hooks for delaying migration */
> +	struct {
> +		/**
> +		 * @debug.resfix_start_delay_ms: Delay in msec
> +		 * after RESFIX_START marker is sent to GUC.

as this is sent _after_ the START, having "start" in the name/comment is questionable 

> +		 */
> +		ulong resfix_start_delay_ms;
> +	} debug;
>  	/**
>  	 * @resfix_marker: Marker sent to Guc prior to starting the
>  	 * post‑migration.


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

end of thread, other threads:[~2025-11-11 15:26 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-11-07 14:10 [PATCH v3 0/2] VF double migration Satyanarayana K V P
2025-11-07 14:10 ` [PATCH v3 1/2] drm/xe/vf: Introduce RESFIX start marker support Satyanarayana K V P
2025-11-11 15:06   ` Michal Wajdeczko
2025-11-07 14:10 ` [PATCH v3 2/2] drm/xe/vf: Add debugfs entries to test VF double migration Satyanarayana K V P
2025-11-11 15:26   ` Michal Wajdeczko
2025-11-07 15:03 ` ✓ CI.KUnit: success for VF double migration (rev3) Patchwork
2025-11-07 15:46 ` ✗ Xe.CI.BAT: failure " Patchwork
2025-11-09  1:31 ` ✗ 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