public inbox for intel-xe@lists.freedesktop.org
 help / color / mirror / Atom feed
* [PATCH v3 0/4] Introduce cold reset recovery method
@ 2026-04-06 14:23 Mallesh Koujalagi
  2026-04-06 14:23 ` [PATCH v3 1/4] Introduce Xe Uncorrectable Error Handling Mallesh Koujalagi
                   ` (7 more replies)
  0 siblings, 8 replies; 12+ messages in thread
From: Mallesh Koujalagi @ 2026-04-06 14:23 UTC (permalink / raw)
  To: intel-xe, dri-devel, rodrigo.vivi
  Cc: andrealmeid, christian.koenig, airlied, simona.vetter, mripard,
	anshuman.gupta, badal.nilawar, riana.tauro, karthik.poosa,
	sk.anirban, raag.jadav, Mallesh Koujalagi

This series builds on top of Introduce Xe Uncorrectable Error Handling[1]
and adds support for handling errors that require a complete
device power cycle (cold reset) to recover.

Certain error conditions leave the device in a persistent hardware
error state that cannot be cleared through existing recovery mechanisms
such as driver reload or PCIe reset. In these cases, functionality can
only be restored by performing a cold reset.

To support this, the series introduces a new DRM wedging recovery
method, DRM_WEDGE_RECOVERY_COLD_RESET (BIT(4)). When a device is wedged
with this method, the DRM core notifies userspace via a uevent that a cold
reset is required. This allows userspace to take appropriate action to
power-cycle the device.

Example uevent received:
  SUBSYSTEM=drm
  WEDGED=cold-reset
  DEVPATH=/devices/.../drm/card0

Detailed description in commit message.

[1] https://patchwork.freedesktop.org/series/160482/
This patch series introduces a call to xe_punit_error_handler() from
within handle_soc_internal_errors() when PUNIT errors detected.

v2:
- Add use case: Handling errors from power management unit,
  which requires a complete power cycle to 
  recover. (Christian)
- Add several instead of number to avoid update. (Jani)

v3:
- Update any scenario that requires cold-reset. (Riana)
- Update document with generic scenario. (Riana)
- Consistent with terminology. (Raag)
- Remove already covered information.
- Use PUNIT instead of PMU. (Riana)
- Use consistent wordingi.
- Remove log. (Raag)

Cc: André Almeida <andrealmeid@igalia.com>
Cc: Christian König <christian.koenig@amd.com>
Cc: David Airlie <airlied@gmail.com>
Cc: Simona Vetter <simona.vetter@ffwll.ch>
Cc: Maxime Ripard <mripard@kernel.org>

Mallesh Koujalagi (3):
  drm: Add DRM_WEDGE_RECOVERY_COLD_RESET recovery method
  drm/doc: Document DRM_WEDGE_RECOVERY_COLD_RESET recovery method
  drm/xe: Handle PUNIT errors by requesting cold-reset recovery

Riana Tauro (1):
  Introduce Xe Uncorrectable Error Handling

 Documentation/gpu/drm-uapi.rst                |  60 +++-
 drivers/gpu/drm/drm_drv.c                     |   2 +
 drivers/gpu/drm/xe/Makefile                   |   2 +
 drivers/gpu/drm/xe/xe_device.c                |  10 +
 drivers/gpu/drm/xe/xe_device.h                |  15 +
 drivers/gpu/drm/xe/xe_device_types.h          |   6 +
 drivers/gpu/drm/xe/xe_gt.c                    |  14 +-
 drivers/gpu/drm/xe/xe_guc_submit.c            |   9 +-
 drivers/gpu/drm/xe/xe_pci.c                   |   3 +
 drivers/gpu/drm/xe/xe_pci_error.c             | 118 ++++++
 drivers/gpu/drm/xe/xe_ras.c                   | 337 ++++++++++++++++++
 drivers/gpu/drm/xe/xe_ras.h                   |  17 +
 drivers/gpu/drm/xe/xe_ras_types.h             | 203 +++++++++++
 drivers/gpu/drm/xe/xe_survivability_mode.c    |  12 +-
 drivers/gpu/drm/xe/xe_sysctrl_mailbox_types.h |  13 +
 include/drm/drm_device.h                      |   1 +
 16 files changed, 813 insertions(+), 9 deletions(-)
 create mode 100644 drivers/gpu/drm/xe/xe_pci_error.c
 create mode 100644 drivers/gpu/drm/xe/xe_ras.c
 create mode 100644 drivers/gpu/drm/xe/xe_ras.h
 create mode 100644 drivers/gpu/drm/xe/xe_ras_types.h

-- 
2.34.1


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

* [PATCH v3 1/4] Introduce Xe Uncorrectable Error Handling
  2026-04-06 14:23 [PATCH v3 0/4] Introduce cold reset recovery method Mallesh Koujalagi
@ 2026-04-06 14:23 ` Mallesh Koujalagi
  2026-04-06 14:23 ` [PATCH v3 2/4] drm: Add DRM_WEDGE_RECOVERY_COLD_RESET recovery method Mallesh Koujalagi
                   ` (6 subsequent siblings)
  7 siblings, 0 replies; 12+ messages in thread
From: Mallesh Koujalagi @ 2026-04-06 14:23 UTC (permalink / raw)
  To: intel-xe, dri-devel, rodrigo.vivi
  Cc: andrealmeid, christian.koenig, airlied, simona.vetter, mripard,
	anshuman.gupta, badal.nilawar, riana.tauro, karthik.poosa,
	sk.anirban, raag.jadav, Mallesh Koujalagi

From: Riana Tauro <riana.tauro@intel.com>

DO NOT REVIEW. COMPILATION ONLY
This patch is from https://patchwork.freedesktop.org/series/160482/
Added only for Compilation.

Signed-off-by: Riana Tauro <riana.tauro@intel.com>
Signed-off-by: Mallesh Koujalagi <mallesh.koujalagi@intel.com>
---
 drivers/gpu/drm/xe/Makefile                   |   2 +
 drivers/gpu/drm/xe/xe_device.c                |  10 +
 drivers/gpu/drm/xe/xe_device.h                |  15 +
 drivers/gpu/drm/xe/xe_device_types.h          |   6 +
 drivers/gpu/drm/xe/xe_gt.c                    |  14 +-
 drivers/gpu/drm/xe/xe_guc_submit.c            |   9 +-
 drivers/gpu/drm/xe/xe_pci.c                   |   3 +
 drivers/gpu/drm/xe/xe_pci_error.c             | 118 +++++++
 drivers/gpu/drm/xe/xe_ras.c                   | 318 ++++++++++++++++++
 drivers/gpu/drm/xe/xe_ras.h                   |  16 +
 drivers/gpu/drm/xe/xe_ras_types.h             | 203 +++++++++++
 drivers/gpu/drm/xe/xe_survivability_mode.c    |  12 +-
 drivers/gpu/drm/xe/xe_sysctrl_mailbox_types.h |  13 +
 13 files changed, 731 insertions(+), 8 deletions(-)
 create mode 100644 drivers/gpu/drm/xe/xe_pci_error.c
 create mode 100644 drivers/gpu/drm/xe/xe_ras.c
 create mode 100644 drivers/gpu/drm/xe/xe_ras.h
 create mode 100644 drivers/gpu/drm/xe/xe_ras_types.h

diff --git a/drivers/gpu/drm/xe/Makefile b/drivers/gpu/drm/xe/Makefile
index 110fef511fe2..2c0017e47644 100644
--- a/drivers/gpu/drm/xe/Makefile
+++ b/drivers/gpu/drm/xe/Makefile
@@ -100,6 +100,7 @@ xe-y += xe_bb.o \
 	xe_page_reclaim.o \
 	xe_pat.o \
 	xe_pci.o \
+	xe_pci_error.o \
 	xe_pci_rebar.o \
 	xe_pcode.o \
 	xe_pm.o \
@@ -111,6 +112,7 @@ xe-y += xe_bb.o \
 	xe_pxp_debugfs.o \
 	xe_pxp_submit.o \
 	xe_query.o \
+	xe_ras.o \
 	xe_range_fence.o \
 	xe_reg_sr.o \
 	xe_reg_whitelist.o \
diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/xe_device.c
index cbce1d0ffe48..32892a1a7377 100644
--- a/drivers/gpu/drm/xe/xe_device.c
+++ b/drivers/gpu/drm/xe/xe_device.c
@@ -60,6 +60,7 @@
 #include "xe_psmi.h"
 #include "xe_pxp.h"
 #include "xe_query.h"
+#include "xe_ras.h"
 #include "xe_shrinker.h"
 #include "xe_soc_remapper.h"
 #include "xe_survivability_mode.h"
@@ -440,6 +441,7 @@ struct xe_device *xe_device_create(struct pci_dev *pdev,
 				   const struct pci_device_id *ent)
 {
 	struct xe_device *xe;
+	void *devres_id;
 	int err;
 
 	xe_display_driver_set_hooks(&driver);
@@ -448,10 +450,16 @@ struct xe_device *xe_device_create(struct pci_dev *pdev,
 	if (err)
 		return ERR_PTR(err);
 
+	devres_id = devres_open_group(&pdev->dev, NULL, GFP_KERNEL);
+	if (!devres_id)
+		return ERR_PTR(-ENOMEM);
+
 	xe = devm_drm_dev_alloc(&pdev->dev, &driver, struct xe_device, drm);
 	if (IS_ERR(xe))
 		return xe;
 
+	xe->devres_group_id = devres_id;
+
 	err = ttm_device_init(&xe->ttm, &xe_ttm_funcs, xe->drm.dev,
 			      xe->drm.anon_inode->i_mapping,
 			      xe->drm.vma_offset_manager, 0);
@@ -1016,6 +1024,8 @@ int xe_device_probe(struct xe_device *xe)
 
 	xe_vsec_init(xe);
 
+	xe_ras_init(xe);
+
 	err = xe_sriov_init_late(xe);
 	if (err)
 		goto err_unregister_display;
diff --git a/drivers/gpu/drm/xe/xe_device.h b/drivers/gpu/drm/xe/xe_device.h
index e4b9de8d8e95..60db2492cb92 100644
--- a/drivers/gpu/drm/xe/xe_device.h
+++ b/drivers/gpu/drm/xe/xe_device.h
@@ -43,6 +43,21 @@ static inline struct xe_device *ttm_to_xe_device(struct ttm_device *ttm)
 	return container_of(ttm, struct xe_device, ttm);
 }
 
+static inline bool xe_device_is_in_recovery(struct xe_device *xe)
+{
+	return atomic_read(&xe->in_recovery);
+}
+
+static inline void xe_device_set_in_recovery(struct xe_device *xe)
+{
+	atomic_set(&xe->in_recovery, 1);
+}
+
+static inline void xe_device_clear_in_recovery(struct xe_device *xe)
+{
+	 atomic_set(&xe->in_recovery, 0);
+}
+
 struct xe_device *xe_device_create(struct pci_dev *pdev,
 				   const struct pci_device_id *ent);
 int xe_device_probe_early(struct xe_device *xe);
diff --git a/drivers/gpu/drm/xe/xe_device_types.h b/drivers/gpu/drm/xe/xe_device_types.h
index 150c76b2acaf..c89e2d31583c 100644
--- a/drivers/gpu/drm/xe/xe_device_types.h
+++ b/drivers/gpu/drm/xe/xe_device_types.h
@@ -494,6 +494,12 @@ struct xe_device {
 		bool inconsistent_reset;
 	} wedged;
 
+	/** @in_recovery: Indicates if device is in recovery */
+	atomic_t in_recovery;
+
+	/** @devres_group_id: id for devres group */
+	void *devres_group_id;
+
 	/** @bo_device: Struct to control async free of BOs */
 	struct xe_bo_dev {
 		/** @bo_device.async_free: Free worker */
diff --git a/drivers/gpu/drm/xe/xe_gt.c b/drivers/gpu/drm/xe/xe_gt.c
index 8a31c963c372..5ea5524d83af 100644
--- a/drivers/gpu/drm/xe/xe_gt.c
+++ b/drivers/gpu/drm/xe/xe_gt.c
@@ -917,6 +917,9 @@ static void gt_reset_worker(struct work_struct *w)
 	if (xe_device_wedged(gt_to_xe(gt)))
 		goto err_pm_put;
 
+	if (xe_device_is_in_recovery(gt_to_xe(gt)))
+		goto err_pm_put;
+
 	/* We only support GT resets with GuC submission */
 	if (!xe_device_uc_enabled(gt_to_xe(gt)))
 		goto err_pm_put;
@@ -977,18 +980,23 @@ static void gt_reset_worker(struct work_struct *w)
 
 void xe_gt_reset_async(struct xe_gt *gt)
 {
-	xe_gt_info(gt, "trying reset from %ps\n", __builtin_return_address(0));
+	struct xe_device *xe = gt_to_xe(gt);
+
+	if (xe_device_is_in_recovery(xe))
+		return;
 
 	/* Don't do a reset while one is already in flight */
 	if (!xe_fault_inject_gt_reset() && xe_uc_reset_prepare(&gt->uc))
 		return;
 
+	xe_gt_info(gt, "trying reset from %ps\n", __builtin_return_address(0));
+
 	xe_gt_info(gt, "reset queued\n");
 
 	/* Pair with put in gt_reset_worker() if work is enqueued */
-	xe_pm_runtime_get_noresume(gt_to_xe(gt));
+	xe_pm_runtime_get_noresume(xe);
 	if (!queue_work(gt->ordered_wq, &gt->reset.worker))
-		xe_pm_runtime_put(gt_to_xe(gt));
+		xe_pm_runtime_put(xe);
 }
 
 void xe_gt_suspend_prepare(struct xe_gt *gt)
diff --git a/drivers/gpu/drm/xe/xe_guc_submit.c b/drivers/gpu/drm/xe/xe_guc_submit.c
index 10556156eaad..1f32fb14a5c1 100644
--- a/drivers/gpu/drm/xe/xe_guc_submit.c
+++ b/drivers/gpu/drm/xe/xe_guc_submit.c
@@ -1522,7 +1522,7 @@ guc_exec_queue_timedout_job(struct drm_sched_job *drm_job)
 	 * If devcoredump not captured and GuC capture for the job is not ready
 	 * do manual capture first and decide later if we need to use it
 	 */
-	if (!exec_queue_killed(q) && !xe->devcoredump.captured &&
+	if (!xe_device_is_in_recovery(xe) && !exec_queue_killed(q) && !xe->devcoredump.captured &&
 	    !xe_guc_capture_get_matching_and_lock(q)) {
 		/* take force wake before engine register manual capture */
 		CLASS(xe_force_wake, fw_ref)(gt_to_fw(q->gt), XE_FORCEWAKE_ALL);
@@ -1544,8 +1544,8 @@ guc_exec_queue_timedout_job(struct drm_sched_job *drm_job)
 	set_exec_queue_banned(q);
 
 	/* Kick job / queue off hardware */
-	if (!wedged && (exec_queue_enabled(primary) ||
-			exec_queue_pending_disable(primary))) {
+	if (!xe_device_is_in_recovery(xe) && !wedged &&
+	    (exec_queue_enabled(primary) || exec_queue_pending_disable(primary))) {
 		int ret;
 
 		if (exec_queue_reset(primary))
@@ -1613,7 +1613,8 @@ guc_exec_queue_timedout_job(struct drm_sched_job *drm_job)
 
 	trace_xe_sched_job_timedout(job);
 
-	if (!exec_queue_killed(q))
+	/* Do not access device if in recovery */
+	if (!xe_device_is_in_recovery(xe) && !exec_queue_killed(q))
 		xe_devcoredump(q, job,
 			       "Timedout job - seqno=%u, lrc_seqno=%u, guc_id=%d, flags=0x%lx",
 			       xe_sched_job_seqno(job), xe_sched_job_lrc_seqno(job),
diff --git a/drivers/gpu/drm/xe/xe_pci.c b/drivers/gpu/drm/xe/xe_pci.c
index 1df3f08e2e1c..30d71795dd2e 100644
--- a/drivers/gpu/drm/xe/xe_pci.c
+++ b/drivers/gpu/drm/xe/xe_pci.c
@@ -1323,6 +1323,8 @@ static const struct dev_pm_ops xe_pm_ops = {
 };
 #endif
 
+extern const struct pci_error_handlers xe_pci_error_handlers;
+
 static struct pci_driver xe_pci_driver = {
 	.name = DRIVER_NAME,
 	.id_table = pciidlist,
@@ -1330,6 +1332,7 @@ static struct pci_driver xe_pci_driver = {
 	.remove = xe_pci_remove,
 	.shutdown = xe_pci_shutdown,
 	.sriov_configure = xe_pci_sriov_configure,
+	.err_handler = &xe_pci_error_handlers,
 #ifdef CONFIG_PM_SLEEP
 	.driver.pm = &xe_pm_ops,
 #endif
diff --git a/drivers/gpu/drm/xe/xe_pci_error.c b/drivers/gpu/drm/xe/xe_pci_error.c
new file mode 100644
index 000000000000..71b6152c1593
--- /dev/null
+++ b/drivers/gpu/drm/xe/xe_pci_error.c
@@ -0,0 +1,118 @@
+// SPDX-License-Identifier: MIT
+/*
+ * Copyright © 2026 Intel Corporation
+ */
+#include <linux/pci.h>
+
+#include <drm/drm_drv.h>
+
+#include "xe_device.h"
+#include "xe_gt.h"
+#include "xe_pci.h"
+#include "xe_ras.h"
+#include "xe_survivability_mode.h"
+#include "xe_uc.h"
+
+static void xe_pci_error_handling(struct pci_dev *pdev)
+{
+	struct xe_device *xe = pdev_to_xe_device(pdev);
+	struct xe_gt *gt;
+	u8 id;
+
+	/* Return if device is wedged or in survivability mode */
+	if (xe_survivability_mode_is_boot_enabled(xe) || xe_device_wedged(xe))
+		return;
+
+	/* Wedge the device to prevent userspace access but don't send the event yet */
+	atomic_set(&xe->wedged.flag, 1);
+
+	for_each_gt(gt, xe, id)
+		xe_gt_declare_wedged(gt);
+
+	pci_disable_device(pdev);
+}
+
+/* Mapping of RAS recovery action to PCI error result */
+static const pci_ers_result_t ras_recovery_action_to_pci_result[] = {
+	[XE_RAS_RECOVERY_ACTION_RECOVERED] = PCI_ERS_RESULT_RECOVERED,
+	[XE_RAS_RECOVERY_ACTION_RESET] = PCI_ERS_RESULT_NEED_RESET,
+	[XE_RAS_RECOVERY_ACTION_DISCONNECT] = PCI_ERS_RESULT_DISCONNECT,
+};
+
+static pci_ers_result_t xe_pci_error_detected(struct pci_dev *pdev, pci_channel_state_t state)
+{
+	struct xe_device *xe = pdev_to_xe_device(pdev);
+
+	dev_err(&pdev->dev, "Xe Pci error recovery: error detected state %d\n", state);
+
+	if (state == pci_channel_io_perm_failure)
+		return PCI_ERS_RESULT_DISCONNECT;
+
+	xe_device_set_in_recovery(xe);
+
+	switch (state) {
+	case pci_channel_io_normal:
+		return PCI_ERS_RESULT_CAN_RECOVER;
+	case pci_channel_io_frozen:
+		xe_pci_error_handling(pdev);
+		return PCI_ERS_RESULT_NEED_RESET;
+	default:
+		dev_err(&pdev->dev, "Unknown state %d\n", state);
+		return PCI_ERS_RESULT_NEED_RESET;
+	}
+}
+
+static pci_ers_result_t xe_pci_error_mmio_enabled(struct pci_dev *pdev)
+{
+	struct xe_device *xe = pdev_to_xe_device(pdev);
+	enum xe_ras_recovery_action action;
+
+	dev_err(&pdev->dev, "Xe Pci error recovery: MMIO enabled\n");
+	action = xe_ras_process_errors(xe);
+
+	return ras_recovery_action_to_pci_result[action];
+}
+
+static pci_ers_result_t xe_pci_error_slot_reset(struct pci_dev *pdev)
+{
+	const struct pci_device_id *ent = pci_match_id(pdev->driver->id_table, pdev);
+	struct xe_device *xe = pdev_to_xe_device(pdev);
+
+	dev_err(&pdev->dev, "Xe Pci error recovery: Slot reset\n");
+
+	pci_restore_state(pdev);
+
+	if (pci_enable_device(pdev)) {
+		dev_err(&pdev->dev,
+			"Cannot re-enable PCI device after reset\n");
+		return PCI_ERS_RESULT_DISCONNECT;
+	}
+
+	/*
+	 * Secondary Bus Reset wipes out all device memory
+	 * requiring XE KMD to perform a device removal and reprobe.
+	 */
+	pdev->driver->remove(pdev);
+	devres_release_group(&pdev->dev, xe->devres_group_id);
+
+	if (!pdev->driver->probe(pdev, ent))
+		return PCI_ERS_RESULT_RECOVERED;
+
+	return PCI_ERS_RESULT_DISCONNECT;
+}
+
+static void xe_pci_error_resume(struct pci_dev *pdev)
+{
+	struct xe_device *xe = pdev_to_xe_device(pdev);
+
+	dev_info(&pdev->dev, "Xe Pci error recovery: Recovered\n");
+
+	xe_device_clear_in_recovery(xe);
+}
+
+const struct pci_error_handlers xe_pci_error_handlers = {
+	.error_detected	= xe_pci_error_detected,
+	.mmio_enabled	= xe_pci_error_mmio_enabled,
+	.slot_reset	= xe_pci_error_slot_reset,
+	.resume		= xe_pci_error_resume,
+};
diff --git a/drivers/gpu/drm/xe/xe_ras.c b/drivers/gpu/drm/xe/xe_ras.c
new file mode 100644
index 000000000000..437811845c01
--- /dev/null
+++ b/drivers/gpu/drm/xe/xe_ras.c
@@ -0,0 +1,318 @@
+// SPDX-License-Identifier: MIT
+/*
+ * Copyright © 2026 Intel Corporation
+ */
+
+#include "xe_assert.h"
+#include "xe_device_types.h"
+#include "xe_printk.h"
+#include "xe_ras.h"
+#include "xe_ras_types.h"
+#include "xe_survivability_mode.h"
+#include "xe_sysctrl_mailbox.h"
+#include "xe_sysctrl_mailbox_types.h"
+
+#define COMPUTE_ERROR_SEVERITY_MASK		GENMASK(26, 25)
+#define GLOBAL_UNCORR_ERROR			2
+/* Modify as needed */
+#define XE_SYSCTRL_ERROR_FLOOD			16
+
+/* Severity classification of detected errors */
+enum xe_ras_severity {
+	XE_RAS_SEVERITY_NOT_SUPPORTED = 0,
+	XE_RAS_SEVERITY_CORRECTABLE,
+	XE_RAS_SEVERITY_UNCORRECTABLE,
+	XE_RAS_SEVERITY_INFORMATIONAL,
+	XE_RAS_SEVERITY_MAX
+};
+
+/* major IP blocks where errors can originate */
+enum xe_ras_component {
+	XE_RAS_COMPONENT_NOT_SUPPORTED = 0,
+	XE_RAS_COMPONENT_DEVICE_MEMORY,
+	XE_RAS_COMPONENT_CORE_COMPUTE,
+	XE_RAS_COMPONENT_RESERVED,
+	XE_RAS_COMPONENT_PCIE,
+	XE_RAS_COMPONENT_FABRIC,
+	XE_RAS_COMPONENT_SOC_INTERNAL,
+	XE_RAS_COMPONENT_MAX
+};
+
+static const char * const xe_ras_severities[] = {
+	[XE_RAS_SEVERITY_NOT_SUPPORTED]		= "Not Supported",
+	[XE_RAS_SEVERITY_CORRECTABLE]		= "Correctable",
+	[XE_RAS_SEVERITY_UNCORRECTABLE]		= "Uncorrectable",
+	[XE_RAS_SEVERITY_INFORMATIONAL]		= "Informational",
+};
+
+static_assert(ARRAY_SIZE(xe_ras_severities) == XE_RAS_SEVERITY_MAX);
+
+static const char * const xe_ras_components[] = {
+	[XE_RAS_COMPONENT_NOT_SUPPORTED]	= "Not Supported",
+	[XE_RAS_COMPONENT_DEVICE_MEMORY]	= "Device Memory",
+	[XE_RAS_COMPONENT_CORE_COMPUTE]		= "Core Compute",
+	[XE_RAS_COMPONENT_RESERVED]		= "Reserved",
+	[XE_RAS_COMPONENT_PCIE]			= "PCIe",
+	[XE_RAS_COMPONENT_FABRIC]		= "Fabric",
+	[XE_RAS_COMPONENT_SOC_INTERNAL]		= "SoC Internal",
+};
+
+static_assert(ARRAY_SIZE(xe_ras_components) == XE_RAS_COMPONENT_MAX);
+
+static inline const char *severity_to_str(struct xe_device *xe, u32 severity)
+{
+	xe_assert(xe, severity < XE_RAS_SEVERITY_MAX);
+
+	return severity < XE_RAS_SEVERITY_MAX ? xe_ras_severities[severity] : "Unknown";
+}
+
+static inline const char *comp_to_str(struct xe_device *xe, u32 comp)
+{
+	xe_assert(xe, comp < XE_RAS_COMPONENT_MAX);
+
+	return comp < XE_RAS_COMPONENT_MAX ? xe_ras_components[comp] : "Unknown";
+}
+
+static enum xe_ras_recovery_action handle_compute_errors(struct xe_device *xe,
+							 struct xe_ras_error_array *arr)
+{
+	struct xe_ras_compute_error *error_info = (struct xe_ras_compute_error *)arr->error_details;
+	struct xe_ras_error_common common = arr->error_class.common;
+	u8 uncorr_type;
+
+	uncorr_type = FIELD_GET(COMPUTE_ERROR_SEVERITY_MASK, error_info->error_log_header);
+
+	xe_err(xe, "[RAS]: %s %s Error detected", severity_to_str(xe, common.severity),
+	       comp_to_str(xe, common.component));
+
+	/* Request a RESET if error is global */
+	if (uncorr_type == GLOBAL_UNCORR_ERROR)
+		return XE_RAS_RECOVERY_ACTION_RESET;
+
+	/* Local errors are recovered using a engine reset by GuC */
+	return XE_RAS_RECOVERY_ACTION_RECOVERED;
+}
+
+static enum xe_ras_recovery_action handle_soc_internal_errors(struct xe_device *xe,
+							      struct xe_ras_error_array *arr)
+{
+	struct xe_ras_soc_error *error_info =
+		(struct xe_ras_soc_error *)arr->error_details;
+	struct xe_ras_soc_error_source source = error_info->error_source;
+	struct xe_ras_error_common common = arr->error_class.common;
+
+	xe_err(xe, "[RAS]: %s %s Error detected", severity_to_str(xe, common.severity),
+	       comp_to_str(xe, common.component));
+
+	if (source.csc) {
+		struct xe_ras_csc_error *csc_error =
+			(struct xe_ras_csc_error *)error_info->additional_details;
+
+		/*
+		 * CSC uncorrectable errors are classified as hardware errors and firmware errors.
+		 * CSC firmware errors are critical errors that can be recovered only by firmware
+		 * update via SPI driver. PCODE enables FDO mode and sets the bit in the capability
+		 * register. On receiving this error, the driver enables runtime survivability mode
+		 * which notifies userspace that a firmware update is required.
+		 */
+		if (csc_error->hec_uncorr_fw_err_dw0) {
+			xe_err(xe, "[RAS]: CSC %s error detected: 0x%x\n",
+			       severity_to_str(xe, common.severity),
+			       csc_error->hec_uncorr_fw_err_dw0);
+			xe_survivability_mode_runtime_enable(xe);
+			return XE_RAS_RECOVERY_ACTION_DISCONNECT;
+		}
+	}
+
+	if (source.soc) {
+		struct xe_ras_ieh_error *ieh_error =
+			(struct xe_ras_ieh_error *)error_info->additional_details;
+
+		if (ieh_error->global_error_status & XE_RAS_IEH_PUNIT_ERROR) {
+			xe_err(xe, "[RAS]: PUNIT %s error detected: 0x%x\n",
+			       severity_to_str(xe, common.severity),
+			       ieh_error->global_error_status);
+			/** TODO: Add PUNIT error handling */
+			return XE_RAS_RECOVERY_ACTION_DISCONNECT;
+		}
+	}
+
+	/* For other SOC internal errors, request a reset as recovery mechanism */
+	return XE_RAS_RECOVERY_ACTION_RESET;
+}
+
+static void prepare_sysctrl_command(struct xe_sysctrl_mailbox_command *command,
+				    u32 cmd_mask, void *request, size_t request_len,
+				    void *response, size_t response_len)
+{
+	struct xe_sysctrl_app_msg_hdr hdr = {0};
+	u32 req_hdr;
+
+	req_hdr = FIELD_PREP(APP_HDR_GROUP_ID_MASK, XE_SYSCTRL_GROUP_GFSP) |
+		  FIELD_PREP(APP_HDR_COMMAND_MASK, cmd_mask);
+
+	hdr.data = req_hdr;
+	command->header = hdr;
+	command->data_in = request;
+	command->data_in_len = request_len;
+	command->data_out = response;
+	command->data_out_len = response_len;
+}
+
+/**
+ * xe_ras_process_errors - Process and contain hardware errors
+ * @xe: xe device instance
+ *
+ * Get error details from system controller and return recovery
+ * method. Called only from PCI error handling.
+ *
+ * Returns: recovery action to be taken
+ */
+enum xe_ras_recovery_action xe_ras_process_errors(struct xe_device *xe)
+{
+	struct xe_sysctrl_mailbox_command command = {0};
+	struct xe_ras_get_error_response response;
+	enum xe_ras_recovery_action final_action;
+	u32 count = 0;
+	size_t rlen;
+	int ret;
+
+	/* Default action */
+	final_action = XE_RAS_RECOVERY_ACTION_RECOVERED;
+
+	if (!xe->info.has_sysctrl)
+		return XE_RAS_RECOVERY_ACTION_RESET;
+
+	prepare_sysctrl_command(&command, XE_SYSCTRL_CMD_GET_SOC_ERROR, NULL, 0,
+				&response, sizeof(response));
+
+	do {
+		memset(&response, 0, sizeof(response));
+		rlen = 0;
+
+		ret = xe_sysctrl_send_command(&xe->sc, &command, &rlen);
+		if (ret) {
+			xe_err(xe, "[RAS]: Sysctrl error ret %d\n", ret);
+			goto err;
+		}
+
+		if (rlen != sizeof(response)) {
+			xe_err(xe, "[RAS]: Sysctrl response size mismatch. Expected %zu, got %zu\n",
+			       sizeof(response), rlen);
+			goto err;
+		}
+
+		for (int i = 0; i < response.num_errors &&  i < XE_RAS_NUM_ERROR_ARR; i++) {
+			struct xe_ras_error_array arr = response.error_arr[i];
+			enum xe_ras_recovery_action action;
+			struct xe_ras_error_class error_class;
+			u8 component;
+
+			error_class = arr.error_class;
+			component = error_class.common.component;
+
+			switch (component) {
+			case XE_RAS_COMPONENT_CORE_COMPUTE:
+				action = handle_compute_errors(xe, &arr);
+				break;
+			case XE_RAS_COMPONENT_SOC_INTERNAL:
+				action = handle_soc_internal_errors(xe, &arr);
+				break;
+			default:
+				xe_err(xe, "[RAS]: Unknown error component %u\n", component);
+				action = XE_RAS_RECOVERY_ACTION_RESET;
+				break;
+			}
+
+			/*
+			 * Retain the highest severity action. Process and log all errors
+			 * and then take appropriate recovery action.
+			 */
+			if (action > final_action)
+				final_action = action;
+		}
+
+		/* Break if system controller floods responses */
+		if (++count > XE_SYSCTRL_ERROR_FLOOD) {
+			xe_err(xe, "[RAS]: Sysctrl response flooding\n");
+			break;
+		}
+
+	} while (response.additional_errors);
+
+	return final_action;
+
+err:
+	return XE_RAS_RECOVERY_ACTION_RESET;
+}
+
+#ifdef CONFIG_PCIEAER
+static void aer_unmask_and_downgrade_internal_error(struct xe_device *xe)
+{
+	struct pci_dev *pdev = to_pci_dev(xe->drm.dev);
+	struct pci_dev *vsp, *usp;
+	u32 aer_uncorr_mask, aer_uncorr_sev, aer_uncorr_status;
+	u16 aer_cap;
+
+	 /* Gfx Device Hierarchy: USP-->VSP-->SGunit */
+	vsp = pci_upstream_bridge(pdev);
+	if (!vsp)
+		return;
+
+	usp = pci_upstream_bridge(vsp);
+	if (!usp)
+		return;
+
+	aer_cap = usp->aer_cap;
+
+	if (!aer_cap)
+		return;
+
+	/*
+	 * Clear any stale Uncorrectable Internal Error Status event in Uncorrectable Error
+	 * Status Register.
+	 */
+	pci_read_config_dword(usp, aer_cap + PCI_ERR_UNCOR_STATUS, &aer_uncorr_status);
+	if (aer_uncorr_status & PCI_ERR_UNC_INTN)
+		pci_write_config_dword(usp, aer_cap + PCI_ERR_UNCOR_STATUS, PCI_ERR_UNC_INTN);
+
+	/*
+	 * All errors are steered to USP which is a PCIe AER Compliant device.
+	 * Downgrade all the errors to non-fatal to prevent PCIe bus driver
+	 * from triggering a Secondary Bus Reset (SBR). This allows error
+	 * detection, containment and recovery in the driver.
+	 *
+	 * The Uncorrectable Error Severity Register has the 'Uncorrectable
+	 * Internal Error Severity' set to fatal by default. Set this to
+	 * non-fatal and unmask the error.
+	 */
+
+	/* Initialize Uncorrectable Error Severity Register */
+	pci_read_config_dword(usp, aer_cap + PCI_ERR_UNCOR_SEVER, &aer_uncorr_sev);
+	aer_uncorr_sev &= ~PCI_ERR_UNC_INTN;
+	pci_write_config_dword(usp, aer_cap + PCI_ERR_UNCOR_SEVER, aer_uncorr_sev);
+
+	/* Initialize Uncorrectable Error Mask Register */
+	pci_read_config_dword(usp, aer_cap + PCI_ERR_UNCOR_MASK, &aer_uncorr_mask);
+	aer_uncorr_mask &= ~PCI_ERR_UNC_INTN;
+	pci_write_config_dword(usp, aer_cap + PCI_ERR_UNCOR_MASK, aer_uncorr_mask);
+
+	pci_save_state(usp);
+}
+#endif
+
+/**
+ * xe_ras_init - Initialize Xe RAS
+ * @xe: xe device instance
+ *
+ * Initialize Xe RAS
+ */
+void xe_ras_init(struct xe_device *xe)
+{
+	if (!xe->info.has_sysctrl)
+		return;
+
+#ifdef CONFIG_PCIEAER
+	aer_unmask_and_downgrade_internal_error(xe);
+#endif
+}
diff --git a/drivers/gpu/drm/xe/xe_ras.h b/drivers/gpu/drm/xe/xe_ras.h
new file mode 100644
index 000000000000..e191ab80080c
--- /dev/null
+++ b/drivers/gpu/drm/xe/xe_ras.h
@@ -0,0 +1,16 @@
+/* SPDX-License-Identifier: MIT */
+/*
+ * Copyright © 2026 Intel Corporation
+ */
+
+#ifndef _XE_RAS_H_
+#define _XE_RAS_H_
+
+#include "xe_ras_types.h"
+
+struct xe_device;
+
+void xe_ras_init(struct xe_device *xe);
+enum xe_ras_recovery_action  xe_ras_process_errors(struct xe_device *xe);
+
+#endif
diff --git a/drivers/gpu/drm/xe/xe_ras_types.h b/drivers/gpu/drm/xe/xe_ras_types.h
new file mode 100644
index 000000000000..65158bf716a7
--- /dev/null
+++ b/drivers/gpu/drm/xe/xe_ras_types.h
@@ -0,0 +1,203 @@
+/* SPDX-License-Identifier: MIT */
+/*
+ * Copyright © 2026 Intel Corporation
+ */
+
+#ifndef _XE_RAS_TYPES_H_
+#define _XE_RAS_TYPES_H_
+
+#include <linux/types.h>
+
+#define XE_RAS_NUM_ERROR_ARR		3
+#define XE_RAS_MAX_ERROR_DETAILS	16
+#define XE_RAS_IEH_PUNIT_ERROR		BIT(1)
+
+/**
+ * enum xe_ras_recovery_action - RAS recovery actions
+ *
+ * @XE_RAS_RECOVERY_ACTION_RECOVERED: Error recovered
+ * @XE_RAS_RECOVERY_ACTION_RESET: Requires reset
+ * @XE_RAS_RECOVERY_ACTION_DISCONNECT: Requires disconnect
+ * @XE_RAS_RECOVERY_ACTION_MAX: Max action value
+ *
+ * This enum defines the possible recovery actions that can be taken in response
+ * to RAS errors.
+ */
+enum xe_ras_recovery_action {
+	XE_RAS_RECOVERY_ACTION_RECOVERED = 0,
+	XE_RAS_RECOVERY_ACTION_RESET,
+	XE_RAS_RECOVERY_ACTION_DISCONNECT,
+	XE_RAS_RECOVERY_ACTION_MAX
+};
+
+/**
+ * struct xe_ras_error_common - Common RAS error class
+ *
+ * This structure contains error severity and component information
+ * across all products
+ */
+struct xe_ras_error_common {
+	/** @severity: Error Severity */
+	u8 severity;
+	/** @component: IP where the error originated */
+	u8 component;
+} __packed;
+
+/**
+ * struct xe_ras_error_unit - Error unit information
+ */
+struct xe_ras_error_unit {
+	/** @tile: Tile identifier */
+	u8 tile;
+	/** @instance: Instance identifier within a component */
+	u32 instance;
+} __packed;
+
+/**
+ * struct xe_ras_error_cause - Error cause information
+ */
+struct xe_ras_error_cause {
+	/** @cause: Cause */
+	u32 cause;
+	/** @reserved: For future use */
+	u8 reserved;
+} __packed;
+
+/**
+ * struct xe_ras_error_product - Error fields that are specific to the product
+ */
+struct xe_ras_error_product {
+	/** @unit: Unit within IP block */
+	struct xe_ras_error_unit unit;
+	/** @error_cause: Cause/checker */
+	struct xe_ras_error_cause error_cause;
+} __packed;
+
+/**
+ * struct xe_ras_error_class - Complete RAS Error Class
+ *
+ * This structure provides the complete error classification by combining
+ * the common error class with the product-specific error class.
+ */
+struct xe_ras_error_class {
+	/** @common: Common error severity and component */
+	struct xe_ras_error_common common;
+	/** @product: Product-specific unit and cause */
+	struct xe_ras_error_product product;
+} __packed;
+
+/**
+ * struct xe_ras_error_array - Details of the error types
+ */
+struct xe_ras_error_array {
+	/** @counter_value: Counter value of the returned error */
+	u32 counter_value;
+	/** @error_class: Error class */
+	struct xe_ras_error_class error_class;
+	/** @timestamp: Timestamp */
+	u64 timestamp;
+	/** @error_details: Error details specific to the class */
+	u32 error_details[XE_RAS_MAX_ERROR_DETAILS];
+} __packed;
+
+/**
+ * struct xe_ras_get_error_response - Response for XE_SYSCTRL_GET_SOC_ERROR
+ */
+struct xe_ras_get_error_response {
+	/** @num_errors: Number of errors reported in this response */
+	u8 num_errors;
+	/** @additional_errors: Indicates if the errors are pending */
+	u8 additional_errors;
+	/** @error_arr: Array of up to 3 errors */
+	struct xe_ras_error_array error_arr[XE_RAS_NUM_ERROR_ARR];
+} __packed;
+
+/**
+ * struct xe_ras_compute_error - Error details of Core Compute error
+ */
+struct xe_ras_compute_error {
+	/** @error_log_header: Error Source and type */
+	u32 error_log_header;
+	/** @internal_error_log: Internal Error log */
+	u32 internal_error_log;
+	/** @fabric_log: Fabric Error log */
+	u32 fabric_log;
+	/** @internal_error_addr_log0: Internal Error addr log */
+	u32 internal_error_addr_log0;
+	/** @internal_error_addr_log1: Internal Error addr log */
+	u32 internal_error_addr_log1;
+	/** @packet_log0: Packet log */
+	u32 packet_log0;
+	/** @packet_log1: Packet log */
+	u32 packet_log1;
+	/** @packet_log2: Packet log */
+	u32 packet_log2;
+	/** @packet_log3: Packet log */
+	u32 packet_log3;
+	/** @packet_log4: Packet log */
+	u32 packet_log4;
+	/** @misc_log0: Misc log */
+	u32 misc_log0;
+	/** @misc_log1: Misc log */
+	u32 misc_log1;
+	/** @spare_log0: Spare log */
+	u32 spare_log0;
+	/** @spare_log1: Spare log */
+	u32 spare_log1;
+	/** @spare_log2: Spare log */
+	u32 spare_log2;
+	/** @spare_log3: Spare log */
+	u32 spare_log3;
+} __packed;
+
+/**
+ * struct xe_ras_soc_error_source - Source of SOC error
+ */
+struct xe_ras_soc_error_source {
+	/** @csc: CSC error */
+	u32 csc:1;
+	/** @soc: SOC error */
+	u32 soc:1;
+	/** @reserved: Reserved for future use */
+	u32 reserved:30;
+} __packed;
+
+/**
+ * struct xe_ras_soc_error - SOC error details
+ */
+struct xe_ras_soc_error {
+	/** @error_source: Error Source */
+	struct xe_ras_soc_error_source error_source;
+	/** @additional_details: Additional details */
+	u32 additional_details[15];
+} __packed;
+
+/**
+ * struct xe_ras_csc_error - CSC error details
+ */
+struct xe_ras_csc_error {
+	/** @hec_uncorr_err_status: CSC error */
+	u32 hec_uncorr_err_status;
+	/** @hec_uncorr_fw_err_dw0: CSC f/w error */
+	u32 hec_uncorr_fw_err_dw0;
+} __packed;
+
+/**
+ * struct xe_ras_ieh_error - SoC IEH (Integrated Error Handler) details
+ */
+struct xe_ras_ieh_error {
+	/** @ieh_instance: IEH instance */
+	u32 ieh_instance:2;
+	/** @reserved: Reserved for future use */
+	u32 reserved:30;
+	/** @global_error_status: Global error status */
+	u32 global_error_status;
+	/** @local_error_status: Local error status */
+	u32 local_error_status;
+	/** @gerr_mask: Global error mask */
+	u32 gerr_mask;
+	/** @additional_info: Additional information */
+	u32 additional_info[10];
+} __packed;
+
+#endif
diff --git a/drivers/gpu/drm/xe/xe_survivability_mode.c b/drivers/gpu/drm/xe/xe_survivability_mode.c
index db64cac39c94..ad51a58831b0 100644
--- a/drivers/gpu/drm/xe/xe_survivability_mode.c
+++ b/drivers/gpu/drm/xe/xe_survivability_mode.c
@@ -98,6 +98,15 @@
  *	# cat /sys/bus/pci/devices/<device>/survivability_mode
  *	  Runtime
  *
+ * On some CSC firmware errors, PCODE sets FDO mode and the only recovery possible is through
+ * firmware flash using SPI driver. Userspace can check if FDO mode is set by checking the below
+ * sysfs entry.
+ *
+ * .. code-block:: shell
+ *
+ *	# cat /sys/bus/pci/devices/<device>/survivability_info/fdo_mode
+ *       enabled
+ *
  * When such errors occur, userspace is notified with the drm device wedged uevent and runtime
  * survivability mode. User can then initiate a firmware flash using userspace tools like fwupd
  * to restore device to normal operation.
@@ -296,7 +305,8 @@ static int create_survivability_sysfs(struct pci_dev *pdev)
 	if (ret)
 		return ret;
 
-	if (check_boot_failure(xe)) {
+	/* Survivability info is not required if enabled via configfs */
+	if (!xe_configfs_get_survivability_mode(pdev)) {
 		ret = devm_device_add_group(dev, &survivability_info_group);
 		if (ret)
 			return ret;
diff --git a/drivers/gpu/drm/xe/xe_sysctrl_mailbox_types.h b/drivers/gpu/drm/xe/xe_sysctrl_mailbox_types.h
index 89456aec6097..a4260920dfb4 100644
--- a/drivers/gpu/drm/xe/xe_sysctrl_mailbox_types.h
+++ b/drivers/gpu/drm/xe/xe_sysctrl_mailbox_types.h
@@ -10,6 +10,19 @@
 
 #include "abi/xe_sysctrl_abi.h"
 
+/**
+ * enum xe_sysctrl_mailbox_command_id - RAS Command ID's for GFSP group
+ *
+ * @XE_SYSCTRL_CMD_GET_SOC_ERROR: Get basic error information
+ */
+enum xe_sysctrl_mailbox_command_id {
+	XE_SYSCTRL_CMD_GET_SOC_ERROR = 1
+};
+
+enum xe_sysctrl_group {
+	XE_SYSCTRL_GROUP_GFSP = 1
+};
+
 /**
  * struct xe_sysctrl_mailbox_command - System Controller mailbox command
  */
-- 
2.34.1


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

* [PATCH v3 2/4] drm: Add DRM_WEDGE_RECOVERY_COLD_RESET recovery method
  2026-04-06 14:23 [PATCH v3 0/4] Introduce cold reset recovery method Mallesh Koujalagi
  2026-04-06 14:23 ` [PATCH v3 1/4] Introduce Xe Uncorrectable Error Handling Mallesh Koujalagi
@ 2026-04-06 14:23 ` Mallesh Koujalagi
  2026-04-08  7:46   ` Raag Jadav
  2026-04-06 14:23 ` [PATCH v3 3/4] drm/doc: Document " Mallesh Koujalagi
                   ` (5 subsequent siblings)
  7 siblings, 1 reply; 12+ messages in thread
From: Mallesh Koujalagi @ 2026-04-06 14:23 UTC (permalink / raw)
  To: intel-xe, dri-devel, rodrigo.vivi
  Cc: andrealmeid, christian.koenig, airlied, simona.vetter, mripard,
	anshuman.gupta, badal.nilawar, riana.tauro, karthik.poosa,
	sk.anirban, raag.jadav, Mallesh Koujalagi

Introduce DRM_WEDGE_RECOVERY_COLD_RESET (BIT(4)) recovery
method to handle scenarios requiring complete cold reset.

This method addresses cases where other recovery mechanisms
(driver reload, PCIe reset, etc.) are insufficient to restore
device functionality. When set, it indicates to userspace that
only a full cold reset can recover the device from its current
error state. The cold reset method serves as a last resort
when all other recovery options have been exhausted.

v3:
- Update any scenario that requires cold-reset. (Riana)

Signed-off-by: Mallesh Koujalagi <mallesh.koujalagi@intel.com>
---
 drivers/gpu/drm/drm_drv.c | 2 ++
 include/drm/drm_device.h  | 1 +
 2 files changed, 3 insertions(+)

diff --git a/drivers/gpu/drm/drm_drv.c b/drivers/gpu/drm/drm_drv.c
index 985c283cf59f..8c0236e2e6a6 100644
--- a/drivers/gpu/drm/drm_drv.c
+++ b/drivers/gpu/drm/drm_drv.c
@@ -535,6 +535,8 @@ static const char *drm_get_wedge_recovery(unsigned int opt)
 		return "bus-reset";
 	case DRM_WEDGE_RECOVERY_VENDOR:
 		return "vendor-specific";
+	case DRM_WEDGE_RECOVERY_COLD_RESET:
+		return "cold-reset";
 	default:
 		return NULL;
 	}
diff --git a/include/drm/drm_device.h b/include/drm/drm_device.h
index bc78fb77cc27..3e386eb42023 100644
--- a/include/drm/drm_device.h
+++ b/include/drm/drm_device.h
@@ -37,6 +37,7 @@ struct pci_controller;
 #define DRM_WEDGE_RECOVERY_REBIND	BIT(1)	/* unbind + bind driver */
 #define DRM_WEDGE_RECOVERY_BUS_RESET	BIT(2)	/* unbind + reset bus device + bind */
 #define DRM_WEDGE_RECOVERY_VENDOR	BIT(3)	/* vendor specific recovery method */
+#define DRM_WEDGE_RECOVERY_COLD_RESET	BIT(4)	/* full device cold reset */
 
 /**
  * struct drm_wedge_task_info - information about the guilty task of a wedge dev
-- 
2.34.1


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

* [PATCH v3 3/4] drm/doc: Document DRM_WEDGE_RECOVERY_COLD_RESET recovery method
  2026-04-06 14:23 [PATCH v3 0/4] Introduce cold reset recovery method Mallesh Koujalagi
  2026-04-06 14:23 ` [PATCH v3 1/4] Introduce Xe Uncorrectable Error Handling Mallesh Koujalagi
  2026-04-06 14:23 ` [PATCH v3 2/4] drm: Add DRM_WEDGE_RECOVERY_COLD_RESET recovery method Mallesh Koujalagi
@ 2026-04-06 14:23 ` Mallesh Koujalagi
  2026-04-08  8:01   ` Raag Jadav
  2026-04-06 14:23 ` [PATCH v3 4/4] drm/xe: Handle PUNIT errors by requesting cold-reset recovery Mallesh Koujalagi
                   ` (4 subsequent siblings)
  7 siblings, 1 reply; 12+ messages in thread
From: Mallesh Koujalagi @ 2026-04-06 14:23 UTC (permalink / raw)
  To: intel-xe, dri-devel, rodrigo.vivi
  Cc: andrealmeid, christian.koenig, airlied, simona.vetter, mripard,
	anshuman.gupta, badal.nilawar, riana.tauro, karthik.poosa,
	sk.anirban, raag.jadav, Mallesh Koujalagi

Add documentation for the DRM_WEDGE_RECOVERY_COLD_RESET recovery method.
This method is designated for severe error conditions that compromise core
device functionality and are unrecoverable via other recovery methods such
as driver rebind or bus reset. The documentation clarifies when this
recovery method should be used and its implications for userspace.

v2:
- Add several instead of number to avoid update. (Jani)

v3:
- Update document with generic scenario. (Riana)
- Consistent with terminology. (Raag)
- Remove already covered information.

Signed-off-by: Mallesh Koujalagi <mallesh.koujalagi@intel.com>
---
 Documentation/gpu/drm-uapi.rst | 60 +++++++++++++++++++++++++++++++++-
 1 file changed, 59 insertions(+), 1 deletion(-)

diff --git a/Documentation/gpu/drm-uapi.rst b/Documentation/gpu/drm-uapi.rst
index 579e87cb9ff7..d8b3608c5cbb 100644
--- a/Documentation/gpu/drm-uapi.rst
+++ b/Documentation/gpu/drm-uapi.rst
@@ -418,7 +418,7 @@ needed.
 Recovery
 --------
 
-Current implementation defines four recovery methods, out of which, drivers
+Current implementation defines several recovery methods, out of which, drivers
 can use any one, multiple or none. Method(s) of choice will be sent in the
 uevent environment as ``WEDGED=<method1>[,..,<methodN>]`` in order of less to
 more side-effects. See the section `Vendor Specific Recovery`_
@@ -435,6 +435,7 @@ following expectations.
     rebind          unbind + bind driver
     bus-reset       unbind + bus reset/re-enumeration + bind
     vendor-specific vendor specific recovery method
+    cold-reset      full device cold reset required
     unknown         consumer policy
     =============== ========================================
 
@@ -447,6 +448,14 @@ debug purpose in order to root cause the hang. This is useful because the first
 hang is usually the most critical one which can result in consequential hangs
 or complete wedging.
 
+Cold Reset Recovery
+-------------------
+
+When ``WEDGED=cold-reset`` is sent, it indicates that the device has encountered
+an error condition that cannot be resolved through other recovery methods such as
+driver rebind or bus reset, and requires a complete device cold reset to restore
+functionality.
+
 Vendor Specific Recovery
 ------------------------
 
@@ -524,6 +533,55 @@ Recovery script::
     echo -n $DEVICE > $DRIVER/unbind
     echo -n $DEVICE > $DRIVER/bind
 
+Example - cold-reset
+--------------------
+
+Udev rule::
+
+    SUBSYSTEM=="drm", ENV{WEDGED}=="cold-reset", DEVPATH=="*/drm/card[0-9]",
+    RUN+="/path/to/cold-reset.sh $env{DEVPATH}"
+
+Recovery script::
+
+    #!/bin/sh
+
+    [ -z "$1" ] && echo "Usage: $0 <device-path>" && exit 1
+
+    # Get device
+    DEVPATH=$(readlink -f /sys/$1/device 2>/dev/null || readlink -f /sys/$1)
+    DEVICE=$(basename $DEVPATH)
+
+    echo "Cold reset: $DEVICE"
+
+    # Try slot power reset first
+    SLOT=$(find /sys/bus/pci/slots/ -type l 2>/dev/null | while read slot; do
+	    ADDR=$(cat "$slot" 2>/dev/null)
+	    [ -n "$ADDR" ] && echo "$DEVICE" | grep -q "^$ADDR" && basename $(dirname "$slot") && break
+    done)
+
+    if [ -n "$SLOT" ]; then
+	echo "Using slot $SLOT"
+
+	# Unbind driver
+	[ -e "/sys/bus/pci/devices/$DEVICE/driver" ] && \
+	echo "$DEVICE" > /sys/bus/pci/devices/$DEVICE/driver/unbind 2>/dev/null
+
+	# Remove device
+	echo 1 > /sys/bus/pci/devices/$DEVICE/remove
+
+	# Power cycle slot
+	echo 0 > /sys/bus/pci/slots/$SLOT/power
+	sleep 2
+	echo 1 > /sys/bus/pci/slots/$SLOT/power
+	sleep 1
+
+	# Rescan
+	echo 1 > /sys/bus/pci/rescan
+	echo "Done!"
+    else
+	echo "No slot found"
+    fi
+
 Customization
 -------------
 
-- 
2.34.1


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

* [PATCH v3 4/4] drm/xe: Handle PUNIT errors by requesting cold-reset recovery
  2026-04-06 14:23 [PATCH v3 0/4] Introduce cold reset recovery method Mallesh Koujalagi
                   ` (2 preceding siblings ...)
  2026-04-06 14:23 ` [PATCH v3 3/4] drm/doc: Document " Mallesh Koujalagi
@ 2026-04-06 14:23 ` Mallesh Koujalagi
  2026-04-08  8:09   ` Raag Jadav
  2026-04-06 15:33 ` ✗ CI.checkpatch: warning for Introduce cold reset recovery method (rev2) Patchwork
                   ` (3 subsequent siblings)
  7 siblings, 1 reply; 12+ messages in thread
From: Mallesh Koujalagi @ 2026-04-06 14:23 UTC (permalink / raw)
  To: intel-xe, dri-devel, rodrigo.vivi
  Cc: andrealmeid, christian.koenig, airlied, simona.vetter, mripard,
	anshuman.gupta, badal.nilawar, riana.tauro, karthik.poosa,
	sk.anirban, raag.jadav, Mallesh Koujalagi

When PUNIT (power management unit) errors are detected that persist across
warm resets, mark the device as wedged with DRM_WEDGE_RECOVERY_COLD_RESET
and notify userspace that a complete device cold reset is required to
restore normal operation.

v3:
- Use PUNIT instead of PMU. (Riana)
- Use consistent wordingi.
- Remove log. (Raag)

Signed-off-by: Mallesh Koujalagi <mallesh.koujalagi@intel.com>
---
 drivers/gpu/drm/xe/xe_ras.c | 21 ++++++++++++++++++++-
 drivers/gpu/drm/xe/xe_ras.h |  1 +
 2 files changed, 21 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/xe/xe_ras.c b/drivers/gpu/drm/xe/xe_ras.c
index 437811845c01..e2e1ab3fb4ce 100644
--- a/drivers/gpu/drm/xe/xe_ras.c
+++ b/drivers/gpu/drm/xe/xe_ras.c
@@ -5,6 +5,7 @@
 
 #include "xe_assert.h"
 #include "xe_device_types.h"
+#include "xe_device.h"
 #include "xe_printk.h"
 #include "xe_ras.h"
 #include "xe_ras_types.h"
@@ -93,6 +94,24 @@ static enum xe_ras_recovery_action handle_compute_errors(struct xe_device *xe,
 	return XE_RAS_RECOVERY_ACTION_RECOVERED;
 }
 
+/**
+ * xe_punit_error_handler - Handler for Punit errors requiring cold reset
+ * @xe: device instance
+ *
+ * Handles Punit errors that affect the device and cannot be recovered
+ * through driver reload, PCIe reset, etc.
+ *
+ * Marks the device as wedged with DRM_WEDGE_RECOVERY_COLD_RESET method
+ * and notifies userspace that a device cold reset is required.
+ */
+void xe_punit_error_handler(struct xe_device *xe)
+{
+	xe_err(xe, "Recovery: Device cold reset required\n");
+
+	xe_device_set_wedged_method(xe, DRM_WEDGE_RECOVERY_COLD_RESET);
+	xe_device_declare_wedged(xe);
+}
+
 static enum xe_ras_recovery_action handle_soc_internal_errors(struct xe_device *xe,
 							      struct xe_ras_error_array *arr)
 {
@@ -132,7 +151,7 @@ static enum xe_ras_recovery_action handle_soc_internal_errors(struct xe_device *
 			xe_err(xe, "[RAS]: PUNIT %s error detected: 0x%x\n",
 			       severity_to_str(xe, common.severity),
 			       ieh_error->global_error_status);
-			/** TODO: Add PUNIT error handling */
+			xe_punit_error_handler(xe);
 			return XE_RAS_RECOVERY_ACTION_DISCONNECT;
 		}
 	}
diff --git a/drivers/gpu/drm/xe/xe_ras.h b/drivers/gpu/drm/xe/xe_ras.h
index e191ab80080c..ab1fde200625 100644
--- a/drivers/gpu/drm/xe/xe_ras.h
+++ b/drivers/gpu/drm/xe/xe_ras.h
@@ -11,6 +11,7 @@
 struct xe_device;
 
 void xe_ras_init(struct xe_device *xe);
+void xe_punit_error_handler(struct xe_device *xe);
 enum xe_ras_recovery_action  xe_ras_process_errors(struct xe_device *xe);
 
 #endif
-- 
2.34.1


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

* ✗ CI.checkpatch: warning for Introduce cold reset recovery method (rev2)
  2026-04-06 14:23 [PATCH v3 0/4] Introduce cold reset recovery method Mallesh Koujalagi
                   ` (3 preceding siblings ...)
  2026-04-06 14:23 ` [PATCH v3 4/4] drm/xe: Handle PUNIT errors by requesting cold-reset recovery Mallesh Koujalagi
@ 2026-04-06 15:33 ` Patchwork
  2026-04-06 15:34 ` ✓ CI.KUnit: success " Patchwork
                   ` (2 subsequent siblings)
  7 siblings, 0 replies; 12+ messages in thread
From: Patchwork @ 2026-04-06 15:33 UTC (permalink / raw)
  To: Mallesh Koujalagi; +Cc: intel-xe

== Series Details ==

Series: Introduce cold reset recovery method (rev2)
URL   : https://patchwork.freedesktop.org/series/163428/
State : warning

== Summary ==

+ KERNEL=/kernel
+ git clone https://gitlab.freedesktop.org/drm/maintainer-tools mt
Cloning into 'mt'...
warning: redirecting to https://gitlab.freedesktop.org/drm/maintainer-tools.git/
+ git -C mt rev-list -n1 origin/master
1f57ba1afceae32108bd24770069f764d940a0e4
+ cd /kernel
+ git config --global --add safe.directory /kernel
+ git log -n1
commit 3e036ea44de2da7e9b48027ab87910ee475f013b
Author: Mallesh Koujalagi <mallesh.koujalagi@intel.com>
Date:   Mon Apr 6 19:53:30 2026 +0530

    drm/xe: Handle PUNIT errors by requesting cold-reset recovery
    
    When PUNIT (power management unit) errors are detected that persist across
    warm resets, mark the device as wedged with DRM_WEDGE_RECOVERY_COLD_RESET
    and notify userspace that a complete device cold reset is required to
    restore normal operation.
    
    v3:
    - Use PUNIT instead of PMU. (Riana)
    - Use consistent wordingi.
    - Remove log. (Raag)
    
    Signed-off-by: Mallesh Koujalagi <mallesh.koujalagi@intel.com>
+ /mt/dim checkpatch 7b7217a9e27a82ef10be22ab3a55ad5bbc849688 drm-intel
458eb12ae594 Introduce Xe Uncorrectable Error Handling
-:219: WARNING:FILE_PATH_CHANGES: added, moved or deleted file(s), does MAINTAINERS need updating?
#219: 
new file mode 100644

total: 0 errors, 1 warnings, 0 checks, 860 lines checked
abef24cd7f63 drm: Add DRM_WEDGE_RECOVERY_COLD_RESET recovery method
626eddcfb09c drm/doc: Document DRM_WEDGE_RECOVERY_COLD_RESET recovery method
3e036ea44de2 drm/xe: Handle PUNIT errors by requesting cold-reset recovery



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

* ✓ CI.KUnit: success for Introduce cold reset recovery method (rev2)
  2026-04-06 14:23 [PATCH v3 0/4] Introduce cold reset recovery method Mallesh Koujalagi
                   ` (4 preceding siblings ...)
  2026-04-06 15:33 ` ✗ CI.checkpatch: warning for Introduce cold reset recovery method (rev2) Patchwork
@ 2026-04-06 15:34 ` Patchwork
  2026-04-06 16:52 ` ✓ Xe.CI.BAT: " Patchwork
  2026-04-06 22:09 ` ✓ Xe.CI.FULL: " Patchwork
  7 siblings, 0 replies; 12+ messages in thread
From: Patchwork @ 2026-04-06 15:34 UTC (permalink / raw)
  To: Mallesh Koujalagi; +Cc: intel-xe

== Series Details ==

Series: Introduce cold reset recovery method (rev2)
URL   : https://patchwork.freedesktop.org/series/163428/
State : success

== Summary ==

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

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

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

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



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

* ✓ Xe.CI.BAT: success for Introduce cold reset recovery method (rev2)
  2026-04-06 14:23 [PATCH v3 0/4] Introduce cold reset recovery method Mallesh Koujalagi
                   ` (5 preceding siblings ...)
  2026-04-06 15:34 ` ✓ CI.KUnit: success " Patchwork
@ 2026-04-06 16:52 ` Patchwork
  2026-04-06 22:09 ` ✓ Xe.CI.FULL: " Patchwork
  7 siblings, 0 replies; 12+ messages in thread
From: Patchwork @ 2026-04-06 16:52 UTC (permalink / raw)
  To: Mallesh Koujalagi; +Cc: intel-xe

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

== Series Details ==

Series: Introduce cold reset recovery method (rev2)
URL   : https://patchwork.freedesktop.org/series/163428/
State : success

== Summary ==

CI Bug Log - changes from xe-4852-d873f0156bd08a3031097d459e2d3604bfe1b1bf_BAT -> xe-pw-163428v2_BAT
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  

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

  No changes in participating hosts

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

  Here are the changes found in xe-pw-163428v2_BAT that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@xe_waitfence@engine:
    - bat-dg2-oem2:       [PASS][1] -> [FAIL][2] ([Intel XE#6519])
   [1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4852-d873f0156bd08a3031097d459e2d3604bfe1b1bf/bat-dg2-oem2/igt@xe_waitfence@engine.html
   [2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163428v2/bat-dg2-oem2/igt@xe_waitfence@engine.html

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


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

  * IGT: IGT_8847 -> IGT_8849
  * Linux: xe-4852-d873f0156bd08a3031097d459e2d3604bfe1b1bf -> xe-pw-163428v2

  IGT_8847: 8847
  IGT_8849: 8849
  xe-4852-d873f0156bd08a3031097d459e2d3604bfe1b1bf: d873f0156bd08a3031097d459e2d3604bfe1b1bf
  xe-pw-163428v2: 163428v2

== Logs ==

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

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

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

* ✓ Xe.CI.FULL: success for Introduce cold reset recovery method (rev2)
  2026-04-06 14:23 [PATCH v3 0/4] Introduce cold reset recovery method Mallesh Koujalagi
                   ` (6 preceding siblings ...)
  2026-04-06 16:52 ` ✓ Xe.CI.BAT: " Patchwork
@ 2026-04-06 22:09 ` Patchwork
  7 siblings, 0 replies; 12+ messages in thread
From: Patchwork @ 2026-04-06 22:09 UTC (permalink / raw)
  To: Mallesh Koujalagi; +Cc: intel-xe

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

== Series Details ==

Series: Introduce cold reset recovery method (rev2)
URL   : https://patchwork.freedesktop.org/series/163428/
State : success

== Summary ==

CI Bug Log - changes from xe-4852-d873f0156bd08a3031097d459e2d3604bfe1b1bf_FULL -> xe-pw-163428v2_FULL
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  

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

  No changes in participating hosts

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

  Here are the changes found in xe-pw-163428v2_FULL that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@kms_addfb_basic@addfb25-y-tiled-small-legacy:
    - shard-bmg:          NOTRUN -> [SKIP][1] ([Intel XE#2233])
   [1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163428v2/shard-bmg-5/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html

  * igt@kms_atomic_transition@plane-all-modeset-transition-fencing-internal-panels:
    - shard-bmg:          NOTRUN -> [SKIP][2] ([Intel XE#2370])
   [2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163428v2/shard-bmg-2/igt@kms_atomic_transition@plane-all-modeset-transition-fencing-internal-panels.html

  * igt@kms_big_fb@x-tiled-16bpp-rotate-90:
    - shard-bmg:          NOTRUN -> [SKIP][3] ([Intel XE#2327])
   [3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163428v2/shard-bmg-2/igt@kms_big_fb@x-tiled-16bpp-rotate-90.html

  * igt@kms_big_fb@y-tiled-16bpp-rotate-180:
    - shard-bmg:          NOTRUN -> [SKIP][4] ([Intel XE#1124]) +4 other tests skip
   [4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163428v2/shard-bmg-9/igt@kms_big_fb@y-tiled-16bpp-rotate-180.html

  * igt@kms_bw@connected-linear-tiling-2-displays-2560x1440p:
    - shard-bmg:          NOTRUN -> [SKIP][5] ([Intel XE#7679])
   [5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163428v2/shard-bmg-5/igt@kms_bw@connected-linear-tiling-2-displays-2560x1440p.html

  * igt@kms_bw@linear-tiling-2-displays-1920x1080p:
    - shard-bmg:          NOTRUN -> [SKIP][6] ([Intel XE#367] / [Intel XE#7354])
   [6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163428v2/shard-bmg-6/igt@kms_bw@linear-tiling-2-displays-1920x1080p.html

  * igt@kms_ccs@bad-aux-stride-4-tiled-mtl-rc-ccs-cc:
    - shard-bmg:          NOTRUN -> [SKIP][7] ([Intel XE#2887]) +4 other tests skip
   [7]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163428v2/shard-bmg-3/igt@kms_ccs@bad-aux-stride-4-tiled-mtl-rc-ccs-cc.html

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

  * igt@kms_chamelium_color@ctm-0-50:
    - shard-bmg:          NOTRUN -> [SKIP][9] ([Intel XE#2325] / [Intel XE#7358]) +1 other test skip
   [9]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163428v2/shard-bmg-7/igt@kms_chamelium_color@ctm-0-50.html

  * igt@kms_chamelium_hpd@dp-hpd-after-suspend:
    - shard-bmg:          NOTRUN -> [SKIP][10] ([Intel XE#2252]) +2 other tests skip
   [10]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163428v2/shard-bmg-8/igt@kms_chamelium_hpd@dp-hpd-after-suspend.html

  * igt@kms_content_protection@atomic-dpms-hdcp14:
    - shard-lnl:          NOTRUN -> [SKIP][11] ([Intel XE#7642])
   [11]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163428v2/shard-lnl-7/igt@kms_content_protection@atomic-dpms-hdcp14.html

  * igt@kms_content_protection@dp-mst-type-0:
    - shard-bmg:          NOTRUN -> [SKIP][12] ([Intel XE#2390] / [Intel XE#6974])
   [12]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163428v2/shard-bmg-8/igt@kms_content_protection@dp-mst-type-0.html

  * igt@kms_cursor_crc@cursor-random-32x32:
    - shard-bmg:          NOTRUN -> [SKIP][13] ([Intel XE#2320]) +3 other tests skip
   [13]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163428v2/shard-bmg-3/igt@kms_cursor_crc@cursor-random-32x32.html

  * igt@kms_cursor_crc@cursor-sliding-512x170:
    - shard-bmg:          NOTRUN -> [SKIP][14] ([Intel XE#2321] / [Intel XE#7355])
   [14]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163428v2/shard-bmg-3/igt@kms_cursor_crc@cursor-sliding-512x170.html

  * igt@kms_cursor_legacy@flip-vs-cursor-legacy:
    - shard-bmg:          [PASS][15] -> [FAIL][16] ([Intel XE#7571])
   [15]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4852-d873f0156bd08a3031097d459e2d3604bfe1b1bf/shard-bmg-1/igt@kms_cursor_legacy@flip-vs-cursor-legacy.html
   [16]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163428v2/shard-bmg-6/igt@kms_cursor_legacy@flip-vs-cursor-legacy.html

  * igt@kms_dsc@dsc-basic:
    - shard-bmg:          NOTRUN -> [SKIP][17] ([Intel XE#2244])
   [17]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163428v2/shard-bmg-6/igt@kms_dsc@dsc-basic.html

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

  * igt@kms_fbc_dirty_rect@fbc-dirty-rectangle-different-formats:
    - shard-bmg:          NOTRUN -> [SKIP][19] ([Intel XE#4422] / [Intel XE#7442])
   [19]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163428v2/shard-bmg-3/igt@kms_fbc_dirty_rect@fbc-dirty-rectangle-different-formats.html

  * igt@kms_feature_discovery@psr2:
    - shard-bmg:          NOTRUN -> [SKIP][20] ([Intel XE#2374] / [Intel XE#6128])
   [20]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163428v2/shard-bmg-1/igt@kms_feature_discovery@psr2.html

  * igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-64bpp-yftile-downscaling:
    - shard-bmg:          NOTRUN -> [SKIP][21] ([Intel XE#7178] / [Intel XE#7351])
   [21]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163428v2/shard-bmg-2/igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-64bpp-yftile-downscaling.html

  * igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-downscaling:
    - shard-lnl:          NOTRUN -> [SKIP][22] ([Intel XE#7178] / [Intel XE#7351])
   [22]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163428v2/shard-lnl-6/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-downscaling.html

  * igt@kms_frontbuffer_tracking@drrs-abgr161616f-draw-render:
    - shard-bmg:          NOTRUN -> [SKIP][23] ([Intel XE#7061] / [Intel XE#7356]) +1 other test skip
   [23]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163428v2/shard-bmg-6/igt@kms_frontbuffer_tracking@drrs-abgr161616f-draw-render.html

  * igt@kms_frontbuffer_tracking@drrs-rgb565-draw-render:
    - shard-bmg:          NOTRUN -> [SKIP][24] ([Intel XE#2311]) +13 other tests skip
   [24]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163428v2/shard-bmg-10/igt@kms_frontbuffer_tracking@drrs-rgb565-draw-render.html

  * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-blt:
    - shard-bmg:          NOTRUN -> [SKIP][25] ([Intel XE#4141]) +7 other tests skip
   [25]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163428v2/shard-bmg-10/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-pri-shrfb-draw-blt:
    - shard-lnl:          NOTRUN -> [SKIP][26] ([Intel XE#6312] / [Intel XE#651]) +1 other test skip
   [26]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163428v2/shard-lnl-4/igt@kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-pri-shrfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-shrfb-pgflip-blt:
    - shard-bmg:          NOTRUN -> [SKIP][27] ([Intel XE#2313]) +11 other tests skip
   [27]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163428v2/shard-bmg-2/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-shrfb-pgflip-blt.html

  * igt@kms_frontbuffer_tracking@psr-2p-primscrn-cur-indfb-draw-mmap-wc:
    - shard-lnl:          NOTRUN -> [SKIP][28] ([Intel XE#656])
   [28]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163428v2/shard-lnl-7/igt@kms_frontbuffer_tracking@psr-2p-primscrn-cur-indfb-draw-mmap-wc.html

  * igt@kms_plane@pixel-format-4-tiled-modifier@pipe-b-plane-5:
    - shard-bmg:          NOTRUN -> [SKIP][29] ([Intel XE#7130]) +1 other test skip
   [29]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163428v2/shard-bmg-2/igt@kms_plane@pixel-format-4-tiled-modifier@pipe-b-plane-5.html

  * igt@kms_plane@pixel-format-y-tiled-ccs-modifier:
    - shard-bmg:          NOTRUN -> [SKIP][30] ([Intel XE#7283])
   [30]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163428v2/shard-bmg-3/igt@kms_plane@pixel-format-y-tiled-ccs-modifier.html

  * igt@kms_plane@pixel-format-yf-tiled-ccs-modifier-source-clamping:
    - shard-lnl:          NOTRUN -> [SKIP][31] ([Intel XE#7283])
   [31]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163428v2/shard-lnl-3/igt@kms_plane@pixel-format-yf-tiled-ccs-modifier-source-clamping.html

  * igt@kms_plane_multiple@2x-tiling-x:
    - shard-lnl:          NOTRUN -> [SKIP][32] ([Intel XE#4596] / [Intel XE#5854])
   [32]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163428v2/shard-lnl-7/igt@kms_plane_multiple@2x-tiling-x.html

  * igt@kms_plane_scaling@planes-downscale-factor-0-5@pipe-c:
    - shard-bmg:          NOTRUN -> [SKIP][33] ([Intel XE#2763] / [Intel XE#6886]) +4 other tests skip
   [33]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163428v2/shard-bmg-7/igt@kms_plane_scaling@planes-downscale-factor-0-5@pipe-c.html

  * igt@kms_pm_backlight@fade-with-suspend:
    - shard-bmg:          NOTRUN -> [SKIP][34] ([Intel XE#7376] / [Intel XE#870])
   [34]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163428v2/shard-bmg-6/igt@kms_pm_backlight@fade-with-suspend.html

  * igt@kms_pm_dc@dc6-dpms:
    - shard-lnl:          [PASS][35] -> [FAIL][36] ([Intel XE#7340])
   [35]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4852-d873f0156bd08a3031097d459e2d3604bfe1b1bf/shard-lnl-2/igt@kms_pm_dc@dc6-dpms.html
   [36]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163428v2/shard-lnl-2/igt@kms_pm_dc@dc6-dpms.html

  * igt@kms_pm_dc@deep-pkgc:
    - shard-lnl:          [PASS][37] -> [FAIL][38] ([Intel XE#2029] / [Intel XE#7395])
   [37]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4852-d873f0156bd08a3031097d459e2d3604bfe1b1bf/shard-lnl-3/igt@kms_pm_dc@deep-pkgc.html
   [38]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163428v2/shard-lnl-7/igt@kms_pm_dc@deep-pkgc.html

  * igt@kms_pm_rpm@modeset-lpsp:
    - shard-bmg:          NOTRUN -> [SKIP][39] ([Intel XE#1439] / [Intel XE#3141] / [Intel XE#7383] / [Intel XE#836])
   [39]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163428v2/shard-bmg-3/igt@kms_pm_rpm@modeset-lpsp.html

  * igt@kms_psr2_sf@pr-overlay-plane-move-continuous-exceed-sf:
    - shard-bmg:          NOTRUN -> [SKIP][40] ([Intel XE#1489]) +1 other test skip
   [40]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163428v2/shard-bmg-7/igt@kms_psr2_sf@pr-overlay-plane-move-continuous-exceed-sf.html

  * igt@kms_psr@fbc-pr-primary-page-flip:
    - shard-bmg:          NOTRUN -> [SKIP][41] ([Intel XE#2234] / [Intel XE#2850]) +9 other tests skip
   [41]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163428v2/shard-bmg-1/igt@kms_psr@fbc-pr-primary-page-flip.html

  * igt@kms_rotation_crc@bad-pixel-format:
    - shard-bmg:          NOTRUN -> [SKIP][42] ([Intel XE#3904] / [Intel XE#7342]) +1 other test skip
   [42]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163428v2/shard-bmg-5/igt@kms_rotation_crc@bad-pixel-format.html

  * igt@kms_rotation_crc@primary-y-tiled-reflect-x-180:
    - shard-bmg:          NOTRUN -> [SKIP][43] ([Intel XE#2330] / [Intel XE#5813]) +1 other test skip
   [43]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163428v2/shard-bmg-8/igt@kms_rotation_crc@primary-y-tiled-reflect-x-180.html

  * igt@kms_setmode@invalid-clone-exclusive-crtc:
    - shard-bmg:          NOTRUN -> [SKIP][44] ([Intel XE#1435])
   [44]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163428v2/shard-bmg-6/igt@kms_setmode@invalid-clone-exclusive-crtc.html

  * igt@xe_configfs@ctx-restore-post-bb:
    - shard-bmg:          [PASS][45] -> [ABORT][46] ([Intel XE#7578])
   [45]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4852-d873f0156bd08a3031097d459e2d3604bfe1b1bf/shard-bmg-1/igt@xe_configfs@ctx-restore-post-bb.html
   [46]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163428v2/shard-bmg-8/igt@xe_configfs@ctx-restore-post-bb.html

  * igt@xe_eudebug@basic-vm-access-userptr:
    - shard-bmg:          NOTRUN -> [SKIP][47] ([Intel XE#7636]) +5 other tests skip
   [47]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163428v2/shard-bmg-6/igt@xe_eudebug@basic-vm-access-userptr.html

  * igt@xe_evict@evict-small-external-multi-queue-cm:
    - shard-bmg:          NOTRUN -> [SKIP][48] ([Intel XE#7140])
   [48]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163428v2/shard-bmg-5/igt@xe_evict@evict-small-external-multi-queue-cm.html

  * igt@xe_exec_basic@multigpu-once-bindexecqueue-rebind:
    - shard-bmg:          NOTRUN -> [SKIP][49] ([Intel XE#2322] / [Intel XE#7372]) +2 other tests skip
   [49]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163428v2/shard-bmg-9/igt@xe_exec_basic@multigpu-once-bindexecqueue-rebind.html

  * igt@xe_exec_fault_mode@many-execqueues-multi-queue-userptr:
    - shard-bmg:          NOTRUN -> [SKIP][50] ([Intel XE#7136]) +4 other tests skip
   [50]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163428v2/shard-bmg-5/igt@xe_exec_fault_mode@many-execqueues-multi-queue-userptr.html

  * igt@xe_exec_multi_queue@many-execs-preempt-mode-fault-userptr-invalidate:
    - shard-bmg:          NOTRUN -> [SKIP][51] ([Intel XE#6874]) +12 other tests skip
   [51]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163428v2/shard-bmg-6/igt@xe_exec_multi_queue@many-execs-preempt-mode-fault-userptr-invalidate.html

  * igt@xe_exec_multi_queue@two-queues-priority:
    - shard-lnl:          NOTRUN -> [SKIP][52] ([Intel XE#6874]) +1 other test skip
   [52]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163428v2/shard-lnl-4/igt@xe_exec_multi_queue@two-queues-priority.html

  * igt@xe_exec_threads@threads-multi-queue-mixed-shared-vm-rebind:
    - shard-lnl:          NOTRUN -> [SKIP][53] ([Intel XE#7138])
   [53]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163428v2/shard-lnl-6/igt@xe_exec_threads@threads-multi-queue-mixed-shared-vm-rebind.html

  * igt@xe_exec_threads@threads-multi-queue-mixed-userptr-invalidate-race:
    - shard-bmg:          NOTRUN -> [SKIP][54] ([Intel XE#7138]) +4 other tests skip
   [54]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163428v2/shard-bmg-9/igt@xe_exec_threads@threads-multi-queue-mixed-userptr-invalidate-race.html

  * igt@xe_live_ktest@xe_bo@xe_ccs_migrate_kunit:
    - shard-bmg:          NOTRUN -> [SKIP][55] ([Intel XE#2229])
   [55]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163428v2/shard-bmg-10/igt@xe_live_ktest@xe_bo@xe_ccs_migrate_kunit.html

  * igt@xe_multigpu_svm@mgpu-coherency-fail-basic:
    - shard-bmg:          NOTRUN -> [SKIP][56] ([Intel XE#6964]) +1 other test skip
   [56]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163428v2/shard-bmg-6/igt@xe_multigpu_svm@mgpu-coherency-fail-basic.html

  * igt@xe_oa@oa-tlb-invalidate:
    - shard-bmg:          NOTRUN -> [SKIP][57] ([Intel XE#2248] / [Intel XE#7325] / [Intel XE#7393])
   [57]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163428v2/shard-bmg-2/igt@xe_oa@oa-tlb-invalidate.html

  * igt@xe_pat@pat-index-xelp:
    - shard-bmg:          NOTRUN -> [SKIP][58] ([Intel XE#2245] / [Intel XE#7590])
   [58]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163428v2/shard-bmg-2/igt@xe_pat@pat-index-xelp.html

  * igt@xe_pat@xa-app-transient-media-on:
    - shard-bmg:          NOTRUN -> [SKIP][59] ([Intel XE#7590]) +1 other test skip
   [59]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163428v2/shard-bmg-2/igt@xe_pat@xa-app-transient-media-on.html

  * igt@xe_pmu@fn-engine-activity-sched-if-idle:
    - shard-lnl:          NOTRUN -> [SKIP][60] ([Intel XE#4650] / [Intel XE#7347])
   [60]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163428v2/shard-lnl-2/igt@xe_pmu@fn-engine-activity-sched-if-idle.html

  * igt@xe_pxp@pxp-stale-bo-exec-post-rpm:
    - shard-bmg:          NOTRUN -> [SKIP][61] ([Intel XE#4733] / [Intel XE#7417])
   [61]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163428v2/shard-bmg-5/igt@xe_pxp@pxp-stale-bo-exec-post-rpm.html

  * igt@xe_query@multigpu-query-invalid-extension:
    - shard-lnl:          NOTRUN -> [SKIP][62] ([Intel XE#944])
   [62]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163428v2/shard-lnl-8/igt@xe_query@multigpu-query-invalid-extension.html

  * igt@xe_query@multigpu-query-invalid-uc-fw-version-mbz:
    - shard-bmg:          NOTRUN -> [SKIP][63] ([Intel XE#944]) +2 other tests skip
   [63]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163428v2/shard-bmg-7/igt@xe_query@multigpu-query-invalid-uc-fw-version-mbz.html

  * igt@xe_sriov_flr@flr-twice:
    - shard-bmg:          NOTRUN -> [FAIL][64] ([Intel XE#6569])
   [64]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163428v2/shard-bmg-7/igt@xe_sriov_flr@flr-twice.html

  
#### Possible fixes ####

  * igt@intel_hwmon@hwmon-write:
    - shard-bmg:          [FAIL][65] ([Intel XE#7445]) -> [PASS][66]
   [65]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4852-d873f0156bd08a3031097d459e2d3604bfe1b1bf/shard-bmg-1/igt@intel_hwmon@hwmon-write.html
   [66]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163428v2/shard-bmg-1/igt@intel_hwmon@hwmon-write.html

  * igt@kms_flip@flip-vs-expired-vblank-interruptible:
    - shard-lnl:          [FAIL][67] ([Intel XE#301]) -> [PASS][68] +1 other test pass
   [67]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4852-d873f0156bd08a3031097d459e2d3604bfe1b1bf/shard-lnl-5/igt@kms_flip@flip-vs-expired-vblank-interruptible.html
   [68]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163428v2/shard-lnl-4/igt@kms_flip@flip-vs-expired-vblank-interruptible.html

  * igt@kms_frontbuffer_tracking@psr-rgb565-draw-blt:
    - shard-lnl:          [INCOMPLETE][69] -> [PASS][70]
   [69]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4852-d873f0156bd08a3031097d459e2d3604bfe1b1bf/shard-lnl-1/igt@kms_frontbuffer_tracking@psr-rgb565-draw-blt.html
   [70]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163428v2/shard-lnl-2/igt@kms_frontbuffer_tracking@psr-rgb565-draw-blt.html

  * igt@kms_pm_dc@dc6-psr:
    - shard-lnl:          [FAIL][71] ([Intel XE#7340]) -> [PASS][72] +1 other test pass
   [71]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4852-d873f0156bd08a3031097d459e2d3604bfe1b1bf/shard-lnl-7/igt@kms_pm_dc@dc6-psr.html
   [72]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163428v2/shard-lnl-5/igt@kms_pm_dc@dc6-psr.html

  
#### Warnings ####

  * igt@kms_hdr@brightness-with-hdr:
    - shard-bmg:          [SKIP][73] ([Intel XE#3374] / [Intel XE#3544]) -> [SKIP][74] ([Intel XE#3544])
   [73]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4852-d873f0156bd08a3031097d459e2d3604bfe1b1bf/shard-bmg-3/igt@kms_hdr@brightness-with-hdr.html
   [74]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163428v2/shard-bmg-6/igt@kms_hdr@brightness-with-hdr.html

  * igt@xe_module_load@load:
    - shard-bmg:          ([SKIP][75], [PASS][76], [PASS][77], [PASS][78], [PASS][79], [PASS][80], [PASS][81], [DMESG-FAIL][82], [PASS][83], [PASS][84], [PASS][85], [PASS][86], [PASS][87], [PASS][88], [PASS][89], [PASS][90], [PASS][91], [PASS][92], [PASS][93], [PASS][94], [PASS][95], [PASS][96], [PASS][97], [PASS][98], [PASS][99], [PASS][100]) ([Intel XE#2457] / [Intel XE#5545] / [Intel XE#6652] / [Intel XE#7405]) -> ([PASS][101], [PASS][102], [PASS][103], [PASS][104], [PASS][105], [PASS][106], [PASS][107], [PASS][108], [PASS][109], [PASS][110], [PASS][111], [PASS][112], [SKIP][113], [PASS][114], [PASS][115], [PASS][116], [PASS][117], [PASS][118], [PASS][119], [PASS][120], [PASS][121], [PASS][122], [PASS][123], [PASS][124], [PASS][125], [PASS][126]) ([Intel XE#2457] / [Intel XE#7405])
   [75]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4852-d873f0156bd08a3031097d459e2d3604bfe1b1bf/shard-bmg-5/igt@xe_module_load@load.html
   [76]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4852-d873f0156bd08a3031097d459e2d3604bfe1b1bf/shard-bmg-6/igt@xe_module_load@load.html
   [77]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4852-d873f0156bd08a3031097d459e2d3604bfe1b1bf/shard-bmg-3/igt@xe_module_load@load.html
   [78]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4852-d873f0156bd08a3031097d459e2d3604bfe1b1bf/shard-bmg-7/igt@xe_module_load@load.html
   [79]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4852-d873f0156bd08a3031097d459e2d3604bfe1b1bf/shard-bmg-7/igt@xe_module_load@load.html
   [80]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4852-d873f0156bd08a3031097d459e2d3604bfe1b1bf/shard-bmg-7/igt@xe_module_load@load.html
   [81]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4852-d873f0156bd08a3031097d459e2d3604bfe1b1bf/shard-bmg-10/igt@xe_module_load@load.html
   [82]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4852-d873f0156bd08a3031097d459e2d3604bfe1b1bf/shard-bmg-2/igt@xe_module_load@load.html
   [83]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4852-d873f0156bd08a3031097d459e2d3604bfe1b1bf/shard-bmg-2/igt@xe_module_load@load.html
   [84]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4852-d873f0156bd08a3031097d459e2d3604bfe1b1bf/shard-bmg-6/igt@xe_module_load@load.html
   [85]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4852-d873f0156bd08a3031097d459e2d3604bfe1b1bf/shard-bmg-10/igt@xe_module_load@load.html
   [86]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4852-d873f0156bd08a3031097d459e2d3604bfe1b1bf/shard-bmg-10/igt@xe_module_load@load.html
   [87]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4852-d873f0156bd08a3031097d459e2d3604bfe1b1bf/shard-bmg-2/igt@xe_module_load@load.html
   [88]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4852-d873f0156bd08a3031097d459e2d3604bfe1b1bf/shard-bmg-5/igt@xe_module_load@load.html
   [89]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4852-d873f0156bd08a3031097d459e2d3604bfe1b1bf/shard-bmg-9/igt@xe_module_load@load.html
   [90]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4852-d873f0156bd08a3031097d459e2d3604bfe1b1bf/shard-bmg-9/igt@xe_module_load@load.html
   [91]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4852-d873f0156bd08a3031097d459e2d3604bfe1b1bf/shard-bmg-1/igt@xe_module_load@load.html
   [92]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4852-d873f0156bd08a3031097d459e2d3604bfe1b1bf/shard-bmg-1/igt@xe_module_load@load.html
   [93]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4852-d873f0156bd08a3031097d459e2d3604bfe1b1bf/shard-bmg-5/igt@xe_module_load@load.html
   [94]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4852-d873f0156bd08a3031097d459e2d3604bfe1b1bf/shard-bmg-5/igt@xe_module_load@load.html
   [95]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4852-d873f0156bd08a3031097d459e2d3604bfe1b1bf/shard-bmg-8/igt@xe_module_load@load.html
   [96]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4852-d873f0156bd08a3031097d459e2d3604bfe1b1bf/shard-bmg-8/igt@xe_module_load@load.html
   [97]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4852-d873f0156bd08a3031097d459e2d3604bfe1b1bf/shard-bmg-8/igt@xe_module_load@load.html
   [98]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4852-d873f0156bd08a3031097d459e2d3604bfe1b1bf/shard-bmg-3/igt@xe_module_load@load.html
   [99]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4852-d873f0156bd08a3031097d459e2d3604bfe1b1bf/shard-bmg-3/igt@xe_module_load@load.html
   [100]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4852-d873f0156bd08a3031097d459e2d3604bfe1b1bf/shard-bmg-1/igt@xe_module_load@load.html
   [101]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163428v2/shard-bmg-2/igt@xe_module_load@load.html
   [102]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163428v2/shard-bmg-6/igt@xe_module_load@load.html
   [103]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163428v2/shard-bmg-9/igt@xe_module_load@load.html
   [104]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163428v2/shard-bmg-2/igt@xe_module_load@load.html
   [105]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163428v2/shard-bmg-9/igt@xe_module_load@load.html
   [106]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163428v2/shard-bmg-9/igt@xe_module_load@load.html
   [107]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163428v2/shard-bmg-2/igt@xe_module_load@load.html
   [108]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163428v2/shard-bmg-7/igt@xe_module_load@load.html
   [109]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163428v2/shard-bmg-1/igt@xe_module_load@load.html
   [110]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163428v2/shard-bmg-1/igt@xe_module_load@load.html
   [111]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163428v2/shard-bmg-7/igt@xe_module_load@load.html
   [112]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163428v2/shard-bmg-7/igt@xe_module_load@load.html
   [113]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163428v2/shard-bmg-2/igt@xe_module_load@load.html
   [114]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163428v2/shard-bmg-3/igt@xe_module_load@load.html
   [115]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163428v2/shard-bmg-8/igt@xe_module_load@load.html
   [116]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163428v2/shard-bmg-3/igt@xe_module_load@load.html
   [117]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163428v2/shard-bmg-6/igt@xe_module_load@load.html
   [118]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163428v2/shard-bmg-5/igt@xe_module_load@load.html
   [119]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163428v2/shard-bmg-3/igt@xe_module_load@load.html
   [120]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163428v2/shard-bmg-10/igt@xe_module_load@load.html
   [121]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163428v2/shard-bmg-10/igt@xe_module_load@load.html
   [122]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163428v2/shard-bmg-5/igt@xe_module_load@load.html
   [123]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163428v2/shard-bmg-5/igt@xe_module_load@load.html
   [124]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163428v2/shard-bmg-6/igt@xe_module_load@load.html
   [125]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163428v2/shard-bmg-8/igt@xe_module_load@load.html
   [126]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163428v2/shard-bmg-8/igt@xe_module_load@load.html

  
  [Intel XE#1124]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1124
  [Intel XE#1435]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1435
  [Intel XE#1439]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1439
  [Intel XE#1489]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1489
  [Intel XE#2029]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2029
  [Intel XE#2229]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2229
  [Intel XE#2233]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2233
  [Intel XE#2234]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2234
  [Intel XE#2244]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2244
  [Intel XE#2245]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2245
  [Intel XE#2248]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2248
  [Intel XE#2252]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2252
  [Intel XE#2311]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2311
  [Intel XE#2313]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2313
  [Intel XE#2320]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2320
  [Intel XE#2321]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2321
  [Intel XE#2322]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2322
  [Intel XE#2325]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2325
  [Intel XE#2327]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2327
  [Intel XE#2330]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2330
  [Intel XE#2370]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2370
  [Intel XE#2374]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2374
  [Intel XE#2390]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2390
  [Intel XE#2457]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2457
  [Intel XE#2763]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2763
  [Intel XE#2850]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2850
  [Intel XE#2887]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2887
  [Intel XE#301]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/301
  [Intel XE#3141]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3141
  [Intel XE#3374]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3374
  [Intel XE#3432]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3432
  [Intel XE#3544]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3544
  [Intel XE#367]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/367
  [Intel XE#3904]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3904
  [Intel XE#4141]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4141
  [Intel XE#4422]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4422
  [Intel XE#4596]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4596
  [Intel XE#4650]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4650
  [Intel XE#4733]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4733
  [Intel XE#5545]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5545
  [Intel XE#5813]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5813
  [Intel XE#5854]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5854
  [Intel XE#6128]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6128
  [Intel XE#6312]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6312
  [Intel XE#651]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/651
  [Intel XE#656]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/656
  [Intel XE#6569]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6569
  [Intel XE#6652]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6652
  [Intel XE#6874]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6874
  [Intel XE#6886]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6886
  [Intel XE#6964]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6964
  [Intel XE#6974]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6974
  [Intel XE#7061]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7061
  [Intel XE#7130]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7130
  [Intel XE#7136]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7136
  [Intel XE#7138]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7138
  [Intel XE#7140]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7140
  [Intel XE#7178]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7178
  [Intel XE#7283]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7283
  [Intel XE#7325]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7325
  [Intel XE#7340]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7340
  [Intel XE#7342]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7342
  [Intel XE#7347]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7347
  [Intel XE#7351]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7351
  [Intel XE#7354]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7354
  [Intel XE#7355]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7355
  [Intel XE#7356]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7356
  [Intel XE#7358]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7358
  [Intel XE#7372]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7372
  [Intel XE#7376]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7376
  [Intel XE#7383]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7383
  [Intel XE#7393]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7393
  [Intel XE#7395]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7395
  [Intel XE#7405]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7405
  [Intel XE#7417]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7417
  [Intel XE#7442]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7442
  [Intel XE#7445]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7445
  [Intel XE#7571]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7571
  [Intel XE#7578]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7578
  [Intel XE#7590]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7590
  [Intel XE#7636]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7636
  [Intel XE#7642]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7642
  [Intel XE#7679]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7679
  [Intel XE#836]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/836
  [Intel XE#870]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/870
  [Intel XE#944]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/944


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

  * IGT: IGT_8847 -> IGT_8849
  * Linux: xe-4852-d873f0156bd08a3031097d459e2d3604bfe1b1bf -> xe-pw-163428v2

  IGT_8847: 8847
  IGT_8849: 8849
  xe-4852-d873f0156bd08a3031097d459e2d3604bfe1b1bf: d873f0156bd08a3031097d459e2d3604bfe1b1bf
  xe-pw-163428v2: 163428v2

== Logs ==

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

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

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

* Re: [PATCH v3 2/4] drm: Add DRM_WEDGE_RECOVERY_COLD_RESET recovery method
  2026-04-06 14:23 ` [PATCH v3 2/4] drm: Add DRM_WEDGE_RECOVERY_COLD_RESET recovery method Mallesh Koujalagi
@ 2026-04-08  7:46   ` Raag Jadav
  0 siblings, 0 replies; 12+ messages in thread
From: Raag Jadav @ 2026-04-08  7:46 UTC (permalink / raw)
  To: Mallesh Koujalagi
  Cc: intel-xe, dri-devel, rodrigo.vivi, andrealmeid, christian.koenig,
	airlied, simona.vetter, mripard, anshuman.gupta, badal.nilawar,
	riana.tauro, karthik.poosa, sk.anirban

On Mon, Apr 06, 2026 at 07:53:28PM +0530, Mallesh Koujalagi wrote:
> Introduce DRM_WEDGE_RECOVERY_COLD_RESET (BIT(4)) recovery
> method to handle scenarios requiring complete cold reset.

s/complete cold reset/device power cycle

> This method addresses cases where other recovery mechanisms
> (driver reload, PCIe reset, etc.) are insufficient to restore
> device functionality. When set, it indicates to userspace that
> only a full cold reset can recover the device from its current

Ditto.

> error state. The cold reset method serves as a last resort
> when all other recovery options have been exhausted.

We usually try to utilize the full 75 character space where possible but
ofcourse it's a personal preference.

Raag

> v3:
> - Update any scenario that requires cold-reset. (Riana)
> 
> Signed-off-by: Mallesh Koujalagi <mallesh.koujalagi@intel.com>
> ---
>  drivers/gpu/drm/drm_drv.c | 2 ++
>  include/drm/drm_device.h  | 1 +
>  2 files changed, 3 insertions(+)
> 
> diff --git a/drivers/gpu/drm/drm_drv.c b/drivers/gpu/drm/drm_drv.c
> index 985c283cf59f..8c0236e2e6a6 100644
> --- a/drivers/gpu/drm/drm_drv.c
> +++ b/drivers/gpu/drm/drm_drv.c
> @@ -535,6 +535,8 @@ static const char *drm_get_wedge_recovery(unsigned int opt)
>  		return "bus-reset";
>  	case DRM_WEDGE_RECOVERY_VENDOR:
>  		return "vendor-specific";
> +	case DRM_WEDGE_RECOVERY_COLD_RESET:
> +		return "cold-reset";
>  	default:
>  		return NULL;
>  	}
> diff --git a/include/drm/drm_device.h b/include/drm/drm_device.h
> index bc78fb77cc27..3e386eb42023 100644
> --- a/include/drm/drm_device.h
> +++ b/include/drm/drm_device.h
> @@ -37,6 +37,7 @@ struct pci_controller;
>  #define DRM_WEDGE_RECOVERY_REBIND	BIT(1)	/* unbind + bind driver */
>  #define DRM_WEDGE_RECOVERY_BUS_RESET	BIT(2)	/* unbind + reset bus device + bind */
>  #define DRM_WEDGE_RECOVERY_VENDOR	BIT(3)	/* vendor specific recovery method */
> +#define DRM_WEDGE_RECOVERY_COLD_RESET	BIT(4)	/* full device cold reset */
>  
>  /**
>   * struct drm_wedge_task_info - information about the guilty task of a wedge dev
> -- 
> 2.34.1
> 

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

* Re: [PATCH v3 3/4] drm/doc: Document DRM_WEDGE_RECOVERY_COLD_RESET recovery method
  2026-04-06 14:23 ` [PATCH v3 3/4] drm/doc: Document " Mallesh Koujalagi
@ 2026-04-08  8:01   ` Raag Jadav
  0 siblings, 0 replies; 12+ messages in thread
From: Raag Jadav @ 2026-04-08  8:01 UTC (permalink / raw)
  To: Mallesh Koujalagi
  Cc: intel-xe, dri-devel, rodrigo.vivi, andrealmeid, christian.koenig,
	airlied, simona.vetter, mripard, anshuman.gupta, badal.nilawar,
	riana.tauro, karthik.poosa, sk.anirban

On Mon, Apr 06, 2026 at 07:53:29PM +0530, Mallesh Koujalagi wrote:
> Add documentation for the DRM_WEDGE_RECOVERY_COLD_RESET recovery method.
> This method is designated for severe error conditions that compromise core
> device functionality and are unrecoverable via other recovery methods such
> as driver rebind or bus reset. The documentation clarifies when this
> recovery method should be used and its implications for userspace.
> 
> v2:
> - Add several instead of number to avoid update. (Jani)
> 
> v3:
> - Update document with generic scenario. (Riana)
> - Consistent with terminology. (Raag)
> - Remove already covered information.
> 
> Signed-off-by: Mallesh Koujalagi <mallesh.koujalagi@intel.com>
> ---
>  Documentation/gpu/drm-uapi.rst | 60 +++++++++++++++++++++++++++++++++-
>  1 file changed, 59 insertions(+), 1 deletion(-)
> 
> diff --git a/Documentation/gpu/drm-uapi.rst b/Documentation/gpu/drm-uapi.rst
> index 579e87cb9ff7..d8b3608c5cbb 100644
> --- a/Documentation/gpu/drm-uapi.rst
> +++ b/Documentation/gpu/drm-uapi.rst
> @@ -418,7 +418,7 @@ needed.
>  Recovery
>  --------
>  
> -Current implementation defines four recovery methods, out of which, drivers
> +Current implementation defines several recovery methods, out of which, drivers
>  can use any one, multiple or none. Method(s) of choice will be sent in the
>  uevent environment as ``WEDGED=<method1>[,..,<methodN>]`` in order of less to
>  more side-effects. See the section `Vendor Specific Recovery`_
> @@ -435,6 +435,7 @@ following expectations.
>      rebind          unbind + bind driver
>      bus-reset       unbind + bus reset/re-enumeration + bind
>      vendor-specific vendor specific recovery method
> +    cold-reset      full device cold reset required

Does this work without unbind + bind?

>      unknown         consumer policy
>      =============== ========================================
>  
> @@ -447,6 +448,14 @@ debug purpose in order to root cause the hang. This is useful because the first
>  hang is usually the most critical one which can result in consequential hangs
>  or complete wedging.
>  
> +Cold Reset Recovery
> +-------------------
> +
> +When ``WEDGED=cold-reset`` is sent, it indicates that the device has encountered
> +an error condition that cannot be resolved through other recovery methods such as
> +driver rebind or bus reset, and requires a complete device cold reset to restore

s/complete cold reset/device power cycle

> +functionality.

This section is much easier to follow and can be reused in commit message.

We may also want to add limitation of this method (if any). IIUC this
requires that the slot actually allows removing power.

Raag

>  Vendor Specific Recovery
>  ------------------------
>  
> @@ -524,6 +533,55 @@ Recovery script::
>      echo -n $DEVICE > $DRIVER/unbind
>      echo -n $DEVICE > $DRIVER/bind
>  
> +Example - cold-reset
> +--------------------
> +
> +Udev rule::
> +
> +    SUBSYSTEM=="drm", ENV{WEDGED}=="cold-reset", DEVPATH=="*/drm/card[0-9]",
> +    RUN+="/path/to/cold-reset.sh $env{DEVPATH}"
> +
> +Recovery script::
> +
> +    #!/bin/sh
> +
> +    [ -z "$1" ] && echo "Usage: $0 <device-path>" && exit 1
> +
> +    # Get device
> +    DEVPATH=$(readlink -f /sys/$1/device 2>/dev/null || readlink -f /sys/$1)
> +    DEVICE=$(basename $DEVPATH)
> +
> +    echo "Cold reset: $DEVICE"
> +
> +    # Try slot power reset first
> +    SLOT=$(find /sys/bus/pci/slots/ -type l 2>/dev/null | while read slot; do
> +	    ADDR=$(cat "$slot" 2>/dev/null)
> +	    [ -n "$ADDR" ] && echo "$DEVICE" | grep -q "^$ADDR" && basename $(dirname "$slot") && break
> +    done)
> +
> +    if [ -n "$SLOT" ]; then
> +	echo "Using slot $SLOT"
> +
> +	# Unbind driver
> +	[ -e "/sys/bus/pci/devices/$DEVICE/driver" ] && \
> +	echo "$DEVICE" > /sys/bus/pci/devices/$DEVICE/driver/unbind 2>/dev/null
> +
> +	# Remove device
> +	echo 1 > /sys/bus/pci/devices/$DEVICE/remove
> +
> +	# Power cycle slot
> +	echo 0 > /sys/bus/pci/slots/$SLOT/power
> +	sleep 2
> +	echo 1 > /sys/bus/pci/slots/$SLOT/power
> +	sleep 1
> +
> +	# Rescan
> +	echo 1 > /sys/bus/pci/rescan
> +	echo "Done!"
> +    else
> +	echo "No slot found"
> +    fi
> +
>  Customization
>  -------------
>  
> -- 
> 2.34.1
> 

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

* Re: [PATCH v3 4/4] drm/xe: Handle PUNIT errors by requesting cold-reset recovery
  2026-04-06 14:23 ` [PATCH v3 4/4] drm/xe: Handle PUNIT errors by requesting cold-reset recovery Mallesh Koujalagi
@ 2026-04-08  8:09   ` Raag Jadav
  0 siblings, 0 replies; 12+ messages in thread
From: Raag Jadav @ 2026-04-08  8:09 UTC (permalink / raw)
  To: Mallesh Koujalagi
  Cc: intel-xe, dri-devel, rodrigo.vivi, andrealmeid, christian.koenig,
	airlied, simona.vetter, mripard, anshuman.gupta, badal.nilawar,
	riana.tauro, karthik.poosa, sk.anirban

On Mon, Apr 06, 2026 at 07:53:30PM +0530, Mallesh Koujalagi wrote:
> When PUNIT (power management unit) errors are detected that persist across
> warm resets, mark the device as wedged with DRM_WEDGE_RECOVERY_COLD_RESET
> and notify userspace that a complete device cold reset is required to
> restore normal operation.
> 
> v3:
> - Use PUNIT instead of PMU. (Riana)
> - Use consistent wordingi.
> - Remove log. (Raag)
> 
> Signed-off-by: Mallesh Koujalagi <mallesh.koujalagi@intel.com>
> ---
>  drivers/gpu/drm/xe/xe_ras.c | 21 ++++++++++++++++++++-
>  drivers/gpu/drm/xe/xe_ras.h |  1 +
>  2 files changed, 21 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/xe/xe_ras.c b/drivers/gpu/drm/xe/xe_ras.c
> index 437811845c01..e2e1ab3fb4ce 100644
> --- a/drivers/gpu/drm/xe/xe_ras.c
> +++ b/drivers/gpu/drm/xe/xe_ras.c
> @@ -5,6 +5,7 @@
>  
>  #include "xe_assert.h"
>  #include "xe_device_types.h"
> +#include "xe_device.h"
>  #include "xe_printk.h"
>  #include "xe_ras.h"
>  #include "xe_ras_types.h"
> @@ -93,6 +94,24 @@ static enum xe_ras_recovery_action handle_compute_errors(struct xe_device *xe,
>  	return XE_RAS_RECOVERY_ACTION_RECOVERED;
>  }
>  
> +/**
> + * xe_punit_error_handler - Handler for Punit errors requiring cold reset
> + * @xe: device instance
> + *
> + * Handles Punit errors that affect the device and cannot be recovered
> + * through driver reload, PCIe reset, etc.
> + *
> + * Marks the device as wedged with DRM_WEDGE_RECOVERY_COLD_RESET method
> + * and notifies userspace that a device cold reset is required.
> + */
> +void xe_punit_error_handler(struct xe_device *xe)

Should this be static?

> +{
> +	xe_err(xe, "Recovery: Device cold reset required\n");

Rather print it inside the event helper so we don't have to go around
logging each case. Let me see what can be done here.

Raag

> +	xe_device_set_wedged_method(xe, DRM_WEDGE_RECOVERY_COLD_RESET);
> +	xe_device_declare_wedged(xe);
> +}
> +
>  static enum xe_ras_recovery_action handle_soc_internal_errors(struct xe_device *xe,
>  							      struct xe_ras_error_array *arr)
>  {
> @@ -132,7 +151,7 @@ static enum xe_ras_recovery_action handle_soc_internal_errors(struct xe_device *
>  			xe_err(xe, "[RAS]: PUNIT %s error detected: 0x%x\n",
>  			       severity_to_str(xe, common.severity),
>  			       ieh_error->global_error_status);
> -			/** TODO: Add PUNIT error handling */
> +			xe_punit_error_handler(xe);
>  			return XE_RAS_RECOVERY_ACTION_DISCONNECT;
>  		}
>  	}
> diff --git a/drivers/gpu/drm/xe/xe_ras.h b/drivers/gpu/drm/xe/xe_ras.h
> index e191ab80080c..ab1fde200625 100644
> --- a/drivers/gpu/drm/xe/xe_ras.h
> +++ b/drivers/gpu/drm/xe/xe_ras.h
> @@ -11,6 +11,7 @@
>  struct xe_device;
>  
>  void xe_ras_init(struct xe_device *xe);
> +void xe_punit_error_handler(struct xe_device *xe);
>  enum xe_ras_recovery_action  xe_ras_process_errors(struct xe_device *xe);
>  
>  #endif
> -- 
> 2.34.1
> 

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

end of thread, other threads:[~2026-04-08  8:09 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-04-06 14:23 [PATCH v3 0/4] Introduce cold reset recovery method Mallesh Koujalagi
2026-04-06 14:23 ` [PATCH v3 1/4] Introduce Xe Uncorrectable Error Handling Mallesh Koujalagi
2026-04-06 14:23 ` [PATCH v3 2/4] drm: Add DRM_WEDGE_RECOVERY_COLD_RESET recovery method Mallesh Koujalagi
2026-04-08  7:46   ` Raag Jadav
2026-04-06 14:23 ` [PATCH v3 3/4] drm/doc: Document " Mallesh Koujalagi
2026-04-08  8:01   ` Raag Jadav
2026-04-06 14:23 ` [PATCH v3 4/4] drm/xe: Handle PUNIT errors by requesting cold-reset recovery Mallesh Koujalagi
2026-04-08  8:09   ` Raag Jadav
2026-04-06 15:33 ` ✗ CI.checkpatch: warning for Introduce cold reset recovery method (rev2) Patchwork
2026-04-06 15:34 ` ✓ CI.KUnit: success " Patchwork
2026-04-06 16:52 ` ✓ Xe.CI.BAT: " Patchwork
2026-04-06 22:09 ` ✓ 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