* [PATCH 01/19] drm/xe/log: Add structured SIGID error logging infrastructure
2026-07-23 20:37 [PATCH 00/19] drm/xe: Add structured SIGID error logging infrastructure Michal Wajdeczko
@ 2026-07-23 20:37 ` Michal Wajdeczko
2026-07-24 13:01 ` Aravind Iddamsetty
2026-07-23 20:37 ` [PATCH 02/19] drm/xe: Introduce xe_any helpers Michal Wajdeczko
` (21 subsequent siblings)
22 siblings, 1 reply; 37+ messages in thread
From: Michal Wajdeczko @ 2026-07-23 20:37 UTC (permalink / raw)
To: intel-xe
Cc: Mallesh Koujalagi, Rodrigo Vivi, Michal Wajdeczko, Yoni Levitt,
Aravind Iddamsetty, Raag Jadav, Riana Tauro
From: Mallesh Koujalagi <mallesh.koujalagi@intel.com>
Today the driver reports faults with ad-hoc drm_err()/xe_gt_err()
strings that have no stable shape. That is readable for a human, but it
gives fleet tooling nothing durable to match on: the wording changes
between releases, lines can be rate-limited or dropped under an error
storm, and there is no consistent way to ask "which recognised fault
just happened?".
Introduce a signature identifier (SIGID): a small, stable integer that
names one recognised Xe fault situation and serves as the primary handle
for triage. A SIGID maps, through published end-user documentation, to a
description and a recommended action; the driver only has to emit the
right SIGID next to the usual human-readable text.
Signed-off-by: Mallesh Koujalagi <mallesh.koujalagi@intel.com>
Assisted-by: Copilot:Opus-4.8
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Co-developed-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
---
Cc: Yoni Levitt <yoni.levitt@intel.com>
Cc: Aravind Iddamsetty <aravind.iddamsetty@intel.com>
Cc: Raag Jadav <raag.jadav@intel.com>
Cc: Riana Tauro <riana.tauro@intel.com>
---
Documentation/gpu/xe/index.rst | 1 +
Documentation/gpu/xe/xe_sigid.rst | 14 ++
drivers/gpu/drm/xe/Makefile | 1 +
drivers/gpu/drm/xe/abi/xe_sigid_abi.h | 183 ++++++++++++++++++++++++++
drivers/gpu/drm/xe/xe_log.c | 132 +++++++++++++++++++
drivers/gpu/drm/xe/xe_log.h | 20 +++
6 files changed, 351 insertions(+)
create mode 100644 Documentation/gpu/xe/xe_sigid.rst
create mode 100644 drivers/gpu/drm/xe/abi/xe_sigid_abi.h
create mode 100644 drivers/gpu/drm/xe/xe_log.c
create mode 100644 drivers/gpu/drm/xe/xe_log.h
diff --git a/Documentation/gpu/xe/index.rst b/Documentation/gpu/xe/index.rst
index 665c0e93601c..0247a255f7e6 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_sigid
diff --git a/Documentation/gpu/xe/xe_sigid.rst b/Documentation/gpu/xe/xe_sigid.rst
new file mode 100644
index 000000000000..45d84a62f185
--- /dev/null
+++ b/Documentation/gpu/xe/xe_sigid.rst
@@ -0,0 +1,14 @@
+.. SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+
+========
+Xe SIGID
+========
+
+.. kernel-doc:: drivers/gpu/drm/xe/abi/xe_sigid_abi.h
+ :doc: Xe Error Signatures (SIGID)
+
+Signature Identifiers
+=====================
+
+.. kernel-doc:: drivers/gpu/drm/xe/abi/xe_sigid_abi.h
+ :internal:
diff --git a/drivers/gpu/drm/xe/Makefile b/drivers/gpu/drm/xe/Makefile
index 67ada1d6c2fb..7ac3954737f9 100644
--- a/drivers/gpu/drm/xe/Makefile
+++ b/drivers/gpu/drm/xe/Makefile
@@ -87,6 +87,7 @@ xe-y += xe_bb.o \
xe_hw_fence.o \
xe_irq.o \
xe_late_bind_fw.o \
+ xe_log.o \
xe_lrc.o \
xe_mem_pool.o \
xe_migrate.o \
diff --git a/drivers/gpu/drm/xe/abi/xe_sigid_abi.h b/drivers/gpu/drm/xe/abi/xe_sigid_abi.h
new file mode 100644
index 000000000000..99717fdf74a6
--- /dev/null
+++ b/drivers/gpu/drm/xe/abi/xe_sigid_abi.h
@@ -0,0 +1,183 @@
+/* SPDX-License-Identifier: MIT */
+/*
+ * Copyright © 2026 Intel Corporation
+ */
+
+#ifndef _ABI_XE_SIGID_ABI_H_
+#define _ABI_XE_SIGID_ABI_H_
+
+/**
+ * DOC: Xe Error Signatures (SIGID)
+ *
+ * What SIGID stands for
+ * ---------------------
+ *
+ * SIGID is short for *Signature Identifier*. A SIGID is a small, stable integer
+ * that names one *recognised Xe fault situation* -- nothing more. It is the
+ * primary handle used for triage: a SIGID maps to a human description and a
+ * recommended first action. A coarse first-order action is documented in-tree
+ * per SIGID (see "First-order action" below) so the id is actionable on its
+ * own; published end-user documentation refines it with finer, cross-product
+ * detail. The driver's only job is to emit the right SIGID next to the usual
+ * human-readable text.
+ *
+ * Why this exists
+ * ---------------
+ *
+ * Today the driver reports faults with ad-hoc ``drm_err()`` / ``xe_gt_err()``
+ * strings that have no stable shape. That is fine for a human reading dmesg,
+ * but it gives fleet tooling nothing durable to match on: the wording changes
+ * between releases, lines can be rate-limited or dropped under an error storm,
+ * and there is no consistent way to ask "which recognised fault just happened?"
+ * A SIGID answers exactly that one question, identically across driver and
+ * firmware versions, and (eventually) across other Intel devices in a node.
+ *
+ * What a SIGID is (and is not)
+ * ----------------------------
+ *
+ * A SIGID names *which situation* is being reported. It deliberately does not
+ * encode the detailed reason or the outcome. Those are carried alongside it::
+ *
+ * SIGID -> which recognised situation is being reported
+ * severity -> how serious this instance is (see below -- not fixed per SIGID)
+ * errno -> the failing operation's error, shown with %pe
+ * message -> free-form human-readable context
+ *
+ * Severity is independent of the SIGID. The same situation can be reported at
+ * different severities depending on the instance and the recovery taken, so a
+ * SIGID is never tied to one severity; the reporting site chooses it by calling
+ * the matching xe_log_*() helper (see xe_log.h).
+ *
+ * How to pick a SIGID (the uniqueness rule)
+ * -----------------------------------------
+ *
+ * Pick per *report site*, not per incident. Each site emits the single most
+ * specific recognised situation *for that site* -- so the question is never
+ * "classify this whole failure", it is "what does this site detect?", which has
+ * one answer. A single underlying failure therefore legitimately produces a
+ * *chain* of reports from different layers, each with its own SIGID -- e.g. a
+ * GuC communication failure is reported as %XE_SIGID_RUNTIME_FW by the firmware
+ * path, the failed recovery as %XE_SIGID_GT_TDR by the reset path, and an
+ * aborted bind as %XE_SIGID_PROBE by the probe path. That chain lets triage
+ * follow a fault from origin to final effect; it is not a duplicate.
+ *
+ * If a site does not match any defined situation, keep using the ordinary
+ * ``xe_err()`` / ``xe_gt_err()`` logging rather than forcing a SIGID: a wrong
+ * or over-broad classification is harder to retire than a missing one. When a
+ * new situation is genuinely worth triaging, add it to the list below.
+ *
+ * Scope: software-emitted signatures only
+ * ---------------------------------------
+ *
+ * This header enumerates only the situations that the *driver itself* detects
+ * and reports from software: probe abort, wedged, survivability, driver-
+ * detected firmware failures, engine TDR, memory faults and IO/bus faults.
+ * These are the only values the driver assigns.
+ *
+ * Signatures that *originate* in firmware or hardware are a different thing:
+ * they are produced and identified by the firmware or the hardware itself
+ * (e.g. via their own records or error counters), and the driver merely logs
+ * them as they are given to us. They are deliberately *not* enumerated here --
+ * minting a driver-side id for a firmware/hardware-reported error would only
+ * duplicate an identifier the reporting layer already owns. The two
+ * driver-detected firmware situations below (%XE_SIGID_RUNTIME_FW,
+ * %XE_SIGID_DEVICE_FW) are software signatures: they mark that *the driver*
+ * observed a firmware problem, not a signature reported by the firmware.
+ *
+ * Numbering
+ * ---------
+ *
+ * SIGIDs are a single flat list numbered sequentially within the assigned range,
+ * in the order the situations were introduced. Values are stable: once assigned
+ * they are only ever appended, never renumbered or reused.
+ *
+ * A retired situation is deprecated in place, never re-purposed.
+ *
+ * First-order action (resolution buckets)
+ * ---------------------------------------
+ *
+ * So that a SIGID is actionable on its own, each one is tagged with a coarse
+ * *resolution bucket*: the first thing an operator should do on seeing it. The
+ * bucket is a stable, driver-owned hint; external documentation may refine it,
+ * but the in-tree value always stands on its own. Every new SIGID must pick a
+ * bucket, which forces the question "what should someone do about this?" to be
+ * answered up front. The buckets are::
+ *
+ * COLLECT -- capture logs and open a bug report
+ * RETRY -- transient or already recovered; watch for recurrence
+ * UPDATE -- a firmware update / flash is required
+ * RECOVER -- an explicit recovery step is needed (rebind, bus reset)
+ * IGNORE -- ignore if the SIGID severity is INFORMATIONAL
+ *
+ * The bucket is documentation only -- it is recorded per SIGID in the enum
+ * kernel-doc below and is not printed on the (deliberately lean) dmesg line.
+ *
+ * When to use SIGID logging
+ * -------------------------
+ *
+ * The xe_log_*() helpers are for these recognised fault situations only --
+ * important, operator-relevant faults and events. They are not a replacement
+ * for ``xe_info()`` / ``xe_dbg()`` / tracing, nor for one-off diagnostics;
+ * using them for ordinary logging would dilute the fault stream. Not every
+ * ``xe_err()`` needs to become a SIGID report -- only those that correspond to
+ * a published situation.
+ *
+ * dmesg vs. the machine record
+ * ----------------------------
+ *
+ * The dmesg line stays close to a normal xe error message so it remains
+ * readable for admins; the only stable, machine-matchable token on it is
+ * ``SIGID=<n>`` (``dmesg | grep SIGID=``). dmesg is not an ABI: the surrounding
+ * text may change freely, and lines may be dropped. The durable record for
+ * tooling is the CPER record carrying the same SIGID (generation is a planned
+ * follow-up).
+ */
+
+/*
+ * Top level Intel Error Signature Identifiers.
+ */
+#define INTEL_SIGID_INVALID 0
+#define INTEL_SIGID_GPU_START 100
+#define INTEL_SIGID_GPU_END 999
+
+#define INTEL_SIGID_GPU_XE_START 100
+#define INTEL_SIGID_GPU_XE_END 299
+
+#define INTEL_SIGID_GPU_XE_SOFTWARE_START 100
+#define INTEL_SIGID_GPU_XE_SOFTWARE_END 199
+#define INTEL_SIGID_GPU_XE_HARDWARE_START 200
+#define INTEL_SIGID_GPU_XE_HARDWARE_END 299
+
+/**
+ * enum xe_sigid - Stable Xe Error Signature Identifiers (SIGID).
+ * @XE_SIGID_SW: Software component failure. [COLLECT]
+ * @XE_SIGID_PROBE: Device probe/bind was aborted. [COLLECT]
+ * @XE_SIGID_WEDGED: Device was declared wedged and is no longer usable. [RECOVER]
+ * @XE_SIGID_SURVIVABILITY: Device entered survivability mode. [UPDATE]
+ * @XE_SIGID_RUNTIME_FW: Driver-detected runtime firmware failure, GuC/HuC/GSC. [RETRY]
+ * @XE_SIGID_DEVICE_FW: Driver-detected device firmware failure, PCODE/sysctrl. [RETRY]
+ * @XE_SIGID_GT_TDR: Engine hang / timeout detection and recovery (reset). [RETRY]
+ * @XE_SIGID_MEM_FAULT: VM bind, page fault or GTT fault. [COLLECT]
+ * @XE_SIGID_IO_BUS: Runtime PCIe / IOMMU / MMIO access fault. [RECOVER]
+ *
+ * The situations the driver detects and reports in software. Values are
+ * numbered sequentially, are only ever appended, and are never renumbered or
+ * reused. The tag in brackets is the default resolution bucket (see the `Xe
+ * Error Signatures (SIGID)`_ section).
+ *
+ * Firmware- and hardware-originated signatures are not listed here; they are
+ * logged as reported by those layers.
+ */
+enum xe_sigid {
+ XE_SIGID_SW = INTEL_SIGID_GPU_XE_SOFTWARE_START,
+ XE_SIGID_PROBE = INTEL_SIGID_GPU_XE_SOFTWARE_START + 1,
+ XE_SIGID_WEDGED = INTEL_SIGID_GPU_XE_SOFTWARE_START + 2,
+ XE_SIGID_SURVIVABILITY = INTEL_SIGID_GPU_XE_SOFTWARE_START + 3,
+ XE_SIGID_RUNTIME_FW = INTEL_SIGID_GPU_XE_SOFTWARE_START + 4,
+ XE_SIGID_DEVICE_FW = INTEL_SIGID_GPU_XE_SOFTWARE_START + 5,
+ XE_SIGID_GT_TDR = INTEL_SIGID_GPU_XE_SOFTWARE_START + 6,
+ XE_SIGID_MEM_FAULT = INTEL_SIGID_GPU_XE_SOFTWARE_START + 7,
+ XE_SIGID_IO_BUS = INTEL_SIGID_GPU_XE_SOFTWARE_START + 8,
+};
+
+#endif
diff --git a/drivers/gpu/drm/xe/xe_log.c b/drivers/gpu/drm/xe/xe_log.c
new file mode 100644
index 000000000000..7ea8d8cde0c1
--- /dev/null
+++ b/drivers/gpu/drm/xe/xe_log.c
@@ -0,0 +1,132 @@
+// SPDX-License-Identifier: MIT
+/*
+ * Copyright © 2026 Intel Corporation
+ */
+
+#include "xe_log.h"
+#include "xe_printk.h"
+
+static void log_prep_cper(struct pci_dev *pdev, int cper_sev, enum xe_sigid sigid,
+ u32 component, u32 location, const void *data, size_t len,
+ struct va_format *vaf)
+{
+ /* TODO */
+}
+
+static bool is_hw_sigid(enum xe_sigid sigid)
+{
+ return (int)sigid >= INTEL_SIGID_GPU_XE_HARDWARE_START;
+}
+
+static bool is_sev_error(int cper_sev)
+{
+ return cper_sev != CPER_SEV_INFORMATIONAL;
+}
+
+static const char *log_hwe_prefix(int cper_sev, enum xe_sigid sigid)
+{
+ return is_sev_error(cper_sev) && is_hw_sigid(sigid) ? HW_ERR : "";
+}
+
+static const char *log_sev_prefix(int cper_sev)
+{
+ switch (cper_sev) {
+ case CPER_SEV_FATAL:
+ return "FATAL ";
+ case CPER_SEV_RECOVERABLE:
+ return "";
+ case CPER_SEV_CORRECTED:
+ return "CORRECTED ";
+ default:
+ return "";
+ }
+}
+
+#define __LOG_DRM_PRINTK_FMT(fmt, args...) "[drm] " fmt, ##args
+#define __LOG_DRM_PRINTK_ERR_FMT(fmt, args...) __LOG_DRM_PRINTK_FMT("*ERROR* " fmt, args)
+
+static void log_emit_dmesg(struct pci_dev *pdev, int cper_sev, struct va_format *vaf)
+{
+ if (cper_sev == CPER_SEV_INFORMATIONAL || cper_sev == CPER_SEV_CORRECTED)
+ pci_info(pdev, __LOG_DRM_PRINTK_FMT("%pV", vaf));
+ else
+ pci_err(pdev, __LOG_DRM_PRINTK_ERR_FMT("%pV", vaf));
+}
+
+static void log_print_dmesg(struct pci_dev *pdev, int cper_sev, const char *fmt, ...)
+{
+ struct va_format vaf;
+ va_list args;
+
+ va_start(args, fmt);
+ vaf.fmt = fmt;
+ vaf.va = &args;
+
+ log_emit_dmesg(pdev, cper_sev, &vaf);
+
+ va_end(args);
+}
+
+static void log_prep_dmesg(struct pci_dev *pdev, int cper_sev, enum xe_sigid sigid,
+ const void *data, size_t len, struct va_format *vaf)
+{
+ const char *hwe_prefix = log_hwe_prefix(cper_sev, sigid);
+ const char *sev_prefix = log_sev_prefix(cper_sev);
+
+ if (IS_ERR(data))
+ log_print_dmesg(pdev, cper_sev, "SIGID=%u %s(%pe) %s%pV",
+ sigid, sev_prefix, data, hwe_prefix, vaf);
+ else if (data && len)
+ log_print_dmesg(pdev, cper_sev, "SIGID=%u %s(%*phN) %s%pV",
+ sigid, sev_prefix, (int)len, data, hwe_prefix, vaf);
+ else
+ log_print_dmesg(pdev, cper_sev, "SIGID=%u %s%s%pV",
+ sigid, sev_prefix, hwe_prefix, vaf);
+}
+
+/**
+ * xe_log_emit() - Emit a structured SIGID log entry
+ * @pdev: the &pci_dev device
+ * @cper_sev: CPER severity (CPER_SEV_FATAL, CPER_SEV_RECOVERABLE, ...)
+ * @sigid: signature identifier, see &enum xe_sigid
+ * @component: component identifer
+ * @location: location details of the @component
+ * @data: pointer to the additional details, or ERR_PTR, or NULL if not applicable
+ * @len: length of the @data in bytes, or 0 if not applicable
+ * @fmt: printf-style format string
+ * @...: format arguments
+ *
+ * Emits a dmesg line that includes a single stable, machine-matchable token
+ * ``SIGID=<n>`` followed by the optional severity token (like ``FATAL``) and,
+ * when @data pointer is set, either the error printed with %pe or a packed hex
+ * dump of the @data binary blob. The dmesg line will also include printf-style
+ * text message.
+ *
+ * Note that the full dmesg line, with the free text message, is only a debugging
+ * aid, not an interface! Only the ``SIGID=<n>`` token is stable there.
+ * The durable machine record is the CPER carrying the same SIGID.
+ *
+ * Note: generation of the CPER record is a planned follow-up.
+ *
+ * Examples::
+ *
+ * <3> xe 0000:03:00.0: [drm] *ERROR* SIGID=104 FATAL (-EPROTO) Invalid GuC reply
+ * <3> xe 0000:03:00.0: [drm] *ERROR* SIGID=106 (-ETIMEDOUT) Engine 'rcs0' hung
+ * <6> xe 0000:03:00.0: [drm] *ERROR* SIGID=103 In survivability mode
+ */
+void xe_log_emit(struct pci_dev *pdev, int cper_sev, enum xe_sigid sigid,
+ u32 component, u32 location, const void *data, size_t len,
+ const char *fmt, ...)
+{
+ struct va_format vaf;
+ va_list args;
+
+ va_start(args, fmt);
+ vaf.fmt = fmt;
+ vaf.va = &args;
+
+ log_prep_dmesg(pdev, cper_sev, sigid, data, len, &vaf);
+ log_prep_cper(pdev, cper_sev, sigid, component, location, data, len, &vaf);
+
+ va_end(args);
+}
diff --git a/drivers/gpu/drm/xe/xe_log.h b/drivers/gpu/drm/xe/xe_log.h
new file mode 100644
index 000000000000..d475e816ee0b
--- /dev/null
+++ b/drivers/gpu/drm/xe/xe_log.h
@@ -0,0 +1,20 @@
+/* SPDX-License-Identifier: MIT */
+/*
+ * Copyright © 2026 Intel Corporation
+ */
+
+#ifndef _XE_LOG_H_
+#define _XE_LOG_H_
+
+#include <linux/cper.h>
+
+#include "abi/xe_sigid_abi.h"
+
+struct pci_dev;
+
+__printf(8, 9)
+void xe_log_emit(struct pci_dev *pdev, int cper_sev, enum xe_sigid sigid,
+ u32 component, u32 location, const void *data, size_t len,
+ const char *fmt, ...);
+
+#endif
--
2.47.1
^ permalink raw reply related [flat|nested] 37+ messages in thread* Re: [PATCH 01/19] drm/xe/log: Add structured SIGID error logging infrastructure
2026-07-23 20:37 ` [PATCH 01/19] drm/xe/log: " Michal Wajdeczko
@ 2026-07-24 13:01 ` Aravind Iddamsetty
2026-07-24 14:34 ` Michal Wajdeczko
0 siblings, 1 reply; 37+ messages in thread
From: Aravind Iddamsetty @ 2026-07-24 13:01 UTC (permalink / raw)
To: Michal Wajdeczko, intel-xe
Cc: Mallesh Koujalagi, Rodrigo Vivi, Yoni Levitt, Aravind Iddamsetty,
Raag Jadav, Riana Tauro
On 24-07-2026 02:07, Michal Wajdeczko wrote:
> From: Mallesh Koujalagi <mallesh.koujalagi@intel.com>
>
> Today the driver reports faults with ad-hoc drm_err()/xe_gt_err()
> strings that have no stable shape. That is readable for a human, but it
> gives fleet tooling nothing durable to match on: the wording changes
> between releases, lines can be rate-limited or dropped under an error
> storm, and there is no consistent way to ask "which recognised fault
> just happened?".
>
> Introduce a signature identifier (SIGID): a small, stable integer that
> names one recognised Xe fault situation and serves as the primary handle
> for triage. A SIGID maps, through published end-user documentation, to a
> description and a recommended action; the driver only has to emit the
> right SIGID next to the usual human-readable text.
>
> Signed-off-by: Mallesh Koujalagi <mallesh.koujalagi@intel.com>
> Assisted-by: Copilot:Opus-4.8
> Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
> Co-developed-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
> Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
> ---
> Cc: Yoni Levitt <yoni.levitt@intel.com>
> Cc: Aravind Iddamsetty <aravind.iddamsetty@intel.com>
> Cc: Raag Jadav <raag.jadav@intel.com>
> Cc: Riana Tauro <riana.tauro@intel.com>
> ---
> Documentation/gpu/xe/index.rst | 1 +
> Documentation/gpu/xe/xe_sigid.rst | 14 ++
> drivers/gpu/drm/xe/Makefile | 1 +
> drivers/gpu/drm/xe/abi/xe_sigid_abi.h | 183 ++++++++++++++++++++++++++
> drivers/gpu/drm/xe/xe_log.c | 132 +++++++++++++++++++
> drivers/gpu/drm/xe/xe_log.h | 20 +++
> 6 files changed, 351 insertions(+)
> create mode 100644 Documentation/gpu/xe/xe_sigid.rst
> create mode 100644 drivers/gpu/drm/xe/abi/xe_sigid_abi.h
> create mode 100644 drivers/gpu/drm/xe/xe_log.c
> create mode 100644 drivers/gpu/drm/xe/xe_log.h
>
> diff --git a/Documentation/gpu/xe/index.rst b/Documentation/gpu/xe/index.rst
> index 665c0e93601c..0247a255f7e6 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_sigid
> diff --git a/Documentation/gpu/xe/xe_sigid.rst b/Documentation/gpu/xe/xe_sigid.rst
> new file mode 100644
> index 000000000000..45d84a62f185
> --- /dev/null
> +++ b/Documentation/gpu/xe/xe_sigid.rst
> @@ -0,0 +1,14 @@
> +.. SPDX-License-Identifier: (GPL-2.0+ OR MIT)
> +
> +========
> +Xe SIGID
> +========
> +
> +.. kernel-doc:: drivers/gpu/drm/xe/abi/xe_sigid_abi.h
> + :doc: Xe Error Signatures (SIGID)
> +
> +Signature Identifiers
> +=====================
> +
> +.. kernel-doc:: drivers/gpu/drm/xe/abi/xe_sigid_abi.h
> + :internal:
> diff --git a/drivers/gpu/drm/xe/Makefile b/drivers/gpu/drm/xe/Makefile
> index 67ada1d6c2fb..7ac3954737f9 100644
> --- a/drivers/gpu/drm/xe/Makefile
> +++ b/drivers/gpu/drm/xe/Makefile
> @@ -87,6 +87,7 @@ xe-y += xe_bb.o \
> xe_hw_fence.o \
> xe_irq.o \
> xe_late_bind_fw.o \
> + xe_log.o \
> xe_lrc.o \
> xe_mem_pool.o \
> xe_migrate.o \
> diff --git a/drivers/gpu/drm/xe/abi/xe_sigid_abi.h b/drivers/gpu/drm/xe/abi/xe_sigid_abi.h
> new file mode 100644
> index 000000000000..99717fdf74a6
> --- /dev/null
> +++ b/drivers/gpu/drm/xe/abi/xe_sigid_abi.h
> @@ -0,0 +1,183 @@
> +/* SPDX-License-Identifier: MIT */
> +/*
> + * Copyright © 2026 Intel Corporation
> + */
> +
> +#ifndef _ABI_XE_SIGID_ABI_H_
> +#define _ABI_XE_SIGID_ABI_H_
> +
> +/**
> + * DOC: Xe Error Signatures (SIGID)
> + *
> + * What SIGID stands for
> + * ---------------------
> + *
> + * SIGID is short for *Signature Identifier*. A SIGID is a small, stable integer
> + * that names one *recognised Xe fault situation* -- nothing more. It is the
> + * primary handle used for triage: a SIGID maps to a human description and a
> + * recommended first action. A coarse first-order action is documented in-tree
> + * per SIGID (see "First-order action" below) so the id is actionable on its
> + * own; published end-user documentation refines it with finer, cross-product
> + * detail. The driver's only job is to emit the right SIGID next to the usual
> + * human-readable text.
> + *
> + * Why this exists
> + * ---------------
> + *
> + * Today the driver reports faults with ad-hoc ``drm_err()`` / ``xe_gt_err()``
> + * strings that have no stable shape. That is fine for a human reading dmesg,
> + * but it gives fleet tooling nothing durable to match on: the wording changes
> + * between releases, lines can be rate-limited or dropped under an error storm,
> + * and there is no consistent way to ask "which recognised fault just happened?"
> + * A SIGID answers exactly that one question, identically across driver and
> + * firmware versions, and (eventually) across other Intel devices in a node.
> + *
> + * What a SIGID is (and is not)
> + * ----------------------------
> + *
> + * A SIGID names *which situation* is being reported. It deliberately does not
> + * encode the detailed reason or the outcome. Those are carried alongside it::
> + *
> + * SIGID -> which recognised situation is being reported
> + * severity -> how serious this instance is (see below -- not fixed per SIGID)
> + * errno -> the failing operation's error, shown with %pe
> + * message -> free-form human-readable context
> + *
> + * Severity is independent of the SIGID. The same situation can be reported at
> + * different severities depending on the instance and the recovery taken, so a
> + * SIGID is never tied to one severity; the reporting site chooses it by calling
> + * the matching xe_log_*() helper (see xe_log.h).
> + *
> + * How to pick a SIGID (the uniqueness rule)
> + * -----------------------------------------
> + *
> + * Pick per *report site*, not per incident. Each site emits the single most
> + * specific recognised situation *for that site* -- so the question is never
> + * "classify this whole failure", it is "what does this site detect?", which has
> + * one answer. A single underlying failure therefore legitimately produces a
> + * *chain* of reports from different layers, each with its own SIGID -- e.g. a
> + * GuC communication failure is reported as %XE_SIGID_RUNTIME_FW by the firmware
> + * path, the failed recovery as %XE_SIGID_GT_TDR by the reset path, and an
> + * aborted bind as %XE_SIGID_PROBE by the probe path. That chain lets triage
> + * follow a fault from origin to final effect; it is not a duplicate.
> + *
> + * If a site does not match any defined situation, keep using the ordinary
> + * ``xe_err()`` / ``xe_gt_err()`` logging rather than forcing a SIGID: a wrong
> + * or over-broad classification is harder to retire than a missing one. When a
> + * new situation is genuinely worth triaging, add it to the list below.
> + *
> + * Scope: software-emitted signatures only
> + * ---------------------------------------
> + *
> + * This header enumerates only the situations that the *driver itself* detects
> + * and reports from software: probe abort, wedged, survivability, driver-
> + * detected firmware failures, engine TDR, memory faults and IO/bus faults.
> + * These are the only values the driver assigns.
> + *
> + * Signatures that *originate* in firmware or hardware are a different thing:
> + * they are produced and identified by the firmware or the hardware itself
> + * (e.g. via their own records or error counters), and the driver merely logs
> + * them as they are given to us. They are deliberately *not* enumerated here --
> + * minting a driver-side id for a firmware/hardware-reported error would only
> + * duplicate an identifier the reporting layer already owns. The two
> + * driver-detected firmware situations below (%XE_SIGID_RUNTIME_FW,
> + * %XE_SIGID_DEVICE_FW) are software signatures: they mark that *the driver*
> + * observed a firmware problem, not a signature reported by the firmware.
> + *
> + * Numbering
> + * ---------
> + *
> + * SIGIDs are a single flat list numbered sequentially within the assigned range,
> + * in the order the situations were introduced. Values are stable: once assigned
> + * they are only ever appended, never renumbered or reused.
> + *
> + * A retired situation is deprecated in place, never re-purposed.
> + *
> + * First-order action (resolution buckets)
> + * ---------------------------------------
> + *
> + * So that a SIGID is actionable on its own, each one is tagged with a coarse
> + * *resolution bucket*: the first thing an operator should do on seeing it. The
> + * bucket is a stable, driver-owned hint; external documentation may refine it,
> + * but the in-tree value always stands on its own. Every new SIGID must pick a
> + * bucket, which forces the question "what should someone do about this?" to be
> + * answered up front. The buckets are::
> + *
> + * COLLECT -- capture logs and open a bug report
> + * RETRY -- transient or already recovered; watch for recurrence
> + * UPDATE -- a firmware update / flash is required
> + * RECOVER -- an explicit recovery step is needed (rebind, bus reset)
> + * IGNORE -- ignore if the SIGID severity is INFORMATIONAL
> + *
> + * The bucket is documentation only -- it is recorded per SIGID in the enum
> + * kernel-doc below and is not printed on the (deliberately lean) dmesg line.
> + *
> + * When to use SIGID logging
> + * -------------------------
> + *
> + * The xe_log_*() helpers are for these recognised fault situations only --
> + * important, operator-relevant faults and events. They are not a replacement
> + * for ``xe_info()`` / ``xe_dbg()`` / tracing, nor for one-off diagnostics;
> + * using them for ordinary logging would dilute the fault stream. Not every
> + * ``xe_err()`` needs to become a SIGID report -- only those that correspond to
> + * a published situation.
> + *
> + * dmesg vs. the machine record
> + * ----------------------------
> + *
> + * The dmesg line stays close to a normal xe error message so it remains
> + * readable for admins; the only stable, machine-matchable token on it is
> + * ``SIGID=<n>`` (``dmesg | grep SIGID=``). dmesg is not an ABI: the surrounding
> + * text may change freely, and lines may be dropped. The durable record for
> + * tooling is the CPER record carrying the same SIGID (generation is a planned
> + * follow-up).
> + */
> +
> +/*
> + * Top level Intel Error Signature Identifiers.
> + */
> +#define INTEL_SIGID_INVALID 0
> +#define INTEL_SIGID_GPU_START 100
> +#define INTEL_SIGID_GPU_END 999
> +
> +#define INTEL_SIGID_GPU_XE_START 100
> +#define INTEL_SIGID_GPU_XE_END 299
> +
> +#define INTEL_SIGID_GPU_XE_SOFTWARE_START 100
> +#define INTEL_SIGID_GPU_XE_SOFTWARE_END 199
> +#define INTEL_SIGID_GPU_XE_HARDWARE_START 200
> +#define INTEL_SIGID_GPU_XE_HARDWARE_END 299
> +
> +/**
> + * enum xe_sigid - Stable Xe Error Signature Identifiers (SIGID).
> + * @XE_SIGID_SW: Software component failure. [COLLECT]
> + * @XE_SIGID_PROBE: Device probe/bind was aborted. [COLLECT]
> + * @XE_SIGID_WEDGED: Device was declared wedged and is no longer usable. [RECOVER]
> + * @XE_SIGID_SURVIVABILITY: Device entered survivability mode. [UPDATE]
> + * @XE_SIGID_RUNTIME_FW: Driver-detected runtime firmware failure, GuC/HuC/GSC. [RETRY]
> + * @XE_SIGID_DEVICE_FW: Driver-detected device firmware failure, PCODE/sysctrl. [RETRY]
I do not think these first order resolutions can always be reliably
interpreted Eg: DEVICE_FW might need RECOVERY and not a RETRY and also
driver cannot conclusively indicate the resolution for HW errors those
will be determined by userspace tools/admin based on observed errors.
> + * @XE_SIGID_GT_TDR: Engine hang / timeout detection and recovery (reset). [RETRY]
> + * @XE_SIGID_MEM_FAULT: VM bind, page fault or GTT fault. [COLLECT]
> + * @XE_SIGID_IO_BUS: Runtime PCIe / IOMMU / MMIO access fault. [RECOVER]
> + *
> + * The situations the driver detects and reports in software. Values are
> + * numbered sequentially, are only ever appended, and are never renumbered or
> + * reused. The tag in brackets is the default resolution bucket (see the `Xe
> + * Error Signatures (SIGID)`_ section).
> + *
> + * Firmware- and hardware-originated signatures are not listed here; they are
> + * logged as reported by those layers.
> + */
> +enum xe_sigid {
> + XE_SIGID_SW = INTEL_SIGID_GPU_XE_SOFTWARE_START,
> + XE_SIGID_PROBE = INTEL_SIGID_GPU_XE_SOFTWARE_START + 1,
> + XE_SIGID_WEDGED = INTEL_SIGID_GPU_XE_SOFTWARE_START + 2,
> + XE_SIGID_SURVIVABILITY = INTEL_SIGID_GPU_XE_SOFTWARE_START + 3,
> + XE_SIGID_RUNTIME_FW = INTEL_SIGID_GPU_XE_SOFTWARE_START + 4,
> + XE_SIGID_DEVICE_FW = INTEL_SIGID_GPU_XE_SOFTWARE_START + 5,
> + XE_SIGID_GT_TDR = INTEL_SIGID_GPU_XE_SOFTWARE_START + 6,
> + XE_SIGID_MEM_FAULT = INTEL_SIGID_GPU_XE_SOFTWARE_START + 7,
> + XE_SIGID_IO_BUS = INTEL_SIGID_GPU_XE_SOFTWARE_START + 8,
> +};
> +
> +#endif
> diff --git a/drivers/gpu/drm/xe/xe_log.c b/drivers/gpu/drm/xe/xe_log.c
> new file mode 100644
> index 000000000000..7ea8d8cde0c1
> --- /dev/null
> +++ b/drivers/gpu/drm/xe/xe_log.c
> @@ -0,0 +1,132 @@
> +// SPDX-License-Identifier: MIT
> +/*
> + * Copyright © 2026 Intel Corporation
> + */
> +
> +#include "xe_log.h"
> +#include "xe_printk.h"
> +
> +static void log_prep_cper(struct pci_dev *pdev, int cper_sev, enum xe_sigid sigid,
> + u32 component, u32 location, const void *data, size_t len,
> + struct va_format *vaf)
> +{
> + /* TODO */
> +}
> +
> +static bool is_hw_sigid(enum xe_sigid sigid)
> +{
> + return (int)sigid >= INTEL_SIGID_GPU_XE_HARDWARE_START;
> +}
> +
> +static bool is_sev_error(int cper_sev)
> +{
> + return cper_sev != CPER_SEV_INFORMATIONAL;
> +}
> +
> +static const char *log_hwe_prefix(int cper_sev, enum xe_sigid sigid)
> +{
> + return is_sev_error(cper_sev) && is_hw_sigid(sigid) ? HW_ERR : "";
> +}
> +
> +static const char *log_sev_prefix(int cper_sev)
> +{
> + switch (cper_sev) {
> + case CPER_SEV_FATAL:
> + return "FATAL ";
> + case CPER_SEV_RECOVERABLE:
> + return "";
> + case CPER_SEV_CORRECTED:
> + return "CORRECTED ";
> + default:
> + return "";
> + }
> +}
> +
> +#define __LOG_DRM_PRINTK_FMT(fmt, args...) "[drm] " fmt, ##args
> +#define __LOG_DRM_PRINTK_ERR_FMT(fmt, args...) __LOG_DRM_PRINTK_FMT("*ERROR* " fmt, args)
> +
> +static void log_emit_dmesg(struct pci_dev *pdev, int cper_sev, struct va_format *vaf)
> +{
> + if (cper_sev == CPER_SEV_INFORMATIONAL || cper_sev == CPER_SEV_CORRECTED)
> + pci_info(pdev, __LOG_DRM_PRINTK_FMT("%pV", vaf));
> + else
> + pci_err(pdev, __LOG_DRM_PRINTK_ERR_FMT("%pV", vaf));
> +}
> +
> +static void log_print_dmesg(struct pci_dev *pdev, int cper_sev, const char *fmt, ...)
> +{
> + struct va_format vaf;
> + va_list args;
> +
> + va_start(args, fmt);
> + vaf.fmt = fmt;
> + vaf.va = &args;
> +
> + log_emit_dmesg(pdev, cper_sev, &vaf);
> +
> + va_end(args);
> +}
> +
> +static void log_prep_dmesg(struct pci_dev *pdev, int cper_sev, enum xe_sigid sigid,
> + const void *data, size_t len, struct va_format *vaf)
> +{
> + const char *hwe_prefix = log_hwe_prefix(cper_sev, sigid);
> + const char *sev_prefix = log_sev_prefix(cper_sev);
> +
> + if (IS_ERR(data))
> + log_print_dmesg(pdev, cper_sev, "SIGID=%u %s(%pe) %s%pV",
> + sigid, sev_prefix, data, hwe_prefix, vaf);
> + else if (data && len)
> + log_print_dmesg(pdev, cper_sev, "SIGID=%u %s(%*phN) %s%pV",
> + sigid, sev_prefix, (int)len, data, hwe_prefix, vaf);
> + else
> + log_print_dmesg(pdev, cper_sev, "SIGID=%u %s%s%pV",
> + sigid, sev_prefix, hwe_prefix, vaf);
> +}
> +
> +/**
> + * xe_log_emit() - Emit a structured SIGID log entry
> + * @pdev: the &pci_dev device
> + * @cper_sev: CPER severity (CPER_SEV_FATAL, CPER_SEV_RECOVERABLE, ...)
> + * @sigid: signature identifier, see &enum xe_sigid
> + * @component: component identifer
> + * @location: location details of the @component
> + * @data: pointer to the additional details, or ERR_PTR, or NULL if not applicable
> + * @len: length of the @data in bytes, or 0 if not applicable
> + * @fmt: printf-style format string
> + * @...: format arguments
> + *
> + * Emits a dmesg line that includes a single stable, machine-matchable token
> + * ``SIGID=<n>`` followed by the optional severity token (like ``FATAL``) and,
> + * when @data pointer is set, either the error printed with %pe or a packed hex
> + * dump of the @data binary blob. The dmesg line will also include printf-style
> + * text message.
> + *
> + * Note that the full dmesg line, with the free text message, is only a debugging
> + * aid, not an interface! Only the ``SIGID=<n>`` token is stable there.
> + * The durable machine record is the CPER carrying the same SIGID.
> + *
> + * Note: generation of the CPER record is a planned follow-up.
> + *
> + * Examples::
> + *
> + * <3> xe 0000:03:00.0: [drm] *ERROR* SIGID=104 FATAL (-EPROTO) Invalid GuC reply
> + * <3> xe 0000:03:00.0: [drm] *ERROR* SIGID=106 (-ETIMEDOUT) Engine 'rcs0' hung
> + * <6> xe 0000:03:00.0: [drm] *ERROR* SIGID=103 In survivability mode
Severity cannot be optional as its left for interpretation and also for
consistency of the prints.
> + */
> +void xe_log_emit(struct pci_dev *pdev, int cper_sev, enum xe_sigid sigid,
> + u32 component, u32 location, const void *data, size_t len,
> + const char *fmt, ...)
> +{
> + struct va_format vaf;
> + va_list args;
> +
> + va_start(args, fmt);
> + vaf.fmt = fmt;
> + vaf.va = &args;
> +
> + log_prep_dmesg(pdev, cper_sev, sigid, data, len, &vaf);
> + log_prep_cper(pdev, cper_sev, sigid, component, location, data, len, &vaf);
> +
> + va_end(args);
> +}
> diff --git a/drivers/gpu/drm/xe/xe_log.h b/drivers/gpu/drm/xe/xe_log.h
> new file mode 100644
> index 000000000000..d475e816ee0b
> --- /dev/null
> +++ b/drivers/gpu/drm/xe/xe_log.h
> @@ -0,0 +1,20 @@
> +/* SPDX-License-Identifier: MIT */
> +/*
> + * Copyright © 2026 Intel Corporation
> + */
> +
> +#ifndef _XE_LOG_H_
> +#define _XE_LOG_H_
> +
> +#include <linux/cper.h>
> +
> +#include "abi/xe_sigid_abi.h"
> +
> +struct pci_dev;
> +
> +__printf(8, 9)
> +void xe_log_emit(struct pci_dev *pdev, int cper_sev, enum xe_sigid sigid,
> + u32 component, u32 location, const void *data, size_t len,
> + const char *fmt, ...);
> +
> +#endif
Thanks,
Aravind.
^ permalink raw reply [flat|nested] 37+ messages in thread* Re: [PATCH 01/19] drm/xe/log: Add structured SIGID error logging infrastructure
2026-07-24 13:01 ` Aravind Iddamsetty
@ 2026-07-24 14:34 ` Michal Wajdeczko
2026-07-28 19:04 ` Rodrigo Vivi
0 siblings, 1 reply; 37+ messages in thread
From: Michal Wajdeczko @ 2026-07-24 14:34 UTC (permalink / raw)
To: Aravind Iddamsetty, intel-xe, Rodrigo Vivi
Cc: Mallesh Koujalagi, Yoni Levitt, Aravind Iddamsetty, Raag Jadav,
Riana Tauro
On 7/24/2026 3:01 PM, Aravind Iddamsetty wrote:
>
> On 24-07-2026 02:07, Michal Wajdeczko wrote:
>> From: Mallesh Koujalagi <mallesh.koujalagi@intel.com>
>>
>> Today the driver reports faults with ad-hoc drm_err()/xe_gt_err()
>> strings that have no stable shape. That is readable for a human, but it
>> gives fleet tooling nothing durable to match on: the wording changes
>> between releases, lines can be rate-limited or dropped under an error
>> storm, and there is no consistent way to ask "which recognised fault
>> just happened?".
>>
>> Introduce a signature identifier (SIGID): a small, stable integer that
>> names one recognised Xe fault situation and serves as the primary handle
>> for triage. A SIGID maps, through published end-user documentation, to a
>> description and a recommended action; the driver only has to emit the
>> right SIGID next to the usual human-readable text.
>>
>> Signed-off-by: Mallesh Koujalagi <mallesh.koujalagi@intel.com>
>> Assisted-by: Copilot:Opus-4.8
>> Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
>> Co-developed-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
>> Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
>> ---
>> Cc: Yoni Levitt <yoni.levitt@intel.com>
>> Cc: Aravind Iddamsetty <aravind.iddamsetty@intel.com>
>> Cc: Raag Jadav <raag.jadav@intel.com>
>> Cc: Riana Tauro <riana.tauro@intel.com>
>> ---
>> Documentation/gpu/xe/index.rst | 1 +
>> Documentation/gpu/xe/xe_sigid.rst | 14 ++
>> drivers/gpu/drm/xe/Makefile | 1 +
>> drivers/gpu/drm/xe/abi/xe_sigid_abi.h | 183 ++++++++++++++++++++++++++
>> drivers/gpu/drm/xe/xe_log.c | 132 +++++++++++++++++++
>> drivers/gpu/drm/xe/xe_log.h | 20 +++
>> 6 files changed, 351 insertions(+)
>> create mode 100644 Documentation/gpu/xe/xe_sigid.rst
>> create mode 100644 drivers/gpu/drm/xe/abi/xe_sigid_abi.h
>> create mode 100644 drivers/gpu/drm/xe/xe_log.c
>> create mode 100644 drivers/gpu/drm/xe/xe_log.h
>>
>> diff --git a/Documentation/gpu/xe/index.rst b/Documentation/gpu/xe/index.rst
>> index 665c0e93601c..0247a255f7e6 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_sigid
>> diff --git a/Documentation/gpu/xe/xe_sigid.rst b/Documentation/gpu/xe/xe_sigid.rst
>> new file mode 100644
>> index 000000000000..45d84a62f185
>> --- /dev/null
>> +++ b/Documentation/gpu/xe/xe_sigid.rst
>> @@ -0,0 +1,14 @@
>> +.. SPDX-License-Identifier: (GPL-2.0+ OR MIT)
>> +
>> +========
>> +Xe SIGID
>> +========
>> +
>> +.. kernel-doc:: drivers/gpu/drm/xe/abi/xe_sigid_abi.h
>> + :doc: Xe Error Signatures (SIGID)
>> +
>> +Signature Identifiers
>> +=====================
>> +
>> +.. kernel-doc:: drivers/gpu/drm/xe/abi/xe_sigid_abi.h
>> + :internal:
>> diff --git a/drivers/gpu/drm/xe/Makefile b/drivers/gpu/drm/xe/Makefile
>> index 67ada1d6c2fb..7ac3954737f9 100644
>> --- a/drivers/gpu/drm/xe/Makefile
>> +++ b/drivers/gpu/drm/xe/Makefile
>> @@ -87,6 +87,7 @@ xe-y += xe_bb.o \
>> xe_hw_fence.o \
>> xe_irq.o \
>> xe_late_bind_fw.o \
>> + xe_log.o \
>> xe_lrc.o \
>> xe_mem_pool.o \
>> xe_migrate.o \
>> diff --git a/drivers/gpu/drm/xe/abi/xe_sigid_abi.h b/drivers/gpu/drm/xe/abi/xe_sigid_abi.h
>> new file mode 100644
>> index 000000000000..99717fdf74a6
>> --- /dev/null
>> +++ b/drivers/gpu/drm/xe/abi/xe_sigid_abi.h
>> @@ -0,0 +1,183 @@
>> +/* SPDX-License-Identifier: MIT */
>> +/*
>> + * Copyright © 2026 Intel Corporation
>> + */
>> +
>> +#ifndef _ABI_XE_SIGID_ABI_H_
>> +#define _ABI_XE_SIGID_ABI_H_
>> +
>> +/**
>> + * DOC: Xe Error Signatures (SIGID)
>> + *
>> + * What SIGID stands for
>> + * ---------------------
>> + *
>> + * SIGID is short for *Signature Identifier*. A SIGID is a small, stable integer
>> + * that names one *recognised Xe fault situation* -- nothing more. It is the
>> + * primary handle used for triage: a SIGID maps to a human description and a
>> + * recommended first action. A coarse first-order action is documented in-tree
>> + * per SIGID (see "First-order action" below) so the id is actionable on its
>> + * own; published end-user documentation refines it with finer, cross-product
>> + * detail. The driver's only job is to emit the right SIGID next to the usual
>> + * human-readable text.
>> + *
>> + * Why this exists
>> + * ---------------
>> + *
>> + * Today the driver reports faults with ad-hoc ``drm_err()`` / ``xe_gt_err()``
>> + * strings that have no stable shape. That is fine for a human reading dmesg,
>> + * but it gives fleet tooling nothing durable to match on: the wording changes
>> + * between releases, lines can be rate-limited or dropped under an error storm,
>> + * and there is no consistent way to ask "which recognised fault just happened?"
>> + * A SIGID answers exactly that one question, identically across driver and
>> + * firmware versions, and (eventually) across other Intel devices in a node.
>> + *
>> + * What a SIGID is (and is not)
>> + * ----------------------------
>> + *
>> + * A SIGID names *which situation* is being reported. It deliberately does not
>> + * encode the detailed reason or the outcome. Those are carried alongside it::
>> + *
>> + * SIGID -> which recognised situation is being reported
>> + * severity -> how serious this instance is (see below -- not fixed per SIGID)
>> + * errno -> the failing operation's error, shown with %pe
>> + * message -> free-form human-readable context
>> + *
>> + * Severity is independent of the SIGID. The same situation can be reported at
>> + * different severities depending on the instance and the recovery taken, so a
>> + * SIGID is never tied to one severity; the reporting site chooses it by calling
>> + * the matching xe_log_*() helper (see xe_log.h).
>> + *
>> + * How to pick a SIGID (the uniqueness rule)
>> + * -----------------------------------------
>> + *
>> + * Pick per *report site*, not per incident. Each site emits the single most
>> + * specific recognised situation *for that site* -- so the question is never
>> + * "classify this whole failure", it is "what does this site detect?", which has
>> + * one answer. A single underlying failure therefore legitimately produces a
>> + * *chain* of reports from different layers, each with its own SIGID -- e.g. a
>> + * GuC communication failure is reported as %XE_SIGID_RUNTIME_FW by the firmware
>> + * path, the failed recovery as %XE_SIGID_GT_TDR by the reset path, and an
>> + * aborted bind as %XE_SIGID_PROBE by the probe path. That chain lets triage
>> + * follow a fault from origin to final effect; it is not a duplicate.
>> + *
>> + * If a site does not match any defined situation, keep using the ordinary
>> + * ``xe_err()`` / ``xe_gt_err()`` logging rather than forcing a SIGID: a wrong
>> + * or over-broad classification is harder to retire than a missing one. When a
>> + * new situation is genuinely worth triaging, add it to the list below.
>> + *
>> + * Scope: software-emitted signatures only
>> + * ---------------------------------------
>> + *
>> + * This header enumerates only the situations that the *driver itself* detects
>> + * and reports from software: probe abort, wedged, survivability, driver-
>> + * detected firmware failures, engine TDR, memory faults and IO/bus faults.
>> + * These are the only values the driver assigns.
>> + *
>> + * Signatures that *originate* in firmware or hardware are a different thing:
>> + * they are produced and identified by the firmware or the hardware itself
>> + * (e.g. via their own records or error counters), and the driver merely logs
>> + * them as they are given to us. They are deliberately *not* enumerated here --
>> + * minting a driver-side id for a firmware/hardware-reported error would only
>> + * duplicate an identifier the reporting layer already owns. The two
>> + * driver-detected firmware situations below (%XE_SIGID_RUNTIME_FW,
>> + * %XE_SIGID_DEVICE_FW) are software signatures: they mark that *the driver*
>> + * observed a firmware problem, not a signature reported by the firmware.
>> + *
>> + * Numbering
>> + * ---------
>> + *
>> + * SIGIDs are a single flat list numbered sequentially within the assigned range,
>> + * in the order the situations were introduced. Values are stable: once assigned
>> + * they are only ever appended, never renumbered or reused.
>> + *
>> + * A retired situation is deprecated in place, never re-purposed.
>> + *
>> + * First-order action (resolution buckets)
>> + * ---------------------------------------
>> + *
>> + * So that a SIGID is actionable on its own, each one is tagged with a coarse
>> + * *resolution bucket*: the first thing an operator should do on seeing it. The
>> + * bucket is a stable, driver-owned hint; external documentation may refine it,
>> + * but the in-tree value always stands on its own. Every new SIGID must pick a
>> + * bucket, which forces the question "what should someone do about this?" to be
>> + * answered up front. The buckets are::
>> + *
>> + * COLLECT -- capture logs and open a bug report
>> + * RETRY -- transient or already recovered; watch for recurrence
>> + * UPDATE -- a firmware update / flash is required
>> + * RECOVER -- an explicit recovery step is needed (rebind, bus reset)
>> + * IGNORE -- ignore if the SIGID severity is INFORMATIONAL
>> + *
>> + * The bucket is documentation only -- it is recorded per SIGID in the enum
>> + * kernel-doc below and is not printed on the (deliberately lean) dmesg line.
[here]
>> + *
>> + * When to use SIGID logging
>> + * -------------------------
>> + *
>> + * The xe_log_*() helpers are for these recognised fault situations only --
>> + * important, operator-relevant faults and events. They are not a replacement
>> + * for ``xe_info()`` / ``xe_dbg()`` / tracing, nor for one-off diagnostics;
>> + * using them for ordinary logging would dilute the fault stream. Not every
>> + * ``xe_err()`` needs to become a SIGID report -- only those that correspond to
>> + * a published situation.
>> + *
>> + * dmesg vs. the machine record
>> + * ----------------------------
>> + *
>> + * The dmesg line stays close to a normal xe error message so it remains
>> + * readable for admins; the only stable, machine-matchable token on it is
>> + * ``SIGID=<n>`` (``dmesg | grep SIGID=``). dmesg is not an ABI: the surrounding
>> + * text may change freely, and lines may be dropped. The durable record for
>> + * tooling is the CPER record carrying the same SIGID (generation is a planned
>> + * follow-up).
>> + */
>> +
>> +/*
>> + * Top level Intel Error Signature Identifiers.
>> + */
>> +#define INTEL_SIGID_INVALID 0
>> +#define INTEL_SIGID_GPU_START 100
>> +#define INTEL_SIGID_GPU_END 999
>> +
>> +#define INTEL_SIGID_GPU_XE_START 100
>> +#define INTEL_SIGID_GPU_XE_END 299
>> +
>> +#define INTEL_SIGID_GPU_XE_SOFTWARE_START 100
>> +#define INTEL_SIGID_GPU_XE_SOFTWARE_END 199
>> +#define INTEL_SIGID_GPU_XE_HARDWARE_START 200
>> +#define INTEL_SIGID_GPU_XE_HARDWARE_END 299
>> +
>> +/**
>> + * enum xe_sigid - Stable Xe Error Signature Identifiers (SIGID).
>> + * @XE_SIGID_SW: Software component failure. [COLLECT]
>> + * @XE_SIGID_PROBE: Device probe/bind was aborted. [COLLECT]
>> + * @XE_SIGID_WEDGED: Device was declared wedged and is no longer usable. [RECOVER]
>> + * @XE_SIGID_SURVIVABILITY: Device entered survivability mode. [UPDATE]
>> + * @XE_SIGID_RUNTIME_FW: Driver-detected runtime firmware failure, GuC/HuC/GSC. [RETRY]
>> + * @XE_SIGID_DEVICE_FW: Driver-detected device firmware failure, PCODE/sysctrl. [RETRY]
>
> I do not think these first order resolutions can always be reliably
> interpreted Eg: DEVICE_FW might need RECOVERY and not a RETRY and also
I assume that in case of SW faults/signatures, actual (or better) resolution could be determined after using the { SIGID, errno } pair for the lookup
(as we explicitly don't want to use error message for any triage/resolution actions, as it is not considered as stable part of the report)
so maybe we should just say here that SW SIGIDs represent "areas" of the driver, and if no more specific resolution based on errno is available, the default one could be applied?
> driver cannot conclusively indicate the resolution for HW errors those
> will be determined by userspace tools/admin based on observed errors.
for now, this enum just list SW signatures
and maybe all of these doubts should be discussed [here] ?
>
>> + * @XE_SIGID_GT_TDR: Engine hang / timeout detection and recovery (reset). [RETRY]
>> + * @XE_SIGID_MEM_FAULT: VM bind, page fault or GTT fault. [COLLECT]
>> + * @XE_SIGID_IO_BUS: Runtime PCIe / IOMMU / MMIO access fault. [RECOVER]
>> + *
>> + * The situations the driver detects and reports in software. Values are
>> + * numbered sequentially, are only ever appended, and are never renumbered or
>> + * reused. The tag in brackets is the default resolution bucket (see the `Xe
>> + * Error Signatures (SIGID)`_ section).
>> + *
>> + * Firmware- and hardware-originated signatures are not listed here; they are
>> + * logged as reported by those layers.
>> + */
>> +enum xe_sigid {
>> + XE_SIGID_SW = INTEL_SIGID_GPU_XE_SOFTWARE_START,
>> + XE_SIGID_PROBE = INTEL_SIGID_GPU_XE_SOFTWARE_START + 1,
>> + XE_SIGID_WEDGED = INTEL_SIGID_GPU_XE_SOFTWARE_START + 2,
>> + XE_SIGID_SURVIVABILITY = INTEL_SIGID_GPU_XE_SOFTWARE_START + 3,
>> + XE_SIGID_RUNTIME_FW = INTEL_SIGID_GPU_XE_SOFTWARE_START + 4,
>> + XE_SIGID_DEVICE_FW = INTEL_SIGID_GPU_XE_SOFTWARE_START + 5,
>> + XE_SIGID_GT_TDR = INTEL_SIGID_GPU_XE_SOFTWARE_START + 6,
>> + XE_SIGID_MEM_FAULT = INTEL_SIGID_GPU_XE_SOFTWARE_START + 7,
>> + XE_SIGID_IO_BUS = INTEL_SIGID_GPU_XE_SOFTWARE_START + 8,
>> +};
>> +
>> +#endif
>> diff --git a/drivers/gpu/drm/xe/xe_log.c b/drivers/gpu/drm/xe/xe_log.c
>> new file mode 100644
>> index 000000000000..7ea8d8cde0c1
>> --- /dev/null
>> +++ b/drivers/gpu/drm/xe/xe_log.c
>> @@ -0,0 +1,132 @@
>> +// SPDX-License-Identifier: MIT
>> +/*
>> + * Copyright © 2026 Intel Corporation
>> + */
>> +
>> +#include "xe_log.h"
>> +#include "xe_printk.h"
>> +
>> +static void log_prep_cper(struct pci_dev *pdev, int cper_sev, enum xe_sigid sigid,
>> + u32 component, u32 location, const void *data, size_t len,
>> + struct va_format *vaf)
>> +{
>> + /* TODO */
>> +}
>> +
>> +static bool is_hw_sigid(enum xe_sigid sigid)
>> +{
>> + return (int)sigid >= INTEL_SIGID_GPU_XE_HARDWARE_START;
>> +}
>> +
>> +static bool is_sev_error(int cper_sev)
>> +{
>> + return cper_sev != CPER_SEV_INFORMATIONAL;
>> +}
>> +
>> +static const char *log_hwe_prefix(int cper_sev, enum xe_sigid sigid)
>> +{
>> + return is_sev_error(cper_sev) && is_hw_sigid(sigid) ? HW_ERR : "";
>> +}
>> +
>> +static const char *log_sev_prefix(int cper_sev)
>> +{
>> + switch (cper_sev) {
>> + case CPER_SEV_FATAL:
>> + return "FATAL ";
>> + case CPER_SEV_RECOVERABLE:
>> + return "";
>> + case CPER_SEV_CORRECTED:
>> + return "CORRECTED ";
>> + default:
>> + return "";
>> + }
>> +}
>> +
>> +#define __LOG_DRM_PRINTK_FMT(fmt, args...) "[drm] " fmt, ##args
>> +#define __LOG_DRM_PRINTK_ERR_FMT(fmt, args...) __LOG_DRM_PRINTK_FMT("*ERROR* " fmt, args)
>> +
>> +static void log_emit_dmesg(struct pci_dev *pdev, int cper_sev, struct va_format *vaf)
>> +{
>> + if (cper_sev == CPER_SEV_INFORMATIONAL || cper_sev == CPER_SEV_CORRECTED)
>> + pci_info(pdev, __LOG_DRM_PRINTK_FMT("%pV", vaf));
>> + else
>> + pci_err(pdev, __LOG_DRM_PRINTK_ERR_FMT("%pV", vaf));
>> +}
>> +
>> +static void log_print_dmesg(struct pci_dev *pdev, int cper_sev, const char *fmt, ...)
>> +{
>> + struct va_format vaf;
>> + va_list args;
>> +
>> + va_start(args, fmt);
>> + vaf.fmt = fmt;
>> + vaf.va = &args;
>> +
>> + log_emit_dmesg(pdev, cper_sev, &vaf);
>> +
>> + va_end(args);
>> +}
>> +
>> +static void log_prep_dmesg(struct pci_dev *pdev, int cper_sev, enum xe_sigid sigid,
>> + const void *data, size_t len, struct va_format *vaf)
>> +{
>> + const char *hwe_prefix = log_hwe_prefix(cper_sev, sigid);
>> + const char *sev_prefix = log_sev_prefix(cper_sev);
>> +
>> + if (IS_ERR(data))
>> + log_print_dmesg(pdev, cper_sev, "SIGID=%u %s(%pe) %s%pV",
>> + sigid, sev_prefix, data, hwe_prefix, vaf);
>> + else if (data && len)
>> + log_print_dmesg(pdev, cper_sev, "SIGID=%u %s(%*phN) %s%pV",
>> + sigid, sev_prefix, (int)len, data, hwe_prefix, vaf);
>> + else
>> + log_print_dmesg(pdev, cper_sev, "SIGID=%u %s%s%pV",
>> + sigid, sev_prefix, hwe_prefix, vaf);
>> +}
>> +
>> +/**
>> + * xe_log_emit() - Emit a structured SIGID log entry
>> + * @pdev: the &pci_dev device
>> + * @cper_sev: CPER severity (CPER_SEV_FATAL, CPER_SEV_RECOVERABLE, ...)
>> + * @sigid: signature identifier, see &enum xe_sigid
>> + * @component: component identifer
>> + * @location: location details of the @component
>> + * @data: pointer to the additional details, or ERR_PTR, or NULL if not applicable
>> + * @len: length of the @data in bytes, or 0 if not applicable
>> + * @fmt: printf-style format string
>> + * @...: format arguments
>> + *
>> + * Emits a dmesg line that includes a single stable, machine-matchable token
>> + * ``SIGID=<n>`` followed by the optional severity token (like ``FATAL``) and,
>> + * when @data pointer is set, either the error printed with %pe or a packed hex
>> + * dump of the @data binary blob. The dmesg line will also include printf-style
>> + * text message.
>> + *
>> + * Note that the full dmesg line, with the free text message, is only a debugging
>> + * aid, not an interface! Only the ``SIGID=<n>`` token is stable there.
>> + * The durable machine record is the CPER carrying the same SIGID.
>> + *
>> + * Note: generation of the CPER record is a planned follow-up.
>> + *
>> + * Examples::
>> + *
>> + * <3> xe 0000:03:00.0: [drm] *ERROR* SIGID=104 FATAL (-EPROTO) Invalid GuC reply
>> + * <3> xe 0000:03:00.0: [drm] *ERROR* SIGID=106 (-ETIMEDOUT) Engine 'rcs0' hung
>> + * <6> xe 0000:03:00.0: [drm] *ERROR* SIGID=103 In survivability mode
> Severity cannot be optional as its left for interpretation and also for
> consistency of the prints.
>> + */
>> +void xe_log_emit(struct pci_dev *pdev, int cper_sev, enum xe_sigid sigid,
>> + u32 component, u32 location, const void *data, size_t len,
>> + const char *fmt, ...)
>> +{
>> + struct va_format vaf;
>> + va_list args;
>> +
>> + va_start(args, fmt);
>> + vaf.fmt = fmt;
>> + vaf.va = &args;
>> +
>> + log_prep_dmesg(pdev, cper_sev, sigid, data, len, &vaf);
>> + log_prep_cper(pdev, cper_sev, sigid, component, location, data, len, &vaf);
>> +
>> + va_end(args);
>> +}
>> diff --git a/drivers/gpu/drm/xe/xe_log.h b/drivers/gpu/drm/xe/xe_log.h
>> new file mode 100644
>> index 000000000000..d475e816ee0b
>> --- /dev/null
>> +++ b/drivers/gpu/drm/xe/xe_log.h
>> @@ -0,0 +1,20 @@
>> +/* SPDX-License-Identifier: MIT */
>> +/*
>> + * Copyright © 2026 Intel Corporation
>> + */
>> +
>> +#ifndef _XE_LOG_H_
>> +#define _XE_LOG_H_
>> +
>> +#include <linux/cper.h>
>> +
>> +#include "abi/xe_sigid_abi.h"
>> +
>> +struct pci_dev;
>> +
>> +__printf(8, 9)
>> +void xe_log_emit(struct pci_dev *pdev, int cper_sev, enum xe_sigid sigid,
>> + u32 component, u32 location, const void *data, size_t len,
>> + const char *fmt, ...);
>> +
>> +#endif
> Thanks,
> Aravind.
^ permalink raw reply [flat|nested] 37+ messages in thread* Re: [PATCH 01/19] drm/xe/log: Add structured SIGID error logging infrastructure
2026-07-24 14:34 ` Michal Wajdeczko
@ 2026-07-28 19:04 ` Rodrigo Vivi
0 siblings, 0 replies; 37+ messages in thread
From: Rodrigo Vivi @ 2026-07-28 19:04 UTC (permalink / raw)
To: Michal Wajdeczko
Cc: Aravind Iddamsetty, intel-xe, Mallesh Koujalagi, Yoni Levitt,
Aravind Iddamsetty, Raag Jadav, Riana Tauro
On Fri, Jul 24, 2026 at 04:34:30PM +0200, Michal Wajdeczko wrote:
>
>
> On 7/24/2026 3:01 PM, Aravind Iddamsetty wrote:
> >
> > On 24-07-2026 02:07, Michal Wajdeczko wrote:
> >> From: Mallesh Koujalagi <mallesh.koujalagi@intel.com>
> >>
> >> Today the driver reports faults with ad-hoc drm_err()/xe_gt_err()
> >> strings that have no stable shape. That is readable for a human, but it
> >> gives fleet tooling nothing durable to match on: the wording changes
> >> between releases, lines can be rate-limited or dropped under an error
> >> storm, and there is no consistent way to ask "which recognised fault
> >> just happened?".
> >>
> >> Introduce a signature identifier (SIGID): a small, stable integer that
> >> names one recognised Xe fault situation and serves as the primary handle
> >> for triage. A SIGID maps, through published end-user documentation, to a
> >> description and a recommended action; the driver only has to emit the
> >> right SIGID next to the usual human-readable text.
> >>
> >> Signed-off-by: Mallesh Koujalagi <mallesh.koujalagi@intel.com>
> >> Assisted-by: Copilot:Opus-4.8
> >> Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
> >> Co-developed-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
> >> Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
> >> ---
> >> Cc: Yoni Levitt <yoni.levitt@intel.com>
> >> Cc: Aravind Iddamsetty <aravind.iddamsetty@intel.com>
> >> Cc: Raag Jadav <raag.jadav@intel.com>
> >> Cc: Riana Tauro <riana.tauro@intel.com>
> >> ---
> >> Documentation/gpu/xe/index.rst | 1 +
> >> Documentation/gpu/xe/xe_sigid.rst | 14 ++
> >> drivers/gpu/drm/xe/Makefile | 1 +
> >> drivers/gpu/drm/xe/abi/xe_sigid_abi.h | 183 ++++++++++++++++++++++++++
> >> drivers/gpu/drm/xe/xe_log.c | 132 +++++++++++++++++++
> >> drivers/gpu/drm/xe/xe_log.h | 20 +++
> >> 6 files changed, 351 insertions(+)
> >> create mode 100644 Documentation/gpu/xe/xe_sigid.rst
> >> create mode 100644 drivers/gpu/drm/xe/abi/xe_sigid_abi.h
> >> create mode 100644 drivers/gpu/drm/xe/xe_log.c
> >> create mode 100644 drivers/gpu/drm/xe/xe_log.h
> >>
> >> diff --git a/Documentation/gpu/xe/index.rst b/Documentation/gpu/xe/index.rst
> >> index 665c0e93601c..0247a255f7e6 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_sigid
> >> diff --git a/Documentation/gpu/xe/xe_sigid.rst b/Documentation/gpu/xe/xe_sigid.rst
> >> new file mode 100644
> >> index 000000000000..45d84a62f185
> >> --- /dev/null
> >> +++ b/Documentation/gpu/xe/xe_sigid.rst
> >> @@ -0,0 +1,14 @@
> >> +.. SPDX-License-Identifier: (GPL-2.0+ OR MIT)
> >> +
> >> +========
> >> +Xe SIGID
> >> +========
> >> +
> >> +.. kernel-doc:: drivers/gpu/drm/xe/abi/xe_sigid_abi.h
> >> + :doc: Xe Error Signatures (SIGID)
> >> +
> >> +Signature Identifiers
> >> +=====================
> >> +
> >> +.. kernel-doc:: drivers/gpu/drm/xe/abi/xe_sigid_abi.h
> >> + :internal:
> >> diff --git a/drivers/gpu/drm/xe/Makefile b/drivers/gpu/drm/xe/Makefile
> >> index 67ada1d6c2fb..7ac3954737f9 100644
> >> --- a/drivers/gpu/drm/xe/Makefile
> >> +++ b/drivers/gpu/drm/xe/Makefile
> >> @@ -87,6 +87,7 @@ xe-y += xe_bb.o \
> >> xe_hw_fence.o \
> >> xe_irq.o \
> >> xe_late_bind_fw.o \
> >> + xe_log.o \
> >> xe_lrc.o \
> >> xe_mem_pool.o \
> >> xe_migrate.o \
> >> diff --git a/drivers/gpu/drm/xe/abi/xe_sigid_abi.h b/drivers/gpu/drm/xe/abi/xe_sigid_abi.h
> >> new file mode 100644
> >> index 000000000000..99717fdf74a6
> >> --- /dev/null
> >> +++ b/drivers/gpu/drm/xe/abi/xe_sigid_abi.h
> >> @@ -0,0 +1,183 @@
> >> +/* SPDX-License-Identifier: MIT */
> >> +/*
> >> + * Copyright © 2026 Intel Corporation
> >> + */
> >> +
> >> +#ifndef _ABI_XE_SIGID_ABI_H_
> >> +#define _ABI_XE_SIGID_ABI_H_
> >> +
> >> +/**
> >> + * DOC: Xe Error Signatures (SIGID)
> >> + *
> >> + * What SIGID stands for
> >> + * ---------------------
> >> + *
> >> + * SIGID is short for *Signature Identifier*. A SIGID is a small, stable integer
> >> + * that names one *recognised Xe fault situation* -- nothing more. It is the
> >> + * primary handle used for triage: a SIGID maps to a human description and a
> >> + * recommended first action. A coarse first-order action is documented in-tree
> >> + * per SIGID (see "First-order action" below) so the id is actionable on its
> >> + * own; published end-user documentation refines it with finer, cross-product
> >> + * detail. The driver's only job is to emit the right SIGID next to the usual
> >> + * human-readable text.
> >> + *
> >> + * Why this exists
> >> + * ---------------
> >> + *
> >> + * Today the driver reports faults with ad-hoc ``drm_err()`` / ``xe_gt_err()``
> >> + * strings that have no stable shape. That is fine for a human reading dmesg,
> >> + * but it gives fleet tooling nothing durable to match on: the wording changes
> >> + * between releases, lines can be rate-limited or dropped under an error storm,
> >> + * and there is no consistent way to ask "which recognised fault just happened?"
> >> + * A SIGID answers exactly that one question, identically across driver and
> >> + * firmware versions, and (eventually) across other Intel devices in a node.
> >> + *
> >> + * What a SIGID is (and is not)
> >> + * ----------------------------
> >> + *
> >> + * A SIGID names *which situation* is being reported. It deliberately does not
> >> + * encode the detailed reason or the outcome. Those are carried alongside it::
> >> + *
> >> + * SIGID -> which recognised situation is being reported
> >> + * severity -> how serious this instance is (see below -- not fixed per SIGID)
> >> + * errno -> the failing operation's error, shown with %pe
> >> + * message -> free-form human-readable context
> >> + *
> >> + * Severity is independent of the SIGID. The same situation can be reported at
> >> + * different severities depending on the instance and the recovery taken, so a
> >> + * SIGID is never tied to one severity; the reporting site chooses it by calling
> >> + * the matching xe_log_*() helper (see xe_log.h).
> >> + *
> >> + * How to pick a SIGID (the uniqueness rule)
> >> + * -----------------------------------------
> >> + *
> >> + * Pick per *report site*, not per incident. Each site emits the single most
> >> + * specific recognised situation *for that site* -- so the question is never
> >> + * "classify this whole failure", it is "what does this site detect?", which has
> >> + * one answer. A single underlying failure therefore legitimately produces a
> >> + * *chain* of reports from different layers, each with its own SIGID -- e.g. a
> >> + * GuC communication failure is reported as %XE_SIGID_RUNTIME_FW by the firmware
> >> + * path, the failed recovery as %XE_SIGID_GT_TDR by the reset path, and an
> >> + * aborted bind as %XE_SIGID_PROBE by the probe path. That chain lets triage
> >> + * follow a fault from origin to final effect; it is not a duplicate.
> >> + *
> >> + * If a site does not match any defined situation, keep using the ordinary
> >> + * ``xe_err()`` / ``xe_gt_err()`` logging rather than forcing a SIGID: a wrong
> >> + * or over-broad classification is harder to retire than a missing one. When a
> >> + * new situation is genuinely worth triaging, add it to the list below.
> >> + *
> >> + * Scope: software-emitted signatures only
> >> + * ---------------------------------------
> >> + *
> >> + * This header enumerates only the situations that the *driver itself* detects
> >> + * and reports from software: probe abort, wedged, survivability, driver-
> >> + * detected firmware failures, engine TDR, memory faults and IO/bus faults.
> >> + * These are the only values the driver assigns.
> >> + *
> >> + * Signatures that *originate* in firmware or hardware are a different thing:
> >> + * they are produced and identified by the firmware or the hardware itself
> >> + * (e.g. via their own records or error counters), and the driver merely logs
> >> + * them as they are given to us. They are deliberately *not* enumerated here --
> >> + * minting a driver-side id for a firmware/hardware-reported error would only
> >> + * duplicate an identifier the reporting layer already owns. The two
> >> + * driver-detected firmware situations below (%XE_SIGID_RUNTIME_FW,
> >> + * %XE_SIGID_DEVICE_FW) are software signatures: they mark that *the driver*
> >> + * observed a firmware problem, not a signature reported by the firmware.
> >> + *
> >> + * Numbering
> >> + * ---------
> >> + *
> >> + * SIGIDs are a single flat list numbered sequentially within the assigned range,
> >> + * in the order the situations were introduced. Values are stable: once assigned
> >> + * they are only ever appended, never renumbered or reused.
> >> + *
> >> + * A retired situation is deprecated in place, never re-purposed.
> >> + *
> >> + * First-order action (resolution buckets)
> >> + * ---------------------------------------
> >> + *
> >> + * So that a SIGID is actionable on its own, each one is tagged with a coarse
> >> + * *resolution bucket*: the first thing an operator should do on seeing it. The
> >> + * bucket is a stable, driver-owned hint; external documentation may refine it,
> >> + * but the in-tree value always stands on its own. Every new SIGID must pick a
> >> + * bucket, which forces the question "what should someone do about this?" to be
> >> + * answered up front. The buckets are::
> >> + *
> >> + * COLLECT -- capture logs and open a bug report
> >> + * RETRY -- transient or already recovered; watch for recurrence
> >> + * UPDATE -- a firmware update / flash is required
> >> + * RECOVER -- an explicit recovery step is needed (rebind, bus reset)
> >> + * IGNORE -- ignore if the SIGID severity is INFORMATIONAL
> >> + *
> >> + * The bucket is documentation only -- it is recorded per SIGID in the enum
> >> + * kernel-doc below and is not printed on the (deliberately lean) dmesg line.
>
> [here]
>
> >> + *
> >> + * When to use SIGID logging
> >> + * -------------------------
> >> + *
> >> + * The xe_log_*() helpers are for these recognised fault situations only --
> >> + * important, operator-relevant faults and events. They are not a replacement
> >> + * for ``xe_info()`` / ``xe_dbg()`` / tracing, nor for one-off diagnostics;
> >> + * using them for ordinary logging would dilute the fault stream. Not every
> >> + * ``xe_err()`` needs to become a SIGID report -- only those that correspond to
> >> + * a published situation.
> >> + *
> >> + * dmesg vs. the machine record
> >> + * ----------------------------
> >> + *
> >> + * The dmesg line stays close to a normal xe error message so it remains
> >> + * readable for admins; the only stable, machine-matchable token on it is
> >> + * ``SIGID=<n>`` (``dmesg | grep SIGID=``). dmesg is not an ABI: the surrounding
> >> + * text may change freely, and lines may be dropped. The durable record for
> >> + * tooling is the CPER record carrying the same SIGID (generation is a planned
> >> + * follow-up).
> >> + */
> >> +
> >> +/*
> >> + * Top level Intel Error Signature Identifiers.
> >> + */
> >> +#define INTEL_SIGID_INVALID 0
> >> +#define INTEL_SIGID_GPU_START 100
> >> +#define INTEL_SIGID_GPU_END 999
> >> +
> >> +#define INTEL_SIGID_GPU_XE_START 100
> >> +#define INTEL_SIGID_GPU_XE_END 299
> >> +
> >> +#define INTEL_SIGID_GPU_XE_SOFTWARE_START 100
> >> +#define INTEL_SIGID_GPU_XE_SOFTWARE_END 199
> >> +#define INTEL_SIGID_GPU_XE_HARDWARE_START 200
> >> +#define INTEL_SIGID_GPU_XE_HARDWARE_END 299
> >> +
> >> +/**
> >> + * enum xe_sigid - Stable Xe Error Signature Identifiers (SIGID).
> >> + * @XE_SIGID_SW: Software component failure. [COLLECT]
> >> + * @XE_SIGID_PROBE: Device probe/bind was aborted. [COLLECT]
> >> + * @XE_SIGID_WEDGED: Device was declared wedged and is no longer usable. [RECOVER]
> >> + * @XE_SIGID_SURVIVABILITY: Device entered survivability mode. [UPDATE]
> >> + * @XE_SIGID_RUNTIME_FW: Driver-detected runtime firmware failure, GuC/HuC/GSC. [RETRY]
> >> + * @XE_SIGID_DEVICE_FW: Driver-detected device firmware failure, PCODE/sysctrl. [RETRY]
> >
> > I do not think these first order resolutions can always be reliably
> > interpreted Eg: DEVICE_FW might need RECOVERY and not a RETRY and also
>
> I assume that in case of SW faults/signatures, actual (or better) resolution could be determined after using the { SIGID, errno } pair for the lookup
> (as we explicitly don't want to use error message for any triage/resolution actions, as it is not considered as stable part of the report)
>
> so maybe we should just say here that SW SIGIDs represent "areas" of the driver, and if no more specific resolution based on errno is available, the default one could be applied?
Perhaps this is the easiest way out of having to define the recovery
recommendations in here.
Or perhaps we let it explicit in this documentation that these are the overall
SW recommendations from SW viewed cases, but that customers should refer
to other official Intel documentations for final comprehensive list that
includes other FW, HW and other drivers SIG_IDs with a better/proper
and more specific recommendation?!
>
> > driver cannot conclusively indicate the resolution for HW errors those
> > will be determined by userspace tools/admin based on observed errors.
>
> for now, this enum just list SW signatures
>
> and maybe all of these doubts should be discussed [here] ?
Perhaps the mention that I wrote above also ease this need/conflict...
>
> >
> >> + * @XE_SIGID_GT_TDR: Engine hang / timeout detection and recovery (reset). [RETRY]
> >> + * @XE_SIGID_MEM_FAULT: VM bind, page fault or GTT fault. [COLLECT]
> >> + * @XE_SIGID_IO_BUS: Runtime PCIe / IOMMU / MMIO access fault. [RECOVER]
> >> + *
> >> + * The situations the driver detects and reports in software. Values are
> >> + * numbered sequentially, are only ever appended, and are never renumbered or
> >> + * reused. The tag in brackets is the default resolution bucket (see the `Xe
> >> + * Error Signatures (SIGID)`_ section).
> >> + *
> >> + * Firmware- and hardware-originated signatures are not listed here; they are
> >> + * logged as reported by those layers.
> >> + */
> >> +enum xe_sigid {
> >> + XE_SIGID_SW = INTEL_SIGID_GPU_XE_SOFTWARE_START,
> >> + XE_SIGID_PROBE = INTEL_SIGID_GPU_XE_SOFTWARE_START + 1,
> >> + XE_SIGID_WEDGED = INTEL_SIGID_GPU_XE_SOFTWARE_START + 2,
> >> + XE_SIGID_SURVIVABILITY = INTEL_SIGID_GPU_XE_SOFTWARE_START + 3,
> >> + XE_SIGID_RUNTIME_FW = INTEL_SIGID_GPU_XE_SOFTWARE_START + 4,
> >> + XE_SIGID_DEVICE_FW = INTEL_SIGID_GPU_XE_SOFTWARE_START + 5,
> >> + XE_SIGID_GT_TDR = INTEL_SIGID_GPU_XE_SOFTWARE_START + 6,
> >> + XE_SIGID_MEM_FAULT = INTEL_SIGID_GPU_XE_SOFTWARE_START + 7,
> >> + XE_SIGID_IO_BUS = INTEL_SIGID_GPU_XE_SOFTWARE_START + 8,
> >> +};
> >> +
> >> +#endif
> >> diff --git a/drivers/gpu/drm/xe/xe_log.c b/drivers/gpu/drm/xe/xe_log.c
> >> new file mode 100644
> >> index 000000000000..7ea8d8cde0c1
> >> --- /dev/null
> >> +++ b/drivers/gpu/drm/xe/xe_log.c
> >> @@ -0,0 +1,132 @@
> >> +// SPDX-License-Identifier: MIT
> >> +/*
> >> + * Copyright © 2026 Intel Corporation
> >> + */
> >> +
> >> +#include "xe_log.h"
> >> +#include "xe_printk.h"
> >> +
> >> +static void log_prep_cper(struct pci_dev *pdev, int cper_sev, enum xe_sigid sigid,
> >> + u32 component, u32 location, const void *data, size_t len,
> >> + struct va_format *vaf)
> >> +{
> >> + /* TODO */
> >> +}
> >> +
> >> +static bool is_hw_sigid(enum xe_sigid sigid)
> >> +{
> >> + return (int)sigid >= INTEL_SIGID_GPU_XE_HARDWARE_START;
> >> +}
> >> +
> >> +static bool is_sev_error(int cper_sev)
> >> +{
> >> + return cper_sev != CPER_SEV_INFORMATIONAL;
> >> +}
> >> +
> >> +static const char *log_hwe_prefix(int cper_sev, enum xe_sigid sigid)
> >> +{
> >> + return is_sev_error(cper_sev) && is_hw_sigid(sigid) ? HW_ERR : "";
> >> +}
> >> +
> >> +static const char *log_sev_prefix(int cper_sev)
> >> +{
> >> + switch (cper_sev) {
> >> + case CPER_SEV_FATAL:
> >> + return "FATAL ";
> >> + case CPER_SEV_RECOVERABLE:
> >> + return "";
> >> + case CPER_SEV_CORRECTED:
> >> + return "CORRECTED ";
> >> + default:
> >> + return "";
> >> + }
> >> +}
> >> +
> >> +#define __LOG_DRM_PRINTK_FMT(fmt, args...) "[drm] " fmt, ##args
> >> +#define __LOG_DRM_PRINTK_ERR_FMT(fmt, args...) __LOG_DRM_PRINTK_FMT("*ERROR* " fmt, args)
> >> +
> >> +static void log_emit_dmesg(struct pci_dev *pdev, int cper_sev, struct va_format *vaf)
> >> +{
> >> + if (cper_sev == CPER_SEV_INFORMATIONAL || cper_sev == CPER_SEV_CORRECTED)
> >> + pci_info(pdev, __LOG_DRM_PRINTK_FMT("%pV", vaf));
> >> + else
> >> + pci_err(pdev, __LOG_DRM_PRINTK_ERR_FMT("%pV", vaf));
> >> +}
> >> +
> >> +static void log_print_dmesg(struct pci_dev *pdev, int cper_sev, const char *fmt, ...)
> >> +{
> >> + struct va_format vaf;
> >> + va_list args;
> >> +
> >> + va_start(args, fmt);
> >> + vaf.fmt = fmt;
> >> + vaf.va = &args;
> >> +
> >> + log_emit_dmesg(pdev, cper_sev, &vaf);
> >> +
> >> + va_end(args);
> >> +}
> >> +
> >> +static void log_prep_dmesg(struct pci_dev *pdev, int cper_sev, enum xe_sigid sigid,
> >> + const void *data, size_t len, struct va_format *vaf)
> >> +{
> >> + const char *hwe_prefix = log_hwe_prefix(cper_sev, sigid);
> >> + const char *sev_prefix = log_sev_prefix(cper_sev);
> >> +
> >> + if (IS_ERR(data))
> >> + log_print_dmesg(pdev, cper_sev, "SIGID=%u %s(%pe) %s%pV",
> >> + sigid, sev_prefix, data, hwe_prefix, vaf);
> >> + else if (data && len)
> >> + log_print_dmesg(pdev, cper_sev, "SIGID=%u %s(%*phN) %s%pV",
> >> + sigid, sev_prefix, (int)len, data, hwe_prefix, vaf);
> >> + else
> >> + log_print_dmesg(pdev, cper_sev, "SIGID=%u %s%s%pV",
> >> + sigid, sev_prefix, hwe_prefix, vaf);
> >> +}
> >> +
> >> +/**
> >> + * xe_log_emit() - Emit a structured SIGID log entry
> >> + * @pdev: the &pci_dev device
> >> + * @cper_sev: CPER severity (CPER_SEV_FATAL, CPER_SEV_RECOVERABLE, ...)
> >> + * @sigid: signature identifier, see &enum xe_sigid
> >> + * @component: component identifer
> >> + * @location: location details of the @component
> >> + * @data: pointer to the additional details, or ERR_PTR, or NULL if not applicable
> >> + * @len: length of the @data in bytes, or 0 if not applicable
> >> + * @fmt: printf-style format string
> >> + * @...: format arguments
> >> + *
> >> + * Emits a dmesg line that includes a single stable, machine-matchable token
> >> + * ``SIGID=<n>`` followed by the optional severity token (like ``FATAL``) and,
> >> + * when @data pointer is set, either the error printed with %pe or a packed hex
> >> + * dump of the @data binary blob. The dmesg line will also include printf-style
> >> + * text message.
> >> + *
> >> + * Note that the full dmesg line, with the free text message, is only a debugging
> >> + * aid, not an interface! Only the ``SIGID=<n>`` token is stable there.
> >> + * The durable machine record is the CPER carrying the same SIGID.
> >> + *
> >> + * Note: generation of the CPER record is a planned follow-up.
> >> + *
> >> + * Examples::
> >> + *
> >> + * <3> xe 0000:03:00.0: [drm] *ERROR* SIGID=104 FATAL (-EPROTO) Invalid GuC reply
> >> + * <3> xe 0000:03:00.0: [drm] *ERROR* SIGID=106 (-ETIMEDOUT) Engine 'rcs0' hung
> >> + * <6> xe 0000:03:00.0: [drm] *ERROR* SIGID=103 In survivability mode
> > Severity cannot be optional as its left for interpretation and also for
> > consistency of the prints.
Well, it is consistent enough to me, and even parseable as the latest patch
with the script demonstrate.
> >> + */
> >> +void xe_log_emit(struct pci_dev *pdev, int cper_sev, enum xe_sigid sigid,
> >> + u32 component, u32 location, const void *data, size_t len,
> >> + const char *fmt, ...)
> >> +{
> >> + struct va_format vaf;
> >> + va_list args;
> >> +
> >> + va_start(args, fmt);
> >> + vaf.fmt = fmt;
> >> + vaf.va = &args;
> >> +
> >> + log_prep_dmesg(pdev, cper_sev, sigid, data, len, &vaf);
> >> + log_prep_cper(pdev, cper_sev, sigid, component, location, data, len, &vaf);
> >> +
> >> + va_end(args);
> >> +}
> >> diff --git a/drivers/gpu/drm/xe/xe_log.h b/drivers/gpu/drm/xe/xe_log.h
> >> new file mode 100644
> >> index 000000000000..d475e816ee0b
> >> --- /dev/null
> >> +++ b/drivers/gpu/drm/xe/xe_log.h
> >> @@ -0,0 +1,20 @@
> >> +/* SPDX-License-Identifier: MIT */
> >> +/*
> >> + * Copyright © 2026 Intel Corporation
> >> + */
> >> +
> >> +#ifndef _XE_LOG_H_
> >> +#define _XE_LOG_H_
> >> +
> >> +#include <linux/cper.h>
> >> +
> >> +#include "abi/xe_sigid_abi.h"
> >> +
> >> +struct pci_dev;
> >> +
> >> +__printf(8, 9)
> >> +void xe_log_emit(struct pci_dev *pdev, int cper_sev, enum xe_sigid sigid,
> >> + u32 component, u32 location, const void *data, size_t len,
> >> + const char *fmt, ...);
> >> +
> >> +#endif
> > Thanks,
> > Aravind.
>
^ permalink raw reply [flat|nested] 37+ messages in thread
* [PATCH 02/19] drm/xe: Introduce xe_any helpers
2026-07-23 20:37 [PATCH 00/19] drm/xe: Add structured SIGID error logging infrastructure Michal Wajdeczko
2026-07-23 20:37 ` [PATCH 01/19] drm/xe/log: " Michal Wajdeczko
@ 2026-07-23 20:37 ` Michal Wajdeczko
2026-07-28 5:23 ` Mallesh, Koujalagi
2026-07-23 20:37 ` [PATCH 03/19] drm/xe/log: Add simple helpers for xe_log_emit Michal Wajdeczko
` (20 subsequent siblings)
22 siblings, 1 reply; 37+ messages in thread
From: Michal Wajdeczko @ 2026-07-23 20:37 UTC (permalink / raw)
To: intel-xe
Cc: Michal Wajdeczko, Rodrigo Vivi, Thomas Hellström,
Matthew Brost
In upcoming patches we want to define macros that will work with
either xe_device or xe_tile or xe_gt pointers. To make them work
and to allow compiler optimizations, introduce set of helpers
that will return either expected pointer type or NULL. Also add
conversion helpers to/from the struct device/pci_dev.
Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com>
Cc: Matthew Brost <matthew.brost@intel.com>
---
drivers/gpu/drm/xe/xe_any.h | 107 ++++++++++++++++++++++++++++++++++++
1 file changed, 107 insertions(+)
create mode 100644 drivers/gpu/drm/xe/xe_any.h
diff --git a/drivers/gpu/drm/xe/xe_any.h b/drivers/gpu/drm/xe/xe_any.h
new file mode 100644
index 000000000000..c633c6ee83b5
--- /dev/null
+++ b/drivers/gpu/drm/xe/xe_any.h
@@ -0,0 +1,107 @@
+/* SPDX-License-Identifier: MIT */
+/*
+ * Copyright © 2026 Intel Corporation
+ */
+
+#ifndef _XE_ANY_H_
+#define _XE_ANY_H_
+
+struct pci_dev;
+struct xe_device;
+struct xe_gt;
+struct xe_tile;
+
+/**
+ * xe_any_if_type() - Get the pointer only if it is @type pointer.
+ * @any: any pointer
+ * @type: data type to look for
+ *
+ * Return: the @type pointer or NULL.
+ */
+#define xe_any_if_type(any, type) \
+ _Generic((any), \
+ type * : (any), \
+ const type * : (any), \
+ default : NULL)
+
+/**
+ * xe_any_if_gt() - Get the pointer only if it is &xe_gt.
+ * @any: any pointer
+ *
+ * Return: the @xe_gt pointer or NULL.
+ */
+#define xe_any_if_gt(any) xe_any_if_type((any), struct xe_gt)
+
+/**
+ * xe_any_if_tile() - Get the pointer only if it is &xe_tile.
+ * @any: any pointer
+ *
+ * Return: the @xe_tile pointer or NULL.
+ */
+#define xe_any_if_tile(any) xe_any_if_type((any), struct xe_tile)
+
+/**
+ * xe_any_if_xe() - Get the pointer only if it is &xe_device.
+ * @any: any pointer
+ *
+ * Return: the @xe_device pointer or NULL.
+ */
+#define xe_any_if_xe(any) xe_any_if_type((any), struct xe_device)
+
+/**
+ * xe_any_if_pdev() - Get the pointer only if it is &pci_dev.
+ * @any: any pointer
+ *
+ * Return: the @pci_dev pointer or NULL.
+ */
+#define xe_any_if_pdev(any) xe_any_if_type((any), struct pci_dev)
+
+/**
+ * xe_any_to_xe() - Get the &xe_device pointer.
+ * @any: the &pci_dev or the &xe_device or &xe_tile or &xe_gt pointer
+ *
+ * Return: the @xe_device pointer or backpointer.
+ */
+#define xe_any_to_xe(any) \
+ _Generic((any), \
+ struct pci_dev * : pdev_to_xe_device((struct pci_dev *)(any)), \
+ struct xe_device * : (any), \
+ struct xe_tile * : ((struct xe_tile *)(any))->xe, \
+ struct xe_gt * : ((struct xe_gt *)(any))->tile->xe)
+
+/**
+ * xe_any_to_dev() - Get the &struct device pointer.
+ * @any: the &pci_dev or the &xe_device or &xe_tile or &xe_gt pointer
+ *
+ * Return: the @xe_device pointer or backpointer.
+ */
+#define xe_any_to_dev(any) \
+ _Generic((any), \
+ struct device * : (any), \
+ default : xe_any_to_xe(any)->drm.dev)
+
+/**
+ * xe_any_to_pdev() - Get the &pci_dev pointer.
+ * @any: the &pci_dev or the &xe_device or &xe_tile or &xe_gt pointer
+ *
+ * Return: the @pci_dev pointer or backpointer.
+ */
+#define xe_any_to_pdev(any) \
+ _Generic((any), \
+ struct pci_dev * : (any), \
+ default : to_pci_dev(xe_any_to_dev(any)))
+
+/**
+ * xe_any_id() - Get the identifier of the undrlying any object pointer.
+ * @any: the &pci_dev or the &xe_device or &xe_tile or &xe_gt pointer
+ *
+ * Return: the identifier of the object, or 0 if nor applicable/available.
+ */
+#define xe_any_id(any) \
+ _Generic((any), \
+ struct pci_dev * : 0, \
+ struct xe_device * : 0, \
+ struct xe_tile * : ((struct xe_tile *)(any))->id, \
+ struct xe_gt * : ((struct xe_gt *)(any))->info.id)
+
+#endif
--
2.47.1
^ permalink raw reply related [flat|nested] 37+ messages in thread* Re: [PATCH 02/19] drm/xe: Introduce xe_any helpers
2026-07-23 20:37 ` [PATCH 02/19] drm/xe: Introduce xe_any helpers Michal Wajdeczko
@ 2026-07-28 5:23 ` Mallesh, Koujalagi
0 siblings, 0 replies; 37+ messages in thread
From: Mallesh, Koujalagi @ 2026-07-28 5:23 UTC (permalink / raw)
To: Michal Wajdeczko, intel-xe
Cc: Rodrigo Vivi, Thomas Hellström, Matthew Brost
On 24-07-2026 02:07 am, Michal Wajdeczko wrote:
> In upcoming patches we want to define macros that will work with
> either xe_device or xe_tile or xe_gt pointers. To make them work
> and to allow compiler optimizations, introduce set of helpers
> that will return either expected pointer type or NULL. Also add
> conversion helpers to/from the struct device/pci_dev.
>
> Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
> Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
> Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com>
> Cc: Matthew Brost <matthew.brost@intel.com>
> ---
> drivers/gpu/drm/xe/xe_any.h | 107 ++++++++++++++++++++++++++++++++++++
> 1 file changed, 107 insertions(+)
> create mode 100644 drivers/gpu/drm/xe/xe_any.h
>
> diff --git a/drivers/gpu/drm/xe/xe_any.h b/drivers/gpu/drm/xe/xe_any.h
> new file mode 100644
> index 000000000000..c633c6ee83b5
> --- /dev/null
> +++ b/drivers/gpu/drm/xe/xe_any.h
> @@ -0,0 +1,107 @@
> +/* SPDX-License-Identifier: MIT */
> +/*
> + * Copyright © 2026 Intel Corporation
> + */
> +
> +#ifndef _XE_ANY_H_
> +#define _XE_ANY_H_
> +
> +struct pci_dev;
> +struct xe_device;
> +struct xe_gt;
> +struct xe_tile;
> +
> +/**
> + * xe_any_if_type() - Get the pointer only if it is @type pointer.
> + * @any: any pointer
> + * @type: data type to look for
> + *
> + * Return: the @type pointer or NULL.
> + */
> +#define xe_any_if_type(any, type) \
> + _Generic((any), \
> + type * : (any), \
> + const type * : (any), \
> + default : NULL)
> +
> +/**
> + * xe_any_if_gt() - Get the pointer only if it is &xe_gt.
> + * @any: any pointer
> + *
> + * Return: the @xe_gt pointer or NULL.
> + */
> +#define xe_any_if_gt(any) xe_any_if_type((any), struct xe_gt)
> +
> +/**
> + * xe_any_if_tile() - Get the pointer only if it is &xe_tile.
> + * @any: any pointer
> + *
> + * Return: the @xe_tile pointer or NULL.
> + */
> +#define xe_any_if_tile(any) xe_any_if_type((any), struct xe_tile)
> +
> +/**
> + * xe_any_if_xe() - Get the pointer only if it is &xe_device.
> + * @any: any pointer
> + *
> + * Return: the @xe_device pointer or NULL.
> + */
> +#define xe_any_if_xe(any) xe_any_if_type((any), struct xe_device)
> +
> +/**
> + * xe_any_if_pdev() - Get the pointer only if it is &pci_dev.
> + * @any: any pointer
> + *
> + * Return: the @pci_dev pointer or NULL.
> + */
> +#define xe_any_if_pdev(any) xe_any_if_type((any), struct pci_dev)
> +
> +/**
> + * xe_any_to_xe() - Get the &xe_device pointer.
> + * @any: the &pci_dev or the &xe_device or &xe_tile or &xe_gt pointer
> + *
> + * Return: the @xe_device pointer or backpointer.
> + */
> +#define xe_any_to_xe(any) \
> + _Generic((any), \
> + struct pci_dev * : pdev_to_xe_device((struct pci_dev *)(any)), \
> + struct xe_device * : (any), \
> + struct xe_tile * : ((struct xe_tile *)(any))->xe, \
> + struct xe_gt * : ((struct xe_gt *)(any))->tile->xe)
> +
When we are supporting constant as well, need add constant sibling as
well right.
Like:
struct xe_tile * : ((struct xe_tile *)(any))->xe, \
const struct xe_tile * : ((const struct xe_tile *)(any))->xe, \
Thanks,
-/Mallesh
> +/**
> + * xe_any_to_dev() - Get the &struct device pointer.
> + * @any: the &pci_dev or the &xe_device or &xe_tile or &xe_gt pointer
> + *
> + * Return: the @xe_device pointer or backpointer.
> + */
> +#define xe_any_to_dev(any) \
> + _Generic((any), \
> + struct device * : (any), \
> + default : xe_any_to_xe(any)->drm.dev)
> +
> +/**
> + * xe_any_to_pdev() - Get the &pci_dev pointer.
> + * @any: the &pci_dev or the &xe_device or &xe_tile or &xe_gt pointer
> + *
> + * Return: the @pci_dev pointer or backpointer.
> + */
> +#define xe_any_to_pdev(any) \
> + _Generic((any), \
> + struct pci_dev * : (any), \
> + default : to_pci_dev(xe_any_to_dev(any)))
> +
> +/**
> + * xe_any_id() - Get the identifier of the undrlying any object pointer.
> + * @any: the &pci_dev or the &xe_device or &xe_tile or &xe_gt pointer
> + *
> + * Return: the identifier of the object, or 0 if nor applicable/available.
> + */
> +#define xe_any_id(any) \
> + _Generic((any), \
> + struct pci_dev * : 0, \
> + struct xe_device * : 0, \
> + struct xe_tile * : ((struct xe_tile *)(any))->id, \
> + struct xe_gt * : ((struct xe_gt *)(any))->info.id)
> +
> +#endif
^ permalink raw reply [flat|nested] 37+ messages in thread
* [PATCH 03/19] drm/xe/log: Add simple helpers for xe_log_emit
2026-07-23 20:37 [PATCH 00/19] drm/xe: Add structured SIGID error logging infrastructure Michal Wajdeczko
2026-07-23 20:37 ` [PATCH 01/19] drm/xe/log: " Michal Wajdeczko
2026-07-23 20:37 ` [PATCH 02/19] drm/xe: Introduce xe_any helpers Michal Wajdeczko
@ 2026-07-23 20:37 ` Michal Wajdeczko
2026-07-23 20:37 ` [PATCH 04/19] drm/xe/log: Allow to emit SIGID dmesg/cper separately Michal Wajdeczko
` (19 subsequent siblings)
22 siblings, 0 replies; 37+ messages in thread
From: Michal Wajdeczko @ 2026-07-23 20:37 UTC (permalink / raw)
To: intel-xe; +Cc: Michal Wajdeczko, Rodrigo Vivi
There are only few CPER severity levels defined, add simple helper
for each of them, to avoid forcing developers to write full severity
name in every function call. Also, use xe_any helpers to provide
implicit conversion from compatible pointers to the pci_dev.
Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
---
drivers/gpu/drm/xe/xe_log.h | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)
diff --git a/drivers/gpu/drm/xe/xe_log.h b/drivers/gpu/drm/xe/xe_log.h
index d475e816ee0b..1d30d05eb311 100644
--- a/drivers/gpu/drm/xe/xe_log.h
+++ b/drivers/gpu/drm/xe/xe_log.h
@@ -9,6 +9,7 @@
#include <linux/cper.h>
#include "abi/xe_sigid_abi.h"
+#include "xe_any.h"
struct pci_dev;
@@ -17,4 +18,24 @@ void xe_log_emit(struct pci_dev *pdev, int cper_sev, enum xe_sigid sigid,
u32 component, u32 location, const void *data, size_t len,
const char *fmt, ...);
+#define xe_log_emit_from(any, sev, sig, comp, loc, data, len, fmt, args...) \
+ xe_log_emit(xe_any_to_pdev(any), (sev), (sig), (comp), (loc), \
+ (data), (len), fmt, ##args)
+
+#define xe_log_emit_fatal(any, sig, comp, loc, data, len, fmt, args...) \
+ xe_log_emit_from((any), CPER_SEV_FATAL, (sig), (comp), (loc), \
+ (data), (len), fmt, ##args)
+
+#define xe_log_emit_recoverable(any, sig, comp, loc, data, len, fmt, args...) \
+ xe_log_emit_from((any), CPER_SEV_RECOVERABLE, (sig), (comp), (loc), \
+ (data), (len), fmt, ##args)
+
+#define xe_log_emit_corrected(any, sig, comp, loc, data, len, fmt, args...) \
+ xe_log_emit_from((any), CPER_SEV_CORRECTED, (sig), (comp), (loc), \
+ (data), (len), fmt, ##args)
+
+#define xe_log_emit_info(any, sig, comp, loc, data, len, fmt, args...) \
+ xe_log_emit_from((any), CPER_SEV_INFORMATIONAL, (sig), (comp), (loc), \
+ (data), (len), fmt, ##args)
+
#endif
--
2.47.1
^ permalink raw reply related [flat|nested] 37+ messages in thread* [PATCH 04/19] drm/xe/log: Allow to emit SIGID dmesg/cper separately
2026-07-23 20:37 [PATCH 00/19] drm/xe: Add structured SIGID error logging infrastructure Michal Wajdeczko
` (2 preceding siblings ...)
2026-07-23 20:37 ` [PATCH 03/19] drm/xe/log: Add simple helpers for xe_log_emit Michal Wajdeczko
@ 2026-07-23 20:37 ` Michal Wajdeczko
2026-07-23 20:37 ` [PATCH 05/19] drm/xe/log: Add Tile/GT decorations for dmesg message Michal Wajdeczko
` (18 subsequent siblings)
22 siblings, 0 replies; 37+ messages in thread
From: Michal Wajdeczko @ 2026-07-23 20:37 UTC (permalink / raw)
To: intel-xe; +Cc: Michal Wajdeczko, Rodrigo Vivi
For the device-level errors, like a probe failure, the messages that
we want to put into dmesg and to store in the CPER record are the same.
But in case of the tile-level or GT-level errors, like a TDR, we will
want to decorate dmesg message with additional info about Tile/GT info,
like we do in our existing xe_gt|tile_err() macros, but we also don't
want this decoration be copied into a CPER record as location details
will likely be provided as separate parameters to xe_log() anyway.
Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
---
drivers/gpu/drm/xe/xe_log.c | 78 +++++++++++++++++++++++++++++++++++++
drivers/gpu/drm/xe/xe_log.h | 8 ++++
2 files changed, 86 insertions(+)
diff --git a/drivers/gpu/drm/xe/xe_log.c b/drivers/gpu/drm/xe/xe_log.c
index 7ea8d8cde0c1..c8ca0097c0b3 100644
--- a/drivers/gpu/drm/xe/xe_log.c
+++ b/drivers/gpu/drm/xe/xe_log.c
@@ -13,6 +13,36 @@ static void log_prep_cper(struct pci_dev *pdev, int cper_sev, enum xe_sigid sigi
/* TODO */
}
+/**
+ * xe_log_emit_cper() - Emit a structured SIGID CPER record
+ * @pdev: the &pci_dev device
+ * @cper_sev: CPER severity (CPER_SEV_FATAL, CPER_SEV_RECOVERABLE, ...)
+ * @sigid: signature identifier, see &enum xe_sigid
+ * @component: component identifer
+ * @location: location details of the @component
+ * @data: pointer to the additional details, or ERR_PTR, or NULL if not applicable
+ * @len: length of the @data in bytes, or 0 if not applicable
+ * @fmt: printf-style format string
+ * @...: format arguments
+ *
+ * Note: generation of the CPER record is a planned follow-up.
+ */
+void xe_log_emit_cper(struct pci_dev *pdev, int cper_sev, enum xe_sigid sigid,
+ u32 component, u32 location, const void *data, size_t len,
+ const char *fmt, ...)
+{
+ struct va_format vaf;
+ va_list args;
+
+ va_start(args, fmt);
+ vaf.fmt = fmt;
+ vaf.va = &args;
+
+ log_prep_cper(pdev, cper_sev, sigid, component, location, data, len, &vaf);
+
+ va_end(args);
+}
+
static bool is_hw_sigid(enum xe_sigid sigid)
{
return (int)sigid >= INTEL_SIGID_GPU_XE_HARDWARE_START;
@@ -84,6 +114,54 @@ static void log_prep_dmesg(struct pci_dev *pdev, int cper_sev, enum xe_sigid sig
sigid, sev_prefix, hwe_prefix, vaf);
}
+/**
+ * xe_log_emit_dmesg() - Emit a structured SIGID dmesg line only
+ * @pdev: the &pci_dev device
+ * @cper_sev: CPER severity (CPER_SEV_FATAL, CPER_SEV_RECOVERABLE, ...)
+ * @sigid: signature identifier, see &enum xe_sigid
+ * @data: pointer to the additional details, or ERR_PTR, or NULL if not applicable
+ * @len: length of the @data in bytes, or 0 if not applicable
+ * @fmt: printf-style format string
+ * @...: format arguments
+ *
+ * Emits a dmesg line that includes a single stable, machine-matchable token
+ * ``SIGID=<n>`` followed by the optional severity token (like ``FATAL``) and,
+ * when @data pointer is set, either the error printed with %pe or a packed hex
+ * dump of the @data binary blob. The dmesg line will also include printf-style
+ * text message.
+ *
+ * The dmesg line is emitted using the pci_err() (or pci_info() for informational)
+ * wrapper, so the driver's name and device's BDF (like ``xe 0000:03:00.0:``) are
+ * included.
+ *
+ * Note that we can't use regular xe_err()/xe_info() macros, as we might want to
+ * emit some logs during the early driver initialization, where do not have an
+ * xe_device, and thus the underlying drm_device, allocation yet.
+ *
+ * To mimics the drm_err() or drm_info() outputs, we will provide ``[drm]``
+ * decoration manually and for drm_err() it will include ``[drm] *ERROR*``
+ *
+ * Examples::
+ *
+ * <3> xe 0000:03:00.0: [drm] *ERROR* SIGID=104 FATAL (-EPROTO) Invalid GuC reply
+ * <3> xe 0000:03:00.0: [drm] *ERROR* SIGID=106 (-ETIMEDOUT) Engine 'rcs0' hung
+ * <6> xe 0000:03:00.0: [drm] SIGID=103 In survivability mode
+ */
+void xe_log_emit_dmesg(struct pci_dev *pdev, int cper_sev, enum xe_sigid sigid,
+ const void *data, size_t len, const char *fmt, ...)
+{
+ struct va_format vaf;
+ va_list args;
+
+ va_start(args, fmt);
+ vaf.fmt = fmt;
+ vaf.va = &args;
+
+ log_prep_dmesg(pdev, cper_sev, sigid, data, len, &vaf);
+
+ va_end(args);
+}
+
/**
* xe_log_emit() - Emit a structured SIGID log entry
* @pdev: the &pci_dev device
diff --git a/drivers/gpu/drm/xe/xe_log.h b/drivers/gpu/drm/xe/xe_log.h
index 1d30d05eb311..ebca8874a44d 100644
--- a/drivers/gpu/drm/xe/xe_log.h
+++ b/drivers/gpu/drm/xe/xe_log.h
@@ -18,6 +18,14 @@ void xe_log_emit(struct pci_dev *pdev, int cper_sev, enum xe_sigid sigid,
u32 component, u32 location, const void *data, size_t len,
const char *fmt, ...);
+__printf(8, 9)
+void xe_log_emit_cper(struct pci_dev *pdev, int cper_sev, enum xe_sigid sigid,
+ u32 component, u32 location, const void *data, size_t len,
+ const char *fmt, ...);
+__printf(6, 7)
+void xe_log_emit_dmesg(struct pci_dev *pdev, int cper_sev, enum xe_sigid sigid,
+ const void *data, size_t len, const char *fmt, ...);
+
#define xe_log_emit_from(any, sev, sig, comp, loc, data, len, fmt, args...) \
xe_log_emit(xe_any_to_pdev(any), (sev), (sig), (comp), (loc), \
(data), (len), fmt, ##args)
--
2.47.1
^ permalink raw reply related [flat|nested] 37+ messages in thread* [PATCH 05/19] drm/xe/log: Add Tile/GT decorations for dmesg message
2026-07-23 20:37 [PATCH 00/19] drm/xe: Add structured SIGID error logging infrastructure Michal Wajdeczko
` (3 preceding siblings ...)
2026-07-23 20:37 ` [PATCH 04/19] drm/xe/log: Allow to emit SIGID dmesg/cper separately Michal Wajdeczko
@ 2026-07-23 20:37 ` Michal Wajdeczko
2026-07-23 20:37 ` [PATCH 06/19] drm/xe/log: Introduce structured log components Michal Wajdeczko
` (17 subsequent siblings)
22 siblings, 0 replies; 37+ messages in thread
From: Michal Wajdeczko @ 2026-07-23 20:37 UTC (permalink / raw)
To: intel-xe; +Cc: Michal Wajdeczko, Rodrigo Vivi
Similar to what we do in our regular xe_gt|tile_err() macros,
decorate dmesg message with info about Tile/GT identifiers.
Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
---
drivers/gpu/drm/xe/xe_log.h | 59 +++++++++++++++++++++++++++++++++++--
1 file changed, 56 insertions(+), 3 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_log.h b/drivers/gpu/drm/xe/xe_log.h
index ebca8874a44d..5d3f0ef4ecca 100644
--- a/drivers/gpu/drm/xe/xe_log.h
+++ b/drivers/gpu/drm/xe/xe_log.h
@@ -10,6 +10,9 @@
#include "abi/xe_sigid_abi.h"
#include "xe_any.h"
+#include "xe_gt_printk.h"
+#include "xe_printk.h"
+#include "xe_tile_printk.h"
struct pci_dev;
@@ -26,9 +29,59 @@ __printf(6, 7)
void xe_log_emit_dmesg(struct pci_dev *pdev, int cper_sev, enum xe_sigid sigid,
const void *data, size_t len, const char *fmt, ...);
-#define xe_log_emit_from(any, sev, sig, comp, loc, data, len, fmt, args...) \
- xe_log_emit(xe_any_to_pdev(any), (sev), (sig), (comp), (loc), \
- (data), (len), fmt, ##args)
+#define xe_log_emit_gt_dmesg(gt, sev, sigid, data, len, fmt, args...) do { \
+ struct xe_gt *__gt__ = (gt); \
+ xe_log_emit_tile_dmesg((__gt__)->tile, (sev), (sigid), (data), (len), \
+ __XE_GT_PRINTK_FMT((__gt__), fmt, ##args)); \
+} while (0)
+
+#define xe_log_emit_tile_dmesg(tile, sev, sigid, data, len, fmt, args...) do { \
+ struct xe_tile *__tile__= (tile); \
+ xe_log_emit_xe_dmesg((__tile__)->xe, (sev), (sigid), (data), (len), \
+ __XE_TILE_PRINTK_FMT((__tile__), fmt, ##args)); \
+} while (0)
+
+#define xe_log_emit_xe_dmesg(xe, sev, sigid, data, len, fmt, args...) do { \
+ struct xe_device *__xe__ = (xe); \
+ xe_log_emit_dmesg(xe_any_to_pdev(__xe__), (sev), (sigid), (data), (len), \
+ __XE_PRINTK_FMT((__xe__), fmt, ##args)); \
+} while (0)
+
+#define xe_log_emit_dmesg_from(any, sev, sig, data, len, fmt, args...) do { \
+ typeof(any) __any_ = (any); \
+ struct pci_dev *__pdev_ = xe_any_to_pdev(__any_); \
+ struct xe_tile *__tile_ = xe_any_if_tile(__any_); \
+ struct xe_device *__xe_ = xe_any_if_xe(__any_); \
+ struct xe_gt *__gt_ = xe_any_if_gt(__any_); \
+ int __sev_ = (sev); \
+ int __sig_ = (sig); \
+ const void *__data_ = (data); \
+ size_t __len_ = (len); \
+ if (__gt_) \
+ xe_log_emit_gt_dmesg(__gt_, __sev_, __sig_, \
+ __data_, __len_, fmt, ##args); \
+ else if (__tile_) \
+ xe_log_emit_tile_dmesg(__tile_, __sev_, __sig_, \
+ __data_, __len_, fmt, ##args); \
+ else if (__xe_) \
+ xe_log_emit_xe_dmesg(__xe_, __sev_, __sig_, \
+ __data_, __len_, fmt, ##args); \
+ else if (!__gt_ && !__tile_ && !__xe_) \
+ xe_log_emit_dmesg(__pdev_, __sev_, __sig_, \
+ __data_, __len_, fmt, ##args); \
+} while (0)
+
+#define xe_log_emit_from(any, sev, sig, comp, loc, data, len, fmt, args...) do { \
+ typeof(any) ___any = (any); \
+ struct pci_dev *___pdev = xe_any_to_pdev(___any); \
+ int ___sev = (sev); \
+ int ___sig = (sig); \
+ const void *___data = (data); \
+ size_t ___len = (len); \
+ xe_log_emit_dmesg_from(___any, ___sev, ___sig, ___data, ___len, fmt, ##args); \
+ xe_log_emit_cper(___pdev, ___sev, ___sig, (comp), (loc), \
+ ___data, ___len, fmt, ##args); \
+} while (0)
#define xe_log_emit_fatal(any, sig, comp, loc, data, len, fmt, args...) \
xe_log_emit_from((any), CPER_SEV_FATAL, (sig), (comp), (loc), \
--
2.47.1
^ permalink raw reply related [flat|nested] 37+ messages in thread* [PATCH 06/19] drm/xe/log: Introduce structured log components
2026-07-23 20:37 [PATCH 00/19] drm/xe: Add structured SIGID error logging infrastructure Michal Wajdeczko
` (4 preceding siblings ...)
2026-07-23 20:37 ` [PATCH 05/19] drm/xe/log: Add Tile/GT decorations for dmesg message Michal Wajdeczko
@ 2026-07-23 20:37 ` Michal Wajdeczko
2026-07-24 13:28 ` Aravind Iddamsetty
2026-07-23 20:37 ` [PATCH 07/19] drm/xe/log: Add component based SIGID log helper Michal Wajdeczko
` (16 subsequent siblings)
22 siblings, 1 reply; 37+ messages in thread
From: Michal Wajdeczko @ 2026-07-23 20:37 UTC (permalink / raw)
To: intel-xe
Cc: Michal Wajdeczko, Rodrigo Vivi, Aravind Iddamsetty,
Mallesh Koujalagi, Raag Jadav, Riana Tauro
Introduce structured identifiers for each component type that
could emit a SIGID log entry and for their locations. We plan
to store those IDs in the CPER records for better filtering.
Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
---
Cc: Aravind Iddamsetty <aravind.iddamsetty@intel.com>
Cc: Mallesh Koujalagi <mallesh.koujalagi@intel.com>
Cc: Raag Jadav <raag.jadav@intel.com>
Cc: Riana Tauro <riana.tauro@intel.com>
---
drivers/gpu/drm/xe/abi/xe_log_abi.h | 181 ++++++++++++++++++++++++++++
1 file changed, 181 insertions(+)
create mode 100644 drivers/gpu/drm/xe/abi/xe_log_abi.h
diff --git a/drivers/gpu/drm/xe/abi/xe_log_abi.h b/drivers/gpu/drm/xe/abi/xe_log_abi.h
new file mode 100644
index 000000000000..cde86c6c08f2
--- /dev/null
+++ b/drivers/gpu/drm/xe/abi/xe_log_abi.h
@@ -0,0 +1,181 @@
+/* SPDX-License-Identifier: MIT */
+/*
+ * Copyright © 2026 Intel Corporation
+ */
+
+#ifndef _ABI_XE_LOG_ABI_H_
+#define _ABI_XE_LOG_ABI_H_
+
+#include <linux/bits.h>
+#include <linux/bitfield.h>
+
+#include "abi/xe_sigid_abi.h"
+
+/**
+ * enum xe_log_component_bits - bits for components structure definitions
+ *
+ * Component identifiers are structured based on::
+ *
+ * COMPONENT = TYPE(8b).ID(8b)
+ *
+ * and the structure looks like this::
+ *
+ * ├── SYSTEM(0)
+ * │ └── ...
+ * ├── DRIVER(1)
+ * │ └── ...
+ * ├── FEATURE(2)
+ * │ └── ...
+ * ├── FIRMWARE(4)
+ * │ └── ...
+ * └── HARDWARE(8)
+ * └── ...
+ *
+ * Examples::
+ *
+ * COMPONENT(0.type) = SYSTEM.type = system component
+ * COMPONENT(1.type) = DRIVER.type = driver core component
+ * COMPONENT(3.type) = DRIVER_FEATURE.type = driver feature
+ * COMPONENT(5.type) = DRIVER_FIRMWARE.type = firmware driver component
+ * COMPONENT(9.type) = DRIVER_HARDWARE.type = hardware drivr component
+ *
+ */
+enum xe_log_component_bits {
+ /* private: */
+ XE_LOG_COMPONENT_CLASS_MASK = GENMASK_U16(7, 0),
+ XE_LOG_COMPONENT_TYPE_MASK = GENMASK_U16(15, 8),
+ /* private: */
+ XE_LOG_COMPONENT_CLASS_SYSTEM = 0u,
+ XE_LOG_COMPONENT_CLASS_DRIVER = 1u,
+ XE_LOG_COMPONENT_CLASS_FEATURE = 2u,
+ XE_LOG_COMPONENT_CLASS_FIRMWARE = 4u,
+ XE_LOG_COMPONENT_CLASS_HARDWARE = 8u,
+ XE_LOG_COMPONENT_CLASS_DRIVER_FEATURE = XE_LOG_COMPONENT_CLASS_DRIVER |
+ XE_LOG_COMPONENT_CLASS_FEATURE,
+ XE_LOG_COMPONENT_CLASS_DRIVER_FIRMWARE = XE_LOG_COMPONENT_CLASS_DRIVER |
+ XE_LOG_COMPONENT_CLASS_FIRMWARE,
+ XE_LOG_COMPONENT_CLASS_DRIVER_HARDWARE = XE_LOG_COMPONENT_CLASS_DRIVER |
+ XE_LOG_COMPONENT_CLASS_HARDWARE,
+};
+
+#define MAKE_XE_LOG_COMPONENT(_CLASS, type) \
+ (FIELD_PREP_CONST(XE_LOG_COMPONENT_CLASS_MASK, \
+ XE_LOG_COMPONENT_CLASS_##_CLASS) | \
+ FIELD_PREP_CONST(XE_LOG_COMPONENT_TYPE_MASK, (type)))
+
+/**
+ * enum xe_log_location_bits - bits for location structure definitions
+ *
+ * Location identifiers are structured based on::
+ *
+ * LOCATION = TYPE(8b).ID(8b)
+ *
+ * and the structure looks like this::
+ *
+ * ├── DEVICE(0)
+ * │ └── MBZ(0)
+ * ├── TILE(1)
+ * │ ├── Tile0(0)
+ * │ ├── ...
+ * │ └── TileN(n)
+ * ├── GT(1)
+ * │ ├── GT0(0)
+ * │ ├── ...
+ * │ └── GTn(n)
+ * └── ...
+ *
+ * Examples::
+ *
+ * LOCATION(0.0) = DEVICE.0 = "Device"
+ * LOCATION(1.2) = TILE.2 = "Tile2"
+ * LOCATION(2.3) = GT.3 = "GT3"
+ *
+ */
+enum xe_log_location_bits {
+ /* private: */
+ XE_LOG_LOCATION_TYPE_MASK = GENMASK_U16(7, 0),
+ XE_LOG_LOCATION_ID_MASK = GENMASK_U16(15, 8),
+ /* */
+ XE_LOG_LOCATION_TYPE_DEVICE = 0u,
+ XE_LOG_LOCATION_TYPE_TILE = 1u,
+ XE_LOG_LOCATION_TYPE_GT = 2u,
+};
+
+#define PREP_XE_LOG_LOCATION(type, id) \
+ (FIELD_PREP(XE_LOG_LOCATION_TYPE_MASK, (type)) | \
+ FIELD_PREP(XE_LOG_LOCATION_ID_MASK, (id)))
+
+#define MAKE_XE_LOG_LOCATION(_TYPE, id) \
+ PREP_XE_LOG_LOCATION(XE_LOG_LOCATION_TYPE_##_TYPE, (id))
+
+/**
+ * DEFINE_XE_LOG_COMPONENTS() - Define log components.
+ * @define: name of the inner macro to expand.
+ *
+ * Use this super macro to define custom code for the log components.
+ * The following parameters are available for each component::
+ *
+ * define(CLASS, ID, TAG, SIGID, NAME)
+ *
+ * where:
+ *
+ * @ID is the unique component identifier within CLASS.SUBCLASS.CATEGORY
+ * @TAG is unique component tag (across all components)
+ * @SIGID is the default xe_sigid for the component (without the XE_SIGID_ prefix)
+ */
+#define DEFINE_XE_LOG_COMPONENTS(define) \
+ /* */ \
+ define(SYSTEM, 1, PCI, SW, "Linux PCI Subsystem") \
+ define(SYSTEM, 2, DRM, SW, "DRM") \
+ /* */ \
+ define(DRIVER, 1, XE, SW, "Xe Driver") \
+ define(DRIVER, 2, PROBE, PROBE, "Driver Initialization") \
+ define(DRIVER, 3, WEDGED, WEDGED, "Device Malfunction") \
+ define(DRIVER, 4, RTP, SW, "Register Table Processing") \
+ define(DRIVER, 5, WA, SW, "Workarounds") \
+ define(DRIVER, 6, PAGEFAULT, MEM_FAULT, "Page Fault") \
+ /* */ \
+ define(DRIVER_HARDWARE, 1, REGS, IO_BUS, "Registers") \
+ define(DRIVER_HARDWARE, 2, GGTT, IO_BUS, "Global GTT") \
+ define(DRIVER_HARDWARE, 3, GT, GT_TDR, "Graphics Technology") \
+ define(DRIVER_HARDWARE, 4, LMTT, IO_BUS, "LMEM Translation Table") \
+ define(DRIVER_HARDWARE, 5, MEMIRQ, IO_BUS, "Memory Based IRQ") \
+ /* */ \
+ define(DRIVER_FEATURE, 1, PF, SW, "SR-IOV Physical Function") \
+ define(DRIVER_FEATURE, 2, VF, SW, "SR-IOV Virtual Function") \
+ define(DRIVER_FEATURE, 3, SURVIVABILITY, SURVIVABILITY, "Survivability") \
+ define(DRIVER_FEATURE, 4, RAS, SW, "Reliability, Accessibility, Serviceability") \
+ /* */ \
+ define(DRIVER_FIRMWARE, 1, GUC, RUNTIME_FW, "GuC") \
+ define(DRIVER_FIRMWARE, 2, HUC, RUNTIME_FW, "HuC") \
+ define(DRIVER_FIRMWARE, 3, GSC, RUNTIME_FW, "GSC") \
+ define(DRIVER_FIRMWARE, 16, PCODE, DEVICE_FW, "PCode") \
+ define(DRIVER_FIRMWARE, 17, SYSCTRL, DEVICE_FW, "System Controller") \
+ /* eod */
+
+/**
+ * enum xe_log_component_tags - TAGs of all supported components
+ */
+enum xe_log_component_tags {
+ /* private: */
+#define MAKE_XE_LOG_COMPONENT_ENUM(_CLASS, _ID, _TAG, _SIG, _NAME) \
+ XE_LOG_COMPONENT_##_TAG = MAKE_XE_LOG_COMPONENT(_CLASS, (_ID)), \
+ XE_LOG_COMPONENT_##_CLASS##_##_ID = XE_LOG_COMPONENT_##_TAG, \
+ /* eod */
+ DEFINE_XE_LOG_COMPONENTS(MAKE_XE_LOG_COMPONENT_ENUM)
+#undef MAKE_XE_LOG_COMPONENT_ENUM
+};
+
+/**
+ * enum xe_log_component_sigids - SIGIDs of all supported components
+ */
+enum xe_log_component_sigids {
+ /* private: */
+#define MAKE_XE_LOG_COMPONENT_SIGID(_CLASS, _ID, _TAG, _SIG, _NAME) \
+ XE_LOG_COMPONENT_##_TAG##_SIGID = XE_SIGID_##_SIG, \
+ /* eod */
+ DEFINE_XE_LOG_COMPONENTS(MAKE_XE_LOG_COMPONENT_SIGID)
+#undef MAKE_XE_LOG_COMPONENT_SIGID
+};
+
+#endif
--
2.47.1
^ permalink raw reply related [flat|nested] 37+ messages in thread* Re: [PATCH 06/19] drm/xe/log: Introduce structured log components
2026-07-23 20:37 ` [PATCH 06/19] drm/xe/log: Introduce structured log components Michal Wajdeczko
@ 2026-07-24 13:28 ` Aravind Iddamsetty
2026-07-24 14:45 ` Michal Wajdeczko
0 siblings, 1 reply; 37+ messages in thread
From: Aravind Iddamsetty @ 2026-07-24 13:28 UTC (permalink / raw)
To: Michal Wajdeczko, intel-xe
Cc: Rodrigo Vivi, Aravind Iddamsetty, Mallesh Koujalagi, Raag Jadav,
Riana Tauro, Yoni Levitt
On 24-07-2026 02:07, Michal Wajdeczko wrote:
> Introduce structured identifiers for each component type that
> could emit a SIGID log entry and for their locations. We plan
> to store those IDs in the CPER records for better filtering.
>
> Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
> Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
> ---
> Cc: Aravind Iddamsetty <aravind.iddamsetty@intel.com>
> Cc: Mallesh Koujalagi <mallesh.koujalagi@intel.com>
> Cc: Raag Jadav <raag.jadav@intel.com>
> Cc: Riana Tauro <riana.tauro@intel.com>
> ---
> drivers/gpu/drm/xe/abi/xe_log_abi.h | 181 ++++++++++++++++++++++++++++
> 1 file changed, 181 insertions(+)
> create mode 100644 drivers/gpu/drm/xe/abi/xe_log_abi.h
>
> diff --git a/drivers/gpu/drm/xe/abi/xe_log_abi.h b/drivers/gpu/drm/xe/abi/xe_log_abi.h
> new file mode 100644
> index 000000000000..cde86c6c08f2
> --- /dev/null
> +++ b/drivers/gpu/drm/xe/abi/xe_log_abi.h
> @@ -0,0 +1,181 @@
> +/* SPDX-License-Identifier: MIT */
> +/*
> + * Copyright © 2026 Intel Corporation
> + */
> +
> +#ifndef _ABI_XE_LOG_ABI_H_
> +#define _ABI_XE_LOG_ABI_H_
> +
> +#include <linux/bits.h>
> +#include <linux/bitfield.h>
> +
> +#include "abi/xe_sigid_abi.h"
> +
> +/**
> + * enum xe_log_component_bits - bits for components structure definitions
> + *
> + * Component identifiers are structured based on::
> + *
> + * COMPONENT = TYPE(8b).ID(8b)
> + *
> + * and the structure looks like this::
> + *
> + * ├── SYSTEM(0)
> + * │ └── ...
> + * ├── DRIVER(1)
> + * │ └── ...
> + * ├── FEATURE(2)
> + * │ └── ...
> + * ├── FIRMWARE(4)
> + * │ └── ...
> + * └── HARDWARE(8)
> + * └── ...
> + *
> + * Examples::
> + *
> + * COMPONENT(0.type) = SYSTEM.type = system component
> + * COMPONENT(1.type) = DRIVER.type = driver core component
> + * COMPONENT(3.type) = DRIVER_FEATURE.type = driver feature
> + * COMPONENT(5.type) = DRIVER_FIRMWARE.type = firmware driver component
> + * COMPONENT(9.type) = DRIVER_HARDWARE.type = hardware drivr component
> + *
> + */
> +enum xe_log_component_bits {
> + /* private: */
> + XE_LOG_COMPONENT_CLASS_MASK = GENMASK_U16(7, 0),
> + XE_LOG_COMPONENT_TYPE_MASK = GENMASK_U16(15, 8),
> + /* private: */
> + XE_LOG_COMPONENT_CLASS_SYSTEM = 0u,
> + XE_LOG_COMPONENT_CLASS_DRIVER = 1u,
> + XE_LOG_COMPONENT_CLASS_FEATURE = 2u,
> + XE_LOG_COMPONENT_CLASS_FIRMWARE = 4u,
> + XE_LOG_COMPONENT_CLASS_HARDWARE = 8u,
> + XE_LOG_COMPONENT_CLASS_DRIVER_FEATURE = XE_LOG_COMPONENT_CLASS_DRIVER |
> + XE_LOG_COMPONENT_CLASS_FEATURE,
> + XE_LOG_COMPONENT_CLASS_DRIVER_FIRMWARE = XE_LOG_COMPONENT_CLASS_DRIVER |
> + XE_LOG_COMPONENT_CLASS_FIRMWARE,
> + XE_LOG_COMPONENT_CLASS_DRIVER_HARDWARE = XE_LOG_COMPONENT_CLASS_DRIVER |
> + XE_LOG_COMPONENT_CLASS_HARDWARE,
> +};
> +
> +#define MAKE_XE_LOG_COMPONENT(_CLASS, type) \
> + (FIELD_PREP_CONST(XE_LOG_COMPONENT_CLASS_MASK, \
> + XE_LOG_COMPONENT_CLASS_##_CLASS) | \
> + FIELD_PREP_CONST(XE_LOG_COMPONENT_TYPE_MASK, (type)))
> +
> +/**
> + * enum xe_log_location_bits - bits for location structure definitions
> + *
> + * Location identifiers are structured based on::
> + *
> + * LOCATION = TYPE(8b).ID(8b)
> + *
> + * and the structure looks like this::
> + *
> + * ├── DEVICE(0)
> + * │ └── MBZ(0)
> + * ├── TILE(1)
> + * │ ├── Tile0(0)
> + * │ ├── ...
> + * │ └── TileN(n)
> + * ├── GT(1)
> + * │ ├── GT0(0)
> + * │ ├── ...
> + * │ └── GTn(n)
> + * └── ...
> + *
> + * Examples::
> + *
> + * LOCATION(0.0) = DEVICE.0 = "Device"
> + * LOCATION(1.2) = TILE.2 = "Tile2"
> + * LOCATION(2.3) = GT.3 = "GT3"
> + *
> + */
> +enum xe_log_location_bits {
> + /* private: */
> + XE_LOG_LOCATION_TYPE_MASK = GENMASK_U16(7, 0),
> + XE_LOG_LOCATION_ID_MASK = GENMASK_U16(15, 8),
> + /* */
> + XE_LOG_LOCATION_TYPE_DEVICE = 0u,
> + XE_LOG_LOCATION_TYPE_TILE = 1u,
> + XE_LOG_LOCATION_TYPE_GT = 2u,
> +};
> +
> +#define PREP_XE_LOG_LOCATION(type, id) \
> + (FIELD_PREP(XE_LOG_LOCATION_TYPE_MASK, (type)) | \
> + FIELD_PREP(XE_LOG_LOCATION_ID_MASK, (id)))
> +
> +#define MAKE_XE_LOG_LOCATION(_TYPE, id) \
> + PREP_XE_LOG_LOCATION(XE_LOG_LOCATION_TYPE_##_TYPE, (id))
> +
> +/**
> + * DEFINE_XE_LOG_COMPONENTS() - Define log components.
> + * @define: name of the inner macro to expand.
> + *
> + * Use this super macro to define custom code for the log components.
> + * The following parameters are available for each component::
> + *
> + * define(CLASS, ID, TAG, SIGID, NAME)
> + *
> + * where:
> + *
> + * @ID is the unique component identifier within CLASS.SUBCLASS.CATEGORY
> + * @TAG is unique component tag (across all components)
> + * @SIGID is the default xe_sigid for the component (without the XE_SIGID_ prefix)
> + */
> +#define DEFINE_XE_LOG_COMPONENTS(define) \
> + /* */ \
> + define(SYSTEM, 1, PCI, SW, "Linux PCI Subsystem") \
> + define(SYSTEM, 2, DRM, SW, "DRM") \
> + /* */ \
> + define(DRIVER, 1, XE, SW, "Xe Driver") \
> + define(DRIVER, 2, PROBE, PROBE, "Driver Initialization") \
> + define(DRIVER, 3, WEDGED, WEDGED, "Device Malfunction") \
> + define(DRIVER, 4, RTP, SW, "Register Table Processing") \
> + define(DRIVER, 5, WA, SW, "Workarounds") \
what is SIGID_SW supposed to indicate?
In what cases XE component shall be used?
Thanks,
Aravind.
> + define(DRIVER, 6, PAGEFAULT, MEM_FAULT, "Page Fault") \
> + /* */ \
> + define(DRIVER_HARDWARE, 1, REGS, IO_BUS, "Registers") \
> + define(DRIVER_HARDWARE, 2, GGTT, IO_BUS, "Global GTT") \
> + define(DRIVER_HARDWARE, 3, GT, GT_TDR, "Graphics Technology") \
> + define(DRIVER_HARDWARE, 4, LMTT, IO_BUS, "LMEM Translation Table") \
> + define(DRIVER_HARDWARE, 5, MEMIRQ, IO_BUS, "Memory Based IRQ") \
> + /* */ \
> + define(DRIVER_FEATURE, 1, PF, SW, "SR-IOV Physical Function") \
> + define(DRIVER_FEATURE, 2, VF, SW, "SR-IOV Virtual Function") \
> + define(DRIVER_FEATURE, 3, SURVIVABILITY, SURVIVABILITY, "Survivability") \
> + define(DRIVER_FEATURE, 4, RAS, SW, "Reliability, Accessibility, Serviceability") \
> + /* */ \
> + define(DRIVER_FIRMWARE, 1, GUC, RUNTIME_FW, "GuC") \
> + define(DRIVER_FIRMWARE, 2, HUC, RUNTIME_FW, "HuC") \
> + define(DRIVER_FIRMWARE, 3, GSC, RUNTIME_FW, "GSC") \
> + define(DRIVER_FIRMWARE, 16, PCODE, DEVICE_FW, "PCode") \
> + define(DRIVER_FIRMWARE, 17, SYSCTRL, DEVICE_FW, "System Controller") \
> + /* eod */
> +
> +/**
> + * enum xe_log_component_tags - TAGs of all supported components
> + */
> +enum xe_log_component_tags {
> + /* private: */
> +#define MAKE_XE_LOG_COMPONENT_ENUM(_CLASS, _ID, _TAG, _SIG, _NAME) \
> + XE_LOG_COMPONENT_##_TAG = MAKE_XE_LOG_COMPONENT(_CLASS, (_ID)), \
> + XE_LOG_COMPONENT_##_CLASS##_##_ID = XE_LOG_COMPONENT_##_TAG, \
> + /* eod */
> + DEFINE_XE_LOG_COMPONENTS(MAKE_XE_LOG_COMPONENT_ENUM)
> +#undef MAKE_XE_LOG_COMPONENT_ENUM
> +};
> +
> +/**
> + * enum xe_log_component_sigids - SIGIDs of all supported components
> + */
> +enum xe_log_component_sigids {
> + /* private: */
> +#define MAKE_XE_LOG_COMPONENT_SIGID(_CLASS, _ID, _TAG, _SIG, _NAME) \
> + XE_LOG_COMPONENT_##_TAG##_SIGID = XE_SIGID_##_SIG, \
> + /* eod */
> + DEFINE_XE_LOG_COMPONENTS(MAKE_XE_LOG_COMPONENT_SIGID)
> +#undef MAKE_XE_LOG_COMPONENT_SIGID
> +};
> +
> +#endif
^ permalink raw reply [flat|nested] 37+ messages in thread* Re: [PATCH 06/19] drm/xe/log: Introduce structured log components
2026-07-24 13:28 ` Aravind Iddamsetty
@ 2026-07-24 14:45 ` Michal Wajdeczko
0 siblings, 0 replies; 37+ messages in thread
From: Michal Wajdeczko @ 2026-07-24 14:45 UTC (permalink / raw)
To: Aravind Iddamsetty, intel-xe
Cc: Rodrigo Vivi, Aravind Iddamsetty, Mallesh Koujalagi, Raag Jadav,
Riana Tauro, Yoni Levitt
On 7/24/2026 3:28 PM, Aravind Iddamsetty wrote:
>
> On 24-07-2026 02:07, Michal Wajdeczko wrote:
>> Introduce structured identifiers for each component type that
>> could emit a SIGID log entry and for their locations. We plan
>> to store those IDs in the CPER records for better filtering.
>>
>> Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
>> Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
>> ---
>> Cc: Aravind Iddamsetty <aravind.iddamsetty@intel.com>
>> Cc: Mallesh Koujalagi <mallesh.koujalagi@intel.com>
>> Cc: Raag Jadav <raag.jadav@intel.com>
>> Cc: Riana Tauro <riana.tauro@intel.com>
>> ---
>> drivers/gpu/drm/xe/abi/xe_log_abi.h | 181 ++++++++++++++++++++++++++++
>> 1 file changed, 181 insertions(+)
>> create mode 100644 drivers/gpu/drm/xe/abi/xe_log_abi.h
>>
>> diff --git a/drivers/gpu/drm/xe/abi/xe_log_abi.h b/drivers/gpu/drm/xe/abi/xe_log_abi.h
>> new file mode 100644
>> index 000000000000..cde86c6c08f2
>> --- /dev/null
>> +++ b/drivers/gpu/drm/xe/abi/xe_log_abi.h
>> @@ -0,0 +1,181 @@
>> +/* SPDX-License-Identifier: MIT */
>> +/*
>> + * Copyright © 2026 Intel Corporation
>> + */
>> +
>> +#ifndef _ABI_XE_LOG_ABI_H_
>> +#define _ABI_XE_LOG_ABI_H_
>> +
>> +#include <linux/bits.h>
>> +#include <linux/bitfield.h>
>> +
>> +#include "abi/xe_sigid_abi.h"
>> +
>> +/**
>> + * enum xe_log_component_bits - bits for components structure definitions
>> + *
>> + * Component identifiers are structured based on::
>> + *
>> + * COMPONENT = TYPE(8b).ID(8b)
>> + *
>> + * and the structure looks like this::
>> + *
>> + * ├── SYSTEM(0)
>> + * │ └── ...
>> + * ├── DRIVER(1)
>> + * │ └── ...
>> + * ├── FEATURE(2)
>> + * │ └── ...
>> + * ├── FIRMWARE(4)
>> + * │ └── ...
>> + * └── HARDWARE(8)
>> + * └── ...
>> + *
>> + * Examples::
>> + *
>> + * COMPONENT(0.type) = SYSTEM.type = system component
>> + * COMPONENT(1.type) = DRIVER.type = driver core component
>> + * COMPONENT(3.type) = DRIVER_FEATURE.type = driver feature
>> + * COMPONENT(5.type) = DRIVER_FIRMWARE.type = firmware driver component
>> + * COMPONENT(9.type) = DRIVER_HARDWARE.type = hardware drivr component
>> + *
>> + */
>> +enum xe_log_component_bits {
>> + /* private: */
>> + XE_LOG_COMPONENT_CLASS_MASK = GENMASK_U16(7, 0),
>> + XE_LOG_COMPONENT_TYPE_MASK = GENMASK_U16(15, 8),
>> + /* private: */
>> + XE_LOG_COMPONENT_CLASS_SYSTEM = 0u,
>> + XE_LOG_COMPONENT_CLASS_DRIVER = 1u,
>> + XE_LOG_COMPONENT_CLASS_FEATURE = 2u,
>> + XE_LOG_COMPONENT_CLASS_FIRMWARE = 4u,
>> + XE_LOG_COMPONENT_CLASS_HARDWARE = 8u,
>> + XE_LOG_COMPONENT_CLASS_DRIVER_FEATURE = XE_LOG_COMPONENT_CLASS_DRIVER |
>> + XE_LOG_COMPONENT_CLASS_FEATURE,
>> + XE_LOG_COMPONENT_CLASS_DRIVER_FIRMWARE = XE_LOG_COMPONENT_CLASS_DRIVER |
>> + XE_LOG_COMPONENT_CLASS_FIRMWARE,
>> + XE_LOG_COMPONENT_CLASS_DRIVER_HARDWARE = XE_LOG_COMPONENT_CLASS_DRIVER |
>> + XE_LOG_COMPONENT_CLASS_HARDWARE,
>> +};
>> +
>> +#define MAKE_XE_LOG_COMPONENT(_CLASS, type) \
>> + (FIELD_PREP_CONST(XE_LOG_COMPONENT_CLASS_MASK, \
>> + XE_LOG_COMPONENT_CLASS_##_CLASS) | \
>> + FIELD_PREP_CONST(XE_LOG_COMPONENT_TYPE_MASK, (type)))
>> +
>> +/**
>> + * enum xe_log_location_bits - bits for location structure definitions
>> + *
>> + * Location identifiers are structured based on::
>> + *
>> + * LOCATION = TYPE(8b).ID(8b)
>> + *
>> + * and the structure looks like this::
>> + *
>> + * ├── DEVICE(0)
>> + * │ └── MBZ(0)
>> + * ├── TILE(1)
>> + * │ ├── Tile0(0)
>> + * │ ├── ...
>> + * │ └── TileN(n)
>> + * ├── GT(1)
>> + * │ ├── GT0(0)
>> + * │ ├── ...
>> + * │ └── GTn(n)
>> + * └── ...
>> + *
>> + * Examples::
>> + *
>> + * LOCATION(0.0) = DEVICE.0 = "Device"
>> + * LOCATION(1.2) = TILE.2 = "Tile2"
>> + * LOCATION(2.3) = GT.3 = "GT3"
>> + *
>> + */
>> +enum xe_log_location_bits {
>> + /* private: */
>> + XE_LOG_LOCATION_TYPE_MASK = GENMASK_U16(7, 0),
>> + XE_LOG_LOCATION_ID_MASK = GENMASK_U16(15, 8),
>> + /* */
>> + XE_LOG_LOCATION_TYPE_DEVICE = 0u,
>> + XE_LOG_LOCATION_TYPE_TILE = 1u,
>> + XE_LOG_LOCATION_TYPE_GT = 2u,
>> +};
>> +
>> +#define PREP_XE_LOG_LOCATION(type, id) \
>> + (FIELD_PREP(XE_LOG_LOCATION_TYPE_MASK, (type)) | \
>> + FIELD_PREP(XE_LOG_LOCATION_ID_MASK, (id)))
>> +
>> +#define MAKE_XE_LOG_LOCATION(_TYPE, id) \
>> + PREP_XE_LOG_LOCATION(XE_LOG_LOCATION_TYPE_##_TYPE, (id))
>> +
>> +/**
>> + * DEFINE_XE_LOG_COMPONENTS() - Define log components.
>> + * @define: name of the inner macro to expand.
>> + *
>> + * Use this super macro to define custom code for the log components.
>> + * The following parameters are available for each component::
>> + *
>> + * define(CLASS, ID, TAG, SIGID, NAME)
>> + *
>> + * where:
>> + *
>> + * @ID is the unique component identifier within CLASS.SUBCLASS.CATEGORY
>> + * @TAG is unique component tag (across all components)
>> + * @SIGID is the default xe_sigid for the component (without the XE_SIGID_ prefix)
>> + */
>> +#define DEFINE_XE_LOG_COMPONENTS(define) \
>> + /* */ \
>> + define(SYSTEM, 1, PCI, SW, "Linux PCI Subsystem") \
>> + define(SYSTEM, 2, DRM, SW, "DRM") \
>> + /* */ \
>> + define(DRIVER, 1, XE, SW, "Xe Driver") \
[here]
>> + define(DRIVER, 2, PROBE, PROBE, "Driver Initialization") \
>> + define(DRIVER, 3, WEDGED, WEDGED, "Device Malfunction") \
>> + define(DRIVER, 4, RTP, SW, "Register Table Processing") \
>> + define(DRIVER, 5, WA, SW, "Workarounds") \
>
> what is SIGID_SW supposed to indicate?
this is a general signature of errors in the driver software components for which we don't have a better/unique SIGID yet
(and I assume this question refers to enum definition included in patch 1/19)
>
> In what cases XE component shall be used?
in case we don't have a better/unique component definition yet,
or it is too small component to deserve an unique component id
>
> Thanks,
> Aravind.
>> + define(DRIVER, 6, PAGEFAULT, MEM_FAULT, "Page Fault") \
>> + /* */ \
>> + define(DRIVER_HARDWARE, 1, REGS, IO_BUS, "Registers") \
>> + define(DRIVER_HARDWARE, 2, GGTT, IO_BUS, "Global GTT") \
>> + define(DRIVER_HARDWARE, 3, GT, GT_TDR, "Graphics Technology") \
>> + define(DRIVER_HARDWARE, 4, LMTT, IO_BUS, "LMEM Translation Table") \
>> + define(DRIVER_HARDWARE, 5, MEMIRQ, IO_BUS, "Memory Based IRQ") \
>> + /* */ \
>> + define(DRIVER_FEATURE, 1, PF, SW, "SR-IOV Physical Function") \
>> + define(DRIVER_FEATURE, 2, VF, SW, "SR-IOV Virtual Function") \
>> + define(DRIVER_FEATURE, 3, SURVIVABILITY, SURVIVABILITY, "Survivability") \
>> + define(DRIVER_FEATURE, 4, RAS, SW, "Reliability, Accessibility, Serviceability") \
>> + /* */ \
>> + define(DRIVER_FIRMWARE, 1, GUC, RUNTIME_FW, "GuC") \
>> + define(DRIVER_FIRMWARE, 2, HUC, RUNTIME_FW, "HuC") \
>> + define(DRIVER_FIRMWARE, 3, GSC, RUNTIME_FW, "GSC") \
>> + define(DRIVER_FIRMWARE, 16, PCODE, DEVICE_FW, "PCode") \
>> + define(DRIVER_FIRMWARE, 17, SYSCTRL, DEVICE_FW, "System Controller") \
>> + /* eod */
>> +
>> +/**
>> + * enum xe_log_component_tags - TAGs of all supported components
>> + */
>> +enum xe_log_component_tags {
>> + /* private: */
>> +#define MAKE_XE_LOG_COMPONENT_ENUM(_CLASS, _ID, _TAG, _SIG, _NAME) \
>> + XE_LOG_COMPONENT_##_TAG = MAKE_XE_LOG_COMPONENT(_CLASS, (_ID)), \
>> + XE_LOG_COMPONENT_##_CLASS##_##_ID = XE_LOG_COMPONENT_##_TAG, \
>> + /* eod */
>> + DEFINE_XE_LOG_COMPONENTS(MAKE_XE_LOG_COMPONENT_ENUM)
>> +#undef MAKE_XE_LOG_COMPONENT_ENUM
>> +};
>> +
>> +/**
>> + * enum xe_log_component_sigids - SIGIDs of all supported components
>> + */
>> +enum xe_log_component_sigids {
>> + /* private: */
>> +#define MAKE_XE_LOG_COMPONENT_SIGID(_CLASS, _ID, _TAG, _SIG, _NAME) \
>> + XE_LOG_COMPONENT_##_TAG##_SIGID = XE_SIGID_##_SIG, \
>> + /* eod */
>> + DEFINE_XE_LOG_COMPONENTS(MAKE_XE_LOG_COMPONENT_SIGID)
>> +#undef MAKE_XE_LOG_COMPONENT_SIGID
>> +};
>> +
>> +#endif
^ permalink raw reply [flat|nested] 37+ messages in thread
* [PATCH 07/19] drm/xe/log: Add component based SIGID log helper
2026-07-23 20:37 [PATCH 00/19] drm/xe: Add structured SIGID error logging infrastructure Michal Wajdeczko
` (5 preceding siblings ...)
2026-07-23 20:37 ` [PATCH 06/19] drm/xe/log: Introduce structured log components Michal Wajdeczko
@ 2026-07-23 20:37 ` Michal Wajdeczko
2026-07-23 20:37 ` [PATCH 08/19] drm/xe/log: Add errno-only SIGID log helpers Michal Wajdeczko
` (15 subsequent siblings)
22 siblings, 0 replies; 37+ messages in thread
From: Michal Wajdeczko @ 2026-07-23 20:37 UTC (permalink / raw)
To: intel-xe; +Cc: Michal Wajdeczko, Rodrigo Vivi
Our component list already defines relation between the component
name, identified by the TAG, and its numerical identifier and the
assigned SIGID. We can also prepare location identifier based on
the pointer type used to emit the log entry. Add helper that will
prepare SIGID, COMPONENT and LOCATION parameters for xe_log_emit()
using provided TAG and the pointer.
Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
---
drivers/gpu/drm/xe/xe_log.h | 41 +++++++++++++++++++++++++++++++++++++
1 file changed, 41 insertions(+)
diff --git a/drivers/gpu/drm/xe/xe_log.h b/drivers/gpu/drm/xe/xe_log.h
index 5d3f0ef4ecca..8e300e8b6d10 100644
--- a/drivers/gpu/drm/xe/xe_log.h
+++ b/drivers/gpu/drm/xe/xe_log.h
@@ -8,6 +8,7 @@
#include <linux/cper.h>
+#include "abi/xe_log_abi.h"
#include "abi/xe_sigid_abi.h"
#include "xe_any.h"
#include "xe_gt_printk.h"
@@ -99,4 +100,44 @@ void xe_log_emit_dmesg(struct pci_dev *pdev, int cper_sev, enum xe_sigid sigid,
xe_log_emit_from((any), CPER_SEV_INFORMATIONAL, (sig), (comp), (loc), \
(data), (len), fmt, ##args)
+#define xe_log_location_type(any) \
+ _Generic((any), \
+ struct pci_dev * : XE_LOG_LOCATION_TYPE_DEVICE, \
+ struct xe_device * : XE_LOG_LOCATION_TYPE_DEVICE, \
+ struct xe_tile * : XE_LOG_LOCATION_TYPE_TILE, \
+ struct xe_gt * : XE_LOG_LOCATION_TYPE_GT)
+
+#define xe_log_location(any) \
+ PREP_XE_LOG_LOCATION(xe_log_location_type(any), xe_any_id(any))
+
+#define __XE_LOG_COMP_FMT(TAG, fmt, args...) #TAG ": " fmt, ##args
+
+/**
+ * xe_log_emit_comp() - Emit a structured SIGID log entry on the component behalf.
+ * @any: the &xe_device or &xe_tile or &xe_gt pointer this report relates to
+ * @cper_sev: CPER severity (CPER_SEV_FATAL, CPER_SEV_RECOVERABLE, ...)
+ * @TAG: the component tag to use
+ * @data: pointer to the additional details, or ERR_PTR, or NULL if not applicable
+ * @len: length of the @data in bytes, or 0 if not applicable
+ * @fmt: printf-style free text format string (not a stable interface)
+ * @args: arguments for the @fmt format string
+ *
+ * The component SIGID will be determined by the component's @TAG.
+ * The component location will be based on the @any pointer type.
+ */
+#define xe_log_emit_comp(any, cper_sev, TAG, data, len, fmt, args...) do { \
+ typeof(any) __any = (any); \
+ struct pci_dev *__pdev = xe_any_to_pdev(__any); \
+ int __sev = (cper_sev); \
+ int __sig = XE_LOG_COMPONENT_##TAG##_SIGID; \
+ u32 __component = XE_LOG_COMPONENT_##TAG; \
+ u32 __location = xe_log_location(__any); \
+ const void *__data = (data); \
+ size_t __len = (len); \
+ xe_log_emit_dmesg_from(__any, __sev, __sig, __data, __len, \
+ __XE_LOG_COMP_FMT(TAG, fmt, ##args)); \
+ xe_log_emit_cper(__pdev, __sev, __sig, __component, __location, \
+ __data, __len, fmt, ##args); \
+} while (0)
+
#endif
--
2.47.1
^ permalink raw reply related [flat|nested] 37+ messages in thread* [PATCH 08/19] drm/xe/log: Add errno-only SIGID log helpers
2026-07-23 20:37 [PATCH 00/19] drm/xe: Add structured SIGID error logging infrastructure Michal Wajdeczko
` (6 preceding siblings ...)
2026-07-23 20:37 ` [PATCH 07/19] drm/xe/log: Add component based SIGID log helper Michal Wajdeczko
@ 2026-07-23 20:37 ` Michal Wajdeczko
2026-07-23 20:37 ` [PATCH 09/19] drm/xe/log: Add hardware error signatures Michal Wajdeczko
` (14 subsequent siblings)
22 siblings, 0 replies; 37+ messages in thread
From: Michal Wajdeczko @ 2026-07-23 20:37 UTC (permalink / raw)
To: intel-xe; +Cc: Michal Wajdeczko, Rodrigo Vivi
For the software based errors, we will usually want to pass only
the errno value as the data to be logged in the dmesg line/CPER
record. Add simple wrappers for that.
Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
---
drivers/gpu/drm/xe/xe_log.h | 32 ++++++++++++++++++++++++++++++++
1 file changed, 32 insertions(+)
diff --git a/drivers/gpu/drm/xe/xe_log.h b/drivers/gpu/drm/xe/xe_log.h
index 8e300e8b6d10..7e0c28736841 100644
--- a/drivers/gpu/drm/xe/xe_log.h
+++ b/drivers/gpu/drm/xe/xe_log.h
@@ -140,4 +140,36 @@ void xe_log_emit_dmesg(struct pci_dev *pdev, int cper_sev, enum xe_sigid sigid,
__data, __len, fmt, ##args); \
} while (0)
+/**
+ * xe_log_err() - Emit a structured SIGID error log entry on the component behalf.
+ * @any: the &xe_device or &xe_tile or &xe_gt pointer this report relates to
+ * @TAG: the component tag to use
+ * @err: negative errno for the failing operation, or 0 if not applicable
+ * @fmt: printf-style free text format string (not a stable interface)
+ * @args: arguments for the @fmt format string
+ */
+#define xe_log_err(any, TAG, err, fmt, args...) \
+ xe_log_emit_comp((any), CPER_SEV_RECOVERABLE, TAG, ERR_PTR(err), 0, fmt, ##args)
+
+/**
+ * xe_log_err_fatal() - Emit a structured SIGID fatal error log entry on the component behalf.
+ * @any: the &xe_device or &xe_tile or &xe_gt pointer this report relates to
+ * @TAG: the component tag to use
+ * @err: negative errno for the failing operation, or 0 if not applicable
+ * @fmt: printf-style free text format string (not a stable interface)
+ * @args: arguments for the @fmt format string
+ */
+#define xe_log_err_fatal(any, TAG, err, fmt, args...) \
+ xe_log_emit_comp((any), CPER_SEV_FATAL, TAG, ERR_PTR(err), 0, fmt, ##args)
+
+/**
+ * xe_log_info() - Emit a structured SIGID information log entry on the component behalf.
+ * @any: the &xe_device or &xe_tile or &xe_gt pointer this report relates to
+ * @TAG: the component tag to use
+ * @fmt: printf-style free text format string (not a stable interface)
+ * @args: arguments for the @fmt format string
+ */
+#define xe_log_info(any, TAG, fmt, args...) \
+ xe_log_emit_comp((any), CPER_SEV_INFORMATIONAL, TAG, NULL, 0, fmt, ##args)
+
#endif
--
2.47.1
^ permalink raw reply related [flat|nested] 37+ messages in thread* [PATCH 09/19] drm/xe/log: Add hardware error signatures
2026-07-23 20:37 [PATCH 00/19] drm/xe: Add structured SIGID error logging infrastructure Michal Wajdeczko
` (7 preceding siblings ...)
2026-07-23 20:37 ` [PATCH 08/19] drm/xe/log: Add errno-only SIGID log helpers Michal Wajdeczko
@ 2026-07-23 20:37 ` Michal Wajdeczko
2026-07-23 20:37 ` [PATCH 10/19] drm/xe/log: Extend components list with hardware items Michal Wajdeczko
` (13 subsequent siblings)
22 siblings, 0 replies; 37+ messages in thread
From: Michal Wajdeczko @ 2026-07-23 20:37 UTC (permalink / raw)
To: intel-xe; +Cc: Michal Wajdeczko, Rodrigo Vivi, Yoni Levitt
Extend our error signatures definitions xe_sigid to cover also
hardware-originated errors and make them distinguishable from
initially defined software-initiated errors.
Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Cc: Yoni Levitt <yoni.levitt@intel.com>
---
drivers/gpu/drm/xe/abi/xe_sigid_abi.h | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/drivers/gpu/drm/xe/abi/xe_sigid_abi.h b/drivers/gpu/drm/xe/abi/xe_sigid_abi.h
index 99717fdf74a6..e00ea6f5fb87 100644
--- a/drivers/gpu/drm/xe/abi/xe_sigid_abi.h
+++ b/drivers/gpu/drm/xe/abi/xe_sigid_abi.h
@@ -159,6 +159,12 @@
* @XE_SIGID_GT_TDR: Engine hang / timeout detection and recovery (reset). [RETRY]
* @XE_SIGID_MEM_FAULT: VM bind, page fault or GTT fault. [COLLECT]
* @XE_SIGID_IO_BUS: Runtime PCIe / IOMMU / MMIO access fault. [RECOVER]
+ * @XE_SIGID_HW: Generic hardware failure.
+ * @XE_SIGID_PCIE: PCIe interface errors.
+ * @XE_SIGID_DEVICE_MEMORY: Device memory errors
+ * @XE_SIGID_CORE_COMPUTE: Compute/shader core errors.
+ * @XE_SIGID_FABRIC: Fabric errors.
+ * @XE_SIGID_SOC_INTERNAL: SoC-internal errors.
*
* The situations the driver detects and reports in software. Values are
* numbered sequentially, are only ever appended, and are never renumbered or
@@ -178,6 +184,13 @@ enum xe_sigid {
XE_SIGID_GT_TDR = INTEL_SIGID_GPU_XE_SOFTWARE_START + 6,
XE_SIGID_MEM_FAULT = INTEL_SIGID_GPU_XE_SOFTWARE_START + 7,
XE_SIGID_IO_BUS = INTEL_SIGID_GPU_XE_SOFTWARE_START + 8,
+
+ XE_SIGID_HW = INTEL_SIGID_GPU_XE_HARDWARE_START,
+ XE_SIGID_PCIE = INTEL_SIGID_GPU_XE_HARDWARE_START + 1,
+ XE_SIGID_DEVICE_MEMORY = INTEL_SIGID_GPU_XE_HARDWARE_START + 2,
+ XE_SIGID_CORE_COMPUTE = INTEL_SIGID_GPU_XE_HARDWARE_START + 3,
+ XE_SIGID_FABRIC = INTEL_SIGID_GPU_XE_HARDWARE_START + 4,
+ XE_SIGID_SOC_INTERNAL = INTEL_SIGID_GPU_XE_HARDWARE_START + 5,
};
#endif
--
2.47.1
^ permalink raw reply related [flat|nested] 37+ messages in thread* [PATCH 10/19] drm/xe/log: Extend components list with hardware items
2026-07-23 20:37 [PATCH 00/19] drm/xe: Add structured SIGID error logging infrastructure Michal Wajdeczko
` (8 preceding siblings ...)
2026-07-23 20:37 ` [PATCH 09/19] drm/xe/log: Add hardware error signatures Michal Wajdeczko
@ 2026-07-23 20:37 ` Michal Wajdeczko
2026-07-24 11:49 ` Aravind Iddamsetty
2026-07-23 20:37 ` [PATCH 11/19] drm/xe/tests: Add Kunit tests for xe_log Michal Wajdeczko
` (12 subsequent siblings)
22 siblings, 1 reply; 37+ messages in thread
From: Michal Wajdeczko @ 2026-07-23 20:37 UTC (permalink / raw)
To: intel-xe; +Cc: Michal Wajdeczko, Rodrigo Vivi
Update our super macro with new top level hardware components.
Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
---
drivers/gpu/drm/xe/abi/xe_log_abi.h | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/drivers/gpu/drm/xe/abi/xe_log_abi.h b/drivers/gpu/drm/xe/abi/xe_log_abi.h
index cde86c6c08f2..edf4dc13377d 100644
--- a/drivers/gpu/drm/xe/abi/xe_log_abi.h
+++ b/drivers/gpu/drm/xe/abi/xe_log_abi.h
@@ -124,6 +124,10 @@ enum xe_log_location_bits {
* @SIGID is the default xe_sigid for the component (without the XE_SIGID_ prefix)
*/
#define DEFINE_XE_LOG_COMPONENTS(define) \
+ DEFINE_XE_LOG_SOFTWARE_COMPONENTS(define) \
+ DEFINE_XE_LOG_HARDWARE_COMPONENTS(define)
+
+#define DEFINE_XE_LOG_SOFTWARE_COMPONENTS(define) \
/* */ \
define(SYSTEM, 1, PCI, SW, "Linux PCI Subsystem") \
define(SYSTEM, 2, DRM, SW, "DRM") \
@@ -151,6 +155,13 @@ enum xe_log_location_bits {
define(DRIVER_FIRMWARE, 3, GSC, RUNTIME_FW, "GSC") \
define(DRIVER_FIRMWARE, 16, PCODE, DEVICE_FW, "PCode") \
define(DRIVER_FIRMWARE, 17, SYSCTRL, DEVICE_FW, "System Controller") \
+
+#define DEFINE_XE_LOG_HARDWARE_COMPONENTS(define) \
+ define(HARDWARE, 1, PCIE, PCIE, "PCIe Interface") \
+ define(HARDWARE, 2, HWCORE, CORE_COMPUTE, "Core Compute") \
+ define(HARDWARE, 3, DEVMEM, DEVICE_MEMORY, "Device Memory") \
+ define(HARDWARE, 4, FABRIC, FABRIC, "Fabric") \
+ define(HARDWARE, 5, SOC, SOC_INTERNAL, "SoC Internal") \
/* eod */
/**
--
2.47.1
^ permalink raw reply related [flat|nested] 37+ messages in thread* Re: [PATCH 10/19] drm/xe/log: Extend components list with hardware items
2026-07-23 20:37 ` [PATCH 10/19] drm/xe/log: Extend components list with hardware items Michal Wajdeczko
@ 2026-07-24 11:49 ` Aravind Iddamsetty
2026-07-24 15:11 ` Michal Wajdeczko
0 siblings, 1 reply; 37+ messages in thread
From: Aravind Iddamsetty @ 2026-07-24 11:49 UTC (permalink / raw)
To: Michal Wajdeczko, intel-xe; +Cc: Rodrigo Vivi, Yoni Levitt
On 24-07-2026 02:07, Michal Wajdeczko wrote:
> Update our super macro with new top level hardware components.
>
> Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
> Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
> ---
> drivers/gpu/drm/xe/abi/xe_log_abi.h | 11 +++++++++++
> 1 file changed, 11 insertions(+)
>
> diff --git a/drivers/gpu/drm/xe/abi/xe_log_abi.h b/drivers/gpu/drm/xe/abi/xe_log_abi.h
> index cde86c6c08f2..edf4dc13377d 100644
> --- a/drivers/gpu/drm/xe/abi/xe_log_abi.h
> +++ b/drivers/gpu/drm/xe/abi/xe_log_abi.h
> @@ -124,6 +124,10 @@ enum xe_log_location_bits {
> * @SIGID is the default xe_sigid for the component (without the XE_SIGID_ prefix)
> */
> #define DEFINE_XE_LOG_COMPONENTS(define) \
> + DEFINE_XE_LOG_SOFTWARE_COMPONENTS(define) \
> + DEFINE_XE_LOG_HARDWARE_COMPONENTS(define)
> +
> +#define DEFINE_XE_LOG_SOFTWARE_COMPONENTS(define) \
> /* */ \
> define(SYSTEM, 1, PCI, SW, "Linux PCI Subsystem") \
> define(SYSTEM, 2, DRM, SW, "DRM") \
> @@ -151,6 +155,13 @@ enum xe_log_location_bits {
> define(DRIVER_FIRMWARE, 3, GSC, RUNTIME_FW, "GSC") \
> define(DRIVER_FIRMWARE, 16, PCODE, DEVICE_FW, "PCode") \
> define(DRIVER_FIRMWARE, 17, SYSCTRL, DEVICE_FW, "System Controller") \
> +
> +#define DEFINE_XE_LOG_HARDWARE_COMPONENTS(define) \
> + define(HARDWARE, 1, PCIE, PCIE, "PCIe Interface") \
> + define(HARDWARE, 2, HWCORE, CORE_COMPUTE, "Core Compute") \
> + define(HARDWARE, 3, DEVMEM, DEVICE_MEMORY, "Device Memory") \
> + define(HARDWARE, 4, FABRIC, FABRIC, "Fabric") \
> + define(HARDWARE, 5, SOC, SOC_INTERNAL, "SoC Internal") \
> /* eod */
>
For HW errors FW already reports the components, we already have
definition of component "enum xe_ras_component" that matches how FW
reports the errors we shall reuse it not redefine again.
Thanks,
Aravind.
> /**
^ permalink raw reply [flat|nested] 37+ messages in thread* Re: [PATCH 10/19] drm/xe/log: Extend components list with hardware items
2026-07-24 11:49 ` Aravind Iddamsetty
@ 2026-07-24 15:11 ` Michal Wajdeczko
2026-07-28 14:47 ` Aravind Iddamsetty
0 siblings, 1 reply; 37+ messages in thread
From: Michal Wajdeczko @ 2026-07-24 15:11 UTC (permalink / raw)
To: Aravind Iddamsetty, intel-xe; +Cc: Rodrigo Vivi, Yoni Levitt
On 7/24/2026 1:49 PM, Aravind Iddamsetty wrote:
>
> On 24-07-2026 02:07, Michal Wajdeczko wrote:
>> Update our super macro with new top level hardware components.
>>
>> Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
>> Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
>> ---
>> drivers/gpu/drm/xe/abi/xe_log_abi.h | 11 +++++++++++
>> 1 file changed, 11 insertions(+)
>>
>> diff --git a/drivers/gpu/drm/xe/abi/xe_log_abi.h b/drivers/gpu/drm/xe/abi/xe_log_abi.h
>> index cde86c6c08f2..edf4dc13377d 100644
>> --- a/drivers/gpu/drm/xe/abi/xe_log_abi.h
>> +++ b/drivers/gpu/drm/xe/abi/xe_log_abi.h
>> @@ -124,6 +124,10 @@ enum xe_log_location_bits {
>> * @SIGID is the default xe_sigid for the component (without the XE_SIGID_ prefix)
>> */
>> #define DEFINE_XE_LOG_COMPONENTS(define) \
>> + DEFINE_XE_LOG_SOFTWARE_COMPONENTS(define) \
>> + DEFINE_XE_LOG_HARDWARE_COMPONENTS(define)
>> +
>> +#define DEFINE_XE_LOG_SOFTWARE_COMPONENTS(define) \
>> /* */ \
>> define(SYSTEM, 1, PCI, SW, "Linux PCI Subsystem") \
>> define(SYSTEM, 2, DRM, SW, "DRM") \
>> @@ -151,6 +155,13 @@ enum xe_log_location_bits {
>> define(DRIVER_FIRMWARE, 3, GSC, RUNTIME_FW, "GSC") \
>> define(DRIVER_FIRMWARE, 16, PCODE, DEVICE_FW, "PCode") \
>> define(DRIVER_FIRMWARE, 17, SYSCTRL, DEVICE_FW, "System Controller") \
>> +
>> +#define DEFINE_XE_LOG_HARDWARE_COMPONENTS(define) \
>> + define(HARDWARE, 1, PCIE, PCIE, "PCIe Interface") \
>> + define(HARDWARE, 2, HWCORE, CORE_COMPUTE, "Core Compute") \
>> + define(HARDWARE, 3, DEVMEM, DEVICE_MEMORY, "Device Memory") \
>> + define(HARDWARE, 4, FABRIC, FABRIC, "Fabric") \
>> + define(HARDWARE, 5, SOC, SOC_INTERNAL, "SoC Internal") \
>> /* eod */
>>
>
> For HW errors FW already reports the components, we already have
> definition of component "enum xe_ras_component" that matches how FW
> reports the errors we shall reuse it not redefine again.
from what I can see in [1] this enum was defined just as local definition and there was no mention that they are fixed HW originated values and wasn't placed in regs/ (like we do with all HW related stuff)
OTOH, these LOG components definitions are supposed to be part of the log ABI, so shall be defined in more exposed place (like our abi/ folder)
but there is still a solution for this.
we can define HW LOG components in this LOG abi/ as:
+ define(HARDWARE, 1, DEVMEM, DEVICE_MEMORY, "Device Memory") \
+ define(HARDWARE, 2, HWCORE, CORE_COMPUTE, "Core Compute") \
+ define(HARDWARE, 4, PCIE, PCIE, "PCIe Interface") \
+ define(HARDWARE, 5, FABRIC, FABRIC, "Fabric") \
+ define(HARDWARE, 6, SOC, SOC_INTERNAL, "SoC Internal") \
as this will include TYPE(HARDWARE) definition for each component identifier
so the XE_LOG_COMPONENT_SOC is still defined as 0x0608, not as a plain 6
and have separate HW components definitions as reported by the FW in another abi/ as:
SYSCTRL_COMP_DEVICE_MEMORY = 1,
SYSCTRL_COMP_CORE_COMPUTE = 2,
SYSCTRL_COMP_PCIE = 4,
SYSCTRL_COMP_FABRIC = 5,
SYSCTRL_COMP_SOC_INTERNAL = 6,
and finally somewhere in the code we can make sure we don't change that accidentally:
BUILD_BUG_ON(SYSCTRL_COMP_DEVICE_MEMORY !=
FIELD_GET(XE_LOG_LOCATION_ID_MASK,
XE_LOG_COMPONENT_DEVICE_MEMORY));
...
BUILD_BUG_ON(SYSCTRL_COMP_SOC_INTERNAL != // aka 6
FIELD_GET(XE_LOG_LOCATION_ID_MASK, // aka 0xFF00
XE_LOG_COMPONENT_SOC)); // aka 0x0608
[1] https://elixir.bootlin.com/linux/v7.2-rc4/source/drivers/gpu/drm/xe/xe_ras.c#L23
>
> Thanks,
> Aravind.
>> /**
^ permalink raw reply [flat|nested] 37+ messages in thread* Re: [PATCH 10/19] drm/xe/log: Extend components list with hardware items
2026-07-24 15:11 ` Michal Wajdeczko
@ 2026-07-28 14:47 ` Aravind Iddamsetty
2026-07-28 16:31 ` Michal Wajdeczko
0 siblings, 1 reply; 37+ messages in thread
From: Aravind Iddamsetty @ 2026-07-28 14:47 UTC (permalink / raw)
To: Michal Wajdeczko, intel-xe; +Cc: Rodrigo Vivi, Yoni Levitt
[-- Attachment #1: Type: text/plain, Size: 4285 bytes --]
On 24-07-2026 20:41, Michal Wajdeczko wrote:
>
> On 7/24/2026 1:49 PM, Aravind Iddamsetty wrote:
>> On 24-07-2026 02:07, Michal Wajdeczko wrote:
>>> Update our super macro with new top level hardware components.
>>>
>>> Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
>>> Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
>>> ---
>>> drivers/gpu/drm/xe/abi/xe_log_abi.h | 11 +++++++++++
>>> 1 file changed, 11 insertions(+)
>>>
>>> diff --git a/drivers/gpu/drm/xe/abi/xe_log_abi.h b/drivers/gpu/drm/xe/abi/xe_log_abi.h
>>> index cde86c6c08f2..edf4dc13377d 100644
>>> --- a/drivers/gpu/drm/xe/abi/xe_log_abi.h
>>> +++ b/drivers/gpu/drm/xe/abi/xe_log_abi.h
>>> @@ -124,6 +124,10 @@ enum xe_log_location_bits {
>>> * @SIGID is the default xe_sigid for the component (without the XE_SIGID_ prefix)
>>> */
>>> #define DEFINE_XE_LOG_COMPONENTS(define) \
>>> + DEFINE_XE_LOG_SOFTWARE_COMPONENTS(define) \
>>> + DEFINE_XE_LOG_HARDWARE_COMPONENTS(define)
>>> +
>>> +#define DEFINE_XE_LOG_SOFTWARE_COMPONENTS(define) \
>>> /* */ \
>>> define(SYSTEM, 1, PCI, SW, "Linux PCI Subsystem") \
>>> define(SYSTEM, 2, DRM, SW, "DRM") \
>>> @@ -151,6 +155,13 @@ enum xe_log_location_bits {
>>> define(DRIVER_FIRMWARE, 3, GSC, RUNTIME_FW, "GSC") \
>>> define(DRIVER_FIRMWARE, 16, PCODE, DEVICE_FW, "PCode") \
>>> define(DRIVER_FIRMWARE, 17, SYSCTRL, DEVICE_FW, "System Controller") \
>>> +
>>> +#define DEFINE_XE_LOG_HARDWARE_COMPONENTS(define) \
>>> + define(HARDWARE, 1, PCIE, PCIE, "PCIe Interface") \
>>> + define(HARDWARE, 2, HWCORE, CORE_COMPUTE, "Core Compute") \
>>> + define(HARDWARE, 3, DEVMEM, DEVICE_MEMORY, "Device Memory") \
>>> + define(HARDWARE, 4, FABRIC, FABRIC, "Fabric") \
>>> + define(HARDWARE, 5, SOC, SOC_INTERNAL, "SoC Internal") \
>>> /* eod */
>>>
>> For HW errors FW already reports the components, we already have
>> definition of component "enum xe_ras_component" that matches how FW
>> reports the errors we shall reuse it not redefine again.
> from what I can see in [1] this enum was defined just as local definition and there was no mention that they are fixed HW originated values and wasn't placed in regs/ (like we do with all HW related stuff)
check
this https://gitlab.com/freedesktop-mirror/drm-tip/-/blob/drm-tip/drivers/gpu/drm/xe/xe_ras.c?ref_type=heads#L379
where error details is retrieved from FW and component details are
extracted into structxe_ras_error_class
<https://elixir.bootlin.com/linux/v7.2-rc4/C/ident/xe_ras_error_class>
>
> OTOH, these LOG components definitions are supposed to be part of the log ABI, so shall be defined in more exposed place (like our abi/ folder)
>
> but there is still a solution for this.
>
> we can define HW LOG components in this LOG abi/ as:
>
> + define(HARDWARE, 1, DEVMEM, DEVICE_MEMORY, "Device Memory") \
> + define(HARDWARE, 2, HWCORE, CORE_COMPUTE, "Core Compute") \
> + define(HARDWARE, 4, PCIE, PCIE, "PCIe Interface") \
> + define(HARDWARE, 5, FABRIC, FABRIC, "Fabric") \
> + define(HARDWARE, 6, SOC, SOC_INTERNAL, "SoC Internal") \
As the component needs to go to CPER in case of HW errors it will
derived from structxe_ras_error_class
<https://elixir.bootlin.com/linux/v7.2-rc4/C/ident/xe_ras_error_class>
given by FW which will go into CPER. We shall use whatever the FW has given.
Thanks,
Aravind.
>
> as this will include TYPE(HARDWARE) definition for each component identifier
> so the XE_LOG_COMPONENT_SOC is still defined as 0x0608, not as a plain 6
>
> and have separate HW components definitions as reported by the FW in another abi/ as:
>
> SYSCTRL_COMP_DEVICE_MEMORY = 1,
> SYSCTRL_COMP_CORE_COMPUTE = 2,
> SYSCTRL_COMP_PCIE = 4,
> SYSCTRL_COMP_FABRIC = 5,
> SYSCTRL_COMP_SOC_INTERNAL = 6,
>
> and finally somewhere in the code we can make sure we don't change that accidentally:
>
> BUILD_BUG_ON(SYSCTRL_COMP_DEVICE_MEMORY !=
> FIELD_GET(XE_LOG_LOCATION_ID_MASK,
> XE_LOG_COMPONENT_DEVICE_MEMORY));
> ...
> BUILD_BUG_ON(SYSCTRL_COMP_SOC_INTERNAL != // aka 6
> FIELD_GET(XE_LOG_LOCATION_ID_MASK, // aka 0xFF00
> XE_LOG_COMPONENT_SOC)); // aka 0x0608
>
>
> [1] https://elixir.bootlin.com/linux/v7.2-rc4/source/drivers/gpu/drm/xe/xe_ras.c#L23
>
>
>> Thanks,
>> Aravind.
>>> /**
[-- Attachment #2: Type: text/html, Size: 10768 bytes --]
^ permalink raw reply [flat|nested] 37+ messages in thread* Re: [PATCH 10/19] drm/xe/log: Extend components list with hardware items
2026-07-28 14:47 ` Aravind Iddamsetty
@ 2026-07-28 16:31 ` Michal Wajdeczko
0 siblings, 0 replies; 37+ messages in thread
From: Michal Wajdeczko @ 2026-07-28 16:31 UTC (permalink / raw)
To: Aravind Iddamsetty, intel-xe; +Cc: Rodrigo Vivi, Yoni Levitt
On 7/28/2026 4:47 PM, Aravind Iddamsetty wrote:
>
> On 24-07-2026 20:41, Michal Wajdeczko wrote:
>> On 7/24/2026 1:49 PM, Aravind Iddamsetty wrote:
>>> On 24-07-2026 02:07, Michal Wajdeczko wrote:
>>>> Update our super macro with new top level hardware components.
>>>>
>>>> Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
>>>> Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
>>>> ---
>>>> drivers/gpu/drm/xe/abi/xe_log_abi.h | 11 +++++++++++
>>>> 1 file changed, 11 insertions(+)
>>>>
>>>> diff --git a/drivers/gpu/drm/xe/abi/xe_log_abi.h b/drivers/gpu/drm/xe/abi/xe_log_abi.h
>>>> index cde86c6c08f2..edf4dc13377d 100644
>>>> --- a/drivers/gpu/drm/xe/abi/xe_log_abi.h
>>>> +++ b/drivers/gpu/drm/xe/abi/xe_log_abi.h
>>>> @@ -124,6 +124,10 @@ enum xe_log_location_bits {
>>>> * @SIGID is the default xe_sigid for the component (without the XE_SIGID_ prefix)
>>>> */
>>>> #define DEFINE_XE_LOG_COMPONENTS(define) \
>>>> + DEFINE_XE_LOG_SOFTWARE_COMPONENTS(define) \
>>>> + DEFINE_XE_LOG_HARDWARE_COMPONENTS(define)
>>>> +
>>>> +#define DEFINE_XE_LOG_SOFTWARE_COMPONENTS(define) \
>>>> /* */ \
>>>> define(SYSTEM, 1, PCI, SW, "Linux PCI Subsystem") \
>>>> define(SYSTEM, 2, DRM, SW, "DRM") \
>>>> @@ -151,6 +155,13 @@ enum xe_log_location_bits {
>>>> define(DRIVER_FIRMWARE, 3, GSC, RUNTIME_FW, "GSC") \
>>>> define(DRIVER_FIRMWARE, 16, PCODE, DEVICE_FW, "PCode") \
>>>> define(DRIVER_FIRMWARE, 17, SYSCTRL, DEVICE_FW, "System Controller") \
>>>> +
>>>> +#define DEFINE_XE_LOG_HARDWARE_COMPONENTS(define) \
>>>> + define(HARDWARE, 1, PCIE, PCIE, "PCIe Interface") \
>>>> + define(HARDWARE, 2, HWCORE, CORE_COMPUTE, "Core Compute") \
>>>> + define(HARDWARE, 3, DEVMEM, DEVICE_MEMORY, "Device Memory") \
>>>> + define(HARDWARE, 4, FABRIC, FABRIC, "Fabric") \
>>>> + define(HARDWARE, 5, SOC, SOC_INTERNAL, "SoC Internal") \
>>>> /* eod */
>>>>
>>> For HW errors FW already reports the components, we already have
>>> definition of component "enum xe_ras_component" that matches how FW
>>> reports the errors we shall reuse it not redefine again.
>> from what I can see in [1] this enum was defined just as local definition and there was no mention that they are fixed HW originated values and wasn't placed in regs/ (like we do with all HW related stuff)
>
> check this https://gitlab.com/freedesktop-mirror/drm-tip/-/blob/drm-tip/drivers/gpu/drm/xe/xe_ras.c?ref_type=heads#L379
sorry, missed your response and I've already posted v2
>
> where error details is retrieved from FW and component details are extracted into structxe_ras_error_class <https://elixir.bootlin.com/linux/v7.2-rc4/C/ident/xe_ras_error_class>
>
>> OTOH, these LOG components definitions are supposed to be part of the log ABI, so shall be defined in more exposed place (like our abi/ folder)
>>
>> but there is still a solution for this.
>>
>> we can define HW LOG components in this LOG abi/ as:
>>
>> + define(HARDWARE, 1, DEVMEM, DEVICE_MEMORY, "Device Memory") \
>> + define(HARDWARE, 2, HWCORE, CORE_COMPUTE, "Core Compute") \
>> + define(HARDWARE, 4, PCIE, PCIE, "PCIe Interface") \
>> + define(HARDWARE, 5, FABRIC, FABRIC, "Fabric") \
>> + define(HARDWARE, 6, SOC, SOC_INTERNAL, "SoC Internal") \
>
> As the component needs to go to CPER in case of HW errors
I guess in case of SW errors we will also want/need to encode component identifier,
so we can't assume that only identifiers defined by the particular FW will be ever used
IMO the CPER/LOG identifiers are just different namespace compared to FW IDs
> it will derived from structxe_ras_error_class <https://elixir.bootlin.com/linux/v7.2-rc4/C/ident/xe_ras_error_class> given by FW which will go into CPER. We shall use whatever the FW has given.
>
but with asserts defined in [2] you should be able to easily convert those FW provided identifiers to the LOG component identifiers (and back)
also, you still have an option to keep all these HW internals ids in the data blob that LOG infra does not rely on
Michal
[2] https://patchwork.freedesktop.org/patch/742837/?series=171022&rev=2
> Thanks,
>
> Aravind.
>
>> as this will include TYPE(HARDWARE) definition for each component identifier
>> so the XE_LOG_COMPONENT_SOC is still defined as 0x0608, not as a plain 6
>>
>> and have separate HW components definitions as reported by the FW in another abi/ as:
>>
>> SYSCTRL_COMP_DEVICE_MEMORY = 1,
>> SYSCTRL_COMP_CORE_COMPUTE = 2,
>> SYSCTRL_COMP_PCIE = 4,
>> SYSCTRL_COMP_FABRIC = 5,
>> SYSCTRL_COMP_SOC_INTERNAL = 6,
>>
>> and finally somewhere in the code we can make sure we don't change that accidentally:
>>
>> BUILD_BUG_ON(SYSCTRL_COMP_DEVICE_MEMORY !=
>> FIELD_GET(XE_LOG_LOCATION_ID_MASK,
>> XE_LOG_COMPONENT_DEVICE_MEMORY));
>> ...
>> BUILD_BUG_ON(SYSCTRL_COMP_SOC_INTERNAL != // aka 6
>> FIELD_GET(XE_LOG_LOCATION_ID_MASK, // aka 0xFF00
>> XE_LOG_COMPONENT_SOC)); // aka 0x0608
>>
>>
>> [1] https://elixir.bootlin.com/linux/v7.2-rc4/source/drivers/gpu/drm/xe/xe_ras.c#L23
>>
>>
>>> Thanks,
>>> Aravind.
>>>> /**
^ permalink raw reply [flat|nested] 37+ messages in thread
* [PATCH 11/19] drm/xe/tests: Add Kunit tests for xe_log
2026-07-23 20:37 [PATCH 00/19] drm/xe: Add structured SIGID error logging infrastructure Michal Wajdeczko
` (9 preceding siblings ...)
2026-07-23 20:37 ` [PATCH 10/19] drm/xe/log: Extend components list with hardware items Michal Wajdeczko
@ 2026-07-23 20:37 ` Michal Wajdeczko
2026-07-23 20:37 ` [PATCH 12/19] drm/xe: Report 'probe blocked' error using SIGID Michal Wajdeczko
` (11 subsequent siblings)
22 siblings, 0 replies; 37+ messages in thread
From: Michal Wajdeczko @ 2026-07-23 20:37 UTC (permalink / raw)
To: intel-xe
Cc: Michal Wajdeczko, Rodrigo Vivi, Aravind Iddamsetty, Yoni Levitt,
Mallesh Koujalagi
All dmesg log lines generated by the xe_log() functions or helper
macros are expected to have a stable format. Add tests to verify
that generated output is not accidentally changed. Add demo pseudo
tests to show how to use all variants of the xe_log() helpers.
Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
--
Cc: Aravind Iddamsetty <aravind.iddamsetty@intel.com>
Cc: Yoni Levitt <yoni.levitt@intel.com>
Cc: Mallesh Koujalagi <mallesh.koujalagi@intel.com>
---
drivers/gpu/drm/xe/tests/xe_log_kunit.c | 331 ++++++++++++++++++++++++
drivers/gpu/drm/xe/xe_log.c | 11 +
2 files changed, 342 insertions(+)
create mode 100644 drivers/gpu/drm/xe/tests/xe_log_kunit.c
diff --git a/drivers/gpu/drm/xe/tests/xe_log_kunit.c b/drivers/gpu/drm/xe/tests/xe_log_kunit.c
new file mode 100644
index 000000000000..4a9587265135
--- /dev/null
+++ b/drivers/gpu/drm/xe/tests/xe_log_kunit.c
@@ -0,0 +1,331 @@
+// SPDX-License-Identifier: GPL-2.0 AND MIT
+/*
+ * Copyright © 2026 Intel Corporation
+ */
+
+#include <kunit/static_stub.h>
+#include <kunit/test.h>
+#include <kunit/test-bug.h>
+
+#include "tests/xe_kunit_helpers.h"
+#include "xe_device.h"
+#include "xe_log.h"
+
+static const u8 blob[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 };
+static const u8 dead[] = { 0xde, 0xad, 0xbe, 0xef };
+
+static void native(struct xe_device *xe)
+{
+ struct pci_dev *pdev = xe_any_to_pdev(xe);
+
+ xe_log_emit(pdev, CPER_SEV_FATAL, XE_SIGID_PROBE, 1, 2,
+ ERR_PTR(-ENODEV), 0, "testing %s signature\n", "software");
+ xe_log_emit(pdev, CPER_SEV_RECOVERABLE, XE_SIGID_GT_TDR, 1, 2,
+ ERR_PTR(-ETIMEDOUT), 0, "testing %s signature\n", "software");
+ xe_log_emit(pdev, CPER_SEV_CORRECTED, XE_SIGID_RUNTIME_FW, 1, 2,
+ NULL, 0, "testing %s signature\n", "software");
+ xe_log_emit(pdev, CPER_SEV_INFORMATIONAL, XE_SIGID_SURVIVABILITY, 1, 2,
+ NULL, 0, "testing %s signature\n", "software");
+
+ xe_log_emit(pdev, CPER_SEV_FATAL, XE_SIGID_PCIE, 1, 2,
+ blob, sizeof(blob), "testing %s signature\n", "HARDWARE");
+ xe_log_emit(pdev, CPER_SEV_RECOVERABLE, XE_SIGID_CORE_COMPUTE, 1, 2,
+ blob, sizeof(blob), "testing %s signature\n", "HARDWARE");
+ xe_log_emit(pdev, CPER_SEV_CORRECTED, XE_SIGID_DEVICE_MEMORY, 1, 2,
+ blob, sizeof(blob), "testing %s signature\n", "HARDWARE");
+ xe_log_emit(pdev, CPER_SEV_INFORMATIONAL, XE_SIGID_FABRIC, 1, 2,
+ blob, sizeof(blob), "testing %s signature\n", "HARDWARE");
+}
+
+static void locations(struct xe_device *xe)
+{
+ struct xe_tile *tile = xe_device_get_root_tile(xe);
+ struct xe_gt *gt = tile->primary_gt;
+
+ xe_log_emit_from(tile, CPER_SEV_FATAL, XE_SIGID_PROBE, 1, 2,
+ ERR_PTR(-ENODEV), 0, "testing %s helper\n", "from/tile");
+ xe_log_emit_from(tile, CPER_SEV_RECOVERABLE, XE_SIGID_GT_TDR, 1, 2,
+ ERR_PTR(-ETIMEDOUT), 0, "testing %s helper\n", "from/tile");
+ xe_log_emit_from(xe, CPER_SEV_CORRECTED, XE_SIGID_RUNTIME_FW, 1, 2,
+ NULL, 0, "testing %s helper\n", "from/tile");
+ xe_log_emit_from(xe, CPER_SEV_INFORMATIONAL, XE_SIGID_SURVIVABILITY, 1, 2,
+ NULL, 0, "testing %s helper\n", "from/tile");
+
+ xe_log_emit_from(gt, CPER_SEV_FATAL, XE_SIGID_PROBE, 1, 2,
+ ERR_PTR(-ENODEV), 0, "testing %s helper\n", "from/gt");
+ xe_log_emit_from(gt, CPER_SEV_RECOVERABLE, XE_SIGID_GT_TDR, 1, 2,
+ ERR_PTR(-ETIMEDOUT), 0, "testing %s helper\n", "from/gt");
+ xe_log_emit_from(gt, CPER_SEV_CORRECTED, XE_SIGID_RUNTIME_FW, 1, 2,
+ NULL, 0, "testing %s helper\n", "from/gt");
+ xe_log_emit_from(gt, CPER_SEV_INFORMATIONAL, XE_SIGID_SURVIVABILITY, 1, 2,
+ NULL, 0, "testing %s helper\n", "from/gt");
+}
+
+static void components(struct xe_device *xe)
+{
+ struct pci_dev *pdev = xe_any_to_pdev(xe);
+ struct xe_tile *tile = xe_device_get_root_tile(xe);
+ struct xe_gt *gt = tile->primary_gt;
+
+ xe_log_info(pdev, PROBE, "testing %s helper\n", "info/pdev");
+ xe_log_info(xe, PCODE, "testing %s helper\n", "info/xe");
+ xe_log_info(tile, GGTT, "testing %s helper\n", "info/tile");
+ xe_log_info(gt, GUC, "testing %s helper\n", "info/gt");
+
+ xe_log_err(pdev, PROBE, -ENODEV, "testing %s helper\n", "err/pdev");
+ xe_log_err(xe, PCODE, -EINVAL, "testing %s helper\n", "err/xe");
+ xe_log_err(tile, GGTT, -EFAULT, "testing %s helper\n", "err/tile");
+ xe_log_err(gt, GUC, -EPROTO, "testing %s helper\n", "err/gt");
+
+ xe_log_err_fatal(pdev, PROBE, -ENODEV, "testing %s helper\n", "err_fatal/pdev");
+ xe_log_err_fatal(xe, PCODE, -EINVAL, "testing %s helper\n", "err_fatal/xe");
+ xe_log_err_fatal(tile, GGTT, -EFAULT, "testing %s helper\n", "err_fatal/tile");
+ xe_log_err_fatal(gt, GUC, -EPROTO, "testing %s helper\n", "err_fatal/gt");
+}
+
+static void nop_emit_dmesg(struct pci_dev *pdev, int cper_sev, struct va_format *vaf)
+{
+}
+
+static void nop_prep_cper(struct pci_dev *pdev, int cper_sev,
+ enum xe_sigid sigid, u32 component, u32 location,
+ const void *cause, size_t len, struct va_format *vaf)
+{
+}
+
+static void fake_prep_cper(struct pci_dev *pdev, int cper_sev,
+ enum xe_sigid sigid, u32 component, u32 location,
+ const void *cause, size_t len, struct va_format *vaf)
+{
+ char msg[64];
+ int n, err;
+
+ pr_info("\n");
+ pr_info("CPER SEV=%u SIGID=%u COMPONENT=%#x LOC=%#x\n",
+ cper_sev, sigid, component, location);
+ pr_info("CPER DEV=%s\n", dev_name(&pdev->dev));
+ if (IS_ERR(cause)) {
+ err = PTR_ERR(cause);
+ pr_info("CPER ERR=%d %#x %pe\n", err, -err, cause);
+ } else {
+ print_hex_dump(KERN_INFO, "CPER BIN=", DUMP_PREFIX_OFFSET,
+ 16, 1, cause, len, false);
+ }
+
+ n = vscnprintf(msg, sizeof(msg), vaf->fmt, *vaf->va);
+ print_hex_dump(KERN_INFO, "CPER MSG=", DUMP_PREFIX_OFFSET, 16, 1, msg, n, true);
+ pr_info("CPER END\n");
+}
+
+static void demo_dmesg_native(struct kunit *test)
+{
+ kunit_activate_static_stub(test, log_prep_cper, nop_prep_cper);
+ native(test->priv);
+}
+
+static void demo_dmesg_locations(struct kunit *test)
+{
+ kunit_activate_static_stub(test, log_prep_cper, nop_prep_cper);
+ locations(test->priv);
+}
+
+static void demo_dmesg_components(struct kunit *test)
+{
+ kunit_activate_static_stub(test, log_prep_cper, nop_prep_cper);
+ components(test->priv);
+}
+
+static void demo_cper_native(struct kunit *test)
+{
+ kunit_activate_static_stub(test, log_prep_cper, fake_prep_cper);
+ kunit_activate_static_stub(test, log_emit_dmesg, nop_emit_dmesg);
+ native(test->priv);
+}
+
+static void demo_cper_locations(struct kunit *test)
+{
+ kunit_activate_static_stub(test, log_prep_cper, fake_prep_cper);
+ kunit_activate_static_stub(test, log_emit_dmesg, nop_emit_dmesg);
+ locations(test->priv);
+}
+
+static void demo_cper_components(struct kunit *test)
+{
+ kunit_activate_static_stub(test, log_prep_cper, fake_prep_cper);
+ kunit_activate_static_stub(test, log_emit_dmesg, nop_emit_dmesg);
+ components(test->priv);
+}
+
+static struct pci_dev *xe_to_pdev_safe(struct xe_device *xe)
+{
+ return xe ? xe_any_to_pdev(xe) : NULL;
+}
+
+static const char *test_fatal(struct xe_device *xe)
+{
+ struct pci_dev *pdev = xe_to_pdev_safe(xe);
+
+ if (pdev)
+ xe_log_emit(pdev, CPER_SEV_FATAL, XE_SIGID_PROBE, 1, 2,
+ ERR_PTR(-ENODEV), 0, "testing %d\n", 123);
+ return "SIGID=101 FATAL (-ENODEV) testing 123\n";
+}
+
+static const char *test_recoverable(struct xe_device *xe)
+{
+ struct pci_dev *pdev = xe_to_pdev_safe(xe);
+
+ if (pdev)
+ xe_log_emit(pdev, CPER_SEV_RECOVERABLE, XE_SIGID_DEVICE_FW, 1, 2,
+ ERR_PTR(-EIO), 0, "testing %d\n", 123);
+ return "SIGID=105 (-EIO) testing 123\n";
+}
+
+static const char *test_info(struct xe_device *xe)
+{
+ struct pci_dev *pdev = xe_to_pdev_safe(xe);
+
+ if (pdev)
+ xe_log_emit(pdev, CPER_SEV_INFORMATIONAL, XE_SIGID_SURVIVABILITY, 1, 2,
+ NULL, 0, "testing %d\n", 123);
+ return "SIGID=103 testing 123\n";
+}
+
+static const char *test_hw_fatal(struct xe_device *xe)
+{
+ struct pci_dev *pdev = xe_to_pdev_safe(xe);
+
+ if (pdev)
+ xe_log_emit(pdev, CPER_SEV_FATAL, XE_SIGID_PCIE, 1, 2,
+ dead, sizeof(dead), "testing %d\n", 123);
+ return "SIGID=201 FATAL (deadbeef) " HW_ERR "testing 123\n";
+}
+
+static const char *test_hw_recoverable(struct xe_device *xe)
+{
+ struct pci_dev *pdev = xe_to_pdev_safe(xe);
+
+ if (pdev)
+ xe_log_emit(pdev, CPER_SEV_RECOVERABLE, XE_SIGID_DEVICE_MEMORY, 1, 2,
+ dead, sizeof(dead), "testing %d\n", 123);
+ return "SIGID=202 (deadbeef) " HW_ERR "testing 123\n";
+}
+
+static const char *test_device_recoverable(struct xe_device *xe)
+{
+ if (xe)
+ xe_log_err(xe, PCODE, -EIO, "testing %d\n", 123);
+ return "SIGID=105 (-EIO) PCODE: testing 123\n";
+}
+
+static const char *test_device_fatal(struct xe_device *xe)
+{
+ if (xe)
+ xe_log_err_fatal(xe, PROBE, -ENODEV, "testing %d\n", 123);
+ return "SIGID=101 FATAL (-ENODEV) PROBE: testing 123\n";
+}
+
+static const char *test_tile_recoverable(struct xe_device *xe)
+{
+ if (xe)
+ xe_log_err(&xe->tiles[0], PCODE, -EINVAL, "testing %d\n", 123);
+ return "SIGID=105 (-EINVAL) Tile1: PCODE: testing 123\n";
+}
+
+static const char *test_tile_fatal(struct xe_device *xe)
+{
+ if (xe)
+ xe_log_err_fatal(&xe->tiles[0], SYSCTRL, -ENOKEY, "testing %d\n", 123);
+ return "SIGID=105 FATAL (-ENOKEY) Tile1: SYSCTRL: testing 123\n";
+}
+
+static const char *test_gt_recoverable(struct xe_device *xe)
+{
+ if (xe)
+ xe_log_err(xe->tiles[0].primary_gt, HUC, -ETIMEDOUT, "testing %d\n", 123);
+ return "SIGID=104 (-ETIMEDOUT) Tile1: GT3: HUC: testing 123\n";
+}
+
+static const char *test_gt_fatal(struct xe_device *xe)
+{
+ if (xe)
+ xe_log_err_fatal(xe->tiles[0].primary_gt, GUC, -EPROTO, "testing %d\n", 123);
+ return "SIGID=104 FATAL (-EPROTO) Tile1: GT3: GUC: testing 123\n";
+}
+
+static const struct log_test_param {
+ const char *(*func)(struct xe_device *xe);
+} log_test_params[] = {
+ { .func = test_fatal },
+ { .func = test_recoverable },
+ { .func = test_info },
+ { .func = test_device_fatal },
+ { .func = test_device_recoverable },
+ { .func = test_tile_fatal },
+ { .func = test_tile_recoverable },
+ { .func = test_gt_fatal },
+ { .func = test_gt_recoverable },
+ { .func = test_hw_fatal },
+ { .func = test_hw_recoverable },
+};
+
+static void log_param_get_desc(const struct log_test_param *p, char *desc)
+{
+ snprintf(desc, KUNIT_PARAM_DESC_SIZE, "%ps", p->func);
+}
+
+KUNIT_ARRAY_PARAM(log, log_test_params, log_param_get_desc);
+
+static void check_emit_dmesg(struct pci_dev *pdev, int cper_sev, struct va_format *vaf)
+{
+ struct kunit *test = kunit_get_current_test();
+ const struct log_test_param *param = test->param_value;
+ const char *exp = param->func(NULL);
+ char msg[64];
+ int n;
+
+ n = vscnprintf(msg, sizeof(msg), vaf->fmt, *vaf->va);
+ KUNIT_EXPECT_LT(test, n, sizeof(msg));
+ KUNIT_EXPECT_STREQ(test, msg, exp);
+}
+
+static void test_dmesg(struct kunit *test)
+{
+ const struct log_test_param *param = test->param_value;
+
+ kunit_activate_static_stub(test, log_prep_cper, nop_prep_cper);
+ kunit_activate_static_stub(test, log_emit_dmesg, check_emit_dmesg);
+
+ param->func(test->priv);
+}
+
+static int xe_log_test_init(struct kunit *test)
+{
+ struct xe_device *xe;
+
+ xe_kunit_helper_xe_device_test_init(test);
+ xe = test->priv;
+ xe->tiles[0].id = 1;
+ xe->tiles[0].primary_gt->info.id = 3;
+
+ return 0;
+}
+
+static struct kunit_case xe_log_test_cases[] = {
+ KUNIT_CASE(demo_cper_native),
+ KUNIT_CASE(demo_cper_locations),
+ KUNIT_CASE(demo_cper_components),
+ KUNIT_CASE(demo_dmesg_native),
+ KUNIT_CASE(demo_dmesg_locations),
+ KUNIT_CASE(demo_dmesg_components),
+ KUNIT_CASE_PARAM(test_dmesg, log_gen_params),
+ {}
+};
+
+static struct kunit_suite xe_log_suite = {
+ .name = "xe_log",
+ .test_cases = xe_log_test_cases,
+ .init = xe_log_test_init,
+};
+
+kunit_test_suites(&xe_log_suite);
diff --git a/drivers/gpu/drm/xe/xe_log.c b/drivers/gpu/drm/xe/xe_log.c
index c8ca0097c0b3..fbf85aa1a031 100644
--- a/drivers/gpu/drm/xe/xe_log.c
+++ b/drivers/gpu/drm/xe/xe_log.c
@@ -3,6 +3,9 @@
* Copyright © 2026 Intel Corporation
*/
+#include <kunit/static_stub.h>
+#include <kunit/visibility.h>
+
#include "xe_log.h"
#include "xe_printk.h"
@@ -10,6 +13,8 @@ static void log_prep_cper(struct pci_dev *pdev, int cper_sev, enum xe_sigid sigi
u32 component, u32 location, const void *data, size_t len,
struct va_format *vaf)
{
+ KUNIT_STATIC_STUB_REDIRECT(log_prep_cper, pdev, cper_sev, sigid,
+ component, location, data, len, vaf);
/* TODO */
}
@@ -77,6 +82,8 @@ static const char *log_sev_prefix(int cper_sev)
static void log_emit_dmesg(struct pci_dev *pdev, int cper_sev, struct va_format *vaf)
{
+ KUNIT_STATIC_STUB_REDIRECT(log_emit_dmesg, pdev, cper_sev, vaf);
+
if (cper_sev == CPER_SEV_INFORMATIONAL || cper_sev == CPER_SEV_CORRECTED)
pci_info(pdev, __LOG_DRM_PRINTK_FMT("%pV", vaf));
else
@@ -208,3 +215,7 @@ void xe_log_emit(struct pci_dev *pdev, int cper_sev, enum xe_sigid sigid,
va_end(args);
}
+
+#if IS_BUILTIN(CONFIG_DRM_XE_KUNIT_TEST)
+#include "tests/xe_log_kunit.c"
+#endif
--
2.47.1
^ permalink raw reply related [flat|nested] 37+ messages in thread* [PATCH 12/19] drm/xe: Report 'probe blocked' error using SIGID
2026-07-23 20:37 [PATCH 00/19] drm/xe: Add structured SIGID error logging infrastructure Michal Wajdeczko
` (10 preceding siblings ...)
2026-07-23 20:37 ` [PATCH 11/19] drm/xe/tests: Add Kunit tests for xe_log Michal Wajdeczko
@ 2026-07-23 20:37 ` Michal Wajdeczko
2026-07-24 12:28 ` Aravind Iddamsetty
2026-07-23 20:37 ` [PATCH 13/19] drm/xe: Report 'device wedged' errors " Michal Wajdeczko
` (10 subsequent siblings)
22 siblings, 1 reply; 37+ messages in thread
From: Michal Wajdeczko @ 2026-07-23 20:37 UTC (permalink / raw)
To: intel-xe
Cc: Michal Wajdeczko, Rodrigo Vivi, Aravind Iddamsetty,
Mallesh Koujalagi
Report 'probe blocked' error using xe_log_err() helper.
Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Cc: Aravind Iddamsetty <aravind.iddamsetty@intel.com>
Cc: Mallesh Koujalagi <mallesh.koujalagi@intel.com>
---
drivers/gpu/drm/xe/xe_pci.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_pci.c b/drivers/gpu/drm/xe/xe_pci.c
index 36d62927b969..a9ada8e4f081 100644
--- a/drivers/gpu/drm/xe/xe_pci.c
+++ b/drivers/gpu/drm/xe/xe_pci.c
@@ -25,6 +25,7 @@
#include "xe_gt_printk.h"
#include "xe_gt_sriov_vf.h"
#include "xe_guc.h"
+#include "xe_log.h"
#include "xe_mmio.h"
#include "xe_module.h"
#include "xe_pci_error.h"
@@ -1172,8 +1173,8 @@ static int xe_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
}
if (id_blocked(pdev->device)) {
- dev_info(&pdev->dev, "Probe blocked for device [%04x:%04x].\n",
- pdev->vendor, pdev->device);
+ xe_log_err(pdev, PROBE, -ENODEV, "Probe blocked for device [%04x:%04x]\n",
+ pdev->vendor, pdev->device);
return -ENODEV;
}
--
2.47.1
^ permalink raw reply related [flat|nested] 37+ messages in thread* Re: [PATCH 12/19] drm/xe: Report 'probe blocked' error using SIGID
2026-07-23 20:37 ` [PATCH 12/19] drm/xe: Report 'probe blocked' error using SIGID Michal Wajdeczko
@ 2026-07-24 12:28 ` Aravind Iddamsetty
2026-07-24 14:19 ` Michal Wajdeczko
0 siblings, 1 reply; 37+ messages in thread
From: Aravind Iddamsetty @ 2026-07-24 12:28 UTC (permalink / raw)
To: Michal Wajdeczko, intel-xe
Cc: Rodrigo Vivi, Aravind Iddamsetty, Mallesh Koujalagi, Yoni Levitt
On 24-07-2026 02:07, Michal Wajdeczko wrote:
> Report 'probe blocked' error using xe_log_err() helper.
>
> Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
> Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
> Cc: Aravind Iddamsetty <aravind.iddamsetty@intel.com>
> Cc: Mallesh Koujalagi <mallesh.koujalagi@intel.com>
> ---
> drivers/gpu/drm/xe/xe_pci.c | 5 +++--
> 1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/xe/xe_pci.c b/drivers/gpu/drm/xe/xe_pci.c
> index 36d62927b969..a9ada8e4f081 100644
> --- a/drivers/gpu/drm/xe/xe_pci.c
> +++ b/drivers/gpu/drm/xe/xe_pci.c
> @@ -25,6 +25,7 @@
> #include "xe_gt_printk.h"
> #include "xe_gt_sriov_vf.h"
> #include "xe_guc.h"
> +#include "xe_log.h"
> #include "xe_mmio.h"
> #include "xe_module.h"
> #include "xe_pci_error.h"
> @@ -1172,8 +1173,8 @@ static int xe_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
> }
>
> if (id_blocked(pdev->device)) {
> - dev_info(&pdev->dev, "Probe blocked for device [%04x:%04x].\n",
> - pdev->vendor, pdev->device);
> + xe_log_err(pdev, PROBE, -ENODEV, "Probe
if this is due to force_probe passed by user shall not even be
considered an error.
Thanks,
Aravind.
> blocked for device [%04x:%04x]\n",
> + pdev->vendor, pdev->device);
> return -ENODEV;
> }
>
^ permalink raw reply [flat|nested] 37+ messages in thread* Re: [PATCH 12/19] drm/xe: Report 'probe blocked' error using SIGID
2026-07-24 12:28 ` Aravind Iddamsetty
@ 2026-07-24 14:19 ` Michal Wajdeczko
0 siblings, 0 replies; 37+ messages in thread
From: Michal Wajdeczko @ 2026-07-24 14:19 UTC (permalink / raw)
To: Aravind Iddamsetty, intel-xe
Cc: Rodrigo Vivi, Aravind Iddamsetty, Mallesh Koujalagi, Yoni Levitt
On 7/24/2026 2:28 PM, Aravind Iddamsetty wrote:
>
> On 24-07-2026 02:07, Michal Wajdeczko wrote:
>> Report 'probe blocked' error using xe_log_err() helper.
>>
>> Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
>> Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
>> Cc: Aravind Iddamsetty <aravind.iddamsetty@intel.com>
>> Cc: Mallesh Koujalagi <mallesh.koujalagi@intel.com>
>> ---
>> drivers/gpu/drm/xe/xe_pci.c | 5 +++--
>> 1 file changed, 3 insertions(+), 2 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/xe/xe_pci.c b/drivers/gpu/drm/xe/xe_pci.c
>> index 36d62927b969..a9ada8e4f081 100644
>> --- a/drivers/gpu/drm/xe/xe_pci.c
>> +++ b/drivers/gpu/drm/xe/xe_pci.c
>> @@ -25,6 +25,7 @@
>> #include "xe_gt_printk.h"
>> #include "xe_gt_sriov_vf.h"
>> #include "xe_guc.h"
>> +#include "xe_log.h"
>> #include "xe_mmio.h"
>> #include "xe_module.h"
>> #include "xe_pci_error.h"
>> @@ -1172,8 +1173,8 @@ static int xe_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
>> }
>>
>> if (id_blocked(pdev->device)) {
>> - dev_info(&pdev->dev, "Probe blocked for device [%04x:%04x].\n",
>> - pdev->vendor, pdev->device);
>> + xe_log_err(pdev, PROBE, -ENODEV, "Probe
>
> if this is due to force_probe passed by user shall not even be
> considered an error.
true, we can use xe_log_info(PROBE) here
and I assume the plan is to use use xe_log_err_fatal(PROBE) on all other error paths from xe_pci_probe()
>
> Thanks,
> Aravind.
>> blocked for device [%04x:%04x]\n",
>> + pdev->vendor, pdev->device);
>> return -ENODEV;
>> }
>>
^ permalink raw reply [flat|nested] 37+ messages in thread
* [PATCH 13/19] drm/xe: Report 'device wedged' errors using SIGID
2026-07-23 20:37 [PATCH 00/19] drm/xe: Add structured SIGID error logging infrastructure Michal Wajdeczko
` (11 preceding siblings ...)
2026-07-23 20:37 ` [PATCH 12/19] drm/xe: Report 'probe blocked' error using SIGID Michal Wajdeczko
@ 2026-07-23 20:37 ` Michal Wajdeczko
2026-07-23 20:37 ` [PATCH 14/19] drm/xe: Report 'Survivability Mode' " Michal Wajdeczko
` (9 subsequent siblings)
22 siblings, 0 replies; 37+ messages in thread
From: Michal Wajdeczko @ 2026-07-23 20:37 UTC (permalink / raw)
To: intel-xe
Cc: Michal Wajdeczko, Rodrigo Vivi, Aravind Iddamsetty,
Mallesh Koujalagi
Report 'device wedged' error using xe_log_err_fatal() helper.
Use -EIO as the error cause, as nothing else is provided here.
The hints about the recovery method and bug filling are now
separated as it only needs to be printed once.
Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Cc: Aravind Iddamsetty <aravind.iddamsetty@intel.com>
Cc: Mallesh Koujalagi <mallesh.koujalagi@intel.com>
---
drivers/gpu/drm/xe/xe_device.c | 16 ++++++++++------
1 file changed, 10 insertions(+), 6 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/xe_device.c
index 4eed9a251e65..b1e9bcd9f5b4 100644
--- a/drivers/gpu/drm/xe/xe_device.c
+++ b/drivers/gpu/drm/xe/xe_device.c
@@ -48,6 +48,7 @@
#include "xe_i2c.h"
#include "xe_irq.h"
#include "xe_late_bind_fw.h"
+#include "xe_log.h"
#include "xe_mmio.h"
#include "xe_module.h"
#include "xe_nvm.h"
@@ -1396,6 +1397,9 @@ void xe_device_set_wedged_method(struct xe_device *xe, unsigned long method)
xe->wedged.method = method;
}
+#define WEDGED_URL "https://docs.kernel.org/gpu/drm-uapi.html#device-wedging"
+#define XE_BUG_URL "https://gitlab.freedesktop.org/drm/xe/kernel/issues/new"
+
/**
* xe_device_declare_wedged - Declare device wedged
* @xe: xe device instance
@@ -1427,12 +1431,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_log_err_fatal(xe, WEDGED, -EIO, "Device declared wedged!\n");
+ xe_err_once(xe, "IOCTLs and executions are now blocked!\n"
+ "For recovery procedure, refer to %s\n"
+ "Please file a _new_ bug report at %s\n",
+ WEDGED_URL, XE_BUG_URL);
}
for_each_gt(gt, xe, id)
--
2.47.1
^ permalink raw reply related [flat|nested] 37+ messages in thread* [PATCH 14/19] drm/xe: Report 'Survivability Mode' errors using SIGID
2026-07-23 20:37 [PATCH 00/19] drm/xe: Add structured SIGID error logging infrastructure Michal Wajdeczko
` (12 preceding siblings ...)
2026-07-23 20:37 ` [PATCH 13/19] drm/xe: Report 'device wedged' errors " Michal Wajdeczko
@ 2026-07-23 20:37 ` Michal Wajdeczko
2026-07-23 20:37 ` [PATCH 15/19] drm/xe/guc: Report 'GuC mmio' " Michal Wajdeczko
` (8 subsequent siblings)
22 siblings, 0 replies; 37+ messages in thread
From: Michal Wajdeczko @ 2026-07-23 20:37 UTC (permalink / raw)
To: intel-xe
Cc: Michal Wajdeczko, Rodrigo Vivi, Riana Tauro, Aravind Iddamsetty,
Mallesh Koujalagi
Report various 'Survivability Mode' errors using xe_log() helpers.
Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Cc: Riana Tauro <riana.tauro@intel.com>
Cc: Aravind Iddamsetty <aravind.iddamsetty@intel.com>
Cc: Mallesh Koujalagi <mallesh.koujalagi@intel.com>
---
drivers/gpu/drm/xe/xe_survivability_mode.c | 23 ++++++++++++----------
1 file changed, 13 insertions(+), 10 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_survivability_mode.c b/drivers/gpu/drm/xe/xe_survivability_mode.c
index 4c506027fa94..47ffded9a425 100644
--- a/drivers/gpu/drm/xe/xe_survivability_mode.c
+++ b/drivers/gpu/drm/xe/xe_survivability_mode.c
@@ -14,6 +14,7 @@
#include "xe_device.h"
#include "xe_heci_gsc.h"
#include "xe_i2c.h"
+#include "xe_log.h"
#include "xe_mmio.h"
#include "xe_nvm.h"
#include "xe_pcode_api.h"
@@ -179,11 +180,11 @@ static void log_survivability_info(struct pci_dev *pdev)
u32 *info = survivability->info;
int id;
- dev_info(&pdev->dev, "Survivability Boot Status : Critical Failure (%d)\n",
- survivability->boot_status);
+ xe_log_info(xe, SURVIVABILITY, "Boot Status : Critical Failure (%d)\n",
+ survivability->boot_status);
for (id = 0; id < MAX_SCRATCH_REG; id++) {
if (info[id])
- dev_info(&pdev->dev, "%s: 0x%x\n", reg_map[id], info[id]);
+ xe_log_info(xe, SURVIVABILITY, "%s: 0x%x\n", reg_map[id], info[id]);
}
}
@@ -316,7 +317,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;
@@ -342,12 +342,12 @@ static int enable_boot_survivability_mode(struct pci_dev *pdev)
if (ret)
goto err;
- dev_err(dev, "In Survivability Mode\n");
-
+ xe_log_emit(pdev, check_boot_failure(xe) ? CPER_SEV_FATAL : CPER_SEV_INFORMATIONAL,
+ XE_SIGID_SURVIVABILITY, 0, 0, 0, 0, "In Survivability Boot Mode\n");
return 0;
err:
- dev_err(dev, "Failed to enable Survivability Mode\n");
+ xe_log_err_fatal(xe, SURVIVABILITY, ret, "Failed to enable Survivability Mode\n");
survivability->mode = false;
return ret;
}
@@ -412,7 +412,7 @@ void xe_survivability_mode_runtime_enable(struct xe_device *xe)
struct pci_dev *pdev = to_pci_dev(xe->drm.dev);
if (!IS_DGFX(xe) || IS_SRIOV_VF(xe) || xe->info.platform < XE_BATTLEMAGE) {
- dev_err(&pdev->dev, "Runtime Survivability Mode not supported\n");
+ xe_log_info(xe, SURVIVABILITY, "Runtime Mode not supported!\n");
return;
}
@@ -422,11 +422,14 @@ 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_log_err_fatal(xe, SURVIVABILITY, 0, "Runtime Mode enabled!\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");
+
+ xe_log_err_fatal(xe, SURVIVABILITY, 0, "Firmware flash required!\n");
+ xe_info(xe, "Please refer to the userspace documentation for more details how to flash the firmware on %s!\n",
+ xe->info.platform_name);
}
/**
--
2.47.1
^ permalink raw reply related [flat|nested] 37+ messages in thread* [PATCH 15/19] drm/xe/guc: Report 'GuC mmio' errors using SIGID
2026-07-23 20:37 [PATCH 00/19] drm/xe: Add structured SIGID error logging infrastructure Michal Wajdeczko
` (13 preceding siblings ...)
2026-07-23 20:37 ` [PATCH 14/19] drm/xe: Report 'Survivability Mode' " Michal Wajdeczko
@ 2026-07-23 20:37 ` Michal Wajdeczko
2026-07-23 20:37 ` [PATCH 16/19] drm/xe/pcode: Report 'Mailbox failed' error " Michal Wajdeczko
` (7 subsequent siblings)
22 siblings, 0 replies; 37+ messages in thread
From: Michal Wajdeczko @ 2026-07-23 20:37 UTC (permalink / raw)
To: intel-xe
Cc: Michal Wajdeczko, Rodrigo Vivi, Daniele Ceraolo Spurio,
Aravind Iddamsetty, Mallesh Koujalagi
Report various 'GuC mmio' errors using xe_log() helpers.
Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Cc: Aravind Iddamsetty <aravind.iddamsetty@intel.com>
Cc: Mallesh Koujalagi <mallesh.koujalagi@intel.com>
---
drivers/gpu/drm/xe/xe_guc.c | 18 ++++++++++--------
1 file changed, 10 insertions(+), 8 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_guc.c b/drivers/gpu/drm/xe/xe_guc.c
index 4286bd05c686..c7f8bbd4cb92 100644
--- a/drivers/gpu/drm/xe/xe_guc.c
+++ b/drivers/gpu/drm/xe/xe_guc.c
@@ -39,6 +39,7 @@
#include "xe_guc_rc.h"
#include "xe_guc_relay.h"
#include "xe_guc_submit.h"
+#include "xe_log.h"
#include "xe_memirq.h"
#include "xe_mmio.h"
#include "xe_platform_types.h"
@@ -1542,8 +1543,9 @@ int xe_guc_mmio_send_recv(struct xe_guc *guc, const u32 *request,
/* scratch registers might be cleared during FLR, try once more */
if (!header) {
if (++lost > MAX_RETRIES_ON_FLR) {
- xe_gt_err(gt, "GuC mmio request %#x: lost, too many retries %u\n",
- request[0], lost);
+ xe_log_err(gt, GUC, -ENOLINK,
+ "MMIO request %#x: lost, too many retries %u\n",
+ request[0], lost);
return -ENOLINK;
}
xe_gt_dbg(gt, "GuC mmio request %#x: lost, trying again\n", request[0]);
@@ -1551,8 +1553,8 @@ int xe_guc_mmio_send_recv(struct xe_guc *guc, const u32 *request,
goto retry;
}
timeout:
- xe_gt_err(gt, "GuC mmio request %#x: no reply %#x\n",
- request[0], header);
+ xe_log_err(gt, GUC, ret, "MMIO request %#x: no reply %#x\n",
+ request[0], header);
return ret;
}
@@ -1607,16 +1609,16 @@ int xe_guc_mmio_send_recv(struct xe_guc *guc, const u32 *request,
return -EREMCHG;
}
- xe_gt_err(gt, "GuC mmio request %#x: failure %#x hint %#x\n",
- request[0], error, hint);
+ xe_log_err(gt, GUC, -ENXIO, "MMIO request %#x: failure %#x hint %#x\n",
+ request[0], error, hint);
return -ENXIO;
}
if (FIELD_GET(GUC_HXG_MSG_0_TYPE, header) !=
GUC_HXG_TYPE_RESPONSE_SUCCESS) {
proto:
- xe_gt_err(gt, "GuC mmio request %#x: unexpected reply %#x\n",
- request[0], header);
+ xe_log_err(gt, GUC, -EPROTO, "MMIO request %#x: unexpected reply %#x\n",
+ request[0], header);
return -EPROTO;
}
--
2.47.1
^ permalink raw reply related [flat|nested] 37+ messages in thread* [PATCH 16/19] drm/xe/pcode: Report 'Mailbox failed' error using SIGID
2026-07-23 20:37 [PATCH 00/19] drm/xe: Add structured SIGID error logging infrastructure Michal Wajdeczko
` (14 preceding siblings ...)
2026-07-23 20:37 ` [PATCH 15/19] drm/xe/guc: Report 'GuC mmio' " Michal Wajdeczko
@ 2026-07-23 20:37 ` Michal Wajdeczko
2026-07-23 20:37 ` [PATCH 17/19] drm/xe/gt: Report 'reset failed' errors " Michal Wajdeczko
` (6 subsequent siblings)
22 siblings, 0 replies; 37+ messages in thread
From: Michal Wajdeczko @ 2026-07-23 20:37 UTC (permalink / raw)
To: intel-xe
Cc: Michal Wajdeczko, Rodrigo Vivi, Riana Tauro, Aravind Iddamsetty,
Mallesh Koujalagi
Report 'Mailbox failed' error using xe_log() helper.
Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Cc: Riana Tauro <riana.tauro@intel.com>
Cc: Aravind Iddamsetty <aravind.iddamsetty@intel.com>
Cc: Mallesh Koujalagi <mallesh.koujalagi@intel.com>
---
drivers/gpu/drm/xe/xe_pcode.c | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_pcode.c b/drivers/gpu/drm/xe/xe_pcode.c
index ccc3bdeed6bb..014632e11338 100644
--- a/drivers/gpu/drm/xe/xe_pcode.c
+++ b/drivers/gpu/drm/xe/xe_pcode.c
@@ -14,6 +14,7 @@
#include "regs/xe_pmt.h"
#include "xe_assert.h"
#include "xe_device.h"
+#include "xe_log.h"
#include "xe_mmio.h"
#include "xe_pcode_api.h"
#include "xe_pm.h"
@@ -61,9 +62,7 @@ static int pcode_mailbox_status(struct xe_tile *tile)
}
if (err) {
- drm_err(&tile_to_xe(tile)->drm, "PCODE Mailbox failed: %d %s",
- err_decode, err_str);
-
+ xe_log_err(tile, PCODE, err_decode, "Mailbox failed: %s\n", err_str);
return err_decode;
}
--
2.47.1
^ permalink raw reply related [flat|nested] 37+ messages in thread* [PATCH 17/19] drm/xe/gt: Report 'reset failed' errors using SIGID
2026-07-23 20:37 [PATCH 00/19] drm/xe: Add structured SIGID error logging infrastructure Michal Wajdeczko
` (15 preceding siblings ...)
2026-07-23 20:37 ` [PATCH 16/19] drm/xe/pcode: Report 'Mailbox failed' error " Michal Wajdeczko
@ 2026-07-23 20:37 ` Michal Wajdeczko
2026-07-23 20:37 ` [PATCH 18/19] drm/xe/gt: Report 'pagefault' " Michal Wajdeczko
` (5 subsequent siblings)
22 siblings, 0 replies; 37+ messages in thread
From: Michal Wajdeczko @ 2026-07-23 20:37 UTC (permalink / raw)
To: intel-xe
Cc: Michal Wajdeczko, Rodrigo Vivi, Matthew Brost,
Daniele Ceraolo Spurio, Aravind Iddamsetty, Mallesh Koujalagi
Report 'reset' related err/info messages using xe_log() helpers.
Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Cc: Matthew Brost <matthew.brost@intel.com>
Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Cc: Aravind Iddamsetty <aravind.iddamsetty@intel.com>
Cc: Mallesh Koujalagi <mallesh.koujalagi@intel.com>
---
drivers/gpu/drm/xe/xe_gt.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_gt.c b/drivers/gpu/drm/xe/xe_gt.c
index dfdacc0f6de9..6805e0d3bf21 100644
--- a/drivers/gpu/drm/xe/xe_gt.c
+++ b/drivers/gpu/drm/xe/xe_gt.c
@@ -48,6 +48,7 @@
#include "xe_hw_engine_class_sysfs.h"
#include "xe_irq.h"
#include "xe_lmtt.h"
+#include "xe_log.h"
#include "xe_lrc.h"
#include "xe_map.h"
#include "xe_migrate.h"
@@ -925,7 +926,7 @@ static void gt_reset_worker(struct work_struct *w)
if (!xe_device_uc_enabled(gt_to_xe(gt)))
goto err_pm_put;
- xe_gt_info(gt, "reset started\n");
+ xe_log_info(gt, GT, "reset started\n");
if (xe_fault_gt_reset()) {
err = -ECANCELED;
@@ -964,7 +965,7 @@ static void gt_reset_worker(struct work_struct *w)
/* Pair with get while enqueueing the work in xe_gt_reset_async() */
xe_pm_runtime_put(gt_to_xe(gt));
- xe_gt_info(gt, "reset done\n");
+ xe_log_info(gt, GT, "reset done\n");
return;
@@ -973,7 +974,7 @@ static void gt_reset_worker(struct work_struct *w)
XE_WARN_ON(xe_uc_start(>->uc));
err_fail:
- xe_gt_err(gt, "reset failed (%pe)\n", ERR_PTR(err));
+ xe_log_err_fatal(gt, GT, err, "reset failed\n");
xe_device_declare_wedged(gt_to_xe(gt));
err_pm_put:
xe_pm_runtime_put(gt_to_xe(gt));
--
2.47.1
^ permalink raw reply related [flat|nested] 37+ messages in thread* [PATCH 18/19] drm/xe/gt: Report 'pagefault' errors using SIGID
2026-07-23 20:37 [PATCH 00/19] drm/xe: Add structured SIGID error logging infrastructure Michal Wajdeczko
` (16 preceding siblings ...)
2026-07-23 20:37 ` [PATCH 17/19] drm/xe/gt: Report 'reset failed' errors " Michal Wajdeczko
@ 2026-07-23 20:37 ` Michal Wajdeczko
2026-07-23 22:02 ` Michal Wajdeczko
2026-07-23 20:37 ` [PATCH 19/19] drm/xe/pci: Report 'cannot re-enable' error " Michal Wajdeczko
` (4 subsequent siblings)
22 siblings, 1 reply; 37+ messages in thread
From: Michal Wajdeczko @ 2026-07-23 20:37 UTC (permalink / raw)
To: intel-xe
Cc: Michal Wajdeczko, Rodrigo Vivi, Matthew Brost,
Daniele Ceraolo Spurio, Aravind Iddamsetty, Mallesh Koujalagi
Report 'Queue full/Unsuccessful response' pagefault errors using
xe_log() helpers.
Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Cc: Matthew Brost <matthew.brost@intel.com>
Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Cc: Aravind Iddamsetty <aravind.iddamsetty@intel.com>
Cc: Mallesh Koujalagi <mallesh.koujalagi@intel.com>
---
drivers/gpu/drm/xe/xe_pagefault.c | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_pagefault.c b/drivers/gpu/drm/xe/xe_pagefault.c
index dd3c068e1a39..e78c855759e1 100644
--- a/drivers/gpu/drm/xe/xe_pagefault.c
+++ b/drivers/gpu/drm/xe/xe_pagefault.c
@@ -14,6 +14,7 @@
#include "xe_gt_types.h"
#include "xe_gt_stats.h"
#include "xe_hw_engine.h"
+#include "xe_log.h"
#include "xe_pagefault.h"
#include "xe_pagefault_types.h"
#include "xe_svm.h"
@@ -309,8 +310,7 @@ static void xe_pagefault_queue_work(struct work_struct *w)
xe_pagefault_save_to_vm(gt_to_xe(pf.gt), &pf);
if (!(pf.consumer.access_type & XE_PAGEFAULT_ACCESS_PREFETCH)) {
xe_pagefault_print(&pf);
- xe_gt_info(pf.gt, "Fault response: Unsuccessful %pe\n",
- ERR_PTR(err));
+ xe_log_err(pf.gt, PAGEFAULT, err, "Fault response: Unsuccessful\n");
} else {
xe_gt_stats_incr(pf.gt, XE_GT_STATS_ID_INVALID_PREFETCH_PAGEFAULT_COUNT, 1);
xe_gt_dbg(pf.gt, "Prefetch Fault response: Unsuccessful %pe\n",
@@ -487,9 +487,9 @@ int xe_pagefault_handler(struct xe_device *xe, struct xe_pagefault *pf)
pf_queue->size;
queue_work(xe->usm.pf_wq, &pf_queue->worker);
} else {
- drm_warn(&xe->drm,
- "PageFault Queue (%d) full, shouldn't be possible\n",
- pf->consumer.asid % XE_PAGEFAULT_QUEUE_COUNT);
+ xe_log_err(xe, PAGEFAULT, -ENOSPC,
+ "Queue (%d) full, shouldn't be possible\n",
+ pf->consumer.asid % XE_PAGEFAULT_QUEUE_COUNT);
}
spin_unlock_irqrestore(&pf_queue->lock, flags);
--
2.47.1
^ permalink raw reply related [flat|nested] 37+ messages in thread* Re: [PATCH 18/19] drm/xe/gt: Report 'pagefault' errors using SIGID
2026-07-23 20:37 ` [PATCH 18/19] drm/xe/gt: Report 'pagefault' " Michal Wajdeczko
@ 2026-07-23 22:02 ` Michal Wajdeczko
0 siblings, 0 replies; 37+ messages in thread
From: Michal Wajdeczko @ 2026-07-23 22:02 UTC (permalink / raw)
To: intel-xe
Cc: Rodrigo Vivi, Matthew Brost, Daniele Ceraolo Spurio,
Aravind Iddamsetty, Mallesh Koujalagi
On 7/23/2026 10:37 PM, Michal Wajdeczko wrote:
> Report 'Queue full/Unsuccessful response' pagefault errors using
> xe_log() helpers.
>
> Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
> Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
> Cc: Matthew Brost <matthew.brost@intel.com>
> Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
> Cc: Aravind Iddamsetty <aravind.iddamsetty@intel.com>
> Cc: Mallesh Koujalagi <mallesh.koujalagi@intel.com>
> ---
> drivers/gpu/drm/xe/xe_pagefault.c | 10 +++++-----
> 1 file changed, 5 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/gpu/drm/xe/xe_pagefault.c b/drivers/gpu/drm/xe/xe_pagefault.c
> index dd3c068e1a39..e78c855759e1 100644
> --- a/drivers/gpu/drm/xe/xe_pagefault.c
> +++ b/drivers/gpu/drm/xe/xe_pagefault.c
> @@ -14,6 +14,7 @@
> #include "xe_gt_types.h"
> #include "xe_gt_stats.h"
> #include "xe_hw_engine.h"
> +#include "xe_log.h"
> #include "xe_pagefault.h"
> #include "xe_pagefault_types.h"
> #include "xe_svm.h"
> @@ -309,8 +310,7 @@ static void xe_pagefault_queue_work(struct work_struct *w)
> xe_pagefault_save_to_vm(gt_to_xe(pf.gt), &pf);
> if (!(pf.consumer.access_type & XE_PAGEFAULT_ACCESS_PREFETCH)) {
> xe_pagefault_print(&pf);
> - xe_gt_info(pf.gt, "Fault response: Unsuccessful %pe\n",
> - ERR_PTR(err));
> + xe_log_err(pf.gt, PAGEFAULT, err, "Fault response: Unsuccessful\n");
likely we should update igt-dmesg-regex, as now we can see:
<6> [97.791592] [IGT] xe_exec_fault_mode: starting subtest invalid-va
<6> [97.817628] xe 0000:00:02.0: [drm] Tile0: GT0:
ASID: 188
Faulted Address: 0x0000fffffffff000
FaultType: 0
AccessType: 1
FaultLevel: 3
EngineClass: 0 rcs
EngineInstance: 0
<3> [97.817690] xe 0000:00:02.0: [drm] *ERROR* SIGID=107 (-EINVAL) Tile0: GT0: PAGEFAULT: Fault response: Unsuccessful
<6> [97.828714] xe 0000:00:02.0: [drm] Tile0: GT0: Engine memory CAT error [18]: class=rcs, logical_mask: 0x1, guc_id=3
or
<6> [102.287988] [IGT] xe_exec_system_allocator: starting subtest fault
<6> [102.288628] [IGT] add ignored dmesg regex: [Mm]emory CAT error
<6> [102.306296] xe 0000:00:02.0: [drm] Tile0: GT0:
ASID: 220
Faulted Address: 0x0000fd8bd7400000
FaultType: 0
AccessType: 0
FaultLevel: 4
EngineClass: 0 rcs
EngineInstance: 0
<3> [102.306313] xe 0000:00:02.0: [drm] *ERROR* SIGID=107 (-ENOENT) Tile0: GT0: PAGEFAULT: Fault response: Unsuccessful
<6> [102.316934] xe 0000:00:02.0: [drm] Tile0: GT0: Engine memory CAT error [18]: class=rcs, logical_mask: 0x1, guc_id=3
<6> [102.316973] xe 0000:00:02.0: [drm] exec queue reset detected
> } else {
> xe_gt_stats_incr(pf.gt, XE_GT_STATS_ID_INVALID_PREFETCH_PAGEFAULT_COUNT, 1);
> xe_gt_dbg(pf.gt, "Prefetch Fault response: Unsuccessful %pe\n",
> @@ -487,9 +487,9 @@ int xe_pagefault_handler(struct xe_device *xe, struct xe_pagefault *pf)
> pf_queue->size;
> queue_work(xe->usm.pf_wq, &pf_queue->worker);
> } else {
> - drm_warn(&xe->drm,
> - "PageFault Queue (%d) full, shouldn't be possible\n",
> - pf->consumer.asid % XE_PAGEFAULT_QUEUE_COUNT);
> + xe_log_err(xe, PAGEFAULT, -ENOSPC,
> + "Queue (%d) full, shouldn't be possible\n",
> + pf->consumer.asid % XE_PAGEFAULT_QUEUE_COUNT);
> }
> spin_unlock_irqrestore(&pf_queue->lock, flags);
>
^ permalink raw reply [flat|nested] 37+ messages in thread
* [PATCH 19/19] drm/xe/pci: Report 'cannot re-enable' error using SIGID
2026-07-23 20:37 [PATCH 00/19] drm/xe: Add structured SIGID error logging infrastructure Michal Wajdeczko
` (17 preceding siblings ...)
2026-07-23 20:37 ` [PATCH 18/19] drm/xe/gt: Report 'pagefault' " Michal Wajdeczko
@ 2026-07-23 20:37 ` Michal Wajdeczko
2026-07-23 20:44 ` ✗ CI.checkpatch: warning for drm/xe: Add structured SIGID error logging infrastructure Patchwork
` (3 subsequent siblings)
22 siblings, 0 replies; 37+ messages in thread
From: Michal Wajdeczko @ 2026-07-23 20:37 UTC (permalink / raw)
To: intel-xe
Cc: Michal Wajdeczko, Rodrigo Vivi, Riana Tauro, Aravind Iddamsetty,
Mallesh Koujalagi
Report 'cannot re-enable PCI device' error using xe_log() helper.
Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Cc: Riana Tauro <riana.tauro@intel.com>
Cc: Aravind Iddamsetty <aravind.iddamsetty@intel.com>
Cc: Mallesh Koujalagi <mallesh.koujalagi@intel.com>
---
drivers/gpu/drm/xe/xe_pci_error.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_pci_error.c b/drivers/gpu/drm/xe/xe_pci_error.c
index e41af2ac7f23..fb965f52be5e 100644
--- a/drivers/gpu/drm/xe/xe_pci_error.c
+++ b/drivers/gpu/drm/xe/xe_pci_error.c
@@ -7,6 +7,7 @@
#include "xe_device.h"
#include "xe_gt.h"
+#include "xe_log.h"
#include "xe_pci.h"
#include "xe_pm.h"
#include "xe_printk.h"
@@ -90,13 +91,15 @@ static pci_ers_result_t xe_pci_error_slot_reset(struct pci_dev *pdev)
{
const struct pci_device_id *ent = pci_match_id(pdev->driver->id_table, pdev);
struct xe_device *xe = pdev_to_xe_device(pdev);
+ int err;
xe_info(xe, "PCI error: slot reset\n");
pci_restore_state(pdev);
- if (pci_enable_device(pdev)) {
- xe_err(xe, "Cannot re-enable PCI device after reset\n");
+ err = pci_enable_device(pdev);
+ if (err) {
+ xe_log_err_fatal(xe, PCI, err, "Cannot re-enable PCI device after reset\n");
return PCI_ERS_RESULT_DISCONNECT;
}
--
2.47.1
^ permalink raw reply related [flat|nested] 37+ messages in thread* ✗ CI.checkpatch: warning for drm/xe: Add structured SIGID error logging infrastructure
2026-07-23 20:37 [PATCH 00/19] drm/xe: Add structured SIGID error logging infrastructure Michal Wajdeczko
` (18 preceding siblings ...)
2026-07-23 20:37 ` [PATCH 19/19] drm/xe/pci: Report 'cannot re-enable' error " Michal Wajdeczko
@ 2026-07-23 20:44 ` Patchwork
2026-07-23 20:45 ` ✓ CI.KUnit: success " Patchwork
` (2 subsequent siblings)
22 siblings, 0 replies; 37+ messages in thread
From: Patchwork @ 2026-07-23 20:44 UTC (permalink / raw)
To: Michal Wajdeczko; +Cc: intel-xe
== Series Details ==
Series: drm/xe: Add structured SIGID error logging infrastructure
URL : https://patchwork.freedesktop.org/series/171022/
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 83370fd5c591fc01132cb41ffac909227e7dd9f5
Author: Michal Wajdeczko <michal.wajdeczko@intel.com>
Date: Thu Jul 23 22:37:52 2026 +0200
drm/xe/pci: Report 'cannot re-enable' error using SIGID
Report 'cannot re-enable PCI device' error using xe_log() helper.
Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Cc: Riana Tauro <riana.tauro@intel.com>
Cc: Aravind Iddamsetty <aravind.iddamsetty@intel.com>
Cc: Mallesh Koujalagi <mallesh.koujalagi@intel.com>
+ /mt/dim checkpatch 1b41172259f1c761714ee4d65a4386b42181c492 drm-intel
a286959c6435 drm/xe/log: Add structured SIGID error logging infrastructure
-:35: WARNING:FILE_PATH_CHANGES: added, moved or deleted file(s), does MAINTAINERS need updating?
#35:
new file mode 100644
total: 0 errors, 1 warnings, 0 checks, 360 lines checked
97ceba5a328b drm/xe: Introduce xe_any helpers
-:21: WARNING:FILE_PATH_CHANGES: added, moved or deleted file(s), does MAINTAINERS need updating?
#21:
new file mode 100644
-:46: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'any' - possible side-effects?
#46: FILE: drivers/gpu/drm/xe/xe_any.h:21:
+#define xe_any_if_type(any, type) \
+ _Generic((any), \
+ type * : (any), \
+ const type * : (any), \
+ default : NULL)
-:50: WARNING:TABSTOP: Statements should start on a tabstop
#50: FILE: drivers/gpu/drm/xe/xe_any.h:25:
+ default : NULL)
-:50: ERROR:TRAILING_STATEMENTS: trailing statements should be on next line
#50: FILE: drivers/gpu/drm/xe/xe_any.h:25:
+ default : NULL)
-:90: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'any' - possible side-effects?
#90: FILE: drivers/gpu/drm/xe/xe_any.h:65:
+#define xe_any_to_xe(any) \
+ _Generic((any), \
+ struct pci_dev * : pdev_to_xe_device((struct pci_dev *)(any)), \
+ struct xe_device * : (any), \
+ struct xe_tile * : ((struct xe_tile *)(any))->xe, \
+ struct xe_gt * : ((struct xe_gt *)(any))->tile->xe)
-:103: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'any' - possible side-effects?
#103: FILE: drivers/gpu/drm/xe/xe_any.h:78:
+#define xe_any_to_dev(any) \
+ _Generic((any), \
+ struct device * : (any), \
+ default : xe_any_to_xe(any)->drm.dev)
-:106: WARNING:TABSTOP: Statements should start on a tabstop
#106: FILE: drivers/gpu/drm/xe/xe_any.h:81:
+ default : xe_any_to_xe(any)->drm.dev)
-:106: ERROR:TRAILING_STATEMENTS: trailing statements should be on next line
#106: FILE: drivers/gpu/drm/xe/xe_any.h:81:
+ default : xe_any_to_xe(any)->drm.dev)
-:114: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'any' - possible side-effects?
#114: FILE: drivers/gpu/drm/xe/xe_any.h:89:
+#define xe_any_to_pdev(any) \
+ _Generic((any), \
+ struct pci_dev * : (any), \
+ default : to_pci_dev(xe_any_to_dev(any)))
-:117: WARNING:TABSTOP: Statements should start on a tabstop
#117: FILE: drivers/gpu/drm/xe/xe_any.h:92:
+ default : to_pci_dev(xe_any_to_dev(any)))
-:117: ERROR:TRAILING_STATEMENTS: trailing statements should be on next line
#117: FILE: drivers/gpu/drm/xe/xe_any.h:92:
+ default : to_pci_dev(xe_any_to_dev(any)))
-:125: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'any' - possible side-effects?
#125: FILE: drivers/gpu/drm/xe/xe_any.h:100:
+#define xe_any_id(any) \
+ _Generic((any), \
+ struct pci_dev * : 0, \
+ struct xe_device * : 0, \
+ struct xe_tile * : ((struct xe_tile *)(any))->id, \
+ struct xe_gt * : ((struct xe_gt *)(any))->info.id)
total: 3 errors, 4 warnings, 5 checks, 107 lines checked
cda2c8890280 drm/xe/log: Add simple helpers for xe_log_emit
cd5cacb970e5 drm/xe/log: Allow to emit SIGID dmesg/cper separately
c1f92749f1a9 drm/xe/log: Add Tile/GT decorations for dmesg message
-:40: ERROR:SPACING: spaces required around that '=' (ctx:VxW)
#40: FILE: drivers/gpu/drm/xe/xe_log.h:39:
+ struct xe_tile *__tile__= (tile); \
^
-:51: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'fmt' - possible side-effects?
#51: FILE: drivers/gpu/drm/xe/xe_log.h:50:
+#define xe_log_emit_dmesg_from(any, sev, sig, data, len, fmt, args...) do { \
+ typeof(any) __any_ = (any); \
+ struct pci_dev *__pdev_ = xe_any_to_pdev(__any_); \
+ struct xe_tile *__tile_ = xe_any_if_tile(__any_); \
+ struct xe_device *__xe_ = xe_any_if_xe(__any_); \
+ struct xe_gt *__gt_ = xe_any_if_gt(__any_); \
+ int __sev_ = (sev); \
+ int __sig_ = (sig); \
+ const void *__data_ = (data); \
+ size_t __len_ = (len); \
+ if (__gt_) \
+ xe_log_emit_gt_dmesg(__gt_, __sev_, __sig_, \
+ __data_, __len_, fmt, ##args); \
+ else if (__tile_) \
+ xe_log_emit_tile_dmesg(__tile_, __sev_, __sig_, \
+ __data_, __len_, fmt, ##args); \
+ else if (__xe_) \
+ xe_log_emit_xe_dmesg(__xe_, __sev_, __sig_, \
+ __data_, __len_, fmt, ##args); \
+ else if (!__gt_ && !__tile_ && !__xe_) \
+ xe_log_emit_dmesg(__pdev_, __sev_, __sig_, \
+ __data_, __len_, fmt, ##args); \
+} while (0)
-:75: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'fmt' - possible side-effects?
#75: FILE: drivers/gpu/drm/xe/xe_log.h:74:
+#define xe_log_emit_from(any, sev, sig, comp, loc, data, len, fmt, args...) do { \
+ typeof(any) ___any = (any); \
+ struct pci_dev *___pdev = xe_any_to_pdev(___any); \
+ int ___sev = (sev); \
+ int ___sig = (sig); \
+ const void *___data = (data); \
+ size_t ___len = (len); \
+ xe_log_emit_dmesg_from(___any, ___sev, ___sig, ___data, ___len, fmt, ##args); \
+ xe_log_emit_cper(___pdev, ___sev, ___sig, (comp), (loc), \
+ ___data, ___len, fmt, ##args); \
+} while (0)
total: 1 errors, 0 warnings, 2 checks, 71 lines checked
ce5303aefb06 drm/xe/log: Introduce structured log components
-:14: WARNING:FILE_PATH_CHANGES: added, moved or deleted file(s), does MAINTAINERS need updating?
#14:
new file mode 100644
-:144: ERROR:COMPLEX_MACRO: Macros with complex values should be enclosed in parentheses
#144: FILE: drivers/gpu/drm/xe/abi/xe_log_abi.h:126:
+#define DEFINE_XE_LOG_COMPONENTS(define) \
+ /* */ \
+ define(SYSTEM, 1, PCI, SW, "Linux PCI Subsystem") \
+ define(SYSTEM, 2, DRM, SW, "DRM") \
+ /* */ \
+ define(DRIVER, 1, XE, SW, "Xe Driver") \
+ define(DRIVER, 2, PROBE, PROBE, "Driver Initialization") \
+ define(DRIVER, 3, WEDGED, WEDGED, "Device Malfunction") \
+ define(DRIVER, 4, RTP, SW, "Register Table Processing") \
+ define(DRIVER, 5, WA, SW, "Workarounds") \
+ define(DRIVER, 6, PAGEFAULT, MEM_FAULT, "Page Fault") \
+ /* */ \
+ define(DRIVER_HARDWARE, 1, REGS, IO_BUS, "Registers") \
+ define(DRIVER_HARDWARE, 2, GGTT, IO_BUS, "Global GTT") \
+ define(DRIVER_HARDWARE, 3, GT, GT_TDR, "Graphics Technology") \
+ define(DRIVER_HARDWARE, 4, LMTT, IO_BUS, "LMEM Translation Table") \
+ define(DRIVER_HARDWARE, 5, MEMIRQ, IO_BUS, "Memory Based IRQ") \
+ /* */ \
+ define(DRIVER_FEATURE, 1, PF, SW, "SR-IOV Physical Function") \
+ define(DRIVER_FEATURE, 2, VF, SW, "SR-IOV Virtual Function") \
+ define(DRIVER_FEATURE, 3, SURVIVABILITY, SURVIVABILITY, "Survivability") \
+ define(DRIVER_FEATURE, 4, RAS, SW, "Reliability, Accessibility, Serviceability") \
+ /* */ \
+ define(DRIVER_FIRMWARE, 1, GUC, RUNTIME_FW, "GuC") \
+ define(DRIVER_FIRMWARE, 2, HUC, RUNTIME_FW, "HuC") \
+ define(DRIVER_FIRMWARE, 3, GSC, RUNTIME_FW, "GSC") \
+ define(DRIVER_FIRMWARE, 16, PCODE, DEVICE_FW, "PCode") \
+ define(DRIVER_FIRMWARE, 17, SYSCTRL, DEVICE_FW, "System Controller") \
+ /* eod */
BUT SEE:
do {} while (0) advice is over-stated in a few situations:
The more obvious case is macros, like MODULE_PARM_DESC, invoked at
file-scope, where C disallows code (it must be in functions). See
$exceptions if you have one to add by name.
More troublesome is declarative macros used at top of new scope,
like DECLARE_PER_CPU. These might just compile with a do-while-0
wrapper, but would be incorrect. Most of these are handled by
detecting struct,union,etc declaration primitives in $exceptions.
Theres also macros called inside an if (block), which "return" an
expression. These cannot do-while, and need a ({}) wrapper.
Enjoy this qualification while we work to improve our heuristics.
-:144: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'define' - possible side-effects?
#144: FILE: drivers/gpu/drm/xe/abi/xe_log_abi.h:126:
+#define DEFINE_XE_LOG_COMPONENTS(define) \
+ /* */ \
+ define(SYSTEM, 1, PCI, SW, "Linux PCI Subsystem") \
+ define(SYSTEM, 2, DRM, SW, "DRM") \
+ /* */ \
+ define(DRIVER, 1, XE, SW, "Xe Driver") \
+ define(DRIVER, 2, PROBE, PROBE, "Driver Initialization") \
+ define(DRIVER, 3, WEDGED, WEDGED, "Device Malfunction") \
+ define(DRIVER, 4, RTP, SW, "Register Table Processing") \
+ define(DRIVER, 5, WA, SW, "Workarounds") \
+ define(DRIVER, 6, PAGEFAULT, MEM_FAULT, "Page Fault") \
+ /* */ \
+ define(DRIVER_HARDWARE, 1, REGS, IO_BUS, "Registers") \
+ define(DRIVER_HARDWARE, 2, GGTT, IO_BUS, "Global GTT") \
+ define(DRIVER_HARDWARE, 3, GT, GT_TDR, "Graphics Technology") \
+ define(DRIVER_HARDWARE, 4, LMTT, IO_BUS, "LMEM Translation Table") \
+ define(DRIVER_HARDWARE, 5, MEMIRQ, IO_BUS, "Memory Based IRQ") \
+ /* */ \
+ define(DRIVER_FEATURE, 1, PF, SW, "SR-IOV Physical Function") \
+ define(DRIVER_FEATURE, 2, VF, SW, "SR-IOV Virtual Function") \
+ define(DRIVER_FEATURE, 3, SURVIVABILITY, SURVIVABILITY, "Survivability") \
+ define(DRIVER_FEATURE, 4, RAS, SW, "Reliability, Accessibility, Serviceability") \
+ /* */ \
+ define(DRIVER_FIRMWARE, 1, GUC, RUNTIME_FW, "GuC") \
+ define(DRIVER_FIRMWARE, 2, HUC, RUNTIME_FW, "HuC") \
+ define(DRIVER_FIRMWARE, 3, GSC, RUNTIME_FW, "GSC") \
+ define(DRIVER_FIRMWARE, 16, PCODE, DEVICE_FW, "PCode") \
+ define(DRIVER_FIRMWARE, 17, SYSCTRL, DEVICE_FW, "System Controller") \
+ /* eod */
-:179: ERROR:COMPLEX_MACRO: Macros with complex values should be enclosed in parentheses
#179: FILE: drivers/gpu/drm/xe/abi/xe_log_abi.h:161:
+#define MAKE_XE_LOG_COMPONENT_ENUM(_CLASS, _ID, _TAG, _SIG, _NAME) \
+ XE_LOG_COMPONENT_##_TAG = MAKE_XE_LOG_COMPONENT(_CLASS, (_ID)), \
+ XE_LOG_COMPONENT_##_CLASS##_##_ID = XE_LOG_COMPONENT_##_TAG, \
+ /* eod */
BUT SEE:
do {} while (0) advice is over-stated in a few situations:
The more obvious case is macros, like MODULE_PARM_DESC, invoked at
file-scope, where C disallows code (it must be in functions). See
$exceptions if you have one to add by name.
More troublesome is declarative macros used at top of new scope,
like DECLARE_PER_CPU. These might just compile with a do-while-0
wrapper, but would be incorrect. Most of these are handled by
detecting struct,union,etc declaration primitives in $exceptions.
Theres also macros called inside an if (block), which "return" an
expression. These cannot do-while, and need a ({}) wrapper.
Enjoy this qualification while we work to improve our heuristics.
-:179: WARNING:MACRO_ARG_UNUSED: Argument '_SIG' is not used in function-like macro
#179: FILE: drivers/gpu/drm/xe/abi/xe_log_abi.h:161:
+#define MAKE_XE_LOG_COMPONENT_ENUM(_CLASS, _ID, _TAG, _SIG, _NAME) \
+ XE_LOG_COMPONENT_##_TAG = MAKE_XE_LOG_COMPONENT(_CLASS, (_ID)), \
+ XE_LOG_COMPONENT_##_CLASS##_##_ID = XE_LOG_COMPONENT_##_TAG, \
+ /* eod */
-:179: WARNING:MACRO_ARG_UNUSED: Argument '_NAME' is not used in function-like macro
#179: FILE: drivers/gpu/drm/xe/abi/xe_log_abi.h:161:
+#define MAKE_XE_LOG_COMPONENT_ENUM(_CLASS, _ID, _TAG, _SIG, _NAME) \
+ XE_LOG_COMPONENT_##_TAG = MAKE_XE_LOG_COMPONENT(_CLASS, (_ID)), \
+ XE_LOG_COMPONENT_##_CLASS##_##_ID = XE_LOG_COMPONENT_##_TAG, \
+ /* eod */
-:192: ERROR:COMPLEX_MACRO: Macros with complex values should be enclosed in parentheses
#192: FILE: drivers/gpu/drm/xe/abi/xe_log_abi.h:174:
+#define MAKE_XE_LOG_COMPONENT_SIGID(_CLASS, _ID, _TAG, _SIG, _NAME) \
+ XE_LOG_COMPONENT_##_TAG##_SIGID = XE_SIGID_##_SIG, \
+ /* eod */
BUT SEE:
do {} while (0) advice is over-stated in a few situations:
The more obvious case is macros, like MODULE_PARM_DESC, invoked at
file-scope, where C disallows code (it must be in functions). See
$exceptions if you have one to add by name.
More troublesome is declarative macros used at top of new scope,
like DECLARE_PER_CPU. These might just compile with a do-while-0
wrapper, but would be incorrect. Most of these are handled by
detecting struct,union,etc declaration primitives in $exceptions.
Theres also macros called inside an if (block), which "return" an
expression. These cannot do-while, and need a ({}) wrapper.
Enjoy this qualification while we work to improve our heuristics.
-:192: WARNING:MACRO_ARG_UNUSED: Argument '_CLASS' is not used in function-like macro
#192: FILE: drivers/gpu/drm/xe/abi/xe_log_abi.h:174:
+#define MAKE_XE_LOG_COMPONENT_SIGID(_CLASS, _ID, _TAG, _SIG, _NAME) \
+ XE_LOG_COMPONENT_##_TAG##_SIGID = XE_SIGID_##_SIG, \
+ /* eod */
-:192: WARNING:MACRO_ARG_UNUSED: Argument '_ID' is not used in function-like macro
#192: FILE: drivers/gpu/drm/xe/abi/xe_log_abi.h:174:
+#define MAKE_XE_LOG_COMPONENT_SIGID(_CLASS, _ID, _TAG, _SIG, _NAME) \
+ XE_LOG_COMPONENT_##_TAG##_SIGID = XE_SIGID_##_SIG, \
+ /* eod */
-:192: WARNING:MACRO_ARG_UNUSED: Argument '_NAME' is not used in function-like macro
#192: FILE: drivers/gpu/drm/xe/abi/xe_log_abi.h:174:
+#define MAKE_XE_LOG_COMPONENT_SIGID(_CLASS, _ID, _TAG, _SIG, _NAME) \
+ XE_LOG_COMPONENT_##_TAG##_SIGID = XE_SIGID_##_SIG, \
+ /* eod */
total: 3 errors, 6 warnings, 1 checks, 181 lines checked
35be1e207724 drm/xe/log: Add component based SIGID log helper
-:39: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'any' - possible side-effects?
#39: FILE: drivers/gpu/drm/xe/xe_log.h:110:
+#define xe_log_location(any) \
+ PREP_XE_LOG_LOCATION(xe_log_location_type(any), xe_any_id(any))
-:42: ERROR:COMPLEX_MACRO: Macros with complex values should be enclosed in parentheses
#42: FILE: drivers/gpu/drm/xe/xe_log.h:113:
+#define __XE_LOG_COMP_FMT(TAG, fmt, args...) #TAG ": " fmt, ##args
BUT SEE:
do {} while (0) advice is over-stated in a few situations:
The more obvious case is macros, like MODULE_PARM_DESC, invoked at
file-scope, where C disallows code (it must be in functions). See
$exceptions if you have one to add by name.
More troublesome is declarative macros used at top of new scope,
like DECLARE_PER_CPU. These might just compile with a do-while-0
wrapper, but would be incorrect. Most of these are handled by
detecting struct,union,etc declaration primitives in $exceptions.
Theres also macros called inside an if (block), which "return" an
expression. These cannot do-while, and need a ({}) wrapper.
Enjoy this qualification while we work to improve our heuristics.
-:57: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'fmt' - possible side-effects?
#57: FILE: drivers/gpu/drm/xe/xe_log.h:128:
+#define xe_log_emit_comp(any, cper_sev, TAG, data, len, fmt, args...) do { \
+ typeof(any) __any = (any); \
+ struct pci_dev *__pdev = xe_any_to_pdev(__any); \
+ int __sev = (cper_sev); \
+ int __sig = XE_LOG_COMPONENT_##TAG##_SIGID; \
+ u32 __component = XE_LOG_COMPONENT_##TAG; \
+ u32 __location = xe_log_location(__any); \
+ const void *__data = (data); \
+ size_t __len = (len); \
+ xe_log_emit_dmesg_from(__any, __sev, __sig, __data, __len, \
+ __XE_LOG_COMP_FMT(TAG, fmt, ##args)); \
+ xe_log_emit_cper(__pdev, __sev, __sig, __component, __location, \
+ __data, __len, fmt, ##args); \
+} while (0)
total: 1 errors, 0 warnings, 2 checks, 51 lines checked
6a3b7be42fb6 drm/xe/log: Add errno-only SIGID log helpers
f9f212ce882e drm/xe/log: Add hardware error signatures
1b99d74513ec drm/xe/log: Extend components list with hardware items
-:22: ERROR:COMPLEX_MACRO: Macros with complex values should be enclosed in parentheses
#22: FILE: drivers/gpu/drm/xe/abi/xe_log_abi.h:130:
+#define DEFINE_XE_LOG_SOFTWARE_COMPONENTS(define) \
/* */ \
define(SYSTEM, 1, PCI, SW, "Linux PCI Subsystem") \
define(SYSTEM, 2, DRM, SW, "DRM") \
BUT SEE:
do {} while (0) advice is over-stated in a few situations:
The more obvious case is macros, like MODULE_PARM_DESC, invoked at
file-scope, where C disallows code (it must be in functions). See
$exceptions if you have one to add by name.
More troublesome is declarative macros used at top of new scope,
like DECLARE_PER_CPU. These might just compile with a do-while-0
wrapper, but would be incorrect. Most of these are handled by
detecting struct,union,etc declaration primitives in $exceptions.
Theres also macros called inside an if (block), which "return" an
expression. These cannot do-while, and need a ({}) wrapper.
Enjoy this qualification while we work to improve our heuristics.
-:22: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'define' - possible side-effects?
#22: FILE: drivers/gpu/drm/xe/abi/xe_log_abi.h:130:
+#define DEFINE_XE_LOG_SOFTWARE_COMPONENTS(define) \
/* */ \
define(SYSTEM, 1, PCI, SW, "Linux PCI Subsystem") \
define(SYSTEM, 2, DRM, SW, "DRM") \
-:31: ERROR:COMPLEX_MACRO: Macros with complex values should be enclosed in parentheses
#31: FILE: drivers/gpu/drm/xe/abi/xe_log_abi.h:159:
+#define DEFINE_XE_LOG_HARDWARE_COMPONENTS(define) \
+ define(HARDWARE, 1, PCIE, PCIE, "PCIe Interface") \
+ define(HARDWARE, 2, HWCORE, CORE_COMPUTE, "Core Compute") \
+ define(HARDWARE, 3, DEVMEM, DEVICE_MEMORY, "Device Memory") \
+ define(HARDWARE, 4, FABRIC, FABRIC, "Fabric") \
+ define(HARDWARE, 5, SOC, SOC_INTERNAL, "SoC Internal") \
/* eod */
BUT SEE:
do {} while (0) advice is over-stated in a few situations:
The more obvious case is macros, like MODULE_PARM_DESC, invoked at
file-scope, where C disallows code (it must be in functions). See
$exceptions if you have one to add by name.
More troublesome is declarative macros used at top of new scope,
like DECLARE_PER_CPU. These might just compile with a do-while-0
wrapper, but would be incorrect. Most of these are handled by
detecting struct,union,etc declaration primitives in $exceptions.
Theres also macros called inside an if (block), which "return" an
expression. These cannot do-while, and need a ({}) wrapper.
Enjoy this qualification while we work to improve our heuristics.
-:31: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'define' - possible side-effects?
#31: FILE: drivers/gpu/drm/xe/abi/xe_log_abi.h:159:
+#define DEFINE_XE_LOG_HARDWARE_COMPONENTS(define) \
+ define(HARDWARE, 1, PCIE, PCIE, "PCIe Interface") \
+ define(HARDWARE, 2, HWCORE, CORE_COMPUTE, "Core Compute") \
+ define(HARDWARE, 3, DEVMEM, DEVICE_MEMORY, "Device Memory") \
+ define(HARDWARE, 4, FABRIC, FABRIC, "Fabric") \
+ define(HARDWARE, 5, SOC, SOC_INTERNAL, "SoC Internal") \
/* eod */
total: 2 errors, 0 warnings, 2 checks, 23 lines checked
66f46dcb36f7 drm/xe/tests: Add Kunit tests for xe_log
-:15: WARNING:FILE_PATH_CHANGES: added, moved or deleted file(s), does MAINTAINERS need updating?
#15:
new file mode 100644
total: 0 errors, 1 warnings, 0 checks, 363 lines checked
d3e41c43dcbc drm/xe: Report 'probe blocked' error using SIGID
27350b2454af drm/xe: Report 'device wedged' errors using SIGID
951f7d5cb7a5 drm/xe: Report 'Survivability Mode' errors using SIGID
ee870e530088 drm/xe/guc: Report 'GuC mmio' errors using SIGID
dc8470cd25f5 drm/xe/pcode: Report 'Mailbox failed' error using SIGID
39fc90da37f5 drm/xe/gt: Report 'reset failed' errors using SIGID
eddf76157013 drm/xe/gt: Report 'pagefault' errors using SIGID
83370fd5c591 drm/xe/pci: Report 'cannot re-enable' error using SIGID
^ permalink raw reply [flat|nested] 37+ messages in thread* ✓ CI.KUnit: success for drm/xe: Add structured SIGID error logging infrastructure
2026-07-23 20:37 [PATCH 00/19] drm/xe: Add structured SIGID error logging infrastructure Michal Wajdeczko
` (19 preceding siblings ...)
2026-07-23 20:44 ` ✗ CI.checkpatch: warning for drm/xe: Add structured SIGID error logging infrastructure Patchwork
@ 2026-07-23 20:45 ` Patchwork
2026-07-23 21:35 ` ✗ Xe.CI.BAT: failure " Patchwork
2026-07-24 18:35 ` ✗ Xe.CI.FULL: " Patchwork
22 siblings, 0 replies; 37+ messages in thread
From: Patchwork @ 2026-07-23 20:45 UTC (permalink / raw)
To: Michal Wajdeczko; +Cc: intel-xe
== Series Details ==
Series: drm/xe: Add structured SIGID error logging infrastructure
URL : https://patchwork.freedesktop.org/series/171022/
State : success
== Summary ==
+ trap cleanup EXIT
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/xe/.kunitconfig
[20:44:19] Configuring KUnit Kernel ...
Generating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[20:44:24] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48
[20:44:56] Starting KUnit Kernel (1/1)...
[20:44:56] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[20:44:56] ================== guc_buf (11 subtests) ===================
[20:44:56] [PASSED] test_smallest
[20:44:56] [PASSED] test_largest
[20:44:56] [PASSED] test_granular
[20:44:56] [PASSED] test_unique
[20:44:56] [PASSED] test_overlap
[20:44:56] [PASSED] test_reusable
[20:44:56] [PASSED] test_too_big
[20:44:56] [PASSED] test_flush
[20:44:56] [PASSED] test_lookup
[20:44:56] [PASSED] test_data
[20:44:56] [PASSED] test_class
[20:44:56] ===================== [PASSED] guc_buf =====================
[20:44:56] =================== guc_dbm (7 subtests) ===================
[20:44:56] [PASSED] test_empty
[20:44:56] [PASSED] test_default
[20:44:56] ======================== test_size ========================
[20:44:56] [PASSED] 4
[20:44:56] [PASSED] 8
[20:44:56] [PASSED] 32
[20:44:56] [PASSED] 256
[20:44:56] ==================== [PASSED] test_size ====================
[20:44:56] ======================= test_reuse ========================
[20:44:56] [PASSED] 4
[20:44:56] [PASSED] 8
[20:44:56] [PASSED] 32
[20:44:56] [PASSED] 256
[20:44:56] =================== [PASSED] test_reuse ====================
[20:44:56] =================== test_range_overlap ====================
[20:44:56] [PASSED] 4
[20:44:56] [PASSED] 8
[20:44:56] [PASSED] 32
[20:44:56] [PASSED] 256
[20:44:56] =============== [PASSED] test_range_overlap ================
[20:44:56] =================== test_range_compact ====================
[20:44:56] [PASSED] 4
[20:44:56] [PASSED] 8
[20:44:56] [PASSED] 32
[20:44:56] [PASSED] 256
[20:44:56] =============== [PASSED] test_range_compact ================
[20:44:56] ==================== test_range_spare =====================
[20:44:56] [PASSED] 4
[20:44:56] [PASSED] 8
[20:44:56] [PASSED] 32
[20:44:56] [PASSED] 256
[20:44:56] ================ [PASSED] test_range_spare =================
[20:44:56] ===================== [PASSED] guc_dbm =====================
[20:44:56] =================== guc_idm (6 subtests) ===================
[20:44:56] [PASSED] bad_init
[20:44:56] [PASSED] no_init
[20:44:56] [PASSED] init_fini
[20:44:56] [PASSED] check_used
[20:44:56] [PASSED] check_quota
[20:44:56] [PASSED] check_all
[20:44:56] ===================== [PASSED] guc_idm =====================
[20:44:56] =============== guc_klv_helpers (9 subtests) ===============
[20:44:56] [PASSED] test_count
[20:44:56] [PASSED] test_encode_u32
[20:44:56] [PASSED] test_encode_u64
[20:44:56] [PASSED] test_encode_string
[20:44:56] [PASSED] test_encode_object_raw
[20:44:56] [PASSED] test_encode_object_klv
[20:44:56] [PASSED] test_encode_object_nested
[20:44:56] [PASSED] test_encode_object_basic
[20:44:56] [PASSED] test_print
[20:44:56] ================= [PASSED] guc_klv_helpers =================
[20:44:56] =================== xe_log (7 subtests) ====================
[20:44:56] [PASSED] demo_cper_native
[20:44:56] [PASSED] demo_cper_locations
[20:44:56] [PASSED] demo_cper_components
[20:44:56] [PASSED] demo_dmesg_native
[20:44:56] [PASSED] demo_dmesg_locations
[20:44:56] [PASSED] demo_dmesg_components
[20:44:56] ======================= test_dmesg ========================
[20:44:56] [PASSED] test_fatal
[20:44:56] [PASSED] test_recoverable
[20:44:56] [PASSED] test_info
[20:44:56] [PASSED] test_device_fatal
[20:44:56] [PASSED] test_device_recoverable
[20:44:56] [PASSED] test_tile_fatal
[20:44:56] [PASSED] test_tile_recoverable
[20:44:56] [PASSED] test_gt_fatal
[20:44:56] [PASSED] test_gt_recoverable
[20:44:56] [PASSED] test_hw_fatal
[20:44:56] [PASSED] test_hw_recoverable
[20:44:56] =================== [PASSED] test_dmesg ====================
[20:44:56] ===================== [PASSED] xe_log ======================
[20:44:56] ================== no_relay (3 subtests) ===================
[20:44:56] [PASSED] xe_drops_guc2pf_if_not_ready
[20:44:56] [PASSED] xe_drops_guc2vf_if_not_ready
[20:44:56] [PASSED] xe_rejects_send_if_not_ready
[20:44:56] ==================== [PASSED] no_relay =====================
[20:44:56] ================== pf_relay (14 subtests) ==================
[20:44:56] [PASSED] pf_rejects_guc2pf_too_short
[20:44:56] [PASSED] pf_rejects_guc2pf_too_long
[20:44:56] [PASSED] pf_rejects_guc2pf_no_payload
[20:44:56] [PASSED] pf_fails_no_payload
[20:44:56] [PASSED] pf_fails_bad_origin
[20:44:56] [PASSED] pf_fails_bad_type
[20:44:56] [PASSED] pf_txn_reports_error
[20:44:56] [PASSED] pf_txn_sends_pf2guc
[20:44:56] [PASSED] pf_sends_pf2guc
[20:44:56] [SKIPPED] pf_loopback_nop (requires CONFIG_DRM_XE_DEBUG_SRIOV)
[20:44:56] [SKIPPED] pf_loopback_echo (requires CONFIG_DRM_XE_DEBUG_SRIOV)
[20:44:56] [SKIPPED] pf_loopback_fail (requires CONFIG_DRM_XE_DEBUG_SRIOV)
[20:44:56] [SKIPPED] pf_loopback_busy (requires CONFIG_DRM_XE_DEBUG_SRIOV)
[20:44:56] [SKIPPED] pf_loopback_retry (requires CONFIG_DRM_XE_DEBUG_SRIOV)
[20:44:56] ==================== [PASSED] pf_relay =====================
[20:44:56] ================== vf_relay (3 subtests) ===================
[20:44:56] [PASSED] vf_rejects_guc2vf_too_short
[20:44:56] [PASSED] vf_rejects_guc2vf_too_long
[20:44:56] [PASSED] vf_rejects_guc2vf_no_payload
[20:44:56] ==================== [PASSED] vf_relay =====================
[20:44:56] ================ pf_gt_config (9 subtests) =================
[20:44:56] [PASSED] fair_contexts_1vf
[20:44:56] [PASSED] fair_doorbells_1vf
[20:44:56] [PASSED] fair_ggtt_1vf
[20:44:56] ====================== fair_vram_1vf ======================
[20:44:56] [PASSED] 3.50 GiB
[20:44:56] [PASSED] 11.5 GiB
[20:44:56] [PASSED] 15.5 GiB
[20:44:56] [PASSED] 31.5 GiB
[20:44:56] [PASSED] 63.5 GiB
[20:44:56] [PASSED] 1.91 GiB
[20:44:56] ================== [PASSED] fair_vram_1vf ==================
[20:44:56] ================ fair_vram_1vf_admin_only =================
[20:44:56] [PASSED] 3.50 GiB
[20:44:56] [PASSED] 11.5 GiB
[20:44:56] [PASSED] 15.5 GiB
[20:44:56] [PASSED] 31.5 GiB
[20:44:56] [PASSED] 63.5 GiB
[20:44:56] [PASSED] 1.91 GiB
[20:44:56] ============ [PASSED] fair_vram_1vf_admin_only =============
[20:44:56] ====================== fair_contexts ======================
[20:44:56] [PASSED] 1 VF
[20:44:56] [PASSED] 2 VFs
[20:44:56] [PASSED] 3 VFs
[20:44:56] [PASSED] 4 VFs
[20:44:56] [PASSED] 5 VFs
[20:44:56] [PASSED] 6 VFs
[20:44:56] [PASSED] 7 VFs
[20:44:56] [PASSED] 8 VFs
[20:44:56] [PASSED] 9 VFs
[20:44:56] [PASSED] 10 VFs
[20:44:56] [PASSED] 11 VFs
[20:44:56] [PASSED] 12 VFs
[20:44:56] [PASSED] 13 VFs
[20:44:56] [PASSED] 14 VFs
[20:44:56] [PASSED] 15 VFs
[20:44:56] [PASSED] 16 VFs
[20:44:56] [PASSED] 17 VFs
[20:44:56] [PASSED] 18 VFs
[20:44:56] [PASSED] 19 VFs
[20:44:56] [PASSED] 20 VFs
[20:44:56] [PASSED] 21 VFs
[20:44:56] [PASSED] 22 VFs
[20:44:56] [PASSED] 23 VFs
[20:44:56] [PASSED] 24 VFs
[20:44:56] [PASSED] 25 VFs
[20:44:56] [PASSED] 26 VFs
[20:44:56] [PASSED] 27 VFs
[20:44:56] [PASSED] 28 VFs
[20:44:56] [PASSED] 29 VFs
[20:44:56] [PASSED] 30 VFs
[20:44:56] [PASSED] 31 VFs
[20:44:56] [PASSED] 32 VFs
[20:44:56] [PASSED] 33 VFs
[20:44:56] [PASSED] 34 VFs
[20:44:56] [PASSED] 35 VFs
[20:44:56] [PASSED] 36 VFs
[20:44:56] [PASSED] 37 VFs
[20:44:56] [PASSED] 38 VFs
[20:44:56] [PASSED] 39 VFs
[20:44:56] [PASSED] 40 VFs
[20:44:56] [PASSED] 41 VFs
[20:44:56] [PASSED] 42 VFs
[20:44:56] [PASSED] 43 VFs
[20:44:56] [PASSED] 44 VFs
[20:44:56] [PASSED] 45 VFs
[20:44:56] [PASSED] 46 VFs
[20:44:56] [PASSED] 47 VFs
[20:44:56] [PASSED] 48 VFs
[20:44:56] [PASSED] 49 VFs
[20:44:56] [PASSED] 50 VFs
[20:44:56] [PASSED] 51 VFs
[20:44:56] [PASSED] 52 VFs
[20:44:56] [PASSED] 53 VFs
[20:44:56] [PASSED] 54 VFs
[20:44:56] [PASSED] 55 VFs
[20:44:56] [PASSED] 56 VFs
[20:44:56] [PASSED] 57 VFs
[20:44:56] [PASSED] 58 VFs
[20:44:56] [PASSED] 59 VFs
[20:44:56] [PASSED] 60 VFs
[20:44:56] [PASSED] 61 VFs
[20:44:56] [PASSED] 62 VFs
[20:44:56] [PASSED] 63 VFs
[20:44:56] ================== [PASSED] fair_contexts ==================
[20:44:56] ===================== fair_doorbells ======================
[20:44:56] [PASSED] 1 VF
[20:44:56] [PASSED] 2 VFs
[20:44:56] [PASSED] 3 VFs
[20:44:56] [PASSED] 4 VFs
[20:44:56] [PASSED] 5 VFs
[20:44:56] [PASSED] 6 VFs
[20:44:56] [PASSED] 7 VFs
[20:44:56] [PASSED] 8 VFs
[20:44:56] [PASSED] 9 VFs
[20:44:56] [PASSED] 10 VFs
[20:44:56] [PASSED] 11 VFs
[20:44:56] [PASSED] 12 VFs
[20:44:56] [PASSED] 13 VFs
[20:44:56] [PASSED] 14 VFs
[20:44:56] [PASSED] 15 VFs
[20:44:56] [PASSED] 16 VFs
[20:44:56] [PASSED] 17 VFs
[20:44:56] [PASSED] 18 VFs
[20:44:56] [PASSED] 19 VFs
[20:44:56] [PASSED] 20 VFs
[20:44:56] [PASSED] 21 VFs
[20:44:56] [PASSED] 22 VFs
[20:44:56] [PASSED] 23 VFs
[20:44:56] [PASSED] 24 VFs
[20:44:56] [PASSED] 25 VFs
[20:44:56] [PASSED] 26 VFs
[20:44:56] [PASSED] 27 VFs
[20:44:56] [PASSED] 28 VFs
[20:44:56] [PASSED] 29 VFs
[20:44:56] [PASSED] 30 VFs
[20:44:56] [PASSED] 31 VFs
[20:44:56] [PASSED] 32 VFs
[20:44:56] [PASSED] 33 VFs
[20:44:56] [PASSED] 34 VFs
[20:44:56] [PASSED] 35 VFs
[20:44:56] [PASSED] 36 VFs
[20:44:56] [PASSED] 37 VFs
[20:44:56] [PASSED] 38 VFs
[20:44:56] [PASSED] 39 VFs
[20:44:56] [PASSED] 40 VFs
[20:44:56] [PASSED] 41 VFs
[20:44:56] [PASSED] 42 VFs
[20:44:56] [PASSED] 43 VFs
[20:44:56] [PASSED] 44 VFs
[20:44:56] [PASSED] 45 VFs
[20:44:56] [PASSED] 46 VFs
[20:44:56] [PASSED] 47 VFs
[20:44:56] [PASSED] 48 VFs
[20:44:56] [PASSED] 49 VFs
[20:44:56] [PASSED] 50 VFs
[20:44:56] [PASSED] 51 VFs
[20:44:56] [PASSED] 52 VFs
[20:44:56] [PASSED] 53 VFs
[20:44:56] [PASSED] 54 VFs
[20:44:56] [PASSED] 55 VFs
[20:44:56] [PASSED] 56 VFs
[20:44:56] [PASSED] 57 VFs
[20:44:56] [PASSED] 58 VFs
[20:44:56] [PASSED] 59 VFs
[20:44:56] [PASSED] 60 VFs
[20:44:56] [PASSED] 61 VFs
[20:44:56] [PASSED] 62 VFs
[20:44:56] [PASSED] 63 VFs
[20:44:56] ================= [PASSED] fair_doorbells ==================
[20:44:56] ======================== fair_ggtt ========================
[20:44:56] [PASSED] 1 VF
[20:44:56] [PASSED] 2 VFs
[20:44:56] [PASSED] 3 VFs
[20:44:56] [PASSED] 4 VFs
[20:44:56] [PASSED] 5 VFs
[20:44:56] [PASSED] 6 VFs
[20:44:56] [PASSED] 7 VFs
[20:44:56] [PASSED] 8 VFs
[20:44:56] [PASSED] 9 VFs
[20:44:56] [PASSED] 10 VFs
[20:44:56] [PASSED] 11 VFs
[20:44:56] [PASSED] 12 VFs
[20:44:56] [PASSED] 13 VFs
[20:44:56] [PASSED] 14 VFs
[20:44:56] [PASSED] 15 VFs
[20:44:56] [PASSED] 16 VFs
[20:44:56] [PASSED] 17 VFs
[20:44:56] [PASSED] 18 VFs
[20:44:56] [PASSED] 19 VFs
[20:44:56] [PASSED] 20 VFs
[20:44:56] [PASSED] 21 VFs
[20:44:56] [PASSED] 22 VFs
[20:44:56] [PASSED] 23 VFs
[20:44:56] [PASSED] 24 VFs
[20:44:56] [PASSED] 25 VFs
[20:44:56] [PASSED] 26 VFs
[20:44:56] [PASSED] 27 VFs
[20:44:56] [PASSED] 28 VFs
[20:44:56] [PASSED] 29 VFs
[20:44:56] [PASSED] 30 VFs
[20:44:56] [PASSED] 31 VFs
[20:44:56] [PASSED] 32 VFs
[20:44:56] [PASSED] 33 VFs
[20:44:56] [PASSED] 34 VFs
[20:44:56] [PASSED] 35 VFs
[20:44:56] [PASSED] 36 VFs
[20:44:56] [PASSED] 37 VFs
[20:44:56] [PASSED] 38 VFs
[20:44:56] [PASSED] 39 VFs
[20:44:56] [PASSED] 40 VFs
[20:44:56] [PASSED] 41 VFs
[20:44:56] [PASSED] 42 VFs
[20:44:56] [PASSED] 43 VFs
[20:44:56] [PASSED] 44 VFs
[20:44:56] [PASSED] 45 VFs
[20:44:56] [PASSED] 46 VFs
[20:44:56] [PASSED] 47 VFs
[20:44:56] [PASSED] 48 VFs
[20:44:56] [PASSED] 49 VFs
[20:44:56] [PASSED] 50 VFs
[20:44:56] [PASSED] 51 VFs
[20:44:56] [PASSED] 52 VFs
[20:44:56] [PASSED] 53 VFs
[20:44:56] [PASSED] 54 VFs
[20:44:56] [PASSED] 55 VFs
[20:44:56] [PASSED] 56 VFs
[20:44:56] [PASSED] 57 VFs
[20:44:56] [PASSED] 58 VFs
[20:44:56] [PASSED] 59 VFs
[20:44:56] [PASSED] 60 VFs
[20:44:56] [PASSED] 61 VFs
[20:44:56] [PASSED] 62 VFs
[20:44:56] [PASSED] 63 VFs
[20:44:56] ==================== [PASSED] fair_ggtt ====================
[20:44:56] ======================== fair_vram ========================
[20:44:56] [PASSED] 1 VF
[20:44:56] [PASSED] 2 VFs
[20:44:56] [PASSED] 3 VFs
[20:44:56] [PASSED] 4 VFs
[20:44:56] [PASSED] 5 VFs
[20:44:56] [PASSED] 6 VFs
[20:44:56] [PASSED] 7 VFs
[20:44:56] [PASSED] 8 VFs
[20:44:56] [PASSED] 9 VFs
[20:44:56] [PASSED] 10 VFs
[20:44:56] [PASSED] 11 VFs
[20:44:56] [PASSED] 12 VFs
[20:44:56] [PASSED] 13 VFs
[20:44:56] [PASSED] 14 VFs
[20:44:56] [PASSED] 15 VFs
[20:44:56] [PASSED] 16 VFs
[20:44:56] [PASSED] 17 VFs
[20:44:56] [PASSED] 18 VFs
[20:44:56] [PASSED] 19 VFs
[20:44:56] [PASSED] 20 VFs
[20:44:56] [PASSED] 21 VFs
[20:44:56] [PASSED] 22 VFs
[20:44:56] [PASSED] 23 VFs
[20:44:56] [PASSED] 24 VFs
[20:44:57] [PASSED] 25 VFs
[20:44:57] [PASSED] 26 VFs
[20:44:57] [PASSED] 27 VFs
[20:44:57] [PASSED] 28 VFs
[20:44:57] [PASSED] 29 VFs
[20:44:57] [PASSED] 30 VFs
[20:44:57] [PASSED] 31 VFs
[20:44:57] [PASSED] 32 VFs
[20:44:57] [PASSED] 33 VFs
[20:44:57] [PASSED] 34 VFs
[20:44:57] [PASSED] 35 VFs
[20:44:57] [PASSED] 36 VFs
[20:44:57] [PASSED] 37 VFs
[20:44:57] [PASSED] 38 VFs
[20:44:57] [PASSED] 39 VFs
[20:44:57] [PASSED] 40 VFs
[20:44:57] [PASSED] 41 VFs
[20:44:57] [PASSED] 42 VFs
[20:44:57] [PASSED] 43 VFs
[20:44:57] [PASSED] 44 VFs
[20:44:57] [PASSED] 45 VFs
[20:44:57] [PASSED] 46 VFs
[20:44:57] [PASSED] 47 VFs
[20:44:57] [PASSED] 48 VFs
[20:44:57] [PASSED] 49 VFs
[20:44:57] [PASSED] 50 VFs
[20:44:57] [PASSED] 51 VFs
[20:44:57] [PASSED] 52 VFs
[20:44:57] [PASSED] 53 VFs
[20:44:57] [PASSED] 54 VFs
[20:44:57] [PASSED] 55 VFs
[20:44:57] [PASSED] 56 VFs
[20:44:57] [PASSED] 57 VFs
[20:44:57] [PASSED] 58 VFs
[20:44:57] [PASSED] 59 VFs
[20:44:57] [PASSED] 60 VFs
[20:44:57] [PASSED] 61 VFs
[20:44:57] [PASSED] 62 VFs
[20:44:57] [PASSED] 63 VFs
[20:44:57] ==================== [PASSED] fair_vram ====================
[20:44:57] ================== [PASSED] pf_gt_config ===================
[20:44:57] ===================== lmtt (1 subtest) =====================
[20:44:57] ======================== test_ops =========================
[20:44:57] [PASSED] 2-level
[20:44:57] [PASSED] multi-level
[20:44:57] ==================== [PASSED] test_ops =====================
[20:44:57] ====================== [PASSED] lmtt =======================
[20:44:57] ================= sriov_packet (1 subtest) =================
[20:44:57] [PASSED] test_descriptor_init
[20:44:57] ================== [PASSED] sriov_packet ===================
[20:44:57] ================= pf_service (11 subtests) =================
[20:44:57] [PASSED] pf_negotiate_any
[20:44:57] [PASSED] pf_negotiate_base_match
[20:44:57] [PASSED] pf_negotiate_base_newer
[20:44:57] [PASSED] pf_negotiate_base_next
[20:44:57] [SKIPPED] pf_negotiate_base_older (no older minor)
[20:44:57] [PASSED] pf_negotiate_base_prev
[20:44:57] [PASSED] pf_negotiate_latest_match
[20:44:57] [PASSED] pf_negotiate_latest_newer
[20:44:57] [PASSED] pf_negotiate_latest_next
[20:44:57] [SKIPPED] pf_negotiate_latest_older (no older minor)
[20:44:57] [SKIPPED] pf_negotiate_latest_prev (no prev major)
[20:44:57] =================== [PASSED] pf_service ====================
[20:44:57] ================= xe_guc_g2g (2 subtests) ==================
[20:44:57] ============== xe_live_guc_g2g_kunit_default ==============
[20:44:57] ========= [SKIPPED] xe_live_guc_g2g_kunit_default ==========
[20:44:57] ============== xe_live_guc_g2g_kunit_allmem ===============
[20:44:57] ========== [SKIPPED] xe_live_guc_g2g_kunit_allmem ==========
[20:44:57] =================== [SKIPPED] xe_guc_g2g ===================
[20:44:57] =================== xe_mocs (2 subtests) ===================
[20:44:57] ================ xe_live_mocs_kernel_kunit ================
[20:44:57] =========== [SKIPPED] xe_live_mocs_kernel_kunit ============
[20:44:57] ================ xe_live_mocs_reset_kunit =================
[20:44:57] ============ [SKIPPED] xe_live_mocs_reset_kunit ============
[20:44:57] ==================== [SKIPPED] xe_mocs =====================
[20:44:57] ================= xe_migrate (2 subtests) ==================
[20:44:57] ================= xe_migrate_sanity_kunit =================
[20:44:57] ============ [SKIPPED] xe_migrate_sanity_kunit =============
[20:44:57] ================== xe_validate_ccs_kunit ==================
[20:44:57] ============= [SKIPPED] xe_validate_ccs_kunit ==============
[20:44:57] =================== [SKIPPED] xe_migrate ===================
[20:44:57] ================== xe_dma_buf (1 subtest) ==================
[20:44:57] ==================== xe_dma_buf_kunit =====================
[20:44:57] ================ [SKIPPED] xe_dma_buf_kunit ================
[20:44:57] =================== [SKIPPED] xe_dma_buf ===================
[20:44:57] ================= xe_bo_shrink (1 subtest) =================
[20:44:57] =================== xe_bo_shrink_kunit ====================
[20:44:57] =============== [SKIPPED] xe_bo_shrink_kunit ===============
[20:44:57] ================== [SKIPPED] xe_bo_shrink ==================
[20:44:57] ==================== xe_bo (2 subtests) ====================
[20:44:57] ================== xe_ccs_migrate_kunit ===================
[20:44:57] ============== [SKIPPED] xe_ccs_migrate_kunit ==============
[20:44:57] ==================== xe_bo_evict_kunit ====================
[20:44:57] =============== [SKIPPED] xe_bo_evict_kunit ================
[20:44:57] ===================== [SKIPPED] xe_bo ======================
[20:44:57] ==================== args (13 subtests) ====================
[20:44:57] [PASSED] count_args_test
[20:44:57] [PASSED] call_args_example
[20:44:57] [PASSED] call_args_test
[20:44:57] [PASSED] drop_first_arg_example
[20:44:57] [PASSED] drop_first_arg_test
[20:44:57] [PASSED] first_arg_example
[20:44:57] [PASSED] first_arg_test
[20:44:57] [PASSED] last_arg_example
[20:44:57] [PASSED] last_arg_test
[20:44:57] [PASSED] pick_arg_example
[20:44:57] [PASSED] if_args_example
[20:44:57] [PASSED] if_args_test
[20:44:57] [PASSED] sep_comma_example
[20:44:57] ====================== [PASSED] args =======================
[20:44:57] =================== xe_pci (3 subtests) ====================
[20:44:57] ==================== check_graphics_ip ====================
[20:44:57] [PASSED] 12.00 Xe_LP
[20:44:57] [PASSED] 12.10 Xe_LP+
[20:44:57] [PASSED] 12.55 Xe_HPG
[20:44:57] [PASSED] 12.60 Xe_HPC
[20:44:57] [PASSED] 12.70 Xe_LPG
[20:44:57] [PASSED] 12.71 Xe_LPG
[20:44:57] [PASSED] 12.74 Xe_LPG+
[20:44:57] [PASSED] 20.01 Xe2_HPG
[20:44:57] [PASSED] 20.02 Xe2_HPG
[20:44:57] [PASSED] 20.04 Xe2_LPG
[20:44:57] [PASSED] 30.00 Xe3_LPG
[20:44:57] [PASSED] 30.01 Xe3_LPG
[20:44:57] [PASSED] 30.03 Xe3_LPG
[20:44:57] [PASSED] 30.04 Xe3_LPG
[20:44:57] [PASSED] 30.05 Xe3_LPG
[20:44:57] [PASSED] 35.10 Xe3p_LPG
[20:44:57] [PASSED] 35.11 Xe3p_XPC
[20:44:57] ================ [PASSED] check_graphics_ip ================
[20:44:57] ===================== check_media_ip ======================
[20:44:57] [PASSED] 12.00 Xe_M
[20:44:57] [PASSED] 12.55 Xe_HPM
[20:44:57] [PASSED] 13.00 Xe_LPM+
[20:44:57] [PASSED] 13.01 Xe2_HPM
[20:44:57] [PASSED] 20.00 Xe2_LPM
[20:44:57] [PASSED] 30.00 Xe3_LPM
[20:44:57] [PASSED] 30.02 Xe3_LPM
[20:44:57] [PASSED] 35.00 Xe3p_LPM
[20:44:57] [PASSED] 35.03 Xe3p_HPM
[20:44:57] ================= [PASSED] check_media_ip ==================
[20:44:57] =================== check_platform_desc ===================
[20:44:57] [PASSED] 0x9A60 (TIGERLAKE)
[20:44:57] [PASSED] 0x9A68 (TIGERLAKE)
[20:44:57] [PASSED] 0x9A70 (TIGERLAKE)
[20:44:57] [PASSED] 0x9A40 (TIGERLAKE)
[20:44:57] [PASSED] 0x9A49 (TIGERLAKE)
[20:44:57] [PASSED] 0x9A59 (TIGERLAKE)
[20:44:57] [PASSED] 0x9A78 (TIGERLAKE)
[20:44:57] [PASSED] 0x9AC0 (TIGERLAKE)
[20:44:57] [PASSED] 0x9AC9 (TIGERLAKE)
[20:44:57] [PASSED] 0x9AD9 (TIGERLAKE)
[20:44:57] [PASSED] 0x9AF8 (TIGERLAKE)
[20:44:57] [PASSED] 0x4C80 (ROCKETLAKE)
[20:44:57] [PASSED] 0x4C8A (ROCKETLAKE)
[20:44:57] [PASSED] 0x4C8B (ROCKETLAKE)
[20:44:57] [PASSED] 0x4C8C (ROCKETLAKE)
[20:44:57] [PASSED] 0x4C90 (ROCKETLAKE)
[20:44:57] [PASSED] 0x4C9A (ROCKETLAKE)
[20:44:57] [PASSED] 0x4680 (ALDERLAKE_S)
[20:44:57] [PASSED] 0x4682 (ALDERLAKE_S)
[20:44:57] [PASSED] 0x4688 (ALDERLAKE_S)
[20:44:57] [PASSED] 0x468A (ALDERLAKE_S)
[20:44:57] [PASSED] 0x468B (ALDERLAKE_S)
[20:44:57] [PASSED] 0x4690 (ALDERLAKE_S)
[20:44:57] [PASSED] 0x4692 (ALDERLAKE_S)
[20:44:57] [PASSED] 0x4693 (ALDERLAKE_S)
[20:44:57] [PASSED] 0x46A0 (ALDERLAKE_P)
[20:44:57] [PASSED] 0x46A1 (ALDERLAKE_P)
[20:44:57] [PASSED] 0x46A2 (ALDERLAKE_P)
[20:44:57] [PASSED] 0x46A3 (ALDERLAKE_P)
[20:44:57] [PASSED] 0x46A6 (ALDERLAKE_P)
[20:44:57] [PASSED] 0x46A8 (ALDERLAKE_P)
[20:44:57] [PASSED] 0x46AA (ALDERLAKE_P)
[20:44:57] [PASSED] 0x462A (ALDERLAKE_P)
[20:44:57] [PASSED] 0x4626 (ALDERLAKE_P)
[20:44:57] [PASSED] 0x4628 (ALDERLAKE_P)
[20:44:57] [PASSED] 0x46B0 (ALDERLAKE_P)
[20:44:57] [PASSED] 0x46B1 (ALDERLAKE_P)
[20:44:57] [PASSED] 0x46B2 (ALDERLAKE_P)
[20:44:57] [PASSED] 0x46B3 (ALDERLAKE_P)
[20:44:57] [PASSED] 0x46C0 (ALDERLAKE_P)
[20:44:57] [PASSED] 0x46C1 (ALDERLAKE_P)
[20:44:57] [PASSED] 0x46C2 (ALDERLAKE_P)
[20:44:57] [PASSED] 0x46C3 (ALDERLAKE_P)
[20:44:57] [PASSED] 0x46D0 (ALDERLAKE_N)
[20:44:57] [PASSED] 0x46D1 (ALDERLAKE_N)
[20:44:57] [PASSED] 0x46D2 (ALDERLAKE_N)
[20:44:57] [PASSED] 0x46D3 (ALDERLAKE_N)
[20:44:57] [PASSED] 0x46D4 (ALDERLAKE_N)
[20:44:57] [PASSED] 0xA721 (ALDERLAKE_P)
[20:44:57] [PASSED] 0xA7A1 (ALDERLAKE_P)
[20:44:57] [PASSED] 0xA7A9 (ALDERLAKE_P)
[20:44:57] [PASSED] 0xA7AC (ALDERLAKE_P)
[20:44:57] [PASSED] 0xA7AD (ALDERLAKE_P)
[20:44:57] [PASSED] 0xA720 (ALDERLAKE_P)
[20:44:57] [PASSED] 0xA7A0 (ALDERLAKE_P)
[20:44:57] [PASSED] 0xA7A8 (ALDERLAKE_P)
[20:44:57] [PASSED] 0xA7AA (ALDERLAKE_P)
[20:44:57] [PASSED] 0xA7AB (ALDERLAKE_P)
[20:44:57] [PASSED] 0xA780 (ALDERLAKE_S)
[20:44:57] [PASSED] 0xA781 (ALDERLAKE_S)
[20:44:57] [PASSED] 0xA782 (ALDERLAKE_S)
[20:44:57] [PASSED] 0xA783 (ALDERLAKE_S)
[20:44:57] [PASSED] 0xA788 (ALDERLAKE_S)
[20:44:57] [PASSED] 0xA789 (ALDERLAKE_S)
[20:44:57] [PASSED] 0xA78A (ALDERLAKE_S)
[20:44:57] [PASSED] 0xA78B (ALDERLAKE_S)
[20:44:57] [PASSED] 0x4905 (DG1)
[20:44:57] [PASSED] 0x4906 (DG1)
[20:44:57] [PASSED] 0x4907 (DG1)
[20:44:57] [PASSED] 0x4908 (DG1)
[20:44:57] [PASSED] 0x4909 (DG1)
[20:44:57] [PASSED] 0x56C0 (DG2)
[20:44:57] [PASSED] 0x56C2 (DG2)
[20:44:57] [PASSED] 0x56C1 (DG2)
[20:44:57] [PASSED] 0x7D51 (METEORLAKE)
[20:44:57] [PASSED] 0x7DD1 (METEORLAKE)
[20:44:57] [PASSED] 0x7D41 (METEORLAKE)
[20:44:57] [PASSED] 0x7D67 (METEORLAKE)
[20:44:57] [PASSED] 0xB640 (METEORLAKE)
[20:44:57] [PASSED] 0x56A0 (DG2)
[20:44:57] [PASSED] 0x56A1 (DG2)
[20:44:57] [PASSED] 0x56A2 (DG2)
[20:44:57] [PASSED] 0x56BE (DG2)
[20:44:57] [PASSED] 0x56BF (DG2)
[20:44:57] [PASSED] 0x5690 (DG2)
[20:44:57] [PASSED] 0x5691 (DG2)
[20:44:57] [PASSED] 0x5692 (DG2)
[20:44:57] [PASSED] 0x56A5 (DG2)
[20:44:57] [PASSED] 0x56A6 (DG2)
[20:44:57] [PASSED] 0x56B0 (DG2)
[20:44:57] [PASSED] 0x56B1 (DG2)
[20:44:57] [PASSED] 0x56BA (DG2)
[20:44:57] [PASSED] 0x56BB (DG2)
[20:44:57] [PASSED] 0x56BC (DG2)
[20:44:57] [PASSED] 0x56BD (DG2)
[20:44:57] [PASSED] 0x5693 (DG2)
[20:44:57] [PASSED] 0x5694 (DG2)
[20:44:57] [PASSED] 0x5695 (DG2)
[20:44:57] [PASSED] 0x56A3 (DG2)
[20:44:57] [PASSED] 0x56A4 (DG2)
[20:44:57] [PASSED] 0x56B2 (DG2)
[20:44:57] [PASSED] 0x56B3 (DG2)
[20:44:57] [PASSED] 0x5696 (DG2)
[20:44:57] [PASSED] 0x5697 (DG2)
[20:44:57] [PASSED] 0xB69 (PVC)
[20:44:57] [PASSED] 0xB6E (PVC)
[20:44:57] [PASSED] 0xBD4 (PVC)
[20:44:57] [PASSED] 0xBD5 (PVC)
[20:44:57] [PASSED] 0xBD6 (PVC)
[20:44:57] [PASSED] 0xBD7 (PVC)
[20:44:57] [PASSED] 0xBD8 (PVC)
[20:44:57] [PASSED] 0xBD9 (PVC)
[20:44:57] [PASSED] 0xBDA (PVC)
[20:44:57] [PASSED] 0xBDB (PVC)
[20:44:57] [PASSED] 0xBE0 (PVC)
[20:44:57] [PASSED] 0xBE1 (PVC)
[20:44:57] [PASSED] 0xBE5 (PVC)
[20:44:57] [PASSED] 0x7D40 (METEORLAKE)
[20:44:57] [PASSED] 0x7D45 (METEORLAKE)
[20:44:57] [PASSED] 0x7D55 (METEORLAKE)
[20:44:57] [PASSED] 0x7D60 (METEORLAKE)
[20:44:57] [PASSED] 0x7DD5 (METEORLAKE)
[20:44:57] [PASSED] 0x6420 (LUNARLAKE)
[20:44:57] [PASSED] 0x64A0 (LUNARLAKE)
[20:44:57] [PASSED] 0x64B0 (LUNARLAKE)
[20:44:57] [PASSED] 0xE202 (BATTLEMAGE)
[20:44:57] [PASSED] 0xE209 (BATTLEMAGE)
[20:44:57] [PASSED] 0xE20B (BATTLEMAGE)
[20:44:57] [PASSED] 0xE20C (BATTLEMAGE)
[20:44:57] [PASSED] 0xE20D (BATTLEMAGE)
[20:44:57] [PASSED] 0xE210 (BATTLEMAGE)
[20:44:57] [PASSED] 0xE211 (BATTLEMAGE)
[20:44:57] [PASSED] 0xE212 (BATTLEMAGE)
[20:44:57] [PASSED] 0xE216 (BATTLEMAGE)
[20:44:57] [PASSED] 0xE220 (BATTLEMAGE)
[20:44:57] [PASSED] 0xE221 (BATTLEMAGE)
[20:44:57] [PASSED] 0xE222 (BATTLEMAGE)
[20:44:57] [PASSED] 0xE223 (BATTLEMAGE)
[20:44:57] [PASSED] 0xB080 (PANTHERLAKE)
[20:44:57] [PASSED] 0xB081 (PANTHERLAKE)
[20:44:57] [PASSED] 0xB082 (PANTHERLAKE)
[20:44:57] [PASSED] 0xB083 (PANTHERLAKE)
[20:44:57] [PASSED] 0xB084 (PANTHERLAKE)
[20:44:57] [PASSED] 0xB085 (PANTHERLAKE)
[20:44:57] [PASSED] 0xB086 (PANTHERLAKE)
[20:44:57] [PASSED] 0xB087 (PANTHERLAKE)
[20:44:57] [PASSED] 0xB08F (PANTHERLAKE)
[20:44:57] [PASSED] 0xB090 (PANTHERLAKE)
[20:44:57] [PASSED] 0xB0A0 (PANTHERLAKE)
[20:44:57] [PASSED] 0xB0B0 (PANTHERLAKE)
[20:44:57] [PASSED] 0xFD80 (PANTHERLAKE)
[20:44:57] [PASSED] 0xFD81 (PANTHERLAKE)
[20:44:57] [PASSED] 0xD740 (NOVALAKE_S)
[20:44:57] [PASSED] 0xD741 (NOVALAKE_S)
[20:44:57] [PASSED] 0xD742 (NOVALAKE_S)
[20:44:57] [PASSED] 0xD743 (NOVALAKE_S)
[20:44:57] [PASSED] 0xD745 (NOVALAKE_S)
[20:44:57] [PASSED] 0xD74A (NOVALAKE_S)
[20:44:57] [PASSED] 0xD74B (NOVALAKE_S)
[20:44:57] [PASSED] 0x674C (CRESCENTISLAND)
[20:44:57] [PASSED] 0x674D (CRESCENTISLAND)
[20:44:57] [PASSED] 0x674E (CRESCENTISLAND)
[20:44:57] [PASSED] 0x674F (CRESCENTISLAND)
[20:44:57] [PASSED] 0x6750 (CRESCENTISLAND)
[20:44:57] [PASSED] 0xD750 (NOVALAKE_P)
[20:44:57] [PASSED] 0xD751 (NOVALAKE_P)
[20:44:57] [PASSED] 0xD752 (NOVALAKE_P)
[20:44:57] [PASSED] 0xD753 (NOVALAKE_P)
[20:44:57] [PASSED] 0xD754 (NOVALAKE_P)
[20:44:57] [PASSED] 0xD755 (NOVALAKE_P)
[20:44:57] [PASSED] 0xD756 (NOVALAKE_P)
[20:44:57] [PASSED] 0xD757 (NOVALAKE_P)
[20:44:57] [PASSED] 0xD75F (NOVALAKE_P)
[20:44:57] =============== [PASSED] check_platform_desc ===============
[20:44:57] ===================== [PASSED] xe_pci ======================
[20:44:57] ============= xe_rtp_tables_test (5 subtests) ==============
[20:44:57] ================== xe_rtp_table_gt_test ===================
[20:44:57] [PASSED] gt_was/14011060649
[20:44:57] [PASSED] gt_was/14011059788
[20:44:57] [PASSED] gt_was/14015795083
[20:44:57] [PASSED] gt_was/16021867713
[20:44:57] [PASSED] gt_was/14019449301
[20:44:57] [PASSED] gt_was/16028005424
[20:44:57] [PASSED] gt_was/14026578760
[20:44:57] [PASSED] gt_was/1409420604
[20:44:57] [PASSED] gt_was/1408615072
[20:44:57] [PASSED] gt_was/22010523718
[20:44:57] [PASSED] gt_was/14011006942
[20:44:57] [PASSED] gt_was/14014830051
[20:44:57] [PASSED] gt_was/18018781329
[20:44:57] [PASSED] gt_was/1509235366
[20:44:57] [PASSED] gt_was/18018781329
[20:44:57] [PASSED] gt_was/16016694945
[20:44:57] [PASSED] gt_was/14018575942
[20:44:57] [PASSED] gt_was/22016670082
[20:44:57] [PASSED] gt_was/22016670082
[20:44:57] [PASSED] gt_was/14017421178
[20:44:57] [PASSED] gt_was/16025250150
[20:44:57] [PASSED] gt_was/14021871409
[20:44:57] [PASSED] gt_was/16021865536
[20:44:57] [PASSED] gt_was/14021486841
[20:44:57] [PASSED] gt_was/14025160223
[20:44:57] [PASSED] gt_was/14026144927, 16029437861, 14026127056
[20:44:57] [PASSED] gt_was/14025635424
[20:44:57] [PASSED] gt_was/16028005424
[20:44:57] ============== [PASSED] xe_rtp_table_gt_test ===============
[20:44:57] ================== xe_rtp_table_gt_test ===================
[20:44:57] [PASSED] gt_tunings/Tuning: Blend Fill Caching Optimization Disable
[20:44:57] [PASSED] gt_tunings/Tuning: 32B Access Enable
[20:44:57] [PASSED] gt_tunings/Tuning: L3 cache
[20:44:57] [PASSED] gt_tunings/Tuning: L3 cache - media
[20:44:57] [PASSED] gt_tunings/Tuning: Compression Overfetch
[20:44:57] [PASSED] gt_tunings/Tuning: Compression Overfetch - media
[20:44:57] [PASSED] gt_tunings/Tuning: Enable compressible partial write overfetch in L3
[20:44:57] [PASSED] gt_tunings/Tuning: Enable compressible partial write overfetch in L3 - media
[20:44:57] [PASSED] gt_tunings/Tuning: L2 Overfetch Compressible Only
[20:44:57] [PASSED] gt_tunings/Tuning: L2 Overfetch Compressible Only - media
[20:44:57] [PASSED] gt_tunings/Tuning: Stateless compression control
[20:44:57] [PASSED] gt_tunings/Tuning: Stateless compression control - media
[20:44:57] [PASSED] gt_tunings/Tuning: L3 RW flush all Cache
[20:44:57] [PASSED] gt_tunings/Tuning: L3 RW flush all cache - media
[20:44:57] [PASSED] gt_tunings/Tuning: Set STLB Bank Hash Mode to 4KB
[20:44:57] ============== [PASSED] xe_rtp_table_gt_test ===============
[20:44:57] ================== xe_rtp_table_oob_test ==================
[20:44:57] [PASSED] oob_was/1607983814
[20:44:57] [PASSED] oob_was/16010904313
[20:44:57] [PASSED] oob_was/18022495364
[20:44:57] [PASSED] oob_was/22012773006
[20:44:57] [PASSED] oob_was/14014475959
[20:44:57] [PASSED] oob_was/22011391025
[20:44:57] [PASSED] oob_was/22012727170
[20:44:57] [PASSED] oob_was/22012727685
[20:44:57] [PASSED] oob_was/22016596838
[20:44:57] [PASSED] oob_was/18020744125
[20:44:57] [PASSED] oob_was/1409600907
[20:44:57] [PASSED] oob_was/22014953428
[20:44:57] [PASSED] oob_was/16017236439
[20:44:57] [PASSED] oob_was/14019821291
[20:44:57] [PASSED] oob_was/14015076503
[20:44:57] [PASSED] oob_was/14018913170
[20:44:57] [PASSED] oob_was/14018094691
[20:44:57] [PASSED] oob_was/18024947630
[20:44:57] [PASSED] oob_was/16022287689
[20:44:57] [PASSED] oob_was/13011645652
[20:44:57] [PASSED] oob_was/14022293748
[20:44:57] [PASSED] oob_was/22019794406
[20:44:57] [PASSED] oob_was/22019338487
[20:44:57] [PASSED] oob_was/16023588340
[20:44:57] [PASSED] oob_was/14019789679
[20:44:57] [PASSED] oob_was/14022866841
[20:44:57] [PASSED] oob_was/16021333562
[20:44:57] [PASSED] oob_was/14016712196
[20:44:57] [PASSED] oob_was/14015568240
[20:44:57] [PASSED] oob_was/18013179988
[20:44:57] [PASSED] oob_was/1508761755
[20:44:57] [PASSED] oob_was/16023105232
[20:44:57] [PASSED] oob_was/16026508708
[20:44:57] [PASSED] oob_was/14020001231
[20:44:57] [PASSED] oob_was/16023683509
[20:44:57] [PASSED] oob_was/14025515070
[20:44:57] [PASSED] oob_was/15015404425_disable
[20:44:57] [PASSED] oob_was/16026007364
[20:44:57] [PASSED] oob_was/14020316580
[20:44:57] [PASSED] oob_was/14025883347
[20:44:57] [PASSED] oob_was/16029380221
[20:44:57] [PASSED] oob_was/22022079272
[20:44:57] [PASSED] oob_was/16029897822
[20:44:57] ============== [PASSED] xe_rtp_table_oob_test ==============
[20:44:57] ================ xe_rtp_table_dev_oob_test ================
[20:44:57] [PASSED] device_oob_was/22010954014
[20:44:57] [PASSED] device_oob_was/15015404425
[20:44:57] [PASSED] device_oob_was/22019338487_display
[20:44:57] [PASSED] device_oob_was/14022085890
[20:44:57] [PASSED] device_oob_was/14026539277
[20:44:57] [PASSED] device_oob_was/14026633728
[20:44:57] [PASSED] device_oob_was/14026746987
[20:44:57] [PASSED] device_oob_was/14026779378
[20:44:57] ============ [PASSED] xe_rtp_table_dev_oob_test ============
[20:44:57] ========== xe_rtp_table_missing_upper_bound_test ==========
[20:44:57] [PASSED] register_whitelist/WaAllowPMDepthAndInvocationCountAccessFromUMD, 1408556865
[20:44:57] [PASSED] register_whitelist/1508744258, 14012131227, 1808121037
[20:44:57] [PASSED] register_whitelist/1806527549
[20:44:57] [PASSED] register_whitelist/allow_read_ctx_timestamp
[20:44:57] [PASSED] register_whitelist/allow_read_queue_timestamp
[20:44:57] [PASSED] register_whitelist/16014440446
[20:44:57] [PASSED] register_whitelist/16017236439
[20:44:57] [PASSED] register_whitelist/16020183090
[20:44:57] [PASSED] register_whitelist/14024997852
[20:44:57] [PASSED] register_whitelist/14024997852
[20:44:57] ====== [PASSED] xe_rtp_table_missing_upper_bound_test ======
[20:44:57] =============== [PASSED] xe_rtp_tables_test ================
[20:44:57] =================== xe_rtp (3 subtests) ====================
[20:44:57] =================== xe_rtp_rules_tests ====================
[20:44:57] [PASSED] no
[20:44:57] [PASSED] yes
[20:44:57] [PASSED] no-and-no
[20:44:57] [PASSED] no-and-yes
[20:44:57] [PASSED] yes-and-no
[20:44:57] [PASSED] yes-and-yes
[20:44:57] [PASSED] no-or-no
[20:44:57] [PASSED] no-or-yes
[20:44:57] [PASSED] yes-or-no
[20:44:57] [PASSED] yes-or-yes
[20:44:57] [PASSED] no-yes-or-yes-no
[20:44:57] [PASSED] no-yes-or-yes-yes
[20:44:57] [PASSED] yes-yes-or-no-yes
[20:44:57] [PASSED] yes-yes-or-yes-yes
[20:44:57] [PASSED] no-no-or-yes-or-no
[20:44:57] [PASSED] or
[20:44:57] [PASSED] or-yes
[20:44:57] [PASSED] or-no
[20:44:57] [PASSED] yes-or
[20:44:57] [PASSED] no-or
[20:44:57] [PASSED] no-or-or-yes
[20:44:57] [PASSED] yes-or-or-no
[20:44:57] [PASSED] no-or-or-no
[20:44:57] [PASSED] missing-context-engine-class
[20:44:57] [PASSED] missing-context-engine-class-or-yes
[20:44:57] [PASSED] missing-context-engine-class-or-or-yes
[20:44:57] =============== [PASSED] xe_rtp_rules_tests ================
[20:44:57] =============== xe_rtp_process_to_sr_tests ================
[20:44:57] [PASSED] coalesce-same-reg
[20:44:57] [PASSED] coalesce-same-reg-literal-and-func
[20:44:57] [PASSED] no-match-no-add
[20:44:57] [PASSED] two-regs-two-entries
[20:44:57] [PASSED] clr-one-set-other
[20:44:57] [PASSED] set-field
[20:44:57] [PASSED] conflict-duplicate
[20:44:57] [PASSED] conflict-not-disjoint
[20:44:57] [PASSED] conflict-not-disjoint-literal-and-func
[20:44:57] [PASSED] conflict-reg-type
[20:44:57] [PASSED] bad-mcr-reg-forced-to-regular
[20:44:57] [PASSED] bad-regular-reg-forced-to-mcr
[20:44:57] =========== [PASSED] xe_rtp_process_to_sr_tests ============
[20:44:57] ================== xe_rtp_process_tests ===================
[20:44:57] [PASSED] active1
[20:44:57] [PASSED] active2
[20:44:57] [PASSED] active-inactive
[20:44:57] [PASSED] inactive-active
[20:44:57] [PASSED] inactive-active-inactive
[20:44:57] [PASSED] inactive-inactive-inactive
[20:44:57] ============== [PASSED] xe_rtp_process_tests ===============
[20:44:57] ===================== [PASSED] xe_rtp ======================
[20:44:57] ==================== xe_wa (1 subtest) =====================
[20:44:57] ======================== xe_wa_gt =========================
[20:44:57] [PASSED] TIGERLAKE B0
[20:44:57] [PASSED] DG1 A0
[20:44:57] [PASSED] DG1 B0
[20:44:57] [PASSED] ALDERLAKE_S A0
[20:44:57] [PASSED] ALDERLAKE_S B0
[20:44:57] [PASSED] ALDERLAKE_S C0
[20:44:57] [PASSED] ALDERLAKE_S D0
[20:44:57] [PASSED] ALDERLAKE_P A0
[20:44:57] [PASSED] ALDERLAKE_P B0
[20:44:57] [PASSED] ALDERLAKE_P C0
[20:44:57] [PASSED] ALDERLAKE_S RPLS D0
[20:44:57] [PASSED] ALDERLAKE_P RPLU E0
[20:44:57] [PASSED] DG2 G10 C0
[20:44:57] [PASSED] DG2 G11 B1
[20:44:57] [PASSED] DG2 G12 A1
[20:44:57] [PASSED] METEORLAKE 12.70(Xe_LPG) A0 13.00(Xe_LPM+) A0
[20:44:57] [PASSED] METEORLAKE 12.71(Xe_LPG) A0 13.00(Xe_LPM+) A0
[20:44:57] [PASSED] METEORLAKE 12.74(Xe_LPG+) A0 13.00(Xe_LPM+) A0
[20:44:57] [PASSED] LUNARLAKE 20.04(Xe2_LPG) A0 20.00(Xe2_LPM) A0
[20:44:57] [PASSED] LUNARLAKE 20.04(Xe2_LPG) B0 20.00(Xe2_LPM) A0
[20:44:57] [PASSED] BATTLEMAGE 20.01(Xe2_HPG) A0 13.01(Xe2_HPM) A1
[20:44:57] [PASSED] PANTHERLAKE 30.00(Xe3_LPG) A0 30.00(Xe3_LPM) A0
[20:44:57] ==================== [PASSED] xe_wa_gt =====================
[20:44:57] ====================== [PASSED] xe_wa ======================
[20:44:57] ============================================================
[20:44:57] Testing complete. Ran 758 tests: passed: 740, skipped: 18
[20:44:57] Elapsed time: 37.193s total, 4.389s configuring, 32.138s building, 0.653s running
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/tests/.kunitconfig
[20:44:57] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[20:44:59] 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
[20:45:24] Starting KUnit Kernel (1/1)...
[20:45:24] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[20:45:24] ============ drm_test_pick_cmdline (2 subtests) ============
[20:45:24] [PASSED] drm_test_pick_cmdline_res_1920_1080_60
[20:45:24] =============== drm_test_pick_cmdline_named ===============
[20:45:24] [PASSED] NTSC
[20:45:24] [PASSED] NTSC-J
[20:45:24] [PASSED] PAL
[20:45:24] [PASSED] PAL-M
[20:45:24] =========== [PASSED] drm_test_pick_cmdline_named ===========
[20:45:24] ============== [PASSED] drm_test_pick_cmdline ==============
[20:45:24] == drm_test_atomic_get_connector_for_encoder (1 subtest) ===
[20:45:24] [PASSED] drm_test_drm_atomic_get_connector_for_encoder
[20:45:24] ==== [PASSED] drm_test_atomic_get_connector_for_encoder ====
[20:45:24] =========== drm_validate_clone_mode (2 subtests) ===========
[20:45:24] ============== drm_test_check_in_clone_mode ===============
[20:45:24] [PASSED] in_clone_mode
[20:45:24] [PASSED] not_in_clone_mode
[20:45:24] ========== [PASSED] drm_test_check_in_clone_mode ===========
[20:45:24] =============== drm_test_check_valid_clones ===============
[20:45:24] [PASSED] not_in_clone_mode
[20:45:24] [PASSED] valid_clone
[20:45:24] [PASSED] invalid_clone
[20:45:24] =========== [PASSED] drm_test_check_valid_clones ===========
[20:45:24] ============= [PASSED] drm_validate_clone_mode =============
[20:45:24] ============= drm_validate_modeset (1 subtest) =============
[20:45:24] [PASSED] drm_test_check_connector_changed_modeset
[20:45:24] ============== [PASSED] drm_validate_modeset ===============
[20:45:24] ====== drm_test_bridge_get_current_state (1 subtest) =======
[20:45:24] [PASSED] drm_test_drm_bridge_get_current_state_atomic
[20:45:24] ======== [PASSED] drm_test_bridge_get_current_state ========
[20:45:24] ====== drm_test_bridge_helper_reset_crtc (3 subtests) ======
[20:45:24] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic
[20:45:24] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic_disabled
[20:45:24] [PASSED] drm_test_drm_bridge_helper_hdmi_output_bus_fmts
[20:45:24] ======== [PASSED] drm_test_bridge_helper_reset_crtc ========
[20:45:24] ============== drm_bridge_alloc (2 subtests) ===============
[20:45:24] [PASSED] drm_test_drm_bridge_alloc_basic
[20:45:24] [PASSED] drm_test_drm_bridge_alloc_get_put
[20:45:24] ================ [PASSED] drm_bridge_alloc =================
[20:45:24] ============= drm_bridge_bus_fmt (5 subtests) ==============
[20:45:24] [PASSED] drm_test_bridge_rgb_yuv_rgb
[20:45:24] [PASSED] drm_test_bridge_must_convert_to_yuv444
[20:45:24] [PASSED] drm_test_bridge_hdmi_auto_rgb
[20:45:24] [PASSED] drm_test_bridge_auto_first
[20:45:24] [PASSED] drm_test_bridge_rgb_yuv_no_path
[20:45:24] =============== [PASSED] drm_bridge_bus_fmt ================
[20:45:24] ============= drm_cmdline_parser (40 subtests) =============
[20:45:24] [PASSED] drm_test_cmdline_force_d_only
[20:45:24] [PASSED] drm_test_cmdline_force_D_only_dvi
[20:45:24] [PASSED] drm_test_cmdline_force_D_only_hdmi
[20:45:24] [PASSED] drm_test_cmdline_force_D_only_not_digital
[20:45:24] [PASSED] drm_test_cmdline_force_e_only
[20:45:24] [PASSED] drm_test_cmdline_res
[20:45:24] [PASSED] drm_test_cmdline_res_vesa
[20:45:24] [PASSED] drm_test_cmdline_res_vesa_rblank
[20:45:24] [PASSED] drm_test_cmdline_res_rblank
[20:45:24] [PASSED] drm_test_cmdline_res_bpp
[20:45:24] [PASSED] drm_test_cmdline_res_refresh
[20:45:24] [PASSED] drm_test_cmdline_res_bpp_refresh
[20:45:24] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced
[20:45:24] [PASSED] drm_test_cmdline_res_bpp_refresh_margins
[20:45:24] [PASSED] drm_test_cmdline_res_bpp_refresh_force_off
[20:45:24] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on
[20:45:24] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_analog
[20:45:24] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_digital
[20:45:24] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced_margins_force_on
[20:45:24] [PASSED] drm_test_cmdline_res_margins_force_on
[20:45:24] [PASSED] drm_test_cmdline_res_vesa_margins
[20:45:24] [PASSED] drm_test_cmdline_name
[20:45:24] [PASSED] drm_test_cmdline_name_bpp
[20:45:24] [PASSED] drm_test_cmdline_name_option
[20:45:24] [PASSED] drm_test_cmdline_name_bpp_option
[20:45:24] [PASSED] drm_test_cmdline_rotate_0
[20:45:24] [PASSED] drm_test_cmdline_rotate_90
[20:45:24] [PASSED] drm_test_cmdline_rotate_180
[20:45:24] [PASSED] drm_test_cmdline_rotate_270
[20:45:24] [PASSED] drm_test_cmdline_hmirror
[20:45:24] [PASSED] drm_test_cmdline_vmirror
[20:45:24] [PASSED] drm_test_cmdline_margin_options
[20:45:24] [PASSED] drm_test_cmdline_multiple_options
[20:45:24] [PASSED] drm_test_cmdline_bpp_extra_and_option
[20:45:24] [PASSED] drm_test_cmdline_extra_and_option
[20:45:24] [PASSED] drm_test_cmdline_freestanding_options
[20:45:24] [PASSED] drm_test_cmdline_freestanding_force_e_and_options
[20:45:24] [PASSED] drm_test_cmdline_panel_orientation
[20:45:24] ================ drm_test_cmdline_invalid =================
[20:45:24] [PASSED] margin_only
[20:45:24] [PASSED] interlace_only
[20:45:24] [PASSED] res_missing_x
[20:45:24] [PASSED] res_missing_y
[20:45:24] [PASSED] res_bad_y
[20:45:24] [PASSED] res_missing_y_bpp
[20:45:24] [PASSED] res_bad_bpp
[20:45:24] [PASSED] res_bad_refresh
[20:45:24] [PASSED] res_bpp_refresh_force_on_off
[20:45:24] [PASSED] res_invalid_mode
[20:45:24] [PASSED] res_bpp_wrong_place_mode
[20:45:24] [PASSED] name_bpp_refresh
[20:45:24] [PASSED] name_refresh
[20:45:24] [PASSED] name_refresh_wrong_mode
[20:45:24] [PASSED] name_refresh_invalid_mode
[20:45:24] [PASSED] rotate_multiple
[20:45:24] [PASSED] rotate_invalid_val
[20:45:24] [PASSED] rotate_truncated
[20:45:24] [PASSED] invalid_option
[20:45:24] [PASSED] invalid_tv_option
[20:45:24] [PASSED] truncated_tv_option
[20:45:24] ============ [PASSED] drm_test_cmdline_invalid =============
[20:45:24] =============== drm_test_cmdline_tv_options ===============
[20:45:24] [PASSED] NTSC
[20:45:24] [PASSED] NTSC_443
[20:45:24] [PASSED] NTSC_J
[20:45:24] [PASSED] PAL
[20:45:24] [PASSED] PAL_M
[20:45:24] [PASSED] PAL_N
[20:45:24] [PASSED] SECAM
[20:45:24] [PASSED] MONO_525
[20:45:24] [PASSED] MONO_625
[20:45:24] =========== [PASSED] drm_test_cmdline_tv_options ===========
[20:45:24] =============== [PASSED] drm_cmdline_parser ================
[20:45:24] ========== drmm_connector_hdmi_init (20 subtests) ==========
[20:45:24] [PASSED] drm_test_connector_hdmi_init_valid
[20:45:24] [PASSED] drm_test_connector_hdmi_init_bpc_8
[20:45:24] [PASSED] drm_test_connector_hdmi_init_bpc_10
[20:45:24] [PASSED] drm_test_connector_hdmi_init_bpc_12
[20:45:24] [PASSED] drm_test_connector_hdmi_init_bpc_invalid
[20:45:24] [PASSED] drm_test_connector_hdmi_init_bpc_null
[20:45:24] [PASSED] drm_test_connector_hdmi_init_formats_empty
[20:45:24] [PASSED] drm_test_connector_hdmi_init_formats_no_rgb
[20:45:24] === drm_test_connector_hdmi_init_formats_yuv420_allowed ===
[20:45:24] [PASSED] supported_formats=0x9 yuv420_allowed=1
[20:45:24] [PASSED] supported_formats=0x9 yuv420_allowed=0
[20:45:24] [PASSED] supported_formats=0x5 yuv420_allowed=1
[20:45:24] [PASSED] supported_formats=0x5 yuv420_allowed=0
[20:45:24] === [PASSED] drm_test_connector_hdmi_init_formats_yuv420_allowed ===
[20:45:24] [PASSED] drm_test_connector_hdmi_init_null_ddc
[20:45:24] [PASSED] drm_test_connector_hdmi_init_null_product
[20:45:24] [PASSED] drm_test_connector_hdmi_init_null_vendor
[20:45:24] [PASSED] drm_test_connector_hdmi_init_product_length_exact
[20:45:24] [PASSED] drm_test_connector_hdmi_init_product_length_too_long
[20:45:24] [PASSED] drm_test_connector_hdmi_init_product_valid
[20:45:24] [PASSED] drm_test_connector_hdmi_init_vendor_length_exact
[20:45:24] [PASSED] drm_test_connector_hdmi_init_vendor_length_too_long
[20:45:24] [PASSED] drm_test_connector_hdmi_init_vendor_valid
[20:45:24] ========= drm_test_connector_hdmi_init_type_valid =========
[20:45:24] [PASSED] HDMI-A
[20:45:24] [PASSED] HDMI-B
[20:45:24] ===== [PASSED] drm_test_connector_hdmi_init_type_valid =====
[20:45:24] ======== drm_test_connector_hdmi_init_type_invalid ========
[20:45:24] [PASSED] Unknown
[20:45:24] [PASSED] VGA
[20:45:24] [PASSED] DVI-I
[20:45:24] [PASSED] DVI-D
[20:45:24] [PASSED] DVI-A
[20:45:24] [PASSED] Composite
[20:45:24] [PASSED] SVIDEO
[20:45:24] [PASSED] LVDS
[20:45:24] [PASSED] Component
[20:45:24] [PASSED] DIN
[20:45:24] [PASSED] DP
[20:45:24] [PASSED] TV
[20:45:24] [PASSED] eDP
[20:45:24] [PASSED] Virtual
[20:45:24] [PASSED] DSI
[20:45:24] [PASSED] DPI
[20:45:24] [PASSED] Writeback
[20:45:24] [PASSED] SPI
[20:45:24] [PASSED] USB
[20:45:24] ==== [PASSED] drm_test_connector_hdmi_init_type_invalid ====
[20:45:24] ============ [PASSED] drmm_connector_hdmi_init =============
[20:45:24] ============= drmm_connector_init (3 subtests) =============
[20:45:24] [PASSED] drm_test_drmm_connector_init
[20:45:24] [PASSED] drm_test_drmm_connector_init_null_ddc
[20:45:24] ========= drm_test_drmm_connector_init_type_valid =========
[20:45:24] [PASSED] Unknown
[20:45:24] [PASSED] VGA
[20:45:24] [PASSED] DVI-I
[20:45:24] [PASSED] DVI-D
[20:45:24] [PASSED] DVI-A
[20:45:24] [PASSED] Composite
[20:45:24] [PASSED] SVIDEO
[20:45:24] [PASSED] LVDS
[20:45:24] [PASSED] Component
[20:45:24] [PASSED] DIN
[20:45:24] [PASSED] DP
[20:45:24] [PASSED] HDMI-A
[20:45:24] [PASSED] HDMI-B
[20:45:24] [PASSED] TV
[20:45:24] [PASSED] eDP
[20:45:24] [PASSED] Virtual
[20:45:24] [PASSED] DSI
[20:45:24] [PASSED] DPI
[20:45:24] [PASSED] Writeback
[20:45:24] [PASSED] SPI
[20:45:24] [PASSED] USB
[20:45:24] ===== [PASSED] drm_test_drmm_connector_init_type_valid =====
[20:45:24] =============== [PASSED] drmm_connector_init ===============
[20:45:24] ========= drm_connector_dynamic_init (6 subtests) ==========
[20:45:24] [PASSED] drm_test_drm_connector_dynamic_init
[20:45:24] [PASSED] drm_test_drm_connector_dynamic_init_null_ddc
[20:45:24] [PASSED] drm_test_drm_connector_dynamic_init_not_added
[20:45:24] [PASSED] drm_test_drm_connector_dynamic_init_properties
[20:45:24] ===== drm_test_drm_connector_dynamic_init_type_valid ======
[20:45:24] [PASSED] Unknown
[20:45:24] [PASSED] VGA
[20:45:24] [PASSED] DVI-I
[20:45:24] [PASSED] DVI-D
[20:45:24] [PASSED] DVI-A
[20:45:24] [PASSED] Composite
[20:45:24] [PASSED] SVIDEO
[20:45:24] [PASSED] LVDS
[20:45:24] [PASSED] Component
[20:45:24] [PASSED] DIN
[20:45:24] [PASSED] DP
[20:45:24] [PASSED] HDMI-A
[20:45:24] [PASSED] HDMI-B
[20:45:24] [PASSED] TV
[20:45:24] [PASSED] eDP
[20:45:24] [PASSED] Virtual
[20:45:24] [PASSED] DSI
[20:45:24] [PASSED] DPI
[20:45:24] [PASSED] Writeback
[20:45:24] [PASSED] SPI
[20:45:24] [PASSED] USB
[20:45:24] = [PASSED] drm_test_drm_connector_dynamic_init_type_valid ==
[20:45:24] ======== drm_test_drm_connector_dynamic_init_name =========
[20:45:24] [PASSED] Unknown
[20:45:24] [PASSED] VGA
[20:45:24] [PASSED] DVI-I
[20:45:24] [PASSED] DVI-D
[20:45:24] [PASSED] DVI-A
[20:45:24] [PASSED] Composite
[20:45:24] [PASSED] SVIDEO
[20:45:24] [PASSED] LVDS
[20:45:24] [PASSED] Component
[20:45:24] [PASSED] DIN
[20:45:24] [PASSED] DP
[20:45:24] [PASSED] HDMI-A
[20:45:24] [PASSED] HDMI-B
[20:45:24] [PASSED] TV
[20:45:24] [PASSED] eDP
[20:45:24] [PASSED] Virtual
[20:45:24] [PASSED] DSI
[20:45:24] [PASSED] DPI
[20:45:24] [PASSED] Writeback
[20:45:24] [PASSED] SPI
[20:45:24] [PASSED] USB
[20:45:24] ==== [PASSED] drm_test_drm_connector_dynamic_init_name =====
[20:45:24] =========== [PASSED] drm_connector_dynamic_init ============
[20:45:24] ==== drm_connector_dynamic_register_early (4 subtests) =====
[20:45:24] [PASSED] drm_test_drm_connector_dynamic_register_early_on_list
[20:45:24] [PASSED] drm_test_drm_connector_dynamic_register_early_defer
[20:45:24] [PASSED] drm_test_drm_connector_dynamic_register_early_no_init
[20:45:24] [PASSED] drm_test_drm_connector_dynamic_register_early_no_mode_object
[20:45:24] ====== [PASSED] drm_connector_dynamic_register_early =======
[20:45:24] ======= drm_connector_dynamic_register (7 subtests) ========
[20:45:24] [PASSED] drm_test_drm_connector_dynamic_register_on_list
[20:45:24] [PASSED] drm_test_drm_connector_dynamic_register_no_defer
[20:45:24] [PASSED] drm_test_drm_connector_dynamic_register_no_init
[20:45:24] [PASSED] drm_test_drm_connector_dynamic_register_mode_object
[20:45:24] [PASSED] drm_test_drm_connector_dynamic_register_sysfs
[20:45:24] [PASSED] drm_test_drm_connector_dynamic_register_sysfs_name
[20:45:24] [PASSED] drm_test_drm_connector_dynamic_register_debugfs
[20:45:24] ========= [PASSED] drm_connector_dynamic_register ==========
[20:45:24] = drm_connector_attach_broadcast_rgb_property (2 subtests) =
[20:45:24] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property
[20:45:24] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property_hdmi_connector
[20:45:24] === [PASSED] drm_connector_attach_broadcast_rgb_property ===
[20:45:24] ========== drm_get_tv_mode_from_name (2 subtests) ==========
[20:45:24] ========== drm_test_get_tv_mode_from_name_valid ===========
[20:45:24] [PASSED] NTSC
[20:45:24] [PASSED] NTSC-443
[20:45:24] [PASSED] NTSC-J
[20:45:24] [PASSED] PAL
[20:45:24] [PASSED] PAL-M
[20:45:24] [PASSED] PAL-N
[20:45:24] [PASSED] SECAM
[20:45:24] [PASSED] Mono
[20:45:24] ====== [PASSED] drm_test_get_tv_mode_from_name_valid =======
[20:45:24] [PASSED] drm_test_get_tv_mode_from_name_truncated
[20:45:24] ============ [PASSED] drm_get_tv_mode_from_name ============
[20:45:24] = drm_test_connector_hdmi_compute_mode_clock (12 subtests) =
[20:45:24] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb
[20:45:24] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc
[20:45:24] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc_vic_1
[20:45:24] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc
[20:45:24] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc_vic_1
[20:45:24] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_double
[20:45:24] = drm_test_connector_hdmi_compute_mode_clock_yuv420_valid =
[20:45:24] [PASSED] VIC 96
[20:45:24] [PASSED] VIC 97
[20:45:24] [PASSED] VIC 101
[20:45:24] [PASSED] VIC 102
[20:45:24] [PASSED] VIC 106
[20:45:24] [PASSED] VIC 107
[20:45:24] === [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_valid ===
[20:45:24] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_10_bpc
[20:45:24] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_12_bpc
[20:45:24] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_8_bpc
[20:45:24] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_10_bpc
[20:45:24] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_12_bpc
[20:45:24] === [PASSED] drm_test_connector_hdmi_compute_mode_clock ====
[20:45:24] == drm_hdmi_connector_get_broadcast_rgb_name (2 subtests) ==
[20:45:24] === drm_test_drm_hdmi_connector_get_broadcast_rgb_name ====
[20:45:24] [PASSED] Automatic
[20:45:24] [PASSED] Full
[20:45:24] [PASSED] Limited 16:235
[20:45:24] === [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name ===
[20:45:24] [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name_invalid
[20:45:24] ==== [PASSED] drm_hdmi_connector_get_broadcast_rgb_name ====
[20:45:24] == drm_hdmi_connector_get_output_format_name (2 subtests) ==
[20:45:24] === drm_test_drm_hdmi_connector_get_output_format_name ====
[20:45:24] [PASSED] RGB
[20:45:24] [PASSED] YUV 4:2:0
[20:45:24] [PASSED] YUV 4:2:2
[20:45:24] [PASSED] YUV 4:4:4
[20:45:24] === [PASSED] drm_test_drm_hdmi_connector_get_output_format_name ===
[20:45:24] [PASSED] drm_test_drm_hdmi_connector_get_output_format_name_invalid
[20:45:24] ==== [PASSED] drm_hdmi_connector_get_output_format_name ====
[20:45:24] ============= drm_damage_helper (21 subtests) ==============
[20:45:24] [PASSED] drm_test_damage_iter_no_damage
[20:45:24] [PASSED] drm_test_damage_iter_no_damage_fractional_src
[20:45:24] [PASSED] drm_test_damage_iter_no_damage_src_moved
[20:45:24] [PASSED] drm_test_damage_iter_no_damage_fractional_src_moved
[20:45:24] [PASSED] drm_test_damage_iter_no_damage_not_visible
[20:45:24] [PASSED] drm_test_damage_iter_no_damage_no_crtc
[20:45:24] [PASSED] drm_test_damage_iter_no_damage_no_fb
[20:45:24] [PASSED] drm_test_damage_iter_simple_damage
[20:45:24] [PASSED] drm_test_damage_iter_single_damage
[20:45:24] [PASSED] drm_test_damage_iter_single_damage_intersect_src
[20:45:24] [PASSED] drm_test_damage_iter_single_damage_outside_src
[20:45:24] [PASSED] drm_test_damage_iter_single_damage_fractional_src
[20:45:24] [PASSED] drm_test_damage_iter_single_damage_intersect_fractional_src
[20:45:24] [PASSED] drm_test_damage_iter_single_damage_outside_fractional_src
[20:45:24] [PASSED] drm_test_damage_iter_single_damage_src_moved
[20:45:24] [PASSED] drm_test_damage_iter_single_damage_fractional_src_moved
[20:45:24] [PASSED] drm_test_damage_iter_damage
[20:45:24] [PASSED] drm_test_damage_iter_damage_one_intersect
[20:45:24] [PASSED] drm_test_damage_iter_damage_one_outside
[20:45:24] [PASSED] drm_test_damage_iter_damage_src_moved
[20:45:24] [PASSED] drm_test_damage_iter_damage_not_visible
[20:45:24] ================ [PASSED] drm_damage_helper ================
[20:45:24] ============== drm_dp_mst_helper (3 subtests) ==============
[20:45:24] ============== drm_test_dp_mst_calc_pbn_mode ==============
[20:45:24] [PASSED] Clock 154000 BPP 30 DSC disabled
[20:45:24] [PASSED] Clock 234000 BPP 30 DSC disabled
[20:45:24] [PASSED] Clock 297000 BPP 24 DSC disabled
[20:45:24] [PASSED] Clock 332880 BPP 24 DSC enabled
[20:45:24] [PASSED] Clock 324540 BPP 24 DSC enabled
[20:45:24] ========== [PASSED] drm_test_dp_mst_calc_pbn_mode ==========
[20:45:24] ============== drm_test_dp_mst_calc_pbn_div ===============
[20:45:24] [PASSED] Link rate 2000000 lane count 4
[20:45:24] [PASSED] Link rate 2000000 lane count 2
[20:45:24] [PASSED] Link rate 2000000 lane count 1
[20:45:24] [PASSED] Link rate 1350000 lane count 4
[20:45:24] [PASSED] Link rate 1350000 lane count 2
[20:45:24] [PASSED] Link rate 1350000 lane count 1
[20:45:24] [PASSED] Link rate 1000000 lane count 4
[20:45:24] [PASSED] Link rate 1000000 lane count 2
[20:45:24] [PASSED] Link rate 1000000 lane count 1
[20:45:24] [PASSED] Link rate 810000 lane count 4
[20:45:24] [PASSED] Link rate 810000 lane count 2
[20:45:24] [PASSED] Link rate 810000 lane count 1
[20:45:24] [PASSED] Link rate 540000 lane count 4
[20:45:24] [PASSED] Link rate 540000 lane count 2
[20:45:24] [PASSED] Link rate 540000 lane count 1
[20:45:24] [PASSED] Link rate 270000 lane count 4
[20:45:24] [PASSED] Link rate 270000 lane count 2
[20:45:24] [PASSED] Link rate 270000 lane count 1
[20:45:24] [PASSED] Link rate 162000 lane count 4
[20:45:24] [PASSED] Link rate 162000 lane count 2
[20:45:24] [PASSED] Link rate 162000 lane count 1
[20:45:24] ========== [PASSED] drm_test_dp_mst_calc_pbn_div ===========
[20:45:24] ========= drm_test_dp_mst_sideband_msg_req_decode =========
[20:45:24] [PASSED] DP_ENUM_PATH_RESOURCES with port number
[20:45:24] [PASSED] DP_POWER_UP_PHY with port number
[20:45:24] [PASSED] DP_POWER_DOWN_PHY with port number
[20:45:24] [PASSED] DP_ALLOCATE_PAYLOAD with SDP stream sinks
[20:45:24] [PASSED] DP_ALLOCATE_PAYLOAD with port number
[20:45:24] [PASSED] DP_ALLOCATE_PAYLOAD with VCPI
[20:45:24] [PASSED] DP_ALLOCATE_PAYLOAD with PBN
[20:45:24] [PASSED] DP_QUERY_PAYLOAD with port number
[20:45:24] [PASSED] DP_QUERY_PAYLOAD with VCPI
[20:45:24] [PASSED] DP_REMOTE_DPCD_READ with port number
[20:45:24] [PASSED] DP_REMOTE_DPCD_READ with DPCD address
[20:45:24] [PASSED] DP_REMOTE_DPCD_READ with max number of bytes
[20:45:24] [PASSED] DP_REMOTE_DPCD_WRITE with port number
[20:45:24] [PASSED] DP_REMOTE_DPCD_WRITE with DPCD address
[20:45:24] [PASSED] DP_REMOTE_DPCD_WRITE with data array
[20:45:24] [PASSED] DP_REMOTE_I2C_READ with port number
[20:45:24] [PASSED] DP_REMOTE_I2C_READ with I2C device ID
[20:45:24] [PASSED] DP_REMOTE_I2C_READ with transactions array
[20:45:24] [PASSED] DP_REMOTE_I2C_WRITE with port number
[20:45:24] [PASSED] DP_REMOTE_I2C_WRITE with I2C device ID
[20:45:24] [PASSED] DP_REMOTE_I2C_WRITE with data array
[20:45:24] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream ID
[20:45:24] [PASSED] DP_QUERY_STREAM_ENC_STATUS with client ID
[20:45:24] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream event
[20:45:24] [PASSED] DP_QUERY_STREAM_ENC_STATUS with valid stream event
[20:45:24] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream behavior
[20:45:24] [PASSED] DP_QUERY_STREAM_ENC_STATUS with a valid stream behavior
[20:45:24] ===== [PASSED] drm_test_dp_mst_sideband_msg_req_decode =====
[20:45:24] ================ [PASSED] drm_dp_mst_helper ================
[20:45:24] ================== drm_exec (7 subtests) ===================
[20:45:24] [PASSED] sanitycheck
[20:45:24] [PASSED] test_lock
[20:45:24] [PASSED] test_lock_unlock
[20:45:24] [PASSED] test_duplicates
[20:45:24] [PASSED] test_prepare
[20:45:24] [PASSED] test_prepare_array
[20:45:24] [PASSED] test_multiple_loops
[20:45:24] ==================== [PASSED] drm_exec =====================
[20:45:24] =========== drm_format_helper_test (17 subtests) ===========
[20:45:24] ============== drm_test_fb_xrgb8888_to_gray8 ==============
[20:45:24] [PASSED] single_pixel_source_buffer
[20:45:24] [PASSED] single_pixel_clip_rectangle
[20:45:24] [PASSED] well_known_colors
[20:45:24] [PASSED] destination_pitch
[20:45:24] ========== [PASSED] drm_test_fb_xrgb8888_to_gray8 ==========
[20:45:24] ============= drm_test_fb_xrgb8888_to_rgb332 ==============
[20:45:24] [PASSED] single_pixel_source_buffer
[20:45:24] [PASSED] single_pixel_clip_rectangle
[20:45:24] [PASSED] well_known_colors
[20:45:24] [PASSED] destination_pitch
[20:45:24] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb332 ==========
[20:45:24] ============= drm_test_fb_xrgb8888_to_rgb565 ==============
[20:45:24] [PASSED] single_pixel_source_buffer
[20:45:24] [PASSED] single_pixel_clip_rectangle
[20:45:24] [PASSED] well_known_colors
[20:45:24] [PASSED] destination_pitch
[20:45:24] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb565 ==========
[20:45:24] ============ drm_test_fb_xrgb8888_to_xrgb1555 =============
[20:45:24] [PASSED] single_pixel_source_buffer
[20:45:24] [PASSED] single_pixel_clip_rectangle
[20:45:24] [PASSED] well_known_colors
[20:45:24] [PASSED] destination_pitch
[20:45:24] ======== [PASSED] drm_test_fb_xrgb8888_to_xrgb1555 =========
[20:45:24] ============ drm_test_fb_xrgb8888_to_argb1555 =============
[20:45:24] [PASSED] single_pixel_source_buffer
[20:45:24] [PASSED] single_pixel_clip_rectangle
[20:45:24] [PASSED] well_known_colors
[20:45:24] [PASSED] destination_pitch
[20:45:24] ======== [PASSED] drm_test_fb_xrgb8888_to_argb1555 =========
[20:45:24] ============ drm_test_fb_xrgb8888_to_rgba5551 =============
[20:45:24] [PASSED] single_pixel_source_buffer
[20:45:24] [PASSED] single_pixel_clip_rectangle
[20:45:24] [PASSED] well_known_colors
[20:45:24] [PASSED] destination_pitch
[20:45:24] ======== [PASSED] drm_test_fb_xrgb8888_to_rgba5551 =========
[20:45:24] ============= drm_test_fb_xrgb8888_to_rgb888 ==============
[20:45:24] [PASSED] single_pixel_source_buffer
[20:45:24] [PASSED] single_pixel_clip_rectangle
[20:45:24] [PASSED] well_known_colors
[20:45:24] [PASSED] destination_pitch
[20:45:24] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb888 ==========
[20:45:24] ============= drm_test_fb_xrgb8888_to_bgr888 ==============
[20:45:24] [PASSED] single_pixel_source_buffer
[20:45:24] [PASSED] single_pixel_clip_rectangle
[20:45:24] [PASSED] well_known_colors
[20:45:24] [PASSED] destination_pitch
[20:45:24] ========= [PASSED] drm_test_fb_xrgb8888_to_bgr888 ==========
[20:45:24] ============ drm_test_fb_xrgb8888_to_argb8888 =============
[20:45:24] [PASSED] single_pixel_source_buffer
[20:45:24] [PASSED] single_pixel_clip_rectangle
[20:45:24] [PASSED] well_known_colors
[20:45:24] [PASSED] destination_pitch
[20:45:24] ======== [PASSED] drm_test_fb_xrgb8888_to_argb8888 =========
[20:45:24] =========== drm_test_fb_xrgb8888_to_xrgb2101010 ===========
[20:45:24] [PASSED] single_pixel_source_buffer
[20:45:24] [PASSED] single_pixel_clip_rectangle
[20:45:24] [PASSED] well_known_colors
[20:45:24] [PASSED] destination_pitch
[20:45:24] ======= [PASSED] drm_test_fb_xrgb8888_to_xrgb2101010 =======
[20:45:24] =========== drm_test_fb_xrgb8888_to_argb2101010 ===========
[20:45:24] [PASSED] single_pixel_source_buffer
[20:45:24] [PASSED] single_pixel_clip_rectangle
[20:45:24] [PASSED] well_known_colors
[20:45:24] [PASSED] destination_pitch
[20:45:24] ======= [PASSED] drm_test_fb_xrgb8888_to_argb2101010 =======
[20:45:24] ============== drm_test_fb_xrgb8888_to_mono ===============
[20:45:24] [PASSED] single_pixel_source_buffer
[20:45:24] [PASSED] single_pixel_clip_rectangle
[20:45:24] [PASSED] well_known_colors
[20:45:24] [PASSED] destination_pitch
[20:45:24] ========== [PASSED] drm_test_fb_xrgb8888_to_mono ===========
[20:45:24] ==================== drm_test_fb_swab =====================
[20:45:24] [PASSED] single_pixel_source_buffer
[20:45:24] [PASSED] single_pixel_clip_rectangle
[20:45:24] [PASSED] well_known_colors
[20:45:24] [PASSED] destination_pitch
[20:45:24] ================ [PASSED] drm_test_fb_swab =================
[20:45:24] ============ drm_test_fb_xrgb8888_to_xbgr8888 =============
[20:45:24] [PASSED] single_pixel_source_buffer
[20:45:24] [PASSED] single_pixel_clip_rectangle
[20:45:24] [PASSED] well_known_colors
[20:45:24] [PASSED] destination_pitch
[20:45:24] ======== [PASSED] drm_test_fb_xrgb8888_to_xbgr8888 =========
[20:45:24] ============ drm_test_fb_xrgb8888_to_abgr8888 =============
[20:45:24] [PASSED] single_pixel_source_buffer
[20:45:24] [PASSED] single_pixel_clip_rectangle
[20:45:24] [PASSED] well_known_colors
[20:45:24] [PASSED] destination_pitch
[20:45:24] ======== [PASSED] drm_test_fb_xrgb8888_to_abgr8888 =========
[20:45:24] ================= drm_test_fb_clip_offset =================
[20:45:24] [PASSED] pass through
[20:45:24] [PASSED] horizontal offset
[20:45:24] [PASSED] vertical offset
[20:45:24] [PASSED] horizontal and vertical offset
[20:45:24] [PASSED] horizontal offset (custom pitch)
[20:45:24] [PASSED] vertical offset (custom pitch)
[20:45:24] [PASSED] horizontal and vertical offset (custom pitch)
[20:45:24] ============= [PASSED] drm_test_fb_clip_offset =============
[20:45:24] =================== drm_test_fb_memcpy ====================
[20:45:24] [PASSED] single_pixel_source_buffer: XR24 little-endian (0x34325258)
[20:45:24] [PASSED] single_pixel_source_buffer: XRA8 little-endian (0x38415258)
[20:45:24] [PASSED] single_pixel_source_buffer: YU24 little-endian (0x34325559)
[20:45:24] [PASSED] single_pixel_clip_rectangle: XB24 little-endian (0x34324258)
[20:45:24] [PASSED] single_pixel_clip_rectangle: XRA8 little-endian (0x38415258)
[20:45:24] [PASSED] single_pixel_clip_rectangle: YU24 little-endian (0x34325559)
[20:45:24] [PASSED] well_known_colors: XB24 little-endian (0x34324258)
[20:45:24] [PASSED] well_known_colors: XRA8 little-endian (0x38415258)
[20:45:24] [PASSED] well_known_colors: YU24 little-endian (0x34325559)
[20:45:24] [PASSED] destination_pitch: XB24 little-endian (0x34324258)
[20:45:24] [PASSED] destination_pitch: XRA8 little-endian (0x38415258)
[20:45:24] [PASSED] destination_pitch: YU24 little-endian (0x34325559)
[20:45:24] =============== [PASSED] drm_test_fb_memcpy ================
[20:45:24] ============= [PASSED] drm_format_helper_test ==============
[20:45:24] ================= drm_format (18 subtests) =================
[20:45:24] [PASSED] drm_test_format_block_width_invalid
[20:45:24] [PASSED] drm_test_format_block_width_one_plane
[20:45:24] [PASSED] drm_test_format_block_width_two_plane
[20:45:24] [PASSED] drm_test_format_block_width_three_plane
[20:45:24] [PASSED] drm_test_format_block_width_tiled
[20:45:24] [PASSED] drm_test_format_block_height_invalid
[20:45:24] [PASSED] drm_test_format_block_height_one_plane
[20:45:24] [PASSED] drm_test_format_block_height_two_plane
[20:45:24] [PASSED] drm_test_format_block_height_three_plane
[20:45:24] [PASSED] drm_test_format_block_height_tiled
[20:45:24] [PASSED] drm_test_format_min_pitch_invalid
[20:45:24] [PASSED] drm_test_format_min_pitch_one_plane_8bpp
[20:45:24] [PASSED] drm_test_format_min_pitch_one_plane_16bpp
[20:45:24] [PASSED] drm_test_format_min_pitch_one_plane_24bpp
[20:45:24] [PASSED] drm_test_format_min_pitch_one_plane_32bpp
[20:45:24] [PASSED] drm_test_format_min_pitch_two_plane
[20:45:24] [PASSED] drm_test_format_min_pitch_three_plane_8bpp
[20:45:24] [PASSED] drm_test_format_min_pitch_tiled
[20:45:24] =================== [PASSED] drm_format ====================
[20:45:24] ============== drm_framebuffer (10 subtests) ===============
[20:45:24] ========== drm_test_framebuffer_check_src_coords ==========
[20:45:24] [PASSED] Success: source fits into fb
[20:45:24] [PASSED] Fail: overflowing fb with x-axis coordinate
[20:45:24] [PASSED] Fail: overflowing fb with y-axis coordinate
[20:45:24] [PASSED] Fail: overflowing fb with source width
[20:45:24] [PASSED] Fail: overflowing fb with source height
[20:45:24] ====== [PASSED] drm_test_framebuffer_check_src_coords ======
[20:45:24] [PASSED] drm_test_framebuffer_cleanup
[20:45:24] =============== drm_test_framebuffer_create ===============
[20:45:24] [PASSED] ABGR8888 normal sizes
[20:45:24] [PASSED] ABGR8888 max sizes
[20:45:24] [PASSED] ABGR8888 pitch greater than min required
[20:45:24] [PASSED] ABGR8888 pitch less than min required
[20:45:24] [PASSED] ABGR8888 Invalid width
[20:45:24] [PASSED] ABGR8888 Invalid buffer handle
[20:45:24] [PASSED] No pixel format
[20:45:24] [PASSED] ABGR8888 Width 0
[20:45:24] [PASSED] ABGR8888 Height 0
[20:45:24] [PASSED] ABGR8888 Out of bound height * pitch combination
[20:45:24] [PASSED] ABGR8888 Large buffer offset
[20:45:24] [PASSED] ABGR8888 Buffer offset for inexistent plane
[20:45:24] [PASSED] ABGR8888 Invalid flag
[20:45:24] [PASSED] ABGR8888 Set DRM_MODE_FB_MODIFIERS without modifiers
[20:45:24] [PASSED] ABGR8888 Valid buffer modifier
[20:45:24] [PASSED] ABGR8888 Invalid buffer modifier(DRM_FORMAT_MOD_SAMSUNG_64_32_TILE)
[20:45:24] [PASSED] ABGR8888 Extra pitches without DRM_MODE_FB_MODIFIERS
[20:45:24] [PASSED] ABGR8888 Extra pitches with DRM_MODE_FB_MODIFIERS
[20:45:24] [PASSED] NV12 Normal sizes
[20:45:24] [PASSED] NV12 Max sizes
[20:45:24] [PASSED] NV12 Invalid pitch
[20:45:24] [PASSED] NV12 Invalid modifier/missing DRM_MODE_FB_MODIFIERS flag
[20:45:24] [PASSED] NV12 different modifier per-plane
[20:45:24] [PASSED] NV12 with DRM_FORMAT_MOD_SAMSUNG_64_32_TILE
[20:45:24] [PASSED] NV12 Valid modifiers without DRM_MODE_FB_MODIFIERS
[20:45:24] [PASSED] NV12 Modifier for inexistent plane
[20:45:24] [PASSED] NV12 Handle for inexistent plane
[20:45:24] [PASSED] NV12 Handle for inexistent plane without DRM_MODE_FB_MODIFIERS
[20:45:24] [PASSED] YVU420 DRM_MODE_FB_MODIFIERS set without modifier
[20:45:24] [PASSED] YVU420 Normal sizes
[20:45:24] [PASSED] YVU420 Max sizes
[20:45:24] [PASSED] YVU420 Invalid pitch
[20:45:24] [PASSED] YVU420 Different pitches
[20:45:24] [PASSED] YVU420 Different buffer offsets/pitches
[20:45:24] [PASSED] YVU420 Modifier set just for plane 0, without DRM_MODE_FB_MODIFIERS
[20:45:24] [PASSED] YVU420 Modifier set just for planes 0, 1, without DRM_MODE_FB_MODIFIERS
[20:45:24] [PASSED] YVU420 Modifier set just for plane 0, 1, with DRM_MODE_FB_MODIFIERS
[20:45:24] [PASSED] YVU420 Valid modifier
[20:45:24] [PASSED] YVU420 Different modifiers per plane
[20:45:24] [PASSED] YVU420 Modifier for inexistent plane
[20:45:24] [PASSED] YUV420_10BIT Invalid modifier(DRM_FORMAT_MOD_LINEAR)
[20:45:24] [PASSED] X0L2 Normal sizes
[20:45:24] [PASSED] X0L2 Max sizes
[20:45:24] [PASSED] X0L2 Invalid pitch
[20:45:24] [PASSED] X0L2 Pitch greater than minimum required
[20:45:24] [PASSED] X0L2 Handle for inexistent plane
[20:45:24] [PASSED] X0L2 Offset for inexistent plane, without DRM_MODE_FB_MODIFIERS set
[20:45:24] [PASSED] X0L2 Modifier without DRM_MODE_FB_MODIFIERS set
[20:45:24] [PASSED] X0L2 Valid modifier
[20:45:24] [PASSED] X0L2 Modifier for inexistent plane
[20:45:24] =========== [PASSED] drm_test_framebuffer_create ===========
[20:45:24] [PASSED] drm_test_framebuffer_free
[20:45:24] [PASSED] drm_test_framebuffer_init
[20:45:24] [PASSED] drm_test_framebuffer_init_bad_format
[20:45:24] [PASSED] drm_test_framebuffer_init_dev_mismatch
[20:45:24] [PASSED] drm_test_framebuffer_lookup
[20:45:24] [PASSED] drm_test_framebuffer_lookup_inexistent
[20:45:24] [PASSED] drm_test_framebuffer_modifiers_not_supported
[20:45:24] ================= [PASSED] drm_framebuffer =================
[20:45:24] ================ drm_gem_shmem (8 subtests) ================
[20:45:24] [PASSED] drm_gem_shmem_test_obj_create
[20:45:24] [PASSED] drm_gem_shmem_test_obj_create_private
[20:45:24] [PASSED] drm_gem_shmem_test_pin_pages
[20:45:24] [PASSED] drm_gem_shmem_test_vmap
[20:45:24] [PASSED] drm_gem_shmem_test_get_sg_table
[20:45:24] [PASSED] drm_gem_shmem_test_get_pages_sgt
[20:45:24] [PASSED] drm_gem_shmem_test_madvise
[20:45:24] [PASSED] drm_gem_shmem_test_purge
[20:45:24] ================== [PASSED] drm_gem_shmem ==================
[20:45:24] === drm_atomic_helper_connector_hdmi_check (29 subtests) ===
[20:45:24] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode
[20:45:24] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode_vic_1
[20:45:24] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode
[20:45:24] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode_vic_1
[20:45:24] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode
[20:45:24] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode_vic_1
[20:45:24] ====== drm_test_check_broadcast_rgb_cea_mode_yuv420 =======
[20:45:24] [PASSED] Automatic
[20:45:24] [PASSED] Full
[20:45:24] [PASSED] Limited 16:235
[20:45:24] == [PASSED] drm_test_check_broadcast_rgb_cea_mode_yuv420 ===
[20:45:24] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_changed
[20:45:24] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_not_changed
[20:45:24] [PASSED] drm_test_check_disable_connector
[20:45:24] [PASSED] drm_test_check_hdmi_funcs_reject_rate
[20:45:24] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_rgb
[20:45:24] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_yuv420
[20:45:24] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv422
[20:45:24] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv420
[20:45:24] [PASSED] drm_test_check_driver_unsupported_fallback_yuv420
[20:45:24] [PASSED] drm_test_check_output_bpc_crtc_mode_changed
[20:45:24] [PASSED] drm_test_check_output_bpc_crtc_mode_not_changed
[20:45:24] [PASSED] drm_test_check_output_bpc_dvi
[20:45:24] [PASSED] drm_test_check_output_bpc_format_vic_1
[20:45:24] [PASSED] drm_test_check_output_bpc_format_display_8bpc_only
[20:45:24] [PASSED] drm_test_check_output_bpc_format_display_rgb_only
[20:45:24] [PASSED] drm_test_check_output_bpc_format_driver_8bpc_only
[20:45:24] [PASSED] drm_test_check_output_bpc_format_driver_rgb_only
[20:45:24] [PASSED] drm_test_check_tmds_char_rate_rgb_8bpc
[20:45:24] [PASSED] drm_test_check_tmds_char_rate_rgb_10bpc
[20:45:24] [PASSED] drm_test_check_tmds_char_rate_rgb_12bpc
[20:45:24] ============ drm_test_check_hdmi_color_format =============
[20:45:24] [PASSED] AUTO -> RGB
[20:45:24] [PASSED] YCBCR422 -> YUV422
[20:45:24] [PASSED] YCBCR420 -> YUV420
[20:45:24] [PASSED] YCBCR444 -> YUV444
[20:45:24] [PASSED] RGB -> RGB
[20:45:24] ======== [PASSED] drm_test_check_hdmi_color_format =========
[20:45:24] ======== drm_test_check_hdmi_color_format_420_only ========
[20:45:24] [PASSED] RGB should fail
[20:45:24] [PASSED] YUV444 should fail
[20:45:24] [PASSED] YUV422 should fail
[20:45:24] [PASSED] YUV420 should work
[20:45:24] ==== [PASSED] drm_test_check_hdmi_color_format_420_only ====
[20:45:24] ===== [PASSED] drm_atomic_helper_connector_hdmi_check ======
[20:45:24] === drm_atomic_helper_connector_hdmi_reset (6 subtests) ====
[20:45:24] [PASSED] drm_test_check_broadcast_rgb_value
[20:45:24] [PASSED] drm_test_check_bpc_8_value
[20:45:24] [PASSED] drm_test_check_bpc_10_value
[20:45:24] [PASSED] drm_test_check_bpc_12_value
[20:45:24] [PASSED] drm_test_check_format_value
[20:45:24] [PASSED] drm_test_check_tmds_char_value
[20:45:24] ===== [PASSED] drm_atomic_helper_connector_hdmi_reset ======
[20:45:24] = drm_atomic_helper_connector_hdmi_mode_valid (7 subtests) =
[20:45:24] [PASSED] drm_test_check_mode_valid
[20:45:24] [PASSED] drm_test_check_mode_valid_reject
[20:45:24] [PASSED] drm_test_check_mode_valid_reject_rate
[20:45:24] [PASSED] drm_test_check_mode_valid_reject_max_clock
[20:45:24] [PASSED] drm_test_check_mode_valid_yuv420_only_max_clock
[20:45:24] [PASSED] drm_test_check_mode_valid_reject_yuv420_only_connector
[20:45:24] [PASSED] drm_test_check_mode_valid_accept_yuv420_also_connector_rgb
[20:45:24] === [PASSED] drm_atomic_helper_connector_hdmi_mode_valid ===
[20:45:24] = drm_atomic_helper_connector_hdmi_infoframes (5 subtests) =
[20:45:24] [PASSED] drm_test_check_infoframes
[20:45:24] [PASSED] drm_test_check_reject_avi_infoframe
[20:45:24] [PASSED] drm_test_check_reject_hdr_infoframe_bpc_8
[20:45:24] [PASSED] drm_test_check_reject_hdr_infoframe_bpc_10
[20:45:24] [PASSED] drm_test_check_reject_audio_infoframe
[20:45:24] === [PASSED] drm_atomic_helper_connector_hdmi_infoframes ===
[20:45:24] ================= drm_managed (2 subtests) =================
[20:45:24] [PASSED] drm_test_managed_release_action
[20:45:24] [PASSED] drm_test_managed_run_action
[20:45:24] =================== [PASSED] drm_managed ===================
[20:45:24] =================== drm_mm (6 subtests) ====================
[20:45:24] [PASSED] drm_test_mm_init
[20:45:24] [PASSED] drm_test_mm_debug
[20:45:24] [PASSED] drm_test_mm_align32
[20:45:24] [PASSED] drm_test_mm_align64
[20:45:24] [PASSED] drm_test_mm_lowest
[20:45:24] [PASSED] drm_test_mm_highest
[20:45:24] ===================== [PASSED] drm_mm ======================
[20:45:24] ============= drm_modes_analog_tv (5 subtests) =============
[20:45:24] [PASSED] drm_test_modes_analog_tv_mono_576i
[20:45:24] [PASSED] drm_test_modes_analog_tv_ntsc_480i
[20:45:24] [PASSED] drm_test_modes_analog_tv_ntsc_480i_inlined
[20:45:24] [PASSED] drm_test_modes_analog_tv_pal_576i
[20:45:24] [PASSED] drm_test_modes_analog_tv_pal_576i_inlined
[20:45:24] =============== [PASSED] drm_modes_analog_tv ===============
[20:45:24] ============== drm_plane_helper (2 subtests) ===============
[20:45:24] =============== drm_test_check_plane_state ================
[20:45:24] [PASSED] clipping_simple
[20:45:24] [PASSED] clipping_rotate_reflect
[20:45:24] [PASSED] positioning_simple
[20:45:24] [PASSED] upscaling
[20:45:24] [PASSED] downscaling
[20:45:24] [PASSED] rounding1
[20:45:24] [PASSED] rounding2
[20:45:24] [PASSED] rounding3
[20:45:24] [PASSED] rounding4
[20:45:24] =========== [PASSED] drm_test_check_plane_state ============
[20:45:24] =========== drm_test_check_invalid_plane_state ============
[20:45:24] [PASSED] positioning_invalid
[20:45:24] [PASSED] upscaling_invalid
[20:45:24] [PASSED] downscaling_invalid
[20:45:24] ======= [PASSED] drm_test_check_invalid_plane_state ========
[20:45:24] ================ [PASSED] drm_plane_helper =================
[20:45:24] ====== drm_connector_helper_tv_get_modes (1 subtest) =======
[20:45:24] ====== drm_test_connector_helper_tv_get_modes_check =======
[20:45:24] [PASSED] None
[20:45:24] [PASSED] PAL
[20:45:24] [PASSED] NTSC
[20:45:24] [PASSED] Both, NTSC Default
[20:45:24] [PASSED] Both, PAL Default
[20:45:24] [PASSED] Both, NTSC Default, with PAL on command-line
[20:45:24] [PASSED] Both, PAL Default, with NTSC on command-line
[20:45:24] == [PASSED] drm_test_connector_helper_tv_get_modes_check ===
[20:45:24] ======== [PASSED] drm_connector_helper_tv_get_modes ========
[20:45:24] ================== drm_rect (9 subtests) ===================
[20:45:24] [PASSED] drm_test_rect_clip_scaled_div_by_zero
[20:45:24] [PASSED] drm_test_rect_clip_scaled_not_clipped
[20:45:24] [PASSED] drm_test_rect_clip_scaled_clipped
[20:45:24] [PASSED] drm_test_rect_clip_scaled_signed_vs_unsigned
[20:45:24] ================= drm_test_rect_intersect =================
[20:45:24] [PASSED] top-left x bottom-right: 2x2+1+1 x 2x2+0+0
[20:45:24] [PASSED] top-right x bottom-left: 2x2+0+0 x 2x2+1-1
[20:45:24] [PASSED] bottom-left x top-right: 2x2+1-1 x 2x2+0+0
[20:45:24] [PASSED] bottom-right x top-left: 2x2+0+0 x 2x2+1+1
[20:45:24] [PASSED] right x left: 2x1+0+0 x 3x1+1+0
[20:45:24] [PASSED] left x right: 3x1+1+0 x 2x1+0+0
[20:45:24] [PASSED] up x bottom: 1x2+0+0 x 1x3+0-1
[20:45:24] [PASSED] bottom x up: 1x3+0-1 x 1x2+0+0
[20:45:24] [PASSED] touching corner: 1x1+0+0 x 2x2+1+1
[20:45:24] [PASSED] touching side: 1x1+0+0 x 1x1+1+0
[20:45:24] [PASSED] equal rects: 2x2+0+0 x 2x2+0+0
[20:45:24] [PASSED] inside another: 2x2+0+0 x 1x1+1+1
[20:45:24] [PASSED] far away: 1x1+0+0 x 1x1+3+6
[20:45:24] [PASSED] points intersecting: 0x0+5+10 x 0x0+5+10
[20:45:24] [PASSED] points not intersecting: 0x0+0+0 x 0x0+5+10
[20:45:24] ============= [PASSED] drm_test_rect_intersect =============
[20:45:24] ================ drm_test_rect_calc_hscale ================
[20:45:24] [PASSED] normal use
[20:45:24] [PASSED] out of max range
[20:45:24] [PASSED] out of min range
[20:45:24] [PASSED] zero dst
[20:45:24] [PASSED] negative src
[20:45:24] [PASSED] negative dst
[20:45:24] ============ [PASSED] drm_test_rect_calc_hscale ============
[20:45:24] ================ drm_test_rect_calc_vscale ================
[20:45:24] [PASSED] normal use
[20:45:24] [PASSED] out of max range
[20:45:24] [PASSED] out of min range
[20:45:24] [PASSED] zero dst
[20:45:24] [PASSED] negative src
[20:45:24] [PASSED] negative dst
[20:45:24] ============ [PASSED] drm_test_rect_calc_vscale ============
[20:45:24] ================== drm_test_rect_rotate ===================
[20:45:24] [PASSED] reflect-x
[20:45:24] [PASSED] reflect-y
[20:45:24] [PASSED] rotate-0
[20:45:24] [PASSED] rotate-90
[20:45:24] [PASSED] rotate-180
[20:45:24] [PASSED] rotate-270
[20:45:24] ============== [PASSED] drm_test_rect_rotate ===============
[20:45:24] ================ drm_test_rect_rotate_inv =================
[20:45:24] [PASSED] reflect-x
[20:45:24] [PASSED] reflect-y
[20:45:24] [PASSED] rotate-0
[20:45:24] [PASSED] rotate-90
[20:45:24] [PASSED] rotate-180
[20:45:24] [PASSED] rotate-270
[20:45:24] ============ [PASSED] drm_test_rect_rotate_inv =============
[20:45:24] ==================== [PASSED] drm_rect =====================
[20:45:24] ============ drm_sysfb_modeset_test (1 subtest) ============
[20:45:24] ============ drm_test_sysfb_build_fourcc_list =============
[20:45:24] [PASSED] no native formats
[20:45:24] [PASSED] XRGB8888 as native format
[20:45:24] [PASSED] remove duplicates
[20:45:24] [PASSED] convert alpha formats
[20:45:24] [PASSED] random formats
[20:45:24] ======== [PASSED] drm_test_sysfb_build_fourcc_list =========
[20:45:24] ============= [PASSED] drm_sysfb_modeset_test ==============
[20:45:24] ================== drm_fixp (2 subtests) ===================
[20:45:24] [PASSED] drm_test_int2fixp
[20:45:24] [PASSED] drm_test_sm2fixp
[20:45:24] ==================== [PASSED] drm_fixp =====================
[20:45:24] ============================================================
[20:45:24] Testing complete. Ran 637 tests: passed: 637
[20:45:24] Elapsed time: 27.051s total, 1.797s configuring, 25.087s building, 0.148s running
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/ttm/tests/.kunitconfig
[20:45:24] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[20:45: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
[20:45:36] Starting KUnit Kernel (1/1)...
[20:45:36] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[20:45:36] ================= ttm_device (5 subtests) ==================
[20:45:36] [PASSED] ttm_device_init_basic
[20:45:36] [PASSED] ttm_device_init_multiple
[20:45:36] [PASSED] ttm_device_fini_basic
[20:45:36] [PASSED] ttm_device_init_no_vma_man
[20:45:36] ================== ttm_device_init_pools ==================
[20:45:36] [PASSED] No DMA allocations, no DMA32 required
[20:45:36] [PASSED] DMA allocations, DMA32 required
[20:45:36] [PASSED] No DMA allocations, DMA32 required
[20:45:36] [PASSED] DMA allocations, no DMA32 required
[20:45:36] ============== [PASSED] ttm_device_init_pools ==============
[20:45:36] =================== [PASSED] ttm_device ====================
[20:45:36] ================== ttm_pool (8 subtests) ===================
[20:45:36] ================== ttm_pool_alloc_basic ===================
[20:45:36] [PASSED] One page
[20:45:36] [PASSED] More than one page
[20:45:36] [PASSED] Above the allocation limit
[20:45:36] [PASSED] One page, with coherent DMA mappings enabled
[20:45:36] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[20:45:36] ============== [PASSED] ttm_pool_alloc_basic ===============
[20:45:36] ============== ttm_pool_alloc_basic_dma_addr ==============
[20:45:36] [PASSED] One page
[20:45:36] [PASSED] More than one page
[20:45:36] [PASSED] Above the allocation limit
[20:45:36] [PASSED] One page, with coherent DMA mappings enabled
[20:45:36] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[20:45:36] ========== [PASSED] ttm_pool_alloc_basic_dma_addr ==========
[20:45:36] [PASSED] ttm_pool_alloc_order_caching_match
[20:45:36] [PASSED] ttm_pool_alloc_caching_mismatch
[20:45:36] [PASSED] ttm_pool_alloc_order_mismatch
[20:45:36] [PASSED] ttm_pool_free_dma_alloc
[20:45:36] [PASSED] ttm_pool_free_no_dma_alloc
[20:45:36] [PASSED] ttm_pool_fini_basic
[20:45:36] ==================== [PASSED] ttm_pool =====================
[20:45:36] ================ ttm_resource (8 subtests) =================
[20:45:36] ================= ttm_resource_init_basic =================
[20:45:36] [PASSED] Init resource in TTM_PL_SYSTEM
[20:45:36] [PASSED] Init resource in TTM_PL_VRAM
[20:45:36] [PASSED] Init resource in a private placement
[20:45:36] [PASSED] Init resource in TTM_PL_SYSTEM, set placement flags
[20:45:36] ============= [PASSED] ttm_resource_init_basic =============
[20:45:36] [PASSED] ttm_resource_init_pinned
[20:45:36] [PASSED] ttm_resource_fini_basic
[20:45:36] [PASSED] ttm_resource_manager_init_basic
[20:45:36] [PASSED] ttm_resource_manager_usage_basic
[20:45:36] [PASSED] ttm_resource_manager_set_used_basic
[20:45:36] [PASSED] ttm_sys_man_alloc_basic
[20:45:36] [PASSED] ttm_sys_man_free_basic
[20:45:36] ================== [PASSED] ttm_resource ===================
[20:45:36] =================== ttm_tt (15 subtests) ===================
[20:45:36] ==================== ttm_tt_init_basic ====================
[20:45:36] [PASSED] Page-aligned size
[20:45:36] [PASSED] Extra pages requested
[20:45:36] ================ [PASSED] ttm_tt_init_basic ================
[20:45:36] [PASSED] ttm_tt_init_misaligned
[20:45:36] [PASSED] ttm_tt_fini_basic
[20:45:36] [PASSED] ttm_tt_fini_sg
[20:45:36] [PASSED] ttm_tt_fini_shmem
[20:45:36] [PASSED] ttm_tt_create_basic
[20:45:36] [PASSED] ttm_tt_create_invalid_bo_type
[20:45:36] [PASSED] ttm_tt_create_ttm_exists
[20:45:36] [PASSED] ttm_tt_create_failed
[20:45:36] [PASSED] ttm_tt_destroy_basic
[20:45:36] [PASSED] ttm_tt_populate_null_ttm
[20:45:36] [PASSED] ttm_tt_populate_populated_ttm
[20:45:36] [PASSED] ttm_tt_unpopulate_basic
[20:45:36] [PASSED] ttm_tt_unpopulate_empty_ttm
[20:45:36] [PASSED] ttm_tt_swapin_basic
[20:45:36] ===================== [PASSED] ttm_tt ======================
[20:45:36] =================== ttm_bo (14 subtests) ===================
[20:45:36] =========== ttm_bo_reserve_optimistic_no_ticket ===========
[20:45:36] [PASSED] Cannot be interrupted and sleeps
[20:45:36] [PASSED] Cannot be interrupted, locks straight away
[20:45:36] [PASSED] Can be interrupted, sleeps
[20:45:36] ======= [PASSED] ttm_bo_reserve_optimistic_no_ticket =======
[20:45:36] [PASSED] ttm_bo_reserve_locked_no_sleep
[20:45:36] [PASSED] ttm_bo_reserve_no_wait_ticket
[20:45:36] [PASSED] ttm_bo_reserve_double_resv
[20:45:36] [PASSED] ttm_bo_reserve_interrupted
[20:45:36] [PASSED] ttm_bo_reserve_deadlock
[20:45:36] [PASSED] ttm_bo_unreserve_basic
[20:45:36] [PASSED] ttm_bo_unreserve_pinned
[20:45:36] [PASSED] ttm_bo_unreserve_bulk
[20:45:36] [PASSED] ttm_bo_fini_basic
[20:45:36] [PASSED] ttm_bo_fini_shared_resv
[20:45:36] [PASSED] ttm_bo_pin_basic
[20:45:36] [PASSED] ttm_bo_pin_unpin_resource
[20:45:36] [PASSED] ttm_bo_multiple_pin_one_unpin
[20:45:36] ===================== [PASSED] ttm_bo ======================
[20:45:36] ============== ttm_bo_validate (22 subtests) ===============
[20:45:36] ============== ttm_bo_init_reserved_sys_man ===============
[20:45:36] [PASSED] Buffer object for userspace
[20:45:36] [PASSED] Kernel buffer object
[20:45:36] [PASSED] Shared buffer object
[20:45:36] ========== [PASSED] ttm_bo_init_reserved_sys_man ===========
[20:45:36] ============== ttm_bo_init_reserved_mock_man ==============
[20:45:36] [PASSED] Buffer object for userspace
[20:45:36] [PASSED] Kernel buffer object
[20:45:36] [PASSED] Shared buffer object
[20:45:36] ========== [PASSED] ttm_bo_init_reserved_mock_man ==========
[20:45:36] [PASSED] ttm_bo_init_reserved_resv
[20:45:36] ================== ttm_bo_validate_basic ==================
[20:45:36] [PASSED] Buffer object for userspace
[20:45:36] [PASSED] Kernel buffer object
[20:45:36] [PASSED] Shared buffer object
[20:45:36] ============== [PASSED] ttm_bo_validate_basic ==============
[20:45:36] [PASSED] ttm_bo_validate_invalid_placement
[20:45:36] ============= ttm_bo_validate_same_placement ==============
[20:45:36] [PASSED] System manager
[20:45:36] [PASSED] VRAM manager
[20:45:36] ========= [PASSED] ttm_bo_validate_same_placement ==========
[20:45:36] [PASSED] ttm_bo_validate_failed_alloc
[20:45:36] [PASSED] ttm_bo_validate_pinned
[20:45:36] [PASSED] ttm_bo_validate_busy_placement
[20:45:36] ================ ttm_bo_validate_multihop =================
[20:45:36] [PASSED] Buffer object for userspace
[20:45:36] [PASSED] Kernel buffer object
[20:45:36] [PASSED] Shared buffer object
[20:45:36] ============ [PASSED] ttm_bo_validate_multihop =============
[20:45:36] ========== ttm_bo_validate_no_placement_signaled ==========
[20:45:36] [PASSED] Buffer object in system domain, no page vector
[20:45:36] [PASSED] Buffer object in system domain with an existing page vector
[20:45:36] ====== [PASSED] ttm_bo_validate_no_placement_signaled ======
[20:45:36] ======== ttm_bo_validate_no_placement_not_signaled ========
[20:45:36] [PASSED] Buffer object for userspace
[20:45:36] [PASSED] Kernel buffer object
[20:45:36] [PASSED] Shared buffer object
[20:45:36] ==== [PASSED] ttm_bo_validate_no_placement_not_signaled ====
[20:45:36] [PASSED] ttm_bo_validate_move_fence_signaled
[20:45:36] ========= ttm_bo_validate_move_fence_not_signaled =========
[20:45:36] [PASSED] Waits for GPU
[20:45:36] [PASSED] Tries to lock straight away
[20:45:36] ===== [PASSED] ttm_bo_validate_move_fence_not_signaled =====
[20:45:36] [PASSED] ttm_bo_validate_swapout
[20:45:36] [PASSED] ttm_bo_validate_happy_evict
[20:45:36] [PASSED] ttm_bo_validate_all_pinned_evict
[20:45:36] [PASSED] ttm_bo_validate_allowed_only_evict
[20:45:36] [PASSED] ttm_bo_validate_deleted_evict
[20:45:36] [PASSED] ttm_bo_validate_busy_domain_evict
[20:45:36] [PASSED] ttm_bo_validate_evict_gutting
[20:45:36] [PASSED] ttm_bo_validate_recrusive_evict
[20:45:36] ================= [PASSED] ttm_bo_validate =================
[20:45:36] ============================================================
[20:45:36] Testing complete. Ran 102 tests: passed: 102
[20:45:36] Elapsed time: 12.139s total, 1.776s configuring, 10.148s building, 0.177s running
+ cleanup
++ stat -c %u:%g /kernel
+ chown -R 1003:1003 /kernel
^ permalink raw reply [flat|nested] 37+ messages in thread* ✗ Xe.CI.BAT: failure for drm/xe: Add structured SIGID error logging infrastructure
2026-07-23 20:37 [PATCH 00/19] drm/xe: Add structured SIGID error logging infrastructure Michal Wajdeczko
` (20 preceding siblings ...)
2026-07-23 20:45 ` ✓ CI.KUnit: success " Patchwork
@ 2026-07-23 21:35 ` Patchwork
2026-07-24 18:35 ` ✗ Xe.CI.FULL: " Patchwork
22 siblings, 0 replies; 37+ messages in thread
From: Patchwork @ 2026-07-23 21:35 UTC (permalink / raw)
To: Michal Wajdeczko; +Cc: intel-xe
[-- Attachment #1: Type: text/plain, Size: 8166 bytes --]
== Series Details ==
Series: drm/xe: Add structured SIGID error logging infrastructure
URL : https://patchwork.freedesktop.org/series/171022/
State : failure
== Summary ==
CI Bug Log - changes from xe-5467-2c64192f1ad194a53800f6dd8c779d5b4bbc1831_BAT -> xe-pw-171022v1_BAT
====================================================
Summary
-------
**FAILURE**
Serious unknown changes coming with xe-pw-171022v1_BAT absolutely need to be
verified manually.
If you think the reported changes have nothing to do with the changes
introduced in xe-pw-171022v1_BAT, please notify your bug team (I915-ci-infra@lists.freedesktop.org) to allow them
to document this new failure mode, which will reduce false positives in CI.
Participating hosts (12 -> 11)
------------------------------
Additional (1): bat-bmg-2
Missing (2): bat-bmg-vm bat-ptl-vm
Possible new issues
-------------------
Here are the unknown changes that may have been introduced in xe-pw-171022v1_BAT:
### IGT changes ###
#### Possible regressions ####
* igt@xe_exec_fault_mode@invalid-va:
- bat-bmg-1: [PASS][1] -> [DMESG-WARN][2] +1 other test dmesg-warn
[1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5467-2c64192f1ad194a53800f6dd8c779d5b4bbc1831/bat-bmg-1/igt@xe_exec_fault_mode@invalid-va.html
[2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/bat-bmg-1/igt@xe_exec_fault_mode@invalid-va.html
- bat-lnl-2: [PASS][3] -> [DMESG-WARN][4] +1 other test dmesg-warn
[3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5467-2c64192f1ad194a53800f6dd8c779d5b4bbc1831/bat-lnl-2/igt@xe_exec_fault_mode@invalid-va.html
[4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/bat-lnl-2/igt@xe_exec_fault_mode@invalid-va.html
- bat-wcl-1: [PASS][5] -> [DMESG-WARN][6] +1 other test dmesg-warn
[5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5467-2c64192f1ad194a53800f6dd8c779d5b4bbc1831/bat-wcl-1/igt@xe_exec_fault_mode@invalid-va.html
[6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/bat-wcl-1/igt@xe_exec_fault_mode@invalid-va.html
- bat-ptl-1: [PASS][7] -> [DMESG-WARN][8] +1 other test dmesg-warn
[7]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5467-2c64192f1ad194a53800f6dd8c779d5b4bbc1831/bat-ptl-1/igt@xe_exec_fault_mode@invalid-va.html
[8]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/bat-ptl-1/igt@xe_exec_fault_mode@invalid-va.html
- bat-lnl-1: [PASS][9] -> [DMESG-WARN][10] +1 other test dmesg-warn
[9]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5467-2c64192f1ad194a53800f6dd8c779d5b4bbc1831/bat-lnl-1/igt@xe_exec_fault_mode@invalid-va.html
[10]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/bat-lnl-1/igt@xe_exec_fault_mode@invalid-va.html
* igt@xe_exec_system_allocator@fault:
- bat-bmg-2: NOTRUN -> [DMESG-WARN][11] +1 other test dmesg-warn
[11]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/bat-bmg-2/igt@xe_exec_system_allocator@fault.html
- bat-wcl-2: [PASS][12] -> [DMESG-WARN][13] +1 other test dmesg-warn
[12]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5467-2c64192f1ad194a53800f6dd8c779d5b4bbc1831/bat-wcl-2/igt@xe_exec_system_allocator@fault.html
[13]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/bat-wcl-2/igt@xe_exec_system_allocator@fault.html
- bat-ptl-2: [PASS][14] -> [DMESG-WARN][15] +1 other test dmesg-warn
[14]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5467-2c64192f1ad194a53800f6dd8c779d5b4bbc1831/bat-ptl-2/igt@xe_exec_system_allocator@fault.html
[15]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/bat-ptl-2/igt@xe_exec_system_allocator@fault.html
Known issues
------------
Here are the changes found in xe-pw-171022v1_BAT that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@fbdev@write:
- bat-bmg-2: NOTRUN -> [SKIP][16] ([Intel XE#2134]) +4 other tests skip
[16]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/bat-bmg-2/igt@fbdev@write.html
* igt@kms_addfb_basic@addfb25-y-tiled-small-legacy:
- bat-bmg-2: NOTRUN -> [SKIP][17] ([Intel XE#2233])
[17]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/bat-bmg-2/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
* igt@kms_cursor_legacy@basic-flip-after-cursor-legacy:
- bat-bmg-2: NOTRUN -> [SKIP][18] ([Intel XE#2489] / [Intel XE#3419]) +13 other tests skip
[18]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/bat-bmg-2/igt@kms_cursor_legacy@basic-flip-after-cursor-legacy.html
* igt@kms_flip@basic-flip-vs-modeset:
- bat-bmg-2: NOTRUN -> [SKIP][19] ([Intel XE#2482]) +3 other tests skip
[19]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/bat-bmg-2/igt@kms_flip@basic-flip-vs-modeset.html
* igt@kms_frontbuffer_tracking@basic:
- bat-bmg-2: NOTRUN -> [SKIP][20] ([Intel XE#2434] / [Intel XE#2548] / [Intel XE#6314])
[20]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/bat-bmg-2/igt@kms_frontbuffer_tracking@basic.html
* igt@kms_psr@psr-sprite-plane-onoff:
- bat-bmg-2: NOTRUN -> [SKIP][21] ([Intel XE#2234] / [Intel XE#2850]) +2 other tests skip
[21]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/bat-bmg-2/igt@kms_psr@psr-sprite-plane-onoff.html
* igt@xe_exec_multi_queue@priority:
- bat-bmg-2: NOTRUN -> [SKIP][22] ([Intel XE#8364]) +13 other tests skip
[22]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/bat-bmg-2/igt@xe_exec_multi_queue@priority.html
* igt@xe_live_ktest@xe_bo@xe_ccs_migrate_kunit:
- bat-bmg-2: NOTRUN -> [SKIP][23] ([Intel XE#2229])
[23]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/bat-bmg-2/igt@xe_live_ktest@xe_bo@xe_ccs_migrate_kunit.html
* igt@xe_pat@pat-index-xehpc:
- bat-bmg-2: NOTRUN -> [SKIP][24] ([Intel XE#1420] / [Intel XE#7590])
[24]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/bat-bmg-2/igt@xe_pat@pat-index-xehpc.html
* igt@xe_pat@pat-index-xelp:
- bat-bmg-2: NOTRUN -> [SKIP][25] ([Intel XE#2245] / [Intel XE#7590])
[25]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/bat-bmg-2/igt@xe_pat@pat-index-xelp.html
* igt@xe_pat@pat-index-xelpg:
- bat-bmg-2: NOTRUN -> [SKIP][26] ([Intel XE#2236] / [Intel XE#7590])
[26]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/bat-bmg-2/igt@xe_pat@pat-index-xelpg.html
[Intel XE#1420]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1420
[Intel XE#2134]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2134
[Intel XE#2229]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2229
[Intel XE#2233]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2233
[Intel XE#2234]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2234
[Intel XE#2236]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2236
[Intel XE#2245]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2245
[Intel XE#2434]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2434
[Intel XE#2482]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2482
[Intel XE#2489]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2489
[Intel XE#2548]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2548
[Intel XE#2850]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2850
[Intel XE#3419]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3419
[Intel XE#6314]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6314
[Intel XE#7590]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7590
[Intel XE#8364]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8364
Build changes
-------------
* IGT: IGT_9020 -> IGT_9022
* Linux: xe-5467-2c64192f1ad194a53800f6dd8c779d5b4bbc1831 -> xe-pw-171022v1
IGT_9020: 9020
IGT_9022: 9022
xe-5467-2c64192f1ad194a53800f6dd8c779d5b4bbc1831: 2c64192f1ad194a53800f6dd8c779d5b4bbc1831
xe-pw-171022v1: 171022v1
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/index.html
[-- Attachment #2: Type: text/html, Size: 9197 bytes --]
^ permalink raw reply [flat|nested] 37+ messages in thread* ✗ Xe.CI.FULL: failure for drm/xe: Add structured SIGID error logging infrastructure
2026-07-23 20:37 [PATCH 00/19] drm/xe: Add structured SIGID error logging infrastructure Michal Wajdeczko
` (21 preceding siblings ...)
2026-07-23 21:35 ` ✗ Xe.CI.BAT: failure " Patchwork
@ 2026-07-24 18:35 ` Patchwork
22 siblings, 0 replies; 37+ messages in thread
From: Patchwork @ 2026-07-24 18:35 UTC (permalink / raw)
To: Michal Wajdeczko; +Cc: intel-xe
[-- Attachment #1: Type: text/plain, Size: 56029 bytes --]
== Series Details ==
Series: drm/xe: Add structured SIGID error logging infrastructure
URL : https://patchwork.freedesktop.org/series/171022/
State : failure
== Summary ==
CI Bug Log - changes from xe-5467-2c64192f1ad194a53800f6dd8c779d5b4bbc1831_FULL -> xe-pw-171022v1_FULL
====================================================
Summary
-------
**FAILURE**
Serious unknown changes coming with xe-pw-171022v1_FULL absolutely need to be
verified manually.
If you think the reported changes have nothing to do with the changes
introduced in xe-pw-171022v1_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-171022v1_FULL:
### IGT changes ###
#### Possible regressions ####
* igt@xe_exec_fault_mode@invalid-va:
- shard-bmg: [PASS][1] -> [DMESG-WARN][2] +8 other tests dmesg-warn
[1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5467-2c64192f1ad194a53800f6dd8c779d5b4bbc1831/shard-bmg-7/igt@xe_exec_fault_mode@invalid-va.html
[2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-bmg-3/igt@xe_exec_fault_mode@invalid-va.html
* igt@xe_vm@vm-get-property-exercise:
- shard-bmg: NOTRUN -> [DMESG-WARN][3]
[3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-bmg-2/igt@xe_vm@vm-get-property-exercise.html
* igt@xe_waitfence@exec_queue-reset-wait:
- shard-lnl: [PASS][4] -> [DMESG-WARN][5] +9 other tests dmesg-warn
[4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5467-2c64192f1ad194a53800f6dd8c779d5b4bbc1831/shard-lnl-2/igt@xe_waitfence@exec_queue-reset-wait.html
[5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-lnl-8/igt@xe_waitfence@exec_queue-reset-wait.html
#### Warnings ####
* igt@xe_survivability@runtime-survivability:
- shard-bmg: [DMESG-WARN][6] ([Intel XE#6627] / [Intel XE#7419]) -> [DMESG-WARN][7]
[6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5467-2c64192f1ad194a53800f6dd8c779d5b4bbc1831/shard-bmg-3/igt@xe_survivability@runtime-survivability.html
[7]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-bmg-1/igt@xe_survivability@runtime-survivability.html
* igt@xe_wedged@basic-wedged:
- shard-bmg: [ABORT][8] ([Intel XE#8591]) -> [DMESG-WARN][9]
[8]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5467-2c64192f1ad194a53800f6dd8c779d5b4bbc1831/shard-bmg-7/igt@xe_wedged@basic-wedged.html
[9]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-bmg-10/igt@xe_wedged@basic-wedged.html
* igt@xe_wedged@wedged-at-any-timeout:
- shard-bmg: [DMESG-WARN][10] ([Intel XE#5545]) -> [DMESG-WARN][11]
[10]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5467-2c64192f1ad194a53800f6dd8c779d5b4bbc1831/shard-bmg-5/igt@xe_wedged@wedged-at-any-timeout.html
[11]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-bmg-3/igt@xe_wedged@wedged-at-any-timeout.html
Known issues
------------
Here are the changes found in xe-pw-171022v1_FULL that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@kms_big_fb@4-tiled-64bpp-rotate-270:
- shard-lnl: NOTRUN -> [SKIP][12] ([Intel XE#1407])
[12]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-lnl-5/igt@kms_big_fb@4-tiled-64bpp-rotate-270.html
* igt@kms_big_fb@linear-32bpp-rotate-270:
- shard-bmg: NOTRUN -> [SKIP][13] ([Intel XE#2327]) +2 other tests skip
[13]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-bmg-8/igt@kms_big_fb@linear-32bpp-rotate-270.html
* igt@kms_big_fb@y-tiled-16bpp-rotate-180:
- shard-bmg: NOTRUN -> [SKIP][14] ([Intel XE#1124]) +10 other tests skip
[14]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-bmg-6/igt@kms_big_fb@y-tiled-16bpp-rotate-180.html
* igt@kms_big_fb@y-tiled-addfb-size-overflow:
- shard-lnl: NOTRUN -> [SKIP][15] ([Intel XE#1428] / [Intel XE#7387]) +1 other test skip
[15]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-lnl-7/igt@kms_big_fb@y-tiled-addfb-size-overflow.html
* igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-0-async-flip:
- shard-lnl: NOTRUN -> [SKIP][16] ([Intel XE#1124]) +6 other tests skip
[16]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-lnl-1/igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-0-async-flip.html
* igt@kms_bw@connected-linear-tiling-2-displays-target-3840x2160p:
- shard-lnl: NOTRUN -> [SKIP][17] ([Intel XE#7679])
[17]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-lnl-4/igt@kms_bw@connected-linear-tiling-2-displays-target-3840x2160p.html
* igt@kms_bw@connected-linear-tiling-3-displays-target-1920x1080p:
- shard-bmg: NOTRUN -> [SKIP][18] ([Intel XE#7679]) +1 other test skip
[18]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-bmg-4/igt@kms_bw@connected-linear-tiling-3-displays-target-1920x1080p.html
* igt@kms_bw@connected-linear-tiling-4-displays-target-2160x1440p:
- shard-lnl: NOTRUN -> [SKIP][19] ([Intel XE#8365])
[19]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-lnl-3/igt@kms_bw@connected-linear-tiling-4-displays-target-2160x1440p.html
* igt@kms_bw@linear-tiling-4-displays-target-2560x1440p:
- shard-bmg: NOTRUN -> [SKIP][20] ([Intel XE#367]) +2 other tests skip
[20]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-bmg-1/igt@kms_bw@linear-tiling-4-displays-target-2560x1440p.html
* igt@kms_ccs@crc-primary-basic-4-tiled-bmg-ccs@pipe-c-edp-1:
- shard-lnl: NOTRUN -> [SKIP][21] ([Intel XE#2669] / [Intel XE#7389]) +3 other tests skip
[21]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-lnl-1/igt@kms_ccs@crc-primary-basic-4-tiled-bmg-ccs@pipe-c-edp-1.html
* igt@kms_ccs@crc-primary-basic-4-tiled-mtl-mc-ccs:
- shard-bmg: NOTRUN -> [SKIP][22] ([Intel XE#2887]) +15 other tests skip
[22]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-bmg-1/igt@kms_ccs@crc-primary-basic-4-tiled-mtl-mc-ccs.html
* igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs@pipe-a-edp-1:
- shard-lnl: NOTRUN -> [SKIP][23] ([Intel XE#2669] / [Intel XE#3433] / [Intel XE#7389]) +3 other tests skip
[23]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-lnl-7/igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs@pipe-a-edp-1.html
* igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs@pipe-d-dp-2:
- shard-bmg: [PASS][24] -> [INCOMPLETE][25] ([Intel XE#7084] / [Intel XE#8150])
[24]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5467-2c64192f1ad194a53800f6dd8c779d5b4bbc1831/shard-bmg-4/igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs@pipe-d-dp-2.html
[25]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-bmg-4/igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs@pipe-d-dp-2.html
* igt@kms_ccs@crc-primary-suspend-4-tiled-dg2-rc-ccs-cc:
- shard-lnl: NOTRUN -> [SKIP][26] ([Intel XE#3432])
[26]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-lnl-5/igt@kms_ccs@crc-primary-suspend-4-tiled-dg2-rc-ccs-cc.html
* igt@kms_ccs@crc-primary-suspend-y-tiled-ccs:
- shard-bmg: NOTRUN -> [SKIP][27] ([Intel XE#3432])
[27]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-bmg-2/igt@kms_ccs@crc-primary-suspend-y-tiled-ccs.html
* igt@kms_ccs@crc-sprite-planes-basic-4-tiled-dg2-rc-ccs-cc:
- shard-lnl: NOTRUN -> [SKIP][28] ([Intel XE#2887]) +6 other tests skip
[28]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-lnl-1/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-dg2-rc-ccs-cc.html
* igt@kms_cdclk@mode-transition-all-outputs:
- shard-bmg: NOTRUN -> [SKIP][29] ([Intel XE#2724] / [Intel XE#7449])
[29]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-bmg-3/igt@kms_cdclk@mode-transition-all-outputs.html
* igt@kms_chamelium_audio@dp-audio-after-suspend:
- shard-lnl: NOTRUN -> [SKIP][30] ([Intel XE#2252]) +1 other test skip
[30]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-lnl-4/igt@kms_chamelium_audio@dp-audio-after-suspend.html
* igt@kms_chamelium_color@ctm-limited-range:
- shard-lnl: NOTRUN -> [SKIP][31] ([Intel XE#306] / [Intel XE#7358])
[31]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-lnl-6/igt@kms_chamelium_color@ctm-limited-range.html
* igt@kms_chamelium_color@ctm-red-to-blue:
- shard-bmg: NOTRUN -> [SKIP][32] ([Intel XE#2325] / [Intel XE#7358]) +1 other test skip
[32]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-bmg-10/igt@kms_chamelium_color@ctm-red-to-blue.html
* igt@kms_chamelium_color_pipeline@plane-ctm3x4:
- shard-lnl: NOTRUN -> [SKIP][33] ([Intel XE#7358])
[33]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-lnl-8/igt@kms_chamelium_color_pipeline@plane-ctm3x4.html
* igt@kms_chamelium_color_pipeline@plane-lut1d-ctm3x4:
- shard-bmg: NOTRUN -> [SKIP][34] ([Intel XE#7358])
[34]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-bmg-4/igt@kms_chamelium_color_pipeline@plane-lut1d-ctm3x4.html
* igt@kms_chamelium_hpd@common-hpd-after-suspend:
- shard-bmg: NOTRUN -> [SKIP][35] ([Intel XE#2252]) +2 other tests skip
[35]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-bmg-6/igt@kms_chamelium_hpd@common-hpd-after-suspend.html
* igt@kms_chamelium_hpd@hdmi-hpd-storm-disable:
- shard-lnl: NOTRUN -> [SKIP][36] ([Intel XE#373]) +2 other tests skip
[36]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-lnl-5/igt@kms_chamelium_hpd@hdmi-hpd-storm-disable.html
* igt@kms_chamelium_sharpness_filter@filter-basic:
- shard-bmg: NOTRUN -> [SKIP][37] ([Intel XE#6507])
[37]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-bmg-7/igt@kms_chamelium_sharpness_filter@filter-basic.html
* igt@kms_content_protection@lic-type-0@pipe-a-dp-2:
- shard-bmg: NOTRUN -> [FAIL][38] ([Intel XE#1178] / [Intel XE#3304] / [Intel XE#7374]) +5 other tests fail
[38]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-bmg-3/igt@kms_content_protection@lic-type-0@pipe-a-dp-2.html
* igt@kms_content_protection@suspend-resume:
- shard-lnl: NOTRUN -> [SKIP][39] ([Intel XE#7642])
[39]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-lnl-1/igt@kms_content_protection@suspend-resume.html
* igt@kms_cursor_crc@cursor-offscreen-512x512:
- shard-lnl: NOTRUN -> [SKIP][40] ([Intel XE#2321] / [Intel XE#7355]) +2 other tests skip
[40]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-lnl-2/igt@kms_cursor_crc@cursor-offscreen-512x512.html
* igt@kms_cursor_crc@cursor-random-32x32:
- shard-bmg: NOTRUN -> [SKIP][41] ([Intel XE#2320]) +4 other tests skip
[41]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-bmg-2/igt@kms_cursor_crc@cursor-random-32x32.html
* igt@kms_cursor_crc@cursor-rapid-movement-128x42:
- shard-lnl: NOTRUN -> [SKIP][42] ([Intel XE#1424]) +1 other test skip
[42]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-lnl-5/igt@kms_cursor_crc@cursor-rapid-movement-128x42.html
* igt@kms_cursor_legacy@2x-flip-vs-cursor-legacy:
- shard-lnl: NOTRUN -> [SKIP][43] ([Intel XE#309] / [Intel XE#7343]) +4 other tests skip
[43]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-lnl-4/igt@kms_cursor_legacy@2x-flip-vs-cursor-legacy.html
* igt@kms_cursor_legacy@flip-vs-cursor-atomic:
- shard-bmg: [PASS][44] -> [FAIL][45] ([Intel XE#7571]) +1 other test fail
[44]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5467-2c64192f1ad194a53800f6dd8c779d5b4bbc1831/shard-bmg-3/igt@kms_cursor_legacy@flip-vs-cursor-atomic.html
[45]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-bmg-2/igt@kms_cursor_legacy@flip-vs-cursor-atomic.html
* igt@kms_dp_link_training@non-uhbr-mst:
- shard-lnl: NOTRUN -> [SKIP][46] ([Intel XE#4354] / [Intel XE#5882])
[46]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-lnl-8/igt@kms_dp_link_training@non-uhbr-mst.html
* igt@kms_dp_link_training@uhbr-mst:
- shard-bmg: NOTRUN -> [SKIP][47] ([Intel XE#4354] / [Intel XE#7386])
[47]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-bmg-6/igt@kms_dp_link_training@uhbr-mst.html
* igt@kms_dsc@dsc-basic-bigjoiner:
- shard-bmg: NOTRUN -> [SKIP][48] ([Intel XE#8265]) +4 other tests skip
[48]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-bmg-2/igt@kms_dsc@dsc-basic-bigjoiner.html
* igt@kms_dsc@dsc-with-bpc-formats:
- shard-lnl: NOTRUN -> [SKIP][49] ([Intel XE#8265]) +2 other tests skip
[49]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-lnl-4/igt@kms_dsc@dsc-with-bpc-formats.html
* igt@kms_feature_discovery@chamelium:
- shard-lnl: NOTRUN -> [SKIP][50] ([Intel XE#701] / [Intel XE#7359])
[50]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-lnl-6/igt@kms_feature_discovery@chamelium.html
* igt@kms_feature_discovery@dp-mst:
- shard-bmg: NOTRUN -> [SKIP][51] ([Intel XE#2375])
[51]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-bmg-1/igt@kms_feature_discovery@dp-mst.html
* igt@kms_feature_discovery@dsc:
- shard-lnl: NOTRUN -> [SKIP][52] ([Intel XE#8586])
[52]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-lnl-8/igt@kms_feature_discovery@dsc.html
* igt@kms_flip@2x-nonexisting-fb:
- shard-lnl: NOTRUN -> [SKIP][53] ([Intel XE#1421]) +2 other tests skip
[53]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-lnl-3/igt@kms_flip@2x-nonexisting-fb.html
* igt@kms_flip@flip-vs-expired-vblank@c-edp1:
- shard-lnl: [PASS][54] -> [FAIL][55] ([Intel XE#301] / [Intel XE#3149])
[54]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5467-2c64192f1ad194a53800f6dd8c779d5b4bbc1831/shard-lnl-7/igt@kms_flip@flip-vs-expired-vblank@c-edp1.html
[55]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-lnl-5/igt@kms_flip@flip-vs-expired-vblank@c-edp1.html
* igt@kms_flip_scaled_crc@flip-32bpp-yftileccs-to-64bpp-yftile-upscaling:
- shard-lnl: NOTRUN -> [SKIP][56] ([Intel XE#7178] / [Intel XE#7351]) +1 other test skip
[56]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-lnl-6/igt@kms_flip_scaled_crc@flip-32bpp-yftileccs-to-64bpp-yftile-upscaling.html
* igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs-upscaling:
- shard-bmg: NOTRUN -> [SKIP][57] ([Intel XE#7178] / [Intel XE#7351]) +4 other tests skip
[57]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-bmg-9/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs-upscaling.html
* igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tiledg2rcccs-downscaling:
- shard-lnl: NOTRUN -> [SKIP][58] ([Intel XE#7178] / [Intel XE#7349])
[58]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-lnl-1/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tiledg2rcccs-downscaling.html
* igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tiledg2rcccs-upscaling:
- shard-bmg: NOTRUN -> [SKIP][59] ([Intel XE#7178] / [Intel XE#7349])
[59]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-bmg-9/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tiledg2rcccs-upscaling.html
* igt@kms_flip_scaled_crc@flip-64bpp-xtile-to-16bpp-xtile-downscaling:
- shard-lnl: NOTRUN -> [SKIP][60] ([Intel XE#1397] / [Intel XE#1745] / [Intel XE#7385])
[60]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-lnl-3/igt@kms_flip_scaled_crc@flip-64bpp-xtile-to-16bpp-xtile-downscaling.html
* igt@kms_flip_scaled_crc@flip-64bpp-xtile-to-16bpp-xtile-downscaling@pipe-a-default-mode:
- shard-lnl: NOTRUN -> [SKIP][61] ([Intel XE#1397] / [Intel XE#7385])
[61]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-lnl-3/igt@kms_flip_scaled_crc@flip-64bpp-xtile-to-16bpp-xtile-downscaling@pipe-a-default-mode.html
* igt@kms_flip_scaled_crc@flip-p016-linear-to-p016-linear-reflect-x:
- shard-bmg: NOTRUN -> [SKIP][62] ([Intel XE#7179]) +1 other test skip
[62]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-bmg-4/igt@kms_flip_scaled_crc@flip-p016-linear-to-p016-linear-reflect-x.html
* igt@kms_frontbuffer_tracking@drrs-1p-primscrn-shrfb-msflip-blt:
- shard-lnl: NOTRUN -> [SKIP][63] ([Intel XE#6312] / [Intel XE#651]) +6 other tests skip
[63]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-lnl-3/igt@kms_frontbuffer_tracking@drrs-1p-primscrn-shrfb-msflip-blt.html
* igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-pri-shrfb-draw-blt:
- shard-lnl: NOTRUN -> [SKIP][64] ([Intel XE#656] / [Intel XE#7905]) +24 other tests skip
[64]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-lnl-5/igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-pri-shrfb-draw-blt.html
* igt@kms_frontbuffer_tracking@drrshdr-2p-primscrn-cur-indfb-draw-render:
- shard-bmg: NOTRUN -> [SKIP][65] ([Intel XE#2311]) +64 other tests skip
[65]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-bmg-6/igt@kms_frontbuffer_tracking@drrshdr-2p-primscrn-cur-indfb-draw-render.html
* igt@kms_frontbuffer_tracking@fbc-1p-primscrn-indfb-pgflip-blt:
- shard-bmg: NOTRUN -> [SKIP][66] ([Intel XE#4141]) +13 other tests skip
[66]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-bmg-9/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-indfb-pgflip-blt.html
* igt@kms_frontbuffer_tracking@fbcdrrs-tiling-y:
- shard-lnl: NOTRUN -> [SKIP][67] ([Intel XE#1469] / [Intel XE#7399]) +1 other test skip
[67]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-lnl-3/igt@kms_frontbuffer_tracking@fbcdrrs-tiling-y.html
* igt@kms_frontbuffer_tracking@fbcdrrshdr-argb161616f-draw-blt:
- shard-lnl: NOTRUN -> [SKIP][68] ([Intel XE#7061]) +3 other tests skip
[68]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-lnl-1/igt@kms_frontbuffer_tracking@fbcdrrshdr-argb161616f-draw-blt.html
* igt@kms_frontbuffer_tracking@fbcdrrshdr-rgb565-draw-mmap-wc:
- shard-lnl: NOTRUN -> [SKIP][69] ([Intel XE#6312]) +10 other tests skip
[69]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-lnl-6/igt@kms_frontbuffer_tracking@fbcdrrshdr-rgb565-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@fbchdr-1p-primscrn-cur-indfb-draw-blt:
- shard-lnl: NOTRUN -> [SKIP][70] ([Intel XE#7865]) +14 other tests skip
[70]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-lnl-4/igt@kms_frontbuffer_tracking@fbchdr-1p-primscrn-cur-indfb-draw-blt.html
* igt@kms_frontbuffer_tracking@fbchdr-tiling-y:
- shard-bmg: NOTRUN -> [SKIP][71] ([Intel XE#7399])
[71]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-bmg-9/igt@kms_frontbuffer_tracking@fbchdr-tiling-y.html
* igt@kms_frontbuffer_tracking@fbcpsr-abgr161616f-draw-mmap-wc:
- shard-lnl: NOTRUN -> [SKIP][72] ([Intel XE#7061] / [Intel XE#7356]) +2 other tests skip
[72]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-lnl-7/igt@kms_frontbuffer_tracking@fbcpsr-abgr161616f-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@fbcpsr-abgr161616f-draw-render:
- shard-bmg: NOTRUN -> [SKIP][73] ([Intel XE#7061] / [Intel XE#7356]) +4 other tests skip
[73]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-bmg-7/igt@kms_frontbuffer_tracking@fbcpsr-abgr161616f-draw-render.html
* igt@kms_frontbuffer_tracking@hdr-2p-scndscrn-pri-shrfb-draw-mmap-wc:
- shard-lnl: NOTRUN -> [SKIP][74] ([Intel XE#7905]) +28 other tests skip
[74]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-lnl-2/igt@kms_frontbuffer_tracking@hdr-2p-scndscrn-pri-shrfb-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@psrhdr-2p-primscrn-pri-shrfb-draw-render:
- shard-bmg: NOTRUN -> [SKIP][75] ([Intel XE#2313]) +60 other tests skip
[75]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-bmg-2/igt@kms_frontbuffer_tracking@psrhdr-2p-primscrn-pri-shrfb-draw-render.html
* igt@kms_frontbuffer_tracking@psrhdr-abgr161616f-draw-render:
- shard-bmg: NOTRUN -> [SKIP][76] ([Intel XE#7061]) +1 other test skip
[76]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-bmg-6/igt@kms_frontbuffer_tracking@psrhdr-abgr161616f-draw-render.html
* igt@kms_hdr@static-toggle:
- shard-lnl: NOTRUN -> [SKIP][77] ([Intel XE#1503]) +1 other test skip
[77]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-lnl-2/igt@kms_hdr@static-toggle.html
* igt@kms_joiner@switch-modeset-ultra-joiner-big-joiner:
- shard-lnl: NOTRUN -> [SKIP][78] ([Intel XE#7173] / [Intel XE#7294])
[78]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-lnl-3/igt@kms_joiner@switch-modeset-ultra-joiner-big-joiner.html
* igt@kms_plane@pixel-format-4-tiled-mtl-rc-ccs-cc-modifier-source-clamping:
- shard-lnl: NOTRUN -> [SKIP][79] ([Intel XE#7283]) +2 other tests skip
[79]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-lnl-7/igt@kms_plane@pixel-format-4-tiled-mtl-rc-ccs-cc-modifier-source-clamping.html
* igt@kms_plane@pixel-format-x-tiled-modifier@pipe-b-plane-5:
- shard-bmg: NOTRUN -> [SKIP][80] ([Intel XE#8303]) +1 other test skip
[80]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-bmg-8/igt@kms_plane@pixel-format-x-tiled-modifier@pipe-b-plane-5.html
* igt@kms_plane@pixel-format-y-tiled-gen12-mc-ccs-modifier-source-clamping:
- shard-bmg: NOTRUN -> [SKIP][81] ([Intel XE#7283]) +3 other tests skip
[81]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-bmg-2/igt@kms_plane@pixel-format-y-tiled-gen12-mc-ccs-modifier-source-clamping.html
* igt@kms_plane_lowres@tiling-y:
- shard-lnl: NOTRUN -> [SKIP][82] ([Intel XE#599])
[82]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-lnl-2/igt@kms_plane_lowres@tiling-y.html
* igt@kms_plane_scaling@intel-max-src-size:
- shard-bmg: [PASS][83] -> [SKIP][84] ([Intel XE#2685] / [Intel XE#3307])
[83]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5467-2c64192f1ad194a53800f6dd8c779d5b4bbc1831/shard-bmg-1/igt@kms_plane_scaling@intel-max-src-size.html
[84]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-bmg-1/igt@kms_plane_scaling@intel-max-src-size.html
* igt@kms_plane_scaling@planes-downscale-factor-0-5-upscale-20x20@pipe-b:
- shard-lnl: NOTRUN -> [SKIP][85] ([Intel XE#2763] / [Intel XE#6886]) +7 other tests skip
[85]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-lnl-8/igt@kms_plane_scaling@planes-downscale-factor-0-5-upscale-20x20@pipe-b.html
* igt@kms_pm_backlight@fade:
- shard-bmg: NOTRUN -> [SKIP][86] ([Intel XE#7376] / [Intel XE#7760] / [Intel XE#870]) +1 other test skip
[86]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-bmg-2/igt@kms_pm_backlight@fade.html
* igt@kms_pm_dc@dc3co-vpb-framegap:
- shard-bmg: NOTRUN -> [SKIP][87] ([Intel XE#8395] / [Intel XE#8396]) +2 other tests skip
[87]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-bmg-5/igt@kms_pm_dc@dc3co-vpb-framegap.html
* igt@kms_pm_dc@dc3co-vpb-simulation:
- shard-lnl: NOTRUN -> [SKIP][88] ([Intel XE#8395] / [Intel XE#8396]) +1 other test skip
[88]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-lnl-4/igt@kms_pm_dc@dc3co-vpb-simulation.html
* igt@kms_pm_dc@dc3co-vpb-simulation@psr2-xrgb8888:
- shard-bmg: NOTRUN -> [SKIP][89] ([Intel XE#8396]) +1 other test skip
[89]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-bmg-1/igt@kms_pm_dc@dc3co-vpb-simulation@psr2-xrgb8888.html
* igt@kms_pm_dc@dc3co-vpb-simulation@psr2-yuv420:
- shard-lnl: NOTRUN -> [SKIP][90] ([Intel XE#8396]) +1 other test skip
[90]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-lnl-4/igt@kms_pm_dc@dc3co-vpb-simulation@psr2-yuv420.html
* igt@kms_pm_dc@dc6-dpms:
- shard-lnl: [PASS][91] -> [FAIL][92] ([Intel XE#8399])
[91]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5467-2c64192f1ad194a53800f6dd8c779d5b4bbc1831/shard-lnl-4/igt@kms_pm_dc@dc6-dpms.html
[92]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-lnl-3/igt@kms_pm_dc@dc6-dpms.html
* igt@kms_pm_dc@deep-pkgc:
- shard-bmg: NOTRUN -> [SKIP][93] ([Intel XE#2505] / [Intel XE#7447])
[93]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-bmg-1/igt@kms_pm_dc@deep-pkgc.html
* igt@kms_psr2_sf@fbc-psr2-overlay-plane-move-continuous-exceed-fully-sf:
- shard-lnl: NOTRUN -> [SKIP][94] ([Intel XE#2893] / [Intel XE#4608] / [Intel XE#7304])
[94]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-lnl-3/igt@kms_psr2_sf@fbc-psr2-overlay-plane-move-continuous-exceed-fully-sf.html
* igt@kms_psr2_sf@fbc-psr2-overlay-plane-move-continuous-exceed-fully-sf@pipe-a-edp-1:
- shard-lnl: NOTRUN -> [SKIP][95] ([Intel XE#4608])
[95]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-lnl-3/igt@kms_psr2_sf@fbc-psr2-overlay-plane-move-continuous-exceed-fully-sf@pipe-a-edp-1.html
* igt@kms_psr2_sf@fbc-psr2-overlay-plane-move-continuous-exceed-fully-sf@pipe-b-edp-1:
- shard-lnl: NOTRUN -> [SKIP][96] ([Intel XE#4608] / [Intel XE#7304])
[96]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-lnl-3/igt@kms_psr2_sf@fbc-psr2-overlay-plane-move-continuous-exceed-fully-sf@pipe-b-edp-1.html
* igt@kms_psr2_sf@pr-overlay-plane-update-sf-dmg-area:
- shard-bmg: NOTRUN -> [SKIP][97] ([Intel XE#1489]) +5 other tests skip
[97]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-bmg-2/igt@kms_psr2_sf@pr-overlay-plane-update-sf-dmg-area.html
* igt@kms_psr2_sf@pr-plane-move-sf-dmg-area:
- shard-lnl: NOTRUN -> [SKIP][98] ([Intel XE#2893] / [Intel XE#7304]) +2 other tests skip
[98]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-lnl-4/igt@kms_psr2_sf@pr-plane-move-sf-dmg-area.html
* igt@kms_psr@fbc-psr2-dpms:
- shard-lnl: NOTRUN -> [SKIP][99] ([Intel XE#1406] / [Intel XE#7345]) +1 other test skip
[99]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-lnl-4/igt@kms_psr@fbc-psr2-dpms.html
* igt@kms_psr@fbc-psr2-sprite-blt@edp-1:
- shard-lnl: NOTRUN -> [SKIP][100] ([Intel XE#1406] / [Intel XE#4609]) +1 other test skip
[100]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-lnl-1/igt@kms_psr@fbc-psr2-sprite-blt@edp-1.html
* igt@kms_psr@pr-sprite-render:
- shard-bmg: NOTRUN -> [SKIP][101] ([Intel XE#2234] / [Intel XE#2850]) +11 other tests skip
[101]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-bmg-6/igt@kms_psr@pr-sprite-render.html
* igt@kms_psr_stress_test@flip-primary-invalidate-overlay:
- shard-bmg: NOTRUN -> [SKIP][102] ([Intel XE#7795])
[102]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-bmg-1/igt@kms_psr_stress_test@flip-primary-invalidate-overlay.html
* igt@kms_rotation_crc@bad-pixel-format:
- shard-bmg: NOTRUN -> [SKIP][103] ([Intel XE#3904] / [Intel XE#7342]) +2 other tests skip
[103]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-bmg-6/igt@kms_rotation_crc@bad-pixel-format.html
* igt@kms_rotation_crc@primary-yf-tiled-reflect-x-180:
- shard-lnl: NOTRUN -> [SKIP][104] ([Intel XE#1127] / [Intel XE#5813])
[104]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-lnl-8/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-180.html
* igt@kms_rotation_crc@sprite-rotation-270:
- shard-lnl: NOTRUN -> [SKIP][105] ([Intel XE#3414] / [Intel XE#3904] / [Intel XE#7342])
[105]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-lnl-4/igt@kms_rotation_crc@sprite-rotation-270.html
* igt@kms_sharpness_filter@filter-basic:
- shard-bmg: NOTRUN -> [SKIP][106] ([Intel XE#6503]) +1 other test skip
[106]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-bmg-3/igt@kms_sharpness_filter@filter-basic.html
* igt@kms_tiled_display@basic-test-pattern-with-chamelium:
- shard-bmg: NOTRUN -> [SKIP][107] ([Intel XE#2426] / [Intel XE#5848])
[107]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-bmg-6/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html
- shard-lnl: NOTRUN -> [SKIP][108] ([Intel XE#362] / [Intel XE#5848])
[108]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-lnl-6/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html
* igt@kms_vrr@flip-suspend:
- shard-bmg: NOTRUN -> [SKIP][109] ([Intel XE#1499])
[109]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-bmg-2/igt@kms_vrr@flip-suspend.html
* igt@kms_vrr@lobf-dc3co:
- shard-bmg: NOTRUN -> [SKIP][110] ([Intel XE#8397])
[110]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-bmg-5/igt@kms_vrr@lobf-dc3co.html
* igt@xe_compute@ccs-mode-basic:
- shard-lnl: NOTRUN -> [SKIP][111] ([Intel XE#1447] / [Intel XE#7471])
[111]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-lnl-4/igt@xe_compute@ccs-mode-basic.html
* igt@xe_evict@evict-small-multi-queue-priority-cm:
- shard-bmg: NOTRUN -> [SKIP][112] ([Intel XE#8370]) +1 other test skip
[112]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-bmg-1/igt@xe_evict@evict-small-multi-queue-priority-cm.html
* igt@xe_evict_ccs@evict-overcommit-standalone-nofree-samefd:
- shard-lnl: NOTRUN -> [SKIP][113] ([Intel XE#6540] / [Intel XE#688]) +7 other tests skip
[113]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-lnl-7/igt@xe_evict_ccs@evict-overcommit-standalone-nofree-samefd.html
* igt@xe_exec_balancer@no-exec-parallel-userptr-invalidate-race:
- shard-lnl: NOTRUN -> [SKIP][114] ([Intel XE#7482]) +11 other tests skip
[114]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-lnl-6/igt@xe_exec_balancer@no-exec-parallel-userptr-invalidate-race.html
* igt@xe_exec_basic@multigpu-many-execqueues-many-vm-null-defer-bind:
- shard-bmg: NOTRUN -> [SKIP][115] ([Intel XE#2322] / [Intel XE#7372]) +9 other tests skip
[115]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-bmg-3/igt@xe_exec_basic@multigpu-many-execqueues-many-vm-null-defer-bind.html
* igt@xe_exec_basic@multigpu-no-exec-null-defer-mmap:
- shard-lnl: NOTRUN -> [SKIP][116] ([Intel XE#1392]) +5 other tests skip
[116]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-lnl-6/igt@xe_exec_basic@multigpu-no-exec-null-defer-mmap.html
* igt@xe_exec_fault_mode@many-execqueues-multi-queue-userptr-invalidate-imm:
- shard-bmg: NOTRUN -> [SKIP][117] ([Intel XE#8374]) +14 other tests skip
[117]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-bmg-1/igt@xe_exec_fault_mode@many-execqueues-multi-queue-userptr-invalidate-imm.html
* igt@xe_exec_fault_mode@twice-multi-queue-invalid-fault:
- shard-lnl: NOTRUN -> [SKIP][118] ([Intel XE#8374]) +9 other tests skip
[118]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-lnl-8/igt@xe_exec_fault_mode@twice-multi-queue-invalid-fault.html
* igt@xe_exec_multi_queue@few-execs-basic-smem:
- shard-lnl: NOTRUN -> [SKIP][119] ([Intel XE#8364]) +17 other tests skip
[119]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-lnl-1/igt@xe_exec_multi_queue@few-execs-basic-smem.html
* igt@xe_exec_multi_queue@two-queues-preempt-mode-fault-dyn-priority-smem:
- shard-bmg: NOTRUN -> [SKIP][120] ([Intel XE#8364]) +29 other tests skip
[120]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-bmg-5/igt@xe_exec_multi_queue@two-queues-preempt-mode-fault-dyn-priority-smem.html
* igt@xe_exec_reset@cm-multi-queue-cat-error-on-secondary:
- shard-bmg: NOTRUN -> [SKIP][121] ([Intel XE#8369]) +1 other test skip
[121]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-bmg-2/igt@xe_exec_reset@cm-multi-queue-cat-error-on-secondary.html
* igt@xe_exec_reset@multi-queue-gt-reset:
- shard-lnl: NOTRUN -> [SKIP][122] ([Intel XE#8369])
[122]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-lnl-6/igt@xe_exec_reset@multi-queue-gt-reset.html
* igt@xe_exec_system_allocator@many-large-execqueues-mmap-new-nomemset:
- shard-bmg: NOTRUN -> [DMESG-WARN][123] ([Intel XE#7774])
[123]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-bmg-5/igt@xe_exec_system_allocator@many-large-execqueues-mmap-new-nomemset.html
* igt@xe_exec_system_allocator@pat-index-madvise-pat-idx-uc-comp-multi-vma:
- shard-lnl: NOTRUN -> [SKIP][124] ([Intel XE#6196])
[124]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-lnl-4/igt@xe_exec_system_allocator@pat-index-madvise-pat-idx-uc-comp-multi-vma.html
* igt@xe_exec_threads@threads-multi-queue-fd-userptr-rebind:
- shard-lnl: NOTRUN -> [SKIP][125] ([Intel XE#8378]) +7 other tests skip
[125]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-lnl-4/igt@xe_exec_threads@threads-multi-queue-fd-userptr-rebind.html
* igt@xe_exec_threads@threads-multi-queue-mixed-userptr-invalidate-race:
- shard-bmg: NOTRUN -> [SKIP][126] ([Intel XE#8378]) +7 other tests skip
[126]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-bmg-9/igt@xe_exec_threads@threads-multi-queue-mixed-userptr-invalidate-race.html
* igt@xe_mmap@pci-membarrier-parallel:
- shard-lnl: NOTRUN -> [SKIP][127] ([Intel XE#5100] / [Intel XE#7322] / [Intel XE#7408])
[127]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-lnl-7/igt@xe_mmap@pci-membarrier-parallel.html
* igt@xe_mmap@vram:
- shard-lnl: NOTRUN -> [SKIP][128] ([Intel XE#1416])
[128]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-lnl-5/igt@xe_mmap@vram.html
* igt@xe_multigpu_svm@mgpu-atomic-op-basic:
- shard-bmg: NOTRUN -> [SKIP][129] ([Intel XE#6964]) +2 other tests skip
[129]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-bmg-2/igt@xe_multigpu_svm@mgpu-atomic-op-basic.html
* igt@xe_multigpu_svm@mgpu-pagefault-basic:
- shard-lnl: NOTRUN -> [SKIP][130] ([Intel XE#6964])
[130]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-lnl-5/igt@xe_multigpu_svm@mgpu-pagefault-basic.html
* igt@xe_page_reclaim@pde-vs-pd:
- shard-bmg: NOTRUN -> [SKIP][131] ([Intel XE#7793]) +1 other test skip
[131]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-bmg-5/igt@xe_page_reclaim@pde-vs-pd.html
* igt@xe_page_reclaim@prl-invalidate-full:
- shard-lnl: NOTRUN -> [SKIP][132] ([Intel XE#7793]) +1 other test skip
[132]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-lnl-4/igt@xe_page_reclaim@prl-invalidate-full.html
* igt@xe_pat@pat-index-xelpg:
- shard-bmg: NOTRUN -> [SKIP][133] ([Intel XE#2236] / [Intel XE#7590])
[133]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-bmg-8/igt@xe_pat@pat-index-xelpg.html
* igt@xe_pat@pat-sw-hw-reset-compare:
- shard-bmg: NOTRUN -> [FAIL][134] ([Intel XE#7695])
[134]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-bmg-1/igt@xe_pat@pat-sw-hw-reset-compare.html
* igt@xe_pm@d3cold-mmap-vram:
- shard-lnl: NOTRUN -> [SKIP][135] ([Intel XE#2284] / [Intel XE#366] / [Intel XE#7370])
[135]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-lnl-7/igt@xe_pm@d3cold-mmap-vram.html
* igt@xe_pm@d3cold-mocs:
- shard-bmg: NOTRUN -> [SKIP][136] ([Intel XE#2284] / [Intel XE#7370]) +1 other test skip
[136]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-bmg-1/igt@xe_pm@d3cold-mocs.html
* igt@xe_pm@s3-mocs:
- shard-lnl: NOTRUN -> [SKIP][137] ([Intel XE#584] / [Intel XE#7369]) +1 other test skip
[137]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-lnl-7/igt@xe_pm@s3-mocs.html
* igt@xe_prefetch_fault@prefetch-fault-svm:
- shard-bmg: NOTRUN -> [SKIP][138] ([Intel XE#7599])
[138]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-bmg-10/igt@xe_prefetch_fault@prefetch-fault-svm.html
* igt@xe_pxp@pxp-stale-queue-post-termination-irq:
- shard-bmg: NOTRUN -> [SKIP][139] ([Intel XE#4733] / [Intel XE#7417])
[139]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-bmg-6/igt@xe_pxp@pxp-stale-queue-post-termination-irq.html
* igt@xe_query@multigpu-query-gt-list:
- shard-lnl: NOTRUN -> [SKIP][140] ([Intel XE#944]) +1 other test skip
[140]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-lnl-4/igt@xe_query@multigpu-query-gt-list.html
* igt@xe_query@multigpu-query-invalid-cs-cycles:
- shard-bmg: NOTRUN -> [SKIP][141] ([Intel XE#944]) +3 other tests skip
[141]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-bmg-6/igt@xe_query@multigpu-query-invalid-cs-cycles.html
* igt@xe_sriov_auto_provisioning@resources-released-on-vfs-disabling:
- shard-lnl: NOTRUN -> [SKIP][142] ([Intel XE#4130] / [Intel XE#7366]) +1 other test skip
[142]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-lnl-4/igt@xe_sriov_auto_provisioning@resources-released-on-vfs-disabling.html
* igt@xe_sriov_flr@flr-vf1-clear:
- shard-lnl: NOTRUN -> [SKIP][143] ([Intel XE#3342])
[143]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-lnl-1/igt@xe_sriov_flr@flr-vf1-clear.html
* igt@xe_sriov_scheduling@equal-throughput-low-priority:
- shard-bmg: [PASS][144] -> [FAIL][145] ([Intel XE#7992]) +1 other test fail
[144]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5467-2c64192f1ad194a53800f6dd8c779d5b4bbc1831/shard-bmg-6/igt@xe_sriov_scheduling@equal-throughput-low-priority.html
[145]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-bmg-6/igt@xe_sriov_scheduling@equal-throughput-low-priority.html
* igt@xe_sriov_scheduling@equal-throughput-low-priority@numvfs-random-gt1-vcs0:
- shard-bmg: [PASS][146] -> [FAIL][147] ([Intel XE#8526])
[146]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5467-2c64192f1ad194a53800f6dd8c779d5b4bbc1831/shard-bmg-6/igt@xe_sriov_scheduling@equal-throughput-low-priority@numvfs-random-gt1-vcs0.html
[147]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-bmg-6/igt@xe_sriov_scheduling@equal-throughput-low-priority@numvfs-random-gt1-vcs0.html
* igt@xe_sriov_scheduling@equal-throughput-normal-priority:
- shard-lnl: NOTRUN -> [SKIP][148] ([Intel XE#8339]) +1 other test skip
[148]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-lnl-7/igt@xe_sriov_scheduling@equal-throughput-normal-priority.html
* igt@xe_sriov_vram@vf-access-after-resize-up:
- shard-lnl: NOTRUN -> [SKIP][149] ([Intel XE#6376] / [Intel XE#7330] / [Intel XE#7422])
[149]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-lnl-4/igt@xe_sriov_vram@vf-access-after-resize-up.html
#### Possible fixes ####
* igt@kms_async_flips@alternate-sync-async-flip:
- shard-bmg: [FAIL][150] ([Intel XE#3718] / [Intel XE#6078]) -> [PASS][151] +1 other test pass
[150]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5467-2c64192f1ad194a53800f6dd8c779d5b4bbc1831/shard-bmg-10/igt@kms_async_flips@alternate-sync-async-flip.html
[151]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-bmg-3/igt@kms_async_flips@alternate-sync-async-flip.html
* igt@kms_flip@flip-vs-expired-vblank@a-edp1:
- shard-lnl: [FAIL][152] ([Intel XE#301]) -> [PASS][153] +1 other test pass
[152]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5467-2c64192f1ad194a53800f6dd8c779d5b4bbc1831/shard-lnl-7/igt@kms_flip@flip-vs-expired-vblank@a-edp1.html
[153]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-lnl-5/igt@kms_flip@flip-vs-expired-vblank@a-edp1.html
* igt@xe_fault_injection@inject-fault-probe-function-xe_guc_relay_init:
- shard-bmg: [ABORT][154] ([Intel XE#8007]) -> [PASS][155] +4 other tests pass
[154]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5467-2c64192f1ad194a53800f6dd8c779d5b4bbc1831/shard-bmg-6/igt@xe_fault_injection@inject-fault-probe-function-xe_guc_relay_init.html
[155]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-bmg-8/igt@xe_fault_injection@inject-fault-probe-function-xe_guc_relay_init.html
* igt@xe_sriov_flr@flr-each-isolation:
- shard-bmg: [FAIL][156] ([Intel XE#6569]) -> [PASS][157]
[156]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5467-2c64192f1ad194a53800f6dd8c779d5b4bbc1831/shard-bmg-1/igt@xe_sriov_flr@flr-each-isolation.html
[157]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-bmg-2/igt@xe_sriov_flr@flr-each-isolation.html
#### Warnings ####
* igt@kms_flip@flip-vs-expired-vblank:
- shard-lnl: [FAIL][158] ([Intel XE#301]) -> [FAIL][159] ([Intel XE#301] / [Intel XE#3149])
[158]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5467-2c64192f1ad194a53800f6dd8c779d5b4bbc1831/shard-lnl-7/igt@kms_flip@flip-vs-expired-vblank.html
[159]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-lnl-5/igt@kms_flip@flip-vs-expired-vblank.html
* igt@kms_hdr@brightness-with-hdr:
- shard-bmg: [SKIP][160] ([Intel XE#3544]) -> [SKIP][161] ([Intel XE#3374] / [Intel XE#3544])
[160]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5467-2c64192f1ad194a53800f6dd8c779d5b4bbc1831/shard-bmg-4/igt@kms_hdr@brightness-with-hdr.html
[161]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-bmg-6/igt@kms_hdr@brightness-with-hdr.html
* igt@kms_tiled_display@basic-test-pattern:
- shard-bmg: [FAIL][162] ([Intel XE#1729] / [Intel XE#7424]) -> [SKIP][163] ([Intel XE#2426] / [Intel XE#5848])
[162]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5467-2c64192f1ad194a53800f6dd8c779d5b4bbc1831/shard-bmg-3/igt@kms_tiled_display@basic-test-pattern.html
[163]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/shard-bmg-2/igt@kms_tiled_display@basic-test-pattern.html
{name}: This element is suppressed. This means it is ignored when computing
the status of the difference (SUCCESS, WARNING, or FAILURE).
[Intel XE#1124]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1124
[Intel XE#1127]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1127
[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#1416]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1416
[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#1428]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1428
[Intel XE#1447]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1447
[Intel XE#1469]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1469
[Intel XE#1489]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1489
[Intel XE#1499]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1499
[Intel XE#1503]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1503
[Intel XE#1729]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1729
[Intel XE#1745]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1745
[Intel XE#2234]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2234
[Intel XE#2236]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2236
[Intel XE#2252]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2252
[Intel XE#2284]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2284
[Intel XE#2311]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2311
[Intel XE#2313]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2313
[Intel XE#2320]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2320
[Intel XE#2321]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2321
[Intel XE#2322]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2322
[Intel XE#2325]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2325
[Intel XE#2327]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2327
[Intel XE#2375]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2375
[Intel XE#2426]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2426
[Intel XE#2505]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2505
[Intel XE#2669]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2669
[Intel XE#2685]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2685
[Intel XE#2724]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2724
[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#3149]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3149
[Intel XE#3304]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3304
[Intel XE#3307]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3307
[Intel XE#3342]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3342
[Intel XE#3374]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3374
[Intel XE#3414]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3414
[Intel XE#3432]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3432
[Intel XE#3433]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3433
[Intel XE#3544]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3544
[Intel XE#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#3718]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3718
[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#4130]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4130
[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#4608]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4608
[Intel XE#4609]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4609
[Intel XE#4733]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4733
[Intel XE#5100]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5100
[Intel XE#5545]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5545
[Intel XE#5813]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5813
[Intel XE#584]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/584
[Intel XE#5848]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5848
[Intel XE#5882]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5882
[Intel XE#599]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/599
[Intel XE#6078]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6078
[Intel XE#6196]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6196
[Intel XE#6312]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6312
[Intel XE#6376]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6376
[Intel XE#6503]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6503
[Intel XE#6507]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6507
[Intel XE#651]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/651
[Intel XE#6540]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6540
[Intel XE#656]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/656
[Intel XE#6569]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6569
[Intel XE#6627]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6627
[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#6964]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6964
[Intel XE#701]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/701
[Intel XE#7061]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7061
[Intel XE#7084]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7084
[Intel XE#7173]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7173
[Intel XE#7178]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7178
[Intel XE#7179]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7179
[Intel XE#7283]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7283
[Intel XE#7294]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7294
[Intel XE#7304]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7304
[Intel XE#7322]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7322
[Intel XE#7330]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7330
[Intel XE#7342]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7342
[Intel XE#7343]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7343
[Intel XE#7345]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7345
[Intel XE#7349]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7349
[Intel XE#7351]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7351
[Intel XE#7355]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7355
[Intel XE#7356]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7356
[Intel XE#7358]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7358
[Intel XE#7359]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7359
[Intel XE#7366]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7366
[Intel XE#7369]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7369
[Intel XE#7370]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7370
[Intel XE#7372]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7372
[Intel XE#7374]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7374
[Intel XE#7376]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7376
[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#7387]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7387
[Intel XE#7389]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7389
[Intel XE#7399]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7399
[Intel XE#7408]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7408
[Intel XE#7417]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7417
[Intel XE#7419]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7419
[Intel XE#7422]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7422
[Intel XE#7424]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7424
[Intel XE#7447]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7447
[Intel XE#7449]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7449
[Intel XE#7471]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7471
[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#7590]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7590
[Intel XE#7599]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7599
[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#7760]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7760
[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#7865]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7865
[Intel XE#7905]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7905
[Intel XE#7992]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7992
[Intel XE#8007]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8007
[Intel XE#8150]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8150
[Intel XE#8265]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8265
[Intel XE#8303]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8303
[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#8395]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8395
[Intel XE#8396]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8396
[Intel XE#8397]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8397
[Intel XE#8399]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8399
[Intel XE#8526]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8526
[Intel XE#8586]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8586
[Intel XE#8591]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8591
[Intel XE#870]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/870
[Intel XE#944]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/944
Build changes
-------------
* IGT: IGT_9020 -> IGT_9022
* Linux: xe-5467-2c64192f1ad194a53800f6dd8c779d5b4bbc1831 -> xe-pw-171022v1
IGT_9020: 9020
IGT_9022: 9022
xe-5467-2c64192f1ad194a53800f6dd8c779d5b4bbc1831: 2c64192f1ad194a53800f6dd8c779d5b4bbc1831
xe-pw-171022v1: 171022v1
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171022v1/index.html
[-- Attachment #2: Type: text/html, Size: 63437 bytes --]
^ permalink raw reply [flat|nested] 37+ messages in thread