* [RFC PATCH v4 0/5] drm/xe: Structured RAS error logging infrastructure
@ 2026-06-30 11:55 Mallesh Koujalagi
2026-06-30 11:55 ` [RFC PATCH v4 1/5] drm/xe: Add SIG_IDs for RAS error logging Mallesh Koujalagi
` (8 more replies)
0 siblings, 9 replies; 21+ messages in thread
From: Mallesh Koujalagi @ 2026-06-30 11:55 UTC (permalink / raw)
To: intel-xe, rodrigo.vivi, matthew.brost, thomas.hellstrom
Cc: anshuman.gupta, badal.nilawar, vinay.belgaumkar,
aravind.iddamsetty, riana.tauro, karthik.poosa, sk.anirban,
raag.jadav, Mallesh Koujalagi
Today XE logs GPU errors with ad-hoc drm_err()/drm_warn() calls that
have no standard format, making it hard to identify what failed, where
on the GPU it happened, and how to correlate events.
This series adds a lightweight structured logging layer:
- Introduces xe_sig_ids.h (Signature IDs that name each error
class) and xe_ras_log.c (__xe_ras_log()), which emits every error in
a fixed format:
[xe-err] SIG_ID=<id> Severity=<sev> Location=<loc> Errno=<n>
Message="<msg>"
- Converts the first call site: the open-coded drm_err() in
xe_device_declare_wedged() is replaced with xe_ras_log_wedged(),
routing wedge events through the new common path.
v2:
- Rebase.
v3:
- Add HW SIG IDS details. (Riana)
- Refer "Tile%u" and "GT%u" strings. (Michal Wajdeczko)
- Remov xe_cper_severity_str(). (Michal Wajdeczko/Riana)
- Move __xe_ras_log() function to xe_ras_log.h. (Michal Wajdeczko)
- Make macro function properly.
- Remove *_FIRST and *_LAST macro. (Michal Wajdeczko/Riana)
- Add sig id documents. (Riana)
- Change macro function same prefix as the file.
- Handle __xe_ras_log() function with variable format.
- Update message in xe_ras_log_wedged().
v4:
- Change commit message.
- Update the document. (Riana)
- Move documents to xe_sig_ids.h
- Update Hardware error.
- Remove example in Hardware error SIG_ID.
- Make Fabric errors.
- Add kernel doc for SIG_IDS. (Michal Wajdeczko)
- Provide severity details
- Handle CONFIG_UEFI_CPER properly.
- Add CPER_SEV_RECOVERABLE in __xe_ras_log().
- Add xe_ras_log_runtime_fw() and xe_ras_log_device_fw() macros.
- Update commit message.
- Remove document. (Riana)
- Replace XE_RAS_WEDGED to xe_ras_log_wedged. (Dnyaneshwar)
Dnyaneshwar Bhadane (1):
drm/xe: Replace critical drm_err log with xe_ras_log_probe
Mallesh Koujalagi (4):
drm/xe: Add SIG_IDs for RAS error logging
drm/xe: Add RAS logging helpers
drm/xe: use xe_ras_log_wedged macro in xe_device_declare_wedged
drm/xe: Use RAS logging to report survivability mode
Documentation/gpu/xe/index.rst | 1 +
Documentation/gpu/xe/xe_sig_ids.rst | 8 ++
drivers/gpu/drm/xe/Makefile | 1 +
drivers/gpu/drm/xe/xe_device.c | 23 ++--
drivers/gpu/drm/xe/xe_hwmon.c | 4 +-
drivers/gpu/drm/xe/xe_irq.c | 5 +-
drivers/gpu/drm/xe/xe_mmio.c | 5 +-
drivers/gpu/drm/xe/xe_pat.c | 6 +-
drivers/gpu/drm/xe/xe_pci.c | 14 ++-
drivers/gpu/drm/xe/xe_pcode.c | 5 +-
drivers/gpu/drm/xe/xe_ras_log.c | 65 +++++++++++
drivers/gpu/drm/xe/xe_ras_log.h | 62 +++++++++++
drivers/gpu/drm/xe/xe_sig_ids.h | 124 +++++++++++++++++++++
drivers/gpu/drm/xe/xe_survivability_mode.c | 11 +-
drivers/gpu/drm/xe/xe_vram.c | 5 +-
15 files changed, 307 insertions(+), 32 deletions(-)
create mode 100644 Documentation/gpu/xe/xe_sig_ids.rst
create mode 100644 drivers/gpu/drm/xe/xe_ras_log.c
create mode 100644 drivers/gpu/drm/xe/xe_ras_log.h
create mode 100644 drivers/gpu/drm/xe/xe_sig_ids.h
--
2.34.1
^ permalink raw reply [flat|nested] 21+ messages in thread
* [RFC PATCH v4 1/5] drm/xe: Add SIG_IDs for RAS error logging
2026-06-30 11:55 [RFC PATCH v4 0/5] drm/xe: Structured RAS error logging infrastructure Mallesh Koujalagi
@ 2026-06-30 11:55 ` Mallesh Koujalagi
2026-06-30 14:25 ` Raag Jadav
2026-07-06 13:59 ` Michal Wajdeczko
2026-06-30 11:55 ` [RFC PATCH v4 2/5] drm/xe: Add RAS logging helpers Mallesh Koujalagi
` (7 subsequent siblings)
8 siblings, 2 replies; 21+ messages in thread
From: Mallesh Koujalagi @ 2026-06-30 11:55 UTC (permalink / raw)
To: intel-xe, rodrigo.vivi, matthew.brost, thomas.hellstrom
Cc: anshuman.gupta, badal.nilawar, vinay.belgaumkar,
aravind.iddamsetty, riana.tauro, karthik.poosa, sk.anirban,
raag.jadav, Mallesh Koujalagi
Add xe_sig_ids.h which defines a set of stable numeric labels
for Xe error categories, called SIG_IDs.
Each SIG_ID identifies which subsystem reported an error (e.g. probe,
wedged, GT TDR, firmware). It does not encode the full failure details,
those come from errno and the free-form message:
SIG_ID -> which area failed
errno -> what failed
message -> extra human-readable context
Also add a DOC: kernel-doc section covering design rationale, driver
severity labels (FATAL/RECOVERABLE), usage guidelines, and the
distinction between driver and hardware error paths.
Signed-off-by: Mallesh Koujalagi <mallesh.koujalagi@intel.com>
---
v3:
- Add HW SIG IDS details. (Riana)
v4:
- Change commit message.
- Update the document. (Riana)
- Move documents to xe_sig_ids.h
- Update Hardware error.
- Remove example in Hardware error SIG_ID.
- Make Fabric errors.
- Add kernel doc for SIG_IDS. (Michal Wajdeczko)
- Provide severity details.
---
Documentation/gpu/xe/index.rst | 1 +
Documentation/gpu/xe/xe_sig_ids.rst | 8 ++
drivers/gpu/drm/xe/xe_sig_ids.h | 124 ++++++++++++++++++++++++++++
3 files changed, 133 insertions(+)
create mode 100644 Documentation/gpu/xe/xe_sig_ids.rst
create mode 100644 drivers/gpu/drm/xe/xe_sig_ids.h
diff --git a/Documentation/gpu/xe/index.rst b/Documentation/gpu/xe/index.rst
index 665c0e93601c..557877837348 100644
--- a/Documentation/gpu/xe/index.rst
+++ b/Documentation/gpu/xe/index.rst
@@ -35,3 +35,4 @@ The display, or :ref:`drm-kms`, support for drm/xe is provided by
xe-drm-usage-stats.rst
xe_configfs
xe_gt_stats
+ xe_sig_ids
diff --git a/Documentation/gpu/xe/xe_sig_ids.rst b/Documentation/gpu/xe/xe_sig_ids.rst
new file mode 100644
index 000000000000..0e65d577927b
--- /dev/null
+++ b/Documentation/gpu/xe/xe_sig_ids.rst
@@ -0,0 +1,8 @@
+.. SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+
+===============
+SIG_ID Overview
+===============
+
+.. kernel-doc:: drivers/gpu/drm/xe/xe_sig_ids.h
+ :doc: SIG_ID Overview
diff --git a/drivers/gpu/drm/xe/xe_sig_ids.h b/drivers/gpu/drm/xe/xe_sig_ids.h
new file mode 100644
index 000000000000..57e4037fd7d4
--- /dev/null
+++ b/drivers/gpu/drm/xe/xe_sig_ids.h
@@ -0,0 +1,124 @@
+/* SPDX-License-Identifier: MIT */
+/*
+ * Copyright © 2026 Intel Corporation
+ */
+
+#ifndef _XE_SIG_IDS_H_
+#define _XE_SIG_IDS_H_
+
+/**
+ * DOC: SIG_ID Overview
+ *
+ * Signature ID (SIG_ID) is a stable numeric identifier (u16) for a defined
+ * Xe error category - it answers: "which subsystem reported the error?"
+ *
+ * SIG_ID format
+ * =============
+ *
+ * Xe error events are emitted as a single structured line using stable fields.
+ * Driver events use:
+ *
+ * [xe-err] SIG_ID = <u16> Severity = <CPER_SEV_*>
+ * Location = <device|tile/gt> Errno = <neg_errno>
+ * Message = "<free-form text>"
+ *
+ * Hardware-originated RAS events use the same overall format, but typically
+ * omit Errno and Message and instead report the hardware-derived location /
+ * error-class information.
+ *
+ * Important
+ * =========
+ *
+ * SIG_ID identifies the reporting subsystem/category only. It does not encode
+ * the detailed failure reason. The detailed reason is carried separately by::
+ *
+ * SIG_ID -> which subsystem/category failed
+ * Severity -> how serious the event is
+ * Errno -> what failed (driver events)
+ * Message -> human-readable context
+ *
+ * Example (driver event)
+ * ======================
+ *
+ * [xe-err] SIG_ID = 6 Severity = CPER_SEV_RECOVERABLE
+ * Location = tile0/gt0 Errno = -5
+ * Message = "Engine 'rcs0' hung; TDR triggered, engine reset succeeded"
+ *
+ * In the example
+ * ==============
+ *
+ * SIG_ID 6 = XE GT/TDR category
+ * RECOVERABLE = workload impacted, device still operational
+ * -5 = Linux errno (-EIO)
+ * Message = extra context for triage
+ *
+ * Why SIG_ID exists?
+ * ==================
+ *
+ * The goal is to replace inconsistent ad-hoc error strings with a small
+ * set of stable, structured error events that are easier for operators
+ * and tools to understand. Each driver event carries a fixed SIG_ID with
+ * a severity determined by its error category, and structured output that
+ * can be consumed consistently across driver or firmware versions. It
+ * reduces guesswork during triage and allows machine parsing of important
+ * fault events.
+ *
+ * Driver severity labels
+ * ======================
+ *
+ * FATAL means the device cannot continue operation (e.g. probe failure,
+ * device wedged). RECOVERABLE means the driver encountered an error but
+ * may continue with degraded functionality.
+ *
+ * When to use the xe_ras_log helpers (see xe_ras_log.h)
+ * =====================================================
+ *
+ * Use them only for defined Xe error events that belong to the published
+ * error categories. These helpers are intended for important fault paths
+ * such as probe failure, wedged device, survivability mode, firmware
+ * failures, GT hang/TDR/reset, memory faults, and runtime IO/bus faults.
+ * The selected macro fixes the SIG_ID and severity for that category.
+ *
+ * Do not use xe_ras_log helpers for all logs
+ * ==========================================
+ *
+ * These helpers are not a replacement for normal drm_info(), drm_dbg(),
+ * tracing, or one-off diagnostics. They are for stable, structured error
+ * reporting only. Using them for ordinary logs would dilute the error
+ * stream and make operator-facing fault reporting noisy and less useful.
+ *
+ * Hardware errors
+ * ===============
+ *
+ * Hardware errors are hardware-reported RAS events and map to the
+ * XE_SIG_HW_* identifiers. They are reported through the hardware error
+ * path (e.g. CPER records), not through the driver xe_ras_log helpers.
+ *
+ * Unlike driver xe_ras_log helpers, hardware events do not have one fixed
+ * severity per SIG_ID. For example, a fabric event (XE_SIG_HW_FABRIC) may
+ * be reported as CPER_SEV_CORRECTED, CPER_SEV_FATAL, CPER_SEV_RECOVERABLE,
+ * or CPER_SEV_INFORMATIONAL, depending on what the hardware reported.
+ */
+
+/*
+ * Driver errors: SIG_IDs
+ */
+#define XE_SIG_PROBE 1 /* FATAL: probe failed */
+#define XE_SIG_WEDGED 2 /* FATAL: device wedged */
+#define XE_SIG_SURVIVABILITY 3 /* FATAL: survivability mode */
+#define XE_SIG_RUNTIME_FW 4 /* RECOVERABLE: GuC/HuC/UC/GSC */
+#define XE_SIG_DEVICE_FW 5 /* RECOVERABLE: PCODE/CSC/System controller */
+#define XE_SIG_GT_TDR 6 /* RECOVERABLE: engine hang / reset */
+#define XE_SIG_MEM_FAULT 7 /* RECOVERABLE: VM bind, page fault, GTT */
+#define XE_SIG_IO_BUS 8 /* RECOVERABLE: runtime PCIe/IOMMU/MMIO */
+
+/*
+ * Hardware errors: SIG_IDs
+ */
+#define XE_SIG_HW_DEVICE_MEMORY 9 /* Device memory errors */
+#define XE_SIG_HW_CORE_COMPUTE 10 /* Compute/shader core errors */
+#define XE_SIG_HW_PCIE 11 /* PCIe interface errors */
+#define XE_SIG_HW_FABRIC 12 /* Fabric errors */
+#define XE_SIG_HW_SOC_INTERNAL 13 /* SoC-internal errors */
+
+#endif /* _XE_SIG_IDS_H_ */
--
2.34.1
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [RFC PATCH v4 2/5] drm/xe: Add RAS logging helpers
2026-06-30 11:55 [RFC PATCH v4 0/5] drm/xe: Structured RAS error logging infrastructure Mallesh Koujalagi
2026-06-30 11:55 ` [RFC PATCH v4 1/5] drm/xe: Add SIG_IDs for RAS error logging Mallesh Koujalagi
@ 2026-06-30 11:55 ` Mallesh Koujalagi
2026-07-03 11:15 ` Tauro, Riana
2026-06-30 11:55 ` [RFC PATCH v4 3/5] drm/xe: use xe_ras_log_wedged macro in xe_device_declare_wedged Mallesh Koujalagi
` (6 subsequent siblings)
8 siblings, 1 reply; 21+ messages in thread
From: Mallesh Koujalagi @ 2026-06-30 11:55 UTC (permalink / raw)
To: intel-xe, rodrigo.vivi, matthew.brost, thomas.hellstrom
Cc: anshuman.gupta, badal.nilawar, vinay.belgaumkar,
aravind.iddamsetty, riana.tauro, karthik.poosa, sk.anirban,
raag.jadav, Mallesh Koujalagi
Add xe_ras_log_(*) macros to report Xe driver errors in a
consistent, structured format.
Exposes one macro per error category (probe, wedged,
survivability, firmware, GT TDR, memory fault, IO bus). Each macro
hard-codes the correct SIG_ID and severity for that category, so
callers only need to pass the device or GT handle, errno, and message.
Signed-off-by: Mallesh Koujalagi <mallesh.koujalagi@intel.com>
---
v3:
- Refer "Tile%u" and "GT%u" strings. (Michal Wajdeczko)
- Remov xe_cper_severity_str(). (Michal Wajdeczko/Riana)
- Declare __xe_ras_log() function to xe_ras_log.h. (Michal Wajdeczko)
- Make macro function properly.
- Remove *_FIRST and *_LAST macro. (Michal Wajdeczko/Riana)
- Add sig id documents. (Riana)
- Change macro function same prefix as the file.
- Handle __xe_ras_log() function with variable format.
v4:
- Handle CONFIG_UEFI_CPER properly.
- Add CPER_SEV_RECOVERABLE in __xe_ras_log().
- Add xe_ras_log_runtime_fw() and xe_ras_log_device_fw() macros.
- Update commit message.
- Remove document. (Riana)
---
drivers/gpu/drm/xe/Makefile | 1 +
drivers/gpu/drm/xe/xe_ras_log.c | 65 +++++++++++++++++++++++++++++++++
drivers/gpu/drm/xe/xe_ras_log.h | 62 +++++++++++++++++++++++++++++++
3 files changed, 128 insertions(+)
create mode 100644 drivers/gpu/drm/xe/xe_ras_log.c
create mode 100644 drivers/gpu/drm/xe/xe_ras_log.h
diff --git a/drivers/gpu/drm/xe/Makefile b/drivers/gpu/drm/xe/Makefile
index e5a04253e73b..cac19c21be08 100644
--- a/drivers/gpu/drm/xe/Makefile
+++ b/drivers/gpu/drm/xe/Makefile
@@ -114,6 +114,7 @@ xe-y += xe_bb.o \
xe_query.o \
xe_range_fence.o \
xe_ras.o \
+ xe_ras_log.o \
xe_reg_sr.o \
xe_reg_whitelist.o \
xe_ring_ops.o \
diff --git a/drivers/gpu/drm/xe/xe_ras_log.c b/drivers/gpu/drm/xe/xe_ras_log.c
new file mode 100644
index 000000000000..928fa4f45cdc
--- /dev/null
+++ b/drivers/gpu/drm/xe/xe_ras_log.c
@@ -0,0 +1,65 @@
+// SPDX-License-Identifier: MIT
+/*
+ * Copyright © 2026 Intel Corporation
+ */
+
+#include <drm/drm_print.h>
+
+#include "xe_device.h"
+#include "xe_gt.h"
+#include "xe_ras_log.h"
+
+/**
+ * __xe_ras_log - Emit a structured RAS log entry
+ * @xe: xe device instance
+ * @gt: GT instance where the error occurred, or NULL if device-wide
+ * @sig_id: signature ID from xe_sig_ids.h identifying the error class
+ * @cper_sev: CPER severity (one of CPER_SEV_FATAL, CPER_SEV_RECOVERABLE, etc.)
+ * @errno_val: negative errno describing the error condition
+ * @fmt: printf-style format string
+ * @...: format arguments
+ *
+ * Formats the message and emits a kernel log line via drm_err() for fatal
+ * events or drm_warn() for all others. CPER record generation and hex dump
+ * are planned as follow-ups.
+ *
+ * Format:
+ * [xe-err] SIG_ID = <id> Severity = <sev> Location = <loc> Errno = <n> Message = "<msg>"
+ */
+__printf(6, 7)
+void __xe_ras_log(struct xe_device *xe, struct xe_gt *gt,
+ u16 sig_id, u32 cper_sev, int errno_val,
+ const char *fmt, ...)
+{
+ char loc[32];
+ struct va_format vaf;
+ va_list ap;
+
+ if (gt)
+ snprintf(loc, sizeof(loc), "tile%u/gt%u",
+ gt->tile->id, gt->info.id);
+ else
+ snprintf(loc, sizeof(loc), "device");
+
+ va_start(ap, fmt);
+ vaf.fmt = fmt;
+ vaf.va = ≈
+
+ if (cper_sev == CPER_SEV_FATAL || cper_sev == CPER_SEV_RECOVERABLE)
+ drm_err(&xe->drm,
+ "[xe-err] SIG_ID = %u Severity = %s Location = %s Errno = %d Message = \"%pV\"",
+ sig_id,
+ IS_ENABLED(CONFIG_UEFI_CPER) ? cper_severity_str(cper_sev) : "unknown",
+ loc, errno_val, &vaf);
+ else
+ drm_warn(&xe->drm,
+ "[xe-err] SIG_ID = %u Severity = %s Location = %s Errno = %d Message = \"%pV\"",
+ sig_id,
+ IS_ENABLED(CONFIG_UEFI_CPER) ? cper_severity_str(cper_sev) : "unknown",
+ loc, errno_val, &vaf);
+
+ va_end(ap);
+
+ /* TODO: Add CPER record driver handler */
+ /* TODO: Add RAS dump cper hex handler */
+}
diff --git a/drivers/gpu/drm/xe/xe_ras_log.h b/drivers/gpu/drm/xe/xe_ras_log.h
new file mode 100644
index 000000000000..3f94e6747e86
--- /dev/null
+++ b/drivers/gpu/drm/xe/xe_ras_log.h
@@ -0,0 +1,62 @@
+/* SPDX-License-Identifier: MIT */
+/*
+ * Copyright © 2026 Intel Corporation
+ */
+
+#ifndef _XE_RAS_LOG_H_
+#define _XE_RAS_LOG_H_
+
+#include <linux/cper.h>
+
+#include "xe_sig_ids.h"
+
+struct xe_device;
+struct xe_gt;
+
+/*
+ * Common backend helper
+ */
+__printf(6, 7)
+void __xe_ras_log(struct xe_device *xe, struct xe_gt *gt,
+ u16 sig_id, u32 cper_sev, int errno_val,
+ const char *fmt, ...);
+
+/*
+ * Driver error reporting macros
+ */
+
+/* FATAL */
+#define xe_ras_log_probe(xe, errno, fmt, ...) \
+ __xe_ras_log((xe), NULL, XE_SIG_PROBE, CPER_SEV_FATAL, \
+ (errno), fmt, ##__VA_ARGS__)
+
+#define xe_ras_log_wedged(xe, errno, fmt, ...) \
+ __xe_ras_log((xe), NULL, XE_SIG_WEDGED, CPER_SEV_FATAL, \
+ (errno), fmt, ##__VA_ARGS__)
+
+#define xe_ras_log_survivability(xe, errno, fmt, ...) \
+ __xe_ras_log((xe), NULL, XE_SIG_SURVIVABILITY, CPER_SEV_FATAL, \
+ (errno), fmt, ##__VA_ARGS__)
+
+/* RECOVERABLE */
+#define xe_ras_log_runtime_fw(xe, gt, errno, fmt, ...) \
+ __xe_ras_log((xe), (gt), XE_SIG_RUNTIME_FW, CPER_SEV_RECOVERABLE, \
+ (errno), fmt, ##__VA_ARGS__)
+
+#define xe_ras_log_device_fw(xe, gt, errno, fmt, ...) \
+ __xe_ras_log((xe), (gt), XE_SIG_DEVICE_FW, CPER_SEV_RECOVERABLE, \
+ (errno), fmt, ##__VA_ARGS__)
+
+#define xe_ras_log_gt_tdr(xe, gt, errno, fmt, ...) \
+ __xe_ras_log((xe), (gt), XE_SIG_GT_TDR, CPER_SEV_RECOVERABLE, \
+ (errno), fmt, ##__VA_ARGS__)
+
+#define xe_ras_log_mem_fault(xe, gt, errno, fmt, ...) \
+ __xe_ras_log((xe), (gt), XE_SIG_MEM_FAULT, CPER_SEV_RECOVERABLE, \
+ (errno), fmt, ##__VA_ARGS__)
+
+#define xe_ras_log_io_bus(xe, errno, fmt, ...) \
+ __xe_ras_log((xe), NULL, XE_SIG_IO_BUS, CPER_SEV_RECOVERABLE, \
+ (errno), fmt, ##__VA_ARGS__)
+
+#endif /* _XE_RAS_LOG_H_ */
--
2.34.1
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [RFC PATCH v4 3/5] drm/xe: use xe_ras_log_wedged macro in xe_device_declare_wedged
2026-06-30 11:55 [RFC PATCH v4 0/5] drm/xe: Structured RAS error logging infrastructure Mallesh Koujalagi
2026-06-30 11:55 ` [RFC PATCH v4 1/5] drm/xe: Add SIG_IDs for RAS error logging Mallesh Koujalagi
2026-06-30 11:55 ` [RFC PATCH v4 2/5] drm/xe: Add RAS logging helpers Mallesh Koujalagi
@ 2026-06-30 11:55 ` Mallesh Koujalagi
2026-07-06 8:36 ` Tauro, Riana
2026-07-06 14:32 ` Michal Wajdeczko
2026-06-30 11:55 ` [RFC PATCH v4 4/5] drm/xe: Use RAS logging to report survivability mode Mallesh Koujalagi
` (5 subsequent siblings)
8 siblings, 2 replies; 21+ messages in thread
From: Mallesh Koujalagi @ 2026-06-30 11:55 UTC (permalink / raw)
To: intel-xe, rodrigo.vivi, matthew.brost, thomas.hellstrom
Cc: anshuman.gupta, badal.nilawar, vinay.belgaumkar,
aravind.iddamsetty, riana.tauro, karthik.poosa, sk.anirban,
raag.jadav, Mallesh Koujalagi
Replace the open-coded drm_err() call with xe_ras_log_wedged()
macro so that wedge events are reported through the unified
RAS/SIG logging path with a consistent format, CPER severity,
and errno.
Signed-off-by: Mallesh Koujalagi <mallesh.koujalagi@intel.com>
---
v2:
- Rebase.
v3:
- Update message in xe_ras_log_wedged().
v4:
- Replace XE_RAS_WEDGED to xe_ras_log_wedged. (Dnyaneshwar)
---
drivers/gpu/drm/xe/xe_device.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/xe_device.c
index b6e49309a99f..7538ac7c7dfb 100644
--- a/drivers/gpu/drm/xe/xe_device.c
+++ b/drivers/gpu/drm/xe/xe_device.c
@@ -62,6 +62,7 @@
#include "xe_pxp.h"
#include "xe_query.h"
#include "xe_ras.h"
+#include "xe_ras_log.h"
#include "xe_shrinker.h"
#include "xe_soc_remapper.h"
#include "xe_survivability_mode.h"
@@ -1428,12 +1429,12 @@ void xe_device_declare_wedged(struct xe_device *xe)
if (!atomic_xchg(&xe->wedged.flag, 1)) {
xe->needs_flr_on_fini = true;
xe_pm_runtime_get_noresume(xe);
- drm_err(&xe->drm,
- "CRITICAL: Xe has declared device %s as wedged.\n"
- "IOCTLs and executions are blocked.\n"
- "For recovery procedure, refer to https://docs.kernel.org/gpu/drm-uapi.html#device-wedging\n"
- "Please file a _new_ bug report at https://gitlab.freedesktop.org/drm/xe/kernel/issues/new\n",
- dev_name(xe->drm.dev));
+ xe_ras_log_wedged(xe, -EIO,
+ "CRITICAL: Xe has declared device %s as wedged.\n"
+ "IOCTLs and executions are blocked.\n"
+ "For recovery procedure, refer to https://docs.kernel.org/gpu/drm-uapi.html#device-wedging\n"
+ "Please file a _new_ bug report at https://gitlab.freedesktop.org/drm/xe/kernel/issues/new\n",
+ dev_name(xe->drm.dev));
}
for_each_gt(gt, xe, id)
--
2.34.1
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [RFC PATCH v4 4/5] drm/xe: Use RAS logging to report survivability mode
2026-06-30 11:55 [RFC PATCH v4 0/5] drm/xe: Structured RAS error logging infrastructure Mallesh Koujalagi
` (2 preceding siblings ...)
2026-06-30 11:55 ` [RFC PATCH v4 3/5] drm/xe: use xe_ras_log_wedged macro in xe_device_declare_wedged Mallesh Koujalagi
@ 2026-06-30 11:55 ` Mallesh Koujalagi
2026-07-06 8:41 ` Tauro, Riana
2026-06-30 11:55 ` [RFC PATCH v4 5/5] drm/xe: Replace critical drm_err log with xe_ras_log_probe Mallesh Koujalagi
` (4 subsequent siblings)
8 siblings, 1 reply; 21+ messages in thread
From: Mallesh Koujalagi @ 2026-06-30 11:55 UTC (permalink / raw)
To: intel-xe, rodrigo.vivi, matthew.brost, thomas.hellstrom
Cc: anshuman.gupta, badal.nilawar, vinay.belgaumkar,
aravind.iddamsetty, riana.tauro, karthik.poosa, sk.anirban,
raag.jadav, Mallesh Koujalagi
Replace dev_err() calls with xe_ras_log_survivability() so
survivability events are reported through the structured RAS logging
path with a consistent format.
Signed-off-by: Mallesh Koujalagi <mallesh.koujalagi@intel.com>
---
drivers/gpu/drm/xe/xe_survivability_mode.c | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_survivability_mode.c b/drivers/gpu/drm/xe/xe_survivability_mode.c
index 427afd144f3a..a58d46f67677 100644
--- a/drivers/gpu/drm/xe/xe_survivability_mode.c
+++ b/drivers/gpu/drm/xe/xe_survivability_mode.c
@@ -17,6 +17,7 @@
#include "xe_mmio.h"
#include "xe_nvm.h"
#include "xe_pcode_api.h"
+#include "xe_ras_log.h"
#include "xe_vsec.h"
/**
@@ -307,7 +308,6 @@ static int create_survivability_sysfs(struct pci_dev *pdev)
static int enable_boot_survivability_mode(struct pci_dev *pdev)
{
- struct device *dev = &pdev->dev;
struct xe_device *xe = pdev_to_xe_device(pdev);
struct xe_survivability *survivability = &xe->survivability;
int ret = 0;
@@ -333,12 +333,12 @@ static int enable_boot_survivability_mode(struct pci_dev *pdev)
if (ret)
goto err;
- dev_err(dev, "In Survivability Mode\n");
+ xe_ras_log_survivability(xe, 0, "Boot Survivability Mode enabled\n");
return 0;
err:
- dev_err(dev, "Failed to enable Survivability Mode\n");
+ xe_ras_log_survivability(xe, ret, "Failed to enable Boot Survivability Mode\n");
survivability->mode = false;
return ret;
}
@@ -413,11 +413,12 @@ void xe_survivability_mode_runtime_enable(struct xe_device *xe)
dev_err(&pdev->dev, "Failed to create survivability sysfs\n");
survivability->type = XE_SURVIVABILITY_TYPE_RUNTIME;
- dev_err(&pdev->dev, "Runtime Survivability mode enabled\n");
+ xe_ras_log_survivability(xe, -EIO,
+ "Runtime Survivability Mode enabled, firmware flash required.\n"
+ "Please refer to the userspace documentation for more details!\n");
xe_device_set_wedged_method(xe, DRM_WEDGE_RECOVERY_VENDOR);
xe_device_declare_wedged(xe);
- dev_err(&pdev->dev, "Firmware flash required, Please refer to the userspace documentation for more details!\n");
}
/**
--
2.34.1
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [RFC PATCH v4 5/5] drm/xe: Replace critical drm_err log with xe_ras_log_probe
2026-06-30 11:55 [RFC PATCH v4 0/5] drm/xe: Structured RAS error logging infrastructure Mallesh Koujalagi
` (3 preceding siblings ...)
2026-06-30 11:55 ` [RFC PATCH v4 4/5] drm/xe: Use RAS logging to report survivability mode Mallesh Koujalagi
@ 2026-06-30 11:55 ` Mallesh Koujalagi
2026-07-06 15:38 ` Michal Wajdeczko
2026-06-30 13:12 ` ✗ CI.checkpatch: warning for drm/xe: Structured RAS error logging infrastructure (rev4) Patchwork
` (3 subsequent siblings)
8 siblings, 1 reply; 21+ messages in thread
From: Mallesh Koujalagi @ 2026-06-30 11:55 UTC (permalink / raw)
To: intel-xe, rodrigo.vivi, matthew.brost, thomas.hellstrom
Cc: anshuman.gupta, badal.nilawar, vinay.belgaumkar,
aravind.iddamsetty, riana.tauro, karthik.poosa, sk.anirban,
raag.jadav, Dnyaneshwar Bhadane, Mallesh Koujalagi
From: Dnyaneshwar Bhadane <dnyaneshwar.bhadane@intel.com>
Replace the drm_err() call with xe_ras_log_probe
starting from the xe_pci_probe considering the only considering the
init paths for the object such mmio, pcode, pci etc. are fall under
the xe_ras_log_probe() category.
Signed-off-by: Dnyaneshwar Bhadane <dnyaneshwar.bhadane@intel.com>
Signed-off-by: Mallesh Koujalagi <mallesh.koujalagi@intel.com>
---
drivers/gpu/drm/xe/xe_device.c | 10 +++++-----
drivers/gpu/drm/xe/xe_hwmon.c | 4 +++-
drivers/gpu/drm/xe/xe_irq.c | 5 +++--
drivers/gpu/drm/xe/xe_mmio.c | 5 +++--
drivers/gpu/drm/xe/xe_pat.c | 6 ++++--
drivers/gpu/drm/xe/xe_pci.c | 14 +++++++++-----
drivers/gpu/drm/xe/xe_pcode.c | 5 +++--
drivers/gpu/drm/xe/xe_vram.c | 5 +++--
8 files changed, 33 insertions(+), 21 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/xe_device.c
index 7538ac7c7dfb..208dc6e378ba 100644
--- a/drivers/gpu/drm/xe/xe_device.c
+++ b/drivers/gpu/drm/xe/xe_device.c
@@ -589,7 +589,7 @@ int xe_device_init_early(struct xe_device *xe)
* Cleanup done in xe_device_destroy via
* drmm_add_action_or_reset register above
*/
- drm_err(&xe->drm, "Failed to allocate xe workqueues\n");
+ xe_ras_log_probe(xe, -ENOMEM, "Failed to allocate xe workqueues\n");
return -ENOMEM;
}
@@ -649,7 +649,7 @@ static void __xe_driver_flr(struct xe_device *xe)
*/
ret = xe_mmio_wait32(mmio, GU_CNTL, DRIVERFLR, 0, flr_timeout, NULL, false);
if (ret) {
- drm_err(&xe->drm, "Driver-FLR-prepare wait for ready failed! %d\n", ret);
+ xe_ras_log_probe(xe, -ret, "Driver-FLR-prepare wait for ready failed! %d\n", ret);
return;
}
xe_mmio_write32(mmio, GU_DEBUG, DRIVERFLR_STATUS);
@@ -660,7 +660,7 @@ static void __xe_driver_flr(struct xe_device *xe)
/* Wait for hardware teardown to complete */
ret = xe_mmio_wait32(mmio, GU_CNTL, DRIVERFLR, 0, flr_timeout, NULL, false);
if (ret) {
- drm_err(&xe->drm, "Driver-FLR-teardown wait completion failed! %d\n", ret);
+ xe_ras_log_probe(xe, -ret, "Driver-FLR-teardown wait completion failed! %d\n", ret);
return;
}
@@ -668,7 +668,7 @@ static void __xe_driver_flr(struct xe_device *xe)
ret = xe_mmio_wait32(mmio, GU_DEBUG, DRIVERFLR_STATUS, DRIVERFLR_STATUS,
flr_timeout, NULL, false);
if (ret) {
- drm_err(&xe->drm, "Driver-FLR-reinit wait completion failed! %d\n", ret);
+ xe_ras_log_probe(xe, -ret, "Driver-FLR-reinit wait completion failed! %d\n", ret);
return;
}
@@ -720,7 +720,7 @@ static int xe_set_dma_info(struct xe_device *xe)
return 0;
mask_err:
- drm_err(&xe->drm, "Can't set DMA mask/consistent mask (%d)\n", err);
+ xe_ras_log_probe(xe, -err, "Can't set DMA mask/consistent mask (%d)\n", err);
return err;
}
diff --git a/drivers/gpu/drm/xe/xe_hwmon.c b/drivers/gpu/drm/xe/xe_hwmon.c
index de3f2aeffc3f..efca13c2a897 100644
--- a/drivers/gpu/drm/xe/xe_hwmon.c
+++ b/drivers/gpu/drm/xe/xe_hwmon.c
@@ -18,6 +18,7 @@
#include "xe_mmio.h"
#include "xe_pcode.h"
#include "xe_pcode_api.h"
+#include "xe_ras_log.h"
#include "xe_sriov.h"
#include "xe_pm.h"
#include "xe_vsec.h"
@@ -1575,7 +1576,8 @@ int xe_hwmon_register(struct xe_device *xe)
&hwmon_chip_info,
hwmon_groups);
if (IS_ERR(hwmon->hwmon_dev)) {
- drm_err(&xe->drm, "Failed to register xe hwmon (%pe)\n", hwmon->hwmon_dev);
+ xe_ras_log_probe(xe, -PTR_ERR(hwmon->hwmon_dev),
+ "Failed to register xe hwmon (%pe)\n", hwmon->hwmon_dev);
xe->hwmon = NULL;
return PTR_ERR(hwmon->hwmon_dev);
}
diff --git a/drivers/gpu/drm/xe/xe_irq.c b/drivers/gpu/drm/xe/xe_irq.c
index 9e49e2241da4..8453681956c4 100644
--- a/drivers/gpu/drm/xe/xe_irq.c
+++ b/drivers/gpu/drm/xe/xe_irq.c
@@ -23,6 +23,7 @@
#include "xe_mert.h"
#include "xe_mmio.h"
#include "xe_pxp.h"
+#include "xe_ras_log.h"
#include "xe_sriov.h"
#include "xe_sysctrl.h"
#include "xe_tile.h"
@@ -822,7 +823,7 @@ int xe_irq_install(struct xe_device *xe)
err = pci_alloc_irq_vectors(pdev, nvec, nvec, irq_flags);
if (err < 0) {
- drm_err(&xe->drm, "Failed to allocate IRQ vectors: %d\n", err);
+ xe_ras_log_probe(xe, -EINVAL, "Failed to allocate IRQ vectors: %d\n", err);
return err;
}
@@ -891,7 +892,7 @@ static int xe_irq_msix_init(struct xe_device *xe)
return 0; /* MSI */
if (nvec < 0) {
- drm_err(&xe->drm, "Failed getting MSI-X vectors count: %d\n", nvec);
+ xe_ras_log_probe(xe, -nvec, "Failed getting MSI-X vectors count: %d\n", nvec);
return nvec;
}
diff --git a/drivers/gpu/drm/xe/xe_mmio.c b/drivers/gpu/drm/xe/xe_mmio.c
index 7fa18dfcb5a2..d10ba886dcda 100644
--- a/drivers/gpu/drm/xe/xe_mmio.c
+++ b/drivers/gpu/drm/xe/xe_mmio.c
@@ -16,6 +16,7 @@
#include "xe_device.h"
#include "xe_gt_sriov_vf.h"
#include "xe_printk.h"
+#include "xe_ras_log.h"
#include "xe_sriov.h"
#include "xe_tile_printk.h"
#include "xe_trace.h"
@@ -105,13 +106,13 @@ int xe_mmio_probe_early(struct xe_device *xe)
xe->mmio.regs = pcim_iomap(pdev, GTTMMADR_BAR, 0);
if (!xe->mmio.regs) {
- xe_err(xe, "Failed to map GTTMMADR_BAR\n");
+ xe_ras_log_probe(xe, -EIO, "Failed to map GTTMMADR_BAR\n");
return -EIO;
}
xe->mmio.size = pci_resource_len(pdev, GTTMMADR_BAR);
if (xe->mmio.size < SZ_16M) {
- xe_err(xe, "GTTMMADR_BAR is too small: %zu\n", xe->mmio.size);
+ xe_ras_log_probe(xe, -EIO, "GTTMMADR_BAR is too small: %zu\n", xe->mmio.size);
return -EIO;
}
diff --git a/drivers/gpu/drm/xe/xe_pat.c b/drivers/gpu/drm/xe/xe_pat.c
index fad5b5a5ed4a..49d2e81090d3 100644
--- a/drivers/gpu/drm/xe/xe_pat.c
+++ b/drivers/gpu/drm/xe/xe_pat.c
@@ -17,6 +17,7 @@
#include "xe_gt.h"
#include "xe_gt_mcr.h"
#include "xe_mmio.h"
+#include "xe_ras_log.h"
#include "xe_sriov.h"
#include "xe_wa.h"
@@ -650,8 +651,9 @@ void xe_pat_init_early(struct xe_device *xe)
* raise an error rather than trying to silently inherit the
* most recent platform's behavior.
*/
- drm_err(&xe->drm, "Missing PAT table for platform with graphics version %d.%02d!\n",
- GRAPHICS_VER(xe), GRAPHICS_VERx100(xe) % 100);
+ xe_ras_log_probe(xe, -ENODEV,
+ "Missing PAT table for platform with graphics version %d.%02d!\n",
+ GRAPHICS_VER(xe), GRAPHICS_VERx100(xe) % 100);
}
xe_assert(xe, xe->pat.ops->dump);
diff --git a/drivers/gpu/drm/xe/xe_pci.c b/drivers/gpu/drm/xe/xe_pci.c
index 9c249454cc95..58442d9eb8a0 100644
--- a/drivers/gpu/drm/xe/xe_pci.c
+++ b/drivers/gpu/drm/xe/xe_pci.c
@@ -31,6 +31,7 @@
#include "xe_pci_types.h"
#include "xe_pm.h"
#include "xe_printk.h"
+#include "xe_ras_log.h"
#include "xe_sriov.h"
#include "xe_step.h"
#include "xe_survivability_mode.h"
@@ -708,8 +709,9 @@ static int handle_gmdid(struct xe_device *xe,
*graphics_ip = find_graphics_ip(ver);
if (!*graphics_ip) {
- drm_err(&xe->drm, "Hardware reports unknown graphics version %u.%02u\n",
- ver / 100, ver % 100);
+ xe_ras_log_probe(xe, -ENODEV,
+ "Hardware reports unknown graphics version %u.%02u\n",
+ ver / 100, ver % 100);
}
ret = read_gmdid(xe, GMDID_MEDIA, &ver, media_revid);
@@ -722,8 +724,9 @@ static int handle_gmdid(struct xe_device *xe,
*media_ip = find_media_ip(ver);
if (!*media_ip) {
- drm_err(&xe->drm, "Hardware reports unknown media version %u.%02u\n",
- ver / 100, ver % 100);
+ xe_ras_log_probe(xe, -ENODEV,
+ "Hardware reports unknown media version %u.%02u\n",
+ ver / 100, ver % 100);
}
return 0;
@@ -1022,7 +1025,8 @@ static int xe_info_init(struct xe_device *xe,
* required for VRAM management).
*/
if (!tile->primary_gt) {
- drm_err(&xe->drm, "Cannot probe device with without a primary GT\n");
+ xe_ras_log_probe(xe, -ENODEV,
+ "Cannot probe device with without a primary GT\n");
return -ENODEV;
}
diff --git a/drivers/gpu/drm/xe/xe_pcode.c b/drivers/gpu/drm/xe/xe_pcode.c
index 866986694d9c..046336c7b378 100644
--- a/drivers/gpu/drm/xe/xe_pcode.c
+++ b/drivers/gpu/drm/xe/xe_pcode.c
@@ -15,6 +15,7 @@
#include "xe_device.h"
#include "xe_mmio.h"
#include "xe_pcode_api.h"
+#include "xe_ras_log.h"
/**
* DOC: PCODE
@@ -316,8 +317,8 @@ int xe_pcode_ready(struct xe_device *xe, bool locked)
mutex_unlock(&tile->pcode.lock);
if (ret)
- drm_err(&xe->drm,
- "PCODE initialization timedout after: 3 min\n");
+ xe_ras_log_probe(xe, -ETIMEDOUT,
+ "PCODE initialization timedout after: 3 min\n");
return ret;
}
diff --git a/drivers/gpu/drm/xe/xe_vram.c b/drivers/gpu/drm/xe/xe_vram.c
index 23eb7edbdd57..e81d92239934 100644
--- a/drivers/gpu/drm/xe/xe_vram.c
+++ b/drivers/gpu/drm/xe/xe_vram.c
@@ -18,6 +18,7 @@
#include "xe_force_wake.h"
#include "xe_gt_mcr.h"
#include "xe_mmio.h"
+#include "xe_ras_log.h"
#include "xe_sriov.h"
#include "xe_tile_sriov_vf.h"
#include "xe_ttm_vram_mgr.h"
@@ -43,7 +44,7 @@ static int determine_lmem_bar_size(struct xe_device *xe, struct xe_vram_region *
struct pci_dev *pdev = to_pci_dev(xe->drm.dev);
if (!resource_is_valid(pdev, LMEM_BAR)) {
- drm_err(&xe->drm, "pci resource is not valid\n");
+ xe_ras_log_probe(xe, -ENXIO, "pci resource is not valid\n");
return -ENXIO;
}
@@ -237,7 +238,7 @@ static int vram_region_init(struct xe_device *xe, struct xe_vram_region *vram,
vram->io_size = min_t(u64, usable_size, remain_io_size);
if (!vram->io_size) {
- drm_err(&xe->drm, "Tile without any CPU visible VRAM. Aborting.\n");
+ xe_ras_log_probe(xe, -ENODEV, "Tile without any CPU visible VRAM. Aborting.\n");
return -ENODEV;
}
--
2.34.1
^ permalink raw reply related [flat|nested] 21+ messages in thread
* ✗ CI.checkpatch: warning for drm/xe: Structured RAS error logging infrastructure (rev4)
2026-06-30 11:55 [RFC PATCH v4 0/5] drm/xe: Structured RAS error logging infrastructure Mallesh Koujalagi
` (4 preceding siblings ...)
2026-06-30 11:55 ` [RFC PATCH v4 5/5] drm/xe: Replace critical drm_err log with xe_ras_log_probe Mallesh Koujalagi
@ 2026-06-30 13:12 ` Patchwork
2026-06-30 13:13 ` ✓ CI.KUnit: success " Patchwork
` (2 subsequent siblings)
8 siblings, 0 replies; 21+ messages in thread
From: Patchwork @ 2026-06-30 13:12 UTC (permalink / raw)
To: Mallesh Koujalagi; +Cc: intel-xe
== Series Details ==
Series: drm/xe: Structured RAS error logging infrastructure (rev4)
URL : https://patchwork.freedesktop.org/series/168333/
State : warning
== Summary ==
+ KERNEL=/kernel
+ git clone https://gitlab.freedesktop.org/drm/maintainer-tools mt
Cloning into 'mt'...
warning: redirecting to https://gitlab.freedesktop.org/drm/maintainer-tools.git/
+ git -C mt rev-list -n1 origin/master
061140b9bc586ae7f40abc1249c97e1cc72d1b9d
+ cd /kernel
+ git config --global --add safe.directory /kernel
+ git log -n1
commit 9a95d12e48286e2810e870556a2d6fd26d502613
Author: Dnyaneshwar Bhadane <dnyaneshwar.bhadane@intel.com>
Date: Tue Jun 30 17:25:09 2026 +0530
drm/xe: Replace critical drm_err log with xe_ras_log_probe
Replace the drm_err() call with xe_ras_log_probe
starting from the xe_pci_probe considering the only considering the
init paths for the object such mmio, pcode, pci etc. are fall under
the xe_ras_log_probe() category.
Signed-off-by: Dnyaneshwar Bhadane <dnyaneshwar.bhadane@intel.com>
Signed-off-by: Mallesh Koujalagi <mallesh.koujalagi@intel.com>
+ /mt/dim checkpatch 7f7679b1095483510f6a8404e46154c706576577 drm-intel
47d2b3043d6a drm/xe: Add SIG_IDs for RAS error logging
-:33: WARNING:FILE_PATH_CHANGES: added, moved or deleted file(s), does MAINTAINERS need updating?
#33:
new file mode 100644
total: 0 errors, 1 warnings, 0 checks, 136 lines checked
13b8611e7c69 drm/xe: Add RAS logging helpers
-:29: WARNING:FILE_PATH_CHANGES: added, moved or deleted file(s), does MAINTAINERS need updating?
#29:
new file mode 100644
total: 0 errors, 1 warnings, 0 checks, 134 lines checked
0f8670a3d869 drm/xe: use xe_ras_log_wedged macro in xe_device_declare_wedged
6f241091c83f drm/xe: Use RAS logging to report survivability mode
9a95d12e4828 drm/xe: Replace critical drm_err log with xe_ras_log_probe
^ permalink raw reply [flat|nested] 21+ messages in thread
* ✓ CI.KUnit: success for drm/xe: Structured RAS error logging infrastructure (rev4)
2026-06-30 11:55 [RFC PATCH v4 0/5] drm/xe: Structured RAS error logging infrastructure Mallesh Koujalagi
` (5 preceding siblings ...)
2026-06-30 13:12 ` ✗ CI.checkpatch: warning for drm/xe: Structured RAS error logging infrastructure (rev4) Patchwork
@ 2026-06-30 13:13 ` Patchwork
2026-06-30 14:05 ` ✓ Xe.CI.BAT: " Patchwork
2026-07-01 4:42 ` ✗ Xe.CI.FULL: failure " Patchwork
8 siblings, 0 replies; 21+ messages in thread
From: Patchwork @ 2026-06-30 13:13 UTC (permalink / raw)
To: Mallesh Koujalagi; +Cc: intel-xe
== Series Details ==
Series: drm/xe: Structured RAS error logging infrastructure (rev4)
URL : https://patchwork.freedesktop.org/series/168333/
State : success
== Summary ==
+ trap cleanup EXIT
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/xe/.kunitconfig
[13:12:21] Configuring KUnit Kernel ...
Generating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[13:12:25] 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
../drivers/gpu/drm/xe/xe_pt.c:1418:13: warning: ‘xe_pt_svm_userptr_notifier_lock’ defined but not used [-Wunused-function]
1418 | static void xe_pt_svm_userptr_notifier_lock(struct xe_vm *vm)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[13:12:57] Starting KUnit Kernel (1/1)...
[13:12:57] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[13:12:57] ================== guc_buf (11 subtests) ===================
[13:12:57] [PASSED] test_smallest
[13:12:57] [PASSED] test_largest
[13:12:57] [PASSED] test_granular
[13:12:57] [PASSED] test_unique
[13:12:57] [PASSED] test_overlap
[13:12:57] [PASSED] test_reusable
[13:12:57] [PASSED] test_too_big
[13:12:57] [PASSED] test_flush
[13:12:57] [PASSED] test_lookup
[13:12:57] [PASSED] test_data
[13:12:57] [PASSED] test_class
[13:12:57] ===================== [PASSED] guc_buf =====================
[13:12:57] =================== guc_dbm (7 subtests) ===================
[13:12:57] [PASSED] test_empty
[13:12:57] [PASSED] test_default
[13:12:57] ======================== test_size ========================
[13:12:57] [PASSED] 4
[13:12:57] [PASSED] 8
[13:12:57] [PASSED] 32
[13:12:57] [PASSED] 256
[13:12:57] ==================== [PASSED] test_size ====================
[13:12:57] ======================= test_reuse ========================
[13:12:57] [PASSED] 4
[13:12:57] [PASSED] 8
[13:12:57] [PASSED] 32
[13:12:57] [PASSED] 256
[13:12:57] =================== [PASSED] test_reuse ====================
[13:12:57] =================== test_range_overlap ====================
[13:12:57] [PASSED] 4
[13:12:57] [PASSED] 8
[13:12:57] [PASSED] 32
[13:12:57] [PASSED] 256
[13:12:57] =============== [PASSED] test_range_overlap ================
[13:12:57] =================== test_range_compact ====================
[13:12:57] [PASSED] 4
[13:12:57] [PASSED] 8
[13:12:57] [PASSED] 32
[13:12:57] [PASSED] 256
[13:12:57] =============== [PASSED] test_range_compact ================
[13:12:57] ==================== test_range_spare =====================
[13:12:57] [PASSED] 4
[13:12:57] [PASSED] 8
[13:12:57] [PASSED] 32
[13:12:57] [PASSED] 256
[13:12:57] ================ [PASSED] test_range_spare =================
[13:12:57] ===================== [PASSED] guc_dbm =====================
[13:12:57] =================== guc_idm (6 subtests) ===================
[13:12:57] [PASSED] bad_init
[13:12:57] [PASSED] no_init
[13:12:57] [PASSED] init_fini
[13:12:57] [PASSED] check_used
[13:12:57] [PASSED] check_quota
[13:12:57] [PASSED] check_all
[13:12:57] ===================== [PASSED] guc_idm =====================
[13:12:57] ================== no_relay (3 subtests) ===================
[13:12:57] [PASSED] xe_drops_guc2pf_if_not_ready
[13:12:57] [PASSED] xe_drops_guc2vf_if_not_ready
[13:12:57] [PASSED] xe_rejects_send_if_not_ready
[13:12:57] ==================== [PASSED] no_relay =====================
[13:12:57] ================== pf_relay (14 subtests) ==================
[13:12:57] [PASSED] pf_rejects_guc2pf_too_short
[13:12:57] [PASSED] pf_rejects_guc2pf_too_long
[13:12:57] [PASSED] pf_rejects_guc2pf_no_payload
[13:12:57] [PASSED] pf_fails_no_payload
[13:12:57] [PASSED] pf_fails_bad_origin
[13:12:57] [PASSED] pf_fails_bad_type
[13:12:57] [PASSED] pf_txn_reports_error
[13:12:57] [PASSED] pf_txn_sends_pf2guc
[13:12:57] [PASSED] pf_sends_pf2guc
[13:12:57] [SKIPPED] pf_loopback_nop (requires CONFIG_DRM_XE_DEBUG_SRIOV)
[13:12:57] [SKIPPED] pf_loopback_echo (requires CONFIG_DRM_XE_DEBUG_SRIOV)
[13:12:57] [SKIPPED] pf_loopback_fail (requires CONFIG_DRM_XE_DEBUG_SRIOV)
[13:12:57] [SKIPPED] pf_loopback_busy (requires CONFIG_DRM_XE_DEBUG_SRIOV)
[13:12:57] [SKIPPED] pf_loopback_retry (requires CONFIG_DRM_XE_DEBUG_SRIOV)
[13:12:57] ==================== [PASSED] pf_relay =====================
[13:12:57] ================== vf_relay (3 subtests) ===================
[13:12:57] [PASSED] vf_rejects_guc2vf_too_short
[13:12:57] [PASSED] vf_rejects_guc2vf_too_long
[13:12:57] [PASSED] vf_rejects_guc2vf_no_payload
[13:12:57] ==================== [PASSED] vf_relay =====================
[13:12:57] ================ pf_gt_config (9 subtests) =================
[13:12:57] [PASSED] fair_contexts_1vf
[13:12:57] [PASSED] fair_doorbells_1vf
[13:12:57] [PASSED] fair_ggtt_1vf
[13:12:57] ====================== fair_vram_1vf ======================
[13:12:57] [PASSED] 3.50 GiB
[13:12:57] [PASSED] 11.5 GiB
[13:12:57] [PASSED] 15.5 GiB
[13:12:57] [PASSED] 31.5 GiB
[13:12:57] [PASSED] 63.5 GiB
[13:12:57] [PASSED] 1.91 GiB
[13:12:57] ================== [PASSED] fair_vram_1vf ==================
[13:12:57] ================ fair_vram_1vf_admin_only =================
[13:12:57] [PASSED] 3.50 GiB
[13:12:57] [PASSED] 11.5 GiB
[13:12:57] [PASSED] 15.5 GiB
[13:12:57] [PASSED] 31.5 GiB
[13:12:57] [PASSED] 63.5 GiB
[13:12:57] [PASSED] 1.91 GiB
[13:12:57] ============ [PASSED] fair_vram_1vf_admin_only =============
[13:12:57] ====================== fair_contexts ======================
[13:12:57] [PASSED] 1 VF
[13:12:57] [PASSED] 2 VFs
[13:12:57] [PASSED] 3 VFs
[13:12:57] [PASSED] 4 VFs
[13:12:57] [PASSED] 5 VFs
[13:12:57] [PASSED] 6 VFs
[13:12:57] [PASSED] 7 VFs
[13:12:57] [PASSED] 8 VFs
[13:12:57] [PASSED] 9 VFs
[13:12:57] [PASSED] 10 VFs
[13:12:57] [PASSED] 11 VFs
[13:12:57] [PASSED] 12 VFs
[13:12:57] [PASSED] 13 VFs
[13:12:57] [PASSED] 14 VFs
[13:12:57] [PASSED] 15 VFs
[13:12:57] [PASSED] 16 VFs
[13:12:57] [PASSED] 17 VFs
[13:12:57] [PASSED] 18 VFs
[13:12:57] [PASSED] 19 VFs
[13:12:57] [PASSED] 20 VFs
[13:12:57] [PASSED] 21 VFs
[13:12:57] [PASSED] 22 VFs
[13:12:57] [PASSED] 23 VFs
[13:12:57] [PASSED] 24 VFs
[13:12:57] [PASSED] 25 VFs
[13:12:57] [PASSED] 26 VFs
[13:12:57] [PASSED] 27 VFs
[13:12:57] [PASSED] 28 VFs
[13:12:57] [PASSED] 29 VFs
[13:12:57] [PASSED] 30 VFs
[13:12:57] [PASSED] 31 VFs
[13:12:57] [PASSED] 32 VFs
[13:12:57] [PASSED] 33 VFs
[13:12:57] [PASSED] 34 VFs
[13:12:57] [PASSED] 35 VFs
[13:12:57] [PASSED] 36 VFs
[13:12:57] [PASSED] 37 VFs
[13:12:57] [PASSED] 38 VFs
[13:12:57] [PASSED] 39 VFs
[13:12:57] [PASSED] 40 VFs
[13:12:57] [PASSED] 41 VFs
[13:12:57] [PASSED] 42 VFs
[13:12:57] [PASSED] 43 VFs
[13:12:57] [PASSED] 44 VFs
[13:12:57] [PASSED] 45 VFs
[13:12:57] [PASSED] 46 VFs
[13:12:57] [PASSED] 47 VFs
[13:12:57] [PASSED] 48 VFs
[13:12:57] [PASSED] 49 VFs
[13:12:57] [PASSED] 50 VFs
[13:12:57] [PASSED] 51 VFs
[13:12:57] [PASSED] 52 VFs
[13:12:57] [PASSED] 53 VFs
[13:12:57] [PASSED] 54 VFs
[13:12:57] [PASSED] 55 VFs
[13:12:57] [PASSED] 56 VFs
[13:12:57] [PASSED] 57 VFs
[13:12:57] [PASSED] 58 VFs
[13:12:57] [PASSED] 59 VFs
[13:12:57] [PASSED] 60 VFs
[13:12:57] [PASSED] 61 VFs
[13:12:57] [PASSED] 62 VFs
[13:12:57] [PASSED] 63 VFs
[13:12:57] ================== [PASSED] fair_contexts ==================
[13:12:57] ===================== fair_doorbells ======================
[13:12:57] [PASSED] 1 VF
[13:12:57] [PASSED] 2 VFs
[13:12:57] [PASSED] 3 VFs
[13:12:57] [PASSED] 4 VFs
[13:12:57] [PASSED] 5 VFs
[13:12:57] [PASSED] 6 VFs
[13:12:57] [PASSED] 7 VFs
[13:12:57] [PASSED] 8 VFs
[13:12:57] [PASSED] 9 VFs
[13:12:57] [PASSED] 10 VFs
[13:12:57] [PASSED] 11 VFs
[13:12:57] [PASSED] 12 VFs
[13:12:57] [PASSED] 13 VFs
[13:12:57] [PASSED] 14 VFs
[13:12:57] [PASSED] 15 VFs
[13:12:57] [PASSED] 16 VFs
[13:12:57] [PASSED] 17 VFs
[13:12:57] [PASSED] 18 VFs
[13:12:57] [PASSED] 19 VFs
[13:12:57] [PASSED] 20 VFs
[13:12:57] [PASSED] 21 VFs
[13:12:57] [PASSED] 22 VFs
[13:12:57] [PASSED] 23 VFs
[13:12:57] [PASSED] 24 VFs
[13:12:57] [PASSED] 25 VFs
[13:12:57] [PASSED] 26 VFs
[13:12:57] [PASSED] 27 VFs
[13:12:57] [PASSED] 28 VFs
[13:12:57] [PASSED] 29 VFs
[13:12:57] [PASSED] 30 VFs
[13:12:57] [PASSED] 31 VFs
[13:12:57] [PASSED] 32 VFs
[13:12:57] [PASSED] 33 VFs
[13:12:57] [PASSED] 34 VFs
[13:12:57] [PASSED] 35 VFs
[13:12:57] [PASSED] 36 VFs
[13:12:57] [PASSED] 37 VFs
[13:12:57] [PASSED] 38 VFs
[13:12:57] [PASSED] 39 VFs
[13:12:57] [PASSED] 40 VFs
[13:12:57] [PASSED] 41 VFs
[13:12:57] [PASSED] 42 VFs
[13:12:57] [PASSED] 43 VFs
[13:12:57] [PASSED] 44 VFs
[13:12:57] [PASSED] 45 VFs
[13:12:57] [PASSED] 46 VFs
[13:12:57] [PASSED] 47 VFs
[13:12:57] [PASSED] 48 VFs
[13:12:57] [PASSED] 49 VFs
[13:12:57] [PASSED] 50 VFs
[13:12:57] [PASSED] 51 VFs
[13:12:57] [PASSED] 52 VFs
[13:12:57] [PASSED] 53 VFs
[13:12:57] [PASSED] 54 VFs
[13:12:57] [PASSED] 55 VFs
[13:12:57] [PASSED] 56 VFs
[13:12:57] [PASSED] 57 VFs
[13:12:57] [PASSED] 58 VFs
[13:12:57] [PASSED] 59 VFs
[13:12:57] [PASSED] 60 VFs
[13:12:57] [PASSED] 61 VFs
[13:12:57] [PASSED] 62 VFs
[13:12:57] [PASSED] 63 VFs
[13:12:57] ================= [PASSED] fair_doorbells ==================
[13:12:57] ======================== fair_ggtt ========================
[13:12:57] [PASSED] 1 VF
[13:12:57] [PASSED] 2 VFs
[13:12:57] [PASSED] 3 VFs
[13:12:57] [PASSED] 4 VFs
[13:12:57] [PASSED] 5 VFs
[13:12:57] [PASSED] 6 VFs
[13:12:57] [PASSED] 7 VFs
[13:12:57] [PASSED] 8 VFs
[13:12:57] [PASSED] 9 VFs
[13:12:57] [PASSED] 10 VFs
[13:12:57] [PASSED] 11 VFs
[13:12:57] [PASSED] 12 VFs
[13:12:57] [PASSED] 13 VFs
[13:12:57] [PASSED] 14 VFs
[13:12:57] [PASSED] 15 VFs
[13:12:57] [PASSED] 16 VFs
[13:12:57] [PASSED] 17 VFs
[13:12:57] [PASSED] 18 VFs
[13:12:57] [PASSED] 19 VFs
[13:12:57] [PASSED] 20 VFs
[13:12:57] [PASSED] 21 VFs
[13:12:57] [PASSED] 22 VFs
[13:12:57] [PASSED] 23 VFs
[13:12:57] [PASSED] 24 VFs
[13:12:57] [PASSED] 25 VFs
[13:12:57] [PASSED] 26 VFs
[13:12:57] [PASSED] 27 VFs
[13:12:57] [PASSED] 28 VFs
[13:12:57] [PASSED] 29 VFs
[13:12:57] [PASSED] 30 VFs
[13:12:57] [PASSED] 31 VFs
[13:12:57] [PASSED] 32 VFs
[13:12:57] [PASSED] 33 VFs
[13:12:57] [PASSED] 34 VFs
[13:12:57] [PASSED] 35 VFs
[13:12:57] [PASSED] 36 VFs
[13:12:57] [PASSED] 37 VFs
[13:12:57] [PASSED] 38 VFs
[13:12:57] [PASSED] 39 VFs
[13:12:57] [PASSED] 40 VFs
[13:12:57] [PASSED] 41 VFs
[13:12:57] [PASSED] 42 VFs
[13:12:57] [PASSED] 43 VFs
[13:12:57] [PASSED] 44 VFs
[13:12:57] [PASSED] 45 VFs
[13:12:57] [PASSED] 46 VFs
[13:12:57] [PASSED] 47 VFs
[13:12:57] [PASSED] 48 VFs
[13:12:57] [PASSED] 49 VFs
[13:12:57] [PASSED] 50 VFs
[13:12:57] [PASSED] 51 VFs
[13:12:57] [PASSED] 52 VFs
[13:12:58] [PASSED] 53 VFs
[13:12:58] [PASSED] 54 VFs
[13:12:58] [PASSED] 55 VFs
[13:12:58] [PASSED] 56 VFs
[13:12:58] [PASSED] 57 VFs
[13:12:58] [PASSED] 58 VFs
[13:12:58] [PASSED] 59 VFs
[13:12:58] [PASSED] 60 VFs
[13:12:58] [PASSED] 61 VFs
[13:12:58] [PASSED] 62 VFs
[13:12:58] [PASSED] 63 VFs
[13:12:58] ==================== [PASSED] fair_ggtt ====================
[13:12:58] ======================== fair_vram ========================
[13:12:58] [PASSED] 1 VF
[13:12:58] [PASSED] 2 VFs
[13:12:58] [PASSED] 3 VFs
[13:12:58] [PASSED] 4 VFs
[13:12:58] [PASSED] 5 VFs
[13:12:58] [PASSED] 6 VFs
[13:12:58] [PASSED] 7 VFs
[13:12:58] [PASSED] 8 VFs
[13:12:58] [PASSED] 9 VFs
[13:12:58] [PASSED] 10 VFs
[13:12:58] [PASSED] 11 VFs
[13:12:58] [PASSED] 12 VFs
[13:12:58] [PASSED] 13 VFs
[13:12:58] [PASSED] 14 VFs
[13:12:58] [PASSED] 15 VFs
[13:12:58] [PASSED] 16 VFs
[13:12:58] [PASSED] 17 VFs
[13:12:58] [PASSED] 18 VFs
[13:12:58] [PASSED] 19 VFs
[13:12:58] [PASSED] 20 VFs
[13:12:58] [PASSED] 21 VFs
[13:12:58] [PASSED] 22 VFs
[13:12:58] [PASSED] 23 VFs
[13:12:58] [PASSED] 24 VFs
[13:12:58] [PASSED] 25 VFs
[13:12:58] [PASSED] 26 VFs
[13:12:58] [PASSED] 27 VFs
[13:12:58] [PASSED] 28 VFs
[13:12:58] [PASSED] 29 VFs
[13:12:58] [PASSED] 30 VFs
[13:12:58] [PASSED] 31 VFs
[13:12:58] [PASSED] 32 VFs
[13:12:58] [PASSED] 33 VFs
[13:12:58] [PASSED] 34 VFs
[13:12:58] [PASSED] 35 VFs
[13:12:58] [PASSED] 36 VFs
[13:12:58] [PASSED] 37 VFs
[13:12:58] [PASSED] 38 VFs
[13:12:58] [PASSED] 39 VFs
[13:12:58] [PASSED] 40 VFs
[13:12:58] [PASSED] 41 VFs
[13:12:58] [PASSED] 42 VFs
[13:12:58] [PASSED] 43 VFs
[13:12:58] [PASSED] 44 VFs
[13:12:58] [PASSED] 45 VFs
[13:12:58] [PASSED] 46 VFs
[13:12:58] [PASSED] 47 VFs
[13:12:58] [PASSED] 48 VFs
[13:12:58] [PASSED] 49 VFs
[13:12:58] [PASSED] 50 VFs
[13:12:58] [PASSED] 51 VFs
[13:12:58] [PASSED] 52 VFs
[13:12:58] [PASSED] 53 VFs
[13:12:58] [PASSED] 54 VFs
[13:12:58] [PASSED] 55 VFs
[13:12:58] [PASSED] 56 VFs
[13:12:58] [PASSED] 57 VFs
[13:12:58] [PASSED] 58 VFs
[13:12:58] [PASSED] 59 VFs
[13:12:58] [PASSED] 60 VFs
[13:12:58] [PASSED] 61 VFs
[13:12:58] [PASSED] 62 VFs
[13:12:58] [PASSED] 63 VFs
[13:12:58] ==================== [PASSED] fair_vram ====================
[13:12:58] ================== [PASSED] pf_gt_config ===================
[13:12:58] ===================== lmtt (1 subtest) =====================
[13:12:58] ======================== test_ops =========================
[13:12:58] [PASSED] 2-level
[13:12:58] [PASSED] multi-level
[13:12:58] ==================== [PASSED] test_ops =====================
[13:12:58] ====================== [PASSED] lmtt =======================
[13:12:58] ================= pf_service (11 subtests) =================
[13:12:58] [PASSED] pf_negotiate_any
[13:12:58] [PASSED] pf_negotiate_base_match
[13:12:58] [PASSED] pf_negotiate_base_newer
[13:12:58] [PASSED] pf_negotiate_base_next
[13:12:58] [SKIPPED] pf_negotiate_base_older (no older minor)
[13:12:58] [PASSED] pf_negotiate_base_prev
[13:12:58] [PASSED] pf_negotiate_latest_match
[13:12:58] [PASSED] pf_negotiate_latest_newer
[13:12:58] [PASSED] pf_negotiate_latest_next
[13:12:58] [SKIPPED] pf_negotiate_latest_older (no older minor)
[13:12:58] [SKIPPED] pf_negotiate_latest_prev (no prev major)
[13:12:58] =================== [PASSED] pf_service ====================
[13:12:58] ================= xe_guc_g2g (2 subtests) ==================
[13:12:58] ============== xe_live_guc_g2g_kunit_default ==============
[13:12:58] ========= [SKIPPED] xe_live_guc_g2g_kunit_default ==========
[13:12:58] ============== xe_live_guc_g2g_kunit_allmem ===============
[13:12:58] ========== [SKIPPED] xe_live_guc_g2g_kunit_allmem ==========
[13:12:58] =================== [SKIPPED] xe_guc_g2g ===================
[13:12:58] =================== xe_mocs (2 subtests) ===================
[13:12:58] ================ xe_live_mocs_kernel_kunit ================
[13:12:58] =========== [SKIPPED] xe_live_mocs_kernel_kunit ============
[13:12:58] ================ xe_live_mocs_reset_kunit =================
[13:12:58] ============ [SKIPPED] xe_live_mocs_reset_kunit ============
[13:12:58] ==================== [SKIPPED] xe_mocs =====================
[13:12:58] ================= xe_migrate (2 subtests) ==================
[13:12:58] ================= xe_migrate_sanity_kunit =================
[13:12:58] ============ [SKIPPED] xe_migrate_sanity_kunit =============
[13:12:58] ================== xe_validate_ccs_kunit ==================
[13:12:58] ============= [SKIPPED] xe_validate_ccs_kunit ==============
[13:12:58] =================== [SKIPPED] xe_migrate ===================
[13:12:58] ================== xe_dma_buf (1 subtest) ==================
[13:12:58] ==================== xe_dma_buf_kunit =====================
[13:12:58] ================ [SKIPPED] xe_dma_buf_kunit ================
[13:12:58] =================== [SKIPPED] xe_dma_buf ===================
[13:12:58] ================= xe_bo_shrink (1 subtest) =================
[13:12:58] =================== xe_bo_shrink_kunit ====================
[13:12:58] =============== [SKIPPED] xe_bo_shrink_kunit ===============
[13:12:58] ================== [SKIPPED] xe_bo_shrink ==================
[13:12:58] ==================== xe_bo (2 subtests) ====================
[13:12:58] ================== xe_ccs_migrate_kunit ===================
[13:12:58] ============== [SKIPPED] xe_ccs_migrate_kunit ==============
[13:12:58] ==================== xe_bo_evict_kunit ====================
[13:12:58] =============== [SKIPPED] xe_bo_evict_kunit ================
[13:12:58] ===================== [SKIPPED] xe_bo ======================
[13:12:58] ==================== args (13 subtests) ====================
[13:12:58] [PASSED] count_args_test
[13:12:58] [PASSED] call_args_example
[13:12:58] [PASSED] call_args_test
[13:12:58] [PASSED] drop_first_arg_example
[13:12:58] [PASSED] drop_first_arg_test
[13:12:58] [PASSED] first_arg_example
[13:12:58] [PASSED] first_arg_test
[13:12:58] [PASSED] last_arg_example
[13:12:58] [PASSED] last_arg_test
[13:12:58] [PASSED] pick_arg_example
[13:12:58] [PASSED] if_args_example
[13:12:58] [PASSED] if_args_test
[13:12:58] [PASSED] sep_comma_example
[13:12:58] ====================== [PASSED] args =======================
[13:12:58] =================== xe_pci (3 subtests) ====================
[13:12:58] ==================== check_graphics_ip ====================
[13:12:58] [PASSED] 12.00 Xe_LP
[13:12:58] [PASSED] 12.10 Xe_LP+
[13:12:58] [PASSED] 12.55 Xe_HPG
[13:12:58] [PASSED] 12.60 Xe_HPC
[13:12:58] [PASSED] 12.70 Xe_LPG
[13:12:58] [PASSED] 12.71 Xe_LPG
[13:12:58] [PASSED] 12.74 Xe_LPG+
[13:12:58] [PASSED] 20.01 Xe2_HPG
[13:12:58] [PASSED] 20.02 Xe2_HPG
[13:12:58] [PASSED] 20.04 Xe2_LPG
[13:12:58] [PASSED] 30.00 Xe3_LPG
[13:12:58] [PASSED] 30.01 Xe3_LPG
[13:12:58] [PASSED] 30.03 Xe3_LPG
[13:12:58] [PASSED] 30.04 Xe3_LPG
[13:12:58] [PASSED] 30.05 Xe3_LPG
[13:12:58] [PASSED] 35.10 Xe3p_LPG
[13:12:58] [PASSED] 35.11 Xe3p_XPC
[13:12:58] ================ [PASSED] check_graphics_ip ================
[13:12:58] ===================== check_media_ip ======================
[13:12:58] [PASSED] 12.00 Xe_M
[13:12:58] [PASSED] 12.55 Xe_HPM
[13:12:58] [PASSED] 13.00 Xe_LPM+
[13:12:58] [PASSED] 13.01 Xe2_HPM
[13:12:58] [PASSED] 20.00 Xe2_LPM
[13:12:58] [PASSED] 30.00 Xe3_LPM
[13:12:58] [PASSED] 30.02 Xe3_LPM
[13:12:58] [PASSED] 35.00 Xe3p_LPM
[13:12:58] [PASSED] 35.03 Xe3p_HPM
[13:12:58] ================= [PASSED] check_media_ip ==================
[13:12:58] =================== check_platform_desc ===================
[13:12:58] [PASSED] 0x9A60 (TIGERLAKE)
[13:12:58] [PASSED] 0x9A68 (TIGERLAKE)
[13:12:58] [PASSED] 0x9A70 (TIGERLAKE)
[13:12:58] [PASSED] 0x9A40 (TIGERLAKE)
[13:12:58] [PASSED] 0x9A49 (TIGERLAKE)
[13:12:58] [PASSED] 0x9A59 (TIGERLAKE)
[13:12:58] [PASSED] 0x9A78 (TIGERLAKE)
[13:12:58] [PASSED] 0x9AC0 (TIGERLAKE)
[13:12:58] [PASSED] 0x9AC9 (TIGERLAKE)
[13:12:58] [PASSED] 0x9AD9 (TIGERLAKE)
[13:12:58] [PASSED] 0x9AF8 (TIGERLAKE)
[13:12:58] [PASSED] 0x4C80 (ROCKETLAKE)
[13:12:58] [PASSED] 0x4C8A (ROCKETLAKE)
[13:12:58] [PASSED] 0x4C8B (ROCKETLAKE)
[13:12:58] [PASSED] 0x4C8C (ROCKETLAKE)
[13:12:58] [PASSED] 0x4C90 (ROCKETLAKE)
[13:12:58] [PASSED] 0x4C9A (ROCKETLAKE)
[13:12:58] [PASSED] 0x4680 (ALDERLAKE_S)
[13:12:58] [PASSED] 0x4682 (ALDERLAKE_S)
[13:12:58] [PASSED] 0x4688 (ALDERLAKE_S)
[13:12:58] [PASSED] 0x468A (ALDERLAKE_S)
[13:12:58] [PASSED] 0x468B (ALDERLAKE_S)
[13:12:58] [PASSED] 0x4690 (ALDERLAKE_S)
[13:12:58] [PASSED] 0x4692 (ALDERLAKE_S)
[13:12:58] [PASSED] 0x4693 (ALDERLAKE_S)
[13:12:58] [PASSED] 0x46A0 (ALDERLAKE_P)
[13:12:58] [PASSED] 0x46A1 (ALDERLAKE_P)
[13:12:58] [PASSED] 0x46A2 (ALDERLAKE_P)
[13:12:58] [PASSED] 0x46A3 (ALDERLAKE_P)
[13:12:58] [PASSED] 0x46A6 (ALDERLAKE_P)
[13:12:58] [PASSED] 0x46A8 (ALDERLAKE_P)
[13:12:58] [PASSED] 0x46AA (ALDERLAKE_P)
[13:12:58] [PASSED] 0x462A (ALDERLAKE_P)
[13:12:58] [PASSED] 0x4626 (ALDERLAKE_P)
[13:12:58] [PASSED] 0x4628 (ALDERLAKE_P)
[13:12:58] [PASSED] 0x46B0 (ALDERLAKE_P)
[13:12:58] [PASSED] 0x46B1 (ALDERLAKE_P)
[13:12:58] [PASSED] 0x46B2 (ALDERLAKE_P)
[13:12:58] [PASSED] 0x46B3 (ALDERLAKE_P)
[13:12:58] [PASSED] 0x46C0 (ALDERLAKE_P)
[13:12:58] [PASSED] 0x46C1 (ALDERLAKE_P)
[13:12:58] [PASSED] 0x46C2 (ALDERLAKE_P)
[13:12:58] [PASSED] 0x46C3 (ALDERLAKE_P)
[13:12:58] [PASSED] 0x46D0 (ALDERLAKE_N)
[13:12:58] [PASSED] 0x46D1 (ALDERLAKE_N)
[13:12:58] [PASSED] 0x46D2 (ALDERLAKE_N)
[13:12:58] [PASSED] 0x46D3 (ALDERLAKE_N)
[13:12:58] [PASSED] 0x46D4 (ALDERLAKE_N)
[13:12:58] [PASSED] 0xA721 (ALDERLAKE_P)
[13:12:58] [PASSED] 0xA7A1 (ALDERLAKE_P)
[13:12:58] [PASSED] 0xA7A9 (ALDERLAKE_P)
[13:12:58] [PASSED] 0xA7AC (ALDERLAKE_P)
[13:12:58] [PASSED] 0xA7AD (ALDERLAKE_P)
[13:12:58] [PASSED] 0xA720 (ALDERLAKE_P)
[13:12:58] [PASSED] 0xA7A0 (ALDERLAKE_P)
[13:12:58] [PASSED] 0xA7A8 (ALDERLAKE_P)
[13:12:58] [PASSED] 0xA7AA (ALDERLAKE_P)
[13:12:58] [PASSED] 0xA7AB (ALDERLAKE_P)
[13:12:58] [PASSED] 0xA780 (ALDERLAKE_S)
[13:12:58] [PASSED] 0xA781 (ALDERLAKE_S)
[13:12:58] [PASSED] 0xA782 (ALDERLAKE_S)
[13:12:58] [PASSED] 0xA783 (ALDERLAKE_S)
[13:12:58] [PASSED] 0xA788 (ALDERLAKE_S)
[13:12:58] [PASSED] 0xA789 (ALDERLAKE_S)
[13:12:58] [PASSED] 0xA78A (ALDERLAKE_S)
[13:12:58] [PASSED] 0xA78B (ALDERLAKE_S)
[13:12:58] [PASSED] 0x4905 (DG1)
[13:12:58] [PASSED] 0x4906 (DG1)
[13:12:58] [PASSED] 0x4907 (DG1)
[13:12:58] [PASSED] 0x4908 (DG1)
[13:12:58] [PASSED] 0x4909 (DG1)
[13:12:58] [PASSED] 0x56C0 (DG2)
[13:12:58] [PASSED] 0x56C2 (DG2)
[13:12:58] [PASSED] 0x56C1 (DG2)
[13:12:58] [PASSED] 0x7D51 (METEORLAKE)
[13:12:58] [PASSED] 0x7DD1 (METEORLAKE)
[13:12:58] [PASSED] 0x7D41 (METEORLAKE)
[13:12:58] [PASSED] 0x7D67 (METEORLAKE)
[13:12:58] [PASSED] 0xB640 (METEORLAKE)
[13:12:58] [PASSED] 0x56A0 (DG2)
[13:12:58] [PASSED] 0x56A1 (DG2)
[13:12:58] [PASSED] 0x56A2 (DG2)
[13:12:58] [PASSED] 0x56BE (DG2)
[13:12:58] [PASSED] 0x56BF (DG2)
[13:12:58] [PASSED] 0x5690 (DG2)
[13:12:58] [PASSED] 0x5691 (DG2)
[13:12:58] [PASSED] 0x5692 (DG2)
[13:12:58] [PASSED] 0x56A5 (DG2)
[13:12:58] [PASSED] 0x56A6 (DG2)
[13:12:58] [PASSED] 0x56B0 (DG2)
[13:12:58] [PASSED] 0x56B1 (DG2)
[13:12:58] [PASSED] 0x56BA (DG2)
[13:12:58] [PASSED] 0x56BB (DG2)
[13:12:58] [PASSED] 0x56BC (DG2)
[13:12:58] [PASSED] 0x56BD (DG2)
[13:12:58] [PASSED] 0x5693 (DG2)
[13:12:58] [PASSED] 0x5694 (DG2)
[13:12:58] [PASSED] 0x5695 (DG2)
[13:12:58] [PASSED] 0x56A3 (DG2)
[13:12:58] [PASSED] 0x56A4 (DG2)
[13:12:58] [PASSED] 0x56B2 (DG2)
[13:12:58] [PASSED] 0x56B3 (DG2)
[13:12:58] [PASSED] 0x5696 (DG2)
[13:12:58] [PASSED] 0x5697 (DG2)
[13:12:58] [PASSED] 0xB69 (PVC)
[13:12:58] [PASSED] 0xB6E (PVC)
[13:12:58] [PASSED] 0xBD4 (PVC)
[13:12:58] [PASSED] 0xBD5 (PVC)
[13:12:58] [PASSED] 0xBD6 (PVC)
[13:12:58] [PASSED] 0xBD7 (PVC)
[13:12:58] [PASSED] 0xBD8 (PVC)
[13:12:58] [PASSED] 0xBD9 (PVC)
[13:12:58] [PASSED] 0xBDA (PVC)
[13:12:58] [PASSED] 0xBDB (PVC)
[13:12:58] [PASSED] 0xBE0 (PVC)
[13:12:58] [PASSED] 0xBE1 (PVC)
[13:12:58] [PASSED] 0xBE5 (PVC)
[13:12:58] [PASSED] 0x7D40 (METEORLAKE)
[13:12:58] [PASSED] 0x7D45 (METEORLAKE)
[13:12:58] [PASSED] 0x7D55 (METEORLAKE)
[13:12:58] [PASSED] 0x7D60 (METEORLAKE)
[13:12:58] [PASSED] 0x7DD5 (METEORLAKE)
[13:12:58] [PASSED] 0x6420 (LUNARLAKE)
[13:12:58] [PASSED] 0x64A0 (LUNARLAKE)
[13:12:58] [PASSED] 0x64B0 (LUNARLAKE)
[13:12:58] [PASSED] 0xE202 (BATTLEMAGE)
[13:12:58] [PASSED] 0xE209 (BATTLEMAGE)
[13:12:58] [PASSED] 0xE20B (BATTLEMAGE)
[13:12:58] [PASSED] 0xE20C (BATTLEMAGE)
[13:12:58] [PASSED] 0xE20D (BATTLEMAGE)
[13:12:58] [PASSED] 0xE210 (BATTLEMAGE)
[13:12:58] [PASSED] 0xE211 (BATTLEMAGE)
[13:12:58] [PASSED] 0xE212 (BATTLEMAGE)
[13:12:58] [PASSED] 0xE216 (BATTLEMAGE)
[13:12:58] [PASSED] 0xE220 (BATTLEMAGE)
[13:12:58] [PASSED] 0xE221 (BATTLEMAGE)
[13:12:58] [PASSED] 0xE222 (BATTLEMAGE)
[13:12:58] [PASSED] 0xE223 (BATTLEMAGE)
[13:12:58] [PASSED] 0xB080 (PANTHERLAKE)
[13:12:58] [PASSED] 0xB081 (PANTHERLAKE)
[13:12:58] [PASSED] 0xB082 (PANTHERLAKE)
[13:12:58] [PASSED] 0xB083 (PANTHERLAKE)
[13:12:58] [PASSED] 0xB084 (PANTHERLAKE)
[13:12:58] [PASSED] 0xB085 (PANTHERLAKE)
[13:12:58] [PASSED] 0xB086 (PANTHERLAKE)
[13:12:58] [PASSED] 0xB087 (PANTHERLAKE)
[13:12:58] [PASSED] 0xB08F (PANTHERLAKE)
[13:12:58] [PASSED] 0xB090 (PANTHERLAKE)
[13:12:58] [PASSED] 0xB0A0 (PANTHERLAKE)
[13:12:58] [PASSED] 0xB0B0 (PANTHERLAKE)
[13:12:58] [PASSED] 0xFD80 (PANTHERLAKE)
[13:12:58] [PASSED] 0xFD81 (PANTHERLAKE)
[13:12:58] [PASSED] 0xD740 (NOVALAKE_S)
[13:12:58] [PASSED] 0xD741 (NOVALAKE_S)
[13:12:58] [PASSED] 0xD742 (NOVALAKE_S)
[13:12:58] [PASSED] 0xD743 (NOVALAKE_S)
[13:12:58] [PASSED] 0xD745 (NOVALAKE_S)
[13:12:58] [PASSED] 0xD74A (NOVALAKE_S)
[13:12:58] [PASSED] 0xD74B (NOVALAKE_S)
[13:12:58] [PASSED] 0x674C (CRESCENTISLAND)
[13:12:58] [PASSED] 0x674D (CRESCENTISLAND)
[13:12:58] [PASSED] 0x674E (CRESCENTISLAND)
[13:12:58] [PASSED] 0x674F (CRESCENTISLAND)
[13:12:58] [PASSED] 0x6750 (CRESCENTISLAND)
[13:12:58] [PASSED] 0xD750 (NOVALAKE_P)
[13:12:58] [PASSED] 0xD751 (NOVALAKE_P)
[13:12:58] [PASSED] 0xD752 (NOVALAKE_P)
[13:12:58] [PASSED] 0xD753 (NOVALAKE_P)
[13:12:58] [PASSED] 0xD754 (NOVALAKE_P)
[13:12:58] [PASSED] 0xD755 (NOVALAKE_P)
[13:12:58] [PASSED] 0xD756 (NOVALAKE_P)
[13:12:58] [PASSED] 0xD757 (NOVALAKE_P)
[13:12:58] [PASSED] 0xD75F (NOVALAKE_P)
[13:12:58] =============== [PASSED] check_platform_desc ===============
[13:12:58] ===================== [PASSED] xe_pci ======================
[13:12:58] ============= xe_rtp_tables_test (4 subtests) ==============
[13:12:58] ================== xe_rtp_table_gt_test ===================
[13:12:58] [PASSED] gt_was/14011060649
[13:12:58] [PASSED] gt_was/14011059788
[13:12:58] [PASSED] gt_was/14015795083
[13:12:58] [PASSED] gt_was/16021867713
[13:12:58] [PASSED] gt_was/14019449301
[13:12:58] [PASSED] gt_was/16028005424
[13:12:58] [PASSED] gt_was/14026578760
[13:12:58] [PASSED] gt_was/1409420604
[13:12:58] [PASSED] gt_was/1408615072
[13:12:58] [PASSED] gt_was/22010523718
[13:12:58] [PASSED] gt_was/14011006942
[13:12:58] [PASSED] gt_was/14014830051
[13:12:58] [PASSED] gt_was/18018781329
[13:12:58] [PASSED] gt_was/1509235366
[13:12:58] [PASSED] gt_was/18018781329
[13:12:58] [PASSED] gt_was/16016694945
[13:12:58] [PASSED] gt_was/14018575942
[13:12:58] [PASSED] gt_was/22016670082
[13:12:58] [PASSED] gt_was/22016670082
[13:12:58] [PASSED] gt_was/14017421178
[13:12:58] [PASSED] gt_was/16025250150
[13:12:58] [PASSED] gt_was/14021871409
[13:12:58] [PASSED] gt_was/16021865536
[13:12:58] [PASSED] gt_was/14021486841
[13:12:58] [PASSED] gt_was/14025160223
[13:12:58] [PASSED] gt_was/14026144927, 16029437861, 14026127056
[13:12:58] [PASSED] gt_was/14025635424
[13:12:58] [PASSED] gt_was/16028005424
[13:12:58] ============== [PASSED] xe_rtp_table_gt_test ===============
[13:12:58] ================== xe_rtp_table_gt_test ===================
[13:12:58] [PASSED] gt_tunings/Tuning: Blend Fill Caching Optimization Disable
[13:12:58] [PASSED] gt_tunings/Tuning: 32B Access Enable
[13:12:58] [PASSED] gt_tunings/Tuning: L3 cache
[13:12:58] [PASSED] gt_tunings/Tuning: L3 cache - media
[13:12:58] [PASSED] gt_tunings/Tuning: Compression Overfetch
[13:12:58] [PASSED] gt_tunings/Tuning: Compression Overfetch - media
[13:12:58] [PASSED] gt_tunings/Tuning: Enable compressible partial write overfetch in L3
[13:12:58] [PASSED] gt_tunings/Tuning: Enable compressible partial write overfetch in L3 - media
[13:12:58] [PASSED] gt_tunings/Tuning: L2 Overfetch Compressible Only
[13:12:58] [PASSED] gt_tunings/Tuning: L2 Overfetch Compressible Only - media
[13:12:58] [PASSED] gt_tunings/Tuning: Stateless compression control
[13:12:58] [PASSED] gt_tunings/Tuning: Stateless compression control - media
[13:12:58] [PASSED] gt_tunings/Tuning: L3 RW flush all Cache
[13:12:58] [PASSED] gt_tunings/Tuning: L3 RW flush all cache - media
[13:12:58] [PASSED] gt_tunings/Tuning: Set STLB Bank Hash Mode to 4KB
[13:12:58] ============== [PASSED] xe_rtp_table_gt_test ===============
[13:12:58] ================== xe_rtp_table_oob_test ==================
[13:12:58] [PASSED] oob_was/1607983814
[13:12:58] [PASSED] oob_was/16010904313
[13:12:58] [PASSED] oob_was/18022495364
[13:12:58] [PASSED] oob_was/22012773006
[13:12:58] [PASSED] oob_was/14014475959
[13:12:58] [PASSED] oob_was/22011391025
[13:12:58] [PASSED] oob_was/22012727170
[13:12:58] [PASSED] oob_was/22012727685
[13:12:58] [PASSED] oob_was/22016596838
[13:12:58] [PASSED] oob_was/18020744125
[13:12:58] [PASSED] oob_was/1409600907
[13:12:58] [PASSED] oob_was/22014953428
[13:12:58] [PASSED] oob_was/16017236439
[13:12:58] [PASSED] oob_was/14019821291
[13:12:58] [PASSED] oob_was/14015076503
[13:12:58] [PASSED] oob_was/14018913170
[13:12:58] [PASSED] oob_was/14018094691
[13:12:58] [PASSED] oob_was/18024947630
[13:12:58] [PASSED] oob_was/16022287689
[13:12:58] [PASSED] oob_was/13011645652
[13:12:58] [PASSED] oob_was/14022293748
[13:12:58] [PASSED] oob_was/22019794406
[13:12:58] [PASSED] oob_was/22019338487
[13:12:58] [PASSED] oob_was/16023588340
[13:12:58] [PASSED] oob_was/14019789679
[13:12:58] [PASSED] oob_was/14022866841
[13:12:58] [PASSED] oob_was/16021333562
[13:12:58] [PASSED] oob_was/14016712196
[13:12:58] [PASSED] oob_was/14015568240
[13:12:58] [PASSED] oob_was/18013179988
[13:12:58] [PASSED] oob_was/1508761755
[13:12:58] [PASSED] oob_was/16023105232
[13:12:58] [PASSED] oob_was/16026508708
[13:12:58] [PASSED] oob_was/14020001231
[13:12:58] [PASSED] oob_was/16023683509
[13:12:58] [PASSED] oob_was/14025515070
[13:12:58] [PASSED] oob_was/15015404425_disable
[13:12:58] [PASSED] oob_was/16026007364
[13:12:58] [PASSED] oob_was/14020316580
[13:12:58] [PASSED] oob_was/14025883347
[13:12:58] [PASSED] oob_was/16029380221
[13:12:58] ============== [PASSED] xe_rtp_table_oob_test ==============
[13:12:58] ================ xe_rtp_table_dev_oob_test ================
[13:12:58] [PASSED] device_oob_was/22010954014
[13:12:58] [PASSED] device_oob_was/15015404425
[13:12:58] [PASSED] device_oob_was/22019338487_display
[13:12:58] [PASSED] device_oob_was/14022085890
[13:12:58] [PASSED] device_oob_was/14026539277
[13:12:58] [PASSED] device_oob_was/14026633728
[13:12:58] [PASSED] device_oob_was/14026746987
[13:12:58] [PASSED] device_oob_was/14026779378
[13:12:58] ============ [PASSED] xe_rtp_table_dev_oob_test ============
[13:12:58] =============== [PASSED] xe_rtp_tables_test ================
[13:12:58] =================== xe_rtp (3 subtests) ====================
[13:12:58] =================== xe_rtp_rules_tests ====================
[13:12:58] [PASSED] no
[13:12:58] [PASSED] yes
[13:12:58] [PASSED] no-and-no
[13:12:58] [PASSED] no-and-yes
[13:12:58] [PASSED] yes-and-no
[13:12:58] [PASSED] yes-and-yes
[13:12:58] [PASSED] no-or-no
[13:12:58] [PASSED] no-or-yes
[13:12:58] [PASSED] yes-or-no
[13:12:58] [PASSED] yes-or-yes
[13:12:58] [PASSED] no-yes-or-yes-no
[13:12:58] [PASSED] no-yes-or-yes-yes
[13:12:58] [PASSED] yes-yes-or-no-yes
[13:12:58] [PASSED] yes-yes-or-yes-yes
[13:12:58] [PASSED] no-no-or-yes-or-no
[13:12:58] [PASSED] or
[13:12:58] [PASSED] or-yes
[13:12:58] [PASSED] or-no
[13:12:58] [PASSED] yes-or
[13:12:58] [PASSED] no-or
[13:12:58] [PASSED] no-or-or-yes
[13:12:58] [PASSED] yes-or-or-no
[13:12:58] [PASSED] no-or-or-no
[13:12:58] [PASSED] missing-context-engine-class
[13:12:58] [PASSED] missing-context-engine-class-or-yes
[13:12:58] [PASSED] missing-context-engine-class-or-or-yes
[13:12:58] =============== [PASSED] xe_rtp_rules_tests ================
[13:12:58] =============== xe_rtp_process_to_sr_tests ================
[13:12:58] [PASSED] coalesce-same-reg
[13:12:58] [PASSED] coalesce-same-reg-literal-and-func
[13:12:58] [PASSED] no-match-no-add
[13:12:58] [PASSED] two-regs-two-entries
[13:12:58] [PASSED] clr-one-set-other
[13:12:58] [PASSED] set-field
[13:12:58] [PASSED] conflict-duplicate
[13:12:58] [PASSED] conflict-not-disjoint
[13:12:58] [PASSED] conflict-not-disjoint-literal-and-func
[13:12:58] [PASSED] conflict-reg-type
[13:12:58] [PASSED] bad-mcr-reg-forced-to-regular
[13:12:58] [PASSED] bad-regular-reg-forced-to-mcr
[13:12:58] =========== [PASSED] xe_rtp_process_to_sr_tests ============
[13:12:58] ================== xe_rtp_process_tests ===================
[13:12:58] [PASSED] active1
[13:12:58] [PASSED] active2
[13:12:58] [PASSED] active-inactive
[13:12:58] [PASSED] inactive-active
[13:12:58] [PASSED] inactive-active-inactive
[13:12:58] [PASSED] inactive-inactive-inactive
[13:12:58] ============== [PASSED] xe_rtp_process_tests ===============
[13:12:58] ===================== [PASSED] xe_rtp ======================
[13:12:58] ==================== xe_wa (1 subtest) =====================
[13:12:58] ======================== xe_wa_gt =========================
[13:12:58] [PASSED] TIGERLAKE B0
[13:12:58] [PASSED] DG1 A0
[13:12:58] [PASSED] DG1 B0
[13:12:58] [PASSED] ALDERLAKE_S A0
[13:12:58] [PASSED] ALDERLAKE_S B0
[13:12:58] [PASSED] ALDERLAKE_S C0
[13:12:58] [PASSED] ALDERLAKE_S D0
[13:12:58] [PASSED] ALDERLAKE_P A0
[13:12:58] [PASSED] ALDERLAKE_P B0
[13:12:58] [PASSED] ALDERLAKE_P C0
[13:12:58] [PASSED] ALDERLAKE_S RPLS D0
[13:12:58] [PASSED] ALDERLAKE_P RPLU E0
[13:12:58] [PASSED] DG2 G10 C0
[13:12:58] [PASSED] DG2 G11 B1
[13:12:58] [PASSED] DG2 G12 A1
[13:12:58] [PASSED] METEORLAKE 12.70(Xe_LPG) A0 13.00(Xe_LPM+) A0
[13:12:58] [PASSED] METEORLAKE 12.71(Xe_LPG) A0 13.00(Xe_LPM+) A0
[13:12:58] [PASSED] METEORLAKE 12.74(Xe_LPG+) A0 13.00(Xe_LPM+) A0
[13:12:58] [PASSED] LUNARLAKE 20.04(Xe2_LPG) A0 20.00(Xe2_LPM) A0
[13:12:58] [PASSED] LUNARLAKE 20.04(Xe2_LPG) B0 20.00(Xe2_LPM) A0
[13:12:58] [PASSED] BATTLEMAGE 20.01(Xe2_HPG) A0 13.01(Xe2_HPM) A1
[13:12:58] [PASSED] PANTHERLAKE 30.00(Xe3_LPG) A0 30.00(Xe3_LPM) A0
[13:12:58] ==================== [PASSED] xe_wa_gt =====================
[13:12:58] ====================== [PASSED] xe_wa ======================
[13:12:58] ============================================================
[13:12:58] Testing complete. Ran 719 tests: passed: 701, skipped: 18
[13:12:58] Elapsed time: 36.805s total, 4.312s configuring, 31.826s building, 0.640s running
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/tests/.kunitconfig
[13:12:58] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[13:13:00] 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
[13:13:24] Starting KUnit Kernel (1/1)...
[13:13:24] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[13:13:24] ============ drm_test_pick_cmdline (2 subtests) ============
[13:13:24] [PASSED] drm_test_pick_cmdline_res_1920_1080_60
[13:13:24] =============== drm_test_pick_cmdline_named ===============
[13:13:24] [PASSED] NTSC
[13:13:24] [PASSED] NTSC-J
[13:13:24] [PASSED] PAL
[13:13:24] [PASSED] PAL-M
[13:13:24] =========== [PASSED] drm_test_pick_cmdline_named ===========
[13:13:24] ============== [PASSED] drm_test_pick_cmdline ==============
[13:13:24] == drm_test_atomic_get_connector_for_encoder (1 subtest) ===
[13:13:24] [PASSED] drm_test_drm_atomic_get_connector_for_encoder
[13:13:24] ==== [PASSED] drm_test_atomic_get_connector_for_encoder ====
[13:13:24] =========== drm_validate_clone_mode (2 subtests) ===========
[13:13:24] ============== drm_test_check_in_clone_mode ===============
[13:13:24] [PASSED] in_clone_mode
[13:13:24] [PASSED] not_in_clone_mode
[13:13:24] ========== [PASSED] drm_test_check_in_clone_mode ===========
[13:13:24] =============== drm_test_check_valid_clones ===============
[13:13:24] [PASSED] not_in_clone_mode
[13:13:24] [PASSED] valid_clone
[13:13:24] [PASSED] invalid_clone
[13:13:24] =========== [PASSED] drm_test_check_valid_clones ===========
[13:13:24] ============= [PASSED] drm_validate_clone_mode =============
[13:13:24] ============= drm_validate_modeset (1 subtest) =============
[13:13:24] [PASSED] drm_test_check_connector_changed_modeset
[13:13:24] ============== [PASSED] drm_validate_modeset ===============
[13:13:24] ====== drm_test_bridge_get_current_state (2 subtests) ======
[13:13:24] [PASSED] drm_test_drm_bridge_get_current_state_atomic
[13:13:24] [PASSED] drm_test_drm_bridge_get_current_state_legacy
[13:13:24] ======== [PASSED] drm_test_bridge_get_current_state ========
[13:13:24] ====== drm_test_bridge_helper_reset_crtc (4 subtests) ======
[13:13:24] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic
[13:13:24] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic_disabled
[13:13:24] [PASSED] drm_test_drm_bridge_helper_reset_crtc_legacy
[13:13:24] [PASSED] drm_test_drm_bridge_helper_hdmi_output_bus_fmts
[13:13:24] ======== [PASSED] drm_test_bridge_helper_reset_crtc ========
[13:13:24] ============== drm_bridge_alloc (2 subtests) ===============
[13:13:24] [PASSED] drm_test_drm_bridge_alloc_basic
[13:13:24] [PASSED] drm_test_drm_bridge_alloc_get_put
[13:13:24] ================ [PASSED] drm_bridge_alloc =================
[13:13:24] ============= drm_bridge_bus_fmt (5 subtests) ==============
[13:13:24] [PASSED] drm_test_bridge_rgb_yuv_rgb
[13:13:24] [PASSED] drm_test_bridge_must_convert_to_yuv444
[13:13:24] [PASSED] drm_test_bridge_hdmi_auto_rgb
[13:13:24] [PASSED] drm_test_bridge_auto_first
[13:13:24] [PASSED] drm_test_bridge_rgb_yuv_no_path
[13:13:24] =============== [PASSED] drm_bridge_bus_fmt ================
[13:13:24] ============= drm_cmdline_parser (40 subtests) =============
[13:13:24] [PASSED] drm_test_cmdline_force_d_only
[13:13:24] [PASSED] drm_test_cmdline_force_D_only_dvi
[13:13:24] [PASSED] drm_test_cmdline_force_D_only_hdmi
[13:13:24] [PASSED] drm_test_cmdline_force_D_only_not_digital
[13:13:24] [PASSED] drm_test_cmdline_force_e_only
[13:13:24] [PASSED] drm_test_cmdline_res
[13:13:24] [PASSED] drm_test_cmdline_res_vesa
[13:13:24] [PASSED] drm_test_cmdline_res_vesa_rblank
[13:13:24] [PASSED] drm_test_cmdline_res_rblank
[13:13:24] [PASSED] drm_test_cmdline_res_bpp
[13:13:24] [PASSED] drm_test_cmdline_res_refresh
[13:13:24] [PASSED] drm_test_cmdline_res_bpp_refresh
[13:13:24] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced
[13:13:24] [PASSED] drm_test_cmdline_res_bpp_refresh_margins
[13:13:24] [PASSED] drm_test_cmdline_res_bpp_refresh_force_off
[13:13:24] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on
[13:13:24] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_analog
[13:13:24] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_digital
[13:13:24] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced_margins_force_on
[13:13:24] [PASSED] drm_test_cmdline_res_margins_force_on
[13:13:24] [PASSED] drm_test_cmdline_res_vesa_margins
[13:13:24] [PASSED] drm_test_cmdline_name
[13:13:24] [PASSED] drm_test_cmdline_name_bpp
[13:13:24] [PASSED] drm_test_cmdline_name_option
[13:13:24] [PASSED] drm_test_cmdline_name_bpp_option
[13:13:24] [PASSED] drm_test_cmdline_rotate_0
[13:13:24] [PASSED] drm_test_cmdline_rotate_90
[13:13:24] [PASSED] drm_test_cmdline_rotate_180
[13:13:24] [PASSED] drm_test_cmdline_rotate_270
[13:13:24] [PASSED] drm_test_cmdline_hmirror
[13:13:24] [PASSED] drm_test_cmdline_vmirror
[13:13:24] [PASSED] drm_test_cmdline_margin_options
[13:13:24] [PASSED] drm_test_cmdline_multiple_options
[13:13:24] [PASSED] drm_test_cmdline_bpp_extra_and_option
[13:13:24] [PASSED] drm_test_cmdline_extra_and_option
[13:13:24] [PASSED] drm_test_cmdline_freestanding_options
[13:13:24] [PASSED] drm_test_cmdline_freestanding_force_e_and_options
[13:13:24] [PASSED] drm_test_cmdline_panel_orientation
[13:13:24] ================ drm_test_cmdline_invalid =================
[13:13:24] [PASSED] margin_only
[13:13:24] [PASSED] interlace_only
[13:13:24] [PASSED] res_missing_x
[13:13:24] [PASSED] res_missing_y
[13:13:24] [PASSED] res_bad_y
[13:13:24] [PASSED] res_missing_y_bpp
[13:13:24] [PASSED] res_bad_bpp
[13:13:24] [PASSED] res_bad_refresh
[13:13:24] [PASSED] res_bpp_refresh_force_on_off
[13:13:24] [PASSED] res_invalid_mode
[13:13:24] [PASSED] res_bpp_wrong_place_mode
[13:13:24] [PASSED] name_bpp_refresh
[13:13:24] [PASSED] name_refresh
[13:13:24] [PASSED] name_refresh_wrong_mode
[13:13:24] [PASSED] name_refresh_invalid_mode
[13:13:24] [PASSED] rotate_multiple
[13:13:24] [PASSED] rotate_invalid_val
[13:13:24] [PASSED] rotate_truncated
[13:13:24] [PASSED] invalid_option
[13:13:24] [PASSED] invalid_tv_option
[13:13:24] [PASSED] truncated_tv_option
[13:13:24] ============ [PASSED] drm_test_cmdline_invalid =============
[13:13:24] =============== drm_test_cmdline_tv_options ===============
[13:13:24] [PASSED] NTSC
[13:13:24] [PASSED] NTSC_443
[13:13:24] [PASSED] NTSC_J
[13:13:24] [PASSED] PAL
[13:13:24] [PASSED] PAL_M
[13:13:24] [PASSED] PAL_N
[13:13:24] [PASSED] SECAM
[13:13:24] [PASSED] MONO_525
[13:13:24] [PASSED] MONO_625
[13:13:24] =========== [PASSED] drm_test_cmdline_tv_options ===========
[13:13:24] =============== [PASSED] drm_cmdline_parser ================
[13:13:24] ========== drmm_connector_hdmi_init (20 subtests) ==========
[13:13:24] [PASSED] drm_test_connector_hdmi_init_valid
[13:13:24] [PASSED] drm_test_connector_hdmi_init_bpc_8
[13:13:24] [PASSED] drm_test_connector_hdmi_init_bpc_10
[13:13:24] [PASSED] drm_test_connector_hdmi_init_bpc_12
[13:13:24] [PASSED] drm_test_connector_hdmi_init_bpc_invalid
[13:13:24] [PASSED] drm_test_connector_hdmi_init_bpc_null
[13:13:24] [PASSED] drm_test_connector_hdmi_init_formats_empty
[13:13:24] [PASSED] drm_test_connector_hdmi_init_formats_no_rgb
[13:13:24] === drm_test_connector_hdmi_init_formats_yuv420_allowed ===
[13:13:24] [PASSED] supported_formats=0x9 yuv420_allowed=1
[13:13:24] [PASSED] supported_formats=0x9 yuv420_allowed=0
[13:13:24] [PASSED] supported_formats=0x5 yuv420_allowed=1
[13:13:24] [PASSED] supported_formats=0x5 yuv420_allowed=0
[13:13:24] === [PASSED] drm_test_connector_hdmi_init_formats_yuv420_allowed ===
[13:13:24] [PASSED] drm_test_connector_hdmi_init_null_ddc
[13:13:24] [PASSED] drm_test_connector_hdmi_init_null_product
[13:13:24] [PASSED] drm_test_connector_hdmi_init_null_vendor
[13:13:24] [PASSED] drm_test_connector_hdmi_init_product_length_exact
[13:13:24] [PASSED] drm_test_connector_hdmi_init_product_length_too_long
[13:13:24] [PASSED] drm_test_connector_hdmi_init_product_valid
[13:13:24] [PASSED] drm_test_connector_hdmi_init_vendor_length_exact
[13:13:24] [PASSED] drm_test_connector_hdmi_init_vendor_length_too_long
[13:13:24] [PASSED] drm_test_connector_hdmi_init_vendor_valid
[13:13:24] ========= drm_test_connector_hdmi_init_type_valid =========
[13:13:24] [PASSED] HDMI-A
[13:13:24] [PASSED] HDMI-B
[13:13:24] ===== [PASSED] drm_test_connector_hdmi_init_type_valid =====
[13:13:24] ======== drm_test_connector_hdmi_init_type_invalid ========
[13:13:24] [PASSED] Unknown
[13:13:24] [PASSED] VGA
[13:13:24] [PASSED] DVI-I
[13:13:24] [PASSED] DVI-D
[13:13:24] [PASSED] DVI-A
[13:13:24] [PASSED] Composite
[13:13:24] [PASSED] SVIDEO
[13:13:24] [PASSED] LVDS
[13:13:24] [PASSED] Component
[13:13:24] [PASSED] DIN
[13:13:24] [PASSED] DP
[13:13:24] [PASSED] TV
[13:13:24] [PASSED] eDP
[13:13:24] [PASSED] Virtual
[13:13:24] [PASSED] DSI
[13:13:24] [PASSED] DPI
[13:13:24] [PASSED] Writeback
[13:13:24] [PASSED] SPI
[13:13:24] [PASSED] USB
[13:13:24] ==== [PASSED] drm_test_connector_hdmi_init_type_invalid ====
[13:13:24] ============ [PASSED] drmm_connector_hdmi_init =============
[13:13:24] ============= drmm_connector_init (3 subtests) =============
[13:13:24] [PASSED] drm_test_drmm_connector_init
[13:13:24] [PASSED] drm_test_drmm_connector_init_null_ddc
[13:13:24] ========= drm_test_drmm_connector_init_type_valid =========
[13:13:24] [PASSED] Unknown
[13:13:24] [PASSED] VGA
[13:13:24] [PASSED] DVI-I
[13:13:24] [PASSED] DVI-D
[13:13:24] [PASSED] DVI-A
[13:13:24] [PASSED] Composite
[13:13:24] [PASSED] SVIDEO
[13:13:24] [PASSED] LVDS
[13:13:24] [PASSED] Component
[13:13:24] [PASSED] DIN
[13:13:24] [PASSED] DP
[13:13:24] [PASSED] HDMI-A
[13:13:24] [PASSED] HDMI-B
[13:13:24] [PASSED] TV
[13:13:24] [PASSED] eDP
[13:13:24] [PASSED] Virtual
[13:13:24] [PASSED] DSI
[13:13:24] [PASSED] DPI
[13:13:24] [PASSED] Writeback
[13:13:24] [PASSED] SPI
[13:13:24] [PASSED] USB
[13:13:24] ===== [PASSED] drm_test_drmm_connector_init_type_valid =====
[13:13:24] =============== [PASSED] drmm_connector_init ===============
[13:13:24] ========= drm_connector_dynamic_init (6 subtests) ==========
[13:13:24] [PASSED] drm_test_drm_connector_dynamic_init
[13:13:24] [PASSED] drm_test_drm_connector_dynamic_init_null_ddc
[13:13:24] [PASSED] drm_test_drm_connector_dynamic_init_not_added
[13:13:24] [PASSED] drm_test_drm_connector_dynamic_init_properties
[13:13:24] ===== drm_test_drm_connector_dynamic_init_type_valid ======
[13:13:24] [PASSED] Unknown
[13:13:24] [PASSED] VGA
[13:13:24] [PASSED] DVI-I
[13:13:24] [PASSED] DVI-D
[13:13:24] [PASSED] DVI-A
[13:13:24] [PASSED] Composite
[13:13:24] [PASSED] SVIDEO
[13:13:24] [PASSED] LVDS
[13:13:24] [PASSED] Component
[13:13:24] [PASSED] DIN
[13:13:24] [PASSED] DP
[13:13:24] [PASSED] HDMI-A
[13:13:24] [PASSED] HDMI-B
[13:13:24] [PASSED] TV
[13:13:24] [PASSED] eDP
[13:13:24] [PASSED] Virtual
[13:13:24] [PASSED] DSI
[13:13:24] [PASSED] DPI
[13:13:24] [PASSED] Writeback
[13:13:24] [PASSED] SPI
[13:13:24] [PASSED] USB
[13:13:24] = [PASSED] drm_test_drm_connector_dynamic_init_type_valid ==
[13:13:24] ======== drm_test_drm_connector_dynamic_init_name =========
[13:13:24] [PASSED] Unknown
[13:13:24] [PASSED] VGA
[13:13:24] [PASSED] DVI-I
[13:13:24] [PASSED] DVI-D
[13:13:24] [PASSED] DVI-A
[13:13:24] [PASSED] Composite
[13:13:24] [PASSED] SVIDEO
[13:13:24] [PASSED] LVDS
[13:13:24] [PASSED] Component
[13:13:24] [PASSED] DIN
[13:13:24] [PASSED] DP
[13:13:24] [PASSED] HDMI-A
[13:13:24] [PASSED] HDMI-B
[13:13:24] [PASSED] TV
[13:13:24] [PASSED] eDP
[13:13:24] [PASSED] Virtual
[13:13:24] [PASSED] DSI
[13:13:24] [PASSED] DPI
[13:13:24] [PASSED] Writeback
[13:13:24] [PASSED] SPI
[13:13:24] [PASSED] USB
[13:13:24] ==== [PASSED] drm_test_drm_connector_dynamic_init_name =====
[13:13:24] =========== [PASSED] drm_connector_dynamic_init ============
[13:13:24] ==== drm_connector_dynamic_register_early (4 subtests) =====
[13:13:24] [PASSED] drm_test_drm_connector_dynamic_register_early_on_list
[13:13:24] [PASSED] drm_test_drm_connector_dynamic_register_early_defer
[13:13:24] [PASSED] drm_test_drm_connector_dynamic_register_early_no_init
[13:13:24] [PASSED] drm_test_drm_connector_dynamic_register_early_no_mode_object
[13:13:24] ====== [PASSED] drm_connector_dynamic_register_early =======
[13:13:24] ======= drm_connector_dynamic_register (7 subtests) ========
[13:13:24] [PASSED] drm_test_drm_connector_dynamic_register_on_list
[13:13:24] [PASSED] drm_test_drm_connector_dynamic_register_no_defer
[13:13:24] [PASSED] drm_test_drm_connector_dynamic_register_no_init
[13:13:24] [PASSED] drm_test_drm_connector_dynamic_register_mode_object
[13:13:24] [PASSED] drm_test_drm_connector_dynamic_register_sysfs
[13:13:24] [PASSED] drm_test_drm_connector_dynamic_register_sysfs_name
[13:13:24] [PASSED] drm_test_drm_connector_dynamic_register_debugfs
[13:13:24] ========= [PASSED] drm_connector_dynamic_register ==========
[13:13:24] = drm_connector_attach_broadcast_rgb_property (2 subtests) =
[13:13:24] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property
[13:13:24] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property_hdmi_connector
[13:13:24] === [PASSED] drm_connector_attach_broadcast_rgb_property ===
[13:13:24] ========== drm_get_tv_mode_from_name (2 subtests) ==========
[13:13:24] ========== drm_test_get_tv_mode_from_name_valid ===========
[13:13:24] [PASSED] NTSC
[13:13:24] [PASSED] NTSC-443
[13:13:24] [PASSED] NTSC-J
[13:13:24] [PASSED] PAL
[13:13:24] [PASSED] PAL-M
[13:13:24] [PASSED] PAL-N
[13:13:24] [PASSED] SECAM
[13:13:24] [PASSED] Mono
[13:13:24] ====== [PASSED] drm_test_get_tv_mode_from_name_valid =======
[13:13:24] [PASSED] drm_test_get_tv_mode_from_name_truncated
[13:13:24] ============ [PASSED] drm_get_tv_mode_from_name ============
[13:13:24] = drm_test_connector_hdmi_compute_mode_clock (12 subtests) =
[13:13:24] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb
[13:13:24] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc
[13:13:24] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc_vic_1
[13:13:24] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc
[13:13:24] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc_vic_1
[13:13:24] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_double
[13:13:24] = drm_test_connector_hdmi_compute_mode_clock_yuv420_valid =
[13:13:24] [PASSED] VIC 96
[13:13:24] [PASSED] VIC 97
[13:13:24] [PASSED] VIC 101
[13:13:24] [PASSED] VIC 102
[13:13:24] [PASSED] VIC 106
[13:13:24] [PASSED] VIC 107
[13:13:24] === [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_valid ===
[13:13:24] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_10_bpc
[13:13:24] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_12_bpc
[13:13:24] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_8_bpc
[13:13:24] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_10_bpc
[13:13:24] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_12_bpc
[13:13:24] === [PASSED] drm_test_connector_hdmi_compute_mode_clock ====
[13:13:24] == drm_hdmi_connector_get_broadcast_rgb_name (2 subtests) ==
[13:13:24] === drm_test_drm_hdmi_connector_get_broadcast_rgb_name ====
[13:13:24] [PASSED] Automatic
[13:13:24] [PASSED] Full
[13:13:24] [PASSED] Limited 16:235
[13:13:24] === [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name ===
[13:13:24] [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name_invalid
[13:13:24] ==== [PASSED] drm_hdmi_connector_get_broadcast_rgb_name ====
[13:13:24] == drm_hdmi_connector_get_output_format_name (2 subtests) ==
[13:13:24] === drm_test_drm_hdmi_connector_get_output_format_name ====
[13:13:24] [PASSED] RGB
[13:13:24] [PASSED] YUV 4:2:0
[13:13:24] [PASSED] YUV 4:2:2
[13:13:24] [PASSED] YUV 4:4:4
[13:13:24] === [PASSED] drm_test_drm_hdmi_connector_get_output_format_name ===
[13:13:24] [PASSED] drm_test_drm_hdmi_connector_get_output_format_name_invalid
[13:13:24] ==== [PASSED] drm_hdmi_connector_get_output_format_name ====
[13:13:24] ============= drm_damage_helper (21 subtests) ==============
[13:13:24] [PASSED] drm_test_damage_iter_no_damage
[13:13:24] [PASSED] drm_test_damage_iter_no_damage_fractional_src
[13:13:24] [PASSED] drm_test_damage_iter_no_damage_src_moved
[13:13:24] [PASSED] drm_test_damage_iter_no_damage_fractional_src_moved
[13:13:24] [PASSED] drm_test_damage_iter_no_damage_not_visible
[13:13:24] [PASSED] drm_test_damage_iter_no_damage_no_crtc
[13:13:24] [PASSED] drm_test_damage_iter_no_damage_no_fb
[13:13:24] [PASSED] drm_test_damage_iter_simple_damage
[13:13:24] [PASSED] drm_test_damage_iter_single_damage
[13:13:24] [PASSED] drm_test_damage_iter_single_damage_intersect_src
[13:13:24] [PASSED] drm_test_damage_iter_single_damage_outside_src
[13:13:24] [PASSED] drm_test_damage_iter_single_damage_fractional_src
[13:13:24] [PASSED] drm_test_damage_iter_single_damage_intersect_fractional_src
[13:13:24] [PASSED] drm_test_damage_iter_single_damage_outside_fractional_src
[13:13:24] [PASSED] drm_test_damage_iter_single_damage_src_moved
[13:13:24] [PASSED] drm_test_damage_iter_single_damage_fractional_src_moved
[13:13:24] [PASSED] drm_test_damage_iter_damage
[13:13:24] [PASSED] drm_test_damage_iter_damage_one_intersect
[13:13:24] [PASSED] drm_test_damage_iter_damage_one_outside
[13:13:24] [PASSED] drm_test_damage_iter_damage_src_moved
[13:13:24] [PASSED] drm_test_damage_iter_damage_not_visible
[13:13:24] ================ [PASSED] drm_damage_helper ================
[13:13:24] ============== drm_dp_mst_helper (3 subtests) ==============
[13:13:24] ============== drm_test_dp_mst_calc_pbn_mode ==============
[13:13:24] [PASSED] Clock 154000 BPP 30 DSC disabled
[13:13:24] [PASSED] Clock 234000 BPP 30 DSC disabled
[13:13:24] [PASSED] Clock 297000 BPP 24 DSC disabled
[13:13:24] [PASSED] Clock 332880 BPP 24 DSC enabled
[13:13:24] [PASSED] Clock 324540 BPP 24 DSC enabled
[13:13:24] ========== [PASSED] drm_test_dp_mst_calc_pbn_mode ==========
[13:13:24] ============== drm_test_dp_mst_calc_pbn_div ===============
[13:13:24] [PASSED] Link rate 2000000 lane count 4
[13:13:24] [PASSED] Link rate 2000000 lane count 2
[13:13:24] [PASSED] Link rate 2000000 lane count 1
[13:13:24] [PASSED] Link rate 1350000 lane count 4
[13:13:24] [PASSED] Link rate 1350000 lane count 2
[13:13:24] [PASSED] Link rate 1350000 lane count 1
[13:13:24] [PASSED] Link rate 1000000 lane count 4
[13:13:24] [PASSED] Link rate 1000000 lane count 2
[13:13:24] [PASSED] Link rate 1000000 lane count 1
[13:13:24] [PASSED] Link rate 810000 lane count 4
[13:13:24] [PASSED] Link rate 810000 lane count 2
[13:13:24] [PASSED] Link rate 810000 lane count 1
[13:13:24] [PASSED] Link rate 540000 lane count 4
[13:13:24] [PASSED] Link rate 540000 lane count 2
[13:13:24] [PASSED] Link rate 540000 lane count 1
[13:13:24] [PASSED] Link rate 270000 lane count 4
[13:13:24] [PASSED] Link rate 270000 lane count 2
[13:13:24] [PASSED] Link rate 270000 lane count 1
[13:13:24] [PASSED] Link rate 162000 lane count 4
[13:13:24] [PASSED] Link rate 162000 lane count 2
[13:13:24] [PASSED] Link rate 162000 lane count 1
[13:13:24] ========== [PASSED] drm_test_dp_mst_calc_pbn_div ===========
[13:13:24] ========= drm_test_dp_mst_sideband_msg_req_decode =========
[13:13:24] [PASSED] DP_ENUM_PATH_RESOURCES with port number
[13:13:24] [PASSED] DP_POWER_UP_PHY with port number
[13:13:24] [PASSED] DP_POWER_DOWN_PHY with port number
[13:13:24] [PASSED] DP_ALLOCATE_PAYLOAD with SDP stream sinks
[13:13:24] [PASSED] DP_ALLOCATE_PAYLOAD with port number
[13:13:24] [PASSED] DP_ALLOCATE_PAYLOAD with VCPI
[13:13:24] [PASSED] DP_ALLOCATE_PAYLOAD with PBN
[13:13:24] [PASSED] DP_QUERY_PAYLOAD with port number
[13:13:24] [PASSED] DP_QUERY_PAYLOAD with VCPI
[13:13:24] [PASSED] DP_REMOTE_DPCD_READ with port number
[13:13:24] [PASSED] DP_REMOTE_DPCD_READ with DPCD address
[13:13:24] [PASSED] DP_REMOTE_DPCD_READ with max number of bytes
[13:13:24] [PASSED] DP_REMOTE_DPCD_WRITE with port number
[13:13:24] [PASSED] DP_REMOTE_DPCD_WRITE with DPCD address
[13:13:24] [PASSED] DP_REMOTE_DPCD_WRITE with data array
[13:13:24] [PASSED] DP_REMOTE_I2C_READ with port number
[13:13:24] [PASSED] DP_REMOTE_I2C_READ with I2C device ID
[13:13:24] [PASSED] DP_REMOTE_I2C_READ with transactions array
[13:13:24] [PASSED] DP_REMOTE_I2C_WRITE with port number
[13:13:24] [PASSED] DP_REMOTE_I2C_WRITE with I2C device ID
[13:13:24] [PASSED] DP_REMOTE_I2C_WRITE with data array
[13:13:24] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream ID
[13:13:24] [PASSED] DP_QUERY_STREAM_ENC_STATUS with client ID
[13:13:24] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream event
[13:13:24] [PASSED] DP_QUERY_STREAM_ENC_STATUS with valid stream event
[13:13:24] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream behavior
[13:13:24] [PASSED] DP_QUERY_STREAM_ENC_STATUS with a valid stream behavior
[13:13:24] ===== [PASSED] drm_test_dp_mst_sideband_msg_req_decode =====
[13:13:24] ================ [PASSED] drm_dp_mst_helper ================
[13:13:24] ================== drm_exec (7 subtests) ===================
[13:13:24] [PASSED] sanitycheck
[13:13:24] [PASSED] test_lock
[13:13:24] [PASSED] test_lock_unlock
[13:13:24] [PASSED] test_duplicates
[13:13:24] [PASSED] test_prepare
[13:13:24] [PASSED] test_prepare_array
[13:13:24] [PASSED] test_multiple_loops
[13:13:24] ==================== [PASSED] drm_exec =====================
[13:13:24] =========== drm_format_helper_test (17 subtests) ===========
[13:13:24] ============== drm_test_fb_xrgb8888_to_gray8 ==============
[13:13:24] [PASSED] single_pixel_source_buffer
[13:13:24] [PASSED] single_pixel_clip_rectangle
[13:13:24] [PASSED] well_known_colors
[13:13:24] [PASSED] destination_pitch
[13:13:24] ========== [PASSED] drm_test_fb_xrgb8888_to_gray8 ==========
[13:13:24] ============= drm_test_fb_xrgb8888_to_rgb332 ==============
[13:13:24] [PASSED] single_pixel_source_buffer
[13:13:24] [PASSED] single_pixel_clip_rectangle
[13:13:24] [PASSED] well_known_colors
[13:13:24] [PASSED] destination_pitch
[13:13:24] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb332 ==========
[13:13:24] ============= drm_test_fb_xrgb8888_to_rgb565 ==============
[13:13:24] [PASSED] single_pixel_source_buffer
[13:13:24] [PASSED] single_pixel_clip_rectangle
[13:13:24] [PASSED] well_known_colors
[13:13:24] [PASSED] destination_pitch
[13:13:24] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb565 ==========
[13:13:24] ============ drm_test_fb_xrgb8888_to_xrgb1555 =============
[13:13:24] [PASSED] single_pixel_source_buffer
[13:13:24] [PASSED] single_pixel_clip_rectangle
[13:13:24] [PASSED] well_known_colors
[13:13:24] [PASSED] destination_pitch
[13:13:24] ======== [PASSED] drm_test_fb_xrgb8888_to_xrgb1555 =========
[13:13:24] ============ drm_test_fb_xrgb8888_to_argb1555 =============
[13:13:24] [PASSED] single_pixel_source_buffer
[13:13:24] [PASSED] single_pixel_clip_rectangle
[13:13:24] [PASSED] well_known_colors
[13:13:24] [PASSED] destination_pitch
[13:13:24] ======== [PASSED] drm_test_fb_xrgb8888_to_argb1555 =========
[13:13:24] ============ drm_test_fb_xrgb8888_to_rgba5551 =============
[13:13:24] [PASSED] single_pixel_source_buffer
[13:13:24] [PASSED] single_pixel_clip_rectangle
[13:13:24] [PASSED] well_known_colors
[13:13:24] [PASSED] destination_pitch
[13:13:24] ======== [PASSED] drm_test_fb_xrgb8888_to_rgba5551 =========
[13:13:24] ============= drm_test_fb_xrgb8888_to_rgb888 ==============
[13:13:24] [PASSED] single_pixel_source_buffer
[13:13:24] [PASSED] single_pixel_clip_rectangle
[13:13:24] [PASSED] well_known_colors
[13:13:24] [PASSED] destination_pitch
[13:13:24] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb888 ==========
[13:13:24] ============= drm_test_fb_xrgb8888_to_bgr888 ==============
[13:13:24] [PASSED] single_pixel_source_buffer
[13:13:24] [PASSED] single_pixel_clip_rectangle
[13:13:24] [PASSED] well_known_colors
[13:13:24] [PASSED] destination_pitch
[13:13:24] ========= [PASSED] drm_test_fb_xrgb8888_to_bgr888 ==========
[13:13:24] ============ drm_test_fb_xrgb8888_to_argb8888 =============
[13:13:24] [PASSED] single_pixel_source_buffer
[13:13:24] [PASSED] single_pixel_clip_rectangle
[13:13:24] [PASSED] well_known_colors
[13:13:24] [PASSED] destination_pitch
[13:13:24] ======== [PASSED] drm_test_fb_xrgb8888_to_argb8888 =========
[13:13:24] =========== drm_test_fb_xrgb8888_to_xrgb2101010 ===========
[13:13:24] [PASSED] single_pixel_source_buffer
[13:13:24] [PASSED] single_pixel_clip_rectangle
[13:13:24] [PASSED] well_known_colors
[13:13:24] [PASSED] destination_pitch
[13:13:24] ======= [PASSED] drm_test_fb_xrgb8888_to_xrgb2101010 =======
[13:13:24] =========== drm_test_fb_xrgb8888_to_argb2101010 ===========
[13:13:24] [PASSED] single_pixel_source_buffer
[13:13:24] [PASSED] single_pixel_clip_rectangle
[13:13:24] [PASSED] well_known_colors
[13:13:24] [PASSED] destination_pitch
[13:13:24] ======= [PASSED] drm_test_fb_xrgb8888_to_argb2101010 =======
[13:13:24] ============== drm_test_fb_xrgb8888_to_mono ===============
[13:13:24] [PASSED] single_pixel_source_buffer
[13:13:24] [PASSED] single_pixel_clip_rectangle
[13:13:24] [PASSED] well_known_colors
[13:13:24] [PASSED] destination_pitch
[13:13:24] ========== [PASSED] drm_test_fb_xrgb8888_to_mono ===========
[13:13:24] ==================== drm_test_fb_swab =====================
[13:13:24] [PASSED] single_pixel_source_buffer
[13:13:24] [PASSED] single_pixel_clip_rectangle
[13:13:24] [PASSED] well_known_colors
[13:13:24] [PASSED] destination_pitch
[13:13:24] ================ [PASSED] drm_test_fb_swab =================
[13:13:24] ============ drm_test_fb_xrgb8888_to_xbgr8888 =============
[13:13:24] [PASSED] single_pixel_source_buffer
[13:13:24] [PASSED] single_pixel_clip_rectangle
[13:13:24] [PASSED] well_known_colors
[13:13:24] [PASSED] destination_pitch
[13:13:24] ======== [PASSED] drm_test_fb_xrgb8888_to_xbgr8888 =========
[13:13:24] ============ drm_test_fb_xrgb8888_to_abgr8888 =============
[13:13:24] [PASSED] single_pixel_source_buffer
[13:13:24] [PASSED] single_pixel_clip_rectangle
[13:13:24] [PASSED] well_known_colors
[13:13:24] [PASSED] destination_pitch
[13:13:24] ======== [PASSED] drm_test_fb_xrgb8888_to_abgr8888 =========
[13:13:24] ================= drm_test_fb_clip_offset =================
[13:13:24] [PASSED] pass through
[13:13:24] [PASSED] horizontal offset
[13:13:24] [PASSED] vertical offset
[13:13:24] [PASSED] horizontal and vertical offset
[13:13:24] [PASSED] horizontal offset (custom pitch)
[13:13:24] [PASSED] vertical offset (custom pitch)
[13:13:24] [PASSED] horizontal and vertical offset (custom pitch)
[13:13:24] ============= [PASSED] drm_test_fb_clip_offset =============
[13:13:24] =================== drm_test_fb_memcpy ====================
[13:13:24] [PASSED] single_pixel_source_buffer: XR24 little-endian (0x34325258)
[13:13:24] [PASSED] single_pixel_source_buffer: XRA8 little-endian (0x38415258)
[13:13:24] [PASSED] single_pixel_source_buffer: YU24 little-endian (0x34325559)
[13:13:24] [PASSED] single_pixel_clip_rectangle: XB24 little-endian (0x34324258)
[13:13:24] [PASSED] single_pixel_clip_rectangle: XRA8 little-endian (0x38415258)
[13:13:24] [PASSED] single_pixel_clip_rectangle: YU24 little-endian (0x34325559)
[13:13:24] [PASSED] well_known_colors: XB24 little-endian (0x34324258)
[13:13:24] [PASSED] well_known_colors: XRA8 little-endian (0x38415258)
[13:13:24] [PASSED] well_known_colors: YU24 little-endian (0x34325559)
[13:13:24] [PASSED] destination_pitch: XB24 little-endian (0x34324258)
[13:13:24] [PASSED] destination_pitch: XRA8 little-endian (0x38415258)
[13:13:24] [PASSED] destination_pitch: YU24 little-endian (0x34325559)
[13:13:24] =============== [PASSED] drm_test_fb_memcpy ================
[13:13:24] ============= [PASSED] drm_format_helper_test ==============
[13:13:24] ================= drm_format (18 subtests) =================
[13:13:24] [PASSED] drm_test_format_block_width_invalid
[13:13:24] [PASSED] drm_test_format_block_width_one_plane
[13:13:24] [PASSED] drm_test_format_block_width_two_plane
[13:13:24] [PASSED] drm_test_format_block_width_three_plane
[13:13:24] [PASSED] drm_test_format_block_width_tiled
[13:13:24] [PASSED] drm_test_format_block_height_invalid
[13:13:24] [PASSED] drm_test_format_block_height_one_plane
[13:13:24] [PASSED] drm_test_format_block_height_two_plane
[13:13:24] [PASSED] drm_test_format_block_height_three_plane
[13:13:24] [PASSED] drm_test_format_block_height_tiled
[13:13:24] [PASSED] drm_test_format_min_pitch_invalid
[13:13:24] [PASSED] drm_test_format_min_pitch_one_plane_8bpp
[13:13:24] [PASSED] drm_test_format_min_pitch_one_plane_16bpp
[13:13:24] [PASSED] drm_test_format_min_pitch_one_plane_24bpp
[13:13:24] [PASSED] drm_test_format_min_pitch_one_plane_32bpp
[13:13:24] [PASSED] drm_test_format_min_pitch_two_plane
[13:13:24] [PASSED] drm_test_format_min_pitch_three_plane_8bpp
[13:13:24] [PASSED] drm_test_format_min_pitch_tiled
[13:13:24] =================== [PASSED] drm_format ====================
[13:13:24] ============== drm_framebuffer (10 subtests) ===============
[13:13:24] ========== drm_test_framebuffer_check_src_coords ==========
[13:13:24] [PASSED] Success: source fits into fb
[13:13:24] [PASSED] Fail: overflowing fb with x-axis coordinate
[13:13:24] [PASSED] Fail: overflowing fb with y-axis coordinate
[13:13:24] [PASSED] Fail: overflowing fb with source width
[13:13:24] [PASSED] Fail: overflowing fb with source height
[13:13:24] ====== [PASSED] drm_test_framebuffer_check_src_coords ======
[13:13:24] [PASSED] drm_test_framebuffer_cleanup
[13:13:24] =============== drm_test_framebuffer_create ===============
[13:13:24] [PASSED] ABGR8888 normal sizes
[13:13:24] [PASSED] ABGR8888 max sizes
[13:13:24] [PASSED] ABGR8888 pitch greater than min required
[13:13:24] [PASSED] ABGR8888 pitch less than min required
[13:13:24] [PASSED] ABGR8888 Invalid width
[13:13:24] [PASSED] ABGR8888 Invalid buffer handle
[13:13:24] [PASSED] No pixel format
[13:13:24] [PASSED] ABGR8888 Width 0
[13:13:24] [PASSED] ABGR8888 Height 0
[13:13:24] [PASSED] ABGR8888 Out of bound height * pitch combination
[13:13:24] [PASSED] ABGR8888 Large buffer offset
[13:13:24] [PASSED] ABGR8888 Buffer offset for inexistent plane
[13:13:24] [PASSED] ABGR8888 Invalid flag
[13:13:24] [PASSED] ABGR8888 Set DRM_MODE_FB_MODIFIERS without modifiers
[13:13:24] [PASSED] ABGR8888 Valid buffer modifier
[13:13:24] [PASSED] ABGR8888 Invalid buffer modifier(DRM_FORMAT_MOD_SAMSUNG_64_32_TILE)
[13:13:24] [PASSED] ABGR8888 Extra pitches without DRM_MODE_FB_MODIFIERS
[13:13:24] [PASSED] ABGR8888 Extra pitches with DRM_MODE_FB_MODIFIERS
[13:13:25] [PASSED] NV12 Normal sizes
[13:13:25] [PASSED] NV12 Max sizes
[13:13:25] [PASSED] NV12 Invalid pitch
[13:13:25] [PASSED] NV12 Invalid modifier/missing DRM_MODE_FB_MODIFIERS flag
[13:13:25] [PASSED] NV12 different modifier per-plane
[13:13:25] [PASSED] NV12 with DRM_FORMAT_MOD_SAMSUNG_64_32_TILE
[13:13:25] [PASSED] NV12 Valid modifiers without DRM_MODE_FB_MODIFIERS
[13:13:25] [PASSED] NV12 Modifier for inexistent plane
[13:13:25] [PASSED] NV12 Handle for inexistent plane
[13:13:25] [PASSED] NV12 Handle for inexistent plane without DRM_MODE_FB_MODIFIERS
[13:13:25] [PASSED] YVU420 DRM_MODE_FB_MODIFIERS set without modifier
[13:13:25] [PASSED] YVU420 Normal sizes
[13:13:25] [PASSED] YVU420 Max sizes
[13:13:25] [PASSED] YVU420 Invalid pitch
[13:13:25] [PASSED] YVU420 Different pitches
[13:13:25] [PASSED] YVU420 Different buffer offsets/pitches
[13:13:25] [PASSED] YVU420 Modifier set just for plane 0, without DRM_MODE_FB_MODIFIERS
[13:13:25] [PASSED] YVU420 Modifier set just for planes 0, 1, without DRM_MODE_FB_MODIFIERS
[13:13:25] [PASSED] YVU420 Modifier set just for plane 0, 1, with DRM_MODE_FB_MODIFIERS
[13:13:25] [PASSED] YVU420 Valid modifier
[13:13:25] [PASSED] YVU420 Different modifiers per plane
[13:13:25] [PASSED] YVU420 Modifier for inexistent plane
[13:13:25] [PASSED] YUV420_10BIT Invalid modifier(DRM_FORMAT_MOD_LINEAR)
[13:13:25] [PASSED] X0L2 Normal sizes
[13:13:25] [PASSED] X0L2 Max sizes
[13:13:25] [PASSED] X0L2 Invalid pitch
[13:13:25] [PASSED] X0L2 Pitch greater than minimum required
[13:13:25] [PASSED] X0L2 Handle for inexistent plane
[13:13:25] [PASSED] X0L2 Offset for inexistent plane, without DRM_MODE_FB_MODIFIERS set
[13:13:25] [PASSED] X0L2 Modifier without DRM_MODE_FB_MODIFIERS set
[13:13:25] [PASSED] X0L2 Valid modifier
[13:13:25] [PASSED] X0L2 Modifier for inexistent plane
[13:13:25] =========== [PASSED] drm_test_framebuffer_create ===========
[13:13:25] [PASSED] drm_test_framebuffer_free
[13:13:25] [PASSED] drm_test_framebuffer_init
[13:13:25] [PASSED] drm_test_framebuffer_init_bad_format
[13:13:25] [PASSED] drm_test_framebuffer_init_dev_mismatch
[13:13:25] [PASSED] drm_test_framebuffer_lookup
[13:13:25] [PASSED] drm_test_framebuffer_lookup_inexistent
[13:13:25] [PASSED] drm_test_framebuffer_modifiers_not_supported
[13:13:25] ================= [PASSED] drm_framebuffer =================
[13:13:25] ================ drm_gem_shmem (8 subtests) ================
[13:13:25] [PASSED] drm_gem_shmem_test_obj_create
[13:13:25] [PASSED] drm_gem_shmem_test_obj_create_private
[13:13:25] [PASSED] drm_gem_shmem_test_pin_pages
[13:13:25] [PASSED] drm_gem_shmem_test_vmap
[13:13:25] [PASSED] drm_gem_shmem_test_get_sg_table
[13:13:25] [PASSED] drm_gem_shmem_test_get_pages_sgt
[13:13:25] [PASSED] drm_gem_shmem_test_madvise
[13:13:25] [PASSED] drm_gem_shmem_test_purge
[13:13:25] ================== [PASSED] drm_gem_shmem ==================
[13:13:25] === drm_atomic_helper_connector_hdmi_check (29 subtests) ===
[13:13:25] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode
[13:13:25] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode_vic_1
[13:13:25] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode
[13:13:25] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode_vic_1
[13:13:25] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode
[13:13:25] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode_vic_1
[13:13:25] ====== drm_test_check_broadcast_rgb_cea_mode_yuv420 =======
[13:13:25] [PASSED] Automatic
[13:13:25] [PASSED] Full
[13:13:25] [PASSED] Limited 16:235
[13:13:25] == [PASSED] drm_test_check_broadcast_rgb_cea_mode_yuv420 ===
[13:13:25] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_changed
[13:13:25] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_not_changed
[13:13:25] [PASSED] drm_test_check_disable_connector
[13:13:25] [PASSED] drm_test_check_hdmi_funcs_reject_rate
[13:13:25] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_rgb
[13:13:25] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_yuv420
[13:13:25] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv422
[13:13:25] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv420
[13:13:25] [PASSED] drm_test_check_driver_unsupported_fallback_yuv420
[13:13:25] [PASSED] drm_test_check_output_bpc_crtc_mode_changed
[13:13:25] [PASSED] drm_test_check_output_bpc_crtc_mode_not_changed
[13:13:25] [PASSED] drm_test_check_output_bpc_dvi
[13:13:25] [PASSED] drm_test_check_output_bpc_format_vic_1
[13:13:25] [PASSED] drm_test_check_output_bpc_format_display_8bpc_only
[13:13:25] [PASSED] drm_test_check_output_bpc_format_display_rgb_only
[13:13:25] [PASSED] drm_test_check_output_bpc_format_driver_8bpc_only
[13:13:25] [PASSED] drm_test_check_output_bpc_format_driver_rgb_only
[13:13:25] [PASSED] drm_test_check_tmds_char_rate_rgb_8bpc
[13:13:25] [PASSED] drm_test_check_tmds_char_rate_rgb_10bpc
[13:13:25] [PASSED] drm_test_check_tmds_char_rate_rgb_12bpc
[13:13:25] ============ drm_test_check_hdmi_color_format =============
[13:13:25] [PASSED] AUTO -> RGB
[13:13:25] [PASSED] YCBCR422 -> YUV422
[13:13:25] [PASSED] YCBCR420 -> YUV420
[13:13:25] [PASSED] YCBCR444 -> YUV444
[13:13:25] [PASSED] RGB -> RGB
[13:13:25] ======== [PASSED] drm_test_check_hdmi_color_format =========
[13:13:25] ======== drm_test_check_hdmi_color_format_420_only ========
[13:13:25] [PASSED] RGB should fail
[13:13:25] [PASSED] YUV444 should fail
[13:13:25] [PASSED] YUV422 should fail
[13:13:25] [PASSED] YUV420 should work
[13:13:25] ==== [PASSED] drm_test_check_hdmi_color_format_420_only ====
[13:13:25] ===== [PASSED] drm_atomic_helper_connector_hdmi_check ======
[13:13:25] === drm_atomic_helper_connector_hdmi_reset (6 subtests) ====
[13:13:25] [PASSED] drm_test_check_broadcast_rgb_value
[13:13:25] [PASSED] drm_test_check_bpc_8_value
[13:13:25] [PASSED] drm_test_check_bpc_10_value
[13:13:25] [PASSED] drm_test_check_bpc_12_value
[13:13:25] [PASSED] drm_test_check_format_value
[13:13:25] [PASSED] drm_test_check_tmds_char_value
[13:13:25] ===== [PASSED] drm_atomic_helper_connector_hdmi_reset ======
[13:13:25] = drm_atomic_helper_connector_hdmi_mode_valid (7 subtests) =
[13:13:25] [PASSED] drm_test_check_mode_valid
[13:13:25] [PASSED] drm_test_check_mode_valid_reject
[13:13:25] [PASSED] drm_test_check_mode_valid_reject_rate
[13:13:25] [PASSED] drm_test_check_mode_valid_reject_max_clock
[13:13:25] [PASSED] drm_test_check_mode_valid_yuv420_only_max_clock
[13:13:25] [PASSED] drm_test_check_mode_valid_reject_yuv420_only_connector
[13:13:25] [PASSED] drm_test_check_mode_valid_accept_yuv420_also_connector_rgb
[13:13:25] === [PASSED] drm_atomic_helper_connector_hdmi_mode_valid ===
[13:13:25] = drm_atomic_helper_connector_hdmi_infoframes (5 subtests) =
[13:13:25] [PASSED] drm_test_check_infoframes
[13:13:25] [PASSED] drm_test_check_reject_avi_infoframe
[13:13:25] [PASSED] drm_test_check_reject_hdr_infoframe_bpc_8
[13:13:25] [PASSED] drm_test_check_reject_hdr_infoframe_bpc_10
[13:13:25] [PASSED] drm_test_check_reject_audio_infoframe
[13:13:25] === [PASSED] drm_atomic_helper_connector_hdmi_infoframes ===
[13:13:25] ================= drm_managed (2 subtests) =================
[13:13:25] [PASSED] drm_test_managed_release_action
[13:13:25] [PASSED] drm_test_managed_run_action
[13:13:25] =================== [PASSED] drm_managed ===================
[13:13:25] =================== drm_mm (6 subtests) ====================
[13:13:25] [PASSED] drm_test_mm_init
[13:13:25] [PASSED] drm_test_mm_debug
[13:13:25] [PASSED] drm_test_mm_align32
[13:13:25] [PASSED] drm_test_mm_align64
[13:13:25] [PASSED] drm_test_mm_lowest
[13:13:25] [PASSED] drm_test_mm_highest
[13:13:25] ===================== [PASSED] drm_mm ======================
[13:13:25] ============= drm_modes_analog_tv (5 subtests) =============
[13:13:25] [PASSED] drm_test_modes_analog_tv_mono_576i
[13:13:25] [PASSED] drm_test_modes_analog_tv_ntsc_480i
[13:13:25] [PASSED] drm_test_modes_analog_tv_ntsc_480i_inlined
[13:13:25] [PASSED] drm_test_modes_analog_tv_pal_576i
[13:13:25] [PASSED] drm_test_modes_analog_tv_pal_576i_inlined
[13:13:25] =============== [PASSED] drm_modes_analog_tv ===============
[13:13:25] ============== drm_plane_helper (2 subtests) ===============
[13:13:25] =============== drm_test_check_plane_state ================
[13:13:25] [PASSED] clipping_simple
[13:13:25] [PASSED] clipping_rotate_reflect
[13:13:25] [PASSED] positioning_simple
[13:13:25] [PASSED] upscaling
[13:13:25] [PASSED] downscaling
[13:13:25] [PASSED] rounding1
[13:13:25] [PASSED] rounding2
[13:13:25] [PASSED] rounding3
[13:13:25] [PASSED] rounding4
[13:13:25] =========== [PASSED] drm_test_check_plane_state ============
[13:13:25] =========== drm_test_check_invalid_plane_state ============
[13:13:25] [PASSED] positioning_invalid
[13:13:25] [PASSED] upscaling_invalid
[13:13:25] [PASSED] downscaling_invalid
[13:13:25] ======= [PASSED] drm_test_check_invalid_plane_state ========
[13:13:25] ================ [PASSED] drm_plane_helper =================
[13:13:25] ====== drm_connector_helper_tv_get_modes (1 subtest) =======
[13:13:25] ====== drm_test_connector_helper_tv_get_modes_check =======
[13:13:25] [PASSED] None
[13:13:25] [PASSED] PAL
[13:13:25] [PASSED] NTSC
[13:13:25] [PASSED] Both, NTSC Default
[13:13:25] [PASSED] Both, PAL Default
[13:13:25] [PASSED] Both, NTSC Default, with PAL on command-line
[13:13:25] [PASSED] Both, PAL Default, with NTSC on command-line
[13:13:25] == [PASSED] drm_test_connector_helper_tv_get_modes_check ===
[13:13:25] ======== [PASSED] drm_connector_helper_tv_get_modes ========
[13:13:25] ================== drm_rect (9 subtests) ===================
[13:13:25] [PASSED] drm_test_rect_clip_scaled_div_by_zero
[13:13:25] [PASSED] drm_test_rect_clip_scaled_not_clipped
[13:13:25] [PASSED] drm_test_rect_clip_scaled_clipped
[13:13:25] [PASSED] drm_test_rect_clip_scaled_signed_vs_unsigned
[13:13:25] ================= drm_test_rect_intersect =================
[13:13:25] [PASSED] top-left x bottom-right: 2x2+1+1 x 2x2+0+0
[13:13:25] [PASSED] top-right x bottom-left: 2x2+0+0 x 2x2+1-1
[13:13:25] [PASSED] bottom-left x top-right: 2x2+1-1 x 2x2+0+0
[13:13:25] [PASSED] bottom-right x top-left: 2x2+0+0 x 2x2+1+1
[13:13:25] [PASSED] right x left: 2x1+0+0 x 3x1+1+0
[13:13:25] [PASSED] left x right: 3x1+1+0 x 2x1+0+0
[13:13:25] [PASSED] up x bottom: 1x2+0+0 x 1x3+0-1
[13:13:25] [PASSED] bottom x up: 1x3+0-1 x 1x2+0+0
[13:13:25] [PASSED] touching corner: 1x1+0+0 x 2x2+1+1
[13:13:25] [PASSED] touching side: 1x1+0+0 x 1x1+1+0
[13:13:25] [PASSED] equal rects: 2x2+0+0 x 2x2+0+0
[13:13:25] [PASSED] inside another: 2x2+0+0 x 1x1+1+1
[13:13:25] [PASSED] far away: 1x1+0+0 x 1x1+3+6
[13:13:25] [PASSED] points intersecting: 0x0+5+10 x 0x0+5+10
[13:13:25] [PASSED] points not intersecting: 0x0+0+0 x 0x0+5+10
[13:13:25] ============= [PASSED] drm_test_rect_intersect =============
[13:13:25] ================ drm_test_rect_calc_hscale ================
[13:13:25] [PASSED] normal use
[13:13:25] [PASSED] out of max range
[13:13:25] [PASSED] out of min range
[13:13:25] [PASSED] zero dst
[13:13:25] [PASSED] negative src
[13:13:25] [PASSED] negative dst
[13:13:25] ============ [PASSED] drm_test_rect_calc_hscale ============
[13:13:25] ================ drm_test_rect_calc_vscale ================
[13:13:25] [PASSED] normal use
[13:13:25] [PASSED] out of max range
[13:13:25] [PASSED] out of min range
[13:13:25] [PASSED] zero dst
[13:13:25] [PASSED] negative src
[13:13:25] [PASSED] negative dst
[13:13:25] ============ [PASSED] drm_test_rect_calc_vscale ============
[13:13:25] ================== drm_test_rect_rotate ===================
[13:13:25] [PASSED] reflect-x
[13:13:25] [PASSED] reflect-y
[13:13:25] [PASSED] rotate-0
[13:13:25] [PASSED] rotate-90
[13:13:25] [PASSED] rotate-180
[13:13:25] [PASSED] rotate-270
[13:13:25] ============== [PASSED] drm_test_rect_rotate ===============
[13:13:25] ================ drm_test_rect_rotate_inv =================
[13:13:25] [PASSED] reflect-x
[13:13:25] [PASSED] reflect-y
[13:13:25] [PASSED] rotate-0
[13:13:25] [PASSED] rotate-90
[13:13:25] [PASSED] rotate-180
[13:13:25] [PASSED] rotate-270
[13:13:25] ============ [PASSED] drm_test_rect_rotate_inv =============
[13:13:25] ==================== [PASSED] drm_rect =====================
[13:13:25] ============ drm_sysfb_modeset_test (1 subtest) ============
[13:13:25] ============ drm_test_sysfb_build_fourcc_list =============
[13:13:25] [PASSED] no native formats
[13:13:25] [PASSED] XRGB8888 as native format
[13:13:25] [PASSED] remove duplicates
[13:13:25] [PASSED] convert alpha formats
[13:13:25] [PASSED] random formats
[13:13:25] ======== [PASSED] drm_test_sysfb_build_fourcc_list =========
[13:13:25] ============= [PASSED] drm_sysfb_modeset_test ==============
[13:13:25] ================== drm_fixp (2 subtests) ===================
[13:13:25] [PASSED] drm_test_int2fixp
[13:13:25] [PASSED] drm_test_sm2fixp
[13:13:25] ==================== [PASSED] drm_fixp =====================
[13:13:25] ============================================================
[13:13:25] Testing complete. Ran 639 tests: passed: 639
[13:13:25] Elapsed time: 26.736s total, 1.824s configuring, 24.748s building, 0.141s running
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/ttm/tests/.kunitconfig
[13:13:25] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[13:13: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
[13:13:36] Starting KUnit Kernel (1/1)...
[13:13:36] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[13:13:36] ================= ttm_device (5 subtests) ==================
[13:13:36] [PASSED] ttm_device_init_basic
[13:13:36] [PASSED] ttm_device_init_multiple
[13:13:36] [PASSED] ttm_device_fini_basic
[13:13:36] [PASSED] ttm_device_init_no_vma_man
[13:13:36] ================== ttm_device_init_pools ==================
[13:13:36] [PASSED] No DMA allocations, no DMA32 required
[13:13:36] [PASSED] DMA allocations, DMA32 required
[13:13:36] [PASSED] No DMA allocations, DMA32 required
[13:13:36] [PASSED] DMA allocations, no DMA32 required
[13:13:36] ============== [PASSED] ttm_device_init_pools ==============
[13:13:36] =================== [PASSED] ttm_device ====================
[13:13:36] ================== ttm_pool (8 subtests) ===================
[13:13:36] ================== ttm_pool_alloc_basic ===================
[13:13:36] [PASSED] One page
[13:13:36] [PASSED] More than one page
[13:13:36] [PASSED] Above the allocation limit
[13:13:36] [PASSED] One page, with coherent DMA mappings enabled
[13:13:36] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[13:13:36] ============== [PASSED] ttm_pool_alloc_basic ===============
[13:13:36] ============== ttm_pool_alloc_basic_dma_addr ==============
[13:13:36] [PASSED] One page
[13:13:36] [PASSED] More than one page
[13:13:36] [PASSED] Above the allocation limit
[13:13:36] [PASSED] One page, with coherent DMA mappings enabled
[13:13:36] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[13:13:36] ========== [PASSED] ttm_pool_alloc_basic_dma_addr ==========
[13:13:36] [PASSED] ttm_pool_alloc_order_caching_match
[13:13:36] [PASSED] ttm_pool_alloc_caching_mismatch
[13:13:36] [PASSED] ttm_pool_alloc_order_mismatch
[13:13:36] [PASSED] ttm_pool_free_dma_alloc
[13:13:36] [PASSED] ttm_pool_free_no_dma_alloc
[13:13:36] [PASSED] ttm_pool_fini_basic
[13:13:36] ==================== [PASSED] ttm_pool =====================
[13:13:36] ================ ttm_resource (8 subtests) =================
[13:13:36] ================= ttm_resource_init_basic =================
[13:13:36] [PASSED] Init resource in TTM_PL_SYSTEM
[13:13:36] [PASSED] Init resource in TTM_PL_VRAM
[13:13:36] [PASSED] Init resource in a private placement
[13:13:36] [PASSED] Init resource in TTM_PL_SYSTEM, set placement flags
[13:13:36] ============= [PASSED] ttm_resource_init_basic =============
[13:13:36] [PASSED] ttm_resource_init_pinned
[13:13:36] [PASSED] ttm_resource_fini_basic
[13:13:36] [PASSED] ttm_resource_manager_init_basic
[13:13:36] [PASSED] ttm_resource_manager_usage_basic
[13:13:36] [PASSED] ttm_resource_manager_set_used_basic
[13:13:36] [PASSED] ttm_sys_man_alloc_basic
[13:13:36] [PASSED] ttm_sys_man_free_basic
[13:13:36] ================== [PASSED] ttm_resource ===================
[13:13:36] =================== ttm_tt (15 subtests) ===================
[13:13:36] ==================== ttm_tt_init_basic ====================
[13:13:36] [PASSED] Page-aligned size
[13:13:36] [PASSED] Extra pages requested
[13:13:36] ================ [PASSED] ttm_tt_init_basic ================
[13:13:36] [PASSED] ttm_tt_init_misaligned
[13:13:36] [PASSED] ttm_tt_fini_basic
[13:13:36] [PASSED] ttm_tt_fini_sg
[13:13:36] [PASSED] ttm_tt_fini_shmem
[13:13:36] [PASSED] ttm_tt_create_basic
[13:13:36] [PASSED] ttm_tt_create_invalid_bo_type
[13:13:36] [PASSED] ttm_tt_create_ttm_exists
[13:13:36] [PASSED] ttm_tt_create_failed
[13:13:36] [PASSED] ttm_tt_destroy_basic
[13:13:36] [PASSED] ttm_tt_populate_null_ttm
[13:13:36] [PASSED] ttm_tt_populate_populated_ttm
[13:13:36] [PASSED] ttm_tt_unpopulate_basic
[13:13:36] [PASSED] ttm_tt_unpopulate_empty_ttm
[13:13:36] [PASSED] ttm_tt_swapin_basic
[13:13:36] ===================== [PASSED] ttm_tt ======================
[13:13:36] =================== ttm_bo (14 subtests) ===================
[13:13:36] =========== ttm_bo_reserve_optimistic_no_ticket ===========
[13:13:36] [PASSED] Cannot be interrupted and sleeps
[13:13:36] [PASSED] Cannot be interrupted, locks straight away
[13:13:36] [PASSED] Can be interrupted, sleeps
[13:13:36] ======= [PASSED] ttm_bo_reserve_optimistic_no_ticket =======
[13:13:36] [PASSED] ttm_bo_reserve_locked_no_sleep
[13:13:36] [PASSED] ttm_bo_reserve_no_wait_ticket
[13:13:36] [PASSED] ttm_bo_reserve_double_resv
[13:13:36] [PASSED] ttm_bo_reserve_interrupted
[13:13:36] [PASSED] ttm_bo_reserve_deadlock
[13:13:36] [PASSED] ttm_bo_unreserve_basic
[13:13:36] [PASSED] ttm_bo_unreserve_pinned
[13:13:36] [PASSED] ttm_bo_unreserve_bulk
[13:13:36] [PASSED] ttm_bo_fini_basic
[13:13:36] [PASSED] ttm_bo_fini_shared_resv
[13:13:36] [PASSED] ttm_bo_pin_basic
[13:13:36] [PASSED] ttm_bo_pin_unpin_resource
[13:13:36] [PASSED] ttm_bo_multiple_pin_one_unpin
[13:13:36] ===================== [PASSED] ttm_bo ======================
[13:13:36] ============== ttm_bo_validate (22 subtests) ===============
[13:13:36] ============== ttm_bo_init_reserved_sys_man ===============
[13:13:36] [PASSED] Buffer object for userspace
[13:13:36] [PASSED] Kernel buffer object
[13:13:36] [PASSED] Shared buffer object
[13:13:36] ========== [PASSED] ttm_bo_init_reserved_sys_man ===========
[13:13:36] ============== ttm_bo_init_reserved_mock_man ==============
[13:13:36] [PASSED] Buffer object for userspace
[13:13:36] [PASSED] Kernel buffer object
[13:13:36] [PASSED] Shared buffer object
[13:13:36] ========== [PASSED] ttm_bo_init_reserved_mock_man ==========
[13:13:36] [PASSED] ttm_bo_init_reserved_resv
[13:13:36] ================== ttm_bo_validate_basic ==================
[13:13:36] [PASSED] Buffer object for userspace
[13:13:36] [PASSED] Kernel buffer object
[13:13:36] [PASSED] Shared buffer object
[13:13:36] ============== [PASSED] ttm_bo_validate_basic ==============
[13:13:36] [PASSED] ttm_bo_validate_invalid_placement
[13:13:36] ============= ttm_bo_validate_same_placement ==============
[13:13:36] [PASSED] System manager
[13:13:36] [PASSED] VRAM manager
[13:13:36] ========= [PASSED] ttm_bo_validate_same_placement ==========
[13:13:36] [PASSED] ttm_bo_validate_failed_alloc
[13:13:36] [PASSED] ttm_bo_validate_pinned
[13:13:36] [PASSED] ttm_bo_validate_busy_placement
[13:13:36] ================ ttm_bo_validate_multihop =================
[13:13:36] [PASSED] Buffer object for userspace
[13:13:36] [PASSED] Kernel buffer object
[13:13:36] [PASSED] Shared buffer object
[13:13:36] ============ [PASSED] ttm_bo_validate_multihop =============
[13:13:36] ========== ttm_bo_validate_no_placement_signaled ==========
[13:13:36] [PASSED] Buffer object in system domain, no page vector
[13:13:36] [PASSED] Buffer object in system domain with an existing page vector
[13:13:36] ====== [PASSED] ttm_bo_validate_no_placement_signaled ======
[13:13:36] ======== ttm_bo_validate_no_placement_not_signaled ========
[13:13:36] [PASSED] Buffer object for userspace
[13:13:36] [PASSED] Kernel buffer object
[13:13:36] [PASSED] Shared buffer object
[13:13:36] ==== [PASSED] ttm_bo_validate_no_placement_not_signaled ====
[13:13:36] [PASSED] ttm_bo_validate_move_fence_signaled
[13:13:36] ========= ttm_bo_validate_move_fence_not_signaled =========
[13:13:36] [PASSED] Waits for GPU
[13:13:36] [PASSED] Tries to lock straight away
[13:13:36] ===== [PASSED] ttm_bo_validate_move_fence_not_signaled =====
[13:13:36] [PASSED] ttm_bo_validate_swapout
[13:13:36] [PASSED] ttm_bo_validate_happy_evict
[13:13:36] [PASSED] ttm_bo_validate_all_pinned_evict
[13:13:36] [PASSED] ttm_bo_validate_allowed_only_evict
[13:13:36] [PASSED] ttm_bo_validate_deleted_evict
[13:13:36] [PASSED] ttm_bo_validate_busy_domain_evict
[13:13:36] [PASSED] ttm_bo_validate_evict_gutting
[13:13:36] [PASSED] ttm_bo_validate_recrusive_evict
[13:13:36] ================= [PASSED] ttm_bo_validate =================
[13:13:36] ============================================================
[13:13:36] Testing complete. Ran 102 tests: passed: 102
[13:13:36] Elapsed time: 11.812s total, 1.790s configuring, 9.808s building, 0.180s running
+ cleanup
++ stat -c %u:%g /kernel
+ chown -R 1003:1003 /kernel
^ permalink raw reply [flat|nested] 21+ messages in thread
* ✓ Xe.CI.BAT: success for drm/xe: Structured RAS error logging infrastructure (rev4)
2026-06-30 11:55 [RFC PATCH v4 0/5] drm/xe: Structured RAS error logging infrastructure Mallesh Koujalagi
` (6 preceding siblings ...)
2026-06-30 13:13 ` ✓ CI.KUnit: success " Patchwork
@ 2026-06-30 14:05 ` Patchwork
2026-07-01 4:42 ` ✗ Xe.CI.FULL: failure " Patchwork
8 siblings, 0 replies; 21+ messages in thread
From: Patchwork @ 2026-06-30 14:05 UTC (permalink / raw)
To: Mallesh Koujalagi; +Cc: intel-xe
[-- Attachment #1: Type: text/plain, Size: 1365 bytes --]
== Series Details ==
Series: drm/xe: Structured RAS error logging infrastructure (rev4)
URL : https://patchwork.freedesktop.org/series/168333/
State : success
== Summary ==
CI Bug Log - changes from xe-5309-a2d82f27ac35c691c1c65b40c72b13d8b2a7f91f_BAT -> xe-pw-168333v4_BAT
====================================================
Summary
-------
**SUCCESS**
No regressions found.
Participating hosts (13 -> 13)
------------------------------
No changes in participating hosts
Known issues
------------
Here are the changes found in xe-pw-168333v4_BAT that come from known issues:
### IGT changes ###
#### Possible fixes ####
* igt@xe_query@multigpu-query-cs-cycles:
- bat-bmg-3: [FAIL][1] -> [PASS][2]
[1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5309-a2d82f27ac35c691c1c65b40c72b13d8b2a7f91f/bat-bmg-3/igt@xe_query@multigpu-query-cs-cycles.html
[2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/bat-bmg-3/igt@xe_query@multigpu-query-cs-cycles.html
Build changes
-------------
* Linux: xe-5309-a2d82f27ac35c691c1c65b40c72b13d8b2a7f91f -> xe-pw-168333v4
IGT_8988: 8988
xe-5309-a2d82f27ac35c691c1c65b40c72b13d8b2a7f91f: a2d82f27ac35c691c1c65b40c72b13d8b2a7f91f
xe-pw-168333v4: 168333v4
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/index.html
[-- Attachment #2: Type: text/html, Size: 1937 bytes --]
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [RFC PATCH v4 1/5] drm/xe: Add SIG_IDs for RAS error logging
2026-06-30 11:55 ` [RFC PATCH v4 1/5] drm/xe: Add SIG_IDs for RAS error logging Mallesh Koujalagi
@ 2026-06-30 14:25 ` Raag Jadav
2026-07-06 10:43 ` Mallesh, Koujalagi
2026-07-06 13:59 ` Michal Wajdeczko
1 sibling, 1 reply; 21+ messages in thread
From: Raag Jadav @ 2026-06-30 14:25 UTC (permalink / raw)
To: Mallesh Koujalagi
Cc: intel-xe, rodrigo.vivi, matthew.brost, thomas.hellstrom,
anshuman.gupta, badal.nilawar, vinay.belgaumkar,
aravind.iddamsetty, riana.tauro, karthik.poosa, sk.anirban
On Tue, Jun 30, 2026 at 05:25:05PM +0530, Mallesh Koujalagi wrote:
> Add xe_sig_ids.h which defines a set of stable numeric labels
> for Xe error categories, called SIG_IDs.
>
> Each SIG_ID identifies which subsystem reported an error (e.g. probe,
> wedged, GT TDR, firmware). It does not encode the full failure details,
> those come from errno and the free-form message:
>
> SIG_ID -> which area failed
> errno -> what failed
> message -> extra human-readable context
>
> Also add a DOC: kernel-doc section covering design rationale, driver
> severity labels (FATAL/RECOVERABLE), usage guidelines, and the
> distinction between driver and hardware error paths.
...
> +/**
> + * DOC: SIG_ID Overview
> + *
> + * Signature ID (SIG_ID) is a stable numeric identifier (u16) for a defined
> + * Xe error category - it answers: "which subsystem reported the error?"
Introducing a new concept is a bit of an uphill battle in itself, not
because it lacks an explanation but because the explanation often assumes
that the reader has the same context as the writer and what we end up
with is a terminology soup that doesn't add much to the understanding :)
> + * SIG_ID format
> + * =============
> + *
> + * Xe error events are emitted as a single structured line using stable fields.
> + * Driver events use:
> + *
> + * [xe-err] SIG_ID = <u16> Severity = <CPER_SEV_*>
> + * Location = <device|tile/gt> Errno = <neg_errno>
> + * Message = "<free-form text>"
> + *
> + * Hardware-originated RAS events use the same overall format, but typically
> + * omit Errno and Message and instead report the hardware-derived location /
> + * error-class information.
> + *
> + * Important
> + * =========
> + *
> + * SIG_ID identifies the reporting subsystem/category only. It does not encode
> + * the detailed failure reason. The detailed reason is carried separately by::
> + *
> + * SIG_ID -> which subsystem/category failed
So what exactly is "category" or "subsystem" and what fits the criteria of
it? In RAS context we have a unique ID attached to all hardware units (which
we've already defined under xe_ras), so similar to that, what makes a SIG_ID
unique?
Btw, I'm really unsure if 'probe' or 'wedged' are subsystems ;)
> + * Severity -> how serious the event is
> + * Errno -> what failed (driver events)
> + * Message -> human-readable context
> + *
> + * Example (driver event)
In Linux world these are not events, so I'd try to find a better terminology
(and in all other places where applicable).
> + * ======================
> + *
> + * [xe-err] SIG_ID = 6 Severity = CPER_SEV_RECOVERABLE
> + * Location = tile0/gt0 Errno = -5
> + * Message = "Engine 'rcs0' hung; TDR triggered, engine reset succeeded"
> + *
> + * In the example
> + * ==============
> + *
> + * SIG_ID 6 = XE GT/TDR category
> + * RECOVERABLE = workload impacted, device still operational
> + * -5 = Linux errno (-EIO)
> + * Message = extra context for triage
> + *
> + * Why SIG_ID exists?
> + * ==================
> + *
> + * The goal is to replace inconsistent ad-hoc error strings with a small
> + * set of stable, structured error events that are easier for operators
> + * and tools to understand. Each driver event carries a fixed SIG_ID with
> + * a severity determined by its error category, and structured output that
> + * can be consumed consistently across driver or firmware versions. It
> + * reduces guesswork during triage and allows machine parsing of important
> + * fault events.
Okay so the problem statement is good enough but let's say the tools actually
parse these IDs, what do you expect the outcome of the parsing to be? What
will the results be used for?
I understand the telemetry aspect, but if the expectation is to perform a
"certain recovery procedure" based on the ID, wouldn't it be more intuitive
to just define the IDs based on procedure itself?
> + * Driver severity labels
> + * ======================
> + *
> + * FATAL means the device cannot continue operation (e.g. probe failure,
> + * device wedged). RECOVERABLE means the driver encountered an error but
> + * may continue with degraded functionality.
> + *
> + * When to use the xe_ras_log helpers (see xe_ras_log.h)
> + * =====================================================
> + *
> + * Use them only for defined Xe error events that belong to the published
> + * error categories. These helpers are intended for important fault paths
> + * such as probe failure, wedged device, survivability mode, firmware
> + * failures, GT hang/TDR/reset, memory faults, and runtime IO/bus faults.
> + * The selected macro fixes the SIG_ID and severity for that category.
> + *
> + * Do not use xe_ras_log helpers for all logs
> + * ==========================================
> + *
> + * These helpers are not a replacement for normal drm_info(), drm_dbg(),
> + * tracing, or one-off diagnostics. They are for stable, structured error
> + * reporting only. Using them for ordinary logs would dilute the error
> + * stream and make operator-facing fault reporting noisy and less useful.
> + *
> + * Hardware errors
> + * ===============
> + *
> + * Hardware errors are hardware-reported RAS events and map to the
> + * XE_SIG_HW_* identifiers. They are reported through the hardware error
> + * path (e.g. CPER records), not through the driver xe_ras_log helpers.
> + *
> + * Unlike driver xe_ras_log helpers, hardware events do not have one fixed
> + * severity per SIG_ID. For example, a fabric event (XE_SIG_HW_FABRIC) may
> + * be reported as CPER_SEV_CORRECTED, CPER_SEV_FATAL, CPER_SEV_RECOVERABLE,
> + * or CPER_SEV_INFORMATIONAL, depending on what the hardware reported.
> + */
> +
> +/*
> + * Driver errors: SIG_IDs
> + */
> +#define XE_SIG_PROBE 1 /* FATAL: probe failed */
> +#define XE_SIG_WEDGED 2 /* FATAL: device wedged */
> +#define XE_SIG_SURVIVABILITY 3 /* FATAL: survivability mode */
> +#define XE_SIG_RUNTIME_FW 4 /* RECOVERABLE: GuC/HuC/UC/GSC */
> +#define XE_SIG_DEVICE_FW 5 /* RECOVERABLE: PCODE/CSC/System controller */
> +#define XE_SIG_GT_TDR 6 /* RECOVERABLE: engine hang / reset */
> +#define XE_SIG_MEM_FAULT 7 /* RECOVERABLE: VM bind, page fault, GTT */
> +#define XE_SIG_IO_BUS 8 /* RECOVERABLE: runtime PCIe/IOMMU/MMIO */
Many of the above actually overlap, for example boottime survivability or
firmware load failure will result in probe failure, while runtime survivability
or GT reset failure will result in wedging. So which ID is exactly applicable
in those cases and how does it help the usecase here?
> +/*
> + * Hardware errors: SIG_IDs
> + */
> +#define XE_SIG_HW_DEVICE_MEMORY 9 /* Device memory errors */
> +#define XE_SIG_HW_CORE_COMPUTE 10 /* Compute/shader core errors */
> +#define XE_SIG_HW_PCIE 11 /* PCIe interface errors */
> +#define XE_SIG_HW_FABRIC 12 /* Fabric errors */
> +#define XE_SIG_HW_SOC_INTERNAL 13 /* SoC-internal errors */
So is this to be reused in CPER or is that its own thing?
Confused :(
Raag
> +#endif /* _XE_SIG_IDS_H_ */
> --
> 2.34.1
>
^ permalink raw reply [flat|nested] 21+ messages in thread
* ✗ Xe.CI.FULL: failure for drm/xe: Structured RAS error logging infrastructure (rev4)
2026-06-30 11:55 [RFC PATCH v4 0/5] drm/xe: Structured RAS error logging infrastructure Mallesh Koujalagi
` (7 preceding siblings ...)
2026-06-30 14:05 ` ✓ Xe.CI.BAT: " Patchwork
@ 2026-07-01 4:42 ` Patchwork
8 siblings, 0 replies; 21+ messages in thread
From: Patchwork @ 2026-07-01 4:42 UTC (permalink / raw)
To: Mallesh Koujalagi; +Cc: intel-xe
[-- Attachment #1: Type: text/plain, Size: 46196 bytes --]
== Series Details ==
Series: drm/xe: Structured RAS error logging infrastructure (rev4)
URL : https://patchwork.freedesktop.org/series/168333/
State : failure
== Summary ==
CI Bug Log - changes from xe-5309-a2d82f27ac35c691c1c65b40c72b13d8b2a7f91f_FULL -> xe-pw-168333v4_FULL
====================================================
Summary
-------
**FAILURE**
Serious unknown changes coming with xe-pw-168333v4_FULL absolutely need to be
verified manually.
If you think the reported changes have nothing to do with the changes
introduced in xe-pw-168333v4_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 (2 -> 2)
------------------------------
No changes in participating hosts
Possible new issues
-------------------
Here are the unknown changes that may have been introduced in xe-pw-168333v4_FULL:
### IGT changes ###
#### Possible regressions ####
* igt@xe_configfs@survivability-mode:
- shard-bmg: [PASS][1] -> [DMESG-WARN][2]
[1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5309-a2d82f27ac35c691c1c65b40c72b13d8b2a7f91f/shard-bmg-7/igt@xe_configfs@survivability-mode.html
[2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-bmg-9/igt@xe_configfs@survivability-mode.html
Known issues
------------
Here are the changes found in xe-pw-168333v4_FULL that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@kms_big_fb@4-tiled-8bpp-rotate-270:
- shard-bmg: NOTRUN -> [SKIP][3] ([Intel XE#2327])
[3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-bmg-7/igt@kms_big_fb@4-tiled-8bpp-rotate-270.html
* igt@kms_big_fb@linear-32bpp-rotate-270:
- shard-lnl: NOTRUN -> [SKIP][4] ([Intel XE#1407])
[4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-lnl-6/igt@kms_big_fb@linear-32bpp-rotate-270.html
* igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-0-hflip-async-flip:
- shard-bmg: NOTRUN -> [SKIP][5] ([Intel XE#1124]) +2 other tests skip
[5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-bmg-5/igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-0-hflip-async-flip.html
* igt@kms_big_fb@yf-tiled-8bpp-rotate-0:
- shard-lnl: NOTRUN -> [SKIP][6] ([Intel XE#1124]) +5 other tests skip
[6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-lnl-2/igt@kms_big_fb@yf-tiled-8bpp-rotate-0.html
* igt@kms_bw@connected-linear-tiling-3-displays-target-2160x1440p:
- shard-lnl: NOTRUN -> [SKIP][7] ([Intel XE#7679])
[7]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-lnl-2/igt@kms_bw@connected-linear-tiling-3-displays-target-2160x1440p.html
* igt@kms_bw@connected-linear-tiling-4-displays-target-1920x1080p:
- shard-lnl: NOTRUN -> [SKIP][8] ([Intel XE#8365])
[8]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-lnl-6/igt@kms_bw@connected-linear-tiling-4-displays-target-1920x1080p.html
* igt@kms_bw@linear-tiling-2-displays-target-3840x2160p:
- shard-bmg: NOTRUN -> [SKIP][9] ([Intel XE#367]) +2 other tests skip
[9]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-bmg-5/igt@kms_bw@linear-tiling-2-displays-target-3840x2160p.html
* igt@kms_ccs@bad-pixel-format-4-tiled-dg2-mc-ccs:
- shard-bmg: NOTRUN -> [SKIP][10] ([Intel XE#2887]) +4 other tests skip
[10]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-bmg-1/igt@kms_ccs@bad-pixel-format-4-tiled-dg2-mc-ccs.html
* igt@kms_ccs@bad-rotation-90-4-tiled-lnl-ccs@pipe-c-dp-2:
- shard-bmg: NOTRUN -> [SKIP][11] ([Intel XE#2652]) +7 other tests skip
[11]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-bmg-6/igt@kms_ccs@bad-rotation-90-4-tiled-lnl-ccs@pipe-c-dp-2.html
* igt@kms_ccs@ccs-on-another-bo-4-tiled-mtl-rc-ccs:
- shard-lnl: NOTRUN -> [SKIP][12] ([Intel XE#2887]) +3 other tests skip
[12]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-lnl-6/igt@kms_ccs@ccs-on-another-bo-4-tiled-mtl-rc-ccs.html
* igt@kms_ccs@crc-primary-suspend-y-tiled-ccs:
- shard-lnl: NOTRUN -> [SKIP][13] ([Intel XE#3432]) +1 other test skip
[13]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-lnl-6/igt@kms_ccs@crc-primary-suspend-y-tiled-ccs.html
* igt@kms_cdclk@mode-transition@pipe-b-edp-1:
- shard-lnl: NOTRUN -> [SKIP][14] ([Intel XE#4417] / [Intel XE#5447]) +3 other tests skip
[14]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-lnl-6/igt@kms_cdclk@mode-transition@pipe-b-edp-1.html
* igt@kms_cdclk@plane-scaling:
- shard-lnl: NOTRUN -> [SKIP][15] ([Intel XE#4416] / [Intel XE#7381]) +3 other tests skip
[15]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-lnl-2/igt@kms_cdclk@plane-scaling.html
* igt@kms_chamelium_color@degamma:
- shard-lnl: NOTRUN -> [SKIP][16] ([Intel XE#306] / [Intel XE#7358])
[16]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-lnl-2/igt@kms_chamelium_color@degamma.html
* igt@kms_chamelium_color_pipeline@plane-lut1d:
- shard-lnl: NOTRUN -> [SKIP][17] ([Intel XE#7358])
[17]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-lnl-6/igt@kms_chamelium_color_pipeline@plane-lut1d.html
* igt@kms_chamelium_color_pipeline@plane-lut1d-lut1d:
- shard-bmg: NOTRUN -> [SKIP][18] ([Intel XE#7358])
[18]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-bmg-5/igt@kms_chamelium_color_pipeline@plane-lut1d-lut1d.html
* igt@kms_chamelium_hpd@common-hpd-after-suspend:
- shard-lnl: NOTRUN -> [SKIP][19] ([Intel XE#373]) +2 other tests skip
[19]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-lnl-6/igt@kms_chamelium_hpd@common-hpd-after-suspend.html
* igt@kms_content_protection@dp-mst-lic-type-1:
- shard-bmg: NOTRUN -> [SKIP][20] ([Intel XE#2390] / [Intel XE#6974])
[20]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-bmg-1/igt@kms_content_protection@dp-mst-lic-type-1.html
* igt@kms_content_protection@legacy:
- shard-bmg: NOTRUN -> [FAIL][21] ([Intel XE#1178] / [Intel XE#3304] / [Intel XE#7374]) +1 other test fail
[21]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-bmg-5/igt@kms_content_protection@legacy.html
* igt@kms_content_protection@legacy-hdcp14:
- shard-lnl: NOTRUN -> [SKIP][22] ([Intel XE#7642])
[22]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-lnl-6/igt@kms_content_protection@legacy-hdcp14.html
* igt@kms_cursor_crc@cursor-offscreen-max-size:
- shard-bmg: NOTRUN -> [SKIP][23] ([Intel XE#2320])
[23]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-bmg-5/igt@kms_cursor_crc@cursor-offscreen-max-size.html
* igt@kms_cursor_crc@cursor-rapid-movement-512x170:
- shard-bmg: NOTRUN -> [SKIP][24] ([Intel XE#2321] / [Intel XE#7355])
[24]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-bmg-7/igt@kms_cursor_crc@cursor-rapid-movement-512x170.html
* igt@kms_cursor_crc@cursor-sliding-32x32:
- shard-lnl: NOTRUN -> [SKIP][25] ([Intel XE#1424]) +1 other test skip
[25]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-lnl-2/igt@kms_cursor_crc@cursor-sliding-32x32.html
* igt@kms_cursor_legacy@cursorb-vs-flipa-atomic:
- shard-lnl: NOTRUN -> [SKIP][26] ([Intel XE#309] / [Intel XE#7343])
[26]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-lnl-2/igt@kms_cursor_legacy@cursorb-vs-flipa-atomic.html
* igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions-varying-size:
- shard-bmg: NOTRUN -> [SKIP][27] ([Intel XE#2286] / [Intel XE#6035]) +1 other test skip
[27]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-bmg-5/igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions-varying-size.html
* igt@kms_dp_link_training@uhbr-mst:
- shard-bmg: NOTRUN -> [SKIP][28] ([Intel XE#4354] / [Intel XE#7386])
[28]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-bmg-1/igt@kms_dp_link_training@uhbr-mst.html
* igt@kms_dsc@dsc-with-bpc-formats-bigjoiner:
- shard-lnl: NOTRUN -> [SKIP][29] ([Intel XE#8265])
[29]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-lnl-2/igt@kms_dsc@dsc-with-bpc-formats-bigjoiner.html
* igt@kms_fbcon_fbt@psr-suspend:
- shard-bmg: NOTRUN -> [SKIP][30] ([Intel XE#6126] / [Intel XE#776])
[30]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-bmg-5/igt@kms_fbcon_fbt@psr-suspend.html
* igt@kms_feature_discovery@display-3x:
- shard-lnl: NOTRUN -> [SKIP][31] ([Intel XE#703] / [Intel XE#7448])
[31]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-lnl-6/igt@kms_feature_discovery@display-3x.html
* igt@kms_flip@2x-plain-flip-ts-check:
- shard-lnl: NOTRUN -> [SKIP][32] ([Intel XE#1421]) +2 other tests skip
[32]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-lnl-6/igt@kms_flip@2x-plain-flip-ts-check.html
* igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs-upscaling:
- shard-bmg: NOTRUN -> [SKIP][33] ([Intel XE#7178] / [Intel XE#7351]) +1 other test skip
[33]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-bmg-7/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs-upscaling.html
* igt@kms_flip_scaled_crc@flip-64bpp-linear-to-32bpp-linear-downscaling:
- shard-lnl: NOTRUN -> [SKIP][34] ([Intel XE#1397] / [Intel XE#1745] / [Intel XE#7385]) +1 other test skip
[34]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-lnl-6/igt@kms_flip_scaled_crc@flip-64bpp-linear-to-32bpp-linear-downscaling.html
* igt@kms_flip_scaled_crc@flip-64bpp-linear-to-32bpp-linear-downscaling@pipe-a-default-mode:
- shard-lnl: NOTRUN -> [SKIP][35] ([Intel XE#1397] / [Intel XE#7385]) +1 other test skip
[35]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-lnl-6/igt@kms_flip_scaled_crc@flip-64bpp-linear-to-32bpp-linear-downscaling@pipe-a-default-mode.html
* igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling:
- shard-lnl: NOTRUN -> [SKIP][36] ([Intel XE#7178] / [Intel XE#7351]) +1 other test skip
[36]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-lnl-2/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling.html
* igt@kms_frontbuffer_tracking@drrs-abgr161616f-draw-mmap-wc:
- shard-lnl: NOTRUN -> [SKIP][37] ([Intel XE#7061] / [Intel XE#7356]) +2 other tests skip
[37]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-lnl-2/igt@kms_frontbuffer_tracking@drrs-abgr161616f-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-draw-blt:
- shard-bmg: NOTRUN -> [SKIP][38] ([Intel XE#4141]) +3 other tests skip
[38]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-bmg-7/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-draw-blt.html
* igt@kms_frontbuffer_tracking@fbc-abgr161616f-draw-mmap-wc:
- shard-bmg: NOTRUN -> [SKIP][39] ([Intel XE#7061] / [Intel XE#7356]) +1 other test skip
[39]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-bmg-7/igt@kms_frontbuffer_tracking@fbc-abgr161616f-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@fbcdrrs-rgb101010-draw-mmap-wc:
- shard-lnl: NOTRUN -> [SKIP][40] ([Intel XE#6312] / [Intel XE#651]) +3 other tests skip
[40]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-lnl-2/igt@kms_frontbuffer_tracking@fbcdrrs-rgb101010-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@fbcdrrshdr-1p-primscrn-cur-indfb-move:
- shard-lnl: NOTRUN -> [SKIP][41] ([Intel XE#6312]) +6 other tests skip
[41]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-lnl-6/igt@kms_frontbuffer_tracking@fbcdrrshdr-1p-primscrn-cur-indfb-move.html
* igt@kms_frontbuffer_tracking@fbcdrrshdr-stridechange:
- shard-bmg: NOTRUN -> [SKIP][42] ([Intel XE#2311]) +18 other tests skip
[42]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-bmg-7/igt@kms_frontbuffer_tracking@fbcdrrshdr-stridechange.html
* igt@kms_frontbuffer_tracking@fbchdr-1p-primscrn-cur-indfb-draw-blt:
- shard-lnl: NOTRUN -> [SKIP][43] ([Intel XE#7865]) +13 other tests skip
[43]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-lnl-2/igt@kms_frontbuffer_tracking@fbchdr-1p-primscrn-cur-indfb-draw-blt.html
* igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-mmap-wc:
- shard-bmg: NOTRUN -> [SKIP][44] ([Intel XE#2313]) +14 other tests skip
[44]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-bmg-1/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-draw-render:
- shard-lnl: NOTRUN -> [SKIP][45] ([Intel XE#656] / [Intel XE#7905]) +13 other tests skip
[45]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-lnl-2/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-draw-render.html
* igt@kms_frontbuffer_tracking@fbcpsrhdr-2p-primscrn-spr-indfb-draw-blt:
- shard-lnl: NOTRUN -> [SKIP][46] ([Intel XE#7905]) +16 other tests skip
[46]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-lnl-2/igt@kms_frontbuffer_tracking@fbcpsrhdr-2p-primscrn-spr-indfb-draw-blt.html
* igt@kms_frontbuffer_tracking@fbcpsrhdr-abgr161616f-draw-render:
- shard-bmg: NOTRUN -> [SKIP][47] ([Intel XE#7061])
[47]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-bmg-7/igt@kms_frontbuffer_tracking@fbcpsrhdr-abgr161616f-draw-render.html
* igt@kms_frontbuffer_tracking@psrhdr-argb161616f-draw-blt:
- shard-lnl: NOTRUN -> [SKIP][48] ([Intel XE#7061]) +2 other tests skip
[48]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-lnl-2/igt@kms_frontbuffer_tracking@psrhdr-argb161616f-draw-blt.html
* igt@kms_hdr@invalid-hdr:
- shard-bmg: [PASS][49] -> [SKIP][50] ([Intel XE#1503])
[49]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5309-a2d82f27ac35c691c1c65b40c72b13d8b2a7f91f/shard-bmg-2/igt@kms_hdr@invalid-hdr.html
[50]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-bmg-9/igt@kms_hdr@invalid-hdr.html
* igt@kms_pipe_stress@stress-xrgb8888-yftiled:
- shard-lnl: NOTRUN -> [SKIP][51] ([Intel XE#6912] / [Intel XE#7375])
[51]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-lnl-2/igt@kms_pipe_stress@stress-xrgb8888-yftiled.html
* igt@kms_plane@pixel-format-4-tiled-mtl-mc-ccs-modifier:
- shard-bmg: NOTRUN -> [SKIP][52] ([Intel XE#7283]) +1 other test skip
[52]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-bmg-1/igt@kms_plane@pixel-format-4-tiled-mtl-mc-ccs-modifier.html
* igt@kms_plane@pixel-format-4-tiled-mtl-rc-ccs-modifier:
- shard-lnl: NOTRUN -> [SKIP][53] ([Intel XE#7283]) +1 other test skip
[53]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-lnl-2/igt@kms_plane@pixel-format-4-tiled-mtl-rc-ccs-modifier.html
* igt@kms_plane_lowres@tiling-x@pipe-b-edp-1:
- shard-lnl: NOTRUN -> [SKIP][54] ([Intel XE#599] / [Intel XE#7382]) +3 other tests skip
[54]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-lnl-6/igt@kms_plane_lowres@tiling-x@pipe-b-edp-1.html
* igt@kms_plane_scaling@plane-downscale-factor-0-5-with-rotation@pipe-c:
- shard-lnl: NOTRUN -> [SKIP][55] ([Intel XE#2763] / [Intel XE#6886]) +3 other tests skip
[55]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-lnl-6/igt@kms_plane_scaling@plane-downscale-factor-0-5-with-rotation@pipe-c.html
* igt@kms_pm_rpm@package-g7:
- shard-lnl: NOTRUN -> [SKIP][56] ([Intel XE#6813])
[56]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-lnl-6/igt@kms_pm_rpm@package-g7.html
* igt@kms_psr2_sf@pr-cursor-plane-update-sf:
- shard-lnl: NOTRUN -> [SKIP][57] ([Intel XE#2893] / [Intel XE#7304]) +2 other tests skip
[57]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-lnl-2/igt@kms_psr2_sf@pr-cursor-plane-update-sf.html
* igt@kms_psr2_sf@pr-overlay-plane-move-continuous-exceed-fully-sf:
- shard-bmg: NOTRUN -> [SKIP][58] ([Intel XE#1489])
[58]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-bmg-1/igt@kms_psr2_sf@pr-overlay-plane-move-continuous-exceed-fully-sf.html
* igt@kms_psr@fbc-psr-basic:
- shard-bmg: NOTRUN -> [SKIP][59] ([Intel XE#2234] / [Intel XE#2850]) +1 other test skip
[59]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-bmg-7/igt@kms_psr@fbc-psr-basic.html
* igt@kms_psr@fbc-psr2-suspend:
- shard-lnl: NOTRUN -> [SKIP][60] ([Intel XE#1406] / [Intel XE#7345])
[60]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-lnl-2/igt@kms_psr@fbc-psr2-suspend.html
* igt@kms_psr@fbc-psr2-suspend@edp-1:
- shard-lnl: NOTRUN -> [SKIP][61] ([Intel XE#1406] / [Intel XE#4609])
[61]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-lnl-2/igt@kms_psr@fbc-psr2-suspend@edp-1.html
* igt@kms_psr@pr-primary-blt:
- shard-lnl: NOTRUN -> [SKIP][62] ([Intel XE#1406]) +1 other test skip
[62]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-lnl-2/igt@kms_psr@pr-primary-blt.html
* igt@kms_psr_stress_test@flip-primary-invalidate-overlay:
- shard-bmg: NOTRUN -> [SKIP][63] ([Intel XE#7795])
[63]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-bmg-1/igt@kms_psr_stress_test@flip-primary-invalidate-overlay.html
* igt@kms_rotation_crc@sprite-rotation-90:
- shard-bmg: NOTRUN -> [SKIP][64] ([Intel XE#3904] / [Intel XE#7342])
[64]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-bmg-5/igt@kms_rotation_crc@sprite-rotation-90.html
* igt@kms_sharpness_filter@invalid-filter-with-plane:
- shard-bmg: NOTRUN -> [SKIP][65] ([Intel XE#6503])
[65]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-bmg-5/igt@kms_sharpness_filter@invalid-filter-with-plane.html
* igt@kms_tiled_display@basic-test-pattern:
- shard-lnl: NOTRUN -> [SKIP][66] ([Intel XE#362] / [Intel XE#5848])
[66]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-lnl-6/igt@kms_tiled_display@basic-test-pattern.html
* igt@kms_vrr@negative-basic:
- shard-lnl: NOTRUN -> [SKIP][67] ([Intel XE#1499])
[67]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-lnl-2/igt@kms_vrr@negative-basic.html
* igt@xe_eudebug@basic-vm-access-parameters-faultable:
- shard-bmg: NOTRUN -> [SKIP][68] ([Intel XE#7636]) +2 other tests skip
[68]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-bmg-7/igt@xe_eudebug@basic-vm-access-parameters-faultable.html
* igt@xe_eudebug_sriov@deny-sriov:
- shard-bmg: NOTRUN -> [SKIP][69] ([Intel XE#5793] / [Intel XE#7320] / [Intel XE#7464])
[69]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-bmg-5/igt@xe_eudebug_sriov@deny-sriov.html
* igt@xe_evict@evict-mixed-threads-small-multi-queue:
- shard-bmg: NOTRUN -> [SKIP][70] ([Intel XE#8370])
[70]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-bmg-1/igt@xe_evict@evict-mixed-threads-small-multi-queue.html
* igt@xe_evict_ccs@evict-overcommit-standalone-instantfree-samefd:
- shard-lnl: NOTRUN -> [SKIP][71] ([Intel XE#6540] / [Intel XE#688]) +4 other tests skip
[71]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-lnl-2/igt@xe_evict_ccs@evict-overcommit-standalone-instantfree-samefd.html
* igt@xe_exec_balancer@twice-cm-parallel-userptr-rebind:
- shard-lnl: NOTRUN -> [SKIP][72] ([Intel XE#7482]) +7 other tests skip
[72]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-lnl-2/igt@xe_exec_balancer@twice-cm-parallel-userptr-rebind.html
* igt@xe_exec_basic@multigpu-many-execqueues-many-vm-bindexecqueue-userptr:
- shard-bmg: NOTRUN -> [SKIP][73] ([Intel XE#2322] / [Intel XE#7372]) +2 other tests skip
[73]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-bmg-7/igt@xe_exec_basic@multigpu-many-execqueues-many-vm-bindexecqueue-userptr.html
* igt@xe_exec_basic@multigpu-once-null-rebind:
- shard-lnl: NOTRUN -> [SKIP][74] ([Intel XE#1392]) +3 other tests skip
[74]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-lnl-2/igt@xe_exec_basic@multigpu-once-null-rebind.html
* igt@xe_exec_fault_mode@many-multi-queue-imm:
- shard-bmg: NOTRUN -> [SKIP][75] ([Intel XE#8374]) +1 other test skip
[75]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-bmg-5/igt@xe_exec_fault_mode@many-multi-queue-imm.html
* igt@xe_exec_fault_mode@twice-multi-queue-invalid-userptr-fault:
- shard-lnl: NOTRUN -> [SKIP][76] ([Intel XE#8374]) +2 other tests skip
[76]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-lnl-6/igt@xe_exec_fault_mode@twice-multi-queue-invalid-userptr-fault.html
* igt@xe_exec_multi_queue@many-execs-close-fd-smem:
- shard-bmg: NOTRUN -> [SKIP][77] ([Intel XE#8364]) +11 other tests skip
[77]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-bmg-7/igt@xe_exec_multi_queue@many-execs-close-fd-smem.html
* igt@xe_exec_multi_queue@many-execs-preempt-mode-fault-dyn-priority:
- shard-lnl: NOTRUN -> [SKIP][78] ([Intel XE#8364]) +14 other tests skip
[78]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-lnl-6/igt@xe_exec_multi_queue@many-execs-preempt-mode-fault-dyn-priority.html
* igt@xe_exec_reset@long-spin-comp-reuse-many-preempt-threads:
- shard-bmg: [PASS][79] -> [FAIL][80] ([Intel XE#7850])
[79]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5309-a2d82f27ac35c691c1c65b40c72b13d8b2a7f91f/shard-bmg-8/igt@xe_exec_reset@long-spin-comp-reuse-many-preempt-threads.html
[80]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-bmg-4/igt@xe_exec_reset@long-spin-comp-reuse-many-preempt-threads.html
* igt@xe_exec_reset@multi-queue-gt-reset:
- shard-bmg: NOTRUN -> [SKIP][81] ([Intel XE#8369]) +1 other test skip
[81]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-bmg-5/igt@xe_exec_reset@multi-queue-gt-reset.html
* igt@xe_exec_sip_eudebug@breakpoint-writesip:
- shard-lnl: NOTRUN -> [SKIP][82] ([Intel XE#7636]) +7 other tests skip
[82]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-lnl-6/igt@xe_exec_sip_eudebug@breakpoint-writesip.html
* igt@xe_exec_threads@threads-multi-queue-cm-shared-vm-basic:
- shard-lnl: NOTRUN -> [SKIP][83] ([Intel XE#8378]) +5 other tests skip
[83]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-lnl-6/igt@xe_exec_threads@threads-multi-queue-cm-shared-vm-basic.html
* igt@xe_exec_threads@threads-multi-queue-mixed-shared-vm-userptr-rebind:
- shard-bmg: NOTRUN -> [SKIP][84] ([Intel XE#8378]) +5 other tests skip
[84]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-bmg-7/igt@xe_exec_threads@threads-multi-queue-mixed-shared-vm-userptr-rebind.html
* igt@xe_fault_injection@exec-queue-create-fail-xe_vm_add_compute_exec_queue:
- shard-bmg: [PASS][85] -> [ABORT][86] ([Intel XE#8007])
[85]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5309-a2d82f27ac35c691c1c65b40c72b13d8b2a7f91f/shard-bmg-8/igt@xe_fault_injection@exec-queue-create-fail-xe_vm_add_compute_exec_queue.html
[86]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-bmg-4/igt@xe_fault_injection@exec-queue-create-fail-xe_vm_add_compute_exec_queue.html
* igt@xe_gpgpu_fill@offset-4x4:
- shard-lnl: NOTRUN -> [SKIP][87] ([Intel XE#7954])
[87]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-lnl-2/igt@xe_gpgpu_fill@offset-4x4.html
* igt@xe_live_ktest@xe_bo@xe_bo_evict_kunit:
- shard-lnl: NOTRUN -> [SKIP][88] ([Intel XE#2229])
[88]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-lnl-6/igt@xe_live_ktest@xe_bo@xe_bo_evict_kunit.html
* igt@xe_multigpu_svm@mgpu-latency-prefetch:
- shard-bmg: NOTRUN -> [SKIP][89] ([Intel XE#6964])
[89]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-bmg-5/igt@xe_multigpu_svm@mgpu-latency-prefetch.html
* igt@xe_multigpu_svm@mgpu-xgpu-access-prefetch:
- shard-lnl: NOTRUN -> [SKIP][90] ([Intel XE#6964]) +1 other test skip
[90]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-lnl-2/igt@xe_multigpu_svm@mgpu-xgpu-access-prefetch.html
* igt@xe_page_reclaim@random:
- shard-bmg: NOTRUN -> [SKIP][91] ([Intel XE#7793])
[91]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-bmg-1/igt@xe_page_reclaim@random.html
* igt@xe_pat@pat-sw-hw-reset-compare:
- shard-lnl: NOTRUN -> [FAIL][92] ([Intel XE#7695])
[92]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-lnl-6/igt@xe_pat@pat-sw-hw-reset-compare.html
* igt@xe_pm@d3cold-mmap-vram:
- shard-lnl: NOTRUN -> [SKIP][93] ([Intel XE#2284] / [Intel XE#366] / [Intel XE#7370])
[93]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-lnl-6/igt@xe_pm@d3cold-mmap-vram.html
* igt@xe_query@multigpu-query-invalid-size:
- shard-lnl: NOTRUN -> [SKIP][94] ([Intel XE#944]) +1 other test skip
[94]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-lnl-2/igt@xe_query@multigpu-query-invalid-size.html
* igt@xe_query@multigpu-query-mem-usage:
- shard-bmg: NOTRUN -> [SKIP][95] ([Intel XE#944]) +1 other test skip
[95]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-bmg-1/igt@xe_query@multigpu-query-mem-usage.html
* igt@xe_sriov_admin@sched-priority-write-readback-vfs-disabled:
- shard-lnl: NOTRUN -> [SKIP][96] ([Intel XE#7174])
[96]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-lnl-6/igt@xe_sriov_admin@sched-priority-write-readback-vfs-disabled.html
* igt@xe_sriov_scheduling@nonpreempt-engine-resets-low-priority:
- shard-lnl: NOTRUN -> [SKIP][97] ([Intel XE#8339])
[97]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-lnl-2/igt@xe_sriov_scheduling@nonpreempt-engine-resets-low-priority.html
* igt@xe_vm@overcommit-fault-vram-lr-no-overcommit:
- shard-lnl: NOTRUN -> [SKIP][98] ([Intel XE#7892])
[98]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-lnl-2/igt@xe_vm@overcommit-fault-vram-lr-no-overcommit.html
#### Possible fixes ####
* igt@kms_big_fb@linear-8bpp-rotate-0:
- shard-lnl: [ABORT][99] ([Intel XE#4760]) -> [PASS][100]
[99]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5309-a2d82f27ac35c691c1c65b40c72b13d8b2a7f91f/shard-lnl-1/igt@kms_big_fb@linear-8bpp-rotate-0.html
[100]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-lnl-2/igt@kms_big_fb@linear-8bpp-rotate-0.html
* igt@kms_cursor_legacy@flip-vs-cursor-atomic:
- shard-bmg: [FAIL][101] ([Intel XE#7571]) -> [PASS][102]
[101]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5309-a2d82f27ac35c691c1c65b40c72b13d8b2a7f91f/shard-bmg-4/igt@kms_cursor_legacy@flip-vs-cursor-atomic.html
[102]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-bmg-5/igt@kms_cursor_legacy@flip-vs-cursor-atomic.html
* igt@kms_flip@flip-vs-expired-vblank-interruptible@b-edp1:
- shard-lnl: [FAIL][103] ([Intel XE#301]) -> [PASS][104] +3 other tests pass
[103]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5309-a2d82f27ac35c691c1c65b40c72b13d8b2a7f91f/shard-lnl-1/igt@kms_flip@flip-vs-expired-vblank-interruptible@b-edp1.html
[104]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-lnl-2/igt@kms_flip@flip-vs-expired-vblank-interruptible@b-edp1.html
* igt@kms_pm_rpm@dpms-mode-unset-non-lpsp:
- shard-bmg: [SKIP][105] -> [PASS][106]
[105]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5309-a2d82f27ac35c691c1c65b40c72b13d8b2a7f91f/shard-bmg-5/igt@kms_pm_rpm@dpms-mode-unset-non-lpsp.html
[106]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-bmg-6/igt@kms_pm_rpm@dpms-mode-unset-non-lpsp.html
* igt@xe_exec_fault_mode@many-bindexecqueue-userptr-invalidate-prefetch:
- shard-bmg: [DMESG-FAIL][107] ([Intel XE#7774]) -> [PASS][108]
[107]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5309-a2d82f27ac35c691c1c65b40c72b13d8b2a7f91f/shard-bmg-5/igt@xe_exec_fault_mode@many-bindexecqueue-userptr-invalidate-prefetch.html
[108]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-bmg-6/igt@xe_exec_fault_mode@many-bindexecqueue-userptr-invalidate-prefetch.html
* igt@xe_fault_injection@inject-fault-probe-function-guc_wait_ucode:
- shard-bmg: [ABORT][109] ([Intel XE#8007]) -> [PASS][110] +1 other test pass
[109]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5309-a2d82f27ac35c691c1c65b40c72b13d8b2a7f91f/shard-bmg-4/igt@xe_fault_injection@inject-fault-probe-function-guc_wait_ucode.html
[110]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-bmg-5/igt@xe_fault_injection@inject-fault-probe-function-guc_wait_ucode.html
* igt@xe_pat@pt-caching-random-offsets:
- shard-bmg: [SKIP][111] ([Intel XE#8480]) -> [PASS][112] +18 other tests pass
[111]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5309-a2d82f27ac35c691c1c65b40c72b13d8b2a7f91f/shard-bmg-5/igt@xe_pat@pt-caching-random-offsets.html
[112]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-bmg-6/igt@xe_pat@pt-caching-random-offsets.html
#### Warnings ####
* igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-180-async-flip:
- shard-bmg: [SKIP][113] ([Intel XE#8480]) -> [SKIP][114] ([Intel XE#1124])
[113]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5309-a2d82f27ac35c691c1c65b40c72b13d8b2a7f91f/shard-bmg-5/igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-180-async-flip.html
[114]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-bmg-6/igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-180-async-flip.html
* igt@kms_bw@linear-tiling-4-displays-target-3840x2160p:
- shard-bmg: [SKIP][115] ([Intel XE#8480]) -> [SKIP][116] ([Intel XE#367]) +1 other test skip
[115]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5309-a2d82f27ac35c691c1c65b40c72b13d8b2a7f91f/shard-bmg-5/igt@kms_bw@linear-tiling-4-displays-target-3840x2160p.html
[116]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-bmg-6/igt@kms_bw@linear-tiling-4-displays-target-3840x2160p.html
* igt@kms_ccs@bad-rotation-90-4-tiled-lnl-ccs:
- shard-bmg: [SKIP][117] ([Intel XE#8480]) -> [SKIP][118] ([Intel XE#2652])
[117]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5309-a2d82f27ac35c691c1c65b40c72b13d8b2a7f91f/shard-bmg-5/igt@kms_ccs@bad-rotation-90-4-tiled-lnl-ccs.html
[118]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-bmg-6/igt@kms_ccs@bad-rotation-90-4-tiled-lnl-ccs.html
* igt@kms_ccs@crc-sprite-planes-basic-yf-tiled-ccs:
- shard-bmg: [SKIP][119] ([Intel XE#8480]) -> [SKIP][120] ([Intel XE#2887])
[119]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5309-a2d82f27ac35c691c1c65b40c72b13d8b2a7f91f/shard-bmg-5/igt@kms_ccs@crc-sprite-planes-basic-yf-tiled-ccs.html
[120]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-bmg-6/igt@kms_ccs@crc-sprite-planes-basic-yf-tiled-ccs.html
* igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-onoff:
- shard-bmg: [SKIP][121] ([Intel XE#8480]) -> [SKIP][122] ([Intel XE#4141])
[121]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5309-a2d82f27ac35c691c1c65b40c72b13d8b2a7f91f/shard-bmg-5/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-onoff.html
[122]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-bmg-6/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-onoff.html
* igt@kms_frontbuffer_tracking@fbcdrrshdr-1p-primscrn-pri-indfb-draw-mmap-wc:
- shard-bmg: [SKIP][123] ([Intel XE#8480]) -> [SKIP][124] ([Intel XE#2311]) +1 other test skip
[123]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5309-a2d82f27ac35c691c1c65b40c72b13d8b2a7f91f/shard-bmg-5/igt@kms_frontbuffer_tracking@fbcdrrshdr-1p-primscrn-pri-indfb-draw-mmap-wc.html
[124]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-bmg-6/igt@kms_frontbuffer_tracking@fbcdrrshdr-1p-primscrn-pri-indfb-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@psr-2p-primscrn-pri-shrfb-draw-render:
- shard-bmg: [SKIP][125] ([Intel XE#8480]) -> [SKIP][126] ([Intel XE#2313]) +3 other tests skip
[125]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5309-a2d82f27ac35c691c1c65b40c72b13d8b2a7f91f/shard-bmg-5/igt@kms_frontbuffer_tracking@psr-2p-primscrn-pri-shrfb-draw-render.html
[126]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-bmg-6/igt@kms_frontbuffer_tracking@psr-2p-primscrn-pri-shrfb-draw-render.html
* igt@kms_frontbuffer_tracking@psrhdr-abgr161616f-draw-render:
- shard-bmg: [SKIP][127] ([Intel XE#8480]) -> [SKIP][128] ([Intel XE#7061])
[127]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5309-a2d82f27ac35c691c1c65b40c72b13d8b2a7f91f/shard-bmg-5/igt@kms_frontbuffer_tracking@psrhdr-abgr161616f-draw-render.html
[128]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-bmg-6/igt@kms_frontbuffer_tracking@psrhdr-abgr161616f-draw-render.html
* igt@kms_hdr@brightness-with-hdr:
- shard-bmg: [SKIP][129] ([Intel XE#3374] / [Intel XE#3544]) -> [SKIP][130] ([Intel XE#3544])
[129]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5309-a2d82f27ac35c691c1c65b40c72b13d8b2a7f91f/shard-bmg-7/igt@kms_hdr@brightness-with-hdr.html
[130]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-bmg-10/igt@kms_hdr@brightness-with-hdr.html
* igt@kms_psr2_sf@psr2-overlay-primary-update-sf-dmg-area:
- shard-bmg: [SKIP][131] ([Intel XE#8480]) -> [SKIP][132] ([Intel XE#1489])
[131]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5309-a2d82f27ac35c691c1c65b40c72b13d8b2a7f91f/shard-bmg-5/igt@kms_psr2_sf@psr2-overlay-primary-update-sf-dmg-area.html
[132]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-bmg-6/igt@kms_psr2_sf@psr2-overlay-primary-update-sf-dmg-area.html
* igt@kms_tiled_display@basic-test-pattern-with-chamelium:
- shard-bmg: [SKIP][133] ([Intel XE#2509] / [Intel XE#7437]) -> [SKIP][134] ([Intel XE#2426] / [Intel XE#5848])
[133]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5309-a2d82f27ac35c691c1c65b40c72b13d8b2a7f91f/shard-bmg-3/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html
[134]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-bmg-2/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html
* igt@xe_exec_basic@multigpu-once-bindexecqueue-userptr-invalidate-race:
- shard-bmg: [SKIP][135] ([Intel XE#8480]) -> [SKIP][136] ([Intel XE#2322] / [Intel XE#7372])
[135]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5309-a2d82f27ac35c691c1c65b40c72b13d8b2a7f91f/shard-bmg-5/igt@xe_exec_basic@multigpu-once-bindexecqueue-userptr-invalidate-race.html
[136]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-bmg-6/igt@xe_exec_basic@multigpu-once-bindexecqueue-userptr-invalidate-race.html
* igt@xe_exec_threads@threads-multi-queue-userptr-invalidate:
- shard-bmg: [SKIP][137] ([Intel XE#8480]) -> [SKIP][138] ([Intel XE#8378])
[137]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5309-a2d82f27ac35c691c1c65b40c72b13d8b2a7f91f/shard-bmg-5/igt@xe_exec_threads@threads-multi-queue-userptr-invalidate.html
[138]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-bmg-6/igt@xe_exec_threads@threads-multi-queue-userptr-invalidate.html
* igt@xe_survivability@runtime-survivability:
- shard-bmg: [SKIP][139] ([Intel XE#8480]) -> [ABORT][140] ([Intel XE#8007])
[139]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5309-a2d82f27ac35c691c1c65b40c72b13d8b2a7f91f/shard-bmg-5/igt@xe_survivability@runtime-survivability.html
[140]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/shard-bmg-6/igt@xe_survivability@runtime-survivability.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#1407]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1407
[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#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#1745]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1745
[Intel XE#2229]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2229
[Intel XE#2234]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2234
[Intel XE#2284]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2284
[Intel XE#2286]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2286
[Intel XE#2311]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2311
[Intel XE#2313]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2313
[Intel XE#2320]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2320
[Intel XE#2321]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2321
[Intel XE#2322]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2322
[Intel XE#2327]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2327
[Intel XE#2390]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2390
[Intel XE#2426]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2426
[Intel XE#2509]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2509
[Intel XE#2652]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2652
[Intel XE#2763]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2763
[Intel XE#2850]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2850
[Intel XE#2887]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2887
[Intel XE#2893]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2893
[Intel XE#301]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/301
[Intel XE#306]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/306
[Intel XE#309]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/309
[Intel XE#3304]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3304
[Intel XE#3374]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3374
[Intel XE#3432]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3432
[Intel XE#3544]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3544
[Intel XE#362]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/362
[Intel XE#366]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/366
[Intel XE#367]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/367
[Intel XE#373]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/373
[Intel XE#3904]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3904
[Intel XE#4141]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4141
[Intel XE#4354]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4354
[Intel XE#4416]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4416
[Intel XE#4417]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4417
[Intel XE#4609]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4609
[Intel XE#4760]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4760
[Intel XE#5447]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5447
[Intel XE#5793]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5793
[Intel XE#5848]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5848
[Intel XE#599]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/599
[Intel XE#6035]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6035
[Intel XE#6126]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6126
[Intel XE#6312]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6312
[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#6813]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6813
[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#6912]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6912
[Intel XE#6964]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6964
[Intel XE#6974]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6974
[Intel XE#703]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/703
[Intel XE#7061]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7061
[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#7283]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7283
[Intel XE#7304]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7304
[Intel XE#7320]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7320
[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#7351]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7351
[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#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#7381]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7381
[Intel XE#7382]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7382
[Intel XE#7385]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7385
[Intel XE#7386]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7386
[Intel XE#7437]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7437
[Intel XE#7448]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7448
[Intel XE#7464]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7464
[Intel XE#7482]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7482
[Intel XE#7571]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7571
[Intel XE#7636]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7636
[Intel XE#7642]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7642
[Intel XE#7679]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7679
[Intel XE#7695]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7695
[Intel XE#776]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/776
[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#7795]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7795
[Intel XE#7850]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7850
[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#8007]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8007
[Intel XE#8265]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8265
[Intel XE#8339]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8339
[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#8480]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8480
[Intel XE#944]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/944
Build changes
-------------
* Linux: xe-5309-a2d82f27ac35c691c1c65b40c72b13d8b2a7f91f -> xe-pw-168333v4
IGT_8988: 8988
xe-5309-a2d82f27ac35c691c1c65b40c72b13d8b2a7f91f: a2d82f27ac35c691c1c65b40c72b13d8b2a7f91f
xe-pw-168333v4: 168333v4
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-168333v4/index.html
[-- Attachment #2: Type: text/html, Size: 52731 bytes --]
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [RFC PATCH v4 2/5] drm/xe: Add RAS logging helpers
2026-06-30 11:55 ` [RFC PATCH v4 2/5] drm/xe: Add RAS logging helpers Mallesh Koujalagi
@ 2026-07-03 11:15 ` Tauro, Riana
2026-07-03 13:01 ` Mallesh, Koujalagi
0 siblings, 1 reply; 21+ messages in thread
From: Tauro, Riana @ 2026-07-03 11:15 UTC (permalink / raw)
To: Mallesh Koujalagi, intel-xe, rodrigo.vivi, matthew.brost,
thomas.hellstrom
Cc: anshuman.gupta, badal.nilawar, vinay.belgaumkar,
aravind.iddamsetty, karthik.poosa, sk.anirban, raag.jadav
On 30-06-2026 17:25, Mallesh Koujalagi wrote:
> Add xe_ras_log_(*) macros to report Xe driver errors in a
> consistent, structured format.
>
> Exposes one macro per error category (probe, wedged,
> survivability, firmware, GT TDR, memory fault, IO bus). Each macro
> hard-codes the correct SIG_ID and severity for that category, so
> callers only need to pass the device or GT handle, errno, and message.
>
> Signed-off-by: Mallesh Koujalagi <mallesh.koujalagi@intel.com>
> ---
> v3:
> - Refer "Tile%u" and "GT%u" strings. (Michal Wajdeczko)
> - Remov xe_cper_severity_str(). (Michal Wajdeczko/Riana)
> - Declare __xe_ras_log() function to xe_ras_log.h. (Michal Wajdeczko)
> - Make macro function properly.
> - Remove *_FIRST and *_LAST macro. (Michal Wajdeczko/Riana)
> - Add sig id documents. (Riana)
> - Change macro function same prefix as the file.
> - Handle __xe_ras_log() function with variable format.
>
> v4:
> - Handle CONFIG_UEFI_CPER properly.
> - Add CPER_SEV_RECOVERABLE in __xe_ras_log().
> - Add xe_ras_log_runtime_fw() and xe_ras_log_device_fw() macros.
> - Update commit message.
> - Remove document. (Riana)
> ---
> drivers/gpu/drm/xe/Makefile | 1 +
> drivers/gpu/drm/xe/xe_ras_log.c | 65 +++++++++++++++++++++++++++++++++
> drivers/gpu/drm/xe/xe_ras_log.h | 62 +++++++++++++++++++++++++++++++
> 3 files changed, 128 insertions(+)
> create mode 100644 drivers/gpu/drm/xe/xe_ras_log.c
> create mode 100644 drivers/gpu/drm/xe/xe_ras_log.h
>
> diff --git a/drivers/gpu/drm/xe/Makefile b/drivers/gpu/drm/xe/Makefile
> index e5a04253e73b..cac19c21be08 100644
> --- a/drivers/gpu/drm/xe/Makefile
> +++ b/drivers/gpu/drm/xe/Makefile
> @@ -114,6 +114,7 @@ xe-y += xe_bb.o \
> xe_query.o \
> xe_range_fence.o \
> xe_ras.o \
> + xe_ras_log.o \
> xe_reg_sr.o \
> xe_reg_whitelist.o \
> xe_ring_ops.o \
> diff --git a/drivers/gpu/drm/xe/xe_ras_log.c b/drivers/gpu/drm/xe/xe_ras_log.c
> new file mode 100644
> index 000000000000..928fa4f45cdc
> --- /dev/null
> +++ b/drivers/gpu/drm/xe/xe_ras_log.c
> @@ -0,0 +1,65 @@
> +// SPDX-License-Identifier: MIT
> +/*
> + * Copyright © 2026 Intel Corporation
> + */
> +
> +#include <drm/drm_print.h>
> +
> +#include "xe_device.h"
> +#include "xe_gt.h"
> +#include "xe_ras_log.h"
> +
> +/**
> + * __xe_ras_log - Emit a structured RAS log entry
> + * @xe: xe device instance
> + * @gt: GT instance where the error occurred, or NULL if device-wide
> + * @sig_id: signature ID from xe_sig_ids.h identifying the error class
> + * @cper_sev: CPER severity (one of CPER_SEV_FATAL, CPER_SEV_RECOVERABLE, etc.)
> + * @errno_val: negative errno describing the error condition
> + * @fmt: printf-style format string
> + * @...: format arguments
> + *
> + * Formats the message and emits a kernel log line via drm_err() for fatal
> + * events or drm_warn() for all others. CPER record generation and hex dump
> + * are planned as follow-ups.
> + *
> + * Format:
> + * [xe-err] SIG_ID = <id> Severity = <sev> Location = <loc> Errno = <n> Message = "<msg>"
> + */
> +__printf(6, 7)
> +void __xe_ras_log(struct xe_device *xe, struct xe_gt *gt,
> + u16 sig_id, u32 cper_sev, int errno_val,
> + const char *fmt, ...)
> +{
> + char loc[32];
> + struct va_format vaf;
> + va_list ap;
> +
> + if (gt)
> + snprintf(loc, sizeof(loc), "tile%u/gt%u",
> + gt->tile->id, gt->info.id);
> + else
> + snprintf(loc, sizeof(loc), "device");
> +
> + va_start(ap, fmt);
> + vaf.fmt = fmt;
> + vaf.va = ≈
> +
> + if (cper_sev == CPER_SEV_FATAL || cper_sev == CPER_SEV_RECOVERABLE)
> + drm_err(&xe->drm,
> + "[xe-err] SIG_ID = %u Severity = %s Location = %s Errno = %d Message = \"%pV\"",
> + sig_id,
> + IS_ENABLED(CONFIG_UEFI_CPER) ? cper_severity_str(cper_sev) : "unknown",
> + loc, errno_val, &vaf);
> + else
> + drm_warn(&xe->drm,
> + "[xe-err] SIG_ID = %u Severity = %s Location = %s Errno = %d Message = \"%pV\"",
> + sig_id,
> + IS_ENABLED(CONFIG_UEFI_CPER) ? cper_severity_str(cper_sev) : "unknown",
> + loc, errno_val, &vaf);
There were few comments regarding this from both me and Michal from
previous rev that were agreed by you but not fixed.
Also let's close comments from previous rev before sending new revisions.
Thanks
Riana
> +
> + va_end(ap);
> +
> + /* TODO: Add CPER record driver handler */
> + /* TODO: Add RAS dump cper hex handler */
> +}
> diff --git a/drivers/gpu/drm/xe/xe_ras_log.h b/drivers/gpu/drm/xe/xe_ras_log.h
> new file mode 100644
> index 000000000000..3f94e6747e86
> --- /dev/null
> +++ b/drivers/gpu/drm/xe/xe_ras_log.h
> @@ -0,0 +1,62 @@
> +/* SPDX-License-Identifier: MIT */
> +/*
> + * Copyright © 2026 Intel Corporation
> + */
> +
> +#ifndef _XE_RAS_LOG_H_
> +#define _XE_RAS_LOG_H_
> +
> +#include <linux/cper.h>
> +
> +#include "xe_sig_ids.h"
> +
> +struct xe_device;
> +struct xe_gt;
> +
> +/*
> + * Common backend helper
> + */
> +__printf(6, 7)
> +void __xe_ras_log(struct xe_device *xe, struct xe_gt *gt,
> + u16 sig_id, u32 cper_sev, int errno_val,
> + const char *fmt, ...);
> +
> +/*
> + * Driver error reporting macros
> + */
> +
> +/* FATAL */
> +#define xe_ras_log_probe(xe, errno, fmt, ...) \
> + __xe_ras_log((xe), NULL, XE_SIG_PROBE, CPER_SEV_FATAL, \
> + (errno), fmt, ##__VA_ARGS__)
> +
> +#define xe_ras_log_wedged(xe, errno, fmt, ...) \
> + __xe_ras_log((xe), NULL, XE_SIG_WEDGED, CPER_SEV_FATAL, \
> + (errno), fmt, ##__VA_ARGS__)
> +
> +#define xe_ras_log_survivability(xe, errno, fmt, ...) \
> + __xe_ras_log((xe), NULL, XE_SIG_SURVIVABILITY, CPER_SEV_FATAL, \
> + (errno), fmt, ##__VA_ARGS__)
> +
> +/* RECOVERABLE */
> +#define xe_ras_log_runtime_fw(xe, gt, errno, fmt, ...) \
> + __xe_ras_log((xe), (gt), XE_SIG_RUNTIME_FW, CPER_SEV_RECOVERABLE, \
> + (errno), fmt, ##__VA_ARGS__)
> +
> +#define xe_ras_log_device_fw(xe, gt, errno, fmt, ...) \
> + __xe_ras_log((xe), (gt), XE_SIG_DEVICE_FW, CPER_SEV_RECOVERABLE, \
> + (errno), fmt, ##__VA_ARGS__)
> +
> +#define xe_ras_log_gt_tdr(xe, gt, errno, fmt, ...) \
> + __xe_ras_log((xe), (gt), XE_SIG_GT_TDR, CPER_SEV_RECOVERABLE, \
> + (errno), fmt, ##__VA_ARGS__)
> +
> +#define xe_ras_log_mem_fault(xe, gt, errno, fmt, ...) \
> + __xe_ras_log((xe), (gt), XE_SIG_MEM_FAULT, CPER_SEV_RECOVERABLE, \
> + (errno), fmt, ##__VA_ARGS__)
> +
> +#define xe_ras_log_io_bus(xe, errno, fmt, ...) \
> + __xe_ras_log((xe), NULL, XE_SIG_IO_BUS, CPER_SEV_RECOVERABLE, \
> + (errno), fmt, ##__VA_ARGS__)
> +
> +#endif /* _XE_RAS_LOG_H_ */
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [RFC PATCH v4 2/5] drm/xe: Add RAS logging helpers
2026-07-03 11:15 ` Tauro, Riana
@ 2026-07-03 13:01 ` Mallesh, Koujalagi
2026-07-06 8:35 ` Tauro, Riana
0 siblings, 1 reply; 21+ messages in thread
From: Mallesh, Koujalagi @ 2026-07-03 13:01 UTC (permalink / raw)
To: Tauro, Riana, intel-xe, rodrigo.vivi, matthew.brost,
thomas.hellstrom
Cc: anshuman.gupta, badal.nilawar, vinay.belgaumkar,
aravind.iddamsetty, karthik.poosa, sk.anirban, raag.jadav
On 03-07-2026 04:45 pm, Tauro, Riana wrote:
>
> On 30-06-2026 17:25, Mallesh Koujalagi wrote:
>> Add xe_ras_log_(*) macros to report Xe driver errors in a
>> consistent, structured format.
>>
>> Exposes one macro per error category (probe, wedged,
>> survivability, firmware, GT TDR, memory fault, IO bus). Each macro
>> hard-codes the correct SIG_ID and severity for that category, so
>> callers only need to pass the device or GT handle, errno, and message.
>>
>> Signed-off-by: Mallesh Koujalagi <mallesh.koujalagi@intel.com>
>> ---
>> v3:
>> - Refer "Tile%u" and "GT%u" strings. (Michal Wajdeczko)
>> - Remov xe_cper_severity_str(). (Michal Wajdeczko/Riana)
>> - Declare __xe_ras_log() function to xe_ras_log.h. (Michal Wajdeczko)
>> - Make macro function properly.
>> - Remove *_FIRST and *_LAST macro. (Michal Wajdeczko/Riana)
>> - Add sig id documents. (Riana)
>> - Change macro function same prefix as the file.
>> - Handle __xe_ras_log() function with variable format.
>>
>> v4:
>> - Handle CONFIG_UEFI_CPER properly.
>> - Add CPER_SEV_RECOVERABLE in __xe_ras_log().
>> - Add xe_ras_log_runtime_fw() and xe_ras_log_device_fw() macros.
>> - Update commit message.
>> - Remove document. (Riana)
>> ---
>> drivers/gpu/drm/xe/Makefile | 1 +
>> drivers/gpu/drm/xe/xe_ras_log.c | 65 +++++++++++++++++++++++++++++++++
>> drivers/gpu/drm/xe/xe_ras_log.h | 62 +++++++++++++++++++++++++++++++
>> 3 files changed, 128 insertions(+)
>> create mode 100644 drivers/gpu/drm/xe/xe_ras_log.c
>> create mode 100644 drivers/gpu/drm/xe/xe_ras_log.h
>>
>> diff --git a/drivers/gpu/drm/xe/Makefile b/drivers/gpu/drm/xe/Makefile
>> index e5a04253e73b..cac19c21be08 100644
>> --- a/drivers/gpu/drm/xe/Makefile
>> +++ b/drivers/gpu/drm/xe/Makefile
>> @@ -114,6 +114,7 @@ xe-y += xe_bb.o \
>> xe_query.o \
>> xe_range_fence.o \
>> xe_ras.o \
>> + xe_ras_log.o \
>> xe_reg_sr.o \
>> xe_reg_whitelist.o \
>> xe_ring_ops.o \
>> diff --git a/drivers/gpu/drm/xe/xe_ras_log.c
>> b/drivers/gpu/drm/xe/xe_ras_log.c
>> new file mode 100644
>> index 000000000000..928fa4f45cdc
>> --- /dev/null
>> +++ b/drivers/gpu/drm/xe/xe_ras_log.c
>> @@ -0,0 +1,65 @@
>> +// SPDX-License-Identifier: MIT
>> +/*
>> + * Copyright © 2026 Intel Corporation
>> + */
>> +
>> +#include <drm/drm_print.h>
>> +
>> +#include "xe_device.h"
>> +#include "xe_gt.h"
>> +#include "xe_ras_log.h"
>> +
>> +/**
>> + * __xe_ras_log - Emit a structured RAS log entry
>> + * @xe: xe device instance
>> + * @gt: GT instance where the error occurred, or NULL if device-wide
>> + * @sig_id: signature ID from xe_sig_ids.h identifying the error class
>> + * @cper_sev: CPER severity (one of CPER_SEV_FATAL,
>> CPER_SEV_RECOVERABLE, etc.)
>> + * @errno_val: negative errno describing the error condition
>> + * @fmt: printf-style format string
>> + * @...: format arguments
>> + *
>> + * Formats the message and emits a kernel log line via drm_err() for
>> fatal
>> + * events or drm_warn() for all others. CPER record generation and
>> hex dump
>> + * are planned as follow-ups.
>> + *
>> + * Format:
>> + * [xe-err] SIG_ID = <id> Severity = <sev> Location = <loc> Errno
>> = <n> Message = "<msg>"
>> + */
>> +__printf(6, 7)
>> +void __xe_ras_log(struct xe_device *xe, struct xe_gt *gt,
>> + u16 sig_id, u32 cper_sev, int errno_val,
>> + const char *fmt, ...)
>> +{
>> + char loc[32];
>> + struct va_format vaf;
>> + va_list ap;
>> +
>> + if (gt)
>> + snprintf(loc, sizeof(loc), "tile%u/gt%u",
>> + gt->tile->id, gt->info.id);
>> + else
>> + snprintf(loc, sizeof(loc), "device");
>> +
>> + va_start(ap, fmt);
>> + vaf.fmt = fmt;
>> + vaf.va = ≈
>> +
>> + if (cper_sev == CPER_SEV_FATAL || cper_sev == CPER_SEV_RECOVERABLE)
>> + drm_err(&xe->drm,
>> + "[xe-err] SIG_ID = %u Severity = %s Location = %s Errno
>> = %d Message = \"%pV\"",
>> + sig_id,
>> + IS_ENABLED(CONFIG_UEFI_CPER) ?
>> cper_severity_str(cper_sev) : "unknown",
>> + loc, errno_val, &vaf);
>> + else
>> + drm_warn(&xe->drm,
>> + "[xe-err] SIG_ID = %u Severity = %s Location = %s Errno
>> = %d Message = \"%pV\"",
>> + sig_id,
>> + IS_ENABLED(CONFIG_UEFI_CPER) ?
>> cper_severity_str(cper_sev) : "unknown",
>> + loc, errno_val, &vaf);
>
>
> There were few comments regarding this from both me and Michal from
> previous rev that were agreed by you but not fixed.
> Also let's close comments from previous rev before sending new revisions.
>
I checked with the Arch team. Even though this is logged using drm_warn(),
we still want the output to be prefixed with xe_err because it is used
for error handling paths. These messages are generated when correctable
or other hardware errors occur, so having an explicit xe_err tag helps
identify them as error-related events in the logs.
Thanks,
-/Mallesh
> Thanks
> Riana
>
>> +
>> + va_end(ap);
>> +
>> + /* TODO: Add CPER record driver handler */
>> + /* TODO: Add RAS dump cper hex handler */
>> +}
>> diff --git a/drivers/gpu/drm/xe/xe_ras_log.h
>> b/drivers/gpu/drm/xe/xe_ras_log.h
>> new file mode 100644
>> index 000000000000..3f94e6747e86
>> --- /dev/null
>> +++ b/drivers/gpu/drm/xe/xe_ras_log.h
>> @@ -0,0 +1,62 @@
>> +/* SPDX-License-Identifier: MIT */
>> +/*
>> + * Copyright © 2026 Intel Corporation
>> + */
>> +
>> +#ifndef _XE_RAS_LOG_H_
>> +#define _XE_RAS_LOG_H_
>> +
>> +#include <linux/cper.h>
>> +
>> +#include "xe_sig_ids.h"
>> +
>> +struct xe_device;
>> +struct xe_gt;
>> +
>> +/*
>> + * Common backend helper
>> + */
>> +__printf(6, 7)
>> +void __xe_ras_log(struct xe_device *xe, struct xe_gt *gt,
>> + u16 sig_id, u32 cper_sev, int errno_val,
>> + const char *fmt, ...);
>> +
>> +/*
>> + * Driver error reporting macros
>> + */
>> +
>> +/* FATAL */
>> +#define xe_ras_log_probe(xe, errno, fmt, ...) \
>> + __xe_ras_log((xe), NULL, XE_SIG_PROBE, CPER_SEV_FATAL, \
>> + (errno), fmt, ##__VA_ARGS__)
>> +
>> +#define xe_ras_log_wedged(xe, errno, fmt, ...) \
>> + __xe_ras_log((xe), NULL, XE_SIG_WEDGED, CPER_SEV_FATAL, \
>> + (errno), fmt, ##__VA_ARGS__)
>> +
>> +#define xe_ras_log_survivability(xe, errno, fmt, ...) \
>> + __xe_ras_log((xe), NULL, XE_SIG_SURVIVABILITY, CPER_SEV_FATAL, \
>> + (errno), fmt, ##__VA_ARGS__)
>> +
>> +/* RECOVERABLE */
>> +#define xe_ras_log_runtime_fw(xe, gt, errno, fmt, ...) \
>> + __xe_ras_log((xe), (gt), XE_SIG_RUNTIME_FW, CPER_SEV_RECOVERABLE, \
>> + (errno), fmt, ##__VA_ARGS__)
>> +
>> +#define xe_ras_log_device_fw(xe, gt, errno, fmt, ...) \
>> + __xe_ras_log((xe), (gt), XE_SIG_DEVICE_FW, CPER_SEV_RECOVERABLE, \
>> + (errno), fmt, ##__VA_ARGS__)
>> +
>> +#define xe_ras_log_gt_tdr(xe, gt, errno, fmt, ...) \
>> + __xe_ras_log((xe), (gt), XE_SIG_GT_TDR, CPER_SEV_RECOVERABLE, \
>> + (errno), fmt, ##__VA_ARGS__)
>> +
>> +#define xe_ras_log_mem_fault(xe, gt, errno, fmt, ...) \
>> + __xe_ras_log((xe), (gt), XE_SIG_MEM_FAULT, CPER_SEV_RECOVERABLE, \
>> + (errno), fmt, ##__VA_ARGS__)
>> +
>> +#define xe_ras_log_io_bus(xe, errno, fmt, ...) \
>> + __xe_ras_log((xe), NULL, XE_SIG_IO_BUS, CPER_SEV_RECOVERABLE, \
>> + (errno), fmt, ##__VA_ARGS__)
>> +
>> +#endif /* _XE_RAS_LOG_H_ */
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [RFC PATCH v4 2/5] drm/xe: Add RAS logging helpers
2026-07-03 13:01 ` Mallesh, Koujalagi
@ 2026-07-06 8:35 ` Tauro, Riana
2026-07-06 10:53 ` Mallesh, Koujalagi
0 siblings, 1 reply; 21+ messages in thread
From: Tauro, Riana @ 2026-07-06 8:35 UTC (permalink / raw)
To: Mallesh, Koujalagi, intel-xe, rodrigo.vivi, matthew.brost,
thomas.hellstrom
Cc: anshuman.gupta, badal.nilawar, vinay.belgaumkar,
aravind.iddamsetty, karthik.poosa, sk.anirban, raag.jadav
On 03-07-2026 18:31, Mallesh, Koujalagi wrote:
>
> On 03-07-2026 04:45 pm, Tauro, Riana wrote:
>>
>> On 30-06-2026 17:25, Mallesh Koujalagi wrote:
>>> Add xe_ras_log_(*) macros to report Xe driver errors in a
>>> consistent, structured format.
>>>
>>> Exposes one macro per error category (probe, wedged,
>>> survivability, firmware, GT TDR, memory fault, IO bus). Each macro
>>> hard-codes the correct SIG_ID and severity for that category, so
>>> callers only need to pass the device or GT handle, errno, and message.
>>>
>>> Signed-off-by: Mallesh Koujalagi <mallesh.koujalagi@intel.com>
>>> ---
>>> v3:
>>> - Refer "Tile%u" and "GT%u" strings. (Michal Wajdeczko)
>>> - Remov xe_cper_severity_str(). (Michal Wajdeczko/Riana)
>>> - Declare __xe_ras_log() function to xe_ras_log.h. (Michal Wajdeczko)
>>> - Make macro function properly.
>>> - Remove *_FIRST and *_LAST macro. (Michal Wajdeczko/Riana)
>>> - Add sig id documents. (Riana)
>>> - Change macro function same prefix as the file.
>>> - Handle __xe_ras_log() function with variable format.
>>>
>>> v4:
>>> - Handle CONFIG_UEFI_CPER properly.
>>> - Add CPER_SEV_RECOVERABLE in __xe_ras_log().
>>> - Add xe_ras_log_runtime_fw() and xe_ras_log_device_fw() macros.
>>> - Update commit message.
>>> - Remove document. (Riana)
>>> ---
>>> drivers/gpu/drm/xe/Makefile | 1 +
>>> drivers/gpu/drm/xe/xe_ras_log.c | 65
>>> +++++++++++++++++++++++++++++++++
>>> drivers/gpu/drm/xe/xe_ras_log.h | 62 +++++++++++++++++++++++++++++++
>>> 3 files changed, 128 insertions(+)
>>> create mode 100644 drivers/gpu/drm/xe/xe_ras_log.c
>>> create mode 100644 drivers/gpu/drm/xe/xe_ras_log.h
>>>
>>> diff --git a/drivers/gpu/drm/xe/Makefile b/drivers/gpu/drm/xe/Makefile
>>> index e5a04253e73b..cac19c21be08 100644
>>> --- a/drivers/gpu/drm/xe/Makefile
>>> +++ b/drivers/gpu/drm/xe/Makefile
>>> @@ -114,6 +114,7 @@ xe-y += xe_bb.o \
>>> xe_query.o \
>>> xe_range_fence.o \
>>> xe_ras.o \
>>> + xe_ras_log.o \
>>> xe_reg_sr.o \
>>> xe_reg_whitelist.o \
>>> xe_ring_ops.o \
>>> diff --git a/drivers/gpu/drm/xe/xe_ras_log.c
>>> b/drivers/gpu/drm/xe/xe_ras_log.c
>>> new file mode 100644
>>> index 000000000000..928fa4f45cdc
>>> --- /dev/null
>>> +++ b/drivers/gpu/drm/xe/xe_ras_log.c
>>> @@ -0,0 +1,65 @@
>>> +// SPDX-License-Identifier: MIT
>>> +/*
>>> + * Copyright © 2026 Intel Corporation
>>> + */
>>> +
>>> +#include <drm/drm_print.h>
>>> +
>>> +#include "xe_device.h"
>>> +#include "xe_gt.h"
>>> +#include "xe_ras_log.h"
>>> +
>>> +/**
>>> + * __xe_ras_log - Emit a structured RAS log entry
>>> + * @xe: xe device instance
>>> + * @gt: GT instance where the error occurred, or NULL if device-wide
>>> + * @sig_id: signature ID from xe_sig_ids.h identifying the error class
>>> + * @cper_sev: CPER severity (one of CPER_SEV_FATAL,
>>> CPER_SEV_RECOVERABLE, etc.)
>>> + * @errno_val: negative errno describing the error condition
>>> + * @fmt: printf-style format string
>>> + * @...: format arguments
>>> + *
>>> + * Formats the message and emits a kernel log line via drm_err()
>>> for fatal
>>> + * events or drm_warn() for all others. CPER record generation and
>>> hex dump
>>> + * are planned as follow-ups.
>>> + *
>>> + * Format:
>>> + * [xe-err] SIG_ID = <id> Severity = <sev> Location = <loc> Errno
>>> = <n> Message = "<msg>"
>>> + */
>>> +__printf(6, 7)
>>> +void __xe_ras_log(struct xe_device *xe, struct xe_gt *gt,
>>> + u16 sig_id, u32 cper_sev, int errno_val,
>>> + const char *fmt, ...)
>>> +{
>>> + char loc[32];
>>> + struct va_format vaf;
>>> + va_list ap;
>>> +
>>> + if (gt)
>>> + snprintf(loc, sizeof(loc), "tile%u/gt%u",
>>> + gt->tile->id, gt->info.id);
>>> + else
>>> + snprintf(loc, sizeof(loc), "device");
>>> +
>>> + va_start(ap, fmt);
>>> + vaf.fmt = fmt;
>>> + vaf.va = ≈
>>> +
>>> + if (cper_sev == CPER_SEV_FATAL || cper_sev ==
>>> CPER_SEV_RECOVERABLE)
>>> + drm_err(&xe->drm,
>>> + "[xe-err] SIG_ID = %u Severity = %s Location = %s Errno
>>> = %d Message = \"%pV\"",
>>> + sig_id,
>>> + IS_ENABLED(CONFIG_UEFI_CPER) ?
>>> cper_severity_str(cper_sev) : "unknown",
>>> + loc, errno_val, &vaf);
>>> + else
>>> + drm_warn(&xe->drm,
>>> + "[xe-err] SIG_ID = %u Severity = %s Location = %s
>>> Errno = %d Message = \"%pV\"",
>>> + sig_id,
>>> + IS_ENABLED(CONFIG_UEFI_CPER) ?
>>> cper_severity_str(cper_sev) : "unknown",
>>> + loc, errno_val, &vaf);
>>
>>
>> There were few comments regarding this from both me and Michal from
>> previous rev that were agreed by you but not fixed.
>> Also let's close comments from previous rev before sending new
>> revisions.
>>
> I checked with the Arch team. Even though this is logged using
> drm_warn(),
> we still want the output to be prefixed with xe_err because it is used
> for error handling paths. These messages are generated when correctable
> or other hardware errors occur, so having an explicit xe_err tag helps
> identify them as error-related events in the logs.
>
Why not replace with xe-ras instead. We are using 3 different terms here
ras, sigid and err. Let's keep it consistent.
Thanks
Riana
> Thanks,
> -/Mallesh
>
>> Thanks
>> Riana
>>
>>> +
>>> + va_end(ap);
>>> +
>>> + /* TODO: Add CPER record driver handler */
>>> + /* TODO: Add RAS dump cper hex handler */
>>> +}
>>> diff --git a/drivers/gpu/drm/xe/xe_ras_log.h
>>> b/drivers/gpu/drm/xe/xe_ras_log.h
>>> new file mode 100644
>>> index 000000000000..3f94e6747e86
>>> --- /dev/null
>>> +++ b/drivers/gpu/drm/xe/xe_ras_log.h
>>> @@ -0,0 +1,62 @@
>>> +/* SPDX-License-Identifier: MIT */
>>> +/*
>>> + * Copyright © 2026 Intel Corporation
>>> + */
>>> +
>>> +#ifndef _XE_RAS_LOG_H_
>>> +#define _XE_RAS_LOG_H_
>>> +
>>> +#include <linux/cper.h>
>>> +
>>> +#include "xe_sig_ids.h"
>>> +
>>> +struct xe_device;
>>> +struct xe_gt;
>>> +
>>> +/*
>>> + * Common backend helper
>>> + */
>>> +__printf(6, 7)
>>> +void __xe_ras_log(struct xe_device *xe, struct xe_gt *gt,
>>> + u16 sig_id, u32 cper_sev, int errno_val,
>>> + const char *fmt, ...);
>>> +
>>> +/*
>>> + * Driver error reporting macros
>>> + */
>>> +
>>> +/* FATAL */
>>> +#define xe_ras_log_probe(xe, errno, fmt, ...) \
>>> + __xe_ras_log((xe), NULL, XE_SIG_PROBE, CPER_SEV_FATAL, \
>>> + (errno), fmt, ##__VA_ARGS__)
>>> +
>>> +#define xe_ras_log_wedged(xe, errno, fmt, ...) \
>>> + __xe_ras_log((xe), NULL, XE_SIG_WEDGED, CPER_SEV_FATAL, \
>>> + (errno), fmt, ##__VA_ARGS__)
>>> +
>>> +#define xe_ras_log_survivability(xe, errno, fmt, ...) \
>>> + __xe_ras_log((xe), NULL, XE_SIG_SURVIVABILITY, CPER_SEV_FATAL, \
>>> + (errno), fmt, ##__VA_ARGS__)
>>> +
>>> +/* RECOVERABLE */
>>> +#define xe_ras_log_runtime_fw(xe, gt, errno, fmt, ...) \
>>> + __xe_ras_log((xe), (gt), XE_SIG_RUNTIME_FW,
>>> CPER_SEV_RECOVERABLE, \
>>> + (errno), fmt, ##__VA_ARGS__)
>>> +
>>> +#define xe_ras_log_device_fw(xe, gt, errno, fmt, ...) \
>>> + __xe_ras_log((xe), (gt), XE_SIG_DEVICE_FW, CPER_SEV_RECOVERABLE, \
>>> + (errno), fmt, ##__VA_ARGS__)
>>> +
>>> +#define xe_ras_log_gt_tdr(xe, gt, errno, fmt, ...) \
>>> + __xe_ras_log((xe), (gt), XE_SIG_GT_TDR, CPER_SEV_RECOVERABLE, \
>>> + (errno), fmt, ##__VA_ARGS__)
>>> +
>>> +#define xe_ras_log_mem_fault(xe, gt, errno, fmt, ...) \
>>> + __xe_ras_log((xe), (gt), XE_SIG_MEM_FAULT, CPER_SEV_RECOVERABLE, \
>>> + (errno), fmt, ##__VA_ARGS__)
>>> +
>>> +#define xe_ras_log_io_bus(xe, errno, fmt, ...) \
>>> + __xe_ras_log((xe), NULL, XE_SIG_IO_BUS, CPER_SEV_RECOVERABLE, \
>>> + (errno), fmt, ##__VA_ARGS__)
>>> +
>>> +#endif /* _XE_RAS_LOG_H_ */
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [RFC PATCH v4 3/5] drm/xe: use xe_ras_log_wedged macro in xe_device_declare_wedged
2026-06-30 11:55 ` [RFC PATCH v4 3/5] drm/xe: use xe_ras_log_wedged macro in xe_device_declare_wedged Mallesh Koujalagi
@ 2026-07-06 8:36 ` Tauro, Riana
2026-07-06 14:32 ` Michal Wajdeczko
1 sibling, 0 replies; 21+ messages in thread
From: Tauro, Riana @ 2026-07-06 8:36 UTC (permalink / raw)
To: Mallesh Koujalagi, intel-xe, rodrigo.vivi, matthew.brost,
thomas.hellstrom
Cc: anshuman.gupta, badal.nilawar, vinay.belgaumkar,
aravind.iddamsetty, karthik.poosa, sk.anirban, raag.jadav
On 30-06-2026 17:25, Mallesh Koujalagi wrote:
> Replace the open-coded drm_err() call with xe_ras_log_wedged()
> macro so that wedge events are reported through the unified
> RAS/SIG logging path with a consistent format, CPER severity,
> and errno.
>
> Signed-off-by: Mallesh Koujalagi<mallesh.koujalagi@intel.com>
> ---
> v2:
> - Rebase.
>
> v3:
> - Update message in xe_ras_log_wedged().
>
> v4:
> - Replace XE_RAS_WEDGED to xe_ras_log_wedged. (Dnyaneshwar)
> ---
> drivers/gpu/drm/xe/xe_device.c | 13 +++++++------
> 1 file changed, 7 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/xe_device.c
> index b6e49309a99f..7538ac7c7dfb 100644
> --- a/drivers/gpu/drm/xe/xe_device.c
> +++ b/drivers/gpu/drm/xe/xe_device.c
> @@ -62,6 +62,7 @@
> #include "xe_pxp.h"
> #include "xe_query.h"
> #include "xe_ras.h"
> +#include "xe_ras_log.h"
> #include "xe_shrinker.h"
> #include "xe_soc_remapper.h"
> #include "xe_survivability_mode.h"
> @@ -1428,12 +1429,12 @@ void xe_device_declare_wedged(struct xe_device *xe)
> if (!atomic_xchg(&xe->wedged.flag, 1)) {
> xe->needs_flr_on_fini = true;
> xe_pm_runtime_get_noresume(xe);
> - drm_err(&xe->drm,
> - "CRITICAL: Xe has declared device %s as wedged.\n"
> - "IOCTLs and executions are blocked.\n"
> - "For recovery procedure, refer tohttps://docs.kernel.org/gpu/drm-uapi.html#device-wedging\n"
> - "Please file a _new_ bug report athttps://gitlab.freedesktop.org/drm/xe/kernel/issues/new\n",
> - dev_name(xe->drm.dev));
> + xe_ras_log_wedged(xe, -EIO,
Error code is changed for wedged.
Please take a look at this patch [PATCH v2 1/2] drm/xe/guc: distinguish
wedged from recoverable cancellation - Sk Anirban
<https://lore.kernel.org/intel-xe/20260624194618.2793571-5-sk.anirban@intel.com/>
Thanks
Riana
> + "CRITICAL: Xe has declared device %s as wedged.\n"
> + "IOCTLs and executions are blocked.\n"
> + "For recovery procedure, refer tohttps://docs.kernel.org/gpu/drm-uapi.html#device-wedging\n"
> + "Please file a _new_ bug report athttps://gitlab.freedesktop.org/drm/xe/kernel/issues/new\n",
> + dev_name(xe->drm.dev));
> }
>
> for_each_gt(gt, xe, id)
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [RFC PATCH v4 4/5] drm/xe: Use RAS logging to report survivability mode
2026-06-30 11:55 ` [RFC PATCH v4 4/5] drm/xe: Use RAS logging to report survivability mode Mallesh Koujalagi
@ 2026-07-06 8:41 ` Tauro, Riana
0 siblings, 0 replies; 21+ messages in thread
From: Tauro, Riana @ 2026-07-06 8:41 UTC (permalink / raw)
To: Mallesh Koujalagi, intel-xe, rodrigo.vivi, matthew.brost,
thomas.hellstrom
Cc: anshuman.gupta, badal.nilawar, vinay.belgaumkar,
aravind.iddamsetty, karthik.poosa, sk.anirban, raag.jadav
On 30-06-2026 17:25, Mallesh Koujalagi wrote:
> Replace dev_err() calls with xe_ras_log_survivability() so
> survivability events are reported through the structured RAS logging
> path with a consistent format.
How about sysfs creation failure? Is that not required?
> Signed-off-by: Mallesh Koujalagi <mallesh.koujalagi@intel.com>
> ---
> drivers/gpu/drm/xe/xe_survivability_mode.c | 11 ++++++-----
> 1 file changed, 6 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/gpu/drm/xe/xe_survivability_mode.c b/drivers/gpu/drm/xe/xe_survivability_mode.c
> index 427afd144f3a..a58d46f67677 100644
> --- a/drivers/gpu/drm/xe/xe_survivability_mode.c
> +++ b/drivers/gpu/drm/xe/xe_survivability_mode.c
> @@ -17,6 +17,7 @@
> #include "xe_mmio.h"
> #include "xe_nvm.h"
> #include "xe_pcode_api.h"
> +#include "xe_ras_log.h"
> #include "xe_vsec.h"
>
> /**
> @@ -307,7 +308,6 @@ static int create_survivability_sysfs(struct pci_dev *pdev)
>
> static int enable_boot_survivability_mode(struct pci_dev *pdev)
> {
> - struct device *dev = &pdev->dev;
> struct xe_device *xe = pdev_to_xe_device(pdev);
> struct xe_survivability *survivability = &xe->survivability;
> int ret = 0;
> @@ -333,12 +333,12 @@ static int enable_boot_survivability_mode(struct pci_dev *pdev)
> if (ret)
> goto err;
>
> - dev_err(dev, "In Survivability Mode\n");
> + xe_ras_log_survivability(xe, 0, "Boot Survivability Mode enabled\n");
>
> return 0;
>
> err:
> - dev_err(dev, "Failed to enable Survivability Mode\n");
> + xe_ras_log_survivability(xe, ret, "Failed to enable Boot Survivability Mode\n");
> survivability->mode = false;
> return ret;
> }
> @@ -413,11 +413,12 @@ void xe_survivability_mode_runtime_enable(struct xe_device *xe)
> dev_err(&pdev->dev, "Failed to create survivability sysfs\n");
>
> survivability->type = XE_SURVIVABILITY_TYPE_RUNTIME;
> - dev_err(&pdev->dev, "Runtime Survivability mode enabled\n");
> + xe_ras_log_survivability(xe, -EIO,
> + "Runtime Survivability Mode enabled, firmware flash required.\n"
> + "Please refer to the userspace documentation for more details!\n");
Why do we need error code here and not in boot survivability?
Also what is the purpose of this error code?
Thanks
Riana
>
> xe_device_set_wedged_method(xe, DRM_WEDGE_RECOVERY_VENDOR);
> xe_device_declare_wedged(xe);
> - dev_err(&pdev->dev, "Firmware flash required, Please refer to the userspace documentation for more details!\n");
> }
>
> /**
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [RFC PATCH v4 1/5] drm/xe: Add SIG_IDs for RAS error logging
2026-06-30 14:25 ` Raag Jadav
@ 2026-07-06 10:43 ` Mallesh, Koujalagi
0 siblings, 0 replies; 21+ messages in thread
From: Mallesh, Koujalagi @ 2026-07-06 10:43 UTC (permalink / raw)
To: Raag Jadav
Cc: intel-xe, rodrigo.vivi, matthew.brost, thomas.hellstrom,
anshuman.gupta, badal.nilawar, vinay.belgaumkar,
aravind.iddamsetty, riana.tauro, karthik.poosa, sk.anirban
[-- Attachment #1: Type: text/plain, Size: 8500 bytes --]
On 30-06-2026 07:55 pm, Raag Jadav wrote:
> On Tue, Jun 30, 2026 at 05:25:05PM +0530, Mallesh Koujalagi wrote:
>> Add xe_sig_ids.h which defines a set of stable numeric labels
>> for Xe error categories, called SIG_IDs.
>>
>> Each SIG_ID identifies which subsystem reported an error (e.g. probe,
>> wedged, GT TDR, firmware). It does not encode the full failure details,
>> those come from errno and the free-form message:
>>
>> SIG_ID -> which area failed
>> errno -> what failed
>> message -> extra human-readable context
>>
>> Also add a DOC: kernel-doc section covering design rationale, driver
>> severity labels (FATAL/RECOVERABLE), usage guidelines, and the
>> distinction between driver and hardware error paths.
> ...
>
>> +/**
>> + * DOC: SIG_ID Overview
>> + *
>> + * Signature ID (SIG_ID) is a stable numeric identifier (u16) for a defined
>> + * Xe error category - it answers: "which subsystem reported the error?"
> Introducing a new concept is a bit of an uphill battle in itself, not
> because it lacks an explanation but because the explanation often assumes
> that the reader has the same context as the writer and what we end up
> with is a terminology soup that doesn't add much to the understanding :)
>
>> + * SIG_ID format
>> + * =============
>> + *
>> + * Xe error events are emitted as a single structured line using stable fields.
>> + * Driver events use:
>> + *
>> + * [xe-err] SIG_ID = <u16> Severity = <CPER_SEV_*>
>> + * Location = <device|tile/gt> Errno = <neg_errno>
>> + * Message = "<free-form text>"
>> + *
>> + * Hardware-originated RAS events use the same overall format, but typically
>> + * omit Errno and Message and instead report the hardware-derived location /
>> + * error-class information.
>> + *
>> + * Important
>> + * =========
>> + *
>> + * SIG_ID identifies the reporting subsystem/category only. It does not encode
>> + * the detailed failure reason. The detailed reason is carried separately by::
>> + *
>> + * SIG_ID -> which subsystem/category failed
> So what exactly is "category" or "subsystem" and what fits the criteria of
> it? In RAS context we have a unique ID attached to all hardware units (which
> we've already defined under xe_ras), so similar to that, what makes a SIG_ID
> unique?
>
> Btw, I'm really unsure if 'probe' or 'wedged' are subsystems ;)
Good point. "Subsystem/category" is imprecise, especially since values
like probe and wedged are not
subsystems. SIG_ID is the stable top-level identifier for a Xe error
report. Each top-level error reporting family
has an unique SIG_ID number. I'll reword the comment to make that explicit.
>> + * Severity -> how serious the event is
>> + * Errno -> what failed (driver events)
>> + * Message -> human-readable context
>> + *
>> + * Example (driver event)
> In Linux world these are not events, so I'd try to find a better terminology
> (and in all other places where applicable).
Agreed. I'll change event to error report.
>
>> + * ======================
>> + *
>> + * [xe-err] SIG_ID = 6 Severity = CPER_SEV_RECOVERABLE
>> + * Location = tile0/gt0 Errno = -5
>> + * Message = "Engine 'rcs0' hung; TDR triggered, engine reset succeeded"
>> + *
>> + * In the example
>> + * ==============
>> + *
>> + * SIG_ID 6 = XE GT/TDR category
>> + * RECOVERABLE = workload impacted, device still operational
>> + * -5 = Linux errno (-EIO)
>> + * Message = extra context for triage
>> + *
>> + * Why SIG_ID exists?
>> + * ==================
>> + *
>> + * The goal is to replace inconsistent ad-hoc error strings with a small
>> + * set of stable, structured error events that are easier for operators
>> + * and tools to understand. Each driver event carries a fixed SIG_ID with
>> + * a severity determined by its error category, and structured output that
>> + * can be consumed consistently across driver or firmware versions. It
>> + * reduces guesswork during triage and allows machine parsing of important
>> + * fault events.
> Okay so the problem statement is good enough but let's say the tools actually
> parse these IDs, what do you expect the outcome of the parsing to be? What
> will the results be used for?
>
> I understand the telemetry aspect, but if the expectation is to perform a
> "certain recovery procedure" based on the ID, wouldn't it be more intuitive
> to just define the IDs based on procedure itself?
The purpose of parsing SIG_ID is to classify a reported Xe error into a
stable
top-level family so tools can bucket, aggregate , alert etc. The parsed
result combined
with severity and detailed fields to decide what action, if any, is
appropriate.
SIG_ID should identify the kind of error, not the recovery action,
because recovery actions can change over time.
>> + * Driver severity labels
>> + * ======================
>> + *
>> + * FATAL means the device cannot continue operation (e.g. probe failure,
>> + * device wedged). RECOVERABLE means the driver encountered an error but
>> + * may continue with degraded functionality.
>> + *
>> + * When to use the xe_ras_log helpers (see xe_ras_log.h)
>> + * =====================================================
>> + *
>> + * Use them only for defined Xe error events that belong to the published
>> + * error categories. These helpers are intended for important fault paths
>> + * such as probe failure, wedged device, survivability mode, firmware
>> + * failures, GT hang/TDR/reset, memory faults, and runtime IO/bus faults.
>> + * The selected macro fixes the SIG_ID and severity for that category.
>> + *
>> + * Do not use xe_ras_log helpers for all logs
>> + * ==========================================
>> + *
>> + * These helpers are not a replacement for normal drm_info(), drm_dbg(),
>> + * tracing, or one-off diagnostics. They are for stable, structured error
>> + * reporting only. Using them for ordinary logs would dilute the error
>> + * stream and make operator-facing fault reporting noisy and less useful.
>> + *
>> + * Hardware errors
>> + * ===============
>> + *
>> + * Hardware errors are hardware-reported RAS events and map to the
>> + * XE_SIG_HW_* identifiers. They are reported through the hardware error
>> + * path (e.g. CPER records), not through the driver xe_ras_log helpers.
>> + *
>> + * Unlike driver xe_ras_log helpers, hardware events do not have one fixed
>> + * severity per SIG_ID. For example, a fabric event (XE_SIG_HW_FABRIC) may
>> + * be reported as CPER_SEV_CORRECTED, CPER_SEV_FATAL, CPER_SEV_RECOVERABLE,
>> + * or CPER_SEV_INFORMATIONAL, depending on what the hardware reported.
>> + */
>> +
>> +/*
>> + * Driver errors: SIG_IDs
>> + */
>> +#define XE_SIG_PROBE 1 /* FATAL: probe failed */
>> +#define XE_SIG_WEDGED 2 /* FATAL: device wedged */
>> +#define XE_SIG_SURVIVABILITY 3 /* FATAL: survivability mode */
>> +#define XE_SIG_RUNTIME_FW 4 /* RECOVERABLE: GuC/HuC/UC/GSC */
>> +#define XE_SIG_DEVICE_FW 5 /* RECOVERABLE: PCODE/CSC/System controller */
>> +#define XE_SIG_GT_TDR 6 /* RECOVERABLE: engine hang / reset */
>> +#define XE_SIG_MEM_FAULT 7 /* RECOVERABLE: VM bind, page fault, GTT */
>> +#define XE_SIG_IO_BUS 8 /* RECOVERABLE: runtime PCIe/IOMMU/MMIO */
> Many of the above actually overlap, for example boottime survivability or
> firmware load failure will result in probe failure, while runtime survivability
> or GT reset failure will result in wedging. So which ID is exactly applicable
> in those cases and how does it help the usecase here?
The intent is to use SIG_ID for the specific error report being emitted.
For example
Bootime survivability failure during probe should use the
XE_SIG_SURVIVABILITY, XE_SIG_PROBE like
chain of failure which will report all and help to triage.
>> +/*
>> + * Hardware errors: SIG_IDs
>> + */
>> +#define XE_SIG_HW_DEVICE_MEMORY 9 /* Device memory errors */
>> +#define XE_SIG_HW_CORE_COMPUTE 10 /* Compute/shader core errors */
>> +#define XE_SIG_HW_PCIE 11 /* PCIe interface errors */
>> +#define XE_SIG_HW_FABRIC 12 /* Fabric errors */
>> +#define XE_SIG_HW_SOC_INTERNAL 13 /* SoC-internal errors */
> So is this to be reused in CPER or is that its own thing?
Hardware SIG_IDs are used alonside CPER, not instead of it.
SIG_ID provides a stable top-level Xe error reporting family, while CPER
remains the source of
detailed hardware component/type/cause information.
Thanks,
-/Mallesh
>
> Confused :(
>
> Raag
>
>> +#endif /* _XE_SIG_IDS_H_ */
>> --
>> 2.34.1
>>
[-- Attachment #2: Type: text/html, Size: 10810 bytes --]
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [RFC PATCH v4 2/5] drm/xe: Add RAS logging helpers
2026-07-06 8:35 ` Tauro, Riana
@ 2026-07-06 10:53 ` Mallesh, Koujalagi
0 siblings, 0 replies; 21+ messages in thread
From: Mallesh, Koujalagi @ 2026-07-06 10:53 UTC (permalink / raw)
To: Tauro, Riana, intel-xe, rodrigo.vivi, matthew.brost,
thomas.hellstrom
Cc: anshuman.gupta, badal.nilawar, vinay.belgaumkar,
aravind.iddamsetty, karthik.poosa, sk.anirban, raag.jadav
On 06-07-2026 02:05 pm, Tauro, Riana wrote:
>
> On 03-07-2026 18:31, Mallesh, Koujalagi wrote:
>>
>> On 03-07-2026 04:45 pm, Tauro, Riana wrote:
>>>
>>> On 30-06-2026 17:25, Mallesh Koujalagi wrote:
>>>> Add xe_ras_log_(*) macros to report Xe driver errors in a
>>>> consistent, structured format.
>>>>
>>>> Exposes one macro per error category (probe, wedged,
>>>> survivability, firmware, GT TDR, memory fault, IO bus). Each macro
>>>> hard-codes the correct SIG_ID and severity for that category, so
>>>> callers only need to pass the device or GT handle, errno, and message.
>>>>
>>>> Signed-off-by: Mallesh Koujalagi <mallesh.koujalagi@intel.com>
>>>> ---
>>>> v3:
>>>> - Refer "Tile%u" and "GT%u" strings. (Michal Wajdeczko)
>>>> - Remov xe_cper_severity_str(). (Michal Wajdeczko/Riana)
>>>> - Declare __xe_ras_log() function to xe_ras_log.h. (Michal Wajdeczko)
>>>> - Make macro function properly.
>>>> - Remove *_FIRST and *_LAST macro. (Michal Wajdeczko/Riana)
>>>> - Add sig id documents. (Riana)
>>>> - Change macro function same prefix as the file.
>>>> - Handle __xe_ras_log() function with variable format.
>>>>
>>>> v4:
>>>> - Handle CONFIG_UEFI_CPER properly.
>>>> - Add CPER_SEV_RECOVERABLE in __xe_ras_log().
>>>> - Add xe_ras_log_runtime_fw() and xe_ras_log_device_fw() macros.
>>>> - Update commit message.
>>>> - Remove document. (Riana)
>>>> ---
>>>> drivers/gpu/drm/xe/Makefile | 1 +
>>>> drivers/gpu/drm/xe/xe_ras_log.c | 65
>>>> +++++++++++++++++++++++++++++++++
>>>> drivers/gpu/drm/xe/xe_ras_log.h | 62 +++++++++++++++++++++++++++++++
>>>> 3 files changed, 128 insertions(+)
>>>> create mode 100644 drivers/gpu/drm/xe/xe_ras_log.c
>>>> create mode 100644 drivers/gpu/drm/xe/xe_ras_log.h
>>>>
>>>> diff --git a/drivers/gpu/drm/xe/Makefile b/drivers/gpu/drm/xe/Makefile
>>>> index e5a04253e73b..cac19c21be08 100644
>>>> --- a/drivers/gpu/drm/xe/Makefile
>>>> +++ b/drivers/gpu/drm/xe/Makefile
>>>> @@ -114,6 +114,7 @@ xe-y += xe_bb.o \
>>>> xe_query.o \
>>>> xe_range_fence.o \
>>>> xe_ras.o \
>>>> + xe_ras_log.o \
>>>> xe_reg_sr.o \
>>>> xe_reg_whitelist.o \
>>>> xe_ring_ops.o \
>>>> diff --git a/drivers/gpu/drm/xe/xe_ras_log.c
>>>> b/drivers/gpu/drm/xe/xe_ras_log.c
>>>> new file mode 100644
>>>> index 000000000000..928fa4f45cdc
>>>> --- /dev/null
>>>> +++ b/drivers/gpu/drm/xe/xe_ras_log.c
>>>> @@ -0,0 +1,65 @@
>>>> +// SPDX-License-Identifier: MIT
>>>> +/*
>>>> + * Copyright © 2026 Intel Corporation
>>>> + */
>>>> +
>>>> +#include <drm/drm_print.h>
>>>> +
>>>> +#include "xe_device.h"
>>>> +#include "xe_gt.h"
>>>> +#include "xe_ras_log.h"
>>>> +
>>>> +/**
>>>> + * __xe_ras_log - Emit a structured RAS log entry
>>>> + * @xe: xe device instance
>>>> + * @gt: GT instance where the error occurred, or NULL if device-wide
>>>> + * @sig_id: signature ID from xe_sig_ids.h identifying the error
>>>> class
>>>> + * @cper_sev: CPER severity (one of CPER_SEV_FATAL,
>>>> CPER_SEV_RECOVERABLE, etc.)
>>>> + * @errno_val: negative errno describing the error condition
>>>> + * @fmt: printf-style format string
>>>> + * @...: format arguments
>>>> + *
>>>> + * Formats the message and emits a kernel log line via drm_err()
>>>> for fatal
>>>> + * events or drm_warn() for all others. CPER record generation and
>>>> hex dump
>>>> + * are planned as follow-ups.
>>>> + *
>>>> + * Format:
>>>> + * [xe-err] SIG_ID = <id> Severity = <sev> Location = <loc>
>>>> Errno = <n> Message = "<msg>"
>>>> + */
>>>> +__printf(6, 7)
>>>> +void __xe_ras_log(struct xe_device *xe, struct xe_gt *gt,
>>>> + u16 sig_id, u32 cper_sev, int errno_val,
>>>> + const char *fmt, ...)
>>>> +{
>>>> + char loc[32];
>>>> + struct va_format vaf;
>>>> + va_list ap;
>>>> +
>>>> + if (gt)
>>>> + snprintf(loc, sizeof(loc), "tile%u/gt%u",
>>>> + gt->tile->id, gt->info.id);
>>>> + else
>>>> + snprintf(loc, sizeof(loc), "device");
>>>> +
>>>> + va_start(ap, fmt);
>>>> + vaf.fmt = fmt;
>>>> + vaf.va = ≈
>>>> +
>>>> + if (cper_sev == CPER_SEV_FATAL || cper_sev ==
>>>> CPER_SEV_RECOVERABLE)
>>>> + drm_err(&xe->drm,
>>>> + "[xe-err] SIG_ID = %u Severity = %s Location = %s
>>>> Errno = %d Message = \"%pV\"",
>>>> + sig_id,
>>>> + IS_ENABLED(CONFIG_UEFI_CPER) ?
>>>> cper_severity_str(cper_sev) : "unknown",
>>>> + loc, errno_val, &vaf);
>>>> + else
>>>> + drm_warn(&xe->drm,
>>>> + "[xe-err] SIG_ID = %u Severity = %s Location = %s
>>>> Errno = %d Message = \"%pV\"",
>>>> + sig_id,
>>>> + IS_ENABLED(CONFIG_UEFI_CPER) ?
>>>> cper_severity_str(cper_sev) : "unknown",
>>>> + loc, errno_val, &vaf);
>>>
>>>
>>> There were few comments regarding this from both me and Michal from
>>> previous rev that were agreed by you but not fixed.
>>> Also let's close comments from previous rev before sending new
>>> revisions.
>>>
>> I checked with the Arch team. Even though this is logged using
>> drm_warn(),
>> we still want the output to be prefixed with xe_err because it is used
>> for error handling paths. These messages are generated when correctable
>> or other hardware errors occur, so having an explicit xe_err tag helps
>> identify them as error-related events in the logs.
>>
>
> Why not replace with xe-ras instead. We are using 3 different terms here
> ras, sigid and err. Let's keep it consistent.
>
> Thanks
> Riana
>
>
xe-ras would be misleading for cases like probe failure. Since this
logging covers
more than hadware RAS, xe-err is a better common prefix.
Thanks,
-/Mallesh
>> Thanks,
>> -/Mallesh
>>
>>> Thanks
>>> Riana
>>>
>>>> +
>>>> + va_end(ap);
>>>> +
>>>> + /* TODO: Add CPER record driver handler */
>>>> + /* TODO: Add RAS dump cper hex handler */
>>>> +}
>>>> diff --git a/drivers/gpu/drm/xe/xe_ras_log.h
>>>> b/drivers/gpu/drm/xe/xe_ras_log.h
>>>> new file mode 100644
>>>> index 000000000000..3f94e6747e86
>>>> --- /dev/null
>>>> +++ b/drivers/gpu/drm/xe/xe_ras_log.h
>>>> @@ -0,0 +1,62 @@
>>>> +/* SPDX-License-Identifier: MIT */
>>>> +/*
>>>> + * Copyright © 2026 Intel Corporation
>>>> + */
>>>> +
>>>> +#ifndef _XE_RAS_LOG_H_
>>>> +#define _XE_RAS_LOG_H_
>>>> +
>>>> +#include <linux/cper.h>
>>>> +
>>>> +#include "xe_sig_ids.h"
>>>> +
>>>> +struct xe_device;
>>>> +struct xe_gt;
>>>> +
>>>> +/*
>>>> + * Common backend helper
>>>> + */
>>>> +__printf(6, 7)
>>>> +void __xe_ras_log(struct xe_device *xe, struct xe_gt *gt,
>>>> + u16 sig_id, u32 cper_sev, int errno_val,
>>>> + const char *fmt, ...);
>>>> +
>>>> +/*
>>>> + * Driver error reporting macros
>>>> + */
>>>> +
>>>> +/* FATAL */
>>>> +#define xe_ras_log_probe(xe, errno, fmt, ...) \
>>>> + __xe_ras_log((xe), NULL, XE_SIG_PROBE, CPER_SEV_FATAL, \
>>>> + (errno), fmt, ##__VA_ARGS__)
>>>> +
>>>> +#define xe_ras_log_wedged(xe, errno, fmt, ...) \
>>>> + __xe_ras_log((xe), NULL, XE_SIG_WEDGED, CPER_SEV_FATAL, \
>>>> + (errno), fmt, ##__VA_ARGS__)
>>>> +
>>>> +#define xe_ras_log_survivability(xe, errno, fmt, ...) \
>>>> + __xe_ras_log((xe), NULL, XE_SIG_SURVIVABILITY, CPER_SEV_FATAL, \
>>>> + (errno), fmt, ##__VA_ARGS__)
>>>> +
>>>> +/* RECOVERABLE */
>>>> +#define xe_ras_log_runtime_fw(xe, gt, errno, fmt, ...) \
>>>> + __xe_ras_log((xe), (gt), XE_SIG_RUNTIME_FW,
>>>> CPER_SEV_RECOVERABLE, \
>>>> + (errno), fmt, ##__VA_ARGS__)
>>>> +
>>>> +#define xe_ras_log_device_fw(xe, gt, errno, fmt, ...) \
>>>> + __xe_ras_log((xe), (gt), XE_SIG_DEVICE_FW,
>>>> CPER_SEV_RECOVERABLE, \
>>>> + (errno), fmt, ##__VA_ARGS__)
>>>> +
>>>> +#define xe_ras_log_gt_tdr(xe, gt, errno, fmt, ...) \
>>>> + __xe_ras_log((xe), (gt), XE_SIG_GT_TDR, CPER_SEV_RECOVERABLE, \
>>>> + (errno), fmt, ##__VA_ARGS__)
>>>> +
>>>> +#define xe_ras_log_mem_fault(xe, gt, errno, fmt, ...) \
>>>> + __xe_ras_log((xe), (gt), XE_SIG_MEM_FAULT,
>>>> CPER_SEV_RECOVERABLE, \
>>>> + (errno), fmt, ##__VA_ARGS__)
>>>> +
>>>> +#define xe_ras_log_io_bus(xe, errno, fmt, ...) \
>>>> + __xe_ras_log((xe), NULL, XE_SIG_IO_BUS, CPER_SEV_RECOVERABLE, \
>>>> + (errno), fmt, ##__VA_ARGS__)
>>>> +
>>>> +#endif /* _XE_RAS_LOG_H_ */
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [RFC PATCH v4 1/5] drm/xe: Add SIG_IDs for RAS error logging
2026-06-30 11:55 ` [RFC PATCH v4 1/5] drm/xe: Add SIG_IDs for RAS error logging Mallesh Koujalagi
2026-06-30 14:25 ` Raag Jadav
@ 2026-07-06 13:59 ` Michal Wajdeczko
1 sibling, 0 replies; 21+ messages in thread
From: Michal Wajdeczko @ 2026-07-06 13:59 UTC (permalink / raw)
To: Mallesh Koujalagi, intel-xe, rodrigo.vivi, matthew.brost,
thomas.hellstrom
Cc: anshuman.gupta, badal.nilawar, vinay.belgaumkar,
aravind.iddamsetty, riana.tauro, karthik.poosa, sk.anirban,
raag.jadav
On 6/30/2026 1:55 PM, Mallesh Koujalagi wrote:
> Add xe_sig_ids.h
nit: the file itself does not define any labels, there is an enum there
maybe just say: "Add stable numeric labels for ...
> which defines a set of stable numeric labels
> for Xe error categories, called SIG_IDs.
hmm, quite unusual transformation from "categories" to "SIG"
maybe: "referred as XE_ERR_ID"
>
> Each SIG_ID identifies which subsystem reported an error (e.g. probe,
> wedged, GT TDR, firmware).
from the above list only firmware seems to be real 'subsystem'
maybe stick with the 'category' naming?
> It does not encode the full failure details,
> those come from errno and the free-form message:
>
> SIG_ID -> which area failed
> errno -> what failed
hmm, errno is also more like a category of the failure, not a 'what'
> message -> extra human-readable context
>
> Also add a DOC: kernel-doc section covering design rationale, driver
> severity labels (FATAL/RECOVERABLE), usage guidelines, and the
> distinction between driver and hardware error paths.
>
> Signed-off-by: Mallesh Koujalagi <mallesh.koujalagi@intel.com>
> ---
> v3:
> - Add HW SIG IDS details. (Riana)
>
> v4:
> - Change commit message.
> - Update the document. (Riana)
> - Move documents to xe_sig_ids.h
> - Update Hardware error.
> - Remove example in Hardware error SIG_ID.
> - Make Fabric errors.
> - Add kernel doc for SIG_IDS. (Michal Wajdeczko)
> - Provide severity details.
> ---
> Documentation/gpu/xe/index.rst | 1 +
> Documentation/gpu/xe/xe_sig_ids.rst | 8 ++
> drivers/gpu/drm/xe/xe_sig_ids.h | 124 ++++++++++++++++++++++++++++
> 3 files changed, 133 insertions(+)
> create mode 100644 Documentation/gpu/xe/xe_sig_ids.rst
> create mode 100644 drivers/gpu/drm/xe/xe_sig_ids.h
>
> diff --git a/Documentation/gpu/xe/index.rst b/Documentation/gpu/xe/index.rst
> index 665c0e93601c..557877837348 100644
> --- a/Documentation/gpu/xe/index.rst
> +++ b/Documentation/gpu/xe/index.rst
> @@ -35,3 +35,4 @@ The display, or :ref:`drm-kms`, support for drm/xe is provided by
> xe-drm-usage-stats.rst
> xe_configfs
> xe_gt_stats
> + xe_sig_ids
> diff --git a/Documentation/gpu/xe/xe_sig_ids.rst b/Documentation/gpu/xe/xe_sig_ids.rst
> new file mode 100644
> index 000000000000..0e65d577927b
> --- /dev/null
> +++ b/Documentation/gpu/xe/xe_sig_ids.rst
> @@ -0,0 +1,8 @@
> +.. SPDX-License-Identifier: (GPL-2.0+ OR MIT)
> +
> +===============
> +SIG_ID Overview
> +===============
> +
> +.. kernel-doc:: drivers/gpu/drm/xe/xe_sig_ids.h
> + :doc: SIG_ID Overview
> diff --git a/drivers/gpu/drm/xe/xe_sig_ids.h b/drivers/gpu/drm/xe/xe_sig_ids.h
> new file mode 100644
> index 000000000000..57e4037fd7d4
> --- /dev/null
> +++ b/drivers/gpu/drm/xe/xe_sig_ids.h
> @@ -0,0 +1,124 @@
> +/* SPDX-License-Identifier: MIT */
> +/*
> + * Copyright © 2026 Intel Corporation
> + */
> +
> +#ifndef _XE_SIG_IDS_H_
> +#define _XE_SIG_IDS_H_
> +
> +/**
> + * DOC: SIG_ID Overview
The Xe Error Signature Overview ?
> + *
> + * Signature ID (SIG_ID) is a stable numeric identifier (u16) for a defined
> + * Xe error category - it answers: "which subsystem reported the error?"
> + *
> + * SIG_ID format
just above you said that SIG_ID is u16
maybe this section should be: "Xe Structured Error Message Format" ?
> + * =============
> + *
> + * Xe error events are emitted as a single structured line using stable fields.
I guess we should first explain our plans how/where we want to use this new
error mechanism, how we will capture/expose those and define the mandatory
fields that we expect in each new 'structured-error'
then we could show how those fields will be exposed in dmesg
> + * Driver events use:
> + *
> + * [xe-err] SIG_ID = <u16> Severity = <CPER_SEV_*>
> + * Location = <device|tile/gt> Errno = <neg_errno>
> + * Message = "<free-form text>"
this heavily deviates from what we currently have in xe via xe_err() or xe_gt_err()
without any benefit, just making the output less readable for human admins
> + *
> + * Hardware-originated RAS events use the same overall format, but typically
> + * omit Errno and Message and instead report the hardware-derived location /
> + * error-class information.
> + *
> + * Important
> + * =========
> + *
> + * SIG_ID identifies the reporting subsystem/category only. It does not encode
> + * the detailed failure reason. The detailed reason is carried separately by::
> + *
> + * SIG_ID -> which subsystem/category failed
> + * Severity -> how serious the event is
> + * Errno -> what failed (driver events)
> + * Message -> human-readable context
> + *
> + * Example (driver event)
> + * ======================
> + *
> + * [xe-err] SIG_ID = 6 Severity = CPER_SEV_RECOVERABLE
"[xe-err]" seems redundant, as the dmesg line will already have "xe" and "ERROR" tags
"SIG_ID = 6" will provide zero clue for the human admin what subsystem/category it is
"Severity = " seems redundant as it is followed by the "CPER_SEV_"
"CPER_SEV_" is also redundant as "RECOVERABLE" tag alone is fully recognizable
> + * Location = tile0/gt0 Errno = -5
"Location = " do we really need such prefix ?
"device" - redundant as it doesn't bring any value
"tile0/gt0" - differs from "Tile0:" or "GT0:" used in regular xe_tile_err/xe_gt_err
"Errno = -5" this is a step back, as in regular errors we use friendly error names
printed using %pe format
> + * Message = "Engine 'rcs0' hung; TDR triggered, engine reset succeeded"
"Message =" do we need such prefix ? everything after a errno can be treated as message
so this message could be rendered as:
xe 0000:00.0 [drm] *ERROR* \
TDR RECOVERABLE Tile0: GT0: Engine 'rcs0' hung; TDR triggered, engine reset succeeded (-EIO)
without loosing any info and being close to our regular error messages that we have today
xe 0000:00.0 [drm] *ERROR* \
Tile0: GT0: Engine 'rcs0' hung; TDR triggered, engine reset succeeded
> + *
> + * In the example
> + * ==============
> + *
> + * SIG_ID 6 = XE GT/TDR category
> + * RECOVERABLE = workload impacted, device still operational
> + * -5 = Linux errno (-EIO)
> + * Message = extra context for triage
> + *
> + * Why SIG_ID exists?
> + * ==================
I guess this should be earlier in the DOC, as we should start with the
rationale, and have examples at the end
> + *
> + * The goal is to replace inconsistent ad-hoc error strings with a small
> + * set of stable, structured error events that are easier for operators
> + * and tools to understand. Each driver event carries a fixed SIG_ID with
> + * a severity determined by its error category, and structured output that
> + * can be consumed consistently across driver or firmware versions. It
> + * reduces guesswork during triage and allows machine parsing of important
> + * fault events.
> + *
> + * Driver severity labels
> + * ======================
> + *
> + * FATAL means the device cannot continue operation (e.g. probe failure,
> + * device wedged). RECOVERABLE means the driver encountered an error but
> + * may continue with degraded functionality.
> + *
> + * When to use the xe_ras_log helpers (see xe_ras_log.h)
> + * =====================================================
> + *
> + * Use them only for defined Xe error events that belong to the published
> + * error categories. These helpers are intended for important fault paths
> + * such as probe failure, wedged device, survivability mode, firmware
> + * failures, GT hang/TDR/reset, memory faults, and runtime IO/bus faults.
> + * The selected macro fixes the SIG_ID and severity for that category.
fixed ID/severity mapping seems wrong, as the same subsystem may have different
errors with different severity and different recovery actions
or our ID definition coverage/usage is wrong
> + *
> + * Do not use xe_ras_log helpers for all logs
> + * ==========================================
> + *
> + * These helpers are not a replacement for normal drm_info(), drm_dbg(),
what about xe_err() ?
nit: we have and use xe_info/xe_dbg
> + * tracing, or one-off diagnostics. They are for stable, structured error
> + * reporting only. Using them for ordinary logs would dilute the error
> + * stream and make operator-facing fault reporting noisy and less useful.
who makes the final call whether error should be reported using xe_err or xe_ras_log ?
or, actually all xe_err() shall be converted to xe_ras_log as 99% of them are
about the HW/FW/DRV errors anyway?
> + *
> + * Hardware errors
> + * ===============
> + *
> + * Hardware errors are hardware-reported RAS events and map to the
> + * XE_SIG_HW_* identifiers. They are reported through the hardware error
> + * path (e.g. CPER records), not through the driver xe_ras_log helpers.
> + *
> + * Unlike driver xe_ras_log helpers, hardware events do not have one fixed
while this is inconsistent, it actually shows that we shouldn't have a fixed
mapping between ID and SEV
> + * severity per SIG_ID. For example, a fabric event (XE_SIG_HW_FABRIC) may
> + * be reported as CPER_SEV_CORRECTED, CPER_SEV_FATAL, CPER_SEV_RECOVERABLE,
> + * or CPER_SEV_INFORMATIONAL, depending on what the hardware reported.
> + */
> +
> +/*
> + * Driver errors: SIG_IDs
> + */
please use correct kernel-doc formatting for all categories
/**
* @XE_ERR_SIG_PROBE: failed probe error signature */
*/
> +#define XE_SIG_PROBE 1 /* FATAL: probe failed */
> +#define XE_SIG_WEDGED 2 /* FATAL: device wedged */
> +#define XE_SIG_SURVIVABILITY 3 /* FATAL: survivability mode */
> +#define XE_SIG_RUNTIME_FW 4 /* RECOVERABLE: GuC/HuC/UC/GSC */
> +#define XE_SIG_DEVICE_FW 5 /* RECOVERABLE: PCODE/CSC/System controller */
> +#define XE_SIG_GT_TDR 6 /* RECOVERABLE: engine hang / reset */
> +#define XE_SIG_MEM_FAULT 7 /* RECOVERABLE: VM bind, page fault, GTT */
> +#define XE_SIG_IO_BUS 8 /* RECOVERABLE: runtime PCIe/IOMMU/MMIO */
> +
> +/*
> + * Hardware errors: SIG_IDs
any reasons to have them grouped (driver vs hardware)
any reasons to have them contiguous (driver followed by hardware)
what's the plan for future additions of new categories?
having an option to define 64K unique IDs, or even more if u16 is just our limitation
why not pre-define each ID for known component? and make it really 'structured' ?
#define XE_SIG_CLASS_SOFTWARE 0x0 /* SIG = 0.* */
#define XE_SIG_SUBCLASS_SOFTWARE_OOM 0x1 /* SIG = 0.1.0.0 */
#define XE_SIG_SUBCLASS_SOFTWARE_PROBE 0x2 /* SIG = 0.2.0.0 */
#define XE_SIG_SUBCLASS_SOFTWARE_WEDGE 0x3 /* SIG = 0.3.0.0 */
#define XE_SIG_SUBCLASS_SOFTWARE_OTHER 0xF /* SIG = 0.F.0.0 */
#define XE_SIG_CLASS_HARDWARE 0x1 /* SIG = 1.* */
#define XE_SIG_SUBCLASS_HARDWARE_BUS 0x1 /* SIG = 1.1.0.0 */
#define XE_SIG_SUBCLASS_HARDWARE_DEVICE 0x2 /* SIG = 1.2.0.0 */
#define XE_SIG_SUBCLASS_HARDWARE_TILE 0x3 /* SIG = 1.3.0.* */
#define XE_SIG_INSTANCE_HARDWARE_TILE(x) .. /* SIG = 1.3.0.x */
#define XE_SIG_SUBCLASS_HARDWARE_GT 0x4 /* SIG = 1.4.* */
#define XE_SIG_INSTANCE_HARDWARE_GT(x) .. /* SIG = 1.4.y.x */
#define XE_SIG_SUBCLASS_HARDWARE_CORE 0x5 /* SIG = 1.5.* */
#define XE_SIG_INSTANCE_HARDWARE_CORE(x) .. /* SIG = 1.5.y.x */
#define XE_SIG_SUBCLASS_HARDWARE_FABRIC 0x6 /* SIG = 1.6.* */
#define XE_SIG_SUBCLASS_HARDWARE_OTHER 0xF /* SIG = 1.F.0.0 */
#define XE_SIG_CLASS_FIRMWARE 0x2 /* SIG = 2.* */
#define XE_SIG_SUBCLASS_FIRMWARE_GUC 0x1 /* SIG = 2.1.* */
#define XE_SIG_INSTANCE_FIRMWARE_GUC(x) .. /* SIG = 2.1.y.x */
#define XE_SIG_SUBCLASS_FIRMWARE_HUC 0x2 /* SIG = 2.2.* */
#define XE_SIG_INSTANCE_FIRMWARE_HUC(x) .. /* SIG = 2.2.y.x */
#define XE_SIG_SUBCLASS_FIRMWARE_GSC 0x3 /* SIG = 2.3.* */
#define XE_SIG_SUBCLASS_FIRMWARE_OTHER 0xF /* SIG = 2.F.0.0 */
#define XE_SIG_CLASS_DEVICE_FIRMWARE 0x3 /* SIG = 3.* */
..
the number of IDs will still be manageable IMO
to build final SIG_ID we can have some macros like:
#define MAKE_XE_SIG_ID(_CLASS, _SUB, _INST) /* SIG = class.sub.instance */ \
FIELD_PREP(0xF000, XE_SIG_CLASS_##_CLASS) |\
FIELD_PREP(0x0F00, XE_SIG_SUBCLASS_##_CLASS##_##_SUB) | \
FIELD_PREP(0x00FF, _INST)
and use it as:
xe_err_fatal(gt, SOFTWARE, PROBE, "message...");
xe_gt_err_recoverable(gt, FIRMWARE, GUC, "message...");
> + */
> +#define XE_SIG_HW_DEVICE_MEMORY 9 /* Device memory errors */
> +#define XE_SIG_HW_CORE_COMPUTE 10 /* Compute/shader core errors */
> +#define XE_SIG_HW_PCIE 11 /* PCIe interface errors */
> +#define XE_SIG_HW_FABRIC 12 /* Fabric errors */
> +#define XE_SIG_HW_SOC_INTERNAL 13 /* SoC-internal errors */
> +
> +#endif /* _XE_SIG_IDS_H_ */
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [RFC PATCH v4 3/5] drm/xe: use xe_ras_log_wedged macro in xe_device_declare_wedged
2026-06-30 11:55 ` [RFC PATCH v4 3/5] drm/xe: use xe_ras_log_wedged macro in xe_device_declare_wedged Mallesh Koujalagi
2026-07-06 8:36 ` Tauro, Riana
@ 2026-07-06 14:32 ` Michal Wajdeczko
1 sibling, 0 replies; 21+ messages in thread
From: Michal Wajdeczko @ 2026-07-06 14:32 UTC (permalink / raw)
To: Mallesh Koujalagi, intel-xe, rodrigo.vivi, matthew.brost,
thomas.hellstrom
Cc: anshuman.gupta, badal.nilawar, vinay.belgaumkar,
aravind.iddamsetty, riana.tauro, karthik.poosa, sk.anirban,
raag.jadav
On 6/30/2026 1:55 PM, Mallesh Koujalagi wrote:
> Replace the open-coded drm_err() call with xe_ras_log_wedged()
> macro so that wedge events are reported through the unified
> RAS/SIG logging path with a consistent format, CPER severity,
> and errno.
>
> Signed-off-by: Mallesh Koujalagi <mallesh.koujalagi@intel.com>
> ---
> v2:
> - Rebase.
>
> v3:
> - Update message in xe_ras_log_wedged().
>
> v4:
> - Replace XE_RAS_WEDGED to xe_ras_log_wedged. (Dnyaneshwar)
> ---
> drivers/gpu/drm/xe/xe_device.c | 13 +++++++------
> 1 file changed, 7 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/xe_device.c
> index b6e49309a99f..7538ac7c7dfb 100644
> --- a/drivers/gpu/drm/xe/xe_device.c
> +++ b/drivers/gpu/drm/xe/xe_device.c
> @@ -62,6 +62,7 @@
> #include "xe_pxp.h"
> #include "xe_query.h"
> #include "xe_ras.h"
> +#include "xe_ras_log.h"
> #include "xe_shrinker.h"
> #include "xe_soc_remapper.h"
> #include "xe_survivability_mode.h"
> @@ -1428,12 +1429,12 @@ void xe_device_declare_wedged(struct xe_device *xe)
> if (!atomic_xchg(&xe->wedged.flag, 1)) {
> xe->needs_flr_on_fini = true;
> xe_pm_runtime_get_noresume(xe);
> - drm_err(&xe->drm,
> - "CRITICAL: Xe has declared device %s as wedged.\n"
> - "IOCTLs and executions are blocked.\n"
> - "For recovery procedure, refer to https://docs.kernel.org/gpu/drm-uapi.html#device-wedging\n"
> - "Please file a _new_ bug report at https://gitlab.freedesktop.org/drm/xe/kernel/issues/new\n",
> - dev_name(xe->drm.dev));
> + xe_ras_log_wedged(xe, -EIO,
are you sure that this errno is always correct/sufficient?
there might be different recovery methods suggested by the driver
maybe at least you want to correlate this errno with available recovery method?
> + "CRITICAL: Xe has declared device %s as wedged.\n"
"CRITICAL" word seems to be redundant as this error will be already tagged with the "FATAL" tag
also printing device name again is not needed as drm_err is based on dev_err which already prints that
> + "IOCTLs and executions are blocked.\n"
> + "For recovery procedure, refer to https://docs.kernel.org/gpu/drm-uapi.html#device-wedging\n"
one of the goals of this new error reporting mechanism was to provide consistent guidelines and remediation based on the error signature
so where these guidelines will be published ? maybe on the first "structured" error we should also print some hint where to look for help?
how will we make sure those new guidelines are aligned with the above mentioned recovery procedure?
> + "Please file a _new_ bug report at https://gitlab.freedesktop.org/drm/xe/kernel/issues/new\n",
> + dev_name(xe->drm.dev));
> }
>
> for_each_gt(gt, xe, id)
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [RFC PATCH v4 5/5] drm/xe: Replace critical drm_err log with xe_ras_log_probe
2026-06-30 11:55 ` [RFC PATCH v4 5/5] drm/xe: Replace critical drm_err log with xe_ras_log_probe Mallesh Koujalagi
@ 2026-07-06 15:38 ` Michal Wajdeczko
0 siblings, 0 replies; 21+ messages in thread
From: Michal Wajdeczko @ 2026-07-06 15:38 UTC (permalink / raw)
To: Mallesh Koujalagi, intel-xe, rodrigo.vivi, matthew.brost,
thomas.hellstrom
Cc: anshuman.gupta, badal.nilawar, vinay.belgaumkar,
aravind.iddamsetty, riana.tauro, karthik.poosa, sk.anirban,
raag.jadav, Dnyaneshwar Bhadane
On 6/30/2026 1:55 PM, Mallesh Koujalagi wrote:
> From: Dnyaneshwar Bhadane <dnyaneshwar.bhadane@intel.com>
>
> Replace the drm_err() call with xe_ras_log_probe
> starting from the xe_pci_probe considering the only considering the
> init paths for the object such mmio, pcode, pci etc. are fall under
> the xe_ras_log_probe() category.
>
> Signed-off-by: Dnyaneshwar Bhadane <dnyaneshwar.bhadane@intel.com>
> Signed-off-by: Mallesh Koujalagi <mallesh.koujalagi@intel.com>
> ---
> drivers/gpu/drm/xe/xe_device.c | 10 +++++-----
> drivers/gpu/drm/xe/xe_hwmon.c | 4 +++-
> drivers/gpu/drm/xe/xe_irq.c | 5 +++--
> drivers/gpu/drm/xe/xe_mmio.c | 5 +++--
> drivers/gpu/drm/xe/xe_pat.c | 6 ++++--
> drivers/gpu/drm/xe/xe_pci.c | 14 +++++++++-----
> drivers/gpu/drm/xe/xe_pcode.c | 5 +++--
> drivers/gpu/drm/xe/xe_vram.c | 5 +++--
> 8 files changed, 33 insertions(+), 21 deletions(-)
>
> diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/xe_device.c
> index 7538ac7c7dfb..208dc6e378ba 100644
> --- a/drivers/gpu/drm/xe/xe_device.c
> +++ b/drivers/gpu/drm/xe/xe_device.c
> @@ -589,7 +589,7 @@ int xe_device_init_early(struct xe_device *xe)
> * Cleanup done in xe_device_destroy via
> * drmm_add_action_or_reset register above
> */
> - drm_err(&xe->drm, "Failed to allocate xe workqueues\n");
> + xe_ras_log_probe(xe, -ENOMEM, "Failed to allocate xe workqueues\n");
> return -ENOMEM;
> }
>
> @@ -649,7 +649,7 @@ static void __xe_driver_flr(struct xe_device *xe)
> */
> ret = xe_mmio_wait32(mmio, GU_CNTL, DRIVERFLR, 0, flr_timeout, NULL, false);
> if (ret) {
> - drm_err(&xe->drm, "Driver-FLR-prepare wait for ready failed! %d\n", ret);
> + xe_ras_log_probe(xe, -ret, "Driver-FLR-prepare wait for ready failed! %d\n", ret);
why passing -ret to the log macro?
why printing errno twice ?
the __xe_driver_flr() is called from
- xe_device_shutdown()
- xe_driver_flr()
- xe_driver_flr_fini
- devm_add_action_or_reset
- devm teardown
so this error could be seen during the probe only we fail to add new cleanup action
are you sure it should be tagged as PROBE error?
as the plan is to have consistent and stable error reporting,
maybe each promotion from regular error to RAS-class error should
be done in a separate patch to make sure it is properly reviewed?
> return;
> }
> xe_mmio_write32(mmio, GU_DEBUG, DRIVERFLR_STATUS);
> @@ -660,7 +660,7 @@ static void __xe_driver_flr(struct xe_device *xe)
> /* Wait for hardware teardown to complete */
> ret = xe_mmio_wait32(mmio, GU_CNTL, DRIVERFLR, 0, flr_timeout, NULL, false);
> if (ret) {
> - drm_err(&xe->drm, "Driver-FLR-teardown wait completion failed! %d\n", ret);
> + xe_ras_log_probe(xe, -ret, "Driver-FLR-teardown wait completion failed! %d\n", ret);
> return;
> }
>
> @@ -668,7 +668,7 @@ static void __xe_driver_flr(struct xe_device *xe)
> ret = xe_mmio_wait32(mmio, GU_DEBUG, DRIVERFLR_STATUS, DRIVERFLR_STATUS,
> flr_timeout, NULL, false);
> if (ret) {
> - drm_err(&xe->drm, "Driver-FLR-reinit wait completion failed! %d\n", ret);
> + xe_ras_log_probe(xe, -ret, "Driver-FLR-reinit wait completion failed! %d\n", ret);
> return;
> }
>
> @@ -720,7 +720,7 @@ static int xe_set_dma_info(struct xe_device *xe)
> return 0;
>
> mask_err:
> - drm_err(&xe->drm, "Can't set DMA mask/consistent mask (%d)\n", err);
> + xe_ras_log_probe(xe, -err, "Can't set DMA mask/consistent mask (%d)\n", err);
> return err;
> }
>
> diff --git a/drivers/gpu/drm/xe/xe_hwmon.c b/drivers/gpu/drm/xe/xe_hwmon.c
> index de3f2aeffc3f..efca13c2a897 100644
> --- a/drivers/gpu/drm/xe/xe_hwmon.c
> +++ b/drivers/gpu/drm/xe/xe_hwmon.c
> @@ -18,6 +18,7 @@
> #include "xe_mmio.h"
> #include "xe_pcode.h"
> #include "xe_pcode_api.h"
> +#include "xe_ras_log.h"
> #include "xe_sriov.h"
> #include "xe_pm.h"
> #include "xe_vsec.h"
> @@ -1575,7 +1576,8 @@ int xe_hwmon_register(struct xe_device *xe)
> &hwmon_chip_info,
> hwmon_groups);
> if (IS_ERR(hwmon->hwmon_dev)) {
> - drm_err(&xe->drm, "Failed to register xe hwmon (%pe)\n", hwmon->hwmon_dev);
> + xe_ras_log_probe(xe, -PTR_ERR(hwmon->hwmon_dev),
> + "Failed to register xe hwmon (%pe)\n", hwmon->hwmon_dev);
> xe->hwmon = NULL;
> return PTR_ERR(hwmon->hwmon_dev);
> }
> diff --git a/drivers/gpu/drm/xe/xe_irq.c b/drivers/gpu/drm/xe/xe_irq.c
> index 9e49e2241da4..8453681956c4 100644
> --- a/drivers/gpu/drm/xe/xe_irq.c
> +++ b/drivers/gpu/drm/xe/xe_irq.c
> @@ -23,6 +23,7 @@
> #include "xe_mert.h"
> #include "xe_mmio.h"
> #include "xe_pxp.h"
> +#include "xe_ras_log.h"
> #include "xe_sriov.h"
> #include "xe_sysctrl.h"
> #include "xe_tile.h"
> @@ -822,7 +823,7 @@ int xe_irq_install(struct xe_device *xe)
>
> err = pci_alloc_irq_vectors(pdev, nvec, nvec, irq_flags);
> if (err < 0) {
> - drm_err(&xe->drm, "Failed to allocate IRQ vectors: %d\n", err);
> + xe_ras_log_probe(xe, -EINVAL, "Failed to allocate IRQ vectors: %d\n", err);
there is err available, why using -EINVAL?
> return err;
> }
>
> @@ -891,7 +892,7 @@ static int xe_irq_msix_init(struct xe_device *xe)
> return 0; /* MSI */
>
> if (nvec < 0) {
> - drm_err(&xe->drm, "Failed getting MSI-X vectors count: %d\n", nvec);
> + xe_ras_log_probe(xe, -nvec, "Failed getting MSI-X vectors count: %d\n", nvec);
you are reporting error twice
> return nvec;
> }
>
> diff --git a/drivers/gpu/drm/xe/xe_mmio.c b/drivers/gpu/drm/xe/xe_mmio.c
> index 7fa18dfcb5a2..d10ba886dcda 100644
> --- a/drivers/gpu/drm/xe/xe_mmio.c
> +++ b/drivers/gpu/drm/xe/xe_mmio.c
> @@ -16,6 +16,7 @@
> #include "xe_device.h"
> #include "xe_gt_sriov_vf.h"
> #include "xe_printk.h"
> +#include "xe_ras_log.h"
> #include "xe_sriov.h"
> #include "xe_tile_printk.h"
> #include "xe_trace.h"
> @@ -105,13 +106,13 @@ int xe_mmio_probe_early(struct xe_device *xe)
>
> xe->mmio.regs = pcim_iomap(pdev, GTTMMADR_BAR, 0);
> if (!xe->mmio.regs) {
> - xe_err(xe, "Failed to map GTTMMADR_BAR\n");
> + xe_ras_log_probe(xe, -EIO, "Failed to map GTTMMADR_BAR\n");
> return -EIO;
> }
>
> xe->mmio.size = pci_resource_len(pdev, GTTMMADR_BAR);
> if (xe->mmio.size < SZ_16M) {
> - xe_err(xe, "GTTMMADR_BAR is too small: %zu\n", xe->mmio.size);
> + xe_ras_log_probe(xe, -EIO, "GTTMMADR_BAR is too small: %zu\n", xe->mmio.size);
while this error is during the probe, it actually shows some HW error
are we sure we want to log that as software error?
> return -EIO;
> }
>
> diff --git a/drivers/gpu/drm/xe/xe_pat.c b/drivers/gpu/drm/xe/xe_pat.c
> index fad5b5a5ed4a..49d2e81090d3 100644
> --- a/drivers/gpu/drm/xe/xe_pat.c
> +++ b/drivers/gpu/drm/xe/xe_pat.c
> @@ -17,6 +17,7 @@
> #include "xe_gt.h"
> #include "xe_gt_mcr.h"
> #include "xe_mmio.h"
> +#include "xe_ras_log.h"
> #include "xe_sriov.h"
> #include "xe_wa.h"
>
> @@ -650,8 +651,9 @@ void xe_pat_init_early(struct xe_device *xe)
> * raise an error rather than trying to silently inherit the
> * most recent platform's behavior.
> */
> - drm_err(&xe->drm, "Missing PAT table for platform with graphics version %d.%02d!\n",
> - GRAPHICS_VER(xe), GRAPHICS_VERx100(xe) % 100);
> + xe_ras_log_probe(xe, -ENODEV,
> + "Missing PAT table for platform with graphics version %d.%02d!\n",
> + GRAPHICS_VER(xe), GRAPHICS_VERx100(xe) % 100);
are you sure it is fatal?
it looks that driver probe continues (even after below asserts) as error code is not propagated
maybe we should fix the original code first?
> }
>
> xe_assert(xe, xe->pat.ops->dump);
> diff --git a/drivers/gpu/drm/xe/xe_pci.c b/drivers/gpu/drm/xe/xe_pci.c
> index 9c249454cc95..58442d9eb8a0 100644
> --- a/drivers/gpu/drm/xe/xe_pci.c
> +++ b/drivers/gpu/drm/xe/xe_pci.c
> @@ -31,6 +31,7 @@
> #include "xe_pci_types.h"
> #include "xe_pm.h"
> #include "xe_printk.h"
> +#include "xe_ras_log.h"
> #include "xe_sriov.h"
> #include "xe_step.h"
> #include "xe_survivability_mode.h"
> @@ -708,8 +709,9 @@ static int handle_gmdid(struct xe_device *xe,
>
> *graphics_ip = find_graphics_ip(ver);
> if (!*graphics_ip) {
> - drm_err(&xe->drm, "Hardware reports unknown graphics version %u.%02u\n",
> - ver / 100, ver % 100);
> + xe_ras_log_probe(xe, -ENODEV,
> + "Hardware reports unknown graphics version %u.%02u\n",
> + ver / 100, ver % 100);
> }
>
> ret = read_gmdid(xe, GMDID_MEDIA, &ver, media_revid);
> @@ -722,8 +724,9 @@ static int handle_gmdid(struct xe_device *xe,
>
> *media_ip = find_media_ip(ver);
> if (!*media_ip) {
> - drm_err(&xe->drm, "Hardware reports unknown media version %u.%02u\n",
> - ver / 100, ver % 100);
> + xe_ras_log_probe(xe, -ENODEV,
> + "Hardware reports unknown media version %u.%02u\n",
> + ver / 100, ver % 100);
IIRC we can continue without media GT, so is this FATAL?
> }
>
> return 0;
> @@ -1022,7 +1025,8 @@ static int xe_info_init(struct xe_device *xe,
> * required for VRAM management).
> */
> if (!tile->primary_gt) {
> - drm_err(&xe->drm, "Cannot probe device with without a primary GT\n");
> + xe_ras_log_probe(xe, -ENODEV,
> + "Cannot probe device with without a primary GT\n");
> return -ENODEV;
> }
>
> diff --git a/drivers/gpu/drm/xe/xe_pcode.c b/drivers/gpu/drm/xe/xe_pcode.c
> index 866986694d9c..046336c7b378 100644
> --- a/drivers/gpu/drm/xe/xe_pcode.c
> +++ b/drivers/gpu/drm/xe/xe_pcode.c
> @@ -15,6 +15,7 @@
> #include "xe_device.h"
> #include "xe_mmio.h"
> #include "xe_pcode_api.h"
> +#include "xe_ras_log.h"
>
> /**
> * DOC: PCODE
> @@ -316,8 +317,8 @@ int xe_pcode_ready(struct xe_device *xe, bool locked)
> mutex_unlock(&tile->pcode.lock);
>
> if (ret)
> - drm_err(&xe->drm,
> - "PCODE initialization timedout after: 3 min\n");
> + xe_ras_log_probe(xe, -ETIMEDOUT,
> + "PCODE initialization timedout after: 3 min\n");
this function is also called from resume paths,
are you sure it should be tagged as PROBE/FATAL error?
>
> return ret;
> }
> diff --git a/drivers/gpu/drm/xe/xe_vram.c b/drivers/gpu/drm/xe/xe_vram.c
> index 23eb7edbdd57..e81d92239934 100644
> --- a/drivers/gpu/drm/xe/xe_vram.c
> +++ b/drivers/gpu/drm/xe/xe_vram.c
> @@ -18,6 +18,7 @@
> #include "xe_force_wake.h"
> #include "xe_gt_mcr.h"
> #include "xe_mmio.h"
> +#include "xe_ras_log.h"
> #include "xe_sriov.h"
> #include "xe_tile_sriov_vf.h"
> #include "xe_ttm_vram_mgr.h"
> @@ -43,7 +44,7 @@ static int determine_lmem_bar_size(struct xe_device *xe, struct xe_vram_region *
> struct pci_dev *pdev = to_pci_dev(xe->drm.dev);
>
> if (!resource_is_valid(pdev, LMEM_BAR)) {
> - drm_err(&xe->drm, "pci resource is not valid\n");
> + xe_ras_log_probe(xe, -ENXIO, "pci resource is not valid\n");
> return -ENXIO;
> }
>
> @@ -237,7 +238,7 @@ static int vram_region_init(struct xe_device *xe, struct xe_vram_region *vram,
> vram->io_size = min_t(u64, usable_size, remain_io_size);
>
> if (!vram->io_size) {
> - drm_err(&xe->drm, "Tile without any CPU visible VRAM. Aborting.\n");
> + xe_ras_log_probe(xe, -ENODEV, "Tile without any CPU visible VRAM. Aborting.\n");
> return -ENODEV;
> }
>
^ permalink raw reply [flat|nested] 21+ messages in thread
end of thread, other threads:[~2026-07-06 15:38 UTC | newest]
Thread overview: 21+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-06-30 11:55 [RFC PATCH v4 0/5] drm/xe: Structured RAS error logging infrastructure Mallesh Koujalagi
2026-06-30 11:55 ` [RFC PATCH v4 1/5] drm/xe: Add SIG_IDs for RAS error logging Mallesh Koujalagi
2026-06-30 14:25 ` Raag Jadav
2026-07-06 10:43 ` Mallesh, Koujalagi
2026-07-06 13:59 ` Michal Wajdeczko
2026-06-30 11:55 ` [RFC PATCH v4 2/5] drm/xe: Add RAS logging helpers Mallesh Koujalagi
2026-07-03 11:15 ` Tauro, Riana
2026-07-03 13:01 ` Mallesh, Koujalagi
2026-07-06 8:35 ` Tauro, Riana
2026-07-06 10:53 ` Mallesh, Koujalagi
2026-06-30 11:55 ` [RFC PATCH v4 3/5] drm/xe: use xe_ras_log_wedged macro in xe_device_declare_wedged Mallesh Koujalagi
2026-07-06 8:36 ` Tauro, Riana
2026-07-06 14:32 ` Michal Wajdeczko
2026-06-30 11:55 ` [RFC PATCH v4 4/5] drm/xe: Use RAS logging to report survivability mode Mallesh Koujalagi
2026-07-06 8:41 ` Tauro, Riana
2026-06-30 11:55 ` [RFC PATCH v4 5/5] drm/xe: Replace critical drm_err log with xe_ras_log_probe Mallesh Koujalagi
2026-07-06 15:38 ` Michal Wajdeczko
2026-06-30 13:12 ` ✗ CI.checkpatch: warning for drm/xe: Structured RAS error logging infrastructure (rev4) Patchwork
2026-06-30 13:13 ` ✓ CI.KUnit: success " Patchwork
2026-06-30 14:05 ` ✓ Xe.CI.BAT: " Patchwork
2026-07-01 4:42 ` ✗ 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