Intel-XE Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v4 0/6] Add support to handle memory double-bit ecc errors
@ 2026-10-05  9:01 Riana Tauro
  2026-10-05  9:01 ` [PATCH v4 1/6] drm/xe: Separate drm-ras netlink data from device and firmware RAS state Riana Tauro
                   ` (8 more replies)
  0 siblings, 9 replies; 18+ messages in thread
From: Riana Tauro @ 2026-10-05  9:01 UTC (permalink / raw)
  To: intel-xe
  Cc: riana.tauro, anshuman.gupta, rodrigo.vivi, aravind.iddamsetty,
	badal.nilawar, raag.jadav, ravi.kishore.koppuravuri,
	mallesh.koujalagi, tejas.upadhyay, himal.prasad.ghimiray

This series introduces the firmware commands required to handle
uncorrectable memory double-bit ecc errors.

When a error is detected, the driver determines whether the affected
page can be offlined and sends an offline/remove request to firmware
via sysctrl interface. Pages belonging to critical Bos or stolen memory
require a Secondary Bus Reset(SBR) to recover.
Pages configured for log-only handling are removed from queue.

For the rest of the valid pages, the first error is a poison error and a
remove is sent to firmware to avoid marking the page as bad and to
remove from queue. On the second occurence at the same address, we
request the firmware to offline the page as this would indicate a
Double-bit ECC error. Any subsequent errors at the same address should be
because of memory scrubber and a remove is sent to firmware to remove the
page from queue. This is done by tracking the firmware offlined pages by Xe KMD.

At module load, the driver queries firmware for both the offline list
and the queue and processes them accordingly.

Rev2: Rebase
      fix sigid logs
      fix sashiko review comments

Rev3: add a common function for queue and list
      fix other review comments

Rev4: reorder list and queue function calls
      fix sashiko comments
      check userpolicy before soft offlining
      handle -ENOMEM
      fix other cosmetic review comments

Riana Tauro (6):
  drm/xe: Separate drm-ras netlink data from device and firmware RAS
    state
  drm/xe/xe_ras: Handle page offline requests for device memory ecc
    errors
  drm/xe/xe_ras: Add support to query page offline queue and list
  drm/xe/xe_ras: Add function to get maximum pages firmware can store
  drm/xe/xe_ttm_vram: Report max_pages reported by firmware to userspace
  drm/xe/xe_ras: Track offlined pages by firmware to avoid duplicates

 drivers/gpu/drm/xe/xe_device.c                |   4 +-
 drivers/gpu/drm/xe/xe_device_types.h          |  11 +-
 drivers/gpu/drm/xe/xe_drm_ras.c               |  16 +-
 drivers/gpu/drm/xe/xe_drm_ras_types.h         |   3 -
 drivers/gpu/drm/xe/xe_hw_error.c              |   6 +-
 drivers/gpu/drm/xe/xe_ras.c                   | 303 +++++++++++++++++-
 drivers/gpu/drm/xe/xe_ras.h                   |   5 +-
 drivers/gpu/drm/xe/xe_ras_types.h             |  85 +++++
 drivers/gpu/drm/xe/xe_sysctrl_mailbox_types.h |   6 +
 drivers/gpu/drm/xe/xe_ttm_vram_mgr.c          |   9 +-
 drivers/gpu/drm/xe/xe_ttm_vram_mgr_types.h    |   2 -
 11 files changed, 409 insertions(+), 41 deletions(-)

-- 
2.47.1


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

* [PATCH v4 1/6] drm/xe: Separate drm-ras netlink data from device and firmware RAS state
  2026-10-05  9:01 [PATCH v4 0/6] Add support to handle memory double-bit ecc errors Riana Tauro
@ 2026-10-05  9:01 ` Riana Tauro
  2026-10-05 11:02   ` Upadhyay, Tejas
  2026-10-05  9:01 ` [PATCH v4 2/6] drm/xe/xe_ras: Handle page offline requests for device memory ecc errors Riana Tauro
                   ` (7 subsequent siblings)
  8 siblings, 1 reply; 18+ messages in thread
From: Riana Tauro @ 2026-10-05  9:01 UTC (permalink / raw)
  To: intel-xe
  Cc: riana.tauro, anshuman.gupta, rodrigo.vivi, aravind.iddamsetty,
	badal.nilawar, raag.jadav, ravi.kishore.koppuravuri,
	mallesh.koujalagi, tejas.upadhyay, himal.prasad.ghimiray

Keep the DRM RAS data used for netlink reporting separate from the
device and firmware RAS state in xe_device.

Signed-off-by: Riana Tauro <riana.tauro@intel.com>
Reviewed-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
---
v2: remove inline function (Himal)
---
 drivers/gpu/drm/xe/xe_device_types.h  | 11 +++++++++--
 drivers/gpu/drm/xe/xe_drm_ras.c       | 16 ++++++++--------
 drivers/gpu/drm/xe/xe_drm_ras_types.h |  3 ---
 drivers/gpu/drm/xe/xe_hw_error.c      |  6 +++---
 drivers/gpu/drm/xe/xe_ras.c           | 26 ++++++++++++++++++--------
 drivers/gpu/drm/xe/xe_ras.h           |  2 ++
 drivers/gpu/drm/xe/xe_ras_types.h     | 10 ++++++++++
 drivers/gpu/drm/xe/xe_ttm_vram_mgr.c  |  3 ++-
 8 files changed, 52 insertions(+), 25 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_device_types.h b/drivers/gpu/drm/xe/xe_device_types.h
index 41f703a87916..d267fb4e4d81 100644
--- a/drivers/gpu/drm/xe/xe_device_types.h
+++ b/drivers/gpu/drm/xe/xe_device_types.h
@@ -21,6 +21,7 @@
 #include "xe_platform_types.h"
 #include "xe_pmu_types.h"
 #include "xe_pt_types.h"
+#include "xe_ras_types.h"
 #include "xe_sriov_pf_types.h"
 #include "xe_sriov_types.h"
 #include "xe_sriov_vf_types.h"
@@ -576,8 +577,14 @@ struct xe_device {
 	/** @pmu: performance monitoring unit */
 	struct xe_pmu pmu;
 
-	/** @ras: RAS structure for device */
-	struct xe_drm_ras ras;
+	/** @ras: RAS (Reliability, Availability, Serviceability) structures */
+	struct {
+		/** @ras.nl_data: drm-ras netlink data */
+		struct xe_drm_ras nl_data;
+
+		/** @ras.state: RAS device and firmware state */
+		struct xe_ras_state state;
+	} ras;
 
 	/** @i2c: I2C host controller */
 	struct xe_i2c *i2c;
diff --git a/drivers/gpu/drm/xe/xe_drm_ras.c b/drivers/gpu/drm/xe/xe_drm_ras.c
index 7f3695707611..38d77561facf 100644
--- a/drivers/gpu/drm/xe/xe_drm_ras.c
+++ b/drivers/gpu/drm/xe/xe_drm_ras.c
@@ -20,7 +20,7 @@ static int query_error_counter(struct xe_device *xe,
 			       enum drm_xe_ras_error_severity severity,
 			       u32 error_id, const char **name, u32 *val)
 {
-	struct xe_drm_ras *ras = &xe->ras;
+	struct xe_drm_ras *ras = &xe->ras.nl_data;
 	struct xe_drm_ras_counter *info = ras->info[severity];
 
 	if (!info || !info[error_id].name)
@@ -41,7 +41,7 @@ static int clear_error_counter(struct xe_device *xe,
 			       enum drm_xe_ras_error_severity severity,
 			       u32 error_id)
 {
-	struct xe_drm_ras *ras = &xe->ras;
+	struct xe_drm_ras *ras = &xe->ras.nl_data;
 	struct xe_drm_ras_counter *info = ras->info[severity];
 
 	if (!info || !info[error_id].name)
@@ -90,7 +90,7 @@ static int query_correctable_error_threshold(struct drm_ras_node *ep, u32 error_
 					     const char **name, u32 *threshold)
 {
 	struct xe_device *xe = ep->priv;
-	struct xe_drm_ras *ras = &xe->ras;
+	struct xe_drm_ras *ras = &xe->ras.nl_data;
 	struct xe_drm_ras_counter *info = ras->info[DRM_XE_RAS_ERR_SEV_CORRECTABLE];
 
 	if (!info || !info[error_id].name)
@@ -106,7 +106,7 @@ static int query_correctable_error_threshold(struct drm_ras_node *ep, u32 error_
 static int set_correctable_error_threshold(struct drm_ras_node *ep, u32 error_id, u32 threshold)
 {
 	struct xe_device *xe = ep->priv;
-	struct xe_drm_ras *ras = &xe->ras;
+	struct xe_drm_ras *ras = &xe->ras.nl_data;
 	struct xe_drm_ras_counter *info = ras->info[DRM_XE_RAS_ERR_SEV_CORRECTABLE];
 
 	if (!info || !info[error_id].name)
@@ -142,7 +142,7 @@ static int assign_node_params(struct xe_device *xe, struct drm_ras_node *node,
 			      const enum drm_xe_ras_error_severity severity)
 {
 	struct pci_dev *pdev = to_pci_dev(xe->drm.dev);
-	struct xe_drm_ras *ras = &xe->ras;
+	struct xe_drm_ras *ras = &xe->ras.nl_data;
 	const char *device_name;
 
 	device_name = kasprintf(GFP_KERNEL, "%04x:%02x:%02x.%d",
@@ -190,7 +190,7 @@ static void cleanup_node(struct drm_device *drm, void *node)
 
 static int register_nodes(struct xe_device *xe)
 {
-	struct xe_drm_ras *ras = &xe->ras;
+	struct xe_drm_ras *ras = &xe->ras.nl_data;
 	struct drm_ras_node *node;
 	int i, ret;
 
@@ -230,7 +230,7 @@ static int register_nodes(struct xe_device *xe)
  */
 void xe_drm_ras_event(struct xe_device *xe, u32 component, u32 severity, u32 value)
 {
-	struct xe_drm_ras *ras = &xe->ras;
+	struct xe_drm_ras *ras = &xe->ras.nl_data;
 	struct xe_drm_ras_counter *info = ras->info[severity];
 	struct drm_ras_node *node;
 	int ret;
@@ -260,7 +260,7 @@ void xe_drm_ras_event(struct xe_device *xe, u32 component, u32 severity, u32 val
  */
 int xe_drm_ras_init(struct xe_device *xe)
 {
-	struct xe_drm_ras *ras = &xe->ras;
+	struct xe_drm_ras *ras = &xe->ras.nl_data;
 	struct drm_ras_node *node;
 	int err;
 
diff --git a/drivers/gpu/drm/xe/xe_drm_ras_types.h b/drivers/gpu/drm/xe/xe_drm_ras_types.h
index 0be218ba2db7..8d729ad6a264 100644
--- a/drivers/gpu/drm/xe/xe_drm_ras_types.h
+++ b/drivers/gpu/drm/xe/xe_drm_ras_types.h
@@ -43,9 +43,6 @@ struct xe_drm_ras {
 
 	/** @info: info array for all types of errors */
 	struct xe_drm_ras_counter *info[DRM_XE_RAS_ERR_SEV_MAX];
-
-	/** @disable_vram_page_offline: cached configfs policy, immutable after init */
-	bool disable_vram_page_offline;
 };
 
 #endif
diff --git a/drivers/gpu/drm/xe/xe_hw_error.c b/drivers/gpu/drm/xe/xe_hw_error.c
index 5f2abc9485ff..f53a6b3055de 100644
--- a/drivers/gpu/drm/xe/xe_hw_error.c
+++ b/drivers/gpu/drm/xe/xe_hw_error.c
@@ -240,7 +240,7 @@ static void log_soc_error(struct xe_tile *tile, const char * const *reg_info,
 {
 	const char *severity_str = error_severity[severity];
 	struct xe_device *xe = tile_to_xe(tile);
-	struct xe_drm_ras *ras = &xe->ras;
+	struct xe_drm_ras *ras = &xe->ras.nl_data;
 	struct xe_drm_ras_counter *info = ras->info[severity];
 	const char *name;
 
@@ -260,7 +260,7 @@ static void gt_hw_error_handler(struct xe_tile *tile, const enum hardware_error
 {
 	const enum drm_xe_ras_error_severity severity = hw_err_to_severity(hw_err);
 	struct xe_device *xe = tile_to_xe(tile);
-	struct xe_drm_ras *ras = &xe->ras;
+	struct xe_drm_ras *ras = &xe->ras.nl_data;
 	struct xe_drm_ras_counter *info = ras->info[severity];
 	struct xe_mmio *mmio = &tile->mmio;
 	unsigned long err_stat = 0;
@@ -422,7 +422,7 @@ static void hw_error_source_handler(struct xe_tile *tile, const enum hardware_er
 	const enum drm_xe_ras_error_severity severity = hw_err_to_severity(hw_err);
 	const char *severity_str = error_severity[severity];
 	struct xe_device *xe = tile_to_xe(tile);
-	struct xe_drm_ras *ras = &xe->ras;
+	struct xe_drm_ras *ras = &xe->ras.nl_data;
 	struct xe_drm_ras_counter *info = ras->info[severity];
 	unsigned long flags, err_src;
 	u32 err_bit;
diff --git a/drivers/gpu/drm/xe/xe_ras.c b/drivers/gpu/drm/xe/xe_ras.c
index 7a85735c57d5..76c54dbd4af4 100644
--- a/drivers/gpu/drm/xe/xe_ras.c
+++ b/drivers/gpu/drm/xe/xe_ras.c
@@ -906,6 +906,17 @@ static const struct attribute_group gpu_health_group = {
 	.attrs = gpu_health_attrs,
 };
 
+/**
+ * xe_ras_get_disable_page_offline - Get the page offline user policy
+ * @xe: xe device instance
+ *
+ * Return: true if the page offline policy is disabled, false otherwise.
+ */
+bool xe_ras_get_disable_page_offline(struct xe_device *xe)
+{
+	return xe->ras.state.disable_page_offline;
+}
+
 /**
  * xe_ras_init - Initialize Xe RAS
  * @xe: xe device instance
@@ -916,19 +927,18 @@ void xe_ras_init(struct xe_device *xe)
 {
 	int ret;
 
-	/*
-	 * TODO: Replace platform check with xe->info.has_disable_vram_page_offline
-	 * once the feature flag is plumbed through device info.
-	 */
-	if (xe->info.platform == XE_CRESCENTISLAND)
-		xe->ras.disable_vram_page_offline =
-			xe_configfs_get_disable_vram_page_offline(to_pci_dev(xe->drm.dev));
-
 	xe_drm_ras_init(xe);
 
 	if (!xe->info.has_sysctrl)
 		return;
 
+	/*
+	 * TODO: Replace with xe->info.has_disable_vram_page_offline once the feature flag is
+	 * plumbed through device info.
+	 */
+	xe->ras.state.disable_page_offline =
+		xe_configfs_get_disable_vram_page_offline(to_pci_dev(xe->drm.dev));
+
 	if (IS_ENABLED(CONFIG_PCIEAER))
 		ras_usp_aer_init(xe);
 
diff --git a/drivers/gpu/drm/xe/xe_ras.h b/drivers/gpu/drm/xe/xe_ras.h
index 0b8669f28d56..ac1253d6ead9 100644
--- a/drivers/gpu/drm/xe/xe_ras.h
+++ b/drivers/gpu/drm/xe/xe_ras.h
@@ -7,6 +7,7 @@
 #define _XE_RAS_H_
 
 #include <linux/types.h>
+
 #include "xe_ras_types.h"
 
 struct xe_device;
@@ -20,5 +21,6 @@ int xe_ras_get_threshold(struct xe_device *xe, u8 severity, u8 component, u32 *t
 int xe_ras_set_threshold(struct xe_device *xe, u8 severity, u8 component, u32 threshold);
 void xe_ras_init(struct xe_device *xe);
 enum xe_ras_recovery_action xe_ras_process_errors(struct xe_device *xe);
+bool xe_ras_get_disable_page_offline(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
index fe6f3658a2a4..5fe56e42b841 100644
--- a/drivers/gpu/drm/xe/xe_ras_types.h
+++ b/drivers/gpu/drm/xe/xe_ras_types.h
@@ -336,4 +336,14 @@ struct xe_ras_set_health_response {
 	/** @reserved1: Reserved for future use */
 	u32 reserved1[2];
 } __packed;
+
+/* Device structures */
+
+/**
+ * struct xe_ras_state - RAS device and firmware state
+ */
+struct xe_ras_state {
+	/** @disable_page_offline: cached configfs policy, immutable after init */
+	bool disable_page_offline;
+};
 #endif
diff --git a/drivers/gpu/drm/xe/xe_ttm_vram_mgr.c b/drivers/gpu/drm/xe/xe_ttm_vram_mgr.c
index 9a514d983e90..2c4722a956a0 100644
--- a/drivers/gpu/drm/xe/xe_ttm_vram_mgr.c
+++ b/drivers/gpu/drm/xe/xe_ttm_vram_mgr.c
@@ -24,6 +24,7 @@
 #include "xe_mmio.h"
 #include "xe_pm.h"
 #include "xe_printk.h"
+#include "xe_ras.h"
 #include "xe_res_cursor.h"
 #include "xe_ttm_stolen_mgr.h"
 #include "xe_ttm_vram_mgr.h"
@@ -933,7 +934,7 @@ int xe_ttm_vram_handle_addr_fault(struct xe_device *xe, u64 addr)
 	vram_mgr = &vr->ttm;
 	mm = &vram_mgr->mm;
 
-	if (xe->ras.disable_vram_page_offline) {
+	if (xe_ras_get_disable_page_offline(xe)) {
 		xe_err(xe, "0x%llx is reported as corrupted address by HW\n",
 		       addr);
 		return -EOPNOTSUPP;
-- 
2.47.1


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

* [PATCH v4 2/6] drm/xe/xe_ras: Handle page offline requests for device memory ecc errors
  2026-10-05  9:01 [PATCH v4 0/6] Add support to handle memory double-bit ecc errors Riana Tauro
  2026-10-05  9:01 ` [PATCH v4 1/6] drm/xe: Separate drm-ras netlink data from device and firmware RAS state Riana Tauro
@ 2026-10-05  9:01 ` Riana Tauro
  2026-10-05  9:16   ` sashiko-bot
  2026-10-05 13:28   ` Upadhyay, Tejas
  2026-10-05  9:01 ` [PATCH v4 3/6] drm/xe/xe_ras: Add support to query page offline queue and list Riana Tauro
                   ` (6 subsequent siblings)
  8 siblings, 2 replies; 18+ messages in thread
From: Riana Tauro @ 2026-10-05  9:01 UTC (permalink / raw)
  To: intel-xe
  Cc: riana.tauro, anshuman.gupta, rodrigo.vivi, aravind.iddamsetty,
	badal.nilawar, raag.jadav, ravi.kishore.koppuravuri,
	mallesh.koujalagi, tejas.upadhyay, himal.prasad.ghimiray

Add basic support for sending page offline/remove requests to system
controller and use it for device memory ECC error handling.
Pages that belong to critical BOs cannot be handled by offlining and
require a SBR (Secondary Bus Reset).
Pages that are configured for log-only handling are not marked as bad by
firmware.

For all other valid page addresses, the first occurrence of error
indicates a poison error and the page is offlined only by software.
Firmware avoids permanently marking the page as bad. The second occurrence
of an error indicates a Double-bit ECC error and the firmware
permanently marks the page as bad.

Cc: Tejas Upadhyay <tejas.upadhyay@intel.com>
Cc: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Signed-off-by: Riana Tauro <riana.tauro@intel.com>
---
v2: use ret in sigid logging (Mallesh)
    remove additional log
    use xe_assert (Michal)

v3: align address to PAGE_SIZE (sashiko, Himal)
    rename decline to remove
    add more descriptive logs (Himal)

v4: add handling for -ENOMEM (Sashiko, Tejas)
    check user policy (Sashiko, Himal)
---
 drivers/gpu/drm/xe/xe_ras.c                   | 135 +++++++++++++++++-
 drivers/gpu/drm/xe/xe_ras_types.h             |  35 +++++
 drivers/gpu/drm/xe/xe_sysctrl_mailbox_types.h |   2 +
 3 files changed, 167 insertions(+), 5 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_ras.c b/drivers/gpu/drm/xe/xe_ras.c
index 76c54dbd4af4..2ec310c29489 100644
--- a/drivers/gpu/drm/xe/xe_ras.c
+++ b/drivers/gpu/drm/xe/xe_ras.c
@@ -3,6 +3,8 @@
  * Copyright © 2026 Intel Corporation
  */
 
+#include "xe_assert.h"
+#include "xe_bo.h"
 #include "xe_configfs.h"
 #include "xe_debugfs.h"
 #include "xe_device.h"
@@ -16,6 +18,7 @@
 #include "xe_sysctrl_event_types.h"
 #include "xe_sysctrl_mailbox.h"
 #include "xe_sysctrl_mailbox_types.h"
+#include "xe_ttm_vram_mgr.h"
 
 #define CORE_COMPUTE_UNCORR_TYPE	GENMASK(26, 25)
 /*
@@ -201,6 +204,127 @@ static inline const char *comp_to_str(u8 component)
 	return xe_ras_components[component];
 }
 
+static int send_page_offline_cmd(struct xe_device *xe, u64 page_address,
+				 enum xe_ras_page_action action)
+{
+	struct xe_sysctrl_mailbox_command command = {0};
+	struct xe_ras_page_offline_request request = {0};
+	struct xe_ras_page_offline_response response = {0};
+	size_t rlen;
+	int ret;
+
+	if (!xe->info.has_sysctrl)
+		return 0;
+
+	xe_assert(xe, action < XE_RAS_PAGE_ACTION_MAX);
+
+	request.page_address = page_address;
+	request.action = action;
+
+	if (action == XE_RAS_PAGE_ACTION_OFFLINE)
+		xe_log_err(xe, DEVICE_MEMORY, 0, "Requesting firmware to offline page 0x%llx\n",
+			   page_address);
+	else
+		xe_log_err(xe, DEVICE_MEMORY, 0, "Requesting firmware to remove page 0x%llx from queue\n",
+			   page_address);
+
+	xe_sysctrl_create_command(&command, XE_SYSCTRL_GROUP_GFSP, XE_SYSCTRL_CMD_PAGE_OFFLINE,
+				  &request, sizeof(request), &response, sizeof(response));
+
+	ret = xe_sysctrl_send_command(&xe->sc, &command, &rlen);
+	if (ret) {
+		xe_log_err(xe, SYSCTRL, ret, "failed to send page offline command\n");
+		return ret;
+	}
+
+	if (rlen != sizeof(response)) {
+		xe_log_err(xe, SYSCTRL, -EINVAL,
+			   "unexpected page offline response length %zu (expected %zu)\n",
+			   rlen, sizeof(response));
+		return -EINVAL;
+	}
+
+	ret = ras_status_to_errno(response.status);
+	if (ret) {
+		xe_log_err(xe, SYSCTRL, ret, "page offline command failed with status %u\n",
+			   response.status);
+		return ret;
+	}
+
+	return 0;
+}
+
+static int handle_page_offline(struct xe_device *xe, u64 page_address, bool notify_fw)
+{
+	enum xe_ras_page_action action;
+	u64 addr;
+	int ret;
+
+	if (!IS_ALIGNED(page_address, XE_PAGE_SIZE)) {
+		xe_log_err(xe, SYSCTRL, -EINVAL, "Unaligned physical page address: 0x%llx\n",
+			   page_address);
+		return -EINVAL;
+	}
+
+	/* User policy set to disable page offlining */
+	if (xe_ras_get_disable_page_offline(xe)) {
+		action = XE_RAS_PAGE_ACTION_REMOVE;
+		xe_log_err(xe, DEVICE_MEMORY, -EOPNOTSUPP, "User policy set to disable page offlining\n");
+		goto notify;
+	}
+
+	addr = ALIGN_DOWN(page_address, PAGE_SIZE);
+
+	ret = xe_ttm_vram_handle_addr_fault(xe, addr);
+
+	/*
+	 * Handle return code from address fault handling function:
+	 *  0: Page softofflined, remove from firmware queue
+	 * -EIO: Address belongs to a critical BO/stolen area that cannot be offlined
+	 * -ENOMEM: Failed to allocate BO for soft-offlining the page
+	 * -EEXIST: Address is soft offlined but yet to be offlined by firmware for second
+	 * occurrence
+	 */
+
+	switch (ret) {
+	case 0:
+		action = XE_RAS_PAGE_ACTION_REMOVE;
+		xe_log_err(xe, DEVICE_MEMORY, ret,
+			   "Poison detected at physical address 0x%llx, page soft-offlined\n",
+			   page_address);
+		break;
+	case -EIO:
+		xe_log_err(xe, DEVICE_MEMORY, ret,
+			   "Poison detected at physical address 0x%llx, page belongs to critical BO and cannot be soft-offlined\n",
+			   page_address);
+		return ret;
+	case -EEXIST:
+		action = XE_RAS_PAGE_ACTION_OFFLINE;
+		xe_log_err(xe, DEVICE_MEMORY, ret,
+			   "Double-bit ECC error detected at physical address 0x%llx, page soft-offlined\n",
+			   page_address);
+		break;
+	case -ENOMEM:
+		xe_log_err(xe, DEVICE_MEMORY, ret,
+			   "Poison detected at physical address 0x%llx, failed to soft-offline\n",
+			   page_address);
+		return ret;
+	default:
+		xe_log_err(xe, DEVICE_MEMORY, ret, "Failed to handle address fault at physical address 0x%llx\n",
+			   page_address);
+		return 0;
+	}
+
+ notify:
+	if (notify_fw) {
+		ret = send_page_offline_cmd(xe, page_address, action);
+		if (ret)
+			return ret;
+	}
+
+	return 0;
+}
+
 static bool ras_counter_is_valid(struct xe_device *xe, struct xe_ras_error_class *counter)
 {
 	u8 severity = counter->common.severity;
@@ -368,11 +492,12 @@ static u8 handle_soc_internal_errors(struct xe_device *xe, struct xe_ras_error_a
 static u8 handle_device_memory_errors(struct xe_device *xe, struct xe_ras_error_array *arr)
 {
 	struct xe_ras_memory_error *info = (void *)arr->details;
+	int ret;
 
 	/*
 	 * For memory errors, the recovery action depends on the error category
 	 *
-	 * TODO: Double-bit ECC errors: Page offlining
+	 * Double-bit ECC errors: Page offlining
 	 * Poison and data parity errors: Log only
 	 * For any other memory errors, request a reset as recovery mechanism
 	 */
@@ -384,10 +509,10 @@ static u8 handle_device_memory_errors(struct xe_device *xe, struct xe_ras_error_
 		xe_info(xe, "[RAS]: Data parity error detected\n");
 		break;
 	case XE_RAS_MEMORY_DB_ECC:
-		xe_info(xe, "[RAS]: Double-bit ECC error detected at sw address 0x%llx\n",
-			info->sw_address);
-		/* TODO: Add page offlining for Double-bit ECC error */
-		fallthrough;
+		ret = handle_page_offline(xe, info->sw_address, true);
+		if (ret)
+			return XE_RAS_RECOVERY_ACTION_RESET;
+		break;
 	default:
 		return XE_RAS_RECOVERY_ACTION_RESET;
 	}
diff --git a/drivers/gpu/drm/xe/xe_ras_types.h b/drivers/gpu/drm/xe/xe_ras_types.h
index 5fe56e42b841..1495a8636255 100644
--- a/drivers/gpu/drm/xe/xe_ras_types.h
+++ b/drivers/gpu/drm/xe/xe_ras_types.h
@@ -17,6 +17,19 @@
 #define XE_RAS_MEMORY_POISON			BIT(2)
 #define XE_RAS_MEMORY_DATA_PARITY		BIT(5)
 
+/**
+ * enum xe_ras_page_action - Page offline actions for page offline request
+ *
+ * @XE_RAS_PAGE_ACTION_OFFLINE: Instruct firmware to offline the page
+ * @XE_RAS_PAGE_ACTION_REMOVE: Instruct firmware to remove the page from queue
+ * @XE_RAS_PAGE_ACTION_MAX: Max value
+ */
+enum xe_ras_page_action {
+	XE_RAS_PAGE_ACTION_OFFLINE,
+	XE_RAS_PAGE_ACTION_REMOVE,
+	XE_RAS_PAGE_ACTION_MAX
+};
+
 /**
  * enum xe_ras_recovery_action - RAS recovery actions
  *
@@ -295,6 +308,28 @@ struct xe_ras_memory_error {
 	u32 reserved2[10];
 } __packed;
 
+/**
+ * struct xe_ras_page_offline_request - Request for page offline command
+ */
+struct xe_ras_page_offline_request {
+	/** @page_address: Page address (4KB aligned) */
+	u64 page_address;
+	/** @action: Action to be performed, see &enum xe_ras_page_action */
+	u32 action;
+	/** @reserved: Reserved for future use */
+	u32 reserved;
+} __packed;
+
+/**
+ * struct xe_ras_page_offline_response - Response from page offline command
+ */
+struct xe_ras_page_offline_response {
+	/** @status: Status of the page offline request */
+	u32 status;
+	/** @reserved: Reserved for future use */
+	u32 reserved;
+} __packed;
+
 /**
  * struct xe_ras_get_health_request - Request structure for obtaining gpu health
  */
diff --git a/drivers/gpu/drm/xe/xe_sysctrl_mailbox_types.h b/drivers/gpu/drm/xe/xe_sysctrl_mailbox_types.h
index e98fa6877fec..60d17ccc002c 100644
--- a/drivers/gpu/drm/xe/xe_sysctrl_mailbox_types.h
+++ b/drivers/gpu/drm/xe/xe_sysctrl_mailbox_types.h
@@ -30,6 +30,7 @@ enum xe_sysctrl_group {
  * @XE_SYSCTRL_CMD_GET_THRESHOLD: Retrieve error threshold
  * @XE_SYSCTRL_CMD_SET_THRESHOLD: Set error threshold
  * @XE_SYSCTRL_CMD_GET_PENDING_EVENT: Retrieve pending event
+ * @XE_SYSCTRL_CMD_PAGE_OFFLINE: Instruct firmware to offline/remove a page
  * @XE_SYSCTRL_CMD_GET_HEALTH: Retrieve gpu health
  * @XE_SYSCTRL_CMD_SET_HEALTH: Set gpu health
  */
@@ -40,6 +41,7 @@ enum xe_sysctrl_gfsp_cmd {
 	XE_SYSCTRL_CMD_GET_THRESHOLD		= 0x05,
 	XE_SYSCTRL_CMD_SET_THRESHOLD		= 0x06,
 	XE_SYSCTRL_CMD_GET_PENDING_EVENT	= 0x07,
+	XE_SYSCTRL_CMD_PAGE_OFFLINE		= 0x08,
 	XE_SYSCTRL_CMD_GET_HEALTH		= 0x0B,
 	XE_SYSCTRL_CMD_SET_HEALTH		= 0x0C,
 };
-- 
2.47.1


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

* [PATCH v4 3/6] drm/xe/xe_ras: Add support to query page offline queue and list
  2026-10-05  9:01 [PATCH v4 0/6] Add support to handle memory double-bit ecc errors Riana Tauro
  2026-10-05  9:01 ` [PATCH v4 1/6] drm/xe: Separate drm-ras netlink data from device and firmware RAS state Riana Tauro
  2026-10-05  9:01 ` [PATCH v4 2/6] drm/xe/xe_ras: Handle page offline requests for device memory ecc errors Riana Tauro
@ 2026-10-05  9:01 ` Riana Tauro
  2026-10-05 11:29   ` Upadhyay, Tejas
  2026-10-05  9:02 ` [PATCH v4 4/6] drm/xe/xe_ras: Add function to get maximum pages firmware can store Riana Tauro
                   ` (5 subsequent siblings)
  8 siblings, 1 reply; 18+ messages in thread
From: Riana Tauro @ 2026-10-05  9:01 UTC (permalink / raw)
  To: intel-xe
  Cc: riana.tauro, anshuman.gupta, rodrigo.vivi, aravind.iddamsetty,
	badal.nilawar, raag.jadav, ravi.kishore.koppuravuri,
	mallesh.koujalagi, tejas.upadhyay, himal.prasad.ghimiray

Add support to query page offline list and queue from firmware
during module load. The page offline list command retrieves pages that
are already offlined by the firmware. The page offline queue command
retrieves the pages pending to be offlined by the firmware.

Cc: Tejas Upadhyay <tejas.upadhyay@intel.com>
Signed-off-by: Riana Tauro <riana.tauro@intel.com>
---
v2: rebase
    store total pages once per response (Sashiko)

v3: common function for offline and queue (Himal)

v4: re-order list and queue (Sashiko, Himal)
    remove type
	use size_t
	add description and rename functions (Tejas)
---
 drivers/gpu/drm/xe/xe_ras.c                   | 87 +++++++++++++++++++
 drivers/gpu/drm/xe/xe_ras_types.h             | 35 ++++++++
 drivers/gpu/drm/xe/xe_sysctrl_mailbox_types.h |  4 +
 3 files changed, 126 insertions(+)

diff --git a/drivers/gpu/drm/xe/xe_ras.c b/drivers/gpu/drm/xe/xe_ras.c
index 2ec310c29489..14fc3227483c 100644
--- a/drivers/gpu/drm/xe/xe_ras.c
+++ b/drivers/gpu/drm/xe/xe_ras.c
@@ -343,6 +343,89 @@ static bool ras_counter_is_valid(struct xe_device *xe, struct xe_ras_error_class
 	return true;
 }
 
+/*
+ * Fetch and process offline list and queue from firmware via mailbox. @notify_fw controls
+ * whether firmware is notified of the offline/remove action.
+ */
+static void process_offline_pages(struct xe_device *xe, u32 cmd, void *req, size_t req_size,
+				  void *resp, size_t resp_size,
+				  struct xe_ras_offline_common *common, bool notify_fw)
+{
+	struct xe_sysctrl_mailbox_command command = {0};
+	struct xe_ras_offline_list_request *list_req;
+	u32 total_pages = 0, count = 0;
+	size_t rlen;
+	int ret, i;
+
+	list_req = req;
+
+	xe_sysctrl_create_command(&command, XE_SYSCTRL_GROUP_GFSP, cmd, req, req_size, resp,
+				  resp_size);
+
+	do {
+		memset(resp, 0, resp_size);
+
+		if (list_req)
+			list_req->index = count;
+
+		ret = xe_sysctrl_send_command(&xe->sc, &command, &rlen);
+		if (ret) {
+			xe_log_err(xe, SYSCTRL, ret, "failed to get page offline data, cmd=%#x\n",
+				   cmd);
+			return;
+		}
+
+		if (rlen != resp_size) {
+			xe_log_err(xe, SYSCTRL, -EINVAL,
+				   "unexpected page offline response length %zu (expected %zu), cmd=%#x\n",
+				   rlen, resp_size, cmd);
+			return;
+		}
+
+		for (i = 0; i < common->pages_returned && i < XE_RAS_NUM_PAGES; i++)
+			handle_page_offline(xe, common->page_addresses[i], notify_fw);
+
+		count += common->pages_returned;
+		if (!common->pages_returned)
+			break;
+
+		if (!total_pages)
+			total_pages = common->total_pages;
+
+		if (count > total_pages) {
+			xe_log_err(xe, SYSCTRL, -EINVAL,
+				   "Pages returned exceed total pages %u, returned %u, cmd=%#x\n",
+				   total_pages, count, cmd);
+			return;
+		}
+	} while (common->additional_data);
+}
+
+/*
+ * Retrieve firmware queued pages from warm-retained SRAM during probe. Handle and soft-offline
+ * each page as required.
+ */
+static void get_offline_queue(struct xe_device *xe)
+{
+	struct xe_ras_offline_common response = {0};
+
+	process_offline_pages(xe, XE_SYSCTRL_CMD_GET_OFFLINE_QUEUE, NULL, 0, &response,
+			      sizeof(response), &response, true);
+}
+
+/*
+ * Retrieve permanently offlined pages from firmware's non-volatile storage during probe,
+ * allowing the driver to soft-offline them before kernel allocations begin.
+ */
+static void get_offline_list(struct xe_device *xe)
+{
+	struct xe_ras_offline_list_response response = {0};
+	struct xe_ras_offline_list_request request = {0};
+
+	process_offline_pages(xe, XE_SYSCTRL_CMD_GET_OFFLINE_LIST, &request, sizeof(request),
+			      &response, sizeof(response), &response.common, false);
+}
+
 static struct pci_dev *find_usp_dev(struct pci_dev *pdev)
 {
 	struct pci_dev *vsp;
@@ -1067,6 +1150,10 @@ void xe_ras_init(struct xe_device *xe)
 	if (IS_ENABLED(CONFIG_PCIEAER))
 		ras_usp_aer_init(xe);
 
+	/* Fetch the offline list before queue to avoid duplication */
+	get_offline_list(xe);
+	get_offline_queue(xe);
+
 	ret = devm_device_add_group(xe->drm.dev, &gpu_health_group);
 	if (ret)
 		xe_err(xe, "Failed to create GPU health sysfs, err=%d\n", ret);
diff --git a/drivers/gpu/drm/xe/xe_ras_types.h b/drivers/gpu/drm/xe/xe_ras_types.h
index 1495a8636255..40224db38906 100644
--- a/drivers/gpu/drm/xe/xe_ras_types.h
+++ b/drivers/gpu/drm/xe/xe_ras_types.h
@@ -10,6 +10,7 @@
 
 #define XE_RAS_NUM_COUNTERS			16
 #define XE_RAS_NUM_ERROR_ARR			3
+#define XE_RAS_NUM_PAGES			25
 /* Error bits in IEH global error status register */
 #define XE_RAS_SOC_IEH_PUNIT			BIT(1)
 /* Device memory error categories */
@@ -330,6 +331,40 @@ struct xe_ras_page_offline_response {
 	u32 reserved;
 } __packed;
 
+/**
+ * struct xe_ras_offline_common - Common structure for offline list and queue
+ */
+struct xe_ras_offline_common {
+	/** @total_pages: Total number of queued pages */
+	u32 total_pages;
+	/** @pages_returned: Number of pages returned in this response */
+	u32 pages_returned;
+	/** @page_addresses: Array of page addresses (4KB aligned) */
+	u64 page_addresses[XE_RAS_NUM_PAGES];
+	/** @additional_data: Indicates if more data is available */
+	u8 additional_data;
+	/** @reserved: Reserved for future use */
+	u8 reserved[3];
+} __packed;
+
+/**
+ * struct xe_ras_offline_list_request - Request for get offline list command
+ */
+struct xe_ras_offline_list_request {
+	/** @index: Zero-based index into the offline page list */
+	u32 index;
+} __packed;
+
+/**
+ * struct xe_ras_offline_list_response - Response from get offline list command
+ */
+struct xe_ras_offline_list_response {
+	/** @max_entries: Total no of pages that can be stored in flash */
+	u32 max_entries;
+	/** @common: Common offline page information */
+	struct xe_ras_offline_common common;
+} __packed;
+
 /**
  * struct xe_ras_get_health_request - Request structure for obtaining gpu health
  */
diff --git a/drivers/gpu/drm/xe/xe_sysctrl_mailbox_types.h b/drivers/gpu/drm/xe/xe_sysctrl_mailbox_types.h
index 60d17ccc002c..e1bb64856f43 100644
--- a/drivers/gpu/drm/xe/xe_sysctrl_mailbox_types.h
+++ b/drivers/gpu/drm/xe/xe_sysctrl_mailbox_types.h
@@ -31,6 +31,8 @@ enum xe_sysctrl_group {
  * @XE_SYSCTRL_CMD_SET_THRESHOLD: Set error threshold
  * @XE_SYSCTRL_CMD_GET_PENDING_EVENT: Retrieve pending event
  * @XE_SYSCTRL_CMD_PAGE_OFFLINE: Instruct firmware to offline/remove a page
+ * @XE_SYSCTRL_CMD_GET_OFFLINE_LIST: Retrieve list of all offlined pages from flash
+ * @XE_SYSCTRL_CMD_GET_OFFLINE_QUEUE: Retrieve list of offlined queued pages from firmware
  * @XE_SYSCTRL_CMD_GET_HEALTH: Retrieve gpu health
  * @XE_SYSCTRL_CMD_SET_HEALTH: Set gpu health
  */
@@ -42,6 +44,8 @@ enum xe_sysctrl_gfsp_cmd {
 	XE_SYSCTRL_CMD_SET_THRESHOLD		= 0x06,
 	XE_SYSCTRL_CMD_GET_PENDING_EVENT	= 0x07,
 	XE_SYSCTRL_CMD_PAGE_OFFLINE		= 0x08,
+	XE_SYSCTRL_CMD_GET_OFFLINE_LIST		= 0x09,
+	XE_SYSCTRL_CMD_GET_OFFLINE_QUEUE	= 0x0A,
 	XE_SYSCTRL_CMD_GET_HEALTH		= 0x0B,
 	XE_SYSCTRL_CMD_SET_HEALTH		= 0x0C,
 };
-- 
2.47.1


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

* [PATCH v4 4/6] drm/xe/xe_ras: Add function to get maximum pages firmware can store
  2026-10-05  9:01 [PATCH v4 0/6] Add support to handle memory double-bit ecc errors Riana Tauro
                   ` (2 preceding siblings ...)
  2026-10-05  9:01 ` [PATCH v4 3/6] drm/xe/xe_ras: Add support to query page offline queue and list Riana Tauro
@ 2026-10-05  9:02 ` Riana Tauro
  2026-10-05 11:32   ` Upadhyay, Tejas
  2026-10-05  9:02 ` [PATCH v4 5/6] drm/xe/xe_ttm_vram: Report max_pages reported by firmware to userspace Riana Tauro
                   ` (4 subsequent siblings)
  8 siblings, 1 reply; 18+ messages in thread
From: Riana Tauro @ 2026-10-05  9:02 UTC (permalink / raw)
  To: intel-xe
  Cc: riana.tauro, anshuman.gupta, rodrigo.vivi, aravind.iddamsetty,
	badal.nilawar, raag.jadav, ravi.kishore.koppuravuri,
	mallesh.koujalagi, tejas.upadhyay, himal.prasad.ghimiray

Add function to get maximum number of pages that firmware can store for
offline tracking. This will be used to report max pages to userspace.

Signed-off-by: Riana Tauro <riana.tauro@intel.com>
Reviewed-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
---
v2: fix commit message (Himal)

v3: set max entries in loop (Sashiko, Tejas)
---
 drivers/gpu/drm/xe/xe_ras.c       | 17 +++++++++++++++++
 drivers/gpu/drm/xe/xe_ras.h       |  1 +
 drivers/gpu/drm/xe/xe_ras_types.h |  2 ++
 3 files changed, 20 insertions(+)

diff --git a/drivers/gpu/drm/xe/xe_ras.c b/drivers/gpu/drm/xe/xe_ras.c
index 443a4beb1d3f..a792ec1f0faf 100644
--- a/drivers/gpu/drm/xe/xe_ras.c
+++ b/drivers/gpu/drm/xe/xe_ras.c
@@ -352,6 +352,7 @@ static void process_offline_pages(struct xe_device *xe, u32 cmd, void *req, size
 {
 	struct xe_sysctrl_mailbox_command command = {0};
 	struct xe_ras_offline_list_request *list_req;
+	struct xe_ras_state *state = &xe->ras.state;
 	u32 total_pages = 0, count = 0;
 	size_t rlen;
 	int ret, i;
@@ -381,6 +382,11 @@ static void process_offline_pages(struct xe_device *xe, u32 cmd, void *req, size
 			return;
 		}
 
+		/* Populate the maximum number of pages from offline list */
+		if (list_req && !state->max_pages)
+			state->max_pages =
+				((struct xe_ras_offline_list_response *)resp)->max_entries;
+
 		for (i = 0; i < common->pages_returned && i < XE_RAS_NUM_PAGES; i++)
 			handle_page_offline(xe, common->page_addresses[i], notify_fw);
 
@@ -1124,6 +1130,17 @@ bool xe_ras_get_disable_page_offline(struct xe_device *xe)
 	return xe->ras.state.disable_page_offline;
 }
 
+/**
+ * xe_ras_get_max_pages - Get the maximum number of pages
+ * @xe: xe device instance
+ *
+ * Return: Maximum number of pages stored by the firmware in flash
+ */
+u32 xe_ras_get_max_pages(struct xe_device *xe)
+{
+	return xe->ras.state.max_pages;
+}
+
 /**
  * xe_ras_init - Initialize Xe RAS
  * @xe: xe device instance
diff --git a/drivers/gpu/drm/xe/xe_ras.h b/drivers/gpu/drm/xe/xe_ras.h
index ac1253d6ead9..561c656e2ad3 100644
--- a/drivers/gpu/drm/xe/xe_ras.h
+++ b/drivers/gpu/drm/xe/xe_ras.h
@@ -22,5 +22,6 @@ int xe_ras_set_threshold(struct xe_device *xe, u8 severity, u8 component, u32 th
 void xe_ras_init(struct xe_device *xe);
 enum xe_ras_recovery_action xe_ras_process_errors(struct xe_device *xe);
 bool xe_ras_get_disable_page_offline(struct xe_device *xe);
+u32 xe_ras_get_max_pages(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
index 40224db38906..e09b50a6f77b 100644
--- a/drivers/gpu/drm/xe/xe_ras_types.h
+++ b/drivers/gpu/drm/xe/xe_ras_types.h
@@ -415,5 +415,7 @@ struct xe_ras_set_health_response {
 struct xe_ras_state {
 	/** @disable_page_offline: cached configfs policy, immutable after init */
 	bool disable_page_offline;
+	/** @max_pages: Total number of pages that can be stored by firmware */
+	u32 max_pages;
 };
 #endif
-- 
2.47.1


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

* [PATCH v4 5/6] drm/xe/xe_ttm_vram: Report max_pages reported by firmware to userspace
  2026-10-05  9:01 [PATCH v4 0/6] Add support to handle memory double-bit ecc errors Riana Tauro
                   ` (3 preceding siblings ...)
  2026-10-05  9:02 ` [PATCH v4 4/6] drm/xe/xe_ras: Add function to get maximum pages firmware can store Riana Tauro
@ 2026-10-05  9:02 ` Riana Tauro
  2026-10-05  9:02 ` [PATCH v4 6/6] drm/xe/xe_ras: Track offlined pages by firmware to avoid duplicates Riana Tauro
                   ` (3 subsequent siblings)
  8 siblings, 0 replies; 18+ messages in thread
From: Riana Tauro @ 2026-10-05  9:02 UTC (permalink / raw)
  To: intel-xe
  Cc: riana.tauro, anshuman.gupta, rodrigo.vivi, aravind.iddamsetty,
	badal.nilawar, raag.jadav, ravi.kishore.koppuravuri,
	mallesh.koujalagi, tejas.upadhyay, himal.prasad.ghimiray

Report the maximum number of pages returned by firmware at probe,
resolving the existing TODO.

Cc: Tejas Upadhyay <tejas.upadhyay@intel.com>
Cc: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Signed-off-by: Riana Tauro <riana.tauro@intel.com>
Reviewed-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Reviewed-by: Tejas Upadhyay <tejas.upadhyay@intel.com>
---
v2: fix commit message (Himal)
---
 drivers/gpu/drm/xe/xe_ttm_vram_mgr.c       | 6 +-----
 drivers/gpu/drm/xe/xe_ttm_vram_mgr_types.h | 2 --
 2 files changed, 1 insertion(+), 7 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_ttm_vram_mgr.c b/drivers/gpu/drm/xe/xe_ttm_vram_mgr.c
index 2c4722a956a0..cc33ba7e23c2 100644
--- a/drivers/gpu/drm/xe/xe_ttm_vram_mgr.c
+++ b/drivers/gpu/drm/xe/xe_ttm_vram_mgr.c
@@ -1012,11 +1012,7 @@ static int vram_bad_pages_show(struct seq_file *m, void *unused)
 	struct xe_tile *tile;
 	u8 id;
 
-	man = ttm_manager_type(&xe->ttm, XE_PL_VRAM0);
-	if (man)
-		/* TODO Hook with RAS to show max_pages fetched from FW */
-		seq_printf(m, "max_pages: %d\n",
-			   to_xe_ttm_vram_mgr(man)->max_pages);
+	seq_printf(m, "max_pages: %u\n", xe_ras_get_max_pages(xe));
 
 	for_each_tile(tile, xe, id) {
 		struct xe_vram_region *vr = tile->mem.vram;
diff --git a/drivers/gpu/drm/xe/xe_ttm_vram_mgr_types.h b/drivers/gpu/drm/xe/xe_ttm_vram_mgr_types.h
index efcf3e1d4e80..dc97b0ad0e51 100644
--- a/drivers/gpu/drm/xe/xe_ttm_vram_mgr_types.h
+++ b/drivers/gpu/drm/xe/xe_ttm_vram_mgr_types.h
@@ -37,8 +37,6 @@ struct xe_ttm_vram_mgr {
 	struct mutex lock;
 	/** @mem_type: The TTM memory type */
 	u32 mem_type;
-	/** @max_pages: max pages that can be in offline queue retrieved from FW */
-	u16 max_pages;
 };
 
 /**
-- 
2.47.1


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

* [PATCH v4 6/6] drm/xe/xe_ras: Track offlined pages by firmware to avoid duplicates
  2026-10-05  9:01 [PATCH v4 0/6] Add support to handle memory double-bit ecc errors Riana Tauro
                   ` (4 preceding siblings ...)
  2026-10-05  9:02 ` [PATCH v4 5/6] drm/xe/xe_ttm_vram: Report max_pages reported by firmware to userspace Riana Tauro
@ 2026-10-05  9:02 ` Riana Tauro
  2026-10-05 11:38   ` Upadhyay, Tejas
  2026-10-05 10:03 ` ✓ CI.KUnit: success for Add support to handle memory double-bit ecc errors (rev4) Patchwork
                   ` (2 subsequent siblings)
  8 siblings, 1 reply; 18+ messages in thread
From: Riana Tauro @ 2026-10-05  9:02 UTC (permalink / raw)
  To: intel-xe
  Cc: riana.tauro, anshuman.gupta, rodrigo.vivi, aravind.iddamsetty,
	badal.nilawar, raag.jadav, ravi.kishore.koppuravuri,
	mallesh.koujalagi, tejas.upadhyay, himal.prasad.ghimiray

A memory scrubber can report multiple errors at the same address. Track
pages already successfully offlined by the firmware so that subsequent
reports for the same address are removed from the firmware queue instead
of issuing redundant page offline requests.

Signed-off-by: Riana Tauro <riana.tauro@intel.com>
Reviewed-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
---
v2: use xe page shift (Sashiko)

v3: handle ret
    re-order list and queue (Himal)
---
 drivers/gpu/drm/xe/xe_device.c    |  4 ++-
 drivers/gpu/drm/xe/xe_ras.c       | 43 ++++++++++++++++++++++++++++---
 drivers/gpu/drm/xe/xe_ras.h       |  2 +-
 drivers/gpu/drm/xe/xe_ras_types.h |  3 +++
 4 files changed, 46 insertions(+), 6 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/xe_device.c
index 8392c9fad3c4..643846721d1e 100644
--- a/drivers/gpu/drm/xe/xe_device.c
+++ b/drivers/gpu/drm/xe/xe_device.c
@@ -974,7 +974,9 @@ int xe_device_probe(struct xe_device *xe)
 	if (err)
 		return err;
 
-	xe_ras_init(xe);
+	err = xe_ras_init(xe);
+	if (err)
+		return err;
 
 	/*
 	 * Now that GT is initialized (TTM in particular),
diff --git a/drivers/gpu/drm/xe/xe_ras.c b/drivers/gpu/drm/xe/xe_ras.c
index fc577590dcdd..afa58b420966 100644
--- a/drivers/gpu/drm/xe/xe_ras.c
+++ b/drivers/gpu/drm/xe/xe_ras.c
@@ -20,6 +20,9 @@
 #include "xe_sysctrl_mailbox_types.h"
 #include "xe_ttm_vram_mgr.h"
 
+/* Any non-null entry marks the page as offlined by firmware */
+#define XE_RAS_PAGE_OFFLINED		xa_mk_value(1)
+
 #define CORE_COMPUTE_UNCORR_TYPE	GENMASK(26, 25)
 /*
  * Uncorrectable error type for core compute errors.
@@ -210,6 +213,7 @@ static int send_page_offline_cmd(struct xe_device *xe, u64 page_address,
 	struct xe_sysctrl_mailbox_command command = {0};
 	struct xe_ras_page_offline_request request = {0};
 	struct xe_ras_page_offline_response response = {0};
+	struct xe_ras_state *state = &xe->ras.state;
 	size_t rlen;
 	int ret;
 
@@ -251,11 +255,16 @@ static int send_page_offline_cmd(struct xe_device *xe, u64 page_address,
 		return ret;
 	}
 
+	if (action == XE_RAS_PAGE_ACTION_OFFLINE)
+		xa_store(&state->offlined_pages, page_address >> XE_PTE_SHIFT,
+			 XE_RAS_PAGE_OFFLINED, GFP_KERNEL);
+
 	return 0;
 }
 
 static int handle_page_offline(struct xe_device *xe, u64 page_address, bool notify_fw)
 {
+	struct xe_ras_state *state = &xe->ras.state;
 	enum xe_ras_page_action action;
 	u64 addr;
 	int ret;
@@ -299,7 +308,11 @@ static int handle_page_offline(struct xe_device *xe, u64 page_address, bool noti
 			   page_address);
 		return ret;
 	case -EEXIST:
-		action = XE_RAS_PAGE_ACTION_OFFLINE;
+		if (xa_load(&state->offlined_pages, page_address >> XE_PTE_SHIFT))
+			action = XE_RAS_PAGE_ACTION_REMOVE;
+		else
+			action = XE_RAS_PAGE_ACTION_OFFLINE;
+
 		xe_log_err(xe, DEVICE_MEMORY, ret,
 			   "Double-bit ECC error detected at physical address 0x%llx, page soft-offlined\n",
 			   page_address);
@@ -354,6 +367,7 @@ static void process_offline_pages(struct xe_device *xe, u32 cmd, void *req, size
 	struct xe_sysctrl_mailbox_command command = {0};
 	struct xe_ras_offline_list_request *list_req;
 	struct xe_ras_state *state = &xe->ras.state;
+	unsigned long index;
 	u32 total_pages = 0, count = 0;
 	size_t rlen;
 	int ret, i;
@@ -388,8 +402,15 @@ static void process_offline_pages(struct xe_device *xe, u32 cmd, void *req, size
 			state->max_pages =
 				((struct xe_ras_offline_list_response *)resp)->max_entries;
 
-		for (i = 0; i < common->pages_returned && i < XE_RAS_NUM_PAGES; i++)
+		for (i = 0; i < common->pages_returned && i < XE_RAS_NUM_PAGES; i++) {
 			handle_page_offline(xe, common->page_addresses[i], notify_fw);
+			/* The pages are already offlined by firmware */
+			if (!notify_fw) {
+				index = common->page_addresses[i] >> XE_PTE_SHIFT;
+				xa_store(&state->offlined_pages, index,
+					 XE_RAS_PAGE_OFFLINED, GFP_KERNEL);
+			}
+		}
 
 		count += common->pages_returned;
 		if (!common->pages_returned)
@@ -1120,6 +1141,13 @@ static const struct attribute_group gpu_health_group = {
 	.attrs = gpu_health_attrs,
 };
 
+static void ras_fini(void *arg)
+{
+	struct xe_device *xe = arg;
+
+	xa_destroy(&xe->ras.state.offlined_pages);
+}
+
 /**
  * xe_ras_get_disable_page_offline - Get the page offline user policy
  * @xe: xe device instance
@@ -1147,15 +1175,18 @@ u32 xe_ras_get_max_pages(struct xe_device *xe)
  * @xe: xe device instance
  *
  * Initialize Xe RAS
+ *
+ * Return: 0 on success, negative error code otherwise
  */
-void xe_ras_init(struct xe_device *xe)
+int xe_ras_init(struct xe_device *xe)
 {
+	struct xe_ras_state *state = &xe->ras.state;
 	int ret;
 
 	xe_drm_ras_init(xe);
 
 	if (!xe->info.has_sysctrl)
-		return;
+		return 0;
 
 	/*
 	 * TODO: Replace with xe->info.has_disable_vram_page_offline once the feature flag is
@@ -1167,6 +1198,8 @@ void xe_ras_init(struct xe_device *xe)
 	if (IS_ENABLED(CONFIG_PCIEAER))
 		ras_usp_aer_init(xe);
 
+	xa_init(&state->offlined_pages);
+
 	/* Fetch the offline list before queue to avoid duplication */
 	get_offline_list(xe);
 	get_offline_queue(xe);
@@ -1174,4 +1207,6 @@ void xe_ras_init(struct xe_device *xe)
 	ret = devm_device_add_group(xe->drm.dev, &gpu_health_group);
 	if (ret)
 		xe_err(xe, "Failed to create GPU health sysfs, err=%d\n", ret);
+
+	return devm_add_action_or_reset(xe->drm.dev, ras_fini, xe);
 }
diff --git a/drivers/gpu/drm/xe/xe_ras.h b/drivers/gpu/drm/xe/xe_ras.h
index 561c656e2ad3..e41a52869085 100644
--- a/drivers/gpu/drm/xe/xe_ras.h
+++ b/drivers/gpu/drm/xe/xe_ras.h
@@ -19,7 +19,7 @@ int xe_ras_get_counter(struct xe_device *xe, u8 severity, u8 component, u32 *val
 int xe_ras_clear_counter(struct xe_device *xe, u8 severity, u8 component);
 int xe_ras_get_threshold(struct xe_device *xe, u8 severity, u8 component, u32 *threshold);
 int xe_ras_set_threshold(struct xe_device *xe, u8 severity, u8 component, u32 threshold);
-void xe_ras_init(struct xe_device *xe);
+int xe_ras_init(struct xe_device *xe);
 enum xe_ras_recovery_action xe_ras_process_errors(struct xe_device *xe);
 bool xe_ras_get_disable_page_offline(struct xe_device *xe);
 u32 xe_ras_get_max_pages(struct xe_device *xe);
diff --git a/drivers/gpu/drm/xe/xe_ras_types.h b/drivers/gpu/drm/xe/xe_ras_types.h
index e09b50a6f77b..50d70e2e2fd3 100644
--- a/drivers/gpu/drm/xe/xe_ras_types.h
+++ b/drivers/gpu/drm/xe/xe_ras_types.h
@@ -7,6 +7,7 @@
 #define _XE_RAS_TYPES_H_
 
 #include <linux/types.h>
+#include <linux/xarray.h>
 
 #define XE_RAS_NUM_COUNTERS			16
 #define XE_RAS_NUM_ERROR_ARR			3
@@ -417,5 +418,7 @@ struct xe_ras_state {
 	bool disable_page_offline;
 	/** @max_pages: Total number of pages that can be stored by firmware */
 	u32 max_pages;
+	/** @offlined_pages: XArray of pages offlined by firmware */
+	struct xarray offlined_pages;
 };
 #endif
-- 
2.47.1


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

* Re: [PATCH v4 2/6] drm/xe/xe_ras: Handle page offline requests for device memory ecc errors
  2026-10-05  9:01 ` [PATCH v4 2/6] drm/xe/xe_ras: Handle page offline requests for device memory ecc errors Riana Tauro
@ 2026-10-05  9:16   ` sashiko-bot
  2026-10-05 13:28   ` Upadhyay, Tejas
  1 sibling, 0 replies; 18+ messages in thread
From: sashiko-bot @ 2026-10-05  9:16 UTC (permalink / raw)
  To: Riana Tauro; +Cc: intel-xe

Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
- [High] drm/xe: handle_page_offline() masks address fault errors, preventing GPU reset
- [Medium] drm/xe: missing __le64/__le32 in xe_ras_page_offline_request corrupts data on BE
--

commit dfae5aa8d25c44eda9036e3a3cde9ebb95f9803e
Author: Riana Tauro <riana.tauro@intel.com>
Subject: drm/xe/xe_ras: Handle page offline requests for device memory ecc errors

This commit adds support for sending page offline/remove requests to the
system controller and uses it for device memory ECC error handling. Pages
are soft-offlined depending on whether they belong to critical buffer
objects or standard user space.

> diff --git a/drivers/gpu/drm/xe/xe_ras.c b/drivers/gpu/drm/xe/xe_ras.c
> --- a/drivers/gpu/drm/xe/xe_ras.c
> +++ b/drivers/gpu/drm/xe/xe_ras.c
[ ... ]
> @@ -201,6 +204,127 @@ static inline const char *comp_to_str(u8 component)
[ ... ]
> +static int handle_page_offline(struct xe_device *xe, u64 page_address, bool notify_fw)
> +{
[ ... ]
> +	switch (ret) {
> +	case 0:
[ ... ]
> +	case -ENOMEM:
> +		xe_log_err(xe, DEVICE_MEMORY, ret,
> +			   "Poison detected at physical address 0x%llx, failed to soft-offline\n",
> +			   page_address);
> +		return ret;
> +	default:
> +		xe_log_err(xe, DEVICE_MEMORY, ret, "Failed to handle address fault at physical address 0x%llx\n",
> +			   page_address);
> +		return 0;

[Severity: High]
Does returning 0 here unintentionally mask unexpected errors from
xe_ttm_vram_handle_addr_fault?

If soft-offlining a page fails with an unexpected error such as -EINVAL
or -ENOENT, returning 0 causes the caller in handle_device_memory_errors
to assume the recovery was successful. This skips the required Secondary
Bus Reset, which leaves the system running with an active corrupted memory
page. Should this propagate the error to ensure a reset is triggered?

> +	}
[ ... ]
> @@ -368,11 +492,12 @@ static u8 handle_soc_internal_errors(struct xe_device *xe, struct xe_ras_error_a
[ ... ]
>  	case XE_RAS_MEMORY_DB_ECC:
> -		xe_info(xe, "[RAS]: Double-bit ECC error detected at sw address 0x%llx\n",
> -			info->sw_address);
> -		/* TODO: Add page offlining for Double-bit ECC error */
> -		fallthrough;
> +		ret = handle_page_offline(xe, info->sw_address, true);
> +		if (ret)
> +			return XE_RAS_RECOVERY_ACTION_RESET;
> +		break;
[ ... ]
> diff --git a/drivers/gpu/drm/xe/xe_ras_types.h b/drivers/gpu/drm/xe/xe_ras_types.h
> --- a/drivers/gpu/drm/xe/xe_ras_types.h
> +++ b/drivers/gpu/drm/xe/xe_ras_types.h
[ ... ]
> @@ -295,6 +308,28 @@ struct xe_ras_memory_error {
[ ... ]
> +struct xe_ras_page_offline_request {
> +	/** @page_address: Page address (4KB aligned) */
> +	u64 page_address;
> +	/** @action: Action to be performed, see &enum xe_ras_page_action */
> +	u32 action;

[Severity: Medium]
Could this struct layout cause data corruption on big-endian architectures?

The struct uses native host types for the 64-bit page_address and 32-bit
action instead of explicitly specifying __le64 and __le32. When the sysctrl
mailbox transmits this data via MMIO writel in 32-bit chunks, a big-endian
system will word-swap the 64-bit value, sending the most-significant 32 bits
where the firmware expects the least-significant 32 bits.

Since send_page_offline_cmd assigns these fields directly without any
cpu_to_le64 conversion, should this struct definition use little-endian types
to safely maintain the hardware ABI contract?

> +	/** @reserved: Reserved for future use */
> +	u32 reserved;
> +} __packed;

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20261005090156.1233748-8-riana.tauro@intel.com?part=2

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

* ✓ CI.KUnit: success for Add support to handle memory double-bit ecc errors (rev4)
  2026-10-05  9:01 [PATCH v4 0/6] Add support to handle memory double-bit ecc errors Riana Tauro
                   ` (5 preceding siblings ...)
  2026-10-05  9:02 ` [PATCH v4 6/6] drm/xe/xe_ras: Track offlined pages by firmware to avoid duplicates Riana Tauro
@ 2026-10-05 10:03 ` Patchwork
  2026-10-05 10:56 ` ✓ Xe.CI.BAT: " Patchwork
  2026-10-05 15:29 ` ✗ Xe.CI.FULL: failure " Patchwork
  8 siblings, 0 replies; 18+ messages in thread
From: Patchwork @ 2026-10-05 10:03 UTC (permalink / raw)
  To: Riana Tauro; +Cc: intel-xe

== Series Details ==

Series: Add support to handle memory double-bit ecc errors (rev4)
URL   : https://patchwork.freedesktop.org/series/172710/
State : success

== Summary ==

+ trap cleanup EXIT
+ kunitconfigs=('/kernel/drivers/gpu/tests/.kunitconfig' '/kernel/drivers/gpu/drm/xe/.kunitconfig' '/kernel/drivers/gpu/drm/tests/.kunitconfig' '/kernel/drivers/gpu/drm/ttm/tests/.kunitconfig' '/kernel/drivers/dma-buf/.kunitconfig')
+ for kcfg in "${kunitconfigs[@]}"
+ [[ ! -f /kernel/drivers/gpu/tests/.kunitconfig ]]
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/tests/.kunitconfig
[10:01:20] Configuring KUnit Kernel ...
Generating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[10:01:24] 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
[10:01:45] Starting KUnit Kernel (1/1)...
[10:01:45] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[10:01:45] ============= refcount_interrupt (4 subtests) ==============
[10:01:45] [PASSED] test_single_irq_change
[10:01:45] [PASSED] test_nested_irq_change
[10:01:45] [PASSED] test_multiple_irq_change
[10:01:45] [PASSED] test_irq_save
[10:01:45] =============== [PASSED] refcount_interrupt ================
[10:01:45] ================= gpu_buddy (14 subtests) ==================
[10:01:45] [PASSED] gpu_test_buddy_alloc_limit
[10:01:45] [PASSED] gpu_test_buddy_alloc_optimistic
[10:01:45] [PASSED] gpu_test_buddy_alloc_pessimistic
[10:01:45] [PASSED] gpu_test_buddy_alloc_pathological
[10:01:45] [PASSED] gpu_test_buddy_alloc_contiguous
[10:01:45] [PASSED] gpu_test_buddy_alloc_clear
[10:01:45] [PASSED] gpu_test_buddy_alloc_range
[10:01:46] [PASSED] gpu_test_buddy_alloc_range_bias
[10:01:47] [PASSED] gpu_test_buddy_fragmentation_performance
[10:01:47] [PASSED] gpu_test_buddy_dirty_tracker_performance
[10:01:47] [PASSED] gpu_test_buddy_alloc_exceeds_max_order
[10:01:47] [PASSED] gpu_test_buddy_offset_aligned_allocation
[10:01:47] [PASSED] gpu_test_buddy_subtree_offset_alignment_stress
[10:01:47] [PASSED] gpu_test_buddy_addr_to_block
[10:01:47] ==================== [PASSED] gpu_buddy ====================
[10:01:47] ============================================================
[10:01:47] Testing complete. Ran 18 tests: passed: 18
[10:01:47] Elapsed time: 27.345s total, 4.313s configuring, 20.864s building, 2.082s running

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

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

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

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

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



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

* ✓ Xe.CI.BAT: success for Add support to handle memory double-bit ecc errors (rev4)
  2026-10-05  9:01 [PATCH v4 0/6] Add support to handle memory double-bit ecc errors Riana Tauro
                   ` (6 preceding siblings ...)
  2026-10-05 10:03 ` ✓ CI.KUnit: success for Add support to handle memory double-bit ecc errors (rev4) Patchwork
@ 2026-10-05 10:56 ` Patchwork
  2026-10-05 15:29 ` ✗ Xe.CI.FULL: failure " Patchwork
  8 siblings, 0 replies; 18+ messages in thread
From: Patchwork @ 2026-10-05 10:56 UTC (permalink / raw)
  To: Riana Tauro; +Cc: intel-xe

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

== Series Details ==

Series: Add support to handle memory double-bit ecc errors (rev4)
URL   : https://patchwork.freedesktop.org/series/172710/
State : success

== Summary ==

CI Bug Log - changes from xe-5887-b0bd9fb9e92aae2a653efa1d0407daa2aabe99d0_BAT -> xe-pw-172710v4_BAT
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  

Participating hosts (15 -> 14)
------------------------------

  Missing    (1): bat-adlp-7 


Changes
-------

  No changes found


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

  * IGT: IGT_9126 -> IGT_9127
  * Linux: xe-5887-b0bd9fb9e92aae2a653efa1d0407daa2aabe99d0 -> xe-pw-172710v4

  IGT_9126: 4b27241425f55826ff2df54686e8e709f5baf9dc @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  IGT_9127: 9127
  xe-5887-b0bd9fb9e92aae2a653efa1d0407daa2aabe99d0: b0bd9fb9e92aae2a653efa1d0407daa2aabe99d0
  xe-pw-172710v4: 172710v4

== Logs ==

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

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

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

* RE: [PATCH v4 1/6] drm/xe: Separate drm-ras netlink data from device and firmware RAS state
  2026-10-05  9:01 ` [PATCH v4 1/6] drm/xe: Separate drm-ras netlink data from device and firmware RAS state Riana Tauro
@ 2026-10-05 11:02   ` Upadhyay, Tejas
  0 siblings, 0 replies; 18+ messages in thread
From: Upadhyay, Tejas @ 2026-10-05 11:02 UTC (permalink / raw)
  To: Tauro, Riana, intel-xe@lists.freedesktop.org
  Cc: Gupta, Anshuman, Vivi, Rodrigo,
	aravind.iddamsetty@linux.intel.com, Nilawar, Badal, Jadav, Raag,
	Koppuravuri, Ravi Kishore, Koujalagi,  Mallesh,
	Ghimiray, Himal Prasad



> -----Original Message-----
> From: Tauro, Riana <riana.tauro@intel.com>
> Sent: 05 October 2026 14:32
> To: intel-xe@lists.freedesktop.org
> Cc: Tauro, Riana <riana.tauro@intel.com>; Gupta, Anshuman
> <anshuman.gupta@intel.com>; Vivi, Rodrigo <rodrigo.vivi@intel.com>;
> aravind.iddamsetty@linux.intel.com; Nilawar, Badal
> <badal.nilawar@intel.com>; Jadav, Raag <raag.jadav@intel.com>;
> Koppuravuri, Ravi Kishore <ravi.kishore.koppuravuri@intel.com>; Koujalagi,
> Mallesh <mallesh.koujalagi@intel.com>; Upadhyay, Tejas
> <tejas.upadhyay@intel.com>; Ghimiray, Himal Prasad
> <himal.prasad.ghimiray@intel.com>
> Subject: [PATCH v4 1/6] drm/xe: Separate drm-ras netlink data from device
> and firmware RAS state
> 
> Keep the DRM RAS data used for netlink reporting separate from the device
> and firmware RAS state in xe_device.
> 
> Signed-off-by: Riana Tauro <riana.tauro@intel.com>
> Reviewed-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
> ---
> v2: remove inline function (Himal)
> ---
>  drivers/gpu/drm/xe/xe_device_types.h  | 11 +++++++++--
>  drivers/gpu/drm/xe/xe_drm_ras.c       | 16 ++++++++--------
>  drivers/gpu/drm/xe/xe_drm_ras_types.h |  3 ---
>  drivers/gpu/drm/xe/xe_hw_error.c      |  6 +++---
>  drivers/gpu/drm/xe/xe_ras.c           | 26 ++++++++++++++++++--------
>  drivers/gpu/drm/xe/xe_ras.h           |  2 ++
>  drivers/gpu/drm/xe/xe_ras_types.h     | 10 ++++++++++
>  drivers/gpu/drm/xe/xe_ttm_vram_mgr.c  |  3 ++-
>  8 files changed, 52 insertions(+), 25 deletions(-)
> 
> diff --git a/drivers/gpu/drm/xe/xe_device_types.h
> b/drivers/gpu/drm/xe/xe_device_types.h
> index 41f703a87916..d267fb4e4d81 100644
> --- a/drivers/gpu/drm/xe/xe_device_types.h
> +++ b/drivers/gpu/drm/xe/xe_device_types.h
> @@ -21,6 +21,7 @@
>  #include "xe_platform_types.h"
>  #include "xe_pmu_types.h"
>  #include "xe_pt_types.h"
> +#include "xe_ras_types.h"
>  #include "xe_sriov_pf_types.h"
>  #include "xe_sriov_types.h"
>  #include "xe_sriov_vf_types.h"
> @@ -576,8 +577,14 @@ struct xe_device {
>  	/** @pmu: performance monitoring unit */
>  	struct xe_pmu pmu;
> 
> -	/** @ras: RAS structure for device */
> -	struct xe_drm_ras ras;
> +	/** @ras: RAS (Reliability, Availability, Serviceability) structures */
> +	struct {
> +		/** @ras.nl_data: drm-ras netlink data */
> +		struct xe_drm_ras nl_data;
> +
> +		/** @ras.state: RAS device and firmware state */
> +		struct xe_ras_state state;
> +	} ras;
> 
>  	/** @i2c: I2C host controller */
>  	struct xe_i2c *i2c;
> diff --git a/drivers/gpu/drm/xe/xe_drm_ras.c
> b/drivers/gpu/drm/xe/xe_drm_ras.c index 7f3695707611..38d77561facf
> 100644
> --- a/drivers/gpu/drm/xe/xe_drm_ras.c
> +++ b/drivers/gpu/drm/xe/xe_drm_ras.c
> @@ -20,7 +20,7 @@ static int query_error_counter(struct xe_device *xe,
>  			       enum drm_xe_ras_error_severity severity,
>  			       u32 error_id, const char **name, u32 *val)  {
> -	struct xe_drm_ras *ras = &xe->ras;
> +	struct xe_drm_ras *ras = &xe->ras.nl_data;
>  	struct xe_drm_ras_counter *info = ras->info[severity];
> 
>  	if (!info || !info[error_id].name)
> @@ -41,7 +41,7 @@ static int clear_error_counter(struct xe_device *xe,
>  			       enum drm_xe_ras_error_severity severity,
>  			       u32 error_id)
>  {
> -	struct xe_drm_ras *ras = &xe->ras;
> +	struct xe_drm_ras *ras = &xe->ras.nl_data;
>  	struct xe_drm_ras_counter *info = ras->info[severity];
> 
>  	if (!info || !info[error_id].name)
> @@ -90,7 +90,7 @@ static int query_correctable_error_threshold(struct
> drm_ras_node *ep, u32 error_
>  					     const char **name, u32
> *threshold)  {
>  	struct xe_device *xe = ep->priv;
> -	struct xe_drm_ras *ras = &xe->ras;
> +	struct xe_drm_ras *ras = &xe->ras.nl_data;
>  	struct xe_drm_ras_counter *info = ras-
> >info[DRM_XE_RAS_ERR_SEV_CORRECTABLE];
> 
>  	if (!info || !info[error_id].name)
> @@ -106,7 +106,7 @@ static int query_correctable_error_threshold(struct
> drm_ras_node *ep, u32 error_  static int
> set_correctable_error_threshold(struct drm_ras_node *ep, u32 error_id, u32
> threshold)  {
>  	struct xe_device *xe = ep->priv;
> -	struct xe_drm_ras *ras = &xe->ras;
> +	struct xe_drm_ras *ras = &xe->ras.nl_data;
>  	struct xe_drm_ras_counter *info = ras-
> >info[DRM_XE_RAS_ERR_SEV_CORRECTABLE];
> 
>  	if (!info || !info[error_id].name)
> @@ -142,7 +142,7 @@ static int assign_node_params(struct xe_device *xe,
> struct drm_ras_node *node,
>  			      const enum drm_xe_ras_error_severity severity)  {
>  	struct pci_dev *pdev = to_pci_dev(xe->drm.dev);
> -	struct xe_drm_ras *ras = &xe->ras;
> +	struct xe_drm_ras *ras = &xe->ras.nl_data;
>  	const char *device_name;
> 
>  	device_name = kasprintf(GFP_KERNEL, "%04x:%02x:%02x.%d", @@ -
> 190,7 +190,7 @@ static void cleanup_node(struct drm_device *drm, void
> *node)
> 
>  static int register_nodes(struct xe_device *xe)  {
> -	struct xe_drm_ras *ras = &xe->ras;
> +	struct xe_drm_ras *ras = &xe->ras.nl_data;
>  	struct drm_ras_node *node;
>  	int i, ret;
> 
> @@ -230,7 +230,7 @@ static int register_nodes(struct xe_device *xe)
>   */
>  void xe_drm_ras_event(struct xe_device *xe, u32 component, u32 severity,
> u32 value)  {
> -	struct xe_drm_ras *ras = &xe->ras;
> +	struct xe_drm_ras *ras = &xe->ras.nl_data;
>  	struct xe_drm_ras_counter *info = ras->info[severity];
>  	struct drm_ras_node *node;
>  	int ret;
> @@ -260,7 +260,7 @@ void xe_drm_ras_event(struct xe_device *xe, u32
> component, u32 severity, u32 val
>   */
>  int xe_drm_ras_init(struct xe_device *xe)  {
> -	struct xe_drm_ras *ras = &xe->ras;
> +	struct xe_drm_ras *ras = &xe->ras.nl_data;
>  	struct drm_ras_node *node;
>  	int err;
> 
> diff --git a/drivers/gpu/drm/xe/xe_drm_ras_types.h
> b/drivers/gpu/drm/xe/xe_drm_ras_types.h
> index 0be218ba2db7..8d729ad6a264 100644
> --- a/drivers/gpu/drm/xe/xe_drm_ras_types.h
> +++ b/drivers/gpu/drm/xe/xe_drm_ras_types.h
> @@ -43,9 +43,6 @@ struct xe_drm_ras {
> 
>  	/** @info: info array for all types of errors */
>  	struct xe_drm_ras_counter *info[DRM_XE_RAS_ERR_SEV_MAX];
> -
> -	/** @disable_vram_page_offline: cached configfs policy, immutable
> after init */
> -	bool disable_vram_page_offline;
>  };
> 
>  #endif
> diff --git a/drivers/gpu/drm/xe/xe_hw_error.c
> b/drivers/gpu/drm/xe/xe_hw_error.c
> index 5f2abc9485ff..f53a6b3055de 100644
> --- a/drivers/gpu/drm/xe/xe_hw_error.c
> +++ b/drivers/gpu/drm/xe/xe_hw_error.c
> @@ -240,7 +240,7 @@ static void log_soc_error(struct xe_tile *tile, const
> char * const *reg_info,  {
>  	const char *severity_str = error_severity[severity];
>  	struct xe_device *xe = tile_to_xe(tile);
> -	struct xe_drm_ras *ras = &xe->ras;
> +	struct xe_drm_ras *ras = &xe->ras.nl_data;
>  	struct xe_drm_ras_counter *info = ras->info[severity];
>  	const char *name;
> 
> @@ -260,7 +260,7 @@ static void gt_hw_error_handler(struct xe_tile *tile,
> const enum hardware_error  {
>  	const enum drm_xe_ras_error_severity severity =
> hw_err_to_severity(hw_err);
>  	struct xe_device *xe = tile_to_xe(tile);
> -	struct xe_drm_ras *ras = &xe->ras;
> +	struct xe_drm_ras *ras = &xe->ras.nl_data;
>  	struct xe_drm_ras_counter *info = ras->info[severity];
>  	struct xe_mmio *mmio = &tile->mmio;
>  	unsigned long err_stat = 0;
> @@ -422,7 +422,7 @@ static void hw_error_source_handler(struct xe_tile
> *tile, const enum hardware_er
>  	const enum drm_xe_ras_error_severity severity =
> hw_err_to_severity(hw_err);
>  	const char *severity_str = error_severity[severity];
>  	struct xe_device *xe = tile_to_xe(tile);
> -	struct xe_drm_ras *ras = &xe->ras;
> +	struct xe_drm_ras *ras = &xe->ras.nl_data;
>  	struct xe_drm_ras_counter *info = ras->info[severity];
>  	unsigned long flags, err_src;
>  	u32 err_bit;
> diff --git a/drivers/gpu/drm/xe/xe_ras.c b/drivers/gpu/drm/xe/xe_ras.c index
> 7a85735c57d5..76c54dbd4af4 100644
> --- a/drivers/gpu/drm/xe/xe_ras.c
> +++ b/drivers/gpu/drm/xe/xe_ras.c
> @@ -906,6 +906,17 @@ static const struct attribute_group
> gpu_health_group = {
>  	.attrs = gpu_health_attrs,
>  };
> 
> +/**
> + * xe_ras_get_disable_page_offline - Get the page offline user policy
> + * @xe: xe device instance
> + *
> + * Return: true if the page offline policy is disabled, false otherwise.
> + */
> +bool xe_ras_get_disable_page_offline(struct xe_device *xe) {
> +	return xe->ras.state.disable_page_offline;
> +}
> +
>  /**
>   * xe_ras_init - Initialize Xe RAS
>   * @xe: xe device instance
> @@ -916,19 +927,18 @@ void xe_ras_init(struct xe_device *xe)  {
>  	int ret;
> 
> -	/*
> -	 * TODO: Replace platform check with xe-
> >info.has_disable_vram_page_offline
> -	 * once the feature flag is plumbed through device info.
> -	 */
> -	if (xe->info.platform == XE_CRESCENTISLAND)
> -		xe->ras.disable_vram_page_offline =
> -
> 	xe_configfs_get_disable_vram_page_offline(to_pci_dev(xe-
> >drm.dev));
> -
>  	xe_drm_ras_init(xe);
> 
>  	if (!xe->info.has_sysctrl)
>  		return;
> 
> +	/*
> +	 * TODO: Replace with xe->info.has_disable_vram_page_offline once
> the feature flag is
> +	 * plumbed through device info.
> +	 */
> +	xe->ras.state.disable_page_offline =
> +		xe_configfs_get_disable_vram_page_offline(to_pci_dev(xe-
> >drm.dev));
> +
>  	if (IS_ENABLED(CONFIG_PCIEAER))
>  		ras_usp_aer_init(xe);
> 
> diff --git a/drivers/gpu/drm/xe/xe_ras.h b/drivers/gpu/drm/xe/xe_ras.h index
> 0b8669f28d56..ac1253d6ead9 100644
> --- a/drivers/gpu/drm/xe/xe_ras.h
> +++ b/drivers/gpu/drm/xe/xe_ras.h
> @@ -7,6 +7,7 @@
>  #define _XE_RAS_H_
> 
>  #include <linux/types.h>
> +
>  #include "xe_ras_types.h"
> 
>  struct xe_device;
> @@ -20,5 +21,6 @@ int xe_ras_get_threshold(struct xe_device *xe, u8
> severity, u8 component, u32 *t  int xe_ras_set_threshold(struct xe_device *xe,
> u8 severity, u8 component, u32 threshold);  void xe_ras_init(struct xe_device
> *xe);  enum xe_ras_recovery_action xe_ras_process_errors(struct xe_device
> *xe);
> +bool xe_ras_get_disable_page_offline(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
> index fe6f3658a2a4..5fe56e42b841 100644
> --- a/drivers/gpu/drm/xe/xe_ras_types.h
> +++ b/drivers/gpu/drm/xe/xe_ras_types.h
> @@ -336,4 +336,14 @@ struct xe_ras_set_health_response {
>  	/** @reserved1: Reserved for future use */
>  	u32 reserved1[2];
>  } __packed;
> +
> +/* Device structures */
> +
> +/**
> + * struct xe_ras_state - RAS device and firmware state  */ struct
> +xe_ras_state {
> +	/** @disable_page_offline: cached configfs policy, immutable after init
> */
> +	bool disable_page_offline;

disable_vram_page_offline was named thoughtfully to add "vram" phrase as this is specific to vram. I know you are reading from same vram specific config name. I leave up to you to add "vram" word in this variable.
With or without it :
Reviewed-by: Tejas Upadhyay <tejas.upadhyay@intel.com>

> +};
>  #endif
> diff --git a/drivers/gpu/drm/xe/xe_ttm_vram_mgr.c
> b/drivers/gpu/drm/xe/xe_ttm_vram_mgr.c
> index 9a514d983e90..2c4722a956a0 100644
> --- a/drivers/gpu/drm/xe/xe_ttm_vram_mgr.c
> +++ b/drivers/gpu/drm/xe/xe_ttm_vram_mgr.c
> @@ -24,6 +24,7 @@
>  #include "xe_mmio.h"
>  #include "xe_pm.h"
>  #include "xe_printk.h"
> +#include "xe_ras.h"
>  #include "xe_res_cursor.h"
>  #include "xe_ttm_stolen_mgr.h"
>  #include "xe_ttm_vram_mgr.h"
> @@ -933,7 +934,7 @@ int xe_ttm_vram_handle_addr_fault(struct xe_device
> *xe, u64 addr)
>  	vram_mgr = &vr->ttm;
>  	mm = &vram_mgr->mm;
> 
> -	if (xe->ras.disable_vram_page_offline) {
> +	if (xe_ras_get_disable_page_offline(xe)) {
>  		xe_err(xe, "0x%llx is reported as corrupted address by HW\n",
>  		       addr);
>  		return -EOPNOTSUPP;
> --
> 2.47.1


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

* RE: [PATCH v4 3/6] drm/xe/xe_ras: Add support to query page offline queue and list
  2026-10-05  9:01 ` [PATCH v4 3/6] drm/xe/xe_ras: Add support to query page offline queue and list Riana Tauro
@ 2026-10-05 11:29   ` Upadhyay, Tejas
  2026-10-06  3:55     ` Upadhyay, Tejas
  0 siblings, 1 reply; 18+ messages in thread
From: Upadhyay, Tejas @ 2026-10-05 11:29 UTC (permalink / raw)
  To: Tauro, Riana, intel-xe@lists.freedesktop.org
  Cc: Gupta, Anshuman, Vivi, Rodrigo,
	aravind.iddamsetty@linux.intel.com, Nilawar, Badal, Jadav, Raag,
	Koppuravuri, Ravi Kishore, Koujalagi,  Mallesh,
	Ghimiray, Himal Prasad



> -----Original Message-----
> From: Tauro, Riana <riana.tauro@intel.com>
> Sent: 05 October 2026 14:32
> To: intel-xe@lists.freedesktop.org
> Cc: Tauro, Riana <riana.tauro@intel.com>; Gupta, Anshuman
> <anshuman.gupta@intel.com>; Vivi, Rodrigo <rodrigo.vivi@intel.com>;
> aravind.iddamsetty@linux.intel.com; Nilawar, Badal
> <badal.nilawar@intel.com>; Jadav, Raag <raag.jadav@intel.com>;
> Koppuravuri, Ravi Kishore <ravi.kishore.koppuravuri@intel.com>; Koujalagi,
> Mallesh <mallesh.koujalagi@intel.com>; Upadhyay, Tejas
> <tejas.upadhyay@intel.com>; Ghimiray, Himal Prasad
> <himal.prasad.ghimiray@intel.com>
> Subject: [PATCH v4 3/6] drm/xe/xe_ras: Add support to query page offline
> queue and list
> 
> Add support to query page offline list and queue from firmware during
> module load. The page offline list command retrieves pages that are already
> offlined by the firmware. The page offline queue command retrieves the pages
> pending to be offlined by the firmware.
> 
> Cc: Tejas Upadhyay <tejas.upadhyay@intel.com>
> Signed-off-by: Riana Tauro <riana.tauro@intel.com>
> ---
> v2: rebase
>     store total pages once per response (Sashiko)
> 
> v3: common function for offline and queue (Himal)
> 
> v4: re-order list and queue (Sashiko, Himal)
>     remove type
> 	use size_t
> 	add description and rename functions (Tejas)

LGTM,
Reviewed-by: Tejas Upadhyay <tejas.upadhyay@intel.com>

Tejas
> ---
>  drivers/gpu/drm/xe/xe_ras.c                   | 87 +++++++++++++++++++
>  drivers/gpu/drm/xe/xe_ras_types.h             | 35 ++++++++
>  drivers/gpu/drm/xe/xe_sysctrl_mailbox_types.h |  4 +
>  3 files changed, 126 insertions(+)
> 
> diff --git a/drivers/gpu/drm/xe/xe_ras.c b/drivers/gpu/drm/xe/xe_ras.c index
> 2ec310c29489..14fc3227483c 100644
> --- a/drivers/gpu/drm/xe/xe_ras.c
> +++ b/drivers/gpu/drm/xe/xe_ras.c
> @@ -343,6 +343,89 @@ static bool ras_counter_is_valid(struct xe_device
> *xe, struct xe_ras_error_class
>  	return true;
>  }
> 
> +/*
> + * Fetch and process offline list and queue from firmware via mailbox.
> +@notify_fw controls
> + * whether firmware is notified of the offline/remove action.
> + */
> +static void process_offline_pages(struct xe_device *xe, u32 cmd, void *req,
> size_t req_size,
> +				  void *resp, size_t resp_size,
> +				  struct xe_ras_offline_common *common,
> bool notify_fw) {
> +	struct xe_sysctrl_mailbox_command command = {0};
> +	struct xe_ras_offline_list_request *list_req;
> +	u32 total_pages = 0, count = 0;
> +	size_t rlen;
> +	int ret, i;
> +
> +	list_req = req;
> +
> +	xe_sysctrl_create_command(&command, XE_SYSCTRL_GROUP_GFSP,
> cmd, req, req_size, resp,
> +				  resp_size);
> +
> +	do {
> +		memset(resp, 0, resp_size);
> +
> +		if (list_req)
> +			list_req->index = count;
> +
> +		ret = xe_sysctrl_send_command(&xe->sc, &command, &rlen);
> +		if (ret) {
> +			xe_log_err(xe, SYSCTRL, ret, "failed to get page offline
> data, cmd=%#x\n",
> +				   cmd);
> +			return;
> +		}
> +
> +		if (rlen != resp_size) {
> +			xe_log_err(xe, SYSCTRL, -EINVAL,
> +				   "unexpected page offline response length
> %zu (expected %zu), cmd=%#x\n",
> +				   rlen, resp_size, cmd);
> +			return;
> +		}
> +
> +		for (i = 0; i < common->pages_returned && i <
> XE_RAS_NUM_PAGES; i++)
> +			handle_page_offline(xe, common->page_addresses[i],
> notify_fw);
> +
> +		count += common->pages_returned;
> +		if (!common->pages_returned)
> +			break;
> +
> +		if (!total_pages)
> +			total_pages = common->total_pages;
> +
> +		if (count > total_pages) {
> +			xe_log_err(xe, SYSCTRL, -EINVAL,
> +				   "Pages returned exceed total pages %u,
> returned %u, cmd=%#x\n",
> +				   total_pages, count, cmd);
> +			return;
> +		}
> +	} while (common->additional_data);
> +}
> +
> +/*
> + * Retrieve firmware queued pages from warm-retained SRAM during probe.
> +Handle and soft-offline
> + * each page as required.
> + */
> +static void get_offline_queue(struct xe_device *xe) {
> +	struct xe_ras_offline_common response = {0};
> +
> +	process_offline_pages(xe, XE_SYSCTRL_CMD_GET_OFFLINE_QUEUE,
> NULL, 0, &response,
> +			      sizeof(response), &response, true); }
> +
> +/*
> + * Retrieve permanently offlined pages from firmware's non-volatile
> +storage during probe,
> + * allowing the driver to soft-offline them before kernel allocations begin.
> + */
> +static void get_offline_list(struct xe_device *xe) {
> +	struct xe_ras_offline_list_response response = {0};
> +	struct xe_ras_offline_list_request request = {0};
> +
> +	process_offline_pages(xe, XE_SYSCTRL_CMD_GET_OFFLINE_LIST,
> &request, sizeof(request),
> +			      &response, sizeof(response), &response.common,
> false); }
> +
>  static struct pci_dev *find_usp_dev(struct pci_dev *pdev)  {
>  	struct pci_dev *vsp;
> @@ -1067,6 +1150,10 @@ void xe_ras_init(struct xe_device *xe)
>  	if (IS_ENABLED(CONFIG_PCIEAER))
>  		ras_usp_aer_init(xe);
> 
> +	/* Fetch the offline list before queue to avoid duplication */
> +	get_offline_list(xe);
> +	get_offline_queue(xe);
> +
>  	ret = devm_device_add_group(xe->drm.dev, &gpu_health_group);
>  	if (ret)
>  		xe_err(xe, "Failed to create GPU health sysfs, err=%d\n", ret);
> diff --git a/drivers/gpu/drm/xe/xe_ras_types.h
> b/drivers/gpu/drm/xe/xe_ras_types.h
> index 1495a8636255..40224db38906 100644
> --- a/drivers/gpu/drm/xe/xe_ras_types.h
> +++ b/drivers/gpu/drm/xe/xe_ras_types.h
> @@ -10,6 +10,7 @@
> 
>  #define XE_RAS_NUM_COUNTERS			16
>  #define XE_RAS_NUM_ERROR_ARR			3
> +#define XE_RAS_NUM_PAGES			25
>  /* Error bits in IEH global error status register */
>  #define XE_RAS_SOC_IEH_PUNIT			BIT(1)
>  /* Device memory error categories */
> @@ -330,6 +331,40 @@ struct xe_ras_page_offline_response {
>  	u32 reserved;
>  } __packed;
> 
> +/**
> + * struct xe_ras_offline_common - Common structure for offline list and
> +queue  */ struct xe_ras_offline_common {
> +	/** @total_pages: Total number of queued pages */
> +	u32 total_pages;
> +	/** @pages_returned: Number of pages returned in this response */
> +	u32 pages_returned;
> +	/** @page_addresses: Array of page addresses (4KB aligned) */
> +	u64 page_addresses[XE_RAS_NUM_PAGES];
> +	/** @additional_data: Indicates if more data is available */
> +	u8 additional_data;
> +	/** @reserved: Reserved for future use */
> +	u8 reserved[3];
> +} __packed;
> +
> +/**
> + * struct xe_ras_offline_list_request - Request for get offline list
> +command  */ struct xe_ras_offline_list_request {
> +	/** @index: Zero-based index into the offline page list */
> +	u32 index;
> +} __packed;
> +
> +/**
> + * struct xe_ras_offline_list_response - Response from get offline list
> +command  */ struct xe_ras_offline_list_response {
> +	/** @max_entries: Total no of pages that can be stored in flash */
> +	u32 max_entries;
> +	/** @common: Common offline page information */
> +	struct xe_ras_offline_common common;
> +} __packed;
> +
>  /**
>   * struct xe_ras_get_health_request - Request structure for obtaining gpu
> health
>   */
> diff --git a/drivers/gpu/drm/xe/xe_sysctrl_mailbox_types.h
> b/drivers/gpu/drm/xe/xe_sysctrl_mailbox_types.h
> index 60d17ccc002c..e1bb64856f43 100644
> --- a/drivers/gpu/drm/xe/xe_sysctrl_mailbox_types.h
> +++ b/drivers/gpu/drm/xe/xe_sysctrl_mailbox_types.h
> @@ -31,6 +31,8 @@ enum xe_sysctrl_group {
>   * @XE_SYSCTRL_CMD_SET_THRESHOLD: Set error threshold
>   * @XE_SYSCTRL_CMD_GET_PENDING_EVENT: Retrieve pending event
>   * @XE_SYSCTRL_CMD_PAGE_OFFLINE: Instruct firmware to offline/remove a
> page
> + * @XE_SYSCTRL_CMD_GET_OFFLINE_LIST: Retrieve list of all offlined
> + pages from flash
> + * @XE_SYSCTRL_CMD_GET_OFFLINE_QUEUE: Retrieve list of offlined
> queued
> + pages from firmware
>   * @XE_SYSCTRL_CMD_GET_HEALTH: Retrieve gpu health
>   * @XE_SYSCTRL_CMD_SET_HEALTH: Set gpu health
>   */
> @@ -42,6 +44,8 @@ enum xe_sysctrl_gfsp_cmd {
>  	XE_SYSCTRL_CMD_SET_THRESHOLD		= 0x06,
>  	XE_SYSCTRL_CMD_GET_PENDING_EVENT	= 0x07,
>  	XE_SYSCTRL_CMD_PAGE_OFFLINE		= 0x08,
> +	XE_SYSCTRL_CMD_GET_OFFLINE_LIST		= 0x09,
> +	XE_SYSCTRL_CMD_GET_OFFLINE_QUEUE	= 0x0A,
>  	XE_SYSCTRL_CMD_GET_HEALTH		= 0x0B,
>  	XE_SYSCTRL_CMD_SET_HEALTH		= 0x0C,
>  };
> --
> 2.47.1


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

* RE: [PATCH v4 4/6] drm/xe/xe_ras: Add function to get maximum pages firmware can store
  2026-10-05  9:02 ` [PATCH v4 4/6] drm/xe/xe_ras: Add function to get maximum pages firmware can store Riana Tauro
@ 2026-10-05 11:32   ` Upadhyay, Tejas
  0 siblings, 0 replies; 18+ messages in thread
From: Upadhyay, Tejas @ 2026-10-05 11:32 UTC (permalink / raw)
  To: Tauro, Riana, intel-xe@lists.freedesktop.org
  Cc: Gupta, Anshuman, Vivi, Rodrigo,
	aravind.iddamsetty@linux.intel.com, Nilawar, Badal, Jadav, Raag,
	Koppuravuri, Ravi Kishore, Koujalagi,  Mallesh,
	Ghimiray, Himal Prasad



> -----Original Message-----
> From: Tauro, Riana <riana.tauro@intel.com>
> Sent: 05 October 2026 14:32
> To: intel-xe@lists.freedesktop.org
> Cc: Tauro, Riana <riana.tauro@intel.com>; Gupta, Anshuman
> <anshuman.gupta@intel.com>; Vivi, Rodrigo <rodrigo.vivi@intel.com>;
> aravind.iddamsetty@linux.intel.com; Nilawar, Badal
> <badal.nilawar@intel.com>; Jadav, Raag <raag.jadav@intel.com>;
> Koppuravuri, Ravi Kishore <ravi.kishore.koppuravuri@intel.com>; Koujalagi,
> Mallesh <mallesh.koujalagi@intel.com>; Upadhyay, Tejas
> <tejas.upadhyay@intel.com>; Ghimiray, Himal Prasad
> <himal.prasad.ghimiray@intel.com>
> Subject: [PATCH v4 4/6] drm/xe/xe_ras: Add function to get maximum pages
> firmware can store
> 
> Add function to get maximum number of pages that firmware can store for
> offline tracking. This will be used to report max pages to userspace.
> 
> Signed-off-by: Riana Tauro <riana.tauro@intel.com>
> Reviewed-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
> ---
> v2: fix commit message (Himal)
> 
> v3: set max entries in loop (Sashiko, Tejas)


LGTM,
Reviewed-by: Tejas Upadhyay <tejas.upadhyay@intel.com>

Tejas
> ---
>  drivers/gpu/drm/xe/xe_ras.c       | 17 +++++++++++++++++
>  drivers/gpu/drm/xe/xe_ras.h       |  1 +
>  drivers/gpu/drm/xe/xe_ras_types.h |  2 ++
>  3 files changed, 20 insertions(+)
> 
> diff --git a/drivers/gpu/drm/xe/xe_ras.c b/drivers/gpu/drm/xe/xe_ras.c index
> 443a4beb1d3f..a792ec1f0faf 100644
> --- a/drivers/gpu/drm/xe/xe_ras.c
> +++ b/drivers/gpu/drm/xe/xe_ras.c
> @@ -352,6 +352,7 @@ static void process_offline_pages(struct xe_device
> *xe, u32 cmd, void *req, size  {
>  	struct xe_sysctrl_mailbox_command command = {0};
>  	struct xe_ras_offline_list_request *list_req;
> +	struct xe_ras_state *state = &xe->ras.state;
>  	u32 total_pages = 0, count = 0;
>  	size_t rlen;
>  	int ret, i;
> @@ -381,6 +382,11 @@ static void process_offline_pages(struct xe_device
> *xe, u32 cmd, void *req, size
>  			return;
>  		}
> 
> +		/* Populate the maximum number of pages from offline list */
> +		if (list_req && !state->max_pages)
> +			state->max_pages =
> +				((struct xe_ras_offline_list_response *)resp)-
> >max_entries;
> +
>  		for (i = 0; i < common->pages_returned && i <
> XE_RAS_NUM_PAGES; i++)
>  			handle_page_offline(xe, common->page_addresses[i],
> notify_fw);
> 
> @@ -1124,6 +1130,17 @@ bool xe_ras_get_disable_page_offline(struct
> xe_device *xe)
>  	return xe->ras.state.disable_page_offline;
>  }
> 
> +/**
> + * xe_ras_get_max_pages - Get the maximum number of pages
> + * @xe: xe device instance
> + *
> + * Return: Maximum number of pages stored by the firmware in flash  */
> +u32 xe_ras_get_max_pages(struct xe_device *xe) {
> +	return xe->ras.state.max_pages;
> +}
> +
>  /**
>   * xe_ras_init - Initialize Xe RAS
>   * @xe: xe device instance
> diff --git a/drivers/gpu/drm/xe/xe_ras.h b/drivers/gpu/drm/xe/xe_ras.h index
> ac1253d6ead9..561c656e2ad3 100644
> --- a/drivers/gpu/drm/xe/xe_ras.h
> +++ b/drivers/gpu/drm/xe/xe_ras.h
> @@ -22,5 +22,6 @@ int xe_ras_set_threshold(struct xe_device *xe, u8
> severity, u8 component, u32 th  void xe_ras_init(struct xe_device *xe);  enum
> xe_ras_recovery_action xe_ras_process_errors(struct xe_device *xe);  bool
> xe_ras_get_disable_page_offline(struct xe_device *xe);
> +u32 xe_ras_get_max_pages(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
> index 40224db38906..e09b50a6f77b 100644
> --- a/drivers/gpu/drm/xe/xe_ras_types.h
> +++ b/drivers/gpu/drm/xe/xe_ras_types.h
> @@ -415,5 +415,7 @@ struct xe_ras_set_health_response {  struct
> xe_ras_state {
>  	/** @disable_page_offline: cached configfs policy, immutable after init
> */
>  	bool disable_page_offline;
> +	/** @max_pages: Total number of pages that can be stored by
> firmware */
> +	u32 max_pages;
>  };
>  #endif
> --
> 2.47.1


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

* RE: [PATCH v4 6/6] drm/xe/xe_ras: Track offlined pages by firmware to avoid duplicates
  2026-10-05  9:02 ` [PATCH v4 6/6] drm/xe/xe_ras: Track offlined pages by firmware to avoid duplicates Riana Tauro
@ 2026-10-05 11:38   ` Upadhyay, Tejas
  0 siblings, 0 replies; 18+ messages in thread
From: Upadhyay, Tejas @ 2026-10-05 11:38 UTC (permalink / raw)
  To: Tauro, Riana, intel-xe@lists.freedesktop.org
  Cc: Gupta, Anshuman, Vivi, Rodrigo,
	aravind.iddamsetty@linux.intel.com, Nilawar, Badal, Jadav, Raag,
	Koppuravuri, Ravi Kishore, Koujalagi,  Mallesh,
	Ghimiray, Himal Prasad



> -----Original Message-----
> From: Tauro, Riana <riana.tauro@intel.com>
> Sent: 05 October 2026 14:32
> To: intel-xe@lists.freedesktop.org
> Cc: Tauro, Riana <riana.tauro@intel.com>; Gupta, Anshuman
> <anshuman.gupta@intel.com>; Vivi, Rodrigo <rodrigo.vivi@intel.com>;
> aravind.iddamsetty@linux.intel.com; Nilawar, Badal
> <badal.nilawar@intel.com>; Jadav, Raag <raag.jadav@intel.com>;
> Koppuravuri, Ravi Kishore <ravi.kishore.koppuravuri@intel.com>; Koujalagi,
> Mallesh <mallesh.koujalagi@intel.com>; Upadhyay, Tejas
> <tejas.upadhyay@intel.com>; Ghimiray, Himal Prasad
> <himal.prasad.ghimiray@intel.com>
> Subject: [PATCH v4 6/6] drm/xe/xe_ras: Track offlined pages by firmware to
> avoid duplicates
> 
> A memory scrubber can report multiple errors at the same address. Track
> pages already successfully offlined by the firmware so that subsequent reports
> for the same address are removed from the firmware queue instead of issuing
> redundant page offline requests.
> 
> Signed-off-by: Riana Tauro <riana.tauro@intel.com>
> Reviewed-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
> ---
> v2: use xe page shift (Sashiko)
> 
> v3: handle ret
>     re-order list and queue (Himal)
> ---
>  drivers/gpu/drm/xe/xe_device.c    |  4 ++-
>  drivers/gpu/drm/xe/xe_ras.c       | 43 ++++++++++++++++++++++++++++---
>  drivers/gpu/drm/xe/xe_ras.h       |  2 +-
>  drivers/gpu/drm/xe/xe_ras_types.h |  3 +++
>  4 files changed, 46 insertions(+), 6 deletions(-)
> 
> diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/xe_device.c
> index 8392c9fad3c4..643846721d1e 100644
> --- a/drivers/gpu/drm/xe/xe_device.c
> +++ b/drivers/gpu/drm/xe/xe_device.c
> @@ -974,7 +974,9 @@ int xe_device_probe(struct xe_device *xe)
>  	if (err)
>  		return err;
> 
> -	xe_ras_init(xe);
> +	err = xe_ras_init(xe);
> +	if (err)
> +		return err;
> 
>  	/*
>  	 * Now that GT is initialized (TTM in particular), diff --git
> a/drivers/gpu/drm/xe/xe_ras.c b/drivers/gpu/drm/xe/xe_ras.c index
> fc577590dcdd..afa58b420966 100644
> --- a/drivers/gpu/drm/xe/xe_ras.c
> +++ b/drivers/gpu/drm/xe/xe_ras.c
> @@ -20,6 +20,9 @@
>  #include "xe_sysctrl_mailbox_types.h"
>  #include "xe_ttm_vram_mgr.h"
> 
> +/* Any non-null entry marks the page as offlined by firmware */
> +#define XE_RAS_PAGE_OFFLINED		xa_mk_value(1)
> +
>  #define CORE_COMPUTE_UNCORR_TYPE	GENMASK(26, 25)
>  /*
>   * Uncorrectable error type for core compute errors.
> @@ -210,6 +213,7 @@ static int send_page_offline_cmd(struct xe_device
> *xe, u64 page_address,
>  	struct xe_sysctrl_mailbox_command command = {0};
>  	struct xe_ras_page_offline_request request = {0};
>  	struct xe_ras_page_offline_response response = {0};
> +	struct xe_ras_state *state = &xe->ras.state;
>  	size_t rlen;
>  	int ret;
> 
> @@ -251,11 +255,16 @@ static int send_page_offline_cmd(struct xe_device
> *xe, u64 page_address,
>  		return ret;
>  	}
> 
> +	if (action == XE_RAS_PAGE_ACTION_OFFLINE)
> +		xa_store(&state->offlined_pages, page_address >>
> XE_PTE_SHIFT,
> +			 XE_RAS_PAGE_OFFLINED, GFP_KERNEL);

Should you log if for some reason store failed?, warning or notification can help, because missed message then can result in different behavior for intended feature to work.
But its your call.
LGTM,
Reviewed-by: Tejas Upadhyay <tejas.upadhyay@intel.com>

Tejas
> +
>  	return 0;
>  }
> 
>  static int handle_page_offline(struct xe_device *xe, u64 page_address, bool
> notify_fw)  {
> +	struct xe_ras_state *state = &xe->ras.state;
>  	enum xe_ras_page_action action;
>  	u64 addr;
>  	int ret;
> @@ -299,7 +308,11 @@ static int handle_page_offline(struct xe_device *xe,
> u64 page_address, bool noti
>  			   page_address);
>  		return ret;
>  	case -EEXIST:
> -		action = XE_RAS_PAGE_ACTION_OFFLINE;
> +		if (xa_load(&state->offlined_pages, page_address >>
> XE_PTE_SHIFT))
> +			action = XE_RAS_PAGE_ACTION_REMOVE;
> +		else
> +			action = XE_RAS_PAGE_ACTION_OFFLINE;
> +
>  		xe_log_err(xe, DEVICE_MEMORY, ret,
>  			   "Double-bit ECC error detected at physical address
> 0x%llx, page soft-offlined\n",
>  			   page_address);
> @@ -354,6 +367,7 @@ static void process_offline_pages(struct xe_device
> *xe, u32 cmd, void *req, size
>  	struct xe_sysctrl_mailbox_command command = {0};
>  	struct xe_ras_offline_list_request *list_req;
>  	struct xe_ras_state *state = &xe->ras.state;
> +	unsigned long index;
>  	u32 total_pages = 0, count = 0;
>  	size_t rlen;
>  	int ret, i;
> @@ -388,8 +402,15 @@ static void process_offline_pages(struct xe_device
> *xe, u32 cmd, void *req, size
>  			state->max_pages =
>  				((struct xe_ras_offline_list_response *)resp)-
> >max_entries;
> 
> -		for (i = 0; i < common->pages_returned && i <
> XE_RAS_NUM_PAGES; i++)
> +		for (i = 0; i < common->pages_returned && i <
> XE_RAS_NUM_PAGES; i++)
> +{
>  			handle_page_offline(xe, common->page_addresses[i],
> notify_fw);
> +			/* The pages are already offlined by firmware */
> +			if (!notify_fw) {
> +				index = common->page_addresses[i] >>
> XE_PTE_SHIFT;
> +				xa_store(&state->offlined_pages, index,
> +					 XE_RAS_PAGE_OFFLINED,
> GFP_KERNEL);
> +			}
> +		}
> 
>  		count += common->pages_returned;
>  		if (!common->pages_returned)
> @@ -1120,6 +1141,13 @@ static const struct attribute_group
> gpu_health_group = {
>  	.attrs = gpu_health_attrs,
>  };
> 
> +static void ras_fini(void *arg)
> +{
> +	struct xe_device *xe = arg;
> +
> +	xa_destroy(&xe->ras.state.offlined_pages);
> +}
> +
>  /**
>   * xe_ras_get_disable_page_offline - Get the page offline user policy
>   * @xe: xe device instance
> @@ -1147,15 +1175,18 @@ u32 xe_ras_get_max_pages(struct xe_device
> *xe)
>   * @xe: xe device instance
>   *
>   * Initialize Xe RAS
> + *
> + * Return: 0 on success, negative error code otherwise
>   */
> -void xe_ras_init(struct xe_device *xe)
> +int xe_ras_init(struct xe_device *xe)
>  {
> +	struct xe_ras_state *state = &xe->ras.state;
>  	int ret;
> 
>  	xe_drm_ras_init(xe);
> 
>  	if (!xe->info.has_sysctrl)
> -		return;
> +		return 0;
> 
>  	/*
>  	 * TODO: Replace with xe->info.has_disable_vram_page_offline once
> the feature flag is @@ -1167,6 +1198,8 @@ void xe_ras_init(struct xe_device
> *xe)
>  	if (IS_ENABLED(CONFIG_PCIEAER))
>  		ras_usp_aer_init(xe);
> 
> +	xa_init(&state->offlined_pages);
> +
>  	/* Fetch the offline list before queue to avoid duplication */
>  	get_offline_list(xe);
>  	get_offline_queue(xe);
> @@ -1174,4 +1207,6 @@ void xe_ras_init(struct xe_device *xe)
>  	ret = devm_device_add_group(xe->drm.dev, &gpu_health_group);
>  	if (ret)
>  		xe_err(xe, "Failed to create GPU health sysfs, err=%d\n", ret);
> +
> +	return devm_add_action_or_reset(xe->drm.dev, ras_fini, xe);
>  }
> diff --git a/drivers/gpu/drm/xe/xe_ras.h b/drivers/gpu/drm/xe/xe_ras.h index
> 561c656e2ad3..e41a52869085 100644
> --- a/drivers/gpu/drm/xe/xe_ras.h
> +++ b/drivers/gpu/drm/xe/xe_ras.h
> @@ -19,7 +19,7 @@ int xe_ras_get_counter(struct xe_device *xe, u8 severity,
> u8 component, u32 *val  int xe_ras_clear_counter(struct xe_device *xe, u8
> severity, u8 component);  int xe_ras_get_threshold(struct xe_device *xe, u8
> severity, u8 component, u32 *threshold);  int xe_ras_set_threshold(struct
> xe_device *xe, u8 severity, u8 component, u32 threshold); -void
> xe_ras_init(struct xe_device *xe);
> +int xe_ras_init(struct xe_device *xe);
>  enum xe_ras_recovery_action xe_ras_process_errors(struct xe_device *xe);
> bool xe_ras_get_disable_page_offline(struct xe_device *xe);
>  u32 xe_ras_get_max_pages(struct xe_device *xe); diff --git
> a/drivers/gpu/drm/xe/xe_ras_types.h b/drivers/gpu/drm/xe/xe_ras_types.h
> index e09b50a6f77b..50d70e2e2fd3 100644
> --- a/drivers/gpu/drm/xe/xe_ras_types.h
> +++ b/drivers/gpu/drm/xe/xe_ras_types.h
> @@ -7,6 +7,7 @@
>  #define _XE_RAS_TYPES_H_
> 
>  #include <linux/types.h>
> +#include <linux/xarray.h>
> 
>  #define XE_RAS_NUM_COUNTERS			16
>  #define XE_RAS_NUM_ERROR_ARR			3
> @@ -417,5 +418,7 @@ struct xe_ras_state {
>  	bool disable_page_offline;
>  	/** @max_pages: Total number of pages that can be stored by
> firmware */
>  	u32 max_pages;
> +	/** @offlined_pages: XArray of pages offlined by firmware */
> +	struct xarray offlined_pages;
>  };
>  #endif
> --
> 2.47.1


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

* RE: [PATCH v4 2/6] drm/xe/xe_ras: Handle page offline requests for device memory ecc errors
  2026-10-05  9:01 ` [PATCH v4 2/6] drm/xe/xe_ras: Handle page offline requests for device memory ecc errors Riana Tauro
  2026-10-05  9:16   ` sashiko-bot
@ 2026-10-05 13:28   ` Upadhyay, Tejas
  1 sibling, 0 replies; 18+ messages in thread
From: Upadhyay, Tejas @ 2026-10-05 13:28 UTC (permalink / raw)
  To: Tauro, Riana, intel-xe@lists.freedesktop.org
  Cc: Gupta, Anshuman, Vivi, Rodrigo,
	aravind.iddamsetty@linux.intel.com, Nilawar, Badal, Jadav, Raag,
	Koppuravuri, Ravi Kishore, Koujalagi,  Mallesh,
	Ghimiray, Himal Prasad



> -----Original Message-----
> From: Tauro, Riana <riana.tauro@intel.com>
> Sent: 05 October 2026 14:32
> To: intel-xe@lists.freedesktop.org
> Cc: Tauro, Riana <riana.tauro@intel.com>; Gupta, Anshuman
> <anshuman.gupta@intel.com>; Vivi, Rodrigo <rodrigo.vivi@intel.com>;
> aravind.iddamsetty@linux.intel.com; Nilawar, Badal
> <badal.nilawar@intel.com>; Jadav, Raag <raag.jadav@intel.com>;
> Koppuravuri, Ravi Kishore <ravi.kishore.koppuravuri@intel.com>; Koujalagi,
> Mallesh <mallesh.koujalagi@intel.com>; Upadhyay, Tejas
> <tejas.upadhyay@intel.com>; Ghimiray, Himal Prasad
> <himal.prasad.ghimiray@intel.com>
> Subject: [PATCH v4 2/6] drm/xe/xe_ras: Handle page offline requests for
> device memory ecc errors
> 
> Add basic support for sending page offline/remove requests to system
> controller and use it for device memory ECC error handling.
> Pages that belong to critical BOs cannot be handled by offlining and require a
> SBR (Secondary Bus Reset).
> Pages that are configured for log-only handling are not marked as bad by
> firmware.
> 
> For all other valid page addresses, the first occurrence of error indicates a
> poison error and the page is offlined only by software.
> Firmware avoids permanently marking the page as bad. The second
> occurrence of an error indicates a Double-bit ECC error and the firmware
> permanently marks the page as bad.
> 
> Cc: Tejas Upadhyay <tejas.upadhyay@intel.com>
> Cc: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
> Signed-off-by: Riana Tauro <riana.tauro@intel.com>
> ---
> v2: use ret in sigid logging (Mallesh)
>     remove additional log
>     use xe_assert (Michal)
> 
> v3: align address to PAGE_SIZE (sashiko, Himal)
>     rename decline to remove
>     add more descriptive logs (Himal)
> 
> v4: add handling for -ENOMEM (Sashiko, Tejas)
>     check user policy (Sashiko, Himal)

LGTM,
Reviewed-by: Tejas Upadhyay <tejas.upadhyay@intel.com>

Tejas
> ---
>  drivers/gpu/drm/xe/xe_ras.c                   | 135 +++++++++++++++++-
>  drivers/gpu/drm/xe/xe_ras_types.h             |  35 +++++
>  drivers/gpu/drm/xe/xe_sysctrl_mailbox_types.h |   2 +
>  3 files changed, 167 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/gpu/drm/xe/xe_ras.c b/drivers/gpu/drm/xe/xe_ras.c index
> 76c54dbd4af4..2ec310c29489 100644
> --- a/drivers/gpu/drm/xe/xe_ras.c
> +++ b/drivers/gpu/drm/xe/xe_ras.c
> @@ -3,6 +3,8 @@
>   * Copyright © 2026 Intel Corporation
>   */
> 
> +#include "xe_assert.h"
> +#include "xe_bo.h"
>  #include "xe_configfs.h"
>  #include "xe_debugfs.h"
>  #include "xe_device.h"
> @@ -16,6 +18,7 @@
>  #include "xe_sysctrl_event_types.h"
>  #include "xe_sysctrl_mailbox.h"
>  #include "xe_sysctrl_mailbox_types.h"
> +#include "xe_ttm_vram_mgr.h"
> 
>  #define CORE_COMPUTE_UNCORR_TYPE	GENMASK(26, 25)
>  /*
> @@ -201,6 +204,127 @@ static inline const char *comp_to_str(u8
> component)
>  	return xe_ras_components[component];
>  }
> 
> +static int send_page_offline_cmd(struct xe_device *xe, u64 page_address,
> +				 enum xe_ras_page_action action)
> +{
> +	struct xe_sysctrl_mailbox_command command = {0};
> +	struct xe_ras_page_offline_request request = {0};
> +	struct xe_ras_page_offline_response response = {0};
> +	size_t rlen;
> +	int ret;
> +
> +	if (!xe->info.has_sysctrl)
> +		return 0;
> +
> +	xe_assert(xe, action < XE_RAS_PAGE_ACTION_MAX);
> +
> +	request.page_address = page_address;
> +	request.action = action;
> +
> +	if (action == XE_RAS_PAGE_ACTION_OFFLINE)
> +		xe_log_err(xe, DEVICE_MEMORY, 0, "Requesting firmware to
> offline page 0x%llx\n",
> +			   page_address);
> +	else
> +		xe_log_err(xe, DEVICE_MEMORY, 0, "Requesting firmware to
> remove page 0x%llx from queue\n",
> +			   page_address);
> +
> +	xe_sysctrl_create_command(&command, XE_SYSCTRL_GROUP_GFSP,
> XE_SYSCTRL_CMD_PAGE_OFFLINE,
> +				  &request, sizeof(request), &response,
> sizeof(response));
> +
> +	ret = xe_sysctrl_send_command(&xe->sc, &command, &rlen);
> +	if (ret) {
> +		xe_log_err(xe, SYSCTRL, ret, "failed to send page offline
> command\n");
> +		return ret;
> +	}
> +
> +	if (rlen != sizeof(response)) {
> +		xe_log_err(xe, SYSCTRL, -EINVAL,
> +			   "unexpected page offline response length %zu
> (expected %zu)\n",
> +			   rlen, sizeof(response));
> +		return -EINVAL;
> +	}
> +
> +	ret = ras_status_to_errno(response.status);
> +	if (ret) {
> +		xe_log_err(xe, SYSCTRL, ret, "page offline command failed with
> status %u\n",
> +			   response.status);
> +		return ret;
> +	}
> +
> +	return 0;
> +}
> +
> +static int handle_page_offline(struct xe_device *xe, u64 page_address,
> +bool notify_fw) {
> +	enum xe_ras_page_action action;
> +	u64 addr;
> +	int ret;
> +
> +	if (!IS_ALIGNED(page_address, XE_PAGE_SIZE)) {
> +		xe_log_err(xe, SYSCTRL, -EINVAL, "Unaligned physical page
> address: 0x%llx\n",
> +			   page_address);
> +		return -EINVAL;
> +	}
> +
> +	/* User policy set to disable page offlining */
> +	if (xe_ras_get_disable_page_offline(xe)) {
> +		action = XE_RAS_PAGE_ACTION_REMOVE;
> +		xe_log_err(xe, DEVICE_MEMORY, -EOPNOTSUPP, "User policy
> set to disable page offlining\n");
> +		goto notify;
> +	}
> +
> +	addr = ALIGN_DOWN(page_address, PAGE_SIZE);
> +
> +	ret = xe_ttm_vram_handle_addr_fault(xe, addr);
> +
> +	/*
> +	 * Handle return code from address fault handling function:
> +	 *  0: Page softofflined, remove from firmware queue
> +	 * -EIO: Address belongs to a critical BO/stolen area that cannot be
> offlined
> +	 * -ENOMEM: Failed to allocate BO for soft-offlining the page
> +	 * -EEXIST: Address is soft offlined but yet to be offlined by firmware
> for second
> +	 * occurrence
> +	 */
> +
> +	switch (ret) {
> +	case 0:
> +		action = XE_RAS_PAGE_ACTION_REMOVE;
> +		xe_log_err(xe, DEVICE_MEMORY, ret,
> +			   "Poison detected at physical address 0x%llx, page
> soft-offlined\n",
> +			   page_address);
> +		break;
> +	case -EIO:
> +		xe_log_err(xe, DEVICE_MEMORY, ret,
> +			   "Poison detected at physical address 0x%llx, page
> belongs to critical BO and cannot be soft-offlined\n",
> +			   page_address);
> +		return ret;
> +	case -EEXIST:
> +		action = XE_RAS_PAGE_ACTION_OFFLINE;
> +		xe_log_err(xe, DEVICE_MEMORY, ret,
> +			   "Double-bit ECC error detected at physical address
> 0x%llx, page soft-offlined\n",
> +			   page_address);
> +		break;
> +	case -ENOMEM:
> +		xe_log_err(xe, DEVICE_MEMORY, ret,
> +			   "Poison detected at physical address 0x%llx, failed to
> soft-offline\n",
> +			   page_address);
> +		return ret;
> +	default:
> +		xe_log_err(xe, DEVICE_MEMORY, ret, "Failed to handle
> address fault at physical address 0x%llx\n",
> +			   page_address);
> +		return 0;
> +	}
> +
> + notify:
> +	if (notify_fw) {
> +		ret = send_page_offline_cmd(xe, page_address, action);
> +		if (ret)
> +			return ret;
> +	}
> +
> +	return 0;
> +}
> +
>  static bool ras_counter_is_valid(struct xe_device *xe, struct xe_ras_error_class
> *counter)  {
>  	u8 severity = counter->common.severity; @@ -368,11 +492,12 @@
> static u8 handle_soc_internal_errors(struct xe_device *xe, struct
> xe_ras_error_a  static u8 handle_device_memory_errors(struct xe_device *xe,
> struct xe_ras_error_array *arr)  {
>  	struct xe_ras_memory_error *info = (void *)arr->details;
> +	int ret;
> 
>  	/*
>  	 * For memory errors, the recovery action depends on the error
> category
>  	 *
> -	 * TODO: Double-bit ECC errors: Page offlining
> +	 * Double-bit ECC errors: Page offlining
>  	 * Poison and data parity errors: Log only
>  	 * For any other memory errors, request a reset as recovery
> mechanism
>  	 */
> @@ -384,10 +509,10 @@ static u8 handle_device_memory_errors(struct
> xe_device *xe, struct xe_ras_error_
>  		xe_info(xe, "[RAS]: Data parity error detected\n");
>  		break;
>  	case XE_RAS_MEMORY_DB_ECC:
> -		xe_info(xe, "[RAS]: Double-bit ECC error detected at sw
> address 0x%llx\n",
> -			info->sw_address);
> -		/* TODO: Add page offlining for Double-bit ECC error */
> -		fallthrough;
> +		ret = handle_page_offline(xe, info->sw_address, true);
> +		if (ret)
> +			return XE_RAS_RECOVERY_ACTION_RESET;
> +		break;
>  	default:
>  		return XE_RAS_RECOVERY_ACTION_RESET;
>  	}
> diff --git a/drivers/gpu/drm/xe/xe_ras_types.h
> b/drivers/gpu/drm/xe/xe_ras_types.h
> index 5fe56e42b841..1495a8636255 100644
> --- a/drivers/gpu/drm/xe/xe_ras_types.h
> +++ b/drivers/gpu/drm/xe/xe_ras_types.h
> @@ -17,6 +17,19 @@
>  #define XE_RAS_MEMORY_POISON			BIT(2)
>  #define XE_RAS_MEMORY_DATA_PARITY		BIT(5)
> 
> +/**
> + * enum xe_ras_page_action - Page offline actions for page offline
> +request
> + *
> + * @XE_RAS_PAGE_ACTION_OFFLINE: Instruct firmware to offline the page
> + * @XE_RAS_PAGE_ACTION_REMOVE: Instruct firmware to remove the page
> +from queue
> + * @XE_RAS_PAGE_ACTION_MAX: Max value
> + */
> +enum xe_ras_page_action {
> +	XE_RAS_PAGE_ACTION_OFFLINE,
> +	XE_RAS_PAGE_ACTION_REMOVE,
> +	XE_RAS_PAGE_ACTION_MAX
> +};
> +
>  /**
>   * enum xe_ras_recovery_action - RAS recovery actions
>   *
> @@ -295,6 +308,28 @@ struct xe_ras_memory_error {
>  	u32 reserved2[10];
>  } __packed;
> 
> +/**
> + * struct xe_ras_page_offline_request - Request for page offline
> +command  */ struct xe_ras_page_offline_request {
> +	/** @page_address: Page address (4KB aligned) */
> +	u64 page_address;
> +	/** @action: Action to be performed, see &enum xe_ras_page_action
> */
> +	u32 action;
> +	/** @reserved: Reserved for future use */
> +	u32 reserved;
> +} __packed;
> +
> +/**
> + * struct xe_ras_page_offline_response - Response from page offline
> +command  */ struct xe_ras_page_offline_response {
> +	/** @status: Status of the page offline request */
> +	u32 status;
> +	/** @reserved: Reserved for future use */
> +	u32 reserved;
> +} __packed;
> +
>  /**
>   * struct xe_ras_get_health_request - Request structure for obtaining gpu
> health
>   */
> diff --git a/drivers/gpu/drm/xe/xe_sysctrl_mailbox_types.h
> b/drivers/gpu/drm/xe/xe_sysctrl_mailbox_types.h
> index e98fa6877fec..60d17ccc002c 100644
> --- a/drivers/gpu/drm/xe/xe_sysctrl_mailbox_types.h
> +++ b/drivers/gpu/drm/xe/xe_sysctrl_mailbox_types.h
> @@ -30,6 +30,7 @@ enum xe_sysctrl_group {
>   * @XE_SYSCTRL_CMD_GET_THRESHOLD: Retrieve error threshold
>   * @XE_SYSCTRL_CMD_SET_THRESHOLD: Set error threshold
>   * @XE_SYSCTRL_CMD_GET_PENDING_EVENT: Retrieve pending event
> + * @XE_SYSCTRL_CMD_PAGE_OFFLINE: Instruct firmware to offline/remove a
> + page
>   * @XE_SYSCTRL_CMD_GET_HEALTH: Retrieve gpu health
>   * @XE_SYSCTRL_CMD_SET_HEALTH: Set gpu health
>   */
> @@ -40,6 +41,7 @@ enum xe_sysctrl_gfsp_cmd {
>  	XE_SYSCTRL_CMD_GET_THRESHOLD		= 0x05,
>  	XE_SYSCTRL_CMD_SET_THRESHOLD		= 0x06,
>  	XE_SYSCTRL_CMD_GET_PENDING_EVENT	= 0x07,
> +	XE_SYSCTRL_CMD_PAGE_OFFLINE		= 0x08,
>  	XE_SYSCTRL_CMD_GET_HEALTH		= 0x0B,
>  	XE_SYSCTRL_CMD_SET_HEALTH		= 0x0C,
>  };
> --
> 2.47.1


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

* ✗ Xe.CI.FULL: failure for Add support to handle memory double-bit ecc errors (rev4)
  2026-10-05  9:01 [PATCH v4 0/6] Add support to handle memory double-bit ecc errors Riana Tauro
                   ` (7 preceding siblings ...)
  2026-10-05 10:56 ` ✓ Xe.CI.BAT: " Patchwork
@ 2026-10-05 15:29 ` Patchwork
  8 siblings, 0 replies; 18+ messages in thread
From: Patchwork @ 2026-10-05 15:29 UTC (permalink / raw)
  To: Riana Tauro; +Cc: intel-xe

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

== Series Details ==

Series: Add support to handle memory double-bit ecc errors (rev4)
URL   : https://patchwork.freedesktop.org/series/172710/
State : failure

== Summary ==

CI Bug Log - changes from xe-5887-b0bd9fb9e92aae2a653efa1d0407daa2aabe99d0_FULL -> xe-pw-172710v4_FULL
====================================================

Summary
-------

  **FAILURE**

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

  

Participating hosts (3 -> 3)
------------------------------

  No changes in participating hosts

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

  Here are the unknown changes that may have been introduced in xe-pw-172710v4_FULL:

### IGT changes ###

#### Possible regressions ####

  * igt@xe_live_ktest@xe_mocs@xe_live_mocs_kernel_kunit:
    - shard-bmg:          [PASS][1] -> [FAIL][2] +2 other tests fail
   [1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5887-b0bd9fb9e92aae2a653efa1d0407daa2aabe99d0/shard-bmg-10/igt@xe_live_ktest@xe_mocs@xe_live_mocs_kernel_kunit.html
   [2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-5/igt@xe_live_ktest@xe_mocs@xe_live_mocs_kernel_kunit.html

  
New tests
---------

  New tests have been introduced between xe-5887-b0bd9fb9e92aae2a653efa1d0407daa2aabe99d0_FULL and xe-pw-172710v4_FULL:

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

  * igt@kms_cursor_crc@cursor-size-hints@pipe-c-edp-1:
    - Statuses : 1 pass(s)
    - Exec time: [1.46] s

  

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

  Here are the changes found in xe-pw-172710v4_FULL that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@kms_addfb_basic@addfb25-y-tiled-small-legacy:
    - shard-bmg:          NOTRUN -> [SKIP][3] ([Intel XE#2233])
   [3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-2/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
    - shard-ptl:          NOTRUN -> [SKIP][4] ([Intel XE#5765])
   [4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-ptl-1/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html

  * igt@kms_atomic_transition@plane-all-modeset-transition-fencing:
    - shard-ptl:          NOTRUN -> [SKIP][5] ([Intel XE#5947])
   [5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-ptl-5/igt@kms_atomic_transition@plane-all-modeset-transition-fencing.html

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

  * igt@kms_big_fb@4-tiled-8bpp-rotate-270:
    - shard-ptl:          NOTRUN -> [SKIP][7] ([Intel XE#5901]) +1 other test skip
   [7]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-ptl-7/igt@kms_big_fb@4-tiled-8bpp-rotate-270.html
    - shard-bmg:          NOTRUN -> [SKIP][8] ([Intel XE#2327]) +1 other test skip
   [8]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-6/igt@kms_big_fb@4-tiled-8bpp-rotate-270.html

  * igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-180-hflip-async-flip:
    - shard-ptl:          NOTRUN -> [SKIP][9] ([Intel XE#6925])
   [9]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-ptl-6/igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-180-hflip-async-flip.html

  * igt@kms_big_fb@linear-max-hw-stride-64bpp-rotate-0-hflip:
    - shard-bmg:          NOTRUN -> [SKIP][10] ([Intel XE#7059] / [Intel XE#7085])
   [10]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-2/igt@kms_big_fb@linear-max-hw-stride-64bpp-rotate-0-hflip.html
    - shard-ptl:          NOTRUN -> [SKIP][11] ([Intel XE#7085])
   [11]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-ptl-1/igt@kms_big_fb@linear-max-hw-stride-64bpp-rotate-0-hflip.html

  * igt@kms_big_fb@y-tiled-64bpp-rotate-90:
    - shard-bmg:          NOTRUN -> [SKIP][12] ([Intel XE#1124]) +8 other tests skip
   [12]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-10/igt@kms_big_fb@y-tiled-64bpp-rotate-90.html

  * igt@kms_big_fb@yf-tiled-64bpp-rotate-180:
    - shard-ptl:          NOTRUN -> [SKIP][13] ([Intel XE#5808]) +13 other tests skip
   [13]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-ptl-1/igt@kms_big_fb@yf-tiled-64bpp-rotate-180.html

  * igt@kms_big_fb@yf-tiled-8bpp-rotate-0:
    - shard-lnl:          NOTRUN -> [SKIP][14] ([Intel XE#1124]) +6 other tests skip
   [14]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-lnl-8/igt@kms_big_fb@yf-tiled-8bpp-rotate-0.html

  * igt@kms_big_fb@yf-tiled-addfb-size-offset-overflow:
    - shard-bmg:          NOTRUN -> [SKIP][15] ([Intel XE#607] / [Intel XE#7361])
   [15]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-3/igt@kms_big_fb@yf-tiled-addfb-size-offset-overflow.html
    - shard-ptl:          NOTRUN -> [SKIP][16] ([Intel XE#5851])
   [16]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-ptl-4/igt@kms_big_fb@yf-tiled-addfb-size-offset-overflow.html

  * igt@kms_bw@connected-linear-tiling-2-displays-target-2560x1440p:
    - shard-lnl:          NOTRUN -> [SKIP][17] ([Intel XE#7679]) +1 other test skip
   [17]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-lnl-1/igt@kms_bw@connected-linear-tiling-2-displays-target-2560x1440p.html

  * igt@kms_bw@connected-linear-tiling-3-displays-target-3840x2160p:
    - shard-bmg:          NOTRUN -> [SKIP][18] ([Intel XE#7679])
   [18]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-4/igt@kms_bw@connected-linear-tiling-3-displays-target-3840x2160p.html

  * igt@kms_bw@connected-linear-tiling-4-displays-target-1920x1080p:
    - shard-ptl:          NOTRUN -> [SKIP][19] ([Intel XE#7679])
   [19]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-ptl-2/igt@kms_bw@connected-linear-tiling-4-displays-target-1920x1080p.html

  * igt@kms_bw@connected-linear-tiling-4-displays-target-3840x2160p:
    - shard-lnl:          NOTRUN -> [SKIP][20] ([Intel XE#8365])
   [20]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-lnl-8/igt@kms_bw@connected-linear-tiling-4-displays-target-3840x2160p.html

  * igt@kms_bw@linear-tiling-1-displays-target-2560x1440p:
    - shard-bmg:          NOTRUN -> [SKIP][21] ([Intel XE#367]) +2 other tests skip
   [21]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-6/igt@kms_bw@linear-tiling-1-displays-target-2560x1440p.html

  * igt@kms_bw@linear-tiling-2-displays-target-3840x2160p:
    - shard-lnl:          NOTRUN -> [SKIP][22] ([Intel XE#367]) +1 other test skip
   [22]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-lnl-7/igt@kms_bw@linear-tiling-2-displays-target-3840x2160p.html

  * igt@kms_bw@linear-tiling-4-displays-target-1920x1080p:
    - shard-ptl:          NOTRUN -> [SKIP][23] ([Intel XE#367]) +1 other test skip
   [23]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-ptl-2/igt@kms_bw@linear-tiling-4-displays-target-1920x1080p.html

  * igt@kms_ccs@bad-pixel-format-4-tiled-mtl-rc-ccs-cc:
    - shard-bmg:          NOTRUN -> [SKIP][24] ([Intel XE#2887]) +10 other tests skip
   [24]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-9/igt@kms_ccs@bad-pixel-format-4-tiled-mtl-rc-ccs-cc.html

  * igt@kms_ccs@bad-rotation-90-4-tiled-bmg-ccs@pipe-a-edp-1:
    - shard-lnl:          NOTRUN -> [SKIP][25] ([Intel XE#2669] / [Intel XE#7389]) +7 other tests skip
   [25]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-lnl-6/igt@kms_ccs@bad-rotation-90-4-tiled-bmg-ccs@pipe-a-edp-1.html

  * igt@kms_ccs@crc-primary-rotation-180-4-tiled-mtl-rc-ccs:
    - shard-ptl:          NOTRUN -> [SKIP][26] ([Intel XE#5822]) +14 other tests skip
   [26]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-ptl-6/igt@kms_ccs@crc-primary-rotation-180-4-tiled-mtl-rc-ccs.html

  * igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs@pipe-a-edp-1:
    - shard-lnl:          NOTRUN -> [SKIP][27] ([Intel XE#2669] / [Intel XE#3433] / [Intel XE#7389]) +3 other tests skip
   [27]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-lnl-7/igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs@pipe-a-edp-1.html

  * igt@kms_ccs@random-ccs-data-4-tiled-bmg-ccs@pipe-d-edp-1:
    - shard-ptl:          NOTRUN -> [SKIP][28] ([Intel XE#5823] / [Intel XE#6918]) +4 other tests skip
   [28]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-ptl-5/igt@kms_ccs@random-ccs-data-4-tiled-bmg-ccs@pipe-d-edp-1.html

  * igt@kms_ccs@random-ccs-data-4-tiled-mtl-rc-ccs:
    - shard-lnl:          NOTRUN -> [SKIP][29] ([Intel XE#2887]) +4 other tests skip
   [29]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-lnl-8/igt@kms_ccs@random-ccs-data-4-tiled-mtl-rc-ccs.html

  * igt@kms_cdclk@mode-transition:
    - shard-ptl:          NOTRUN -> [SKIP][30] ([Intel XE#9205]) +4 other tests skip
   [30]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-ptl-6/igt@kms_cdclk@mode-transition.html

  * igt@kms_cdclk@plane-scaling:
    - shard-bmg:          NOTRUN -> [SKIP][31] ([Intel XE#2724] / [Intel XE#7449])
   [31]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-4/igt@kms_cdclk@plane-scaling.html

  * igt@kms_cdclk@plane-scaling@pipe-b-edp-1:
    - shard-ptl:          NOTRUN -> [SKIP][32] ([Intel XE#9219]) +4 other tests skip
   [32]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-ptl-5/igt@kms_cdclk@plane-scaling@pipe-b-edp-1.html

  * igt@kms_chamelium_audio@dp-audio:
    - shard-ptl:          NOTRUN -> [SKIP][33] ([Intel XE#2252]) +9 other tests skip
   [33]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-ptl-5/igt@kms_chamelium_audio@dp-audio.html

  * igt@kms_chamelium_color@ctm-limited-range:
    - shard-ptl:          NOTRUN -> [SKIP][34] ([Intel XE#5824])
   [34]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-ptl-7/igt@kms_chamelium_color@ctm-limited-range.html

  * igt@kms_chamelium_color_pipeline@plane-fixed-matrix-yuv-rgb-bt2020:
    - shard-ptl:          NOTRUN -> [SKIP][35] ([Intel XE#8391]) +3 other tests skip
   [35]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-ptl-4/igt@kms_chamelium_color_pipeline@plane-fixed-matrix-yuv-rgb-bt2020.html

  * igt@kms_chamelium_color_pipeline@plane-fixed-matrix-yuv-rgb-bt601-lim:
    - shard-bmg:          NOTRUN -> [SKIP][36] ([Intel XE#7358]) +3 other tests skip
   [36]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-1/igt@kms_chamelium_color_pipeline@plane-fixed-matrix-yuv-rgb-bt601-lim.html
    - shard-lnl:          NOTRUN -> [SKIP][37] ([Intel XE#7358]) +2 other tests skip
   [37]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-lnl-2/igt@kms_chamelium_color_pipeline@plane-fixed-matrix-yuv-rgb-bt601-lim.html

  * igt@kms_chamelium_hpd@dp-hpd:
    - shard-bmg:          NOTRUN -> [SKIP][38] ([Intel XE#2252]) +7 other tests skip
   [38]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-2/igt@kms_chamelium_hpd@dp-hpd.html

  * igt@kms_chamelium_hpd@hdmi-hpd:
    - shard-lnl:          NOTRUN -> [SKIP][39] ([Intel XE#373]) +2 other tests skip
   [39]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-lnl-7/igt@kms_chamelium_hpd@hdmi-hpd.html

  * igt@kms_color_pipeline@plane-ctm3x4@pipe-a-plane-3:
    - shard-ptl:          NOTRUN -> [SKIP][40] ([Intel XE#6969]) +44 other tests skip
   [40]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-ptl-6/igt@kms_color_pipeline@plane-ctm3x4@pipe-a-plane-3.html

  * igt@kms_color_pipeline@plane-lut1d-ctm3x4-lut1d@pipe-c-plane-4:
    - shard-lnl:          NOTRUN -> [SKIP][41] ([Intel XE#6969]) +5 other tests skip
   [41]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-lnl-1/igt@kms_color_pipeline@plane-lut1d-ctm3x4-lut1d@pipe-c-plane-4.html

  * igt@kms_color_pipeline@plane-lut1d-lut1d@pipe-b-plane-4:
    - shard-bmg:          NOTRUN -> [SKIP][42] ([Intel XE#6969]) +15 other tests skip
   [42]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-4/igt@kms_color_pipeline@plane-lut1d-lut1d@pipe-b-plane-4.html

  * igt@kms_content_protection@atomic:
    - shard-lnl:          NOTRUN -> [SKIP][43] ([Intel XE#7642])
   [43]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-lnl-1/igt@kms_content_protection@atomic.html

  * igt@kms_content_protection@atomic@pipe-a-dp-2:
    - shard-bmg:          NOTRUN -> [FAIL][44] ([Intel XE#1178] / [Intel XE#3304] / [Intel XE#7374])
   [44]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-3/igt@kms_content_protection@atomic@pipe-a-dp-2.html

  * igt@kms_content_protection@dp-mst-lic-type-0:
    - shard-lnl:          NOTRUN -> [SKIP][45] ([Intel XE#307] / [Intel XE#6974])
   [45]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-lnl-3/igt@kms_content_protection@dp-mst-lic-type-0.html

  * igt@kms_content_protection@dp-mst-lic-type-0-hdcp14:
    - shard-bmg:          NOTRUN -> [SKIP][46] ([Intel XE#6974])
   [46]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-3/igt@kms_content_protection@dp-mst-lic-type-0-hdcp14.html

  * igt@kms_content_protection@dp-mst-type-1:
    - shard-bmg:          NOTRUN -> [SKIP][47] ([Intel XE#2390] / [Intel XE#6974]) +1 other test skip
   [47]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-6/igt@kms_content_protection@dp-mst-type-1.html
    - shard-ptl:          NOTRUN -> [SKIP][48] ([Intel XE#5832] / [Intel XE#6974])
   [48]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-ptl-6/igt@kms_content_protection@dp-mst-type-1.html

  * igt@kms_content_protection@suspend-resume:
    - shard-ptl:          NOTRUN -> [SKIP][49] ([Intel XE#7642]) +1 other test skip
   [49]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-ptl-7/igt@kms_content_protection@suspend-resume.html

  * igt@kms_content_protection@type1:
    - shard-bmg:          NOTRUN -> [SKIP][50] ([Intel XE#7642])
   [50]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-3/igt@kms_content_protection@type1.html

  * igt@kms_content_protection@uevent@pipe-a-dp-2:
    - shard-bmg:          NOTRUN -> [FAIL][51] ([Intel XE#6707] / [Intel XE#7439])
   [51]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-4/igt@kms_content_protection@uevent@pipe-a-dp-2.html

  * igt@kms_cursor_crc@cursor-offscreen-256x85:
    - shard-bmg:          NOTRUN -> [SKIP][52] ([Intel XE#2320]) +3 other tests skip
   [52]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-4/igt@kms_cursor_crc@cursor-offscreen-256x85.html

  * igt@kms_cursor_crc@cursor-random-512x512:
    - shard-bmg:          NOTRUN -> [SKIP][53] ([Intel XE#2321] / [Intel XE#7355]) +1 other test skip
   [53]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-4/igt@kms_cursor_crc@cursor-random-512x512.html
    - shard-lnl:          NOTRUN -> [SKIP][54] ([Intel XE#2321] / [Intel XE#7355])
   [54]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-lnl-8/igt@kms_cursor_crc@cursor-random-512x512.html

  * igt@kms_cursor_crc@cursor-rapid-movement-512x512:
    - shard-ptl:          NOTRUN -> [SKIP][55] ([Intel XE#5846])
   [55]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-ptl-8/igt@kms_cursor_crc@cursor-rapid-movement-512x512.html

  * igt@kms_cursor_crc@cursor-rapid-movement-64x21:
    - shard-lnl:          NOTRUN -> [SKIP][56] ([Intel XE#1424]) +4 other tests skip
   [56]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-lnl-2/igt@kms_cursor_crc@cursor-rapid-movement-64x21.html

  * igt@kms_cursor_crc@cursor-sliding-256x85:
    - shard-ptl:          NOTRUN -> [SKIP][57] ([Intel XE#5900]) +2 other tests skip
   [57]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-ptl-4/igt@kms_cursor_crc@cursor-sliding-256x85.html

  * igt@kms_cursor_crc@cursor-suspend:
    - shard-bmg:          [PASS][58] -> [SKIP][59] ([Intel XE#8589]) +54 other tests skip
   [58]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5887-b0bd9fb9e92aae2a653efa1d0407daa2aabe99d0/shard-bmg-4/igt@kms_cursor_crc@cursor-suspend.html
   [59]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-5/igt@kms_cursor_crc@cursor-suspend.html

  * igt@kms_cursor_legacy@2x-flip-vs-cursor-legacy:
    - shard-lnl:          NOTRUN -> [SKIP][60] ([Intel XE#309] / [Intel XE#7343])
   [60]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-lnl-3/igt@kms_cursor_legacy@2x-flip-vs-cursor-legacy.html

  * igt@kms_cursor_legacy@cursorb-vs-flipa-atomic-transitions:
    - shard-ptl:          NOTRUN -> [SKIP][61] ([Intel XE#5962]) +3 other tests skip
   [61]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-ptl-6/igt@kms_cursor_legacy@cursorb-vs-flipa-atomic-transitions.html

  * igt@kms_dp_linktrain_fallback@dsc-fallback:
    - shard-bmg:          NOTRUN -> [SKIP][62] ([Intel XE#4331] / [Intel XE#7227])
   [62]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-4/igt@kms_dp_linktrain_fallback@dsc-fallback.html

  * igt@kms_dsc@dsc-with-bpc-formats:
    - shard-ptl:          NOTRUN -> [SKIP][63] ([Intel XE#5907]) +3 other tests skip
   [63]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-ptl-5/igt@kms_dsc@dsc-with-bpc-formats.html

  * igt@kms_dsc@dsc-with-bpc-formats-bigjoiner:
    - shard-bmg:          NOTRUN -> [SKIP][64] ([Intel XE#8265]) +2 other tests skip
   [64]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-6/igt@kms_dsc@dsc-with-bpc-formats-bigjoiner.html

  * igt@kms_dsc@dsc-with-bpc-formats-ultrajoiner:
    - shard-lnl:          NOTRUN -> [SKIP][65] ([Intel XE#8265]) +1 other test skip
   [65]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-lnl-6/igt@kms_dsc@dsc-with-bpc-formats-ultrajoiner.html

  * igt@kms_fbc_dirty_rect@fbc-dirty-rectangle-out-visible-area:
    - shard-bmg:          NOTRUN -> [SKIP][66] ([Intel XE#4422] / [Intel XE#7442])
   [66]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-9/igt@kms_fbc_dirty_rect@fbc-dirty-rectangle-out-visible-area.html
    - shard-lnl:          NOTRUN -> [SKIP][67] ([Intel XE#4422] / [Intel XE#7442])
   [67]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-lnl-4/igt@kms_fbc_dirty_rect@fbc-dirty-rectangle-out-visible-area.html

  * igt@kms_fbcon_fbt@psr:
    - shard-bmg:          NOTRUN -> [SKIP][68] ([Intel XE#8680])
   [68]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-4/igt@kms_fbcon_fbt@psr.html

  * igt@kms_feature_discovery@chamelium:
    - shard-ptl:          NOTRUN -> [SKIP][69] ([Intel XE#7359])
   [69]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-ptl-2/igt@kms_feature_discovery@chamelium.html

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

  * igt@kms_flip@2x-dpms-vs-vblank-race-interruptible:
    - shard-lnl:          NOTRUN -> [SKIP][71] ([Intel XE#1421]) +6 other tests skip
   [71]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-lnl-3/igt@kms_flip@2x-dpms-vs-vblank-race-interruptible.html

  * igt@kms_flip@2x-flip-vs-modeset:
    - shard-ptl:          NOTRUN -> [SKIP][72] ([Intel XE#2316]) +3 other tests skip
   [72]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-ptl-4/igt@kms_flip@2x-flip-vs-modeset.html

  * igt@kms_flip@flip-vs-expired-vblank-interruptible@b-edp1:
    - shard-lnl:          [PASS][73] -> [FAIL][74] ([Intel XE#301])
   [73]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5887-b0bd9fb9e92aae2a653efa1d0407daa2aabe99d0/shard-lnl-3/igt@kms_flip@flip-vs-expired-vblank-interruptible@b-edp1.html
   [74]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-lnl-3/igt@kms_flip@flip-vs-expired-vblank-interruptible@b-edp1.html

  * igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-32bpp-4tiledg2rcccs-downscaling:
    - shard-lnl:          NOTRUN -> [SKIP][75] ([Intel XE#7178] / [Intel XE#7349]) +1 other test skip
   [75]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-lnl-3/igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-32bpp-4tiledg2rcccs-downscaling.html

  * igt@kms_flip_scaled_crc@flip-32bpp-linear-to-32bpp-linear-reflect-x:
    - shard-ptl:          NOTRUN -> [SKIP][76] ([Intel XE#7179]) +1 other test skip
   [76]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-ptl-5/igt@kms_flip_scaled_crc@flip-32bpp-linear-to-32bpp-linear-reflect-x.html
    - shard-bmg:          NOTRUN -> [SKIP][77] ([Intel XE#7179])
   [77]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-6/igt@kms_flip_scaled_crc@flip-32bpp-linear-to-32bpp-linear-reflect-x.html

  * igt@kms_flip_scaled_crc@flip-32bpp-linear-to-64bpp-linear-downscaling:
    - shard-lnl:          NOTRUN -> [SKIP][78] ([Intel XE#1397] / [Intel XE#1745] / [Intel XE#7385] / [Intel XE#9144])
   [78]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-lnl-7/igt@kms_flip_scaled_crc@flip-32bpp-linear-to-64bpp-linear-downscaling.html

  * igt@kms_flip_scaled_crc@flip-32bpp-linear-to-64bpp-linear-downscaling@pipe-a-default-mode:
    - shard-lnl:          NOTRUN -> [SKIP][79] ([Intel XE#1397] / [Intel XE#7385] / [Intel XE#9144])
   [79]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-lnl-7/igt@kms_flip_scaled_crc@flip-32bpp-linear-to-64bpp-linear-downscaling@pipe-a-default-mode.html

  * igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-32bpp-yftileccs-upscaling:
    - shard-bmg:          NOTRUN -> [SKIP][80] ([Intel XE#7178] / [Intel XE#7351]) +5 other tests skip
   [80]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-1/igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-32bpp-yftileccs-upscaling.html

  * igt@kms_flip_scaled_crc@flip-64bpp-linear-to-32bpp-linear-downscaling:
    - shard-ptl:          NOTRUN -> [SKIP][81] ([Intel XE#5828]) +1 other test skip
   [81]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-ptl-5/igt@kms_flip_scaled_crc@flip-64bpp-linear-to-32bpp-linear-downscaling.html

  * igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-32bpp-yftile-upscaling:
    - shard-lnl:          NOTRUN -> [SKIP][82] ([Intel XE#7178] / [Intel XE#7351]) +1 other test skip
   [82]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-lnl-4/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-32bpp-yftile-upscaling.html

  * igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling:
    - shard-ptl:          NOTRUN -> [SKIP][83] ([Intel XE#7178]) +4 other tests skip
   [83]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-ptl-6/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling.html

  * igt@kms_frontbuffer_tracking@drrs-1p-primscrn-spr-indfb-onoff:
    - shard-ptl:          NOTRUN -> [SKIP][84] ([Intel XE#5800] / [Intel XE#6312]) +12 other tests skip
   [84]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-ptl-7/igt@kms_frontbuffer_tracking@drrs-1p-primscrn-spr-indfb-onoff.html

  * igt@kms_frontbuffer_tracking@drrs-argb161616f-draw-mmap-wc:
    - shard-lnl:          NOTRUN -> [SKIP][85] ([Intel XE#7061] / [Intel XE#7356]) +3 other tests skip
   [85]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-lnl-1/igt@kms_frontbuffer_tracking@drrs-argb161616f-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@fbc-1p-offscreen-pri-shrfb-draw-blt:
    - shard-bmg:          NOTRUN -> [SKIP][86] ([Intel XE#4141]) +12 other tests skip
   [86]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-10/igt@kms_frontbuffer_tracking@fbc-1p-offscreen-pri-shrfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-indfb-draw-blt:
    - shard-ptl:          NOTRUN -> [SKIP][87] ([Intel XE#5812]) +84 other tests skip
   [87]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-ptl-1/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-indfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@fbc-argb161616f-draw-mmap-wc:
    - shard-ptl:          NOTRUN -> [SKIP][88] ([Intel XE#7061] / [Intel XE#7356]) +3 other tests skip
   [88]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-ptl-4/igt@kms_frontbuffer_tracking@fbc-argb161616f-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@fbcdrrs-1p-offscreen-pri-indfb-draw-mmap-wc:
    - shard-ptl:          NOTRUN -> [SKIP][89] ([Intel XE#6312]) +18 other tests skip
   [89]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-ptl-7/igt@kms_frontbuffer_tracking@fbcdrrs-1p-offscreen-pri-indfb-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-pri-shrfb-draw-blt:
    - shard-lnl:          NOTRUN -> [SKIP][90] ([Intel XE#656] / [Intel XE#7905]) +17 other tests skip
   [90]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-lnl-2/igt@kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-pri-shrfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@fbcdrrs-tiling-4:
    - shard-lnl:          NOTRUN -> [SKIP][91] ([Intel XE#6312] / [Intel XE#651]) +4 other tests skip
   [91]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-lnl-5/igt@kms_frontbuffer_tracking@fbcdrrs-tiling-4.html

  * igt@kms_frontbuffer_tracking@fbcdrrshdr-1p-primscrn-cur-indfb-move:
    - shard-lnl:          NOTRUN -> [SKIP][92] ([Intel XE#6312]) +7 other tests skip
   [92]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-lnl-2/igt@kms_frontbuffer_tracking@fbcdrrshdr-1p-primscrn-cur-indfb-move.html

  * igt@kms_frontbuffer_tracking@fbcdrrshdr-2p-primscrn-spr-indfb-draw-render:
    - shard-lnl:          NOTRUN -> [SKIP][93] ([Intel XE#7905]) +18 other tests skip
   [93]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-lnl-4/igt@kms_frontbuffer_tracking@fbcdrrshdr-2p-primscrn-spr-indfb-draw-render.html

  * igt@kms_frontbuffer_tracking@fbcdrrshdr-rgb565-draw-blt:
    - shard-bmg:          NOTRUN -> [SKIP][94] ([Intel XE#2311]) +47 other tests skip
   [94]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-2/igt@kms_frontbuffer_tracking@fbcdrrshdr-rgb565-draw-blt.html

  * igt@kms_frontbuffer_tracking@fbchdr-1p-primscrn-cur-indfb-draw-blt:
    - shard-lnl:          NOTRUN -> [SKIP][95] ([Intel XE#7865]) +10 other tests skip
   [95]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-lnl-6/igt@kms_frontbuffer_tracking@fbchdr-1p-primscrn-cur-indfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@fbchdr-argb161616f-draw-mmap-wc:
    - shard-ptl:          NOTRUN -> [SKIP][96] ([Intel XE#7061]) +7 other tests skip
   [96]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-ptl-8/igt@kms_frontbuffer_tracking@fbchdr-argb161616f-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@fbcpsrhdr-abgr161616f-draw-blt:
    - shard-lnl:          NOTRUN -> [SKIP][97] ([Intel XE#7061])
   [97]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-lnl-3/igt@kms_frontbuffer_tracking@fbcpsrhdr-abgr161616f-draw-blt.html

  * igt@kms_frontbuffer_tracking@fbcpsrhdr-tiling-y:
    - shard-ptl:          NOTRUN -> [SKIP][98] ([Intel XE#7399])
   [98]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-ptl-7/igt@kms_frontbuffer_tracking@fbcpsrhdr-tiling-y.html

  * igt@kms_frontbuffer_tracking@hdr-1p-offscreen-pri-shrfb-draw-mmap-wc:
    - shard-ptl:          NOTRUN -> [SKIP][99] ([Intel XE#7865]) +30 other tests skip
   [99]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-ptl-7/igt@kms_frontbuffer_tracking@hdr-1p-offscreen-pri-shrfb-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@hdr-abgr161616f-draw-mmap-wc:
    - shard-bmg:          NOTRUN -> [SKIP][100] ([Intel XE#7061]) +5 other tests skip
   [100]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-3/igt@kms_frontbuffer_tracking@hdr-abgr161616f-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@hdr-suspend:
    - shard-bmg:          NOTRUN -> [DMESG-WARN][101] ([Intel XE#9365])
   [101]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-2/igt@kms_frontbuffer_tracking@hdr-suspend.html

  * igt@kms_frontbuffer_tracking@psr-argb161616f-draw-render:
    - shard-bmg:          NOTRUN -> [SKIP][102] ([Intel XE#7061] / [Intel XE#7356]) +4 other tests skip
   [102]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-9/igt@kms_frontbuffer_tracking@psr-argb161616f-draw-render.html

  * igt@kms_frontbuffer_tracking@psrhdr-1p-primscrn-shrfb-plflip-blt:
    - shard-bmg:          NOTRUN -> [SKIP][103] ([Intel XE#2313]) +51 other tests skip
   [103]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-3/igt@kms_frontbuffer_tracking@psrhdr-1p-primscrn-shrfb-plflip-blt.html

  * igt@kms_hdmi_audio_bw@audio-bw-hblank160:
    - shard-ptl:          NOTRUN -> [SKIP][104] ([Intel XE#9312]) +1 other test skip
   [104]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-ptl-2/igt@kms_hdmi_audio_bw@audio-bw-hblank160.html

  * igt@kms_hdr@static-swap:
    - shard-lnl:          NOTRUN -> [SKIP][105] ([Intel XE#1503])
   [105]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-lnl-3/igt@kms_hdr@static-swap.html

  * igt@kms_joiner@basic-big-joiner:
    - shard-ptl:          NOTRUN -> [SKIP][106] ([Intel XE#6901]) +1 other test skip
   [106]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-ptl-1/igt@kms_joiner@basic-big-joiner.html

  * igt@kms_joiner@switch-modeset-ultra-joiner-big-joiner:
    - shard-lnl:          NOTRUN -> [SKIP][107] ([Intel XE#7173] / [Intel XE#7294])
   [107]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-lnl-5/igt@kms_joiner@switch-modeset-ultra-joiner-big-joiner.html

  * igt@kms_mst@mst-suspend-read-crc:
    - shard-bmg:          NOTRUN -> [SKIP][108] ([Intel XE#8348])
   [108]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-4/igt@kms_mst@mst-suspend-read-crc.html
    - shard-ptl:          NOTRUN -> [SKIP][109] ([Intel XE#8348])
   [109]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-ptl-3/igt@kms_mst@mst-suspend-read-crc.html

  * igt@kms_plane@pixel-format-4-tiled-lnl-ccs-modifier@pipe-a-plane-5:
    - shard-ptl:          NOTRUN -> [SKIP][110] ([Intel XE#8303]) +1 other test skip
   [110]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-ptl-2/igt@kms_plane@pixel-format-4-tiled-lnl-ccs-modifier@pipe-a-plane-5.html

  * igt@kms_plane@pixel-format-x-tiled-modifier-source-clamping:
    - shard-ptl:          NOTRUN -> [SKIP][111] ([Intel XE#7283]) +4 other tests skip
   [111]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-ptl-6/igt@kms_plane@pixel-format-x-tiled-modifier-source-clamping.html

  * igt@kms_plane@pixel-format-y-tiled-gen12-rc-ccs-cc-modifier-source-clamping:
    - shard-lnl:          NOTRUN -> [SKIP][112] ([Intel XE#7283]) +2 other tests skip
   [112]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-lnl-2/igt@kms_plane@pixel-format-y-tiled-gen12-rc-ccs-cc-modifier-source-clamping.html

  * igt@kms_plane@pixel-format-yf-tiled-modifier-source-clamping:
    - shard-bmg:          NOTRUN -> [SKIP][113] ([Intel XE#7283]) +1 other test skip
   [113]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-9/igt@kms_plane@pixel-format-yf-tiled-modifier-source-clamping.html

  * igt@kms_plane_lowres@tiling-y:
    - shard-ptl:          NOTRUN -> [SKIP][114] ([Intel XE#5946])
   [114]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-ptl-8/igt@kms_plane_lowres@tiling-y.html

  * igt@kms_plane_scaling@intel-max-src-size:
    - shard-lnl:          NOTRUN -> [SKIP][115] ([Intel XE#3307])
   [115]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-lnl-8/igt@kms_plane_scaling@intel-max-src-size.html

  * igt@kms_plane_scaling@planes-downscale-factor-0-5-upscale-20x20@pipe-b:
    - shard-ptl:          NOTRUN -> [SKIP][116] ([Intel XE#6886]) +14 other tests skip
   [116]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-ptl-6/igt@kms_plane_scaling@planes-downscale-factor-0-5-upscale-20x20@pipe-b.html

  * igt@kms_pm_dc@dc5-psr-suspend-resume:
    - shard-bmg:          NOTRUN -> [SKIP][117] ([Intel XE#8854])
   [117]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-5/igt@kms_pm_dc@dc5-psr-suspend-resume.html

  * igt@kms_pm_dc@dc5-retention-flops:
    - shard-bmg:          NOTRUN -> [SKIP][118] ([Intel XE#3309] / [Intel XE#7368])
   [118]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-5/igt@kms_pm_dc@dc5-retention-flops.html

  * igt@kms_pm_dc@deep-pkgc:
    - shard-bmg:          NOTRUN -> [SKIP][119] ([Intel XE#2505] / [Intel XE#7447])
   [119]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-9/igt@kms_pm_dc@deep-pkgc.html

  * igt@kms_pm_rpm@modeset-non-lpsp-stress-no-wait:
    - shard-bmg:          [PASS][120] -> [SKIP][121] ([Intel XE#8710])
   [120]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5887-b0bd9fb9e92aae2a653efa1d0407daa2aabe99d0/shard-bmg-4/igt@kms_pm_rpm@modeset-non-lpsp-stress-no-wait.html
   [121]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-5/igt@kms_pm_rpm@modeset-non-lpsp-stress-no-wait.html

  * igt@kms_properties@crtc-properties-atomic:
    - shard-bmg:          NOTRUN -> [SKIP][122] ([Intel XE#8589]) +11 other tests skip
   [122]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-5/igt@kms_properties@crtc-properties-atomic.html

  * igt@kms_psr2_sf@fbc-pr-plane-move-sf-dmg-area:
    - shard-lnl:          NOTRUN -> [SKIP][123] ([Intel XE#2893] / [Intel XE#7304]) +2 other tests skip
   [123]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-lnl-7/igt@kms_psr2_sf@fbc-pr-plane-move-sf-dmg-area.html

  * igt@kms_psr2_sf@fbc-psr2-cursor-plane-move-continuous-sf:
    - shard-ptl:          NOTRUN -> [SKIP][124] ([Intel XE#5858] / [Intel XE#7304]) +7 other tests skip
   [124]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-ptl-2/igt@kms_psr2_sf@fbc-psr2-cursor-plane-move-continuous-sf.html

  * igt@kms_psr2_sf@fbc-psr2-cursor-plane-move-continuous-sf@pipe-a-edp-1:
    - shard-ptl:          NOTRUN -> [SKIP][125] ([Intel XE#5858]) +3 other tests skip
   [125]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-ptl-2/igt@kms_psr2_sf@fbc-psr2-cursor-plane-move-continuous-sf@pipe-a-edp-1.html

  * igt@kms_psr2_sf@pr-overlay-plane-move-continuous-exceed-fully-sf:
    - shard-ptl:          NOTRUN -> [SKIP][126] ([Intel XE#7304]) +1 other test skip
   [126]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-ptl-6/igt@kms_psr2_sf@pr-overlay-plane-move-continuous-exceed-fully-sf.html

  * igt@kms_psr2_sf@psr2-overlay-plane-move-continuous-sf:
    - shard-bmg:          NOTRUN -> [SKIP][127] ([Intel XE#1489]) +8 other tests skip
   [127]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-6/igt@kms_psr2_sf@psr2-overlay-plane-move-continuous-sf.html

  * igt@kms_psr2_su@page_flip-xrgb8888:
    - shard-ptl:          NOTRUN -> [SKIP][128] ([Intel XE#7413])
   [128]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-ptl-5/igt@kms_psr2_su@page_flip-xrgb8888.html

  * igt@kms_psr@fbc-pr-cursor-plane-move:
    - shard-ptl:          NOTRUN -> [SKIP][129] ([Intel XE#1406]) +2 other tests skip
   [129]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-ptl-7/igt@kms_psr@fbc-pr-cursor-plane-move.html

  * igt@kms_psr@fbc-psr2-cursor-plane-onoff:
    - shard-lnl:          NOTRUN -> [SKIP][130] ([Intel XE#1406] / [Intel XE#7345]) +2 other tests skip
   [130]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-lnl-7/igt@kms_psr@fbc-psr2-cursor-plane-onoff.html

  * igt@kms_psr@fbc-psr2-no-drrs:
    - shard-ptl:          NOTRUN -> [SKIP][131] ([Intel XE#1406] / [Intel XE#5835]) +13 other tests skip
   [131]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-ptl-4/igt@kms_psr@fbc-psr2-no-drrs.html

  * igt@kms_psr@fbc-psr2-no-drrs@edp-1:
    - shard-lnl:          NOTRUN -> [SKIP][132] ([Intel XE#1406] / [Intel XE#4609] / [Intel XE#7345]) +2 other tests skip
   [132]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-lnl-1/igt@kms_psr@fbc-psr2-no-drrs@edp-1.html

  * igt@kms_psr@pr-sprite-plane-move:
    - shard-lnl:          NOTRUN -> [SKIP][133] ([Intel XE#1406]) +2 other tests skip
   [133]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-lnl-7/igt@kms_psr@pr-sprite-plane-move.html

  * igt@kms_psr@pr-sprite-plane-onoff:
    - shard-bmg:          NOTRUN -> [SKIP][134] ([Intel XE#2234] / [Intel XE#2850]) +11 other tests skip
   [134]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-5/igt@kms_psr@pr-sprite-plane-onoff.html

  * igt@kms_rotation_crc@bad-tiling:
    - shard-ptl:          NOTRUN -> [SKIP][135] ([Intel XE#5821])
   [135]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-ptl-1/igt@kms_rotation_crc@bad-tiling.html

  * igt@kms_rotation_crc@primary-4-tiled-reflect-x-0:
    - shard-lnl:          NOTRUN -> [SKIP][136] ([Intel XE#3414] / [Intel XE#3904] / [Intel XE#7342]) +2 other tests skip
   [136]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-lnl-4/igt@kms_rotation_crc@primary-4-tiled-reflect-x-0.html

  * igt@kms_rotation_crc@primary-rotation-270:
    - shard-bmg:          NOTRUN -> [SKIP][137] ([Intel XE#3904] / [Intel XE#7342]) +1 other test skip
   [137]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-3/igt@kms_rotation_crc@primary-rotation-270.html

  * igt@kms_rotation_crc@primary-x-tiled-reflect-x-0:
    - shard-ptl:          NOTRUN -> [SKIP][138] ([Intel XE#5813])
   [138]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-ptl-1/igt@kms_rotation_crc@primary-x-tiled-reflect-x-0.html

  * igt@kms_scaling_modes@scaling-mode-center:
    - shard-bmg:          NOTRUN -> [SKIP][139] ([Intel XE#2413])
   [139]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-10/igt@kms_scaling_modes@scaling-mode-center.html

  * igt@kms_setmode@basic-clone-single-crtc:
    - shard-bmg:          NOTRUN -> [SKIP][140] ([Intel XE#1435] / [Intel XE#8695])
   [140]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-4/igt@kms_setmode@basic-clone-single-crtc.html
    - shard-lnl:          NOTRUN -> [SKIP][141] ([Intel XE#1435] / [Intel XE#9142])
   [141]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-lnl-3/igt@kms_setmode@basic-clone-single-crtc.html

  * igt@kms_sharpness_filter@invalid-filter-with-nearest-neighbor:
    - shard-bmg:          NOTRUN -> [SKIP][142] ([Intel XE#6503]) +1 other test skip
   [142]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-3/igt@kms_sharpness_filter@invalid-filter-with-nearest-neighbor.html

  * igt@kms_tiled_display@basic-test-pattern:
    - shard-bmg:          NOTRUN -> [FAIL][143] ([Intel XE#1729] / [Intel XE#7424])
   [143]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-5/igt@kms_tiled_display@basic-test-pattern.html
    - shard-ptl:          NOTRUN -> [SKIP][144] ([Intel XE#5848])
   [144]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-ptl-5/igt@kms_tiled_display@basic-test-pattern.html

  * igt@kms_tv_load_detect@load-detect:
    - shard-lnl:          NOTRUN -> [SKIP][145] ([Intel XE#330] / [Intel XE#5857])
   [145]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-lnl-5/igt@kms_tv_load_detect@load-detect.html

  * igt@kms_vblank@ts-continuation-dpms-suspend:
    - shard-bmg:          [PASS][146] -> [DMESG-WARN][147] ([Intel XE#9365] / [Intel XE#9465])
   [146]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5887-b0bd9fb9e92aae2a653efa1d0407daa2aabe99d0/shard-bmg-1/igt@kms_vblank@ts-continuation-dpms-suspend.html
   [147]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-3/igt@kms_vblank@ts-continuation-dpms-suspend.html

  * igt@kms_vblank@ts-continuation-dpms-suspend@pipe-a-dp-2:
    - shard-bmg:          [PASS][148] -> [DMESG-WARN][149] ([Intel XE#9365])
   [148]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5887-b0bd9fb9e92aae2a653efa1d0407daa2aabe99d0/shard-bmg-1/igt@kms_vblank@ts-continuation-dpms-suspend@pipe-a-dp-2.html
   [149]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-3/igt@kms_vblank@ts-continuation-dpms-suspend@pipe-a-dp-2.html

  * igt@kms_vblank@ts-continuation-suspend:
    - shard-ptl:          NOTRUN -> [ABORT][150] ([Intel XE#9362]) +1 other test abort
   [150]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-ptl-7/igt@kms_vblank@ts-continuation-suspend.html

  * igt@kms_vrr@flip-basic:
    - shard-ptl:          NOTRUN -> [FAIL][151] ([Intel XE#4227] / [Intel XE#7397]) +1 other test fail
   [151]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-ptl-5/igt@kms_vrr@flip-basic.html

  * igt@kms_vrr@flip-basic-fastset@pipe-a-edp-1:
    - shard-ptl:          [PASS][152] -> [FAIL][153] ([Intel XE#6293] / [Intel XE#7397])
   [152]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5887-b0bd9fb9e92aae2a653efa1d0407daa2aabe99d0/shard-ptl-3/igt@kms_vrr@flip-basic-fastset@pipe-a-edp-1.html
   [153]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-ptl-6/igt@kms_vrr@flip-basic-fastset@pipe-a-edp-1.html

  * igt@kms_vrr@flip-dpms@pipe-a-edp-1:
    - shard-ptl:          [PASS][154] -> [FAIL][155] ([Intel XE#4227] / [Intel XE#7397]) +2 other tests fail
   [154]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5887-b0bd9fb9e92aae2a653efa1d0407daa2aabe99d0/shard-ptl-7/igt@kms_vrr@flip-dpms@pipe-a-edp-1.html
   [155]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-ptl-8/igt@kms_vrr@flip-dpms@pipe-a-edp-1.html

  * igt@kms_vrr@flip-suspend@pipe-a-edp-1:
    - shard-ptl:          [PASS][156] -> [ABORT][157] ([Intel XE#9362]) +6 other tests abort
   [156]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5887-b0bd9fb9e92aae2a653efa1d0407daa2aabe99d0/shard-ptl-1/igt@kms_vrr@flip-suspend@pipe-a-edp-1.html
   [157]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-ptl-8/igt@kms_vrr@flip-suspend@pipe-a-edp-1.html

  * igt@kms_vrr@lobf:
    - shard-ptl:          NOTRUN -> [SKIP][158] ([Intel XE#5950] / [Intel XE#9277])
   [158]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-ptl-5/igt@kms_vrr@lobf.html

  * igt@kms_vrr@lobf@pipe-a-edp-1:
    - shard-ptl:          NOTRUN -> [SKIP][159] ([Intel XE#7638] / [Intel XE#9277])
   [159]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-ptl-5/igt@kms_vrr@lobf@pipe-a-edp-1.html

  * igt@kms_vrr@seamless-rr-switch-drrs:
    - shard-bmg:          NOTRUN -> [SKIP][160] ([Intel XE#1499] / [Intel XE#9271])
   [160]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-2/igt@kms_vrr@seamless-rr-switch-drrs.html

  * igt@sriov_basic@pf-unbind-with-vfs-enabled-numvfs-all:
    - shard-bmg:          NOTRUN -> [ABORT][161] ([Intel XE#8868])
   [161]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-1/igt@sriov_basic@pf-unbind-with-vfs-enabled-numvfs-all.html

  * igt@xe_ccs@suspend-resume:
    - shard-bmg:          [PASS][162] -> [ABORT][163] ([Intel XE#9362]) +1 other test abort
   [162]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5887-b0bd9fb9e92aae2a653efa1d0407daa2aabe99d0/shard-bmg-6/igt@xe_ccs@suspend-resume.html
   [163]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-10/igt@xe_ccs@suspend-resume.html

  * igt@xe_ccs@vm-bind-fault-mode-decompress:
    - shard-ptl:          NOTRUN -> [SKIP][164] ([Intel XE#7644])
   [164]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-ptl-1/igt@xe_ccs@vm-bind-fault-mode-decompress.html

  * igt@xe_evict@evict-small-multi-queue-priority-cm:
    - shard-bmg:          NOTRUN -> [SKIP][165] ([Intel XE#8370]) +1 other test skip
   [165]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-9/igt@xe_evict@evict-small-multi-queue-priority-cm.html

  * igt@xe_evict@evict-threads-small-multi-vm:
    - shard-ptl:          NOTRUN -> [SKIP][166] ([Intel XE#5764]) +11 other tests skip
   [166]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-ptl-4/igt@xe_evict@evict-threads-small-multi-vm.html

  * igt@xe_evict_ccs@evict-overcommit-standalone-instantfree-reopen:
    - shard-lnl:          NOTRUN -> [SKIP][167] ([Intel XE#6540] / [Intel XE#688]) +4 other tests skip
   [167]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-lnl-2/igt@xe_evict_ccs@evict-overcommit-standalone-instantfree-reopen.html

  * igt@xe_evict_ccs@evict-overcommit-standalone-nofree-samefd:
    - shard-ptl:          NOTRUN -> [SKIP][168] ([Intel XE#6144])
   [168]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-ptl-6/igt@xe_evict_ccs@evict-overcommit-standalone-nofree-samefd.html

  * igt@xe_exec_balancer@many-virtual-userptr-rebind:
    - shard-ptl:          NOTRUN -> [SKIP][169] ([Intel XE#7482]) +14 other tests skip
   [169]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-ptl-2/igt@xe_exec_balancer@many-virtual-userptr-rebind.html

  * igt@xe_exec_balancer@no-exec-cm-parallel-rebind:
    - shard-lnl:          NOTRUN -> [SKIP][170] ([Intel XE#7482]) +10 other tests skip
   [170]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-lnl-2/igt@xe_exec_balancer@no-exec-cm-parallel-rebind.html

  * igt@xe_exec_basic@multigpu-no-exec-basic-defer-mmap:
    - shard-lnl:          NOTRUN -> [SKIP][171] ([Intel XE#1392]) +2 other tests skip
   [171]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-lnl-6/igt@xe_exec_basic@multigpu-no-exec-basic-defer-mmap.html

  * igt@xe_exec_basic@multigpu-no-exec-null-defer-mmap:
    - shard-ptl:          NOTRUN -> [SKIP][172] ([Intel XE#5575] / [Intel XE#7484]) +8 other tests skip
   [172]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-ptl-8/igt@xe_exec_basic@multigpu-no-exec-null-defer-mmap.html

  * igt@xe_exec_basic@multigpu-once-bindexecqueue-userptr-invalidate:
    - shard-bmg:          NOTRUN -> [SKIP][173] ([Intel XE#2322] / [Intel XE#7372]) +5 other tests skip
   [173]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-1/igt@xe_exec_basic@multigpu-once-bindexecqueue-userptr-invalidate.html

  * igt@xe_exec_basic@once-userptr:
    - shard-bmg:          [PASS][174] -> [DMESG-FAIL][175] ([Intel XE#6652] / [Intel XE#7774]) +1 other test dmesg-fail
   [174]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5887-b0bd9fb9e92aae2a653efa1d0407daa2aabe99d0/shard-bmg-7/igt@xe_exec_basic@once-userptr.html
   [175]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-5/igt@xe_exec_basic@once-userptr.html

  * igt@xe_exec_basic@once-userptr@vecs0:
    - shard-bmg:          [PASS][176] -> [DMESG-WARN][177] ([Intel XE#6652])
   [176]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5887-b0bd9fb9e92aae2a653efa1d0407daa2aabe99d0/shard-bmg-7/igt@xe_exec_basic@once-userptr@vecs0.html
   [177]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-5/igt@xe_exec_basic@once-userptr@vecs0.html

  * igt@xe_exec_fault_mode@many-execqueues-multi-queue-userptr-rebind-imm:
    - shard-ptl:          NOTRUN -> [SKIP][178] ([Intel XE#8374]) +14 other tests skip
   [178]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-ptl-4/igt@xe_exec_fault_mode@many-execqueues-multi-queue-userptr-rebind-imm.html

  * igt@xe_exec_fault_mode@once-multi-queue-userptr-invalidate-race-imm:
    - shard-bmg:          NOTRUN -> [SKIP][179] ([Intel XE#8374]) +12 other tests skip
   [179]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-1/igt@xe_exec_fault_mode@once-multi-queue-userptr-invalidate-race-imm.html

  * igt@xe_exec_fault_mode@twice-multi-queue-userptr-imm:
    - shard-lnl:          NOTRUN -> [SKIP][180] ([Intel XE#8374]) +5 other tests skip
   [180]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-lnl-6/igt@xe_exec_fault_mode@twice-multi-queue-userptr-imm.html

  * igt@xe_exec_multi_queue@two-queues-close-fd-smem:
    - shard-lnl:          NOTRUN -> [SKIP][181] ([Intel XE#8364]) +17 other tests skip
   [181]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-lnl-3/igt@xe_exec_multi_queue@two-queues-close-fd-smem.html

  * igt@xe_exec_multi_queue@two-queues-preempt-mode-fault-userptr-invalidate:
    - shard-ptl:          NOTRUN -> [SKIP][182] ([Intel XE#8364]) +27 other tests skip
   [182]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-ptl-5/igt@xe_exec_multi_queue@two-queues-preempt-mode-fault-userptr-invalidate.html

  * igt@xe_exec_multi_queue@two-queues-priority:
    - shard-bmg:          NOTRUN -> [SKIP][183] ([Intel XE#8364]) +26 other tests skip
   [183]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-3/igt@xe_exec_multi_queue@two-queues-priority.html

  * igt@xe_exec_reset@cm-multi-queue-gt-reset:
    - shard-ptl:          NOTRUN -> [SKIP][184] ([Intel XE#8369]) +2 other tests skip
   [184]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-ptl-6/igt@xe_exec_reset@cm-multi-queue-gt-reset.html

  * igt@xe_exec_reset@multi-queue-gt-reset:
    - shard-bmg:          NOTRUN -> [SKIP][185] ([Intel XE#8369]) +1 other test skip
   [185]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-10/igt@xe_exec_reset@multi-queue-gt-reset.html

  * igt@xe_exec_system_allocator@pat-index-madvise-pat-idx-wt-multi-vma:
    - shard-ptl:          NOTRUN -> [SKIP][186] ([Intel XE#6196]) +1 other test skip
   [186]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-ptl-8/igt@xe_exec_system_allocator@pat-index-madvise-pat-idx-wt-multi-vma.html

  * igt@xe_exec_threads@threads-multi-queue-cm-shared-vm-basic:
    - shard-lnl:          NOTRUN -> [SKIP][187] ([Intel XE#8378]) +5 other tests skip
   [187]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-lnl-2/igt@xe_exec_threads@threads-multi-queue-cm-shared-vm-basic.html

  * igt@xe_exec_threads@threads-multi-queue-mixed-rebind:
    - shard-bmg:          NOTRUN -> [SKIP][188] ([Intel XE#8378]) +4 other tests skip
   [188]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-9/igt@xe_exec_threads@threads-multi-queue-mixed-rebind.html

  * igt@xe_exec_threads@threads-multi-queue-shared-vm-rebind:
    - shard-ptl:          NOTRUN -> [SKIP][189] ([Intel XE#8378]) +5 other tests skip
   [189]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-ptl-4/igt@xe_exec_threads@threads-multi-queue-shared-vm-rebind.html

  * igt@xe_gpgpu_fill@offset-4x4:
    - shard-bmg:          NOTRUN -> [SKIP][190] ([Intel XE#7954])
   [190]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-9/igt@xe_gpgpu_fill@offset-4x4.html

  * igt@xe_madvise@atomic-global:
    - shard-ptl:          NOTRUN -> [SKIP][191] ([Intel XE#7980])
   [191]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-ptl-2/igt@xe_madvise@atomic-global.html

  * igt@xe_mmap@pci-membarrier:
    - shard-lnl:          NOTRUN -> [SKIP][192] ([Intel XE#5100] / [Intel XE#7322] / [Intel XE#7408]) +1 other test skip
   [192]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-lnl-7/igt@xe_mmap@pci-membarrier.html

  * igt@xe_mmap@pci-membarrier-bad-pagesize:
    - shard-ptl:          NOTRUN -> [SKIP][193] ([Intel XE#5100] / [Intel XE#7408]) +1 other test skip
   [193]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-ptl-6/igt@xe_mmap@pci-membarrier-bad-pagesize.html

  * igt@xe_mmap@small-bar:
    - shard-bmg:          NOTRUN -> [SKIP][194] ([Intel XE#586] / [Intel XE#7323] / [Intel XE#7384])
   [194]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-9/igt@xe_mmap@small-bar.html
    - shard-ptl:          NOTRUN -> [SKIP][195] ([Intel XE#5867])
   [195]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-ptl-3/igt@xe_mmap@small-bar.html

  * igt@xe_multigpu_svm@mgpu-atomic-op-conflict:
    - shard-lnl:          NOTRUN -> [SKIP][196] ([Intel XE#6964]) +3 other tests skip
   [196]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-lnl-6/igt@xe_multigpu_svm@mgpu-atomic-op-conflict.html

  * igt@xe_multigpu_svm@mgpu-coherency-prefetch:
    - shard-ptl:          NOTRUN -> [SKIP][197] ([Intel XE#6964]) +2 other tests skip
   [197]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-ptl-2/igt@xe_multigpu_svm@mgpu-coherency-prefetch.html

  * igt@xe_multigpu_svm@mgpu-latency-prefetch:
    - shard-bmg:          NOTRUN -> [SKIP][198] ([Intel XE#6964])
   [198]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-1/igt@xe_multigpu_svm@mgpu-latency-prefetch.html

  * igt@xe_noexec_ping_pong@basic:
    - shard-ptl:          NOTRUN -> [SKIP][199] ([Intel XE#6259] / [Intel XE#7406])
   [199]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-ptl-6/igt@xe_noexec_ping_pong@basic.html

  * igt@xe_page_reclaim@binds-large-split:
    - shard-ptl:          NOTRUN -> [SKIP][200] ([Intel XE#7793])
   [200]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-ptl-5/igt@xe_page_reclaim@binds-large-split.html

  * igt@xe_pat@pat-index-xehpc:
    - shard-bmg:          NOTRUN -> [SKIP][201] ([Intel XE#1420] / [Intel XE#7590])
   [201]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-6/igt@xe_pat@pat-index-xehpc.html
    - shard-lnl:          NOTRUN -> [SKIP][202] ([Intel XE#1420] / [Intel XE#2838] / [Intel XE#7590])
   [202]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-lnl-2/igt@xe_pat@pat-index-xehpc.html

  * igt@xe_pm@d3cold-basic:
    - shard-bmg:          NOTRUN -> [SKIP][203] ([Intel XE#2284] / [Intel XE#7370])
   [203]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-4/igt@xe_pm@d3cold-basic.html

  * igt@xe_pm@d3cold-i2c:
    - shard-ptl:          NOTRUN -> [SKIP][204] ([Intel XE#5741]) +1 other test skip
   [204]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-ptl-2/igt@xe_pm@d3cold-i2c.html

  * igt@xe_pm@d3cold-mocs:
    - shard-lnl:          NOTRUN -> [SKIP][205] ([Intel XE#2284] / [Intel XE#7370])
   [205]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-lnl-6/igt@xe_pm@d3cold-mocs.html

  * igt@xe_pm@lb-fan-control-version-show:
    - shard-ptl:          NOTRUN -> [SKIP][206] ([Intel XE#9491])
   [206]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-ptl-1/igt@xe_pm@lb-fan-control-version-show.html

  * igt@xe_pm@s3-vm-bind-unbind-all:
    - shard-lnl:          NOTRUN -> [SKIP][207] ([Intel XE#584] / [Intel XE#7369]) +1 other test skip
   [207]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-lnl-5/igt@xe_pm@s3-vm-bind-unbind-all.html

  * igt@xe_pm@s4-multiple-execs:
    - shard-lnl:          [PASS][208] -> [ABORT][209] ([Intel XE#9362])
   [208]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5887-b0bd9fb9e92aae2a653efa1d0407daa2aabe99d0/shard-lnl-3/igt@xe_pm@s4-multiple-execs.html
   [209]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-lnl-4/igt@xe_pm@s4-multiple-execs.html

  * igt@xe_pm@vram-d3cold-threshold-show:
    - shard-lnl:          NOTRUN -> [SKIP][210] ([Intel XE#9487])
   [210]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-lnl-8/igt@xe_pm@vram-d3cold-threshold-show.html

  * igt@xe_pm@vram-d3cold-threshold-store:
    - shard-bmg:          NOTRUN -> [SKIP][211] ([Intel XE#9487])
   [211]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-2/igt@xe_pm@vram-d3cold-threshold-store.html
    - shard-ptl:          NOTRUN -> [SKIP][212] ([Intel XE#9487])
   [212]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-ptl-1/igt@xe_pm@vram-d3cold-threshold-store.html

  * igt@xe_pm_residency@aspm_link_residency:
    - shard-ptl:          NOTRUN -> [SKIP][213] ([Intel XE#7271])
   [213]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-ptl-4/igt@xe_pm_residency@aspm_link_residency.html

  * igt@xe_prefetch_fault@prefetch-fault:
    - shard-bmg:          NOTRUN -> [SKIP][214] ([Intel XE#7599])
   [214]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-9/igt@xe_prefetch_fault@prefetch-fault.html

  * igt@xe_pxp@pxp-stale-bo-exec-post-termination-irq:
    - shard-bmg:          NOTRUN -> [SKIP][215] ([Intel XE#4733] / [Intel XE#7417]) +2 other tests skip
   [215]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-2/igt@xe_pxp@pxp-stale-bo-exec-post-termination-irq.html

  * igt@xe_query@multigpu-query-invalid-cs-cycles:
    - shard-bmg:          NOTRUN -> [SKIP][216] ([Intel XE#944]) +3 other tests skip
   [216]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-6/igt@xe_query@multigpu-query-invalid-cs-cycles.html

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

  * igt@xe_query@multigpu-query-invalid-size:
    - shard-ptl:          NOTRUN -> [SKIP][218] ([Intel XE#6019]) +5 other tests skip
   [218]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-ptl-1/igt@xe_query@multigpu-query-invalid-size.html

  * igt@xe_sriov_admin@bulk-preempt-timeout-vfs-disabled:
    - shard-lnl:          NOTRUN -> [SKIP][219] ([Intel XE#7174])
   [219]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-lnl-3/igt@xe_sriov_admin@bulk-preempt-timeout-vfs-disabled.html

  * igt@xe_sriov_flr@flr-twice:
    - shard-bmg:          [PASS][220] -> [FAIL][221] ([Intel XE#6569]) +1 other test fail
   [220]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5887-b0bd9fb9e92aae2a653efa1d0407daa2aabe99d0/shard-bmg-6/igt@xe_sriov_flr@flr-twice.html
   [221]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-2/igt@xe_sriov_flr@flr-twice.html

  * igt@xe_sriov_vfio@region-info:
    - shard-lnl:          NOTRUN -> [SKIP][222] ([Intel XE#7724])
   [222]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-lnl-5/igt@xe_sriov_vfio@region-info.html

  * igt@xe_sriov_vram@vf-access-after-resize-up:
    - shard-ptl:          NOTRUN -> [SKIP][223] ([Intel XE#6376] / [Intel XE#7422])
   [223]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-ptl-2/igt@xe_sriov_vram@vf-access-after-resize-up.html

  * igt@xe_survivability@i2c-functionality:
    - shard-ptl:          NOTRUN -> [SKIP][224] ([Intel XE#8415] / [Intel XE#8432])
   [224]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-ptl-6/igt@xe_survivability@i2c-functionality.html

  * igt@xe_sync_file@sync_file_race:
    - shard-bmg:          NOTRUN -> [FAIL][225] ([Intel XE#9457])
   [225]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-2/igt@xe_sync_file@sync_file_race.html
    - shard-lnl:          NOTRUN -> [FAIL][226] ([Intel XE#9457])
   [226]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-lnl-5/igt@xe_sync_file@sync_file_race.html

  * igt@xe_vm@overcommit-fault-vram-lr:
    - shard-ptl:          NOTRUN -> [SKIP][227] ([Intel XE#7892])
   [227]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-ptl-5/igt@xe_vm@overcommit-fault-vram-lr.html

  * igt@xe_wedged@wedged-at-any-timeout:
    - shard-lnl:          NOTRUN -> [DMESG-WARN][228] ([Intel XE#8963])
   [228]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-lnl-1/igt@xe_wedged@wedged-at-any-timeout.html

  
#### Possible fixes ####

  * igt@kms_async_flips@async-flip-suspend-resume@pipe-a-edp-1:
    - shard-ptl:          [ABORT][229] ([Intel XE#9362]) -> [PASS][230] +2 other tests pass
   [229]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5887-b0bd9fb9e92aae2a653efa1d0407daa2aabe99d0/shard-ptl-1/igt@kms_async_flips@async-flip-suspend-resume@pipe-a-edp-1.html
   [230]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-ptl-8/igt@kms_async_flips@async-flip-suspend-resume@pipe-a-edp-1.html

  * igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs:
    - shard-bmg:          [INCOMPLETE][231] ([Intel XE#7084] / [Intel XE#8150]) -> [PASS][232] +1 other test pass
   [231]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5887-b0bd9fb9e92aae2a653efa1d0407daa2aabe99d0/shard-bmg-2/igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs.html
   [232]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-5/igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs.html

  * igt@kms_color_pipeline@plane-fixed-matrix-yuv-rgb-bt601-lim@pipe-c-plane-1:
    - shard-ptl:          [FAIL][233] ([Intel XE#9333]) -> [PASS][234] +104 other tests pass
   [233]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5887-b0bd9fb9e92aae2a653efa1d0407daa2aabe99d0/shard-ptl-3/igt@kms_color_pipeline@plane-fixed-matrix-yuv-rgb-bt601-lim@pipe-c-plane-1.html
   [234]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-ptl-4/igt@kms_color_pipeline@plane-fixed-matrix-yuv-rgb-bt601-lim@pipe-c-plane-1.html

  * igt@kms_color_pipeline@plane-fixed-matrix-yuv-rgb-bt601-lim@pipe-c-plane-4:
    - shard-bmg:          [FAIL][235] ([Intel XE#9333]) -> [PASS][236] +204 other tests pass
   [235]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5887-b0bd9fb9e92aae2a653efa1d0407daa2aabe99d0/shard-bmg-3/igt@kms_color_pipeline@plane-fixed-matrix-yuv-rgb-bt601-lim@pipe-c-plane-4.html
   [236]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-1/igt@kms_color_pipeline@plane-fixed-matrix-yuv-rgb-bt601-lim@pipe-c-plane-4.html

  * igt@kms_color_pipeline@plane-fixed-matrix-yuv-rgb-bt601-lut1d@pipe-a-plane-3:
    - shard-lnl:          [FAIL][237] ([Intel XE#9333]) -> [PASS][238] +159 other tests pass
   [237]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5887-b0bd9fb9e92aae2a653efa1d0407daa2aabe99d0/shard-lnl-5/igt@kms_color_pipeline@plane-fixed-matrix-yuv-rgb-bt601-lut1d@pipe-a-plane-3.html
   [238]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-lnl-6/igt@kms_color_pipeline@plane-fixed-matrix-yuv-rgb-bt601-lut1d@pipe-a-plane-3.html

  * igt@kms_cursor_crc@cursor-suspend:
    - shard-lnl:          [INCOMPLETE][239] ([Intel XE#9094]) -> [PASS][240] +1 other test pass
   [239]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5887-b0bd9fb9e92aae2a653efa1d0407daa2aabe99d0/shard-lnl-1/igt@kms_cursor_crc@cursor-suspend.html
   [240]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-lnl-3/igt@kms_cursor_crc@cursor-suspend.html

  * igt@kms_flip@flip-vs-expired-vblank-interruptible@a-edp1:
    - shard-lnl:          [FAIL][241] ([Intel XE#301]) -> [PASS][242]
   [241]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5887-b0bd9fb9e92aae2a653efa1d0407daa2aabe99d0/shard-lnl-3/igt@kms_flip@flip-vs-expired-vblank-interruptible@a-edp1.html
   [242]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-lnl-3/igt@kms_flip@flip-vs-expired-vblank-interruptible@a-edp1.html

  * igt@kms_flip@flip-vs-expired-vblank-interruptible@c-edp1:
    - shard-lnl:          [FAIL][243] ([Intel XE#301] / [Intel XE#3149]) -> [PASS][244]
   [243]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5887-b0bd9fb9e92aae2a653efa1d0407daa2aabe99d0/shard-lnl-3/igt@kms_flip@flip-vs-expired-vblank-interruptible@c-edp1.html
   [244]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-lnl-3/igt@kms_flip@flip-vs-expired-vblank-interruptible@c-edp1.html

  * igt@kms_sharpness_filter@filter-suspend:
    - shard-ptl:          [ABORT][245] ([Intel XE#9375]) -> [PASS][246] +1 other test pass
   [245]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5887-b0bd9fb9e92aae2a653efa1d0407daa2aabe99d0/shard-ptl-1/igt@kms_sharpness_filter@filter-suspend.html
   [246]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-ptl-1/igt@kms_sharpness_filter@filter-suspend.html

  * igt@xe_evict@evict-beng-mixed-many-threads-small:
    - shard-bmg:          [INCOMPLETE][247] ([Intel XE#6321] / [Intel XE#8355]) -> [PASS][248]
   [247]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5887-b0bd9fb9e92aae2a653efa1d0407daa2aabe99d0/shard-bmg-8/igt@xe_evict@evict-beng-mixed-many-threads-small.html
   [248]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-6/igt@xe_evict@evict-beng-mixed-many-threads-small.html

  * igt@xe_module_load@load:
    - shard-bmg:          ([PASS][249], [PASS][250], [PASS][251], [PASS][252], [PASS][253], [PASS][254], [PASS][255], [PASS][256], [PASS][257], [PASS][258], [PASS][259], [PASS][260], [PASS][261], [PASS][262], [PASS][263], [PASS][264], [PASS][265], [PASS][266], [PASS][267], [PASS][268], [PASS][269], [PASS][270], [PASS][271], [PASS][272], [SKIP][273]) ([Intel XE#2457] / [Intel XE#7405]) -> ([PASS][274], [PASS][275], [PASS][276], [PASS][277], [PASS][278], [PASS][279], [PASS][280], [PASS][281], [PASS][282], [PASS][283], [PASS][284], [PASS][285], [PASS][286], [PASS][287], [PASS][288], [PASS][289], [PASS][290], [PASS][291], [PASS][292], [PASS][293], [PASS][294], [PASS][295], [PASS][296], [PASS][297], [PASS][298])
   [249]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5887-b0bd9fb9e92aae2a653efa1d0407daa2aabe99d0/shard-bmg-2/igt@xe_module_load@load.html
   [250]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5887-b0bd9fb9e92aae2a653efa1d0407daa2aabe99d0/shard-bmg-10/igt@xe_module_load@load.html
   [251]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5887-b0bd9fb9e92aae2a653efa1d0407daa2aabe99d0/shard-bmg-7/igt@xe_module_load@load.html
   [252]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5887-b0bd9fb9e92aae2a653efa1d0407daa2aabe99d0/shard-bmg-8/igt@xe_module_load@load.html
   [253]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5887-b0bd9fb9e92aae2a653efa1d0407daa2aabe99d0/shard-bmg-6/igt@xe_module_load@load.html
   [254]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5887-b0bd9fb9e92aae2a653efa1d0407daa2aabe99d0/shard-bmg-3/igt@xe_module_load@load.html
   [255]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5887-b0bd9fb9e92aae2a653efa1d0407daa2aabe99d0/shard-bmg-7/igt@xe_module_load@load.html
   [256]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5887-b0bd9fb9e92aae2a653efa1d0407daa2aabe99d0/shard-bmg-1/igt@xe_module_load@load.html
   [257]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5887-b0bd9fb9e92aae2a653efa1d0407daa2aabe99d0/shard-bmg-1/igt@xe_module_load@load.html
   [258]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5887-b0bd9fb9e92aae2a653efa1d0407daa2aabe99d0/shard-bmg-1/igt@xe_module_load@load.html
   [259]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5887-b0bd9fb9e92aae2a653efa1d0407daa2aabe99d0/shard-bmg-6/igt@xe_module_load@load.html
   [260]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5887-b0bd9fb9e92aae2a653efa1d0407daa2aabe99d0/shard-bmg-3/igt@xe_module_load@load.html
   [261]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5887-b0bd9fb9e92aae2a653efa1d0407daa2aabe99d0/shard-bmg-3/igt@xe_module_load@load.html
   [262]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5887-b0bd9fb9e92aae2a653efa1d0407daa2aabe99d0/shard-bmg-9/igt@xe_module_load@load.html
   [263]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5887-b0bd9fb9e92aae2a653efa1d0407daa2aabe99d0/shard-bmg-8/igt@xe_module_load@load.html
   [264]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5887-b0bd9fb9e92aae2a653efa1d0407daa2aabe99d0/shard-bmg-8/igt@xe_module_load@load.html
   [265]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5887-b0bd9fb9e92aae2a653efa1d0407daa2aabe99d0/shard-bmg-10/igt@xe_module_load@load.html
   [266]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5887-b0bd9fb9e92aae2a653efa1d0407daa2aabe99d0/shard-bmg-9/igt@xe_module_load@load.html
   [267]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5887-b0bd9fb9e92aae2a653efa1d0407daa2aabe99d0/shard-bmg-5/igt@xe_module_load@load.html
   [268]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5887-b0bd9fb9e92aae2a653efa1d0407daa2aabe99d0/shard-bmg-2/igt@xe_module_load@load.html
   [269]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5887-b0bd9fb9e92aae2a653efa1d0407daa2aabe99d0/shard-bmg-4/igt@xe_module_load@load.html
   [270]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5887-b0bd9fb9e92aae2a653efa1d0407daa2aabe99d0/shard-bmg-4/igt@xe_module_load@load.html
   [271]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5887-b0bd9fb9e92aae2a653efa1d0407daa2aabe99d0/shard-bmg-4/igt@xe_module_load@load.html
   [272]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5887-b0bd9fb9e92aae2a653efa1d0407daa2aabe99d0/shard-bmg-5/igt@xe_module_load@load.html
   [273]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5887-b0bd9fb9e92aae2a653efa1d0407daa2aabe99d0/shard-bmg-1/igt@xe_module_load@load.html
   [274]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-2/igt@xe_module_load@load.html
   [275]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-2/igt@xe_module_load@load.html
   [276]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-3/igt@xe_module_load@load.html
   [277]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-3/igt@xe_module_load@load.html
   [278]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-3/igt@xe_module_load@load.html
   [279]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-1/igt@xe_module_load@load.html
   [280]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-1/igt@xe_module_load@load.html
   [281]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-2/igt@xe_module_load@load.html
   [282]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-9/igt@xe_module_load@load.html
   [283]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-9/igt@xe_module_load@load.html
   [284]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-9/igt@xe_module_load@load.html
   [285]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-1/igt@xe_module_load@load.html
   [286]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-4/igt@xe_module_load@load.html
   [287]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-6/igt@xe_module_load@load.html
   [288]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-6/igt@xe_module_load@load.html
   [289]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-6/igt@xe_module_load@load.html
   [290]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-5/igt@xe_module_load@load.html
   [291]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-4/igt@xe_module_load@load.html
   [292]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-4/igt@xe_module_load@load.html
   [293]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-10/igt@xe_module_load@load.html
   [294]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-10/igt@xe_module_load@load.html
   [295]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-5/igt@xe_module_load@load.html
   [296]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-10/igt@xe_module_load@load.html
   [297]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-5/igt@xe_module_load@load.html
   [298]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-10/igt@xe_module_load@load.html

  * igt@xe_pm@s4-basic-exec:
    - shard-lnl:          [ABORT][299] ([Intel XE#9362]) -> [PASS][300] +1 other test pass
   [299]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5887-b0bd9fb9e92aae2a653efa1d0407daa2aabe99d0/shard-lnl-5/igt@xe_pm@s4-basic-exec.html
   [300]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-lnl-4/igt@xe_pm@s4-basic-exec.html

  * igt@xe_pm@s4-mocs:
    - shard-lnl:          [DMESG-WARN][301] ([Intel XE#7727]) -> [PASS][302]
   [301]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5887-b0bd9fb9e92aae2a653efa1d0407daa2aabe99d0/shard-lnl-8/igt@xe_pm@s4-mocs.html
   [302]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-lnl-1/igt@xe_pm@s4-mocs.html

  * igt@xe_pm_residency@gt-c6-freeze@gt0:
    - shard-bmg:          [FAIL][303] ([Intel XE#9254]) -> [PASS][304] +1 other test pass
   [303]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5887-b0bd9fb9e92aae2a653efa1d0407daa2aabe99d0/shard-bmg-7/igt@xe_pm_residency@gt-c6-freeze@gt0.html
   [304]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-9/igt@xe_pm_residency@gt-c6-freeze@gt0.html

  
#### Warnings ####

  * igt@kms_big_fb@y-tiled-16bpp-rotate-0:
    - shard-bmg:          [SKIP][305] ([Intel XE#1124]) -> [SKIP][306] ([Intel XE#8589])
   [305]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5887-b0bd9fb9e92aae2a653efa1d0407daa2aabe99d0/shard-bmg-5/igt@kms_big_fb@y-tiled-16bpp-rotate-0.html
   [306]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-5/igt@kms_big_fb@y-tiled-16bpp-rotate-0.html

  * igt@kms_bw@connected-linear-tiling-4-displays-target-2560x1440p:
    - shard-bmg:          [SKIP][307] ([Intel XE#7679]) -> [SKIP][308] ([Intel XE#8589])
   [307]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5887-b0bd9fb9e92aae2a653efa1d0407daa2aabe99d0/shard-bmg-7/igt@kms_bw@connected-linear-tiling-4-displays-target-2560x1440p.html
   [308]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-5/igt@kms_bw@connected-linear-tiling-4-displays-target-2560x1440p.html

  * igt@kms_ccs@bad-aux-stride-y-tiled-gen12-mc-ccs:
    - shard-bmg:          [SKIP][309] ([Intel XE#2887]) -> [SKIP][310] ([Intel XE#8589]) +2 other tests skip
   [309]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5887-b0bd9fb9e92aae2a653efa1d0407daa2aabe99d0/shard-bmg-8/igt@kms_ccs@bad-aux-stride-y-tiled-gen12-mc-ccs.html
   [310]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-5/igt@kms_ccs@bad-aux-stride-y-tiled-gen12-mc-ccs.html

  * igt@kms_chamelium_hpd@hdmi-hpd-storm-disable:
    - shard-bmg:          [SKIP][311] ([Intel XE#2252]) -> [SKIP][312] ([Intel XE#8589]) +1 other test skip
   [311]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5887-b0bd9fb9e92aae2a653efa1d0407daa2aabe99d0/shard-bmg-3/igt@kms_chamelium_hpd@hdmi-hpd-storm-disable.html
   [312]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-5/igt@kms_chamelium_hpd@hdmi-hpd-storm-disable.html

  * igt@kms_content_protection@lic-type-1:
    - shard-bmg:          [SKIP][313] ([Intel XE#7642]) -> [SKIP][314] ([Intel XE#8589])
   [313]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5887-b0bd9fb9e92aae2a653efa1d0407daa2aabe99d0/shard-bmg-5/igt@kms_content_protection@lic-type-1.html
   [314]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-5/igt@kms_content_protection@lic-type-1.html

  * igt@kms_cursor_crc@cursor-offscreen-512x512:
    - shard-bmg:          [SKIP][315] ([Intel XE#2321] / [Intel XE#7355]) -> [SKIP][316] ([Intel XE#8589])
   [315]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5887-b0bd9fb9e92aae2a653efa1d0407daa2aabe99d0/shard-bmg-9/igt@kms_cursor_crc@cursor-offscreen-512x512.html
   [316]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-5/igt@kms_cursor_crc@cursor-offscreen-512x512.html

  * igt@kms_dsc@dsc-with-formats-ultrajoiner:
    - shard-bmg:          [SKIP][317] ([Intel XE#8265]) -> [SKIP][318] ([Intel XE#8589])
   [317]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5887-b0bd9fb9e92aae2a653efa1d0407daa2aabe99d0/shard-bmg-8/igt@kms_dsc@dsc-with-formats-ultrajoiner.html
   [318]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-5/igt@kms_dsc@dsc-with-formats-ultrajoiner.html

  * igt@kms_flip@flip-vs-expired-vblank-interruptible:
    - shard-lnl:          [FAIL][319] ([Intel XE#301] / [Intel XE#3149]) -> [FAIL][320] ([Intel XE#301])
   [319]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5887-b0bd9fb9e92aae2a653efa1d0407daa2aabe99d0/shard-lnl-3/igt@kms_flip@flip-vs-expired-vblank-interruptible.html
   [320]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-lnl-3/igt@kms_flip@flip-vs-expired-vblank-interruptible.html

  * igt@kms_frontbuffer_tracking@drrs-1p-primscrn-spr-indfb-fullscreen:
    - shard-bmg:          [SKIP][321] ([Intel XE#2311]) -> [SKIP][322] ([Intel XE#8589]) +5 other tests skip
   [321]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5887-b0bd9fb9e92aae2a653efa1d0407daa2aabe99d0/shard-bmg-9/igt@kms_frontbuffer_tracking@drrs-1p-primscrn-spr-indfb-fullscreen.html
   [322]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-5/igt@kms_frontbuffer_tracking@drrs-1p-primscrn-spr-indfb-fullscreen.html

  * igt@kms_frontbuffer_tracking@drrshdr-argb161616f-draw-render:
    - shard-bmg:          [SKIP][323] ([Intel XE#7061]) -> [SKIP][324] ([Intel XE#8589])
   [323]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5887-b0bd9fb9e92aae2a653efa1d0407daa2aabe99d0/shard-bmg-7/igt@kms_frontbuffer_tracking@drrshdr-argb161616f-draw-render.html
   [324]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-5/igt@kms_frontbuffer_tracking@drrshdr-argb161616f-draw-render.html

  * igt@kms_frontbuffer_tracking@psr-argb161616f-draw-blt:
    - shard-bmg:          [SKIP][325] ([Intel XE#7061] / [Intel XE#7356]) -> [SKIP][326] ([Intel XE#8589])
   [325]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5887-b0bd9fb9e92aae2a653efa1d0407daa2aabe99d0/shard-bmg-7/igt@kms_frontbuffer_tracking@psr-argb161616f-draw-blt.html
   [326]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-5/igt@kms_frontbuffer_tracking@psr-argb161616f-draw-blt.html

  * igt@kms_frontbuffer_tracking@psrhdr-2p-primscrn-pri-shrfb-draw-mmap-wc:
    - shard-bmg:          [SKIP][327] ([Intel XE#2313]) -> [SKIP][328] ([Intel XE#8589]) +4 other tests skip
   [327]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5887-b0bd9fb9e92aae2a653efa1d0407daa2aabe99d0/shard-bmg-10/igt@kms_frontbuffer_tracking@psrhdr-2p-primscrn-pri-shrfb-draw-mmap-wc.html
   [328]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-5/igt@kms_frontbuffer_tracking@psrhdr-2p-primscrn-pri-shrfb-draw-mmap-wc.html

  * igt@kms_hdr@brightness-with-hdr:
    - shard-bmg:          [SKIP][329] ([Intel XE#3544]) -> [SKIP][330] ([Intel XE#3374] / [Intel XE#3544])
   [329]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5887-b0bd9fb9e92aae2a653efa1d0407daa2aabe99d0/shard-bmg-1/igt@kms_hdr@brightness-with-hdr.html
   [330]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-6/igt@kms_hdr@brightness-with-hdr.html

  * igt@kms_pipe_stress@stress-xrgb8888-ytiled:
    - shard-bmg:          [SKIP][331] ([Intel XE#4329] / [Intel XE#6912] / [Intel XE#7375]) -> [SKIP][332] ([Intel XE#8589])
   [331]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5887-b0bd9fb9e92aae2a653efa1d0407daa2aabe99d0/shard-bmg-4/igt@kms_pipe_stress@stress-xrgb8888-ytiled.html
   [332]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-5/igt@kms_pipe_stress@stress-xrgb8888-ytiled.html

  * igt@kms_psr2_sf@psr2-overlay-plane-update-sf-dmg-area:
    - shard-bmg:          [SKIP][333] ([Intel XE#1489]) -> [SKIP][334] ([Intel XE#8589])
   [333]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5887-b0bd9fb9e92aae2a653efa1d0407daa2aabe99d0/shard-bmg-10/igt@kms_psr2_sf@psr2-overlay-plane-update-sf-dmg-area.html
   [334]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-5/igt@kms_psr2_sf@psr2-overlay-plane-update-sf-dmg-area.html

  * igt@kms_psr@fbc-psr-sprite-plane-move:
    - shard-bmg:          [SKIP][335] ([Intel XE#2234] / [Intel XE#2850]) -> [SKIP][336] ([Intel XE#8589])
   [335]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5887-b0bd9fb9e92aae2a653efa1d0407daa2aabe99d0/shard-bmg-7/igt@kms_psr@fbc-psr-sprite-plane-move.html
   [336]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-5/igt@kms_psr@fbc-psr-sprite-plane-move.html

  * igt@xe_exec_basic@multigpu-many-execqueues-many-vm-bindexecqueue-userptr-invalidate:
    - shard-bmg:          [SKIP][337] ([Intel XE#2322] / [Intel XE#7372]) -> [SKIP][338] ([Intel XE#8589])
   [337]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5887-b0bd9fb9e92aae2a653efa1d0407daa2aabe99d0/shard-bmg-10/igt@xe_exec_basic@multigpu-many-execqueues-many-vm-bindexecqueue-userptr-invalidate.html
   [338]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-5/igt@xe_exec_basic@multigpu-many-execqueues-many-vm-bindexecqueue-userptr-invalidate.html

  * igt@xe_exec_multi_queue@two-queues-preempt-mode-fault-userptr:
    - shard-bmg:          [SKIP][339] ([Intel XE#8364]) -> [SKIP][340] ([Intel XE#8589])
   [339]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5887-b0bd9fb9e92aae2a653efa1d0407daa2aabe99d0/shard-bmg-1/igt@xe_exec_multi_queue@two-queues-preempt-mode-fault-userptr.html
   [340]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-5/igt@xe_exec_multi_queue@two-queues-preempt-mode-fault-userptr.html

  * igt@xe_exec_threads@threads-multi-queue-hang-fd-userptr-invalidate-race:
    - shard-bmg:          [SKIP][341] ([Intel XE#8378]) -> [SKIP][342] ([Intel XE#8589]) +1 other test skip
   [341]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5887-b0bd9fb9e92aae2a653efa1d0407daa2aabe99d0/shard-bmg-7/igt@xe_exec_threads@threads-multi-queue-hang-fd-userptr-invalidate-race.html
   [342]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-5/igt@xe_exec_threads@threads-multi-queue-hang-fd-userptr-invalidate-race.html

  * igt@xe_pat@pat-index-xelpg:
    - shard-bmg:          [SKIP][343] ([Intel XE#2236] / [Intel XE#7590]) -> [SKIP][344] ([Intel XE#8589])
   [343]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5887-b0bd9fb9e92aae2a653efa1d0407daa2aabe99d0/shard-bmg-8/igt@xe_pat@pat-index-xelpg.html
   [344]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-5/igt@xe_pat@pat-index-xelpg.html

  * igt@xe_pat@pat-sw-hw-suspend:
    - shard-ptl:          [FAIL][345] ([Intel XE#7695]) -> [ABORT][346] ([Intel XE#9362])
   [345]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5887-b0bd9fb9e92aae2a653efa1d0407daa2aabe99d0/shard-ptl-7/igt@xe_pat@pat-sw-hw-suspend.html
   [346]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-ptl-2/igt@xe_pat@pat-sw-hw-suspend.html

  * igt@xe_peer2peer@write:
    - shard-bmg:          [SKIP][347] ([Intel XE#2427] / [Intel XE#6953] / [Intel XE#7326] / [Intel XE#7353]) -> [SKIP][348] ([Intel XE#6953] / [Intel XE#7326] / [Intel XE#7353])
   [347]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5887-b0bd9fb9e92aae2a653efa1d0407daa2aabe99d0/shard-bmg-1/igt@xe_peer2peer@write.html
   [348]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-5/igt@xe_peer2peer@write.html

  * igt@xe_pm@s4-multiple-execs:
    - shard-ptl:          [ABORT][349] ([Intel XE#9362]) -> [DMESG-WARN][350] ([Intel XE#7727])
   [349]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5887-b0bd9fb9e92aae2a653efa1d0407daa2aabe99d0/shard-ptl-5/igt@xe_pm@s4-multiple-execs.html
   [350]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-ptl-8/igt@xe_pm@s4-multiple-execs.html

  * igt@xe_pxp@display-black-pxp-fb:
    - shard-bmg:          [SKIP][351] ([Intel XE#4733] / [Intel XE#7417]) -> [SKIP][352] ([Intel XE#8589])
   [351]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5887-b0bd9fb9e92aae2a653efa1d0407daa2aabe99d0/shard-bmg-4/igt@xe_pxp@display-black-pxp-fb.html
   [352]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172710v4/shard-bmg-5/igt@xe_pxp@display-black-pxp-fb.html

  
  [Intel XE#1124]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1124
  [Intel XE#1178]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1178
  [Intel XE#1392]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1392
  [Intel XE#1397]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1397
  [Intel XE#1406]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1406
  [Intel XE#1420]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1420
  [Intel XE#1421]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1421
  [Intel XE#1424]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1424
  [Intel XE#1435]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1435
  [Intel XE#1489]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1489
  [Intel XE#1499]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1499
  [Intel XE#1503]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1503
  [Intel XE#1729]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1729
  [Intel XE#1745]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1745
  [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#2236]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2236
  [Intel XE#2252]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2252
  [Intel XE#2284]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2284
  [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#2316]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2316
  [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#2327]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2327
  [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#2413]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2413
  [Intel XE#2427]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2427
  [Intel XE#2457]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2457
  [Intel XE#2505]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2505
  [Intel XE#2669]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2669
  [Intel XE#2724]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2724
  [Intel XE#2838]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2838
  [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#2893]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2893
  [Intel XE#301]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/301
  [Intel XE#307]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/307
  [Intel XE#309]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/309
  [Intel XE#3149]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3149
  [Intel XE#330]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/330
  [Intel XE#3304]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3304
  [Intel XE#3307]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3307
  [Intel XE#3309]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3309
  [Intel XE#3374]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3374
  [Intel XE#3414]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3414
  [Intel XE#3433]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3433
  [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#373]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/373
  [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#4227]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4227
  [Intel XE#4329]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4329
  [Intel XE#4331]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4331
  [Intel XE#4422]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4422
  [Intel XE#4609]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4609
  [Intel XE#4733]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4733
  [Intel XE#5100]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5100
  [Intel XE#5575]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5575
  [Intel XE#5741]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5741
  [Intel XE#5764]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5764
  [Intel XE#5765]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5765
  [Intel XE#5800]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5800
  [Intel XE#5808]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5808
  [Intel XE#5812]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5812
  [Intel XE#5813]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5813
  [Intel XE#5821]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5821
  [Intel XE#5822]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5822
  [Intel XE#5823]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5823
  [Intel XE#5824]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5824
  [Intel XE#5828]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5828
  [Intel XE#5832]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5832
  [Intel XE#5835]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5835
  [Intel XE#584]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/584
  [Intel XE#5846]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5846
  [Intel XE#5848]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5848
  [Intel XE#5851]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5851
  [Intel XE#5857]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5857
  [Intel XE#5858]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5858
  [Intel XE#586]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/586
  [Intel XE#5867]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5867
  [Intel XE#5900]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5900
  [Intel XE#5901]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5901
  [Intel XE#5907]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5907
  [Intel XE#5946]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5946
  [Intel XE#5947]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5947
  [Intel XE#5950]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5950
  [Intel XE#5962]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5962
  [Intel XE#6019]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6019
  [Intel XE#607]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/607
  [Intel XE#6128]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6128
  [Intel XE#6144]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6144
  [Intel XE#6196]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6196
  [Intel XE#6259]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6259
  [Intel XE#6293]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6293
  [Intel XE#6312]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6312
  [Intel XE#6321]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6321
  [Intel XE#6376]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6376
  [Intel XE#6503]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6503
  [Intel XE#651]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/651
  [Intel XE#6540]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6540
  [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#6707]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6707
  [Intel XE#688]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/688
  [Intel XE#6886]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6886
  [Intel XE#6901]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6901
  [Intel XE#6912]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6912
  [Intel XE#6918]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6918
  [Intel XE#6925]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6925
  [Intel XE#6953]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6953
  [Intel XE#6964]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6964
  [Intel XE#6969]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6969
  [Intel XE#6974]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6974
  [Intel XE#7059]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7059
  [Intel XE#7061]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7061
  [Intel XE#7084]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7084
  [Intel XE#7085]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7085
  [Intel XE#7173]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7173
  [Intel XE#7174]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7174
  [Intel XE#7178]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7178
  [Intel XE#7179]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7179
  [Intel XE#7227]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7227
  [Intel XE#7271]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7271
  [Intel XE#7283]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7283
  [Intel XE#7294]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7294
  [Intel XE#7304]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7304
  [Intel XE#7322]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7322
  [Intel XE#7323]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7323
  [Intel XE#7326]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7326
  [Intel XE#7342]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7342
  [Intel XE#7343]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7343
  [Intel XE#7345]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7345
  [Intel XE#7349]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7349
  [Intel XE#7351]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7351
  [Intel XE#7353]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7353
  [Intel XE#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#7359]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7359
  [Intel XE#7361]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7361
  [Intel XE#7368]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7368
  [Intel XE#7369]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7369
  [Intel XE#7370]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7370
  [Intel XE#7372]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7372
  [Intel XE#7374]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7374
  [Intel XE#7375]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7375
  [Intel XE#7384]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7384
  [Intel XE#7385]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7385
  [Intel XE#7389]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7389
  [Intel XE#7397]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7397
  [Intel XE#7399]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7399
  [Intel XE#7405]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7405
  [Intel XE#7406]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7406
  [Intel XE#7408]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7408
  [Intel XE#7413]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7413
  [Intel XE#7417]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7417
  [Intel XE#7422]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7422
  [Intel XE#7424]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7424
  [Intel XE#7439]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7439
  [Intel XE#7442]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7442
  [Intel XE#7447]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7447
  [Intel XE#7449]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7449
  [Intel XE#7482]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7482
  [Intel XE#7484]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7484
  [Intel XE#7590]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7590
  [Intel XE#7599]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7599
  [Intel XE#7638]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7638
  [Intel XE#7642]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7642
  [Intel XE#7644]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7644
  [Intel XE#7679]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7679
  [Intel XE#7695]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7695
  [Intel XE#7724]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7724
  [Intel XE#7727]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7727
  [Intel XE#7774]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7774
  [Intel XE#7793]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7793
  [Intel XE#7865]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7865
  [Intel XE#7892]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7892
  [Intel XE#7905]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7905
  [Intel XE#7954]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7954
  [Intel XE#7980]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7980
  [Intel XE#8150]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8150
  [Intel XE#8265]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8265
  [Intel XE#8303]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8303
  [Intel XE#8348]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8348
  [Intel XE#8355]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8355
  [Intel XE#8364]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8364
  [Intel XE#8365]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8365
  [Intel XE#8369]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8369
  [Intel XE#8370]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8370
  [Intel XE#8374]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8374
  [Intel XE#8378]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8378
  [Intel XE#8391]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8391
  [Intel XE#8415]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8415
  [Intel XE#8432]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8432
  [Intel XE#8589]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8589
  [Intel XE#8680]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8680
  [Intel XE#8695]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8695
  [Intel XE#8710]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8710
  [Intel XE#8854]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8854
  [Intel XE#8868]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8868
  [Intel XE#8963]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8963
  [Intel XE#9094]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9094
  [Intel XE#9142]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9142
  [Intel XE#9144]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9144
  [Intel XE#9205]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9205
  [Intel XE#9219]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9219
  [Intel XE#9254]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9254
  [Intel XE#9271]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9271
  [Intel XE#9277]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9277
  [Intel XE#9312]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9312
  [Intel XE#9333]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9333
  [Intel XE#9362]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9362
  [Intel XE#9365]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9365
  [Intel XE#9375]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9375
  [Intel XE#944]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/944
  [Intel XE#9457]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9457
  [Intel XE#9465]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9465
  [Intel XE#9487]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9487
  [Intel XE#9491]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9491


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

  * IGT: IGT_9126 -> IGT_9127
  * Linux: xe-5887-b0bd9fb9e92aae2a653efa1d0407daa2aabe99d0 -> xe-pw-172710v4

  IGT_9126: 4b27241425f55826ff2df54686e8e709f5baf9dc @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  IGT_9127: 9127
  xe-5887-b0bd9fb9e92aae2a653efa1d0407daa2aabe99d0: b0bd9fb9e92aae2a653efa1d0407daa2aabe99d0
  xe-pw-172710v4: 172710v4

== Logs ==

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

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

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

* RE: [PATCH v4 3/6] drm/xe/xe_ras: Add support to query page offline queue and list
  2026-10-05 11:29   ` Upadhyay, Tejas
@ 2026-10-06  3:55     ` Upadhyay, Tejas
  2026-10-07  5:06       ` Tauro, Riana
  0 siblings, 1 reply; 18+ messages in thread
From: Upadhyay, Tejas @ 2026-10-06  3:55 UTC (permalink / raw)
  To: Upadhyay, Tejas, Tauro, Riana, intel-xe@lists.freedesktop.org
  Cc: Gupta, Anshuman, Vivi, Rodrigo,
	aravind.iddamsetty@linux.intel.com, Nilawar, Badal, Jadav, Raag,
	Koppuravuri, Ravi Kishore, Koujalagi,  Mallesh,
	Ghimiray, Himal Prasad



> -----Original Message-----
> From: Intel-xe <intel-xe-bounces@lists.freedesktop.org> On Behalf Of
> Upadhyay, Tejas
> Sent: 05 October 2026 16:59
> To: Tauro, Riana <riana.tauro@intel.com>; intel-xe@lists.freedesktop.org
> Cc: Gupta, Anshuman <anshuman.gupta@intel.com>; Vivi, Rodrigo
> <rodrigo.vivi@intel.com>; aravind.iddamsetty@linux.intel.com; Nilawar, Badal
> <badal.nilawar@intel.com>; Jadav, Raag <raag.jadav@intel.com>;
> Koppuravuri, Ravi Kishore <ravi.kishore.koppuravuri@intel.com>; Koujalagi,
> Mallesh <mallesh.koujalagi@intel.com>; Ghimiray, Himal Prasad
> <himal.prasad.ghimiray@intel.com>
> Subject: RE: [PATCH v4 3/6] drm/xe/xe_ras: Add support to query page offline
> queue and list
> 
> 
> 
> > -----Original Message-----
> > From: Tauro, Riana <riana.tauro@intel.com>
> > Sent: 05 October 2026 14:32
> > To: intel-xe@lists.freedesktop.org
> > Cc: Tauro, Riana <riana.tauro@intel.com>; Gupta, Anshuman
> > <anshuman.gupta@intel.com>; Vivi, Rodrigo <rodrigo.vivi@intel.com>;
> > aravind.iddamsetty@linux.intel.com; Nilawar, Badal
> > <badal.nilawar@intel.com>; Jadav, Raag <raag.jadav@intel.com>;
> > Koppuravuri, Ravi Kishore <ravi.kishore.koppuravuri@intel.com>;
> > Koujalagi, Mallesh <mallesh.koujalagi@intel.com>; Upadhyay, Tejas
> > <tejas.upadhyay@intel.com>; Ghimiray, Himal Prasad
> > <himal.prasad.ghimiray@intel.com>
> > Subject: [PATCH v4 3/6] drm/xe/xe_ras: Add support to query page
> > offline queue and list
> >
> > Add support to query page offline list and queue from firmware during
> > module load. The page offline list command retrieves pages that are
> > already offlined by the firmware. The page offline queue command
> > retrieves the pages pending to be offlined by the firmware.
> >
> > Cc: Tejas Upadhyay <tejas.upadhyay@intel.com>
> > Signed-off-by: Riana Tauro <riana.tauro@intel.com>
> > ---
> > v2: rebase
> >     store total pages once per response (Sashiko)
> >
> > v3: common function for offline and queue (Himal)
> >
> > v4: re-order list and queue (Sashiko, Himal)
> >     remove type
> > 	use size_t
> > 	add description and rename functions (Tejas)
> 
> LGTM,
> Reviewed-by: Tejas Upadhyay <tejas.upadhyay@intel.com>
> 
> Tejas
> > ---
> >  drivers/gpu/drm/xe/xe_ras.c                   | 87 +++++++++++++++++++
> >  drivers/gpu/drm/xe/xe_ras_types.h             | 35 ++++++++
> >  drivers/gpu/drm/xe/xe_sysctrl_mailbox_types.h |  4 +
> >  3 files changed, 126 insertions(+)
> >
> > diff --git a/drivers/gpu/drm/xe/xe_ras.c b/drivers/gpu/drm/xe/xe_ras.c
> > index 2ec310c29489..14fc3227483c 100644
> > --- a/drivers/gpu/drm/xe/xe_ras.c
> > +++ b/drivers/gpu/drm/xe/xe_ras.c
> > @@ -343,6 +343,89 @@ static bool ras_counter_is_valid(struct xe_device
> > *xe, struct xe_ras_error_class
> >  	return true;
> >  }
> >
> > +/*
> > + * Fetch and process offline list and queue from firmware via mailbox.
> > +@notify_fw controls
> > + * whether firmware is notified of the offline/remove action.
> > + */
> > +static void process_offline_pages(struct xe_device *xe, u32 cmd, void
> > +*req,
> > size_t req_size,
> > +				  void *resp, size_t resp_size,
> > +				  struct xe_ras_offline_common *common,
> > bool notify_fw) {
> > +	struct xe_sysctrl_mailbox_command command = {0};
> > +	struct xe_ras_offline_list_request *list_req;
> > +	u32 total_pages = 0, count = 0;
> > +	size_t rlen;
> > +	int ret, i;
> > +
> > +	list_req = req;
> > +
> > +	xe_sysctrl_create_command(&command, XE_SYSCTRL_GROUP_GFSP,
> > cmd, req, req_size, resp,
> > +				  resp_size);
> > +
> > +	do {
> > +		memset(resp, 0, resp_size);
> > +
> > +		if (list_req)
> > +			list_req->index = count;
> > +
> > +		ret = xe_sysctrl_send_command(&xe->sc, &command, &rlen);
> > +		if (ret) {
> > +			xe_log_err(xe, SYSCTRL, ret, "failed to get page offline
> > data, cmd=%#x\n",
> > +				   cmd);
> > +			return;
> > +		}
> > +
> > +		if (rlen != resp_size) {
> > +			xe_log_err(xe, SYSCTRL, -EINVAL,
> > +				   "unexpected page offline response length
> > %zu (expected %zu), cmd=%#x\n",
> > +				   rlen, resp_size, cmd);
> > +			return;
> > +		}
> > +
> > +		for (i = 0; i < common->pages_returned && i <
> > XE_RAS_NUM_PAGES; i++)
> > +			handle_page_offline(xe, common->page_addresses[i],
> > notify_fw);
> > +
> > +		count += common->pages_returned;
> > +		if (!common->pages_returned)
> > +			break;
> > +
> > +		if (!total_pages)
> > +			total_pages = common->total_pages;
> > +
> > +		if (count > total_pages) {
> > +			xe_log_err(xe, SYSCTRL, -EINVAL,
> > +				   "Pages returned exceed total pages %u,
> > returned %u, cmd=%#x\n",
> > +				   total_pages, count, cmd);
> > +			return;
> > +		}
> > +	} while (common->additional_data);
> > +}
> > +
> > +/*
> > + * Retrieve firmware queued pages from warm-retained SRAM during
> probe.
> > +Handle and soft-offline
> > + * each page as required.
> > + */
> > +static void get_offline_queue(struct xe_device *xe) {
> > +	struct xe_ras_offline_common response = {0};
> > +
> > +	process_offline_pages(xe, XE_SYSCTRL_CMD_GET_OFFLINE_QUEUE,
> > NULL, 0, &response,
> > +			      sizeof(response), &response, true); }
> > +
> > +/*
> > + * Retrieve permanently offlined pages from firmware's non-volatile
> > +storage during probe,
> > + * allowing the driver to soft-offline them before kernel allocations begin.
> > + */
> > +static void get_offline_list(struct xe_device *xe) {
> > +	struct xe_ras_offline_list_response response = {0};
> > +	struct xe_ras_offline_list_request request = {0};
> > +
> > +	process_offline_pages(xe, XE_SYSCTRL_CMD_GET_OFFLINE_LIST,
> > &request, sizeof(request),
> > +			      &response, sizeof(response), &response.common,
> > false); }
> > +
> >  static struct pci_dev *find_usp_dev(struct pci_dev *pdev)  {
> >  	struct pci_dev *vsp;
> > @@ -1067,6 +1150,10 @@ void xe_ras_init(struct xe_device *xe)
> >  	if (IS_ENABLED(CONFIG_PCIEAER))
> >  		ras_usp_aer_init(xe);
> >
> > +	/* Fetch the offline list before queue to avoid duplication */

How about suspend/resume, do list persist or again ras_init()? 

Tejas
> > +	get_offline_list(xe);
> > +	get_offline_queue(xe);
> > +
> >  	ret = devm_device_add_group(xe->drm.dev, &gpu_health_group);
> >  	if (ret)
> >  		xe_err(xe, "Failed to create GPU health sysfs, err=%d\n", ret);
> > diff --git a/drivers/gpu/drm/xe/xe_ras_types.h
> > b/drivers/gpu/drm/xe/xe_ras_types.h
> > index 1495a8636255..40224db38906 100644
> > --- a/drivers/gpu/drm/xe/xe_ras_types.h
> > +++ b/drivers/gpu/drm/xe/xe_ras_types.h
> > @@ -10,6 +10,7 @@
> >
> >  #define XE_RAS_NUM_COUNTERS			16
> >  #define XE_RAS_NUM_ERROR_ARR			3
> > +#define XE_RAS_NUM_PAGES			25
> >  /* Error bits in IEH global error status register */
> >  #define XE_RAS_SOC_IEH_PUNIT			BIT(1)
> >  /* Device memory error categories */
> > @@ -330,6 +331,40 @@ struct xe_ras_page_offline_response {
> >  	u32 reserved;
> >  } __packed;
> >
> > +/**
> > + * struct xe_ras_offline_common - Common structure for offline list
> > +and queue  */ struct xe_ras_offline_common {
> > +	/** @total_pages: Total number of queued pages */
> > +	u32 total_pages;
> > +	/** @pages_returned: Number of pages returned in this response */
> > +	u32 pages_returned;
> > +	/** @page_addresses: Array of page addresses (4KB aligned) */
> > +	u64 page_addresses[XE_RAS_NUM_PAGES];
> > +	/** @additional_data: Indicates if more data is available */
> > +	u8 additional_data;
> > +	/** @reserved: Reserved for future use */
> > +	u8 reserved[3];
> > +} __packed;
> > +
> > +/**
> > + * struct xe_ras_offline_list_request - Request for get offline list
> > +command  */ struct xe_ras_offline_list_request {
> > +	/** @index: Zero-based index into the offline page list */
> > +	u32 index;
> > +} __packed;
> > +
> > +/**
> > + * struct xe_ras_offline_list_response - Response from get offline
> > +list command  */ struct xe_ras_offline_list_response {
> > +	/** @max_entries: Total no of pages that can be stored in flash */
> > +	u32 max_entries;
> > +	/** @common: Common offline page information */
> > +	struct xe_ras_offline_common common; } __packed;
> > +
> >  /**
> >   * struct xe_ras_get_health_request - Request structure for obtaining
> > gpu health
> >   */
> > diff --git a/drivers/gpu/drm/xe/xe_sysctrl_mailbox_types.h
> > b/drivers/gpu/drm/xe/xe_sysctrl_mailbox_types.h
> > index 60d17ccc002c..e1bb64856f43 100644
> > --- a/drivers/gpu/drm/xe/xe_sysctrl_mailbox_types.h
> > +++ b/drivers/gpu/drm/xe/xe_sysctrl_mailbox_types.h
> > @@ -31,6 +31,8 @@ enum xe_sysctrl_group {
> >   * @XE_SYSCTRL_CMD_SET_THRESHOLD: Set error threshold
> >   * @XE_SYSCTRL_CMD_GET_PENDING_EVENT: Retrieve pending event
> >   * @XE_SYSCTRL_CMD_PAGE_OFFLINE: Instruct firmware to offline/remove
> > a page
> > + * @XE_SYSCTRL_CMD_GET_OFFLINE_LIST: Retrieve list of all offlined
> > + pages from flash
> > + * @XE_SYSCTRL_CMD_GET_OFFLINE_QUEUE: Retrieve list of offlined
> > queued
> > + pages from firmware
> >   * @XE_SYSCTRL_CMD_GET_HEALTH: Retrieve gpu health
> >   * @XE_SYSCTRL_CMD_SET_HEALTH: Set gpu health
> >   */
> > @@ -42,6 +44,8 @@ enum xe_sysctrl_gfsp_cmd {
> >  	XE_SYSCTRL_CMD_SET_THRESHOLD		= 0x06,
> >  	XE_SYSCTRL_CMD_GET_PENDING_EVENT	= 0x07,
> >  	XE_SYSCTRL_CMD_PAGE_OFFLINE		= 0x08,
> > +	XE_SYSCTRL_CMD_GET_OFFLINE_LIST		= 0x09,
> > +	XE_SYSCTRL_CMD_GET_OFFLINE_QUEUE	= 0x0A,
> >  	XE_SYSCTRL_CMD_GET_HEALTH		= 0x0B,
> >  	XE_SYSCTRL_CMD_SET_HEALTH		= 0x0C,
> >  };
> > --
> > 2.47.1


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

* Re: [PATCH v4 3/6] drm/xe/xe_ras: Add support to query page offline queue and list
  2026-10-06  3:55     ` Upadhyay, Tejas
@ 2026-10-07  5:06       ` Tauro, Riana
  0 siblings, 0 replies; 18+ messages in thread
From: Tauro, Riana @ 2026-10-07  5:06 UTC (permalink / raw)
  To: Upadhyay, Tejas, intel-xe@lists.freedesktop.org
  Cc: Gupta, Anshuman, Vivi, Rodrigo,
	aravind.iddamsetty@linux.intel.com, Nilawar, Badal, Jadav, Raag,
	Koppuravuri, Ravi Kishore, Koujalagi,  Mallesh,
	Ghimiray, Himal Prasad


On 06-10-2026 09:25, Upadhyay, Tejas wrote:
>
>> -----Original Message-----
>> From: Intel-xe <intel-xe-bounces@lists.freedesktop.org> On Behalf Of
>> Upadhyay, Tejas
>> Sent: 05 October 2026 16:59
>> To: Tauro, Riana <riana.tauro@intel.com>; intel-xe@lists.freedesktop.org
>> Cc: Gupta, Anshuman <anshuman.gupta@intel.com>; Vivi, Rodrigo
>> <rodrigo.vivi@intel.com>; aravind.iddamsetty@linux.intel.com; Nilawar, Badal
>> <badal.nilawar@intel.com>; Jadav, Raag <raag.jadav@intel.com>;
>> Koppuravuri, Ravi Kishore <ravi.kishore.koppuravuri@intel.com>; Koujalagi,
>> Mallesh <mallesh.koujalagi@intel.com>; Ghimiray, Himal Prasad
>> <himal.prasad.ghimiray@intel.com>
>> Subject: RE: [PATCH v4 3/6] drm/xe/xe_ras: Add support to query page offline
>> queue and list
>>
>>
>>
>>> -----Original Message-----
>>> From: Tauro, Riana <riana.tauro@intel.com>
>>> Sent: 05 October 2026 14:32
>>> To: intel-xe@lists.freedesktop.org
>>> Cc: Tauro, Riana <riana.tauro@intel.com>; Gupta, Anshuman
>>> <anshuman.gupta@intel.com>; Vivi, Rodrigo <rodrigo.vivi@intel.com>;
>>> aravind.iddamsetty@linux.intel.com; Nilawar, Badal
>>> <badal.nilawar@intel.com>; Jadav, Raag <raag.jadav@intel.com>;
>>> Koppuravuri, Ravi Kishore <ravi.kishore.koppuravuri@intel.com>;
>>> Koujalagi, Mallesh <mallesh.koujalagi@intel.com>; Upadhyay, Tejas
>>> <tejas.upadhyay@intel.com>; Ghimiray, Himal Prasad
>>> <himal.prasad.ghimiray@intel.com>
>>> Subject: [PATCH v4 3/6] drm/xe/xe_ras: Add support to query page
>>> offline queue and list
>>>
>>> Add support to query page offline list and queue from firmware during
>>> module load. The page offline list command retrieves pages that are
>>> already offlined by the firmware. The page offline queue command
>>> retrieves the pages pending to be offlined by the firmware.
>>>
>>> Cc: Tejas Upadhyay <tejas.upadhyay@intel.com>
>>> Signed-off-by: Riana Tauro <riana.tauro@intel.com>
>>> ---
>>> v2: rebase
>>>      store total pages once per response (Sashiko)
>>>
>>> v3: common function for offline and queue (Himal)
>>>
>>> v4: re-order list and queue (Sashiko, Himal)
>>>      remove type
>>> 	use size_t
>>> 	add description and rename functions (Tejas)
>> LGTM,
>> Reviewed-by: Tejas Upadhyay <tejas.upadhyay@intel.com>
>>
>> Tejas
>>> ---
>>>   drivers/gpu/drm/xe/xe_ras.c                   | 87 +++++++++++++++++++
>>>   drivers/gpu/drm/xe/xe_ras_types.h             | 35 ++++++++
>>>   drivers/gpu/drm/xe/xe_sysctrl_mailbox_types.h |  4 +
>>>   3 files changed, 126 insertions(+)
>>>
>>> diff --git a/drivers/gpu/drm/xe/xe_ras.c b/drivers/gpu/drm/xe/xe_ras.c
>>> index 2ec310c29489..14fc3227483c 100644
>>> --- a/drivers/gpu/drm/xe/xe_ras.c
>>> +++ b/drivers/gpu/drm/xe/xe_ras.c
>>> @@ -343,6 +343,89 @@ static bool ras_counter_is_valid(struct xe_device
>>> *xe, struct xe_ras_error_class
>>>   	return true;
>>>   }
>>>
>>> +/*
>>> + * Fetch and process offline list and queue from firmware via mailbox.
>>> +@notify_fw controls
>>> + * whether firmware is notified of the offline/remove action.
>>> + */
>>> +static void process_offline_pages(struct xe_device *xe, u32 cmd, void
>>> +*req,
>>> size_t req_size,
>>> +				  void *resp, size_t resp_size,
>>> +				  struct xe_ras_offline_common *common,
>>> bool notify_fw) {
>>> +	struct xe_sysctrl_mailbox_command command = {0};
>>> +	struct xe_ras_offline_list_request *list_req;
>>> +	u32 total_pages = 0, count = 0;
>>> +	size_t rlen;
>>> +	int ret, i;
>>> +
>>> +	list_req = req;
>>> +
>>> +	xe_sysctrl_create_command(&command, XE_SYSCTRL_GROUP_GFSP,
>>> cmd, req, req_size, resp,
>>> +				  resp_size);
>>> +
>>> +	do {
>>> +		memset(resp, 0, resp_size);
>>> +
>>> +		if (list_req)
>>> +			list_req->index = count;
>>> +
>>> +		ret = xe_sysctrl_send_command(&xe->sc, &command, &rlen);
>>> +		if (ret) {
>>> +			xe_log_err(xe, SYSCTRL, ret, "failed to get page offline
>>> data, cmd=%#x\n",
>>> +				   cmd);
>>> +			return;
>>> +		}
>>> +
>>> +		if (rlen != resp_size) {
>>> +			xe_log_err(xe, SYSCTRL, -EINVAL,
>>> +				   "unexpected page offline response length
>>> %zu (expected %zu), cmd=%#x\n",
>>> +				   rlen, resp_size, cmd);
>>> +			return;
>>> +		}
>>> +
>>> +		for (i = 0; i < common->pages_returned && i <
>>> XE_RAS_NUM_PAGES; i++)
>>> +			handle_page_offline(xe, common->page_addresses[i],
>>> notify_fw);
>>> +
>>> +		count += common->pages_returned;
>>> +		if (!common->pages_returned)
>>> +			break;
>>> +
>>> +		if (!total_pages)
>>> +			total_pages = common->total_pages;
>>> +
>>> +		if (count > total_pages) {
>>> +			xe_log_err(xe, SYSCTRL, -EINVAL,
>>> +				   "Pages returned exceed total pages %u,
>>> returned %u, cmd=%#x\n",
>>> +				   total_pages, count, cmd);
>>> +			return;
>>> +		}
>>> +	} while (common->additional_data);
>>> +}
>>> +
>>> +/*
>>> + * Retrieve firmware queued pages from warm-retained SRAM during
>> probe.
>>> +Handle and soft-offline
>>> + * each page as required.
>>> + */
>>> +static void get_offline_queue(struct xe_device *xe) {
>>> +	struct xe_ras_offline_common response = {0};
>>> +
>>> +	process_offline_pages(xe, XE_SYSCTRL_CMD_GET_OFFLINE_QUEUE,
>>> NULL, 0, &response,
>>> +			      sizeof(response), &response, true); }
>>> +
>>> +/*
>>> + * Retrieve permanently offlined pages from firmware's non-volatile
>>> +storage during probe,
>>> + * allowing the driver to soft-offline them before kernel allocations begin.
>>> + */
>>> +static void get_offline_list(struct xe_device *xe) {
>>> +	struct xe_ras_offline_list_response response = {0};
>>> +	struct xe_ras_offline_list_request request = {0};
>>> +
>>> +	process_offline_pages(xe, XE_SYSCTRL_CMD_GET_OFFLINE_LIST,
>>> &request, sizeof(request),
>>> +			      &response, sizeof(response), &response.common,
>>> false); }
>>> +
>>>   static struct pci_dev *find_usp_dev(struct pci_dev *pdev)  {
>>>   	struct pci_dev *vsp;
>>> @@ -1067,6 +1150,10 @@ void xe_ras_init(struct xe_device *xe)
>>>   	if (IS_ENABLED(CONFIG_PCIEAER))
>>>   		ras_usp_aer_init(xe);
>>>
>>> +	/* Fetch the offline list before queue to avoid duplication */
> How about suspend/resume, do list persist or again ras_init()?

The soft page offlined buffers would retain across suspend resume . So 
do we need to fetch
again from firmware?

The pages stored in flash will be retained.

Riana

>
> Tejas
>>> +	get_offline_list(xe);
>>> +	get_offline_queue(xe);
>>> +
>>>   	ret = devm_device_add_group(xe->drm.dev, &gpu_health_group);
>>>   	if (ret)
>>>   		xe_err(xe, "Failed to create GPU health sysfs, err=%d\n", ret);
>>> diff --git a/drivers/gpu/drm/xe/xe_ras_types.h
>>> b/drivers/gpu/drm/xe/xe_ras_types.h
>>> index 1495a8636255..40224db38906 100644
>>> --- a/drivers/gpu/drm/xe/xe_ras_types.h
>>> +++ b/drivers/gpu/drm/xe/xe_ras_types.h
>>> @@ -10,6 +10,7 @@
>>>
>>>   #define XE_RAS_NUM_COUNTERS			16
>>>   #define XE_RAS_NUM_ERROR_ARR			3
>>> +#define XE_RAS_NUM_PAGES			25
>>>   /* Error bits in IEH global error status register */
>>>   #define XE_RAS_SOC_IEH_PUNIT			BIT(1)
>>>   /* Device memory error categories */
>>> @@ -330,6 +331,40 @@ struct xe_ras_page_offline_response {
>>>   	u32 reserved;
>>>   } __packed;
>>>
>>> +/**
>>> + * struct xe_ras_offline_common - Common structure for offline list
>>> +and queue  */ struct xe_ras_offline_common {
>>> +	/** @total_pages: Total number of queued pages */
>>> +	u32 total_pages;
>>> +	/** @pages_returned: Number of pages returned in this response */
>>> +	u32 pages_returned;
>>> +	/** @page_addresses: Array of page addresses (4KB aligned) */
>>> +	u64 page_addresses[XE_RAS_NUM_PAGES];
>>> +	/** @additional_data: Indicates if more data is available */
>>> +	u8 additional_data;
>>> +	/** @reserved: Reserved for future use */
>>> +	u8 reserved[3];
>>> +} __packed;
>>> +
>>> +/**
>>> + * struct xe_ras_offline_list_request - Request for get offline list
>>> +command  */ struct xe_ras_offline_list_request {
>>> +	/** @index: Zero-based index into the offline page list */
>>> +	u32 index;
>>> +} __packed;
>>> +
>>> +/**
>>> + * struct xe_ras_offline_list_response - Response from get offline
>>> +list command  */ struct xe_ras_offline_list_response {
>>> +	/** @max_entries: Total no of pages that can be stored in flash */
>>> +	u32 max_entries;
>>> +	/** @common: Common offline page information */
>>> +	struct xe_ras_offline_common common; } __packed;
>>> +
>>>   /**
>>>    * struct xe_ras_get_health_request - Request structure for obtaining
>>> gpu health
>>>    */
>>> diff --git a/drivers/gpu/drm/xe/xe_sysctrl_mailbox_types.h
>>> b/drivers/gpu/drm/xe/xe_sysctrl_mailbox_types.h
>>> index 60d17ccc002c..e1bb64856f43 100644
>>> --- a/drivers/gpu/drm/xe/xe_sysctrl_mailbox_types.h
>>> +++ b/drivers/gpu/drm/xe/xe_sysctrl_mailbox_types.h
>>> @@ -31,6 +31,8 @@ enum xe_sysctrl_group {
>>>    * @XE_SYSCTRL_CMD_SET_THRESHOLD: Set error threshold
>>>    * @XE_SYSCTRL_CMD_GET_PENDING_EVENT: Retrieve pending event
>>>    * @XE_SYSCTRL_CMD_PAGE_OFFLINE: Instruct firmware to offline/remove
>>> a page
>>> + * @XE_SYSCTRL_CMD_GET_OFFLINE_LIST: Retrieve list of all offlined
>>> + pages from flash
>>> + * @XE_SYSCTRL_CMD_GET_OFFLINE_QUEUE: Retrieve list of offlined
>>> queued
>>> + pages from firmware
>>>    * @XE_SYSCTRL_CMD_GET_HEALTH: Retrieve gpu health
>>>    * @XE_SYSCTRL_CMD_SET_HEALTH: Set gpu health
>>>    */
>>> @@ -42,6 +44,8 @@ enum xe_sysctrl_gfsp_cmd {
>>>   	XE_SYSCTRL_CMD_SET_THRESHOLD		= 0x06,
>>>   	XE_SYSCTRL_CMD_GET_PENDING_EVENT	= 0x07,
>>>   	XE_SYSCTRL_CMD_PAGE_OFFLINE		= 0x08,
>>> +	XE_SYSCTRL_CMD_GET_OFFLINE_LIST		= 0x09,
>>> +	XE_SYSCTRL_CMD_GET_OFFLINE_QUEUE	= 0x0A,
>>>   	XE_SYSCTRL_CMD_GET_HEALTH		= 0x0B,
>>>   	XE_SYSCTRL_CMD_SET_HEALTH		= 0x0C,
>>>   };
>>> --
>>> 2.47.1

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

end of thread, other threads:[~2026-10-07  5:06 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-10-05  9:01 [PATCH v4 0/6] Add support to handle memory double-bit ecc errors Riana Tauro
2026-10-05  9:01 ` [PATCH v4 1/6] drm/xe: Separate drm-ras netlink data from device and firmware RAS state Riana Tauro
2026-10-05 11:02   ` Upadhyay, Tejas
2026-10-05  9:01 ` [PATCH v4 2/6] drm/xe/xe_ras: Handle page offline requests for device memory ecc errors Riana Tauro
2026-10-05  9:16   ` sashiko-bot
2026-10-05 13:28   ` Upadhyay, Tejas
2026-10-05  9:01 ` [PATCH v4 3/6] drm/xe/xe_ras: Add support to query page offline queue and list Riana Tauro
2026-10-05 11:29   ` Upadhyay, Tejas
2026-10-06  3:55     ` Upadhyay, Tejas
2026-10-07  5:06       ` Tauro, Riana
2026-10-05  9:02 ` [PATCH v4 4/6] drm/xe/xe_ras: Add function to get maximum pages firmware can store Riana Tauro
2026-10-05 11:32   ` Upadhyay, Tejas
2026-10-05  9:02 ` [PATCH v4 5/6] drm/xe/xe_ttm_vram: Report max_pages reported by firmware to userspace Riana Tauro
2026-10-05  9:02 ` [PATCH v4 6/6] drm/xe/xe_ras: Track offlined pages by firmware to avoid duplicates Riana Tauro
2026-10-05 11:38   ` Upadhyay, Tejas
2026-10-05 10:03 ` ✓ CI.KUnit: success for Add support to handle memory double-bit ecc errors (rev4) Patchwork
2026-10-05 10:56 ` ✓ Xe.CI.BAT: " Patchwork
2026-10-05 15:29 ` ✗ Xe.CI.FULL: failure " Patchwork

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