* [PATCH v2 0/3] drm/xe: Adopt xe_log SIGID API for structured error reporting
@ 2026-08-12 12:34 Mallesh Koujalagi
2026-08-12 12:34 ` [PATCH v2 1/3] drm/xe/log: DO NOT REVIEW Mallesh Koujalagi
` (5 more replies)
0 siblings, 6 replies; 12+ messages in thread
From: Mallesh Koujalagi @ 2026-08-12 12:34 UTC (permalink / raw)
To: intel-xe, rodrigo.vivi, matthew.brost
Cc: anshuman.gupta, badal.nilawar, vinay.belgaumkar, riana.tauro,
karthik.poosa, sk.anirban, raag.jadav, michal.wajdeczko,
aravind.iddamsetty, umesh.nerlige.ramappa, dnyaneshwar.bhadane,
Mallesh Koujalagi
This series updates error logging in the Xe driver to use the new
xe_log SIGID API introduced in:
https://patchwork.freedesktop.org/series/171022/
The xe_log API provides stable and machine-readable error IDs (SIGIDs),
making it easier for monitoring and fleet tools to identify and track
known issues without relying on log message text matching.
This series converts existing drm_err()/xe_err() calls in the following
areas:
- PCODE
- System Controller (SYSCTRL)
v2:
- s/pcode/PCODE. (Michal)
- Drop PCODE in xe_log_err.
- Use -EOVERFLOW.
- Drop sysctrl in xe_log_err. (Michal)
- Drop redundant %pe.
- Print response->count.
Mallesh Koujalagi (3):
drm/xe/log: DO NOT REVIEW
drm/xe/pcode: Improve PCODE logging using xe_log helper
drm/xe/sysctrl: Add better sysctrl error reporting
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_log_abi.h | 198 +++++++++++++++++++++
drivers/gpu/drm/xe/abi/xe_sigid_abi.h | 195 +++++++++++++++++++++
drivers/gpu/drm/xe/xe_any.h | 142 +++++++++++++++
drivers/gpu/drm/xe/xe_log.c | 221 ++++++++++++++++++++++++
drivers/gpu/drm/xe/xe_log.h | 158 +++++++++++++++++
drivers/gpu/drm/xe/xe_pcode.c | 9 +-
drivers/gpu/drm/xe/xe_ras.c | 11 ++
drivers/gpu/drm/xe/xe_sysctrl_event.c | 12 +-
drivers/gpu/drm/xe/xe_sysctrl_mailbox.c | 29 ++--
12 files changed, 973 insertions(+), 18 deletions(-)
create mode 100644 Documentation/gpu/xe/xe_sigid.rst
create mode 100644 drivers/gpu/drm/xe/abi/xe_log_abi.h
create mode 100644 drivers/gpu/drm/xe/abi/xe_sigid_abi.h
create mode 100644 drivers/gpu/drm/xe/xe_any.h
create mode 100644 drivers/gpu/drm/xe/xe_log.c
create mode 100644 drivers/gpu/drm/xe/xe_log.h
--
2.48.1
^ permalink raw reply [flat|nested] 12+ messages in thread* [PATCH v2 1/3] drm/xe/log: DO NOT REVIEW 2026-08-12 12:34 [PATCH v2 0/3] drm/xe: Adopt xe_log SIGID API for structured error reporting Mallesh Koujalagi @ 2026-08-12 12:34 ` Mallesh Koujalagi 2026-08-12 12:49 ` sashiko-bot 2026-08-12 12:34 ` [PATCH v2 2/3] drm/xe/pcode: Improve PCODE logging using xe_log helper Mallesh Koujalagi ` (4 subsequent siblings) 5 siblings, 1 reply; 12+ messages in thread From: Mallesh Koujalagi @ 2026-08-12 12:34 UTC (permalink / raw) To: intel-xe, rodrigo.vivi, matthew.brost Cc: anshuman.gupta, badal.nilawar, vinay.belgaumkar, riana.tauro, karthik.poosa, sk.anirban, raag.jadav, michal.wajdeczko, aravind.iddamsetty, umesh.nerlige.ramappa, dnyaneshwar.bhadane, Mallesh Koujalagi DO NOT REVIEW. COMPILATION ONLY This patch is from https://patchwork.freedesktop.org/series/171022/ Added only for Compilation. Signed-off-by: Mallesh Koujalagi <mallesh.koujalagi@intel.com> 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> --- 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_log_abi.h | 198 +++++++++++++++++++++++ drivers/gpu/drm/xe/abi/xe_sigid_abi.h | 195 +++++++++++++++++++++++ drivers/gpu/drm/xe/xe_any.h | 142 +++++++++++++++++ drivers/gpu/drm/xe/xe_log.c | 221 ++++++++++++++++++++++++++ drivers/gpu/drm/xe/xe_log.h | 158 ++++++++++++++++++ drivers/gpu/drm/xe/xe_ras.c | 11 ++ 9 files changed, 941 insertions(+) create mode 100644 Documentation/gpu/xe/xe_sigid.rst create mode 100644 drivers/gpu/drm/xe/abi/xe_log_abi.h create mode 100644 drivers/gpu/drm/xe/abi/xe_sigid_abi.h create mode 100644 drivers/gpu/drm/xe/xe_any.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 44ed055439d4..92134709d998 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_log_abi.h b/drivers/gpu/drm/xe/abi/xe_log_abi.h new file mode 100644 index 000000000000..b3373d4b29d5 --- /dev/null +++ b/drivers/gpu/drm/xe/abi/xe_log_abi.h @@ -0,0 +1,198 @@ +/* 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 = CLASS(8b).TYPE(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 driver 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: component classes */ + 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, + /* private: reserved identifiers */ + XE_LOG_COMPONENT_NONE = 0u, +}; + +#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) = NONE + * LOCATION(1.0) = DEVICE.0 = "Device" + * LOCATION(2.1) = TILE.1 = "Tile1" + * LOCATION(3.2) = GT.2 = "GT2" + * + */ +enum xe_log_location_bits { + /* private: */ + XE_LOG_LOCATION_TYPE_MASK = GENMASK_U16(7, 0), + XE_LOG_LOCATION_ID_MASK = GENMASK_U16(15, 8), + /* private: location types */ + XE_LOG_LOCATION_TYPE_DEVICE = 1u, + XE_LOG_LOCATION_TYPE_TILE = 2u, + XE_LOG_LOCATION_TYPE_GT = 3u, + /* private: reserved identifiers */ + XE_LOG_LOCATION_NONE = 0u, +}; + +#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_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") \ + /* */ \ + 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") \ + +#define DEFINE_XE_LOG_HARDWARE_COMPONENTS(define) \ + define(HARDWARE, 1, DEVMEM, DEVICE_MEMORY, "Device Memory") \ + define(HARDWARE, 2, HWCORE, CORE_COMPUTE, "Core Compute") \ + /* HARDWARE, 3, RESERVED */ \ + define(HARDWARE, 4, PCIE, PCIE, "PCIe Interface") \ + define(HARDWARE, 5, FABRIC, FABRIC, "Fabric") \ + define(HARDWARE, 6, SOC, SOC_INTERNAL, "SoC Internal") \ + /* 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 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..69cce4b45635 --- /dev/null +++ b/drivers/gpu/drm/xe/abi/xe_sigid_abi.h @@ -0,0 +1,195 @@ +/* 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] + * @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 + * reused. The tag in brackets is the default resolution bucket (see the `Xe + * Error Signatures (SIGID)`_ section). + * + * Firmware- and hardware-originated signatures are numbered separately. + */ +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, + + 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 diff --git a/drivers/gpu/drm/xe/xe_any.h b/drivers/gpu/drm/xe/xe_any.h new file mode 100644 index 000000000000..c49f87ccdb47 --- /dev/null +++ b/drivers/gpu/drm/xe/xe_any.h @@ -0,0 +1,142 @@ +/* SPDX-License-Identifier: MIT */ +/* + * Copyright © 2026 Intel Corporation + */ + +#ifndef _XE_ANY_H_ +#define _XE_ANY_H_ + +#include "xe_device.h" + +#define __xe_any_to_self_assoc(type, any) \ + const type * : (any), \ + type * : (any) + +/** + * 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), \ + __xe_any_to_self_assoc(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) + +#define __xe_any_to_other_assoc(const, from, other, p) \ + const struct from * : __##from##_to_##other((const struct from *)(p)) + +#define __xe_tile_to_xe_device(p) tile_to_xe(p) +#define __xe_gt_to_xe_device(p) gt_to_xe(p) +#define __pci_dev_to_xe_device(p) pdev_to_xe_device(p) +#define __device_to_xe_device(p) kdev_to_xe_device(p) +#define __drm_device_to_xe_device(p) to_xe_device(p) +#define __pci_dev_to_device(p) (&(p)->dev) + +/** + * xe_any_to_xe() - Obtain 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), \ + __xe_any_to_self_assoc(struct xe_device, (any)), \ + __xe_any_to_other_assoc(/* */, xe_tile, xe_device, (any)), \ + __xe_any_to_other_assoc(const, xe_tile, xe_device, (any)), \ + __xe_any_to_other_assoc(/* */, xe_gt, xe_device, (any)), \ + __xe_any_to_other_assoc(const, xe_gt, xe_device, (any)), \ + __xe_any_to_other_assoc(, drm_device, xe_device, (any)), \ + __xe_any_to_other_assoc(, pci_dev, xe_device, (any)), \ + __xe_any_to_other_assoc(, device, xe_device, (any))) + +/** + * xe_any_to_drm() - Obtain the &drm_device pointer. + * @any: the &pci_dev or the &xe_device or &xe_tile or &xe_gt pointer + * + * Return: the @drm_device pointer or backpointer. + */ +#define xe_any_to_drm(any) \ + _Generic((any), \ + __xe_any_to_self_assoc(struct drm_device, (any)), \ + default : \ + &xe_any_to_xe(any)->drm) + +/** + * xe_any_to_dev() - Obtain the &device pointer. + * @any: the &pci_dev or the &xe_device or &xe_tile or &xe_gt pointer + * + * Return: the @device pointer or backpointer. + */ +#define xe_any_to_dev(any) \ + _Generic((any), \ + __xe_any_to_self_assoc(struct device, (any)), \ + __xe_any_to_other_assoc(, pci_dev, device, (any)), \ + default : \ + xe_any_to_drm(any)->dev) + +/** + * xe_any_to_pdev() - Obtain 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), \ + __xe_any_to_self_assoc(struct pci_dev, (any)), \ + default : \ + to_pci_dev(xe_any_to_dev(any))) + +#define __xe_tile_to_id(p) ((p)->id) +#define __xe_gt_to_id(p) ((p)->info.id) + +/** + * xe_any_id() - Get the identifier of the underlying object. + * @any: the &pci_dev or the &xe_device or &xe_tile or &xe_gt pointer + * + * Return: the identifier of the object, or 0 if not applicable/available. + */ +#define xe_any_id(any) \ + _Generic((any), \ + __xe_any_to_other_assoc(/* */, xe_tile, id, (any)), \ + __xe_any_to_other_assoc(const, xe_tile, id, (any)), \ + __xe_any_to_other_assoc(/* */, xe_gt, id, (any)), \ + __xe_any_to_other_assoc(const, xe_gt, id, (any)), \ + default : \ + 0) + +#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..32fbf83fd992 --- /dev/null +++ b/drivers/gpu/drm/xe/xe_log.c @@ -0,0 +1,221 @@ +// SPDX-License-Identifier: MIT +/* + * Copyright © 2026 Intel Corporation + */ + +#include "abi/xe_log_abi.h" + +#include "xe_device.h" +#include "xe_log.h" +#include "xe_printk.h" + +static void log_emit_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 const char *log_unknown_component_prefix(u32 component) +{ + u32 class = FIELD_GET(XE_LOG_COMPONENT_CLASS_MASK, component); + u32 type = FIELD_GET(XE_LOG_COMPONENT_TYPE_MASK, component); + + WARN(IS_ENABLED(CONFIG_DRM_XE_DEBUG), "LOG: unrecognized component %u.%u\n", class, type); + switch (class) { +#define MAKE_XE_LOG_COMPONENT_CLASS_PREFIX(_CLASS) \ + case XE_LOG_COMPONENT_CLASS_##_CLASS: return #_CLASS "? " + MAKE_XE_LOG_COMPONENT_CLASS_PREFIX(SYSTEM); + MAKE_XE_LOG_COMPONENT_CLASS_PREFIX(DRIVER); + MAKE_XE_LOG_COMPONENT_CLASS_PREFIX(FEATURE); + MAKE_XE_LOG_COMPONENT_CLASS_PREFIX(FIRMWARE); + MAKE_XE_LOG_COMPONENT_CLASS_PREFIX(HARDWARE); +#undef MAKE_XE_LOG_COMPONENT_CLASS_PREFIX + } + return "COMP? "; +} + +static const char *log_component_prefix(u32 component) +{ + switch (component) { +#define MAKE_XE_LOG_COMPONENT_CASE_PREFIX(_CLASS, _ID, _TAG, _SIG, _NAME) \ + case XE_LOG_COMPONENT_##_TAG: return /* _CLASS _ID _SIG _NAME */ #_TAG ": "; + DEFINE_XE_LOG_COMPONENTS(MAKE_XE_LOG_COMPONENT_CASE_PREFIX) +#undef MAKE_XE_LOG_COMPONENT_CASE_PREFIX + } + + return component ? log_unknown_component_prefix(component) : ""; +} + +static struct xe_gt *get_gt_safe(struct pci_dev *pdev, u8 id) +{ + struct xe_device *xe = pdev_to_xe_device(pdev); + + return xe ? xe_device_get_gt(xe, id) : NULL; +} + +static struct xe_tile *get_tile_safe(struct pci_dev *pdev, u8 id) +{ + struct xe_device *xe = pdev_to_xe_device(pdev); + + return xe && id < xe->info.tile_count ? &xe->tiles[id] : NULL; +} + +static const char *log_location_prefix(struct pci_dev *pdev, u32 location, char *buf, size_t size) +{ + u32 type = FIELD_GET(XE_LOG_LOCATION_TYPE_MASK, location); + u32 id = FIELD_GET(XE_LOG_LOCATION_ID_MASK, location); + + if (!location || type == XE_LOG_LOCATION_TYPE_DEVICE) { + if (id) + goto unrecognized; + strscpy(buf, "", size); + } else if (type == XE_LOG_LOCATION_TYPE_TILE) { + struct xe_tile *tile = get_tile_safe(pdev, id); + + if (!tile) + goto unrecognized; + snprintf(buf, size, "Tile%u: ", id); + } else if (type == XE_LOG_LOCATION_TYPE_GT) { + struct xe_gt *gt = get_gt_safe(pdev, id); + + if (!gt) + goto unrecognized; + snprintf(buf, size, "Tile%u: GT%u: ", gt->tile->id, id); + } else { + goto unrecognized; + } + + return buf; + +unrecognized: + pci_WARN(pdev, IS_ENABLED(CONFIG_DRM_XE_DEBUG), + "LOG: unrecognized location %u.%u\n", type, id); + snprintf(buf, size, "LOC%u.%u? ", type, id); + return buf; +} + +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_dmesg_vprintk(struct pci_dev *pdev, int cper_sev, struct va_format *vaf) +{ + if (cper_sev == CPER_SEV_INFORMATIONAL) + pci_info(pdev, __LOG_DRM_PRINTK_FMT("%pV", vaf)); + else + pci_err(pdev, __LOG_DRM_PRINTK_ERR_FMT("%pV", vaf)); +} + +static void log_dmesg_printf(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_dmesg_vprintk(pdev, cper_sev, &vaf); + + va_end(args); +} + +static void log_emit_dmesg(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) +{ + char buf[32]; + const char *loc_prefix = log_location_prefix(pdev, location, buf, sizeof(buf)); + const char *comp_prefix = log_component_prefix(component); + const char *hwe_prefix = log_hwe_prefix(cper_sev, sigid); + const char *sev_prefix = log_sev_prefix(cper_sev); + + if (IS_ERR(data)) + log_dmesg_printf(pdev, cper_sev, "SIGID=%u %s(%pe) %s%s%s%pV", + sigid, sev_prefix, data, hwe_prefix, + loc_prefix, comp_prefix, vaf); + else if (data && len) + log_dmesg_printf(pdev, cper_sev, "SIGID=%u %s(%*phN) %s%s%s%pV", + sigid, sev_prefix, (int)len, data, hwe_prefix, + loc_prefix, comp_prefix, vaf); + else + log_dmesg_printf(pdev, cper_sev, "SIGID=%u %s%s%s%s%pV", + sigid, sev_prefix, hwe_prefix, + loc_prefix, comp_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 identifier + * @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_emit_dmesg(pdev, cper_sev, sigid, component, location, data, len, &vaf); + log_emit_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..7b90e39b97be --- /dev/null +++ b/drivers/gpu/drm/xe/xe_log.h @@ -0,0 +1,158 @@ +/* SPDX-License-Identifier: MIT */ +/* + * Copyright © 2026 Intel Corporation + */ + +#ifndef _XE_LOG_H_ +#define _XE_LOG_H_ + +#include <linux/cper.h> +#include <linux/err.h> + +#include "abi/xe_log_abi.h" +#include "abi/xe_sigid_abi.h" +#include "xe_any.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, ...); + +#define xe_log_emit_fatal(pdev, sig, comp, loc, data, len, fmt, args...) \ + xe_log_emit((pdev), CPER_SEV_FATAL, (sig), (comp), (loc), \ + (data), (len), fmt, ##args) + +#define xe_log_emit_recoverable(pdev, sig, comp, loc, data, len, fmt, args...) \ + xe_log_emit((pdev), CPER_SEV_RECOVERABLE, (sig), (comp), (loc), \ + (data), (len), fmt, ##args) + +#define xe_log_emit_corrected(pdev, sig, comp, loc, data, len, fmt, args...) \ + xe_log_emit((pdev), CPER_SEV_CORRECTED, (sig), (comp), (loc), \ + (data), (len), fmt, ##args) + +#define xe_log_emit_info(pdev, sig, comp, loc, data, len, fmt, args...) \ + xe_log_emit((pdev), CPER_SEV_INFORMATIONAL, (sig), (comp), (loc), \ + (data), (len), fmt, ##args) + +#define xe_log_location_type(any) \ + _Generic((any), \ + struct xe_gt * : XE_LOG_LOCATION_TYPE_GT, \ + const struct xe_gt * : XE_LOG_LOCATION_TYPE_GT, \ + struct xe_tile * : XE_LOG_LOCATION_TYPE_TILE, \ + const struct xe_tile * : XE_LOG_LOCATION_TYPE_TILE, \ + struct xe_device * : XE_LOG_LOCATION_TYPE_DEVICE, \ + const struct xe_device * : XE_LOG_LOCATION_TYPE_DEVICE, \ + struct pci_dev * : XE_LOG_LOCATION_TYPE_DEVICE, \ + struct device * : XE_LOG_LOCATION_TYPE_DEVICE) + +#define xe_log_location(any) \ + PREP_XE_LOG_LOCATION(xe_log_location_type(any), xe_any_id(any)) + +/** + * xe_log_from() - Emit a structured SIGID log entry using @any pointer as location. + * @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, ...) + * @sigid: signature identifier, see &enum xe_sigid + * @component: component identifier + * @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 + * @args: arguments for the @fmt format string + * + * The location used to emit SIGID entry will be based on the @any pointer type. + * See xe_log_emit() for more details. + */ +#define xe_log_from(any, cper_sev, sigid, component, data, len, fmt, args...) do { \ + typeof(any) ___any = (any); \ + xe_log_emit(xe_any_to_pdev(___any), (cper_sev), (sigid), (component), \ + xe_log_location(___any), (data), (len), fmt, ##args); \ +} while (0) + +#define xe_log_from_fatal(any, sig, comp, data, len, fmt, args...) \ + xe_log_from((any), CPER_SEV_FATAL, (sig), (comp), \ + (data), (len), fmt, ##args) + +#define xe_log_from_recoverable(any, sig, comp, data, len, fmt, args...) \ + xe_log_from((any), CPER_SEV_RECOVERABLE, (sig), (comp), \ + (data), (len), fmt, ##args) + +#define xe_log_from_corrected(any, sig, comp, data, len, fmt, args...) \ + xe_log_from((any), CPER_SEV_CORRECTED, (sig), (comp), \ + (data), (len), fmt, ##args) + +#define xe_log_from_info(any, sig, comp, data, len, fmt, args...) \ + xe_log_from((any), CPER_SEV_INFORMATIONAL, (sig), (comp), \ + (data), (len), fmt, ##args) + +/** + * xe_log_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 SIGID will be determined from the component's @TAG. + * The component identifier will be determined from the component's @TAG. + * The location used to emit SIGID entry will be based on the @any pointer type. + */ +#define xe_log_comp(any, cper_sev, TAG, data, len, fmt, args...) \ + xe_log_from((any), (cper_sev), (int)XE_LOG_COMPONENT_##TAG##_SIGID, \ + XE_LOG_COMPONENT_##TAG, (data), (len), fmt, ##args) + +/** + * 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 + * + * The log entry will be emitted with @CPER_SEV_RECOVERABLE severity. + */ +#define xe_log_err(any, TAG, err, fmt, args...) \ + xe_log_comp((any), CPER_SEV_RECOVERABLE, TAG, ERR_PTR(err), 0, fmt, ##args) + +/** + * xe_log_err_fatal() - 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 + * + * The log entry will be emitted with @CPER_SEV_FATAL severity. + */ +#define xe_log_err_fatal(any, TAG, err, fmt, args...) \ + xe_log_comp((any), CPER_SEV_FATAL, TAG, ERR_PTR(err), 0, fmt, ##args) + +/** + * xe_log_err_corrected() - 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 + * + * The log entry will be emitted with @CPER_SEV_CORRECTED severity. + */ +#define xe_log_err_corrected(any, TAG, err, fmt, args...) \ + xe_log_comp((any), CPER_SEV_CORRECTED, 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 + * + * The log entry will be emitted with @CPER_SEV_INFORMATIONAL severity. + */ +#define xe_log_info(any, TAG, fmt, args...) \ + xe_log_comp((any), CPER_SEV_INFORMATIONAL, TAG, NULL, 0, fmt, ##args) + +#endif diff --git a/drivers/gpu/drm/xe/xe_ras.c b/drivers/gpu/drm/xe/xe_ras.c index 93e45ef49bae..d1aa3794f2e0 100644 --- a/drivers/gpu/drm/xe/xe_ras.c +++ b/drivers/gpu/drm/xe/xe_ras.c @@ -5,6 +5,7 @@ #include "xe_device.h" #include "xe_drm_ras.h" +#include "xe_log.h" #include "xe_pm.h" #include "xe_printk.h" #include "xe_ras.h" @@ -45,6 +46,16 @@ enum xe_ras_component { XE_RAS_COMP_MAX }; +#define CHECK_COMPONENT(RAS_COMP, LOG_COMP) \ + static_assert(MAKE_XE_LOG_COMPONENT(HARDWARE, (RAS_COMP)) == (LOG_COMP)) + /* make sure components definitions maintain stable relation */ + CHECK_COMPONENT(XE_RAS_COMP_DEVICE_MEMORY, XE_LOG_COMPONENT_DEVMEM); + CHECK_COMPONENT(XE_RAS_COMP_CORE_COMPUTE, XE_LOG_COMPONENT_HWCORE); + CHECK_COMPONENT(XE_RAS_COMP_PCIE, XE_LOG_COMPONENT_PCIE); + CHECK_COMPONENT(XE_RAS_COMP_FABRIC, XE_LOG_COMPONENT_FABRIC); + CHECK_COMPONENT(XE_RAS_COMP_SOC_INTERNAL, XE_LOG_COMPONENT_SOC); +#undef CHECK_COMPONENT + /* RAS response status codes */ enum xe_ras_response_status { XE_RAS_STATUS_SUCCESS = 0, -- 2.48.1 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCH v2 1/3] drm/xe/log: DO NOT REVIEW 2026-08-12 12:34 ` [PATCH v2 1/3] drm/xe/log: DO NOT REVIEW Mallesh Koujalagi @ 2026-08-12 12:49 ` sashiko-bot 0 siblings, 0 replies; 12+ messages in thread From: sashiko-bot @ 2026-08-12 12:49 UTC (permalink / raw) To: Mallesh Koujalagi; +Cc: intel-xe Thank you for your contribution! Sashiko AI review found 3 potential issue(s) to consider: - [Medium] Corrected hardware errors are logged at ERROR level, triggering false alerts - [Low] Missing `const` support for generic kernel device structs in type selection macros - [Low] Composite component classes are unhandled in the unknown component fallback -- --- Patch [1]: [PATCH v2 1/3] drm/xe/log: DO NOT REVIEW --- commit c27ccbea00833a08d0fbc465493aa86a335d74ca Author: Mallesh Koujalagi <mallesh.koujalagi@intel.com> drm/xe/log: DO NOT REVIEW This commit introduces the Xe SIGID logging framework. It defines the stable error signature identifiers and implements the logging macros to emit structured log entries. Link: https://patchwork.freedesktop.org/series/171022/ > diff --git a/drivers/gpu/drm/xe/xe_any.h b/drivers/gpu/drm/xe/xe_any.h > index 0000000000000..c49f87ccdb477 > --- /dev/null > +++ b/drivers/gpu/drm/xe/xe_any.h [ ... ] > +/** > + * xe_any_to_xe() - Obtain 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), \ > + __xe_any_to_self_assoc(struct xe_device, (any)), \ > + __xe_any_to_other_assoc(/* */, xe_tile, xe_device, (any)), \ > + __xe_any_to_other_assoc(const, xe_tile, xe_device, (any)), \ > + __xe_any_to_other_assoc(/* */, xe_gt, xe_device, (any)), \ > + __xe_any_to_other_assoc(const, xe_gt, xe_device, (any)), \ > + __xe_any_to_other_assoc(, drm_device, xe_device, (any)), \ > + __xe_any_to_other_assoc(, pci_dev, xe_device, (any)), \ > + __xe_any_to_other_assoc(, device, xe_device, (any))) [Severity: Low] Is it possible to hit a compile-time error here if this macro is called with a const struct pci_dev *, const struct device *, or const struct drm_device *? The _Generic selection lacks the const variants for standard device pointers, though they are present for the driver-specific structs. > diff --git a/drivers/gpu/drm/xe/xe_log.c b/drivers/gpu/drm/xe/xe_log.c > index 0000000000000..32fbf83fd9924 > --- /dev/null > +++ b/drivers/gpu/drm/xe/xe_log.c [ ... ] > +static const char *log_unknown_component_prefix(u32 component) > +{ > + u32 class = FIELD_GET(XE_LOG_COMPONENT_CLASS_MASK, component); > + u32 type = FIELD_GET(XE_LOG_COMPONENT_TYPE_MASK, component); > + > + WARN(IS_ENABLED(CONFIG_DRM_XE_DEBUG), "LOG: unrecognized component %u.%u\n", class, type); > + switch (class) { > +#define MAKE_XE_LOG_COMPONENT_CLASS_PREFIX(_CLASS) \ > + case XE_LOG_COMPONENT_CLASS_##_CLASS: return #_CLASS "? " > + MAKE_XE_LOG_COMPONENT_CLASS_PREFIX(SYSTEM); > + MAKE_XE_LOG_COMPONENT_CLASS_PREFIX(DRIVER); > + MAKE_XE_LOG_COMPONENT_CLASS_PREFIX(FEATURE); > + MAKE_XE_LOG_COMPONENT_CLASS_PREFIX(FIRMWARE); > + MAKE_XE_LOG_COMPONENT_CLASS_PREFIX(HARDWARE); > +#undef MAKE_XE_LOG_COMPONENT_CLASS_PREFIX > + } > + return "COMP? "; > +} [Severity: Low] Does this code handle composite component classes? It appears that MAKE_XE_LOG_COMPONENT_CLASS_PREFIX is not instantiated for DRIVER_FEATURE, DRIVER_FIRMWARE, or DRIVER_HARDWARE. If a dynamically constructed component ID belongs to one of these classes, it looks like it will fall through to the "COMP? " string instead of generating a class-specific prefix. [ ... ] > +static void log_dmesg_vprintk(struct pci_dev *pdev, int cper_sev, struct va_format *vaf) > +{ > + if (cper_sev == CPER_SEV_INFORMATIONAL) > + pci_info(pdev, __LOG_DRM_PRINTK_FMT("%pV", vaf)); > + else > + pci_err(pdev, __LOG_DRM_PRINTK_ERR_FMT("%pV", vaf)); > +} [Severity: Medium] Will this incorrectly log successfully corrected hardware errors at ERROR level? If a corrected fault is emitted via xe_log_emit_corrected() using CPER_SEV_CORRECTED, it takes the else branch and uses pci_err() along with the *ERROR* string format. Could this pollute dmesg and cause automated system health monitoring tools to issue false hardware failure alerts? > diff --git a/drivers/gpu/drm/xe/xe_log.h b/drivers/gpu/drm/xe/xe_log.h > index 0000000000000..7b90e39b97be2 > --- /dev/null > +++ b/drivers/gpu/drm/xe/xe_log.h [ ... ] > +#define xe_log_location_type(any) \ > + _Generic((any), \ > + struct xe_gt * : XE_LOG_LOCATION_TYPE_GT, \ > + const struct xe_gt * : XE_LOG_LOCATION_TYPE_GT, \ > + struct xe_tile * : XE_LOG_LOCATION_TYPE_TILE, \ > + const struct xe_tile * : XE_LOG_LOCATION_TYPE_TILE, \ > + struct xe_device * : XE_LOG_LOCATION_TYPE_DEVICE, \ > + const struct xe_device * : XE_LOG_LOCATION_TYPE_DEVICE, \ > + struct pci_dev * : XE_LOG_LOCATION_TYPE_DEVICE, \ > + struct device * : XE_LOG_LOCATION_TYPE_DEVICE) [Severity: Low] Does this code also omit the const variants for standard device pointers? Like xe_any_to_xe(), if this macro is called with a const struct pci_dev * or const struct device *, it looks like it will result in a compile-time error due to an unhandled type in the _Generic selection. -- Sashiko AI review · https://sashiko.dev/#/patchset/20260812123449.239480-5-mallesh.koujalagi@intel.com?part=1 ^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH v2 2/3] drm/xe/pcode: Improve PCODE logging using xe_log helper 2026-08-12 12:34 [PATCH v2 0/3] drm/xe: Adopt xe_log SIGID API for structured error reporting Mallesh Koujalagi 2026-08-12 12:34 ` [PATCH v2 1/3] drm/xe/log: DO NOT REVIEW Mallesh Koujalagi @ 2026-08-12 12:34 ` Mallesh Koujalagi 2026-08-12 12:44 ` sashiko-bot ` (2 more replies) 2026-08-12 12:34 ` [PATCH v2 3/3] drm/xe/sysctrl: Add better sysctrl error reporting Mallesh Koujalagi ` (3 subsequent siblings) 5 siblings, 3 replies; 12+ messages in thread From: Mallesh Koujalagi @ 2026-08-12 12:34 UTC (permalink / raw) To: intel-xe, rodrigo.vivi, matthew.brost Cc: anshuman.gupta, badal.nilawar, vinay.belgaumkar, riana.tauro, karthik.poosa, sk.anirban, raag.jadav, michal.wajdeczko, aravind.iddamsetty, umesh.nerlige.ramappa, dnyaneshwar.bhadane, Mallesh Koujalagi Use xe_log helper for PCODE errors instead of drm_err(). This adds PCODE component tag, making issues easier to detect and track with automated tools. Signed-off-by: Mallesh Koujalagi <mallesh.koujalagi@intel.com> --- v2: - s/pcode/PCODE. (Michal) - Drop PCODE in xe_log_err. --- drivers/gpu/drm/xe/xe_pcode.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/xe/xe_pcode.c b/drivers/gpu/drm/xe/xe_pcode.c index ccc3bdeed6bb..c69440ea477b 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" @@ -219,8 +220,8 @@ int xe_pcode_request(struct xe_tile *tile, u32 mbox, u32 request, * requests, and for any quirks of the PCODE firmware that delays * the request completion. */ - drm_err(&tile_to_xe(tile)->drm, - "PCODE timeout, retrying with preemption disabled\n"); + xe_log_err(tile, PCODE, -ETIMEDOUT, + "Timeout, retrying with preemption disabled\n"); preempt_disable(); ret = pcode_try_request(tile, mbox, request, reply_mask, reply, &status, true, 50 * 1000, true); @@ -320,8 +321,8 @@ int xe_pcode_ready(struct xe_device *xe, bool locked) mutex_unlock(&tile->pcode.lock); if (ret) - drm_err(&xe->drm, - "PCODE initialization timedout after: 3 min\n"); + xe_log_err(xe, PCODE, ret, + "Initialization timedout after: 3 min\n"); return ret; } -- 2.48.1 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCH v2 2/3] drm/xe/pcode: Improve PCODE logging using xe_log helper 2026-08-12 12:34 ` [PATCH v2 2/3] drm/xe/pcode: Improve PCODE logging using xe_log helper Mallesh Koujalagi @ 2026-08-12 12:44 ` sashiko-bot 2026-08-12 12:53 ` Bhadane, Dnyaneshwar 2026-08-12 18:02 ` Umesh Nerlige Ramappa 2 siblings, 0 replies; 12+ messages in thread From: sashiko-bot @ 2026-08-12 12:44 UTC (permalink / raw) To: Mallesh Koujalagi; +Cc: intel-xe Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider: New issues: - [Medium] Incomplete migration to xe_log_err for PCODE errors Pre-existing issues: - [High] Unbounded exponential backoff in PCODE polling loop causes massive sleeps and dangerous udelay() calls -- --- Patch [2]: [PATCH v2 2/3] drm/xe/pcode: Improve PCODE logging using xe_log helper --- commit be49e77e4b5b367f065e60c69fb19b1b95cdf273 Author: Mallesh Koujalagi <mallesh.koujalagi@intel.com> drm/xe/pcode: Improve PCODE logging using xe_log helper This commit updates the driver to use the xe_log_err() helper for PCODE errors instead of drm_err(). This aims to add the PCODE component tag to the log messages to make issues easier to track. > Use xe_log helper for PCODE errors instead of drm_err(). This > adds PCODE component tag, making issues easier to detect and > track with automated tools. [Severity: Medium] Did we miss updating the drm_err() call in pcode_mailbox_status()? drivers/gpu/drm/xe/xe_pcode.c:pcode_mailbox_status() { if (err) { drm_err(&tile_to_xe(tile)->drm, "PCODE Mailbox failed: %d %s", err_decode, err_str); return err_decode; } ... } It seems this error logging statement was left unconverted. Leaving it as drm_err() means automated tools tracking the PCODE component tag might miss these critical hardware mailbox failures. > diff --git a/drivers/gpu/drm/xe/xe_pcode.c b/drivers/gpu/drm/xe/xe_pcode.c > index ccc3bdeed6bb2..c69440ea477b4 100644 > --- a/drivers/gpu/drm/xe/xe_pcode.c > +++ b/drivers/gpu/drm/xe/xe_pcode.c [ ... ] > @@ -219,8 +220,8 @@ int xe_pcode_request(struct xe_tile *tile, u32 mbox, u32 request, > * requests, and for any quirks of the PCODE firmware that delays > * the request completion. > */ > - drm_err(&tile_to_xe(tile)->drm, > - "PCODE timeout, retrying with preemption disabled\n"); > + xe_log_err(tile, PCODE, -ETIMEDOUT, > + "Timeout, retrying with preemption disabled\n"); > preempt_disable(); > ret = pcode_try_request(tile, mbox, request, reply_mask, reply, &status, > true, 50 * 1000, true); [Severity: High] This isn't a bug introduced by this patch, but does the polling loop in pcode_try_request() have an unbounded exponential backoff? Looking at the pcode_try_request() function called here: for (slept = 0; slept < timeout_us; slept += wait) { ... if (atomic) udelay(wait); else usleep_range(wait, wait << 1); wait <<= 1; } Because wait is doubled on every iteration without an upper limit, it exponentially grows. When called from xe_pcode_request() during a timeout retry with atomic = true and a 50,000us timeout, wait reaches 32,768us, resulting in a udelay(32768). Busy-waiting for over 32 milliseconds with preemption disabled can trigger CPU soft lockups. Similarly, when pcode_try_request() is called for operations with a 3-minute timeout (timeout_us = 180000000) during initialization in xe_pcode_ready(), the wait value grows to over 90 seconds. This causes a massive usleep_range(90000000, 180000000) that stalls the thread for minutes at a time without checking the hardware status, which could severely degrade driver probe times. [ ... ] -- Sashiko AI review · https://sashiko.dev/#/patchset/20260812123449.239480-5-mallesh.koujalagi@intel.com?part=2 ^ permalink raw reply [flat|nested] 12+ messages in thread
* RE: [PATCH v2 2/3] drm/xe/pcode: Improve PCODE logging using xe_log helper 2026-08-12 12:34 ` [PATCH v2 2/3] drm/xe/pcode: Improve PCODE logging using xe_log helper Mallesh Koujalagi 2026-08-12 12:44 ` sashiko-bot @ 2026-08-12 12:53 ` Bhadane, Dnyaneshwar 2026-08-12 13:10 ` Mallesh, Koujalagi 2026-08-12 18:02 ` Umesh Nerlige Ramappa 2 siblings, 1 reply; 12+ messages in thread From: Bhadane, Dnyaneshwar @ 2026-08-12 12:53 UTC (permalink / raw) To: Koujalagi, Mallesh, intel-xe@lists.freedesktop.org, Vivi, Rodrigo, Brost, Matthew Cc: Gupta, Anshuman, Nilawar, Badal, Belgaumkar, Vinay, Tauro, Riana, Poosa, Karthik, Anirban, Sk, Jadav, Raag, Wajdeczko, Michal, aravind.iddamsetty@linux.intel.com, Nerlige Ramappa, Umesh, Kalvala, Haridhar > -----Original Message----- > From: Koujalagi, Mallesh <mallesh.koujalagi@intel.com> > Sent: Wednesday, August 12, 2026 6:05 PM > To: intel-xe@lists.freedesktop.org; Vivi, Rodrigo <rodrigo.vivi@intel.com>; Brost, > Matthew <matthew.brost@intel.com> > Cc: Gupta, Anshuman <anshuman.gupta@intel.com>; Nilawar, Badal > <badal.nilawar@intel.com>; Belgaumkar, Vinay <vinay.belgaumkar@intel.com>; > Tauro, Riana <riana.tauro@intel.com>; Poosa, Karthik > <karthik.poosa@intel.com>; Anirban, Sk <sk.anirban@intel.com>; Jadav, Raag > <raag.jadav@intel.com>; Wajdeczko, Michal <michal.wajdeczko@intel.com>; > aravind.iddamsetty@linux.intel.com; Nerlige Ramappa, Umesh > <umesh.nerlige.ramappa@intel.com>; Bhadane, Dnyaneshwar > <dnyaneshwar.bhadane@intel.com>; Koujalagi, Mallesh > <mallesh.koujalagi@intel.com> > Subject: [PATCH v2 2/3] drm/xe/pcode: Improve PCODE logging using xe_log > helper > > Use xe_log helper for PCODE errors instead of drm_err(). This adds PCODE > component tag, making issues easier to detect and track with automated tools. > > Signed-off-by: Mallesh Koujalagi <mallesh.koujalagi@intel.com> > --- > v2: > - s/pcode/PCODE. (Michal) > - Drop PCODE in xe_log_err. > --- > drivers/gpu/drm/xe/xe_pcode.c | 9 +++++---- > 1 file changed, 5 insertions(+), 4 deletions(-) > > diff --git a/drivers/gpu/drm/xe/xe_pcode.c b/drivers/gpu/drm/xe/xe_pcode.c > index ccc3bdeed6bb..c69440ea477b 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" > @@ -219,8 +220,8 @@ int xe_pcode_request(struct xe_tile *tile, u32 mbox, u32 > request, > * requests, and for any quirks of the PCODE firmware that delays > * the request completion. > */ > - drm_err(&tile_to_xe(tile)->drm, > - "PCODE timeout, retrying with preemption disabled\n"); > + xe_log_err(tile, PCODE, -ETIMEDOUT, > + "Timeout, retrying with preemption disabled\n"); > preempt_disable(); > ret = pcode_try_request(tile, mbox, request, reply_mask, reply, &status, > true, 50 * 1000, true); > @@ -320,8 +321,8 @@ int xe_pcode_ready(struct xe_device *xe, bool locked) > mutex_unlock(&tile->pcode.lock); > > if (ret) > - drm_err(&xe->drm, > - "PCODE initialization timedout after: 3 min\n"); > + xe_log_err(xe, PCODE, ret, > + "Initialization timedout after: 3 min\n"); > > return ret; > } Hello Mallesh, This is one more place inside of the pcode_mailbox_status(). Could you please include that as well to this patch ? Dnyaneshwar > -- > 2.48.1 ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v2 2/3] drm/xe/pcode: Improve PCODE logging using xe_log helper 2026-08-12 12:53 ` Bhadane, Dnyaneshwar @ 2026-08-12 13:10 ` Mallesh, Koujalagi 0 siblings, 0 replies; 12+ messages in thread From: Mallesh, Koujalagi @ 2026-08-12 13:10 UTC (permalink / raw) To: Bhadane, Dnyaneshwar, intel-xe@lists.freedesktop.org, Vivi, Rodrigo, Brost, Matthew Cc: Gupta, Anshuman, Nilawar, Badal, Belgaumkar, Vinay, Tauro, Riana, Poosa, Karthik, Anirban, Sk, Jadav, Raag, Wajdeczko, Michal, aravind.iddamsetty@linux.intel.com, Nerlige Ramappa, Umesh, Kalvala, Haridhar On 12-08-2026 06:23 pm, Bhadane, Dnyaneshwar wrote: > >> -----Original Message----- >> From: Koujalagi, Mallesh <mallesh.koujalagi@intel.com> >> Sent: Wednesday, August 12, 2026 6:05 PM >> To: intel-xe@lists.freedesktop.org; Vivi, Rodrigo <rodrigo.vivi@intel.com>; Brost, >> Matthew <matthew.brost@intel.com> >> Cc: Gupta, Anshuman <anshuman.gupta@intel.com>; Nilawar, Badal >> <badal.nilawar@intel.com>; Belgaumkar, Vinay <vinay.belgaumkar@intel.com>; >> Tauro, Riana <riana.tauro@intel.com>; Poosa, Karthik >> <karthik.poosa@intel.com>; Anirban, Sk <sk.anirban@intel.com>; Jadav, Raag >> <raag.jadav@intel.com>; Wajdeczko, Michal <michal.wajdeczko@intel.com>; >> aravind.iddamsetty@linux.intel.com; Nerlige Ramappa, Umesh >> <umesh.nerlige.ramappa@intel.com>; Bhadane, Dnyaneshwar >> <dnyaneshwar.bhadane@intel.com>; Koujalagi, Mallesh >> <mallesh.koujalagi@intel.com> >> Subject: [PATCH v2 2/3] drm/xe/pcode: Improve PCODE logging using xe_log >> helper >> >> Use xe_log helper for PCODE errors instead of drm_err(). This adds PCODE >> component tag, making issues easier to detect and track with automated tools. >> >> Signed-off-by: Mallesh Koujalagi <mallesh.koujalagi@intel.com> >> --- >> v2: >> - s/pcode/PCODE. (Michal) >> - Drop PCODE in xe_log_err. >> --- >> drivers/gpu/drm/xe/xe_pcode.c | 9 +++++---- >> 1 file changed, 5 insertions(+), 4 deletions(-) >> >> diff --git a/drivers/gpu/drm/xe/xe_pcode.c b/drivers/gpu/drm/xe/xe_pcode.c >> index ccc3bdeed6bb..c69440ea477b 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" >> @@ -219,8 +220,8 @@ int xe_pcode_request(struct xe_tile *tile, u32 mbox, u32 >> request, >> * requests, and for any quirks of the PCODE firmware that delays >> * the request completion. >> */ >> - drm_err(&tile_to_xe(tile)->drm, >> - "PCODE timeout, retrying with preemption disabled\n"); >> + xe_log_err(tile, PCODE, -ETIMEDOUT, >> + "Timeout, retrying with preemption disabled\n"); >> preempt_disable(); >> ret = pcode_try_request(tile, mbox, request, reply_mask, reply, &status, >> true, 50 * 1000, true); >> @@ -320,8 +321,8 @@ int xe_pcode_ready(struct xe_device *xe, bool locked) >> mutex_unlock(&tile->pcode.lock); >> >> if (ret) >> - drm_err(&xe->drm, >> - "PCODE initialization timedout after: 3 min\n"); >> + xe_log_err(xe, PCODE, ret, >> + "Initialization timedout after: 3 min\n"); >> >> return ret; >> } > Hello Mallesh, > This is one more place inside of the pcode_mailbox_status(). > Could you please include that as well to this patch ? That already covered in SIGID the patch series: https://patchwork.freedesktop.org/patch/743325/?series=171022&rev=3 Thanks, -/Mallesh > Dnyaneshwar > >> -- >> 2.48.1 ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v2 2/3] drm/xe/pcode: Improve PCODE logging using xe_log helper 2026-08-12 12:34 ` [PATCH v2 2/3] drm/xe/pcode: Improve PCODE logging using xe_log helper Mallesh Koujalagi 2026-08-12 12:44 ` sashiko-bot 2026-08-12 12:53 ` Bhadane, Dnyaneshwar @ 2026-08-12 18:02 ` Umesh Nerlige Ramappa 2 siblings, 0 replies; 12+ messages in thread From: Umesh Nerlige Ramappa @ 2026-08-12 18:02 UTC (permalink / raw) To: Mallesh Koujalagi Cc: intel-xe, rodrigo.vivi, matthew.brost, anshuman.gupta, badal.nilawar, vinay.belgaumkar, riana.tauro, karthik.poosa, sk.anirban, raag.jadav, michal.wajdeczko, aravind.iddamsetty, dnyaneshwar.bhadane On Wed, Aug 12, 2026 at 06:04:52PM +0530, Mallesh Koujalagi wrote: >Use xe_log helper for PCODE errors instead of drm_err(). This >adds PCODE component tag, making issues easier to detect and >track with automated tools. > >Signed-off-by: Mallesh Koujalagi <mallesh.koujalagi@intel.com> >--- >v2: >- s/pcode/PCODE. (Michal) >- Drop PCODE in xe_log_err. >--- > drivers/gpu/drm/xe/xe_pcode.c | 9 +++++---- > 1 file changed, 5 insertions(+), 4 deletions(-) > >diff --git a/drivers/gpu/drm/xe/xe_pcode.c b/drivers/gpu/drm/xe/xe_pcode.c >index ccc3bdeed6bb..c69440ea477b 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" >@@ -219,8 +220,8 @@ int xe_pcode_request(struct xe_tile *tile, u32 mbox, u32 request, > * requests, and for any quirks of the PCODE firmware that delays > * the request completion. > */ >- drm_err(&tile_to_xe(tile)->drm, >- "PCODE timeout, retrying with preemption disabled\n"); >+ xe_log_err(tile, PCODE, -ETIMEDOUT, >+ "Timeout, retrying with preemption disabled\n"); > preempt_disable(); > ret = pcode_try_request(tile, mbox, request, reply_mask, reply, &status, > true, 50 * 1000, true); After this code does a retry, there can still be a failure which the current code does not log. I think we should use an xe_log_err after the retry fails rather than the above. Here's what I mean: https://patchwork.freedesktop.org/patch/745830/?series=172039&rev=1 Thanks, Umesh >@@ -320,8 +321,8 @@ int xe_pcode_ready(struct xe_device *xe, bool locked) > mutex_unlock(&tile->pcode.lock); > > if (ret) >- drm_err(&xe->drm, >- "PCODE initialization timedout after: 3 min\n"); >+ xe_log_err(xe, PCODE, ret, >+ "Initialization timedout after: 3 min\n"); > > return ret; > } >-- >2.48.1 > ^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH v2 3/3] drm/xe/sysctrl: Add better sysctrl error reporting 2026-08-12 12:34 [PATCH v2 0/3] drm/xe: Adopt xe_log SIGID API for structured error reporting Mallesh Koujalagi 2026-08-12 12:34 ` [PATCH v2 1/3] drm/xe/log: DO NOT REVIEW Mallesh Koujalagi 2026-08-12 12:34 ` [PATCH v2 2/3] drm/xe/pcode: Improve PCODE logging using xe_log helper Mallesh Koujalagi @ 2026-08-12 12:34 ` Mallesh Koujalagi 2026-08-12 12:41 ` ✗ CI.checkpatch: warning for drm/xe: Adopt xe_log SIGID API for structured error reporting (rev2) Patchwork ` (2 subsequent siblings) 5 siblings, 0 replies; 12+ messages in thread From: Mallesh Koujalagi @ 2026-08-12 12:34 UTC (permalink / raw) To: intel-xe, rodrigo.vivi, matthew.brost Cc: anshuman.gupta, badal.nilawar, vinay.belgaumkar, riana.tauro, karthik.poosa, sk.anirban, raag.jadav, michal.wajdeczko, aravind.iddamsetty, umesh.nerlige.ramappa, dnyaneshwar.bhadane, Mallesh Koujalagi Switch sysctrl error messages to xe_log_err() with SYSCTRL tags so tools can reliably detect and categorize common sysctrl failures. Signed-off-by: Mallesh Koujalagi <mallesh.koujalagi@intel.com> --- v2: - Use -EOVERFLOW. - Drop sysctrl in xe_log_err. (Michal) - Drop redundant %pe. - Print response->count. --- drivers/gpu/drm/xe/xe_sysctrl_event.c | 12 ++++++---- drivers/gpu/drm/xe/xe_sysctrl_mailbox.c | 29 ++++++++++++++++--------- 2 files changed, 27 insertions(+), 14 deletions(-) diff --git a/drivers/gpu/drm/xe/xe_sysctrl_event.c b/drivers/gpu/drm/xe/xe_sysctrl_event.c index da395148ee9d..4341ea99cdc3 100644 --- a/drivers/gpu/drm/xe/xe_sysctrl_event.c +++ b/drivers/gpu/drm/xe/xe_sysctrl_event.c @@ -5,6 +5,7 @@ #include "xe_device.h" #include "xe_irq.h" +#include "xe_log.h" #include "xe_printk.h" #include "xe_ras.h" #include "xe_sysctrl.h" @@ -25,13 +26,15 @@ static void get_pending_event(struct xe_sysctrl *sc, struct xe_sysctrl_mailbox_c ret = xe_sysctrl_send_command(sc, command, &len); if (ret) { - xe_err(xe, "sysctrl: failed to get pending event %d\n", ret); + xe_log_err(xe, SYSCTRL, ret, + "failed to get pending event\n"); return; } if (len != sizeof(*response)) { - xe_err(xe, "sysctrl: unexpected event response length %zu (expected %zu)\n", - len, sizeof(*response)); + xe_log_err(xe, SYSCTRL, -EMSGSIZE, + "unexpected event response length %zu (expected %zu)\n", + len, sizeof(*response)); return; } @@ -41,7 +44,8 @@ static void get_pending_event(struct xe_sysctrl *sc, struct xe_sysctrl_mailbox_c xe_warn(xe, "sysctrl: unexpected event %#x\n", response->event); if (!--count) { - xe_err(xe, "sysctrl: event flooding\n"); + xe_log_err(xe, SYSCTRL, -EOVERFLOW, + "event flooding: %u\n", response->count); return; } diff --git a/drivers/gpu/drm/xe/xe_sysctrl_mailbox.c b/drivers/gpu/drm/xe/xe_sysctrl_mailbox.c index e13eebaac1d0..a96ef2864526 100644 --- a/drivers/gpu/drm/xe/xe_sysctrl_mailbox.c +++ b/drivers/gpu/drm/xe/xe_sysctrl_mailbox.c @@ -11,6 +11,7 @@ #include "regs/xe_sysctrl_regs.h" #include "xe_device.h" +#include "xe_log.h" #include "xe_mmio.h" #include "xe_pm.h" #include "xe_printk.h" @@ -115,7 +116,8 @@ static int sysctrl_prepare_command(struct xe_device *xe, xe_assert(xe, command <= SYSCTRL_HDR_COMMAND_MAX); if (data_in_len > XE_SYSCTRL_MB_MAX_MESSAGE_SIZE - sizeof(*hdr)) { - xe_err(xe, "sysctrl: Input data too large: %zu bytes\n", data_in_len); + xe_log_err(xe, SYSCTRL, -EINVAL, + "Input data too large: %zu bytes\n", data_in_len); return -EINVAL; } @@ -149,7 +151,7 @@ static int sysctrl_send_frames(struct xe_sysctrl *sc, total_frames = DIV_ROUND_UP(cmd_size, XE_SYSCTRL_MB_FRAME_SIZE); if (!sysctrl_wait_bit_clear(sc, SYSCTRL_MB_CTRL_RUN_BUSY, timeout_ms)) { - xe_err(xe, "sysctrl: Mailbox busy\n"); + xe_log_err(xe, SYSCTRL, -EBUSY, "Mailbox busy\n"); return -EBUSY; } @@ -160,7 +162,8 @@ static int sysctrl_send_frames(struct xe_sysctrl *sc, frame_size = min_t(size_t, cmd_size - bytes_sent, XE_SYSCTRL_MB_FRAME_SIZE); if (sysctrl_write_frame(sc, mbox_cmd + bytes_sent, frame_size)) { - xe_err(xe, "sysctrl: Failed to write frame %u\n", frame); + xe_log_err(xe, SYSCTRL, -EIO, + "Failed to write frame %u\n", frame); sc->phase_bit = 0; return -EIO; } @@ -174,7 +177,8 @@ static int sysctrl_send_frames(struct xe_sysctrl *sc, xe_mmio_write32(sc->mmio, SYSCTRL_MB_CTRL, ctrl_reg); if (!sysctrl_wait_bit_clear(sc, SYSCTRL_MB_CTRL_RUN_BUSY, timeout_ms)) { - xe_err(xe, "sysctrl: Frame %u acknowledgment timeout\n", frame); + xe_log_err(xe, SYSCTRL, -ETIMEDOUT, + "Frame %u acknowledgment timeout\n", frame); sc->phase_bit = 0; return -ETIMEDOUT; } @@ -194,7 +198,8 @@ static int sysctrl_process_frame(struct xe_sysctrl *sc, void *out, int ret; if (!sysctrl_wait_bit_set(sc, SYSCTRL_MB_CTRL_RUN_BUSY_OUT, timeout_ms)) { - xe_err(xe, "sysctrl: Response frame timeout\n"); + xe_log_err(xe, SYSCTRL, -ETIMEDOUT, + "Response frame timeout\n"); return -ETIMEDOUT; } @@ -249,13 +254,15 @@ static int sysctrl_receive_frames(struct xe_sysctrl *sc, if (!XE_SYSCTRL_HDR_IS_RESPONSE(hdr) || XE_SYSCTRL_HDR_GROUP_ID(hdr) != XE_SYSCTRL_HDR_GROUP_ID(req) || XE_SYSCTRL_HDR_COMMAND(hdr) != XE_SYSCTRL_HDR_COMMAND(req)) { - xe_err(xe, "sysctrl: Response header mismatch\n"); + xe_log_err(xe, SYSCTRL, -EPROTO, + "Response header mismatch\n"); return -EPROTO; } if (XE_SYSCTRL_HDR_RESULT(hdr) != 0) { - xe_err(xe, "sysctrl: Firmware error: 0x%02lx\n", - XE_SYSCTRL_HDR_RESULT(hdr)); + xe_log_err(xe, SYSCTRL, -EIO, + "Firmware error: 0x%02lx\n", + XE_SYSCTRL_HDR_RESULT(hdr)); return -EIO; } @@ -381,7 +388,8 @@ int xe_sysctrl_send_command(struct xe_sysctrl *sc, cmd->data_in, cmd->data_in_len, &mbox_cmd, &cmd_size); if (ret) { - xe_err(xe, "sysctrl: Failed to prepare command: %pe\n", ERR_PTR(ret)); + xe_log_err(xe, SYSCTRL, ret, + "Failed to prepare command\n"); return ret; } @@ -391,7 +399,8 @@ int xe_sysctrl_send_command(struct xe_sysctrl *sc, cmd->data_out, cmd->data_out_len, rdata_len, XE_SYSCTRL_MB_DEFAULT_TIMEOUT_MS); if (ret) - xe_err(xe, "sysctrl: Mailbox command failed: %pe\n", ERR_PTR(ret)); + xe_log_err(xe, SYSCTRL, ret, + "Mailbox command failed\n"); kfree(mbox_cmd); -- 2.48.1 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* ✗ CI.checkpatch: warning for drm/xe: Adopt xe_log SIGID API for structured error reporting (rev2) 2026-08-12 12:34 [PATCH v2 0/3] drm/xe: Adopt xe_log SIGID API for structured error reporting Mallesh Koujalagi ` (2 preceding siblings ...) 2026-08-12 12:34 ` [PATCH v2 3/3] drm/xe/sysctrl: Add better sysctrl error reporting Mallesh Koujalagi @ 2026-08-12 12:41 ` Patchwork 2026-08-12 12:42 ` ✓ CI.KUnit: success " Patchwork 2026-08-12 13:31 ` ✓ Xe.CI.BAT: " Patchwork 5 siblings, 0 replies; 12+ messages in thread From: Patchwork @ 2026-08-12 12:41 UTC (permalink / raw) To: Mallesh Koujalagi; +Cc: intel-xe == Series Details == Series: drm/xe: Adopt xe_log SIGID API for structured error reporting (rev2) URL : https://patchwork.freedesktop.org/series/171725/ 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 53e3f42cf0df0811616dda3cf7be69239053374c Author: Mallesh Koujalagi <mallesh.koujalagi@intel.com> Date: Wed Aug 12 18:04:53 2026 +0530 drm/xe/sysctrl: Add better sysctrl error reporting Switch sysctrl error messages to xe_log_err() with SYSCTRL tags so tools can reliably detect and categorize common sysctrl failures. Signed-off-by: Mallesh Koujalagi <mallesh.koujalagi@intel.com> + /mt/dim checkpatch 96ddbb14986632af742523e68f90d51c138c57f0 drm-intel 5ff36d54c65d drm/xe/log: DO NOT REVIEW -:25: WARNING:FILE_PATH_CHANGES: added, moved or deleted file(s), does MAINTAINERS need updating? #25: new file mode 100644 -:192: ERROR:COMPLEX_MACRO: Macros with complex values should be enclosed in parentheses #192: FILE: drivers/gpu/drm/xe/abi/xe_log_abi.h:131: +#define DEFINE_XE_LOG_COMPONENTS(define) \ + DEFINE_XE_LOG_SOFTWARE_COMPONENTS(define) \ + DEFINE_XE_LOG_HARDWARE_COMPONENTS(define) 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: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'define' - possible side-effects? #192: FILE: drivers/gpu/drm/xe/abi/xe_log_abi.h:131: +#define DEFINE_XE_LOG_COMPONENTS(define) \ + DEFINE_XE_LOG_SOFTWARE_COMPONENTS(define) \ + DEFINE_XE_LOG_HARDWARE_COMPONENTS(define) -:196: ERROR:COMPLEX_MACRO: Macros with complex values should be enclosed in parentheses #196: FILE: drivers/gpu/drm/xe/abi/xe_log_abi.h:135: +#define DEFINE_XE_LOG_SOFTWARE_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") \ + 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. -:196: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'define' - possible side-effects? #196: FILE: drivers/gpu/drm/xe/abi/xe_log_abi.h:135: +#define DEFINE_XE_LOG_SOFTWARE_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") \ + -:225: ERROR:COMPLEX_MACRO: Macros with complex values should be enclosed in parentheses #225: FILE: drivers/gpu/drm/xe/abi/xe_log_abi.h:164: +#define DEFINE_XE_LOG_HARDWARE_COMPONENTS(define) \ + define(HARDWARE, 1, DEVMEM, DEVICE_MEMORY, "Device Memory") \ + define(HARDWARE, 2, HWCORE, CORE_COMPUTE, "Core Compute") \ + /* HARDWARE, 3, RESERVED */ \ + define(HARDWARE, 4, PCIE, PCIE, "PCIe Interface") \ + define(HARDWARE, 5, FABRIC, FABRIC, "Fabric") \ + define(HARDWARE, 6, 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. -:225: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'define' - possible side-effects? #225: FILE: drivers/gpu/drm/xe/abi/xe_log_abi.h:164: +#define DEFINE_XE_LOG_HARDWARE_COMPONENTS(define) \ + define(HARDWARE, 1, DEVMEM, DEVICE_MEMORY, "Device Memory") \ + define(HARDWARE, 2, HWCORE, CORE_COMPUTE, "Core Compute") \ + /* HARDWARE, 3, RESERVED */ \ + define(HARDWARE, 4, PCIE, PCIE, "PCIe Interface") \ + define(HARDWARE, 5, FABRIC, FABRIC, "Fabric") \ + define(HARDWARE, 6, SOC, SOC_INTERNAL, "SoC Internal") \ + /* eod */ -:239: ERROR:COMPLEX_MACRO: Macros with complex values should be enclosed in parentheses #239: FILE: drivers/gpu/drm/xe/abi/xe_log_abi.h:178: +#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. -:239: WARNING:MACRO_ARG_UNUSED: Argument '_SIG' is not used in function-like macro #239: FILE: drivers/gpu/drm/xe/abi/xe_log_abi.h:178: +#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 */ -:239: WARNING:MACRO_ARG_UNUSED: Argument '_NAME' is not used in function-like macro #239: FILE: drivers/gpu/drm/xe/abi/xe_log_abi.h:178: +#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 */ -:252: ERROR:COMPLEX_MACRO: Macros with complex values should be enclosed in parentheses #252: FILE: drivers/gpu/drm/xe/abi/xe_log_abi.h:191: +#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. -:252: WARNING:MACRO_ARG_UNUSED: Argument '_CLASS' is not used in function-like macro #252: FILE: drivers/gpu/drm/xe/abi/xe_log_abi.h:191: +#define MAKE_XE_LOG_COMPONENT_SIGID(_CLASS, _ID, _TAG, _SIG, _NAME) \ + XE_LOG_COMPONENT_##_TAG##_SIGID = XE_SIGID_##_SIG, \ + /* eod */ -:252: WARNING:MACRO_ARG_UNUSED: Argument '_ID' is not used in function-like macro #252: FILE: drivers/gpu/drm/xe/abi/xe_log_abi.h:191: +#define MAKE_XE_LOG_COMPONENT_SIGID(_CLASS, _ID, _TAG, _SIG, _NAME) \ + XE_LOG_COMPONENT_##_TAG##_SIGID = XE_SIGID_##_SIG, \ + /* eod */ -:252: WARNING:MACRO_ARG_UNUSED: Argument '_NAME' is not used in function-like macro #252: FILE: drivers/gpu/drm/xe/abi/xe_log_abi.h:191: +#define MAKE_XE_LOG_COMPONENT_SIGID(_CLASS, _ID, _TAG, _SIG, _NAME) \ + XE_LOG_COMPONENT_##_TAG##_SIGID = XE_SIGID_##_SIG, \ + /* eod */ -:477: ERROR:COMPLEX_MACRO: Macros with complex values should be enclosed in parentheses #477: FILE: drivers/gpu/drm/xe/xe_any.h:11: +#define __xe_any_to_self_assoc(type, any) \ + const type * : (any), \ + type * : (any) 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. -:477: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'any' - possible side-effects? #477: FILE: drivers/gpu/drm/xe/xe_any.h:11: +#define __xe_any_to_self_assoc(type, any) \ + const type * : (any), \ + type * : (any) -:488: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'any' - possible side-effects? #488: FILE: drivers/gpu/drm/xe/xe_any.h:22: +#define xe_any_if_type(any, type) \ + _Generic((any), \ + __xe_any_to_self_assoc(type, (any)), \ + default : \ + NULL) -:526: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'const' - possible side-effects? #526: FILE: drivers/gpu/drm/xe/xe_any.h:60: +#define __xe_any_to_other_assoc(const, from, other, p) \ + const struct from * : __##from##_to_##other((const struct from *)(p)) -:526: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'from' - possible side-effects? #526: FILE: drivers/gpu/drm/xe/xe_any.h:60: +#define __xe_any_to_other_assoc(const, from, other, p) \ + const struct from * : __##from##_to_##other((const struct from *)(p)) -:526: CHECK:MACRO_ARG_PRECEDENCE: Macro argument 'from' may be better as '(from)' to avoid precedence issues #526: FILE: drivers/gpu/drm/xe/xe_any.h:60: +#define __xe_any_to_other_assoc(const, from, other, p) \ + const struct from * : __##from##_to_##other((const struct from *)(p)) -:542: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'any' - possible side-effects? #542: FILE: drivers/gpu/drm/xe/xe_any.h:76: +#define xe_any_to_xe(any) \ + _Generic((any), \ + __xe_any_to_self_assoc(struct xe_device, (any)), \ + __xe_any_to_other_assoc(/* */, xe_tile, xe_device, (any)), \ + __xe_any_to_other_assoc(const, xe_tile, xe_device, (any)), \ + __xe_any_to_other_assoc(/* */, xe_gt, xe_device, (any)), \ + __xe_any_to_other_assoc(const, xe_gt, xe_device, (any)), \ + __xe_any_to_other_assoc(, drm_device, xe_device, (any)), \ + __xe_any_to_other_assoc(, pci_dev, xe_device, (any)), \ + __xe_any_to_other_assoc(, device, xe_device, (any))) -:559: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'any' - possible side-effects? #559: FILE: drivers/gpu/drm/xe/xe_any.h:93: +#define xe_any_to_drm(any) \ + _Generic((any), \ + __xe_any_to_self_assoc(struct drm_device, (any)), \ + default : \ + &xe_any_to_xe(any)->drm) -:571: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'any' - possible side-effects? #571: FILE: drivers/gpu/drm/xe/xe_any.h:105: +#define xe_any_to_dev(any) \ + _Generic((any), \ + __xe_any_to_self_assoc(struct device, (any)), \ + __xe_any_to_other_assoc(, pci_dev, device, (any)), \ + default : \ + xe_any_to_drm(any)->dev) -:584: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'any' - possible side-effects? #584: FILE: drivers/gpu/drm/xe/xe_any.h:118: +#define xe_any_to_pdev(any) \ + _Generic((any), \ + __xe_any_to_self_assoc(struct pci_dev, (any)), \ + default : \ + to_pci_dev(xe_any_to_dev(any))) -:599: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'any' - possible side-effects? #599: FILE: drivers/gpu/drm/xe/xe_any.h:133: +#define xe_any_id(any) \ + _Generic((any), \ + __xe_any_to_other_assoc(/* */, xe_tile, id, (any)), \ + __xe_any_to_other_assoc(const, xe_tile, id, (any)), \ + __xe_any_to_other_assoc(/* */, xe_gt, id, (any)), \ + __xe_any_to_other_assoc(const, xe_gt, id, (any)), \ + default : \ + 0) -:655: WARNING:MACRO_ARG_UNUSED: Argument '_CLASS' is not used in function-like macro #655: FILE: drivers/gpu/drm/xe/xe_log.c:41: +#define MAKE_XE_LOG_COMPONENT_CASE_PREFIX(_CLASS, _ID, _TAG, _SIG, _NAME) \ + case XE_LOG_COMPONENT_##_TAG: return /* _CLASS _ID _SIG _NAME */ #_TAG ": "; -:655: WARNING:MACRO_ARG_UNUSED: Argument '_ID' is not used in function-like macro #655: FILE: drivers/gpu/drm/xe/xe_log.c:41: +#define MAKE_XE_LOG_COMPONENT_CASE_PREFIX(_CLASS, _ID, _TAG, _SIG, _NAME) \ + case XE_LOG_COMPONENT_##_TAG: return /* _CLASS _ID _SIG _NAME */ #_TAG ": "; -:655: WARNING:MACRO_ARG_UNUSED: Argument '_SIG' is not used in function-like macro #655: FILE: drivers/gpu/drm/xe/xe_log.c:41: +#define MAKE_XE_LOG_COMPONENT_CASE_PREFIX(_CLASS, _ID, _TAG, _SIG, _NAME) \ + case XE_LOG_COMPONENT_##_TAG: return /* _CLASS _ID _SIG _NAME */ #_TAG ": "; -:655: WARNING:MACRO_ARG_UNUSED: Argument '_NAME' is not used in function-like macro #655: FILE: drivers/gpu/drm/xe/xe_log.c:41: +#define MAKE_XE_LOG_COMPONENT_CASE_PREFIX(_CLASS, _ID, _TAG, _SIG, _NAME) \ + case XE_LOG_COMPONENT_##_TAG: return /* _CLASS _ID _SIG _NAME */ #_TAG ": "; -:655: WARNING:TRAILING_SEMICOLON: macros should not use a trailing semicolon #655: FILE: drivers/gpu/drm/xe/xe_log.c:41: +#define MAKE_XE_LOG_COMPONENT_CASE_PREFIX(_CLASS, _ID, _TAG, _SIG, _NAME) \ + case XE_LOG_COMPONENT_##_TAG: return /* _CLASS _ID _SIG _NAME */ #_TAG ": "; -:891: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'any' - possible side-effects? #891: FILE: drivers/gpu/drm/xe/xe_log.h:50: +#define xe_log_location(any) \ + PREP_XE_LOG_LOCATION(xe_log_location_type(any), xe_any_id(any)) total: 6 errors, 11 warnings, 14 checks, 962 lines checked a58fa0bb2e99 drm/xe/pcode: Improve PCODE logging using xe_log helper 53e3f42cf0df drm/xe/sysctrl: Add better sysctrl error reporting ^ permalink raw reply [flat|nested] 12+ messages in thread
* ✓ CI.KUnit: success for drm/xe: Adopt xe_log SIGID API for structured error reporting (rev2) 2026-08-12 12:34 [PATCH v2 0/3] drm/xe: Adopt xe_log SIGID API for structured error reporting Mallesh Koujalagi ` (3 preceding siblings ...) 2026-08-12 12:41 ` ✗ CI.checkpatch: warning for drm/xe: Adopt xe_log SIGID API for structured error reporting (rev2) Patchwork @ 2026-08-12 12:42 ` Patchwork 2026-08-12 13:31 ` ✓ Xe.CI.BAT: " Patchwork 5 siblings, 0 replies; 12+ messages in thread From: Patchwork @ 2026-08-12 12:42 UTC (permalink / raw) To: Mallesh Koujalagi; +Cc: intel-xe == Series Details == Series: drm/xe: Adopt xe_log SIGID API for structured error reporting (rev2) URL : https://patchwork.freedesktop.org/series/171725/ State : success == Summary == + trap cleanup EXIT + /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/xe/.kunitconfig [12:41:15] Configuring KUnit Kernel ... Generating .config ... Populating config with: $ make ARCH=um O=.kunit olddefconfig [12:41:19] 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 [12:41:51] Starting KUnit Kernel (1/1)... [12:41:51] ============================================================ Running tests with: $ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt [12:41:51] ================== guc_buf (11 subtests) =================== [12:41:51] [PASSED] test_smallest [12:41:51] [PASSED] test_largest [12:41:51] [PASSED] test_granular [12:41:51] [PASSED] test_unique [12:41:51] [PASSED] test_overlap [12:41:51] [PASSED] test_reusable [12:41:51] [PASSED] test_too_big [12:41:51] [PASSED] test_flush [12:41:51] [PASSED] test_lookup [12:41:51] [PASSED] test_data [12:41:51] [PASSED] test_class [12:41:51] ===================== [PASSED] guc_buf ===================== [12:41:51] =================== guc_dbm (7 subtests) =================== [12:41:51] [PASSED] test_empty [12:41:51] [PASSED] test_default [12:41:51] ======================== test_size ======================== [12:41:51] [PASSED] 4 [12:41:51] [PASSED] 8 [12:41:51] [PASSED] 32 [12:41:51] [PASSED] 256 [12:41:51] ==================== [PASSED] test_size ==================== [12:41:51] ======================= test_reuse ======================== [12:41:51] [PASSED] 4 [12:41:51] [PASSED] 8 [12:41:51] [PASSED] 32 [12:41:51] [PASSED] 256 [12:41:51] =================== [PASSED] test_reuse ==================== [12:41:51] =================== test_range_overlap ==================== [12:41:51] [PASSED] 4 [12:41:51] [PASSED] 8 [12:41:51] [PASSED] 32 [12:41:51] [PASSED] 256 [12:41:51] =============== [PASSED] test_range_overlap ================ [12:41:51] =================== test_range_compact ==================== [12:41:51] [PASSED] 4 [12:41:51] [PASSED] 8 [12:41:51] [PASSED] 32 [12:41:51] [PASSED] 256 [12:41:51] =============== [PASSED] test_range_compact ================ [12:41:51] ==================== test_range_spare ===================== [12:41:51] [PASSED] 4 [12:41:51] [PASSED] 8 [12:41:51] [PASSED] 32 [12:41:51] [PASSED] 256 [12:41:51] ================ [PASSED] test_range_spare ================= [12:41:51] ===================== [PASSED] guc_dbm ===================== [12:41:51] =================== guc_idm (6 subtests) =================== [12:41:51] [PASSED] bad_init [12:41:51] [PASSED] no_init [12:41:51] [PASSED] init_fini [12:41:51] [PASSED] check_used [12:41:51] [PASSED] check_quota [12:41:51] [PASSED] check_all [12:41:51] ===================== [PASSED] guc_idm ===================== [12:41:51] =============== guc_klv_helpers (9 subtests) =============== [12:41:51] [PASSED] test_count [12:41:51] [PASSED] test_encode_u32 [12:41:51] [PASSED] test_encode_u64 [12:41:51] [PASSED] test_encode_string [12:41:51] [PASSED] test_encode_object_raw [12:41:51] [PASSED] test_encode_object_klv [12:41:51] [PASSED] test_encode_object_nested [12:41:51] [PASSED] test_encode_object_basic [12:41:51] [PASSED] test_print [12:41:51] ================= [PASSED] guc_klv_helpers ================= [12:41:51] ================== no_relay (3 subtests) =================== [12:41:51] [PASSED] xe_drops_guc2pf_if_not_ready [12:41:51] [PASSED] xe_drops_guc2vf_if_not_ready [12:41:51] [PASSED] xe_rejects_send_if_not_ready [12:41:51] ==================== [PASSED] no_relay ===================== [12:41:51] ================== pf_relay (14 subtests) ================== [12:41:51] [PASSED] pf_rejects_guc2pf_too_short [12:41:51] [PASSED] pf_rejects_guc2pf_too_long [12:41:51] [PASSED] pf_rejects_guc2pf_no_payload [12:41:51] [PASSED] pf_fails_no_payload [12:41:51] [PASSED] pf_fails_bad_origin [12:41:51] [PASSED] pf_fails_bad_type [12:41:51] [PASSED] pf_txn_reports_error [12:41:51] [PASSED] pf_txn_sends_pf2guc [12:41:51] [PASSED] pf_sends_pf2guc [12:41:51] [SKIPPED] pf_loopback_nop (requires CONFIG_DRM_XE_DEBUG_SRIOV) [12:41:51] [SKIPPED] pf_loopback_echo (requires CONFIG_DRM_XE_DEBUG_SRIOV) [12:41:51] [SKIPPED] pf_loopback_fail (requires CONFIG_DRM_XE_DEBUG_SRIOV) [12:41:51] [SKIPPED] pf_loopback_busy (requires CONFIG_DRM_XE_DEBUG_SRIOV) [12:41:51] [SKIPPED] pf_loopback_retry (requires CONFIG_DRM_XE_DEBUG_SRIOV) [12:41:51] ==================== [PASSED] pf_relay ===================== [12:41:51] ================== vf_relay (3 subtests) =================== [12:41:51] [PASSED] vf_rejects_guc2vf_too_short [12:41:51] [PASSED] vf_rejects_guc2vf_too_long [12:41:51] [PASSED] vf_rejects_guc2vf_no_payload [12:41:51] ==================== [PASSED] vf_relay ===================== [12:41:51] ================ pf_gt_config (9 subtests) ================= [12:41:51] [PASSED] fair_contexts_1vf [12:41:51] [PASSED] fair_doorbells_1vf [12:41:51] [PASSED] fair_ggtt_1vf [12:41:51] ====================== fair_vram_1vf ====================== [12:41:51] [PASSED] 3.50 GiB [12:41:51] [PASSED] 11.5 GiB [12:41:51] [PASSED] 15.5 GiB [12:41:51] [PASSED] 31.5 GiB [12:41:51] [PASSED] 63.5 GiB [12:41:51] [PASSED] 1.91 GiB [12:41:51] ================== [PASSED] fair_vram_1vf ================== [12:41:51] ================ fair_vram_1vf_admin_only ================= [12:41:51] [PASSED] 3.50 GiB [12:41:51] [PASSED] 11.5 GiB [12:41:51] [PASSED] 15.5 GiB [12:41:51] [PASSED] 31.5 GiB [12:41:51] [PASSED] 63.5 GiB [12:41:51] [PASSED] 1.91 GiB [12:41:51] ============ [PASSED] fair_vram_1vf_admin_only ============= [12:41:51] ====================== fair_contexts ====================== [12:41:51] [PASSED] 1 VF [12:41:51] [PASSED] 2 VFs [12:41:51] [PASSED] 3 VFs [12:41:51] [PASSED] 4 VFs [12:41:51] [PASSED] 5 VFs [12:41:51] [PASSED] 6 VFs [12:41:51] [PASSED] 7 VFs [12:41:51] [PASSED] 8 VFs [12:41:51] [PASSED] 9 VFs [12:41:51] [PASSED] 10 VFs [12:41:51] [PASSED] 11 VFs [12:41:51] [PASSED] 12 VFs [12:41:51] [PASSED] 13 VFs [12:41:51] [PASSED] 14 VFs [12:41:51] [PASSED] 15 VFs [12:41:51] [PASSED] 16 VFs [12:41:51] [PASSED] 17 VFs [12:41:51] [PASSED] 18 VFs [12:41:51] [PASSED] 19 VFs [12:41:51] [PASSED] 20 VFs [12:41:51] [PASSED] 21 VFs [12:41:51] [PASSED] 22 VFs [12:41:51] [PASSED] 23 VFs [12:41:51] [PASSED] 24 VFs [12:41:51] [PASSED] 25 VFs [12:41:51] [PASSED] 26 VFs [12:41:51] [PASSED] 27 VFs [12:41:51] [PASSED] 28 VFs [12:41:51] [PASSED] 29 VFs [12:41:51] [PASSED] 30 VFs [12:41:51] [PASSED] 31 VFs [12:41:51] [PASSED] 32 VFs [12:41:51] [PASSED] 33 VFs [12:41:51] [PASSED] 34 VFs [12:41:51] [PASSED] 35 VFs [12:41:51] [PASSED] 36 VFs [12:41:51] [PASSED] 37 VFs [12:41:51] [PASSED] 38 VFs [12:41:51] [PASSED] 39 VFs [12:41:51] [PASSED] 40 VFs [12:41:51] [PASSED] 41 VFs [12:41:51] [PASSED] 42 VFs [12:41:51] [PASSED] 43 VFs [12:41:51] [PASSED] 44 VFs [12:41:51] [PASSED] 45 VFs [12:41:51] [PASSED] 46 VFs [12:41:51] [PASSED] 47 VFs [12:41:51] [PASSED] 48 VFs [12:41:51] [PASSED] 49 VFs [12:41:51] [PASSED] 50 VFs [12:41:51] [PASSED] 51 VFs [12:41:51] [PASSED] 52 VFs [12:41:51] [PASSED] 53 VFs [12:41:51] [PASSED] 54 VFs [12:41:51] [PASSED] 55 VFs [12:41:51] [PASSED] 56 VFs [12:41:51] [PASSED] 57 VFs [12:41:51] [PASSED] 58 VFs [12:41:51] [PASSED] 59 VFs [12:41:51] [PASSED] 60 VFs [12:41:51] [PASSED] 61 VFs [12:41:51] [PASSED] 62 VFs [12:41:51] [PASSED] 63 VFs [12:41:51] ================== [PASSED] fair_contexts ================== [12:41:51] ===================== fair_doorbells ====================== [12:41:51] [PASSED] 1 VF [12:41:51] [PASSED] 2 VFs [12:41:51] [PASSED] 3 VFs [12:41:51] [PASSED] 4 VFs [12:41:51] [PASSED] 5 VFs [12:41:51] [PASSED] 6 VFs [12:41:51] [PASSED] 7 VFs [12:41:51] [PASSED] 8 VFs [12:41:51] [PASSED] 9 VFs [12:41:51] [PASSED] 10 VFs [12:41:51] [PASSED] 11 VFs [12:41:51] [PASSED] 12 VFs [12:41:51] [PASSED] 13 VFs [12:41:51] [PASSED] 14 VFs [12:41:51] [PASSED] 15 VFs [12:41:51] [PASSED] 16 VFs [12:41:51] [PASSED] 17 VFs [12:41:51] [PASSED] 18 VFs [12:41:51] [PASSED] 19 VFs [12:41:51] [PASSED] 20 VFs [12:41:51] [PASSED] 21 VFs [12:41:51] [PASSED] 22 VFs [12:41:51] [PASSED] 23 VFs [12:41:51] [PASSED] 24 VFs [12:41:51] [PASSED] 25 VFs [12:41:51] [PASSED] 26 VFs [12:41:51] [PASSED] 27 VFs [12:41:51] [PASSED] 28 VFs [12:41:51] [PASSED] 29 VFs [12:41:51] [PASSED] 30 VFs [12:41:51] [PASSED] 31 VFs [12:41:51] [PASSED] 32 VFs [12:41:51] [PASSED] 33 VFs [12:41:51] [PASSED] 34 VFs [12:41:51] [PASSED] 35 VFs [12:41:51] [PASSED] 36 VFs [12:41:51] [PASSED] 37 VFs [12:41:51] [PASSED] 38 VFs [12:41:51] [PASSED] 39 VFs [12:41:51] [PASSED] 40 VFs [12:41:51] [PASSED] 41 VFs [12:41:51] [PASSED] 42 VFs [12:41:51] [PASSED] 43 VFs [12:41:51] [PASSED] 44 VFs [12:41:51] [PASSED] 45 VFs [12:41:51] [PASSED] 46 VFs [12:41:51] [PASSED] 47 VFs [12:41:51] [PASSED] 48 VFs [12:41:51] [PASSED] 49 VFs [12:41:51] [PASSED] 50 VFs [12:41:51] [PASSED] 51 VFs [12:41:51] [PASSED] 52 VFs [12:41:51] [PASSED] 53 VFs [12:41:51] [PASSED] 54 VFs [12:41:51] [PASSED] 55 VFs [12:41:51] [PASSED] 56 VFs [12:41:51] [PASSED] 57 VFs [12:41:51] [PASSED] 58 VFs [12:41:51] [PASSED] 59 VFs [12:41:51] [PASSED] 60 VFs [12:41:51] [PASSED] 61 VFs [12:41:51] [PASSED] 62 VFs [12:41:51] [PASSED] 63 VFs [12:41:51] ================= [PASSED] fair_doorbells ================== [12:41:51] ======================== fair_ggtt ======================== [12:41:51] [PASSED] 1 VF [12:41:51] [PASSED] 2 VFs [12:41:51] [PASSED] 3 VFs [12:41:51] [PASSED] 4 VFs [12:41:51] [PASSED] 5 VFs [12:41:51] [PASSED] 6 VFs [12:41:51] [PASSED] 7 VFs [12:41:51] [PASSED] 8 VFs [12:41:51] [PASSED] 9 VFs [12:41:51] [PASSED] 10 VFs [12:41:51] [PASSED] 11 VFs [12:41:51] [PASSED] 12 VFs [12:41:51] [PASSED] 13 VFs [12:41:51] [PASSED] 14 VFs [12:41:51] [PASSED] 15 VFs [12:41:51] [PASSED] 16 VFs [12:41:51] [PASSED] 17 VFs [12:41:51] [PASSED] 18 VFs [12:41:51] [PASSED] 19 VFs [12:41:51] [PASSED] 20 VFs [12:41:51] [PASSED] 21 VFs [12:41:51] [PASSED] 22 VFs [12:41:51] [PASSED] 23 VFs [12:41:51] [PASSED] 24 VFs [12:41:51] [PASSED] 25 VFs [12:41:51] [PASSED] 26 VFs [12:41:51] [PASSED] 27 VFs [12:41:51] [PASSED] 28 VFs [12:41:51] [PASSED] 29 VFs [12:41:51] [PASSED] 30 VFs [12:41:51] [PASSED] 31 VFs [12:41:51] [PASSED] 32 VFs [12:41:51] [PASSED] 33 VFs [12:41:51] [PASSED] 34 VFs [12:41:51] [PASSED] 35 VFs [12:41:51] [PASSED] 36 VFs [12:41:51] [PASSED] 37 VFs [12:41:51] [PASSED] 38 VFs [12:41:51] [PASSED] 39 VFs [12:41:51] [PASSED] 40 VFs [12:41:51] [PASSED] 41 VFs [12:41:51] [PASSED] 42 VFs [12:41:51] [PASSED] 43 VFs [12:41:51] [PASSED] 44 VFs [12:41:51] [PASSED] 45 VFs [12:41:51] [PASSED] 46 VFs [12:41:51] [PASSED] 47 VFs [12:41:51] [PASSED] 48 VFs [12:41:51] [PASSED] 49 VFs [12:41:51] [PASSED] 50 VFs [12:41:51] [PASSED] 51 VFs [12:41:51] [PASSED] 52 VFs [12:41:51] [PASSED] 53 VFs [12:41:51] [PASSED] 54 VFs [12:41:51] [PASSED] 55 VFs [12:41:51] [PASSED] 56 VFs [12:41:51] [PASSED] 57 VFs [12:41:51] [PASSED] 58 VFs [12:41:51] [PASSED] 59 VFs [12:41:51] [PASSED] 60 VFs [12:41:51] [PASSED] 61 VFs [12:41:51] [PASSED] 62 VFs [12:41:51] [PASSED] 63 VFs [12:41:51] ==================== [PASSED] fair_ggtt ==================== [12:41:51] ======================== fair_vram ======================== [12:41:51] [PASSED] 1 VF [12:41:51] [PASSED] 2 VFs [12:41:51] [PASSED] 3 VFs [12:41:51] [PASSED] 4 VFs [12:41:51] [PASSED] 5 VFs [12:41:51] [PASSED] 6 VFs [12:41:51] [PASSED] 7 VFs [12:41:51] [PASSED] 8 VFs [12:41:51] [PASSED] 9 VFs [12:41:51] [PASSED] 10 VFs [12:41:51] [PASSED] 11 VFs [12:41:51] [PASSED] 12 VFs [12:41:51] [PASSED] 13 VFs [12:41:51] [PASSED] 14 VFs [12:41:51] [PASSED] 15 VFs [12:41:51] [PASSED] 16 VFs [12:41:51] [PASSED] 17 VFs [12:41:51] [PASSED] 18 VFs [12:41:51] [PASSED] 19 VFs [12:41:51] [PASSED] 20 VFs [12:41:51] [PASSED] 21 VFs [12:41:51] [PASSED] 22 VFs [12:41:51] [PASSED] 23 VFs [12:41:51] [PASSED] 24 VFs [12:41:51] [PASSED] 25 VFs [12:41:51] [PASSED] 26 VFs [12:41:51] [PASSED] 27 VFs [12:41:51] [PASSED] 28 VFs [12:41:51] [PASSED] 29 VFs [12:41:51] [PASSED] 30 VFs [12:41:51] [PASSED] 31 VFs [12:41:51] [PASSED] 32 VFs [12:41:51] [PASSED] 33 VFs [12:41:51] [PASSED] 34 VFs [12:41:51] [PASSED] 35 VFs [12:41:51] [PASSED] 36 VFs [12:41:51] [PASSED] 37 VFs [12:41:51] [PASSED] 38 VFs [12:41:51] [PASSED] 39 VFs [12:41:51] [PASSED] 40 VFs [12:41:51] [PASSED] 41 VFs [12:41:51] [PASSED] 42 VFs [12:41:51] [PASSED] 43 VFs [12:41:51] [PASSED] 44 VFs [12:41:51] [PASSED] 45 VFs [12:41:51] [PASSED] 46 VFs [12:41:51] [PASSED] 47 VFs [12:41:51] [PASSED] 48 VFs [12:41:51] [PASSED] 49 VFs [12:41:51] [PASSED] 50 VFs [12:41:51] [PASSED] 51 VFs [12:41:51] [PASSED] 52 VFs [12:41:51] [PASSED] 53 VFs [12:41:51] [PASSED] 54 VFs [12:41:51] [PASSED] 55 VFs [12:41:51] [PASSED] 56 VFs [12:41:51] [PASSED] 57 VFs [12:41:51] [PASSED] 58 VFs [12:41:51] [PASSED] 59 VFs [12:41:51] [PASSED] 60 VFs [12:41:51] [PASSED] 61 VFs [12:41:51] [PASSED] 62 VFs [12:41:51] [PASSED] 63 VFs [12:41:51] ==================== [PASSED] fair_vram ==================== [12:41:51] ================== [PASSED] pf_gt_config =================== [12:41:51] ===================== lmtt (1 subtest) ===================== [12:41:51] ======================== test_ops ========================= [12:41:51] [PASSED] 2-level [12:41:51] [PASSED] multi-level [12:41:51] ==================== [PASSED] test_ops ===================== [12:41:51] ====================== [PASSED] lmtt ======================= [12:41:51] ================= sriov_packet (1 subtest) ================= [12:41:51] [PASSED] test_descriptor_init [12:41:51] ================== [PASSED] sriov_packet =================== [12:41:51] ================= pf_service (11 subtests) ================= [12:41:51] [PASSED] pf_negotiate_any [12:41:51] [PASSED] pf_negotiate_base_match [12:41:51] [PASSED] pf_negotiate_base_newer [12:41:51] [PASSED] pf_negotiate_base_next [12:41:51] [SKIPPED] pf_negotiate_base_older (no older minor) [12:41:51] [PASSED] pf_negotiate_base_prev [12:41:51] [PASSED] pf_negotiate_latest_match [12:41:51] [PASSED] pf_negotiate_latest_newer [12:41:51] [PASSED] pf_negotiate_latest_next [12:41:51] [SKIPPED] pf_negotiate_latest_older (no older minor) [12:41:51] [SKIPPED] pf_negotiate_latest_prev (no prev major) [12:41:51] =================== [PASSED] pf_service ==================== [12:41:51] ================= xe_guc_g2g (2 subtests) ================== [12:41:51] ============== xe_live_guc_g2g_kunit_default ============== [12:41:51] ========= [SKIPPED] xe_live_guc_g2g_kunit_default ========== [12:41:51] ============== xe_live_guc_g2g_kunit_allmem =============== [12:41:51] ========== [SKIPPED] xe_live_guc_g2g_kunit_allmem ========== [12:41:51] =================== [SKIPPED] xe_guc_g2g =================== [12:41:51] =================== xe_mocs (2 subtests) =================== [12:41:51] ================ xe_live_mocs_kernel_kunit ================ [12:41:51] =========== [SKIPPED] xe_live_mocs_kernel_kunit ============ [12:41:51] ================ xe_live_mocs_reset_kunit ================= [12:41:51] ============ [SKIPPED] xe_live_mocs_reset_kunit ============ [12:41:51] ==================== [SKIPPED] xe_mocs ===================== [12:41:51] ================= xe_migrate (2 subtests) ================== [12:41:51] ================= xe_migrate_sanity_kunit ================= [12:41:51] ============ [SKIPPED] xe_migrate_sanity_kunit ============= [12:41:51] ================== xe_validate_ccs_kunit ================== [12:41:51] ============= [SKIPPED] xe_validate_ccs_kunit ============== [12:41:51] =================== [SKIPPED] xe_migrate =================== [12:41:51] ================== xe_dma_buf (1 subtest) ================== [12:41:51] ==================== xe_dma_buf_kunit ===================== [12:41:51] ================ [SKIPPED] xe_dma_buf_kunit ================ [12:41:51] =================== [SKIPPED] xe_dma_buf =================== [12:41:51] ================= xe_bo_shrink (1 subtest) ================= [12:41:51] =================== xe_bo_shrink_kunit ==================== [12:41:51] =============== [SKIPPED] xe_bo_shrink_kunit =============== [12:41:51] ================== [SKIPPED] xe_bo_shrink ================== [12:41:51] ==================== xe_bo (2 subtests) ==================== [12:41:51] ================== xe_ccs_migrate_kunit =================== [12:41:51] ============== [SKIPPED] xe_ccs_migrate_kunit ============== [12:41:51] ==================== xe_bo_evict_kunit ==================== [12:41:51] =============== [SKIPPED] xe_bo_evict_kunit ================ [12:41:51] ===================== [SKIPPED] xe_bo ====================== [12:41:51] ==================== args (13 subtests) ==================== [12:41:51] [PASSED] count_args_test [12:41:51] [PASSED] call_args_example [12:41:51] [PASSED] call_args_test [12:41:51] [PASSED] drop_first_arg_example [12:41:51] [PASSED] drop_first_arg_test [12:41:51] [PASSED] first_arg_example [12:41:51] [PASSED] first_arg_test [12:41:51] [PASSED] last_arg_example [12:41:51] [PASSED] last_arg_test [12:41:51] [PASSED] pick_arg_example [12:41:51] [PASSED] if_args_example [12:41:51] [PASSED] if_args_test [12:41:51] [PASSED] sep_comma_example [12:41:51] ====================== [PASSED] args ======================= [12:41:51] =================== xe_pci (3 subtests) ==================== [12:41:51] ==================== check_graphics_ip ==================== [12:41:51] [PASSED] 12.00 Xe_LP [12:41:51] [PASSED] 12.10 Xe_LP+ [12:41:51] [PASSED] 12.55 Xe_HPG [12:41:51] [PASSED] 12.60 Xe_HPC [12:41:51] [PASSED] 12.70 Xe_LPG [12:41:51] [PASSED] 12.71 Xe_LPG [12:41:51] [PASSED] 12.74 Xe_LPG+ [12:41:51] [PASSED] 20.01 Xe2_HPG [12:41:51] [PASSED] 20.02 Xe2_HPG [12:41:51] [PASSED] 20.04 Xe2_LPG [12:41:51] [PASSED] 30.00 Xe3_LPG [12:41:51] [PASSED] 30.01 Xe3_LPG [12:41:51] [PASSED] 30.03 Xe3_LPG [12:41:51] [PASSED] 30.04 Xe3_LPG [12:41:51] [PASSED] 30.05 Xe3_LPG [12:41:51] [PASSED] 35.10 Xe3p_LPG [12:41:51] [PASSED] 35.11 Xe3p_XPC [12:41:51] ================ [PASSED] check_graphics_ip ================ [12:41:51] ===================== check_media_ip ====================== [12:41:51] [PASSED] 12.00 Xe_M [12:41:51] [PASSED] 12.55 Xe_HPM [12:41:51] [PASSED] 13.00 Xe_LPM+ [12:41:51] [PASSED] 13.01 Xe2_HPM [12:41:51] [PASSED] 20.00 Xe2_LPM [12:41:51] [PASSED] 30.00 Xe3_LPM [12:41:51] [PASSED] 30.02 Xe3_LPM [12:41:51] [PASSED] 35.00 Xe3p_LPM [12:41:51] [PASSED] 35.03 Xe3p_HPM [12:41:51] ================= [PASSED] check_media_ip ================== [12:41:51] =================== check_platform_desc =================== [12:41:51] [PASSED] 0x9A60 (TIGERLAKE) [12:41:51] [PASSED] 0x9A68 (TIGERLAKE) [12:41:51] [PASSED] 0x9A70 (TIGERLAKE) [12:41:51] [PASSED] 0x9A40 (TIGERLAKE) [12:41:51] [PASSED] 0x9A49 (TIGERLAKE) [12:41:51] [PASSED] 0x9A59 (TIGERLAKE) [12:41:51] [PASSED] 0x9A78 (TIGERLAKE) [12:41:51] [PASSED] 0x9AC0 (TIGERLAKE) [12:41:51] [PASSED] 0x9AC9 (TIGERLAKE) [12:41:51] [PASSED] 0x9AD9 (TIGERLAKE) [12:41:51] [PASSED] 0x9AF8 (TIGERLAKE) [12:41:51] [PASSED] 0x4C80 (ROCKETLAKE) [12:41:51] [PASSED] 0x4C8A (ROCKETLAKE) [12:41:51] [PASSED] 0x4C8B (ROCKETLAKE) [12:41:51] [PASSED] 0x4C8C (ROCKETLAKE) [12:41:51] [PASSED] 0x4C90 (ROCKETLAKE) [12:41:51] [PASSED] 0x4C9A (ROCKETLAKE) [12:41:51] [PASSED] 0x4680 (ALDERLAKE_S) [12:41:51] [PASSED] 0x4682 (ALDERLAKE_S) [12:41:51] [PASSED] 0x4688 (ALDERLAKE_S) [12:41:51] [PASSED] 0x468A (ALDERLAKE_S) [12:41:51] [PASSED] 0x468B (ALDERLAKE_S) [12:41:51] [PASSED] 0x4690 (ALDERLAKE_S) [12:41:51] [PASSED] 0x4692 (ALDERLAKE_S) [12:41:51] [PASSED] 0x4693 (ALDERLAKE_S) [12:41:51] [PASSED] 0x46A0 (ALDERLAKE_P) [12:41:51] [PASSED] 0x46A1 (ALDERLAKE_P) [12:41:51] [PASSED] 0x46A2 (ALDERLAKE_P) [12:41:51] [PASSED] 0x46A3 (ALDERLAKE_P) [12:41:51] [PASSED] 0x46A6 (ALDERLAKE_P) [12:41:51] [PASSED] 0x46A8 (ALDERLAKE_P) [12:41:51] [PASSED] 0x46AA (ALDERLAKE_P) [12:41:51] [PASSED] 0x462A (ALDERLAKE_P) [12:41:51] [PASSED] 0x4626 (ALDERLAKE_P) [12:41:51] [PASSED] 0x4628 (ALDERLAKE_P) [12:41:51] [PASSED] 0x46B0 (ALDERLAKE_P) [12:41:51] [PASSED] 0x46B1 (ALDERLAKE_P) [12:41:51] [PASSED] 0x46B2 (ALDERLAKE_P) [12:41:51] [PASSED] 0x46B3 (ALDERLAKE_P) [12:41:51] [PASSED] 0x46C0 (ALDERLAKE_P) [12:41:51] [PASSED] 0x46C1 (ALDERLAKE_P) [12:41:51] [PASSED] 0x46C2 (ALDERLAKE_P) [12:41:51] [PASSED] 0x46C3 (ALDERLAKE_P) [12:41:51] [PASSED] 0x46D0 (ALDERLAKE_N) [12:41:51] [PASSED] 0x46D1 (ALDERLAKE_N) [12:41:51] [PASSED] 0x46D2 (ALDERLAKE_N) [12:41:51] [PASSED] 0x46D3 (ALDERLAKE_N) [12:41:51] [PASSED] 0x46D4 (ALDERLAKE_N) [12:41:51] [PASSED] 0xA721 (ALDERLAKE_P) [12:41:51] [PASSED] 0xA7A1 (ALDERLAKE_P) [12:41:51] [PASSED] 0xA7A9 (ALDERLAKE_P) [12:41:51] [PASSED] 0xA7AC (ALDERLAKE_P) [12:41:51] [PASSED] 0xA7AD (ALDERLAKE_P) [12:41:51] [PASSED] 0xA720 (ALDERLAKE_P) [12:41:51] [PASSED] 0xA7A0 (ALDERLAKE_P) [12:41:51] [PASSED] 0xA7A8 (ALDERLAKE_P) [12:41:51] [PASSED] 0xA7AA (ALDERLAKE_P) [12:41:51] [PASSED] 0xA7AB (ALDERLAKE_P) [12:41:51] [PASSED] 0xA780 (ALDERLAKE_S) [12:41:51] [PASSED] 0xA781 (ALDERLAKE_S) [12:41:51] [PASSED] 0xA782 (ALDERLAKE_S) [12:41:51] [PASSED] 0xA783 (ALDERLAKE_S) [12:41:51] [PASSED] 0xA788 (ALDERLAKE_S) [12:41:51] [PASSED] 0xA789 (ALDERLAKE_S) [12:41:51] [PASSED] 0xA78A (ALDERLAKE_S) [12:41:51] [PASSED] 0xA78B (ALDERLAKE_S) [12:41:51] [PASSED] 0x4905 (DG1) [12:41:51] [PASSED] 0x4906 (DG1) [12:41:51] [PASSED] 0x4907 (DG1) [12:41:51] [PASSED] 0x4908 (DG1) [12:41:51] [PASSED] 0x4909 (DG1) [12:41:51] [PASSED] 0x56C0 (DG2) [12:41:51] [PASSED] 0x56C2 (DG2) [12:41:51] [PASSED] 0x56C1 (DG2) [12:41:51] [PASSED] 0x7D51 (METEORLAKE) [12:41:51] [PASSED] 0x7DD1 (METEORLAKE) [12:41:51] [PASSED] 0x7D41 (METEORLAKE) [12:41:51] [PASSED] 0x7D67 (METEORLAKE) [12:41:51] [PASSED] 0xB640 (METEORLAKE) [12:41:51] [PASSED] 0x56A0 (DG2) [12:41:51] [PASSED] 0x56A1 (DG2) [12:41:51] [PASSED] 0x56A2 (DG2) [12:41:51] [PASSED] 0x56BE (DG2) [12:41:51] [PASSED] 0x56BF (DG2) [12:41:51] [PASSED] 0x5690 (DG2) [12:41:51] [PASSED] 0x5691 (DG2) [12:41:51] [PASSED] 0x5692 (DG2) [12:41:51] [PASSED] 0x56A5 (DG2) [12:41:51] [PASSED] 0x56A6 (DG2) [12:41:51] [PASSED] 0x56B0 (DG2) [12:41:51] [PASSED] 0x56B1 (DG2) [12:41:51] [PASSED] 0x56BA (DG2) [12:41:51] [PASSED] 0x56BB (DG2) [12:41:51] [PASSED] 0x56BC (DG2) [12:41:51] [PASSED] 0x56BD (DG2) [12:41:51] [PASSED] 0x5693 (DG2) [12:41:51] [PASSED] 0x5694 (DG2) [12:41:51] [PASSED] 0x5695 (DG2) [12:41:51] [PASSED] 0x56A3 (DG2) [12:41:51] [PASSED] 0x56A4 (DG2) [12:41:51] [PASSED] 0x56B2 (DG2) [12:41:51] [PASSED] 0x56B3 (DG2) [12:41:51] [PASSED] 0x5696 (DG2) [12:41:51] [PASSED] 0x5697 (DG2) [12:41:51] [PASSED] 0xB69 (PVC) [12:41:51] [PASSED] 0xB6E (PVC) [12:41:51] [PASSED] 0xBD4 (PVC) [12:41:51] [PASSED] 0xBD5 (PVC) [12:41:51] [PASSED] 0xBD6 (PVC) [12:41:51] [PASSED] 0xBD7 (PVC) [12:41:51] [PASSED] 0xBD8 (PVC) [12:41:51] [PASSED] 0xBD9 (PVC) [12:41:51] [PASSED] 0xBDA (PVC) [12:41:51] [PASSED] 0xBDB (PVC) [12:41:51] [PASSED] 0xBE0 (PVC) [12:41:51] [PASSED] 0xBE1 (PVC) [12:41:51] [PASSED] 0xBE5 (PVC) [12:41:51] [PASSED] 0x7D40 (METEORLAKE) [12:41:51] [PASSED] 0x7D45 (METEORLAKE) [12:41:51] [PASSED] 0x7D55 (METEORLAKE) [12:41:51] [PASSED] 0x7D60 (METEORLAKE) [12:41:51] [PASSED] 0x7DD5 (METEORLAKE) [12:41:51] [PASSED] 0x6420 (LUNARLAKE) [12:41:51] [PASSED] 0x64A0 (LUNARLAKE) [12:41:51] [PASSED] 0x64B0 (LUNARLAKE) [12:41:51] [PASSED] 0xE202 (BATTLEMAGE) [12:41:51] [PASSED] 0xE209 (BATTLEMAGE) [12:41:51] [PASSED] 0xE20B (BATTLEMAGE) [12:41:51] [PASSED] 0xE20C (BATTLEMAGE) [12:41:51] [PASSED] 0xE20D (BATTLEMAGE) [12:41:51] [PASSED] 0xE210 (BATTLEMAGE) [12:41:51] [PASSED] 0xE211 (BATTLEMAGE) [12:41:51] [PASSED] 0xE212 (BATTLEMAGE) [12:41:51] [PASSED] 0xE216 (BATTLEMAGE) [12:41:51] [PASSED] 0xE220 (BATTLEMAGE) [12:41:51] [PASSED] 0xE221 (BATTLEMAGE) [12:41:51] [PASSED] 0xE222 (BATTLEMAGE) [12:41:51] [PASSED] 0xE223 (BATTLEMAGE) [12:41:51] [PASSED] 0xB080 (PANTHERLAKE) [12:41:51] [PASSED] 0xB081 (PANTHERLAKE) [12:41:51] [PASSED] 0xB082 (PANTHERLAKE) [12:41:51] [PASSED] 0xB083 (PANTHERLAKE) [12:41:51] [PASSED] 0xB084 (PANTHERLAKE) [12:41:51] [PASSED] 0xB085 (PANTHERLAKE) [12:41:51] [PASSED] 0xB086 (PANTHERLAKE) [12:41:51] [PASSED] 0xB087 (PANTHERLAKE) [12:41:51] [PASSED] 0xB08F (PANTHERLAKE) [12:41:51] [PASSED] 0xB090 (PANTHERLAKE) [12:41:51] [PASSED] 0xB0A0 (PANTHERLAKE) [12:41:51] [PASSED] 0xB0B0 (PANTHERLAKE) [12:41:51] [PASSED] 0xFD80 (PANTHERLAKE) [12:41:51] [PASSED] 0xFD81 (PANTHERLAKE) [12:41:51] [PASSED] 0xD740 (NOVALAKE_S) [12:41:51] [PASSED] 0xD741 (NOVALAKE_S) [12:41:51] [PASSED] 0xD742 (NOVALAKE_S) [12:41:51] [PASSED] 0xD743 (NOVALAKE_S) [12:41:51] [PASSED] 0xD745 (NOVALAKE_S) [12:41:51] [PASSED] 0xD74A (NOVALAKE_S) [12:41:51] [PASSED] 0xD74B (NOVALAKE_S) [12:41:51] [PASSED] 0x674C (CRESCENTISLAND) [12:41:51] [PASSED] 0x674D (CRESCENTISLAND) [12:41:51] [PASSED] 0x674E (CRESCENTISLAND) [12:41:51] [PASSED] 0x674F (CRESCENTISLAND) [12:41:51] [PASSED] 0x6750 (CRESCENTISLAND) [12:41:51] [PASSED] 0xD750 (NOVALAKE_P) [12:41:51] [PASSED] 0xD751 (NOVALAKE_P) [12:41:51] [PASSED] 0xD752 (NOVALAKE_P) [12:41:51] [PASSED] 0xD753 (NOVALAKE_P) [12:41:51] [PASSED] 0xD754 (NOVALAKE_P) [12:41:51] [PASSED] 0xD755 (NOVALAKE_P) [12:41:51] [PASSED] 0xD756 (NOVALAKE_P) [12:41:51] [PASSED] 0xD757 (NOVALAKE_P) [12:41:51] [PASSED] 0xD75F (NOVALAKE_P) [12:41:51] =============== [PASSED] check_platform_desc =============== [12:41:51] ===================== [PASSED] xe_pci ====================== [12:41:51] ============= xe_rtp_tables_test (5 subtests) ============== [12:41:51] ================== xe_rtp_table_gt_test =================== [12:41:51] [PASSED] gt_was/14011060649 [12:41:51] [PASSED] gt_was/14011059788 [12:41:51] [PASSED] gt_was/14015795083 [12:41:51] [PASSED] gt_was/16021867713 [12:41:51] [PASSED] gt_was/14019449301 [12:41:51] [PASSED] gt_was/16028005424 [12:41:51] [PASSED] gt_was/14026578760 [12:41:51] [PASSED] gt_was/1409420604 [12:41:51] [PASSED] gt_was/1408615072 [12:41:51] [PASSED] gt_was/22010523718 [12:41:51] [PASSED] gt_was/14011006942 [12:41:51] [PASSED] gt_was/14014830051 [12:41:51] [PASSED] gt_was/18018781329 [12:41:51] [PASSED] gt_was/1509235366 [12:41:51] [PASSED] gt_was/18018781329 [12:41:51] [PASSED] gt_was/16016694945 [12:41:51] [PASSED] gt_was/14018575942 [12:41:51] [PASSED] gt_was/22016670082 [12:41:51] [PASSED] gt_was/22016670082 [12:41:51] [PASSED] gt_was/14017421178 [12:41:51] [PASSED] gt_was/16025250150 [12:41:51] [PASSED] gt_was/14021871409 [12:41:51] [PASSED] gt_was/16021865536 [12:41:51] [PASSED] gt_was/14021486841 [12:41:51] [PASSED] gt_was/14025160223 [12:41:51] [PASSED] gt_was/14026144927, 16029437861, 14026127056 [12:41:51] [PASSED] gt_was/14025635424 [12:41:51] [PASSED] gt_was/16028005424 [12:41:51] ============== [PASSED] xe_rtp_table_gt_test =============== [12:41:51] ================== xe_rtp_table_gt_test =================== [12:41:51] [PASSED] gt_tunings/Tuning: Blend Fill Caching Optimization Disable [12:41:51] [PASSED] gt_tunings/Tuning: 32B Access Enable [12:41:51] [PASSED] gt_tunings/Tuning: L3 cache [12:41:51] [PASSED] gt_tunings/Tuning: L3 cache - media [12:41:51] [PASSED] gt_tunings/Tuning: Compression Overfetch [12:41:51] [PASSED] gt_tunings/Tuning: Compression Overfetch - media [12:41:51] [PASSED] gt_tunings/Tuning: Enable compressible partial write overfetch in L3 [12:41:51] [PASSED] gt_tunings/Tuning: Enable compressible partial write overfetch in L3 - media [12:41:51] [PASSED] gt_tunings/Tuning: L2 Overfetch Compressible Only [12:41:51] [PASSED] gt_tunings/Tuning: L2 Overfetch Compressible Only - media [12:41:51] [PASSED] gt_tunings/Tuning: Stateless compression control [12:41:51] [PASSED] gt_tunings/Tuning: Stateless compression control - media [12:41:51] [PASSED] gt_tunings/Tuning: L3 RW flush all Cache [12:41:51] [PASSED] gt_tunings/Tuning: L3 RW flush all cache - media [12:41:51] [PASSED] gt_tunings/Tuning: Set STLB Bank Hash Mode to 4KB [12:41:51] ============== [PASSED] xe_rtp_table_gt_test =============== [12:41:51] ================== xe_rtp_table_oob_test ================== [12:41:51] [PASSED] oob_was/1607983814 [12:41:51] [PASSED] oob_was/16010904313 [12:41:51] [PASSED] oob_was/18022495364 [12:41:51] [PASSED] oob_was/22012773006 [12:41:51] [PASSED] oob_was/14014475959 [12:41:51] [PASSED] oob_was/22011391025 [12:41:51] [PASSED] oob_was/22012727170 [12:41:51] [PASSED] oob_was/22012727685 [12:41:51] [PASSED] oob_was/22016596838 [12:41:51] [PASSED] oob_was/18020744125 [12:41:51] [PASSED] oob_was/1409600907 [12:41:51] [PASSED] oob_was/22014953428 [12:41:51] [PASSED] oob_was/16017236439 [12:41:51] [PASSED] oob_was/14019821291 [12:41:51] [PASSED] oob_was/14015076503 [12:41:51] [PASSED] oob_was/14018913170 [12:41:51] [PASSED] oob_was/14018094691 [12:41:51] [PASSED] oob_was/18024947630 [12:41:51] [PASSED] oob_was/16022287689 [12:41:51] [PASSED] oob_was/13011645652 [12:41:51] [PASSED] oob_was/14022293748 [12:41:51] [PASSED] oob_was/22019794406 [12:41:51] [PASSED] oob_was/22019338487 [12:41:51] [PASSED] oob_was/16023588340 [12:41:51] [PASSED] oob_was/14019789679 [12:41:51] [PASSED] oob_was/14022866841 [12:41:51] [PASSED] oob_was/16021333562 [12:41:51] [PASSED] oob_was/14016712196 [12:41:51] [PASSED] oob_was/14015568240 [12:41:51] [PASSED] oob_was/18013179988 [12:41:51] [PASSED] oob_was/1508761755 [12:41:51] [PASSED] oob_was/16023105232 [12:41:51] [PASSED] oob_was/16026508708 [12:41:51] [PASSED] oob_was/14020001231 [12:41:51] [PASSED] oob_was/16023683509 [12:41:51] [PASSED] oob_was/14025515070 [12:41:51] [PASSED] oob_was/15015404425_disable [12:41:51] [PASSED] oob_was/16026007364 [12:41:51] [PASSED] oob_was/14020316580 [12:41:51] [PASSED] oob_was/14025883347 [12:41:51] [PASSED] oob_was/16029380221 [12:41:51] [PASSED] oob_was/22022079272 [12:41:51] [PASSED] oob_was/16029897822 [12:41:51] [PASSED] oob_was/14027054324 [12:41:51] ============== [PASSED] xe_rtp_table_oob_test ============== [12:41:51] ================ xe_rtp_table_dev_oob_test ================ [12:41:51] [PASSED] device_oob_was/22010954014 [12:41:51] [PASSED] device_oob_was/15015404425 [12:41:51] [PASSED] device_oob_was/22019338487_display [12:41:51] [PASSED] device_oob_was/14022085890 [12:41:51] [PASSED] device_oob_was/14026539277 [12:41:51] [PASSED] device_oob_was/14026633728 [12:41:51] [PASSED] device_oob_was/14026746987 [12:41:51] [PASSED] device_oob_was/14026779378 [12:41:51] ============ [PASSED] xe_rtp_table_dev_oob_test ============ [12:41:51] ========== xe_rtp_table_missing_upper_bound_test ========== [12:41:51] [PASSED] register_whitelist/WaAllowPMDepthAndInvocationCountAccessFromUMD, 1408556865 [12:41:51] [PASSED] register_whitelist/1508744258, 14012131227, 1808121037 [12:41:51] [PASSED] register_whitelist/1806527549 [12:41:51] [PASSED] register_whitelist/allow_read_ctx_timestamp [12:41:51] [PASSED] register_whitelist/allow_read_queue_timestamp [12:41:51] [PASSED] register_whitelist/16014440446 [12:41:51] [PASSED] register_whitelist/16017236439 [12:41:51] [PASSED] register_whitelist/16020183090 [12:41:51] [PASSED] register_whitelist/14024997852 [12:41:51] [PASSED] register_whitelist/14024997852 [12:41:51] ====== [PASSED] xe_rtp_table_missing_upper_bound_test ====== [12:41:51] =============== [PASSED] xe_rtp_tables_test ================ [12:41:51] =================== xe_rtp (3 subtests) ==================== [12:41:51] =================== xe_rtp_rules_tests ==================== [12:41:51] [PASSED] no [12:41:51] [PASSED] yes [12:41:51] [PASSED] no-and-no [12:41:51] [PASSED] no-and-yes [12:41:51] [PASSED] yes-and-no [12:41:51] [PASSED] yes-and-yes [12:41:51] [PASSED] no-or-no [12:41:51] [PASSED] no-or-yes [12:41:51] [PASSED] yes-or-no [12:41:51] [PASSED] yes-or-yes [12:41:51] [PASSED] no-yes-or-yes-no [12:41:51] [PASSED] no-yes-or-yes-yes [12:41:51] [PASSED] yes-yes-or-no-yes [12:41:51] [PASSED] yes-yes-or-yes-yes [12:41:51] [PASSED] no-no-or-yes-or-no [12:41:51] [PASSED] or [12:41:51] [PASSED] or-yes [12:41:51] [PASSED] or-no [12:41:51] [PASSED] yes-or [12:41:51] [PASSED] no-or [12:41:51] [PASSED] no-or-or-yes [12:41:51] [PASSED] yes-or-or-no [12:41:51] [PASSED] no-or-or-no [12:41:51] [PASSED] missing-context-engine-class [12:41:51] [PASSED] missing-context-engine-class-or-yes [12:41:51] [PASSED] missing-context-engine-class-or-or-yes [12:41:51] =============== [PASSED] xe_rtp_rules_tests ================ [12:41:51] =============== xe_rtp_process_to_sr_tests ================ [12:41:51] [PASSED] coalesce-same-reg [12:41:51] [PASSED] coalesce-same-reg-literal-and-func [12:41:51] [PASSED] no-match-no-add [12:41:51] [PASSED] two-regs-two-entries [12:41:51] [PASSED] clr-one-set-other [12:41:51] [PASSED] set-field [12:41:51] [PASSED] conflict-duplicate [12:41:51] [PASSED] conflict-not-disjoint [12:41:51] [PASSED] conflict-not-disjoint-literal-and-func [12:41:51] [PASSED] conflict-reg-type [12:41:51] [PASSED] bad-mcr-reg-forced-to-regular [12:41:51] [PASSED] bad-regular-reg-forced-to-mcr [12:41:51] =========== [PASSED] xe_rtp_process_to_sr_tests ============ [12:41:51] ================== xe_rtp_process_tests =================== [12:41:51] [PASSED] active1 [12:41:51] [PASSED] active2 [12:41:51] [PASSED] active-inactive [12:41:51] [PASSED] inactive-active [12:41:51] [PASSED] inactive-active-inactive [12:41:51] [PASSED] inactive-inactive-inactive [12:41:51] ============== [PASSED] xe_rtp_process_tests =============== [12:41:51] ===================== [PASSED] xe_rtp ====================== [12:41:51] ==================== xe_wa (1 subtest) ===================== [12:41:51] ======================== xe_wa_gt ========================= [12:41:51] [PASSED] TIGERLAKE B0 [12:41:51] [PASSED] DG1 A0 [12:41:51] [PASSED] DG1 B0 [12:41:51] [PASSED] ALDERLAKE_S A0 [12:41:51] [PASSED] ALDERLAKE_S B0 [12:41:51] [PASSED] ALDERLAKE_S C0 [12:41:51] [PASSED] ALDERLAKE_S D0 [12:41:51] [PASSED] ALDERLAKE_P A0 [12:41:51] [PASSED] ALDERLAKE_P B0 [12:41:51] [PASSED] ALDERLAKE_P C0 [12:41:51] [PASSED] ALDERLAKE_S RPLS D0 [12:41:51] [PASSED] ALDERLAKE_P RPLU E0 [12:41:51] [PASSED] DG2 G10 C0 [12:41:51] [PASSED] DG2 G11 B1 [12:41:51] [PASSED] DG2 G12 A1 [12:41:51] [PASSED] METEORLAKE 12.70(Xe_LPG) A0 13.00(Xe_LPM+) A0 [12:41:51] [PASSED] METEORLAKE 12.71(Xe_LPG) A0 13.00(Xe_LPM+) A0 [12:41:51] [PASSED] METEORLAKE 12.74(Xe_LPG+) A0 13.00(Xe_LPM+) A0 [12:41:51] [PASSED] LUNARLAKE 20.04(Xe2_LPG) A0 20.00(Xe2_LPM) A0 [12:41:51] [PASSED] LUNARLAKE 20.04(Xe2_LPG) B0 20.00(Xe2_LPM) A0 [12:41:51] [PASSED] BATTLEMAGE 20.01(Xe2_HPG) A0 13.01(Xe2_HPM) A1 [12:41:51] [PASSED] PANTHERLAKE 30.00(Xe3_LPG) A0 30.00(Xe3_LPM) A0 [12:41:51] ==================== [PASSED] xe_wa_gt ===================== [12:41:51] ====================== [PASSED] xe_wa ====================== [12:41:51] ============================================================ [12:41:51] Testing complete. Ran 742 tests: passed: 724, skipped: 18 [12:41:51] Elapsed time: 36.751s total, 4.379s configuring, 31.756s building, 0.582s running + /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/tests/.kunitconfig [12:41:52] Configuring KUnit Kernel ... Regenerating .config ... Populating config with: $ make ARCH=um O=.kunit olddefconfig [12:41:53] 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 [12:42:18] Starting KUnit Kernel (1/1)... [12:42:18] ============================================================ Running tests with: $ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt [12:42:18] ============ drm_test_pick_cmdline (2 subtests) ============ [12:42:18] [PASSED] drm_test_pick_cmdline_res_1920_1080_60 [12:42:18] =============== drm_test_pick_cmdline_named =============== [12:42:18] [PASSED] NTSC [12:42:18] [PASSED] NTSC-J [12:42:18] [PASSED] PAL [12:42:18] [PASSED] PAL-M [12:42:18] =========== [PASSED] drm_test_pick_cmdline_named =========== [12:42:18] ============== [PASSED] drm_test_pick_cmdline ============== [12:42:18] == drm_test_atomic_get_connector_for_encoder (1 subtest) === [12:42:18] [PASSED] drm_test_drm_atomic_get_connector_for_encoder [12:42:18] ==== [PASSED] drm_test_atomic_get_connector_for_encoder ==== [12:42:18] =========== drm_validate_clone_mode (2 subtests) =========== [12:42:18] ============== drm_test_check_in_clone_mode =============== [12:42:18] [PASSED] in_clone_mode [12:42:18] [PASSED] not_in_clone_mode [12:42:18] ========== [PASSED] drm_test_check_in_clone_mode =========== [12:42:18] =============== drm_test_check_valid_clones =============== [12:42:18] [PASSED] not_in_clone_mode [12:42:18] [PASSED] valid_clone [12:42:18] [PASSED] invalid_clone [12:42:18] =========== [PASSED] drm_test_check_valid_clones =========== [12:42:18] ============= [PASSED] drm_validate_clone_mode ============= [12:42:18] ============= drm_validate_modeset (1 subtest) ============= [12:42:18] [PASSED] drm_test_check_connector_changed_modeset [12:42:18] ============== [PASSED] drm_validate_modeset =============== [12:42:18] ====== drm_test_bridge_get_current_state (1 subtest) ======= [12:42:18] [PASSED] drm_test_drm_bridge_get_current_state_atomic [12:42:18] ======== [PASSED] drm_test_bridge_get_current_state ======== [12:42:18] ====== drm_test_bridge_helper_reset_crtc (3 subtests) ====== [12:42:18] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic [12:42:18] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic_disabled [12:42:18] [PASSED] drm_test_drm_bridge_helper_hdmi_output_bus_fmts [12:42:18] ======== [PASSED] drm_test_bridge_helper_reset_crtc ======== [12:42:18] ============== drm_bridge_alloc (2 subtests) =============== [12:42:18] [PASSED] drm_test_drm_bridge_alloc_basic [12:42:18] [PASSED] drm_test_drm_bridge_alloc_get_put [12:42:18] ================ [PASSED] drm_bridge_alloc ================= [12:42:18] ============= drm_bridge_bus_fmt (5 subtests) ============== [12:42:18] [PASSED] drm_test_bridge_rgb_yuv_rgb [12:42:18] [PASSED] drm_test_bridge_must_convert_to_yuv444 [12:42:18] [PASSED] drm_test_bridge_hdmi_auto_rgb [12:42:18] [PASSED] drm_test_bridge_auto_first [12:42:18] [PASSED] drm_test_bridge_rgb_yuv_no_path [12:42:18] =============== [PASSED] drm_bridge_bus_fmt ================ [12:42:18] ============= drm_cmdline_parser (40 subtests) ============= [12:42:18] [PASSED] drm_test_cmdline_force_d_only [12:42:18] [PASSED] drm_test_cmdline_force_D_only_dvi [12:42:18] [PASSED] drm_test_cmdline_force_D_only_hdmi [12:42:18] [PASSED] drm_test_cmdline_force_D_only_not_digital [12:42:18] [PASSED] drm_test_cmdline_force_e_only [12:42:18] [PASSED] drm_test_cmdline_res [12:42:18] [PASSED] drm_test_cmdline_res_vesa [12:42:18] [PASSED] drm_test_cmdline_res_vesa_rblank [12:42:18] [PASSED] drm_test_cmdline_res_rblank [12:42:18] [PASSED] drm_test_cmdline_res_bpp [12:42:18] [PASSED] drm_test_cmdline_res_refresh [12:42:18] [PASSED] drm_test_cmdline_res_bpp_refresh [12:42:18] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced [12:42:18] [PASSED] drm_test_cmdline_res_bpp_refresh_margins [12:42:18] [PASSED] drm_test_cmdline_res_bpp_refresh_force_off [12:42:18] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on [12:42:18] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_analog [12:42:18] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_digital [12:42:18] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced_margins_force_on [12:42:18] [PASSED] drm_test_cmdline_res_margins_force_on [12:42:18] [PASSED] drm_test_cmdline_res_vesa_margins [12:42:18] [PASSED] drm_test_cmdline_name [12:42:18] [PASSED] drm_test_cmdline_name_bpp [12:42:18] [PASSED] drm_test_cmdline_name_option [12:42:18] [PASSED] drm_test_cmdline_name_bpp_option [12:42:18] [PASSED] drm_test_cmdline_rotate_0 [12:42:18] [PASSED] drm_test_cmdline_rotate_90 [12:42:18] [PASSED] drm_test_cmdline_rotate_180 [12:42:18] [PASSED] drm_test_cmdline_rotate_270 [12:42:18] [PASSED] drm_test_cmdline_hmirror [12:42:18] [PASSED] drm_test_cmdline_vmirror [12:42:18] [PASSED] drm_test_cmdline_margin_options [12:42:18] [PASSED] drm_test_cmdline_multiple_options [12:42:18] [PASSED] drm_test_cmdline_bpp_extra_and_option [12:42:18] [PASSED] drm_test_cmdline_extra_and_option [12:42:18] [PASSED] drm_test_cmdline_freestanding_options [12:42:18] [PASSED] drm_test_cmdline_freestanding_force_e_and_options [12:42:18] [PASSED] drm_test_cmdline_panel_orientation [12:42:18] ================ drm_test_cmdline_invalid ================= [12:42:18] [PASSED] margin_only [12:42:18] [PASSED] interlace_only [12:42:18] [PASSED] res_missing_x [12:42:18] [PASSED] res_missing_y [12:42:18] [PASSED] res_bad_y [12:42:18] [PASSED] res_missing_y_bpp [12:42:18] [PASSED] res_bad_bpp [12:42:18] [PASSED] res_bad_refresh [12:42:18] [PASSED] res_bpp_refresh_force_on_off [12:42:18] [PASSED] res_invalid_mode [12:42:18] [PASSED] res_bpp_wrong_place_mode [12:42:18] [PASSED] name_bpp_refresh [12:42:18] [PASSED] name_refresh [12:42:18] [PASSED] name_refresh_wrong_mode [12:42:18] [PASSED] name_refresh_invalid_mode [12:42:18] [PASSED] rotate_multiple [12:42:18] [PASSED] rotate_invalid_val [12:42:18] [PASSED] rotate_truncated [12:42:18] [PASSED] invalid_option [12:42:18] [PASSED] invalid_tv_option [12:42:18] [PASSED] truncated_tv_option [12:42:18] ============ [PASSED] drm_test_cmdline_invalid ============= [12:42:18] =============== drm_test_cmdline_tv_options =============== [12:42:18] [PASSED] NTSC [12:42:18] [PASSED] NTSC_443 [12:42:18] [PASSED] NTSC_J [12:42:18] [PASSED] PAL [12:42:18] [PASSED] PAL_M [12:42:18] [PASSED] PAL_N [12:42:18] [PASSED] SECAM [12:42:18] [PASSED] MONO_525 [12:42:18] [PASSED] MONO_625 [12:42:18] =========== [PASSED] drm_test_cmdline_tv_options =========== [12:42:18] =============== [PASSED] drm_cmdline_parser ================ [12:42:18] ========== drmm_connector_hdmi_init (20 subtests) ========== [12:42:18] [PASSED] drm_test_connector_hdmi_init_valid [12:42:18] [PASSED] drm_test_connector_hdmi_init_bpc_8 [12:42:18] [PASSED] drm_test_connector_hdmi_init_bpc_10 [12:42:18] [PASSED] drm_test_connector_hdmi_init_bpc_12 [12:42:18] [PASSED] drm_test_connector_hdmi_init_bpc_invalid [12:42:18] [PASSED] drm_test_connector_hdmi_init_bpc_null [12:42:18] [PASSED] drm_test_connector_hdmi_init_formats_empty [12:42:18] [PASSED] drm_test_connector_hdmi_init_formats_no_rgb [12:42:18] === drm_test_connector_hdmi_init_formats_yuv420_allowed === [12:42:18] [PASSED] supported_formats=0x9 yuv420_allowed=1 [12:42:18] [PASSED] supported_formats=0x9 yuv420_allowed=0 [12:42:18] [PASSED] supported_formats=0x5 yuv420_allowed=1 [12:42:18] [PASSED] supported_formats=0x5 yuv420_allowed=0 [12:42:18] === [PASSED] drm_test_connector_hdmi_init_formats_yuv420_allowed === [12:42:18] [PASSED] drm_test_connector_hdmi_init_null_ddc [12:42:18] [PASSED] drm_test_connector_hdmi_init_null_product [12:42:18] [PASSED] drm_test_connector_hdmi_init_null_vendor [12:42:18] [PASSED] drm_test_connector_hdmi_init_product_length_exact [12:42:18] [PASSED] drm_test_connector_hdmi_init_product_length_too_long [12:42:18] [PASSED] drm_test_connector_hdmi_init_product_valid [12:42:18] [PASSED] drm_test_connector_hdmi_init_vendor_length_exact [12:42:18] [PASSED] drm_test_connector_hdmi_init_vendor_length_too_long [12:42:18] [PASSED] drm_test_connector_hdmi_init_vendor_valid [12:42:18] ========= drm_test_connector_hdmi_init_type_valid ========= [12:42:18] [PASSED] HDMI-A [12:42:18] [PASSED] HDMI-B [12:42:18] ===== [PASSED] drm_test_connector_hdmi_init_type_valid ===== [12:42:18] ======== drm_test_connector_hdmi_init_type_invalid ======== [12:42:18] [PASSED] Unknown [12:42:18] [PASSED] VGA [12:42:18] [PASSED] DVI-I [12:42:18] [PASSED] DVI-D [12:42:18] [PASSED] DVI-A [12:42:18] [PASSED] Composite [12:42:18] [PASSED] SVIDEO [12:42:18] [PASSED] LVDS [12:42:18] [PASSED] Component [12:42:18] [PASSED] DIN [12:42:18] [PASSED] DP [12:42:18] [PASSED] TV [12:42:18] [PASSED] eDP [12:42:18] [PASSED] Virtual [12:42:18] [PASSED] DSI [12:42:18] [PASSED] DPI [12:42:18] [PASSED] Writeback [12:42:18] [PASSED] SPI [12:42:18] [PASSED] USB [12:42:18] ==== [PASSED] drm_test_connector_hdmi_init_type_invalid ==== [12:42:18] ============ [PASSED] drmm_connector_hdmi_init ============= [12:42:18] ============= drmm_connector_init (3 subtests) ============= [12:42:18] [PASSED] drm_test_drmm_connector_init [12:42:18] [PASSED] drm_test_drmm_connector_init_null_ddc [12:42:18] ========= drm_test_drmm_connector_init_type_valid ========= [12:42:18] [PASSED] Unknown [12:42:18] [PASSED] VGA [12:42:18] [PASSED] DVI-I [12:42:18] [PASSED] DVI-D [12:42:18] [PASSED] DVI-A [12:42:18] [PASSED] Composite [12:42:18] [PASSED] SVIDEO [12:42:18] [PASSED] LVDS [12:42:18] [PASSED] Component [12:42:18] [PASSED] DIN [12:42:18] [PASSED] DP [12:42:18] [PASSED] HDMI-A [12:42:18] [PASSED] HDMI-B [12:42:18] [PASSED] TV [12:42:18] [PASSED] eDP [12:42:18] [PASSED] Virtual [12:42:18] [PASSED] DSI [12:42:18] [PASSED] DPI [12:42:18] [PASSED] Writeback [12:42:18] [PASSED] SPI [12:42:18] [PASSED] USB [12:42:18] ===== [PASSED] drm_test_drmm_connector_init_type_valid ===== [12:42:18] =============== [PASSED] drmm_connector_init =============== [12:42:18] ========= drm_connector_dynamic_init (6 subtests) ========== [12:42:18] [PASSED] drm_test_drm_connector_dynamic_init [12:42:18] [PASSED] drm_test_drm_connector_dynamic_init_null_ddc [12:42:18] [PASSED] drm_test_drm_connector_dynamic_init_not_added [12:42:18] [PASSED] drm_test_drm_connector_dynamic_init_properties [12:42:18] ===== drm_test_drm_connector_dynamic_init_type_valid ====== [12:42:18] [PASSED] Unknown [12:42:18] [PASSED] VGA [12:42:18] [PASSED] DVI-I [12:42:18] [PASSED] DVI-D [12:42:18] [PASSED] DVI-A [12:42:18] [PASSED] Composite [12:42:18] [PASSED] SVIDEO [12:42:18] [PASSED] LVDS [12:42:18] [PASSED] Component [12:42:18] [PASSED] DIN [12:42:18] [PASSED] DP [12:42:18] [PASSED] HDMI-A [12:42:18] [PASSED] HDMI-B [12:42:18] [PASSED] TV [12:42:18] [PASSED] eDP [12:42:18] [PASSED] Virtual [12:42:18] [PASSED] DSI [12:42:18] [PASSED] DPI [12:42:18] [PASSED] Writeback [12:42:18] [PASSED] SPI [12:42:18] [PASSED] USB [12:42:18] = [PASSED] drm_test_drm_connector_dynamic_init_type_valid == [12:42:18] ======== drm_test_drm_connector_dynamic_init_name ========= [12:42:18] [PASSED] Unknown [12:42:18] [PASSED] VGA [12:42:18] [PASSED] DVI-I [12:42:18] [PASSED] DVI-D [12:42:18] [PASSED] DVI-A [12:42:18] [PASSED] Composite [12:42:18] [PASSED] SVIDEO [12:42:18] [PASSED] LVDS [12:42:18] [PASSED] Component [12:42:18] [PASSED] DIN [12:42:18] [PASSED] DP [12:42:18] [PASSED] HDMI-A [12:42:18] [PASSED] HDMI-B [12:42:18] [PASSED] TV [12:42:18] [PASSED] eDP [12:42:18] [PASSED] Virtual [12:42:18] [PASSED] DSI [12:42:18] [PASSED] DPI [12:42:18] [PASSED] Writeback [12:42:18] [PASSED] SPI [12:42:18] [PASSED] USB [12:42:18] ==== [PASSED] drm_test_drm_connector_dynamic_init_name ===== [12:42:18] =========== [PASSED] drm_connector_dynamic_init ============ [12:42:18] ==== drm_connector_dynamic_register_early (4 subtests) ===== [12:42:18] [PASSED] drm_test_drm_connector_dynamic_register_early_on_list [12:42:18] [PASSED] drm_test_drm_connector_dynamic_register_early_defer [12:42:18] [PASSED] drm_test_drm_connector_dynamic_register_early_no_init [12:42:18] [PASSED] drm_test_drm_connector_dynamic_register_early_no_mode_object [12:42:18] ====== [PASSED] drm_connector_dynamic_register_early ======= [12:42:18] ======= drm_connector_dynamic_register (7 subtests) ======== [12:42:18] [PASSED] drm_test_drm_connector_dynamic_register_on_list [12:42:18] [PASSED] drm_test_drm_connector_dynamic_register_no_defer [12:42:18] [PASSED] drm_test_drm_connector_dynamic_register_no_init [12:42:18] [PASSED] drm_test_drm_connector_dynamic_register_mode_object [12:42:18] [PASSED] drm_test_drm_connector_dynamic_register_sysfs [12:42:18] [PASSED] drm_test_drm_connector_dynamic_register_sysfs_name [12:42:18] [PASSED] drm_test_drm_connector_dynamic_register_debugfs [12:42:18] ========= [PASSED] drm_connector_dynamic_register ========== [12:42:18] = drm_connector_attach_broadcast_rgb_property (2 subtests) = [12:42:18] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property [12:42:18] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property_hdmi_connector [12:42:18] === [PASSED] drm_connector_attach_broadcast_rgb_property === [12:42:18] ========== drm_get_tv_mode_from_name (2 subtests) ========== [12:42:18] ========== drm_test_get_tv_mode_from_name_valid =========== [12:42:18] [PASSED] NTSC [12:42:18] [PASSED] NTSC-443 [12:42:18] [PASSED] NTSC-J [12:42:18] [PASSED] PAL [12:42:18] [PASSED] PAL-M [12:42:18] [PASSED] PAL-N [12:42:18] [PASSED] SECAM [12:42:18] [PASSED] Mono [12:42:18] ====== [PASSED] drm_test_get_tv_mode_from_name_valid ======= [12:42:18] [PASSED] drm_test_get_tv_mode_from_name_truncated [12:42:18] ============ [PASSED] drm_get_tv_mode_from_name ============ [12:42:18] = drm_test_connector_hdmi_compute_mode_clock (12 subtests) = [12:42:18] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb [12:42:18] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc [12:42:18] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc_vic_1 [12:42:18] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc [12:42:18] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc_vic_1 [12:42:18] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_double [12:42:18] = drm_test_connector_hdmi_compute_mode_clock_yuv420_valid = [12:42:18] [PASSED] VIC 96 [12:42:18] [PASSED] VIC 97 [12:42:18] [PASSED] VIC 101 [12:42:18] [PASSED] VIC 102 [12:42:18] [PASSED] VIC 106 [12:42:18] [PASSED] VIC 107 [12:42:18] === [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_valid === [12:42:18] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_10_bpc [12:42:18] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_12_bpc [12:42:18] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_8_bpc [12:42:18] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_10_bpc [12:42:18] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_12_bpc [12:42:18] === [PASSED] drm_test_connector_hdmi_compute_mode_clock ==== [12:42:18] == drm_hdmi_connector_get_broadcast_rgb_name (2 subtests) == [12:42:18] === drm_test_drm_hdmi_connector_get_broadcast_rgb_name ==== [12:42:18] [PASSED] Automatic [12:42:18] [PASSED] Full [12:42:18] [PASSED] Limited 16:235 [12:42:18] === [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name === [12:42:18] [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name_invalid [12:42:18] ==== [PASSED] drm_hdmi_connector_get_broadcast_rgb_name ==== [12:42:18] == drm_hdmi_connector_get_output_format_name (2 subtests) == [12:42:18] === drm_test_drm_hdmi_connector_get_output_format_name ==== [12:42:18] [PASSED] RGB [12:42:18] [PASSED] YUV 4:2:0 [12:42:18] [PASSED] YUV 4:2:2 [12:42:18] [PASSED] YUV 4:4:4 [12:42:18] === [PASSED] drm_test_drm_hdmi_connector_get_output_format_name === [12:42:18] [PASSED] drm_test_drm_hdmi_connector_get_output_format_name_invalid [12:42:18] ==== [PASSED] drm_hdmi_connector_get_output_format_name ==== [12:42:18] ============= drm_damage_helper (21 subtests) ============== [12:42:18] [PASSED] drm_test_damage_iter_no_damage [12:42:18] [PASSED] drm_test_damage_iter_no_damage_fractional_src [12:42:18] [PASSED] drm_test_damage_iter_no_damage_src_moved [12:42:18] [PASSED] drm_test_damage_iter_no_damage_fractional_src_moved [12:42:18] [PASSED] drm_test_damage_iter_no_damage_not_visible [12:42:18] [PASSED] drm_test_damage_iter_no_damage_no_crtc [12:42:18] [PASSED] drm_test_damage_iter_no_damage_no_fb [12:42:18] [PASSED] drm_test_damage_iter_simple_damage [12:42:18] [PASSED] drm_test_damage_iter_single_damage [12:42:18] [PASSED] drm_test_damage_iter_single_damage_intersect_src [12:42:18] [PASSED] drm_test_damage_iter_single_damage_outside_src [12:42:18] [PASSED] drm_test_damage_iter_single_damage_fractional_src [12:42:18] [PASSED] drm_test_damage_iter_single_damage_intersect_fractional_src [12:42:18] [PASSED] drm_test_damage_iter_single_damage_outside_fractional_src [12:42:18] [PASSED] drm_test_damage_iter_single_damage_src_moved [12:42:18] [PASSED] drm_test_damage_iter_single_damage_fractional_src_moved [12:42:18] [PASSED] drm_test_damage_iter_damage [12:42:18] [PASSED] drm_test_damage_iter_damage_one_intersect [12:42:18] [PASSED] drm_test_damage_iter_damage_one_outside [12:42:18] [PASSED] drm_test_damage_iter_damage_src_moved [12:42:18] [PASSED] drm_test_damage_iter_damage_not_visible [12:42:18] ================ [PASSED] drm_damage_helper ================ [12:42:18] ============== drm_dp_mst_helper (3 subtests) ============== [12:42:18] ============== drm_test_dp_mst_calc_pbn_mode ============== [12:42:18] [PASSED] Clock 154000 BPP 30 DSC disabled [12:42:18] [PASSED] Clock 234000 BPP 30 DSC disabled [12:42:18] [PASSED] Clock 297000 BPP 24 DSC disabled [12:42:18] [PASSED] Clock 332880 BPP 24 DSC enabled [12:42:18] [PASSED] Clock 324540 BPP 24 DSC enabled [12:42:18] ========== [PASSED] drm_test_dp_mst_calc_pbn_mode ========== [12:42:18] ============== drm_test_dp_mst_calc_pbn_div =============== [12:42:18] [PASSED] Link rate 2000000 lane count 4 [12:42:18] [PASSED] Link rate 2000000 lane count 2 [12:42:18] [PASSED] Link rate 2000000 lane count 1 [12:42:18] [PASSED] Link rate 1350000 lane count 4 [12:42:18] [PASSED] Link rate 1350000 lane count 2 [12:42:18] [PASSED] Link rate 1350000 lane count 1 [12:42:18] [PASSED] Link rate 1000000 lane count 4 [12:42:18] [PASSED] Link rate 1000000 lane count 2 [12:42:18] [PASSED] Link rate 1000000 lane count 1 [12:42:18] [PASSED] Link rate 810000 lane count 4 [12:42:18] [PASSED] Link rate 810000 lane count 2 [12:42:18] [PASSED] Link rate 810000 lane count 1 [12:42:18] [PASSED] Link rate 540000 lane count 4 [12:42:18] [PASSED] Link rate 540000 lane count 2 [12:42:18] [PASSED] Link rate 540000 lane count 1 [12:42:18] [PASSED] Link rate 270000 lane count 4 [12:42:18] [PASSED] Link rate 270000 lane count 2 [12:42:18] [PASSED] Link rate 270000 lane count 1 [12:42:18] [PASSED] Link rate 162000 lane count 4 [12:42:18] [PASSED] Link rate 162000 lane count 2 [12:42:18] [PASSED] Link rate 162000 lane count 1 [12:42:18] ========== [PASSED] drm_test_dp_mst_calc_pbn_div =========== [12:42:18] ========= drm_test_dp_mst_sideband_msg_req_decode ========= [12:42:18] [PASSED] DP_ENUM_PATH_RESOURCES with port number [12:42:18] [PASSED] DP_POWER_UP_PHY with port number [12:42:18] [PASSED] DP_POWER_DOWN_PHY with port number [12:42:18] [PASSED] DP_ALLOCATE_PAYLOAD with SDP stream sinks [12:42:18] [PASSED] DP_ALLOCATE_PAYLOAD with port number [12:42:18] [PASSED] DP_ALLOCATE_PAYLOAD with VCPI [12:42:18] [PASSED] DP_ALLOCATE_PAYLOAD with PBN [12:42:18] [PASSED] DP_QUERY_PAYLOAD with port number [12:42:18] [PASSED] DP_QUERY_PAYLOAD with VCPI [12:42:18] [PASSED] DP_REMOTE_DPCD_READ with port number [12:42:18] [PASSED] DP_REMOTE_DPCD_READ with DPCD address [12:42:18] [PASSED] DP_REMOTE_DPCD_READ with max number of bytes [12:42:18] [PASSED] DP_REMOTE_DPCD_WRITE with port number [12:42:18] [PASSED] DP_REMOTE_DPCD_WRITE with DPCD address [12:42:18] [PASSED] DP_REMOTE_DPCD_WRITE with data array [12:42:18] [PASSED] DP_REMOTE_I2C_READ with port number [12:42:18] [PASSED] DP_REMOTE_I2C_READ with I2C device ID [12:42:18] [PASSED] DP_REMOTE_I2C_READ with transactions array [12:42:18] [PASSED] DP_REMOTE_I2C_WRITE with port number [12:42:18] [PASSED] DP_REMOTE_I2C_WRITE with I2C device ID [12:42:18] [PASSED] DP_REMOTE_I2C_WRITE with data array [12:42:18] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream ID [12:42:18] [PASSED] DP_QUERY_STREAM_ENC_STATUS with client ID [12:42:18] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream event [12:42:18] [PASSED] DP_QUERY_STREAM_ENC_STATUS with valid stream event [12:42:18] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream behavior [12:42:18] [PASSED] DP_QUERY_STREAM_ENC_STATUS with a valid stream behavior [12:42:18] ===== [PASSED] drm_test_dp_mst_sideband_msg_req_decode ===== [12:42:18] ================ [PASSED] drm_dp_mst_helper ================ [12:42:18] ================== drm_exec (7 subtests) =================== [12:42:18] [PASSED] sanitycheck [12:42:18] [PASSED] test_lock [12:42:18] [PASSED] test_lock_unlock [12:42:18] [PASSED] test_duplicates [12:42:18] [PASSED] test_prepare [12:42:18] [PASSED] test_prepare_array [12:42:18] [PASSED] test_multiple_loops [12:42:18] ==================== [PASSED] drm_exec ===================== [12:42:18] =========== drm_format_helper_test (17 subtests) =========== [12:42:18] ============== drm_test_fb_xrgb8888_to_gray8 ============== [12:42:18] [PASSED] single_pixel_source_buffer [12:42:18] [PASSED] single_pixel_clip_rectangle [12:42:18] [PASSED] well_known_colors [12:42:18] [PASSED] destination_pitch [12:42:18] ========== [PASSED] drm_test_fb_xrgb8888_to_gray8 ========== [12:42:18] ============= drm_test_fb_xrgb8888_to_rgb332 ============== [12:42:18] [PASSED] single_pixel_source_buffer [12:42:18] [PASSED] single_pixel_clip_rectangle [12:42:18] [PASSED] well_known_colors [12:42:18] [PASSED] destination_pitch [12:42:18] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb332 ========== [12:42:18] ============= drm_test_fb_xrgb8888_to_rgb565 ============== [12:42:18] [PASSED] single_pixel_source_buffer [12:42:18] [PASSED] single_pixel_clip_rectangle [12:42:18] [PASSED] well_known_colors [12:42:18] [PASSED] destination_pitch [12:42:18] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb565 ========== [12:42:18] ============ drm_test_fb_xrgb8888_to_xrgb1555 ============= [12:42:18] [PASSED] single_pixel_source_buffer [12:42:18] [PASSED] single_pixel_clip_rectangle [12:42:18] [PASSED] well_known_colors [12:42:18] [PASSED] destination_pitch [12:42:18] ======== [PASSED] drm_test_fb_xrgb8888_to_xrgb1555 ========= [12:42:18] ============ drm_test_fb_xrgb8888_to_argb1555 ============= [12:42:18] [PASSED] single_pixel_source_buffer [12:42:18] [PASSED] single_pixel_clip_rectangle [12:42:18] [PASSED] well_known_colors [12:42:18] [PASSED] destination_pitch [12:42:18] ======== [PASSED] drm_test_fb_xrgb8888_to_argb1555 ========= [12:42:18] ============ drm_test_fb_xrgb8888_to_rgba5551 ============= [12:42:18] [PASSED] single_pixel_source_buffer [12:42:18] [PASSED] single_pixel_clip_rectangle [12:42:18] [PASSED] well_known_colors [12:42:18] [PASSED] destination_pitch [12:42:18] ======== [PASSED] drm_test_fb_xrgb8888_to_rgba5551 ========= [12:42:18] ============= drm_test_fb_xrgb8888_to_rgb888 ============== [12:42:18] [PASSED] single_pixel_source_buffer [12:42:18] [PASSED] single_pixel_clip_rectangle [12:42:18] [PASSED] well_known_colors [12:42:18] [PASSED] destination_pitch [12:42:18] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb888 ========== [12:42:18] ============= drm_test_fb_xrgb8888_to_bgr888 ============== [12:42:18] [PASSED] single_pixel_source_buffer [12:42:18] [PASSED] single_pixel_clip_rectangle [12:42:18] [PASSED] well_known_colors [12:42:18] [PASSED] destination_pitch [12:42:18] ========= [PASSED] drm_test_fb_xrgb8888_to_bgr888 ========== [12:42:18] ============ drm_test_fb_xrgb8888_to_argb8888 ============= [12:42:18] [PASSED] single_pixel_source_buffer [12:42:18] [PASSED] single_pixel_clip_rectangle [12:42:18] [PASSED] well_known_colors [12:42:18] [PASSED] destination_pitch [12:42:18] ======== [PASSED] drm_test_fb_xrgb8888_to_argb8888 ========= [12:42:18] =========== drm_test_fb_xrgb8888_to_xrgb2101010 =========== [12:42:18] [PASSED] single_pixel_source_buffer [12:42:18] [PASSED] single_pixel_clip_rectangle [12:42:18] [PASSED] well_known_colors [12:42:18] [PASSED] destination_pitch [12:42:18] ======= [PASSED] drm_test_fb_xrgb8888_to_xrgb2101010 ======= [12:42:18] =========== drm_test_fb_xrgb8888_to_argb2101010 =========== [12:42:18] [PASSED] single_pixel_source_buffer [12:42:18] [PASSED] single_pixel_clip_rectangle [12:42:18] [PASSED] well_known_colors [12:42:18] [PASSED] destination_pitch [12:42:18] ======= [PASSED] drm_test_fb_xrgb8888_to_argb2101010 ======= [12:42:18] ============== drm_test_fb_xrgb8888_to_mono =============== [12:42:18] [PASSED] single_pixel_source_buffer [12:42:18] [PASSED] single_pixel_clip_rectangle [12:42:18] [PASSED] well_known_colors [12:42:18] [PASSED] destination_pitch [12:42:18] ========== [PASSED] drm_test_fb_xrgb8888_to_mono =========== [12:42:18] ==================== drm_test_fb_swab ===================== [12:42:18] [PASSED] single_pixel_source_buffer [12:42:18] [PASSED] single_pixel_clip_rectangle [12:42:18] [PASSED] well_known_colors [12:42:18] [PASSED] destination_pitch [12:42:18] ================ [PASSED] drm_test_fb_swab ================= [12:42:18] ============ drm_test_fb_xrgb8888_to_xbgr8888 ============= [12:42:18] [PASSED] single_pixel_source_buffer [12:42:18] [PASSED] single_pixel_clip_rectangle [12:42:18] [PASSED] well_known_colors [12:42:18] [PASSED] destination_pitch [12:42:18] ======== [PASSED] drm_test_fb_xrgb8888_to_xbgr8888 ========= [12:42:18] ============ drm_test_fb_xrgb8888_to_abgr8888 ============= [12:42:18] [PASSED] single_pixel_source_buffer [12:42:18] [PASSED] single_pixel_clip_rectangle [12:42:18] [PASSED] well_known_colors [12:42:18] [PASSED] destination_pitch [12:42:18] ======== [PASSED] drm_test_fb_xrgb8888_to_abgr8888 ========= [12:42:18] ================= drm_test_fb_clip_offset ================= [12:42:18] [PASSED] pass through [12:42:18] [PASSED] horizontal offset [12:42:18] [PASSED] vertical offset [12:42:18] [PASSED] horizontal and vertical offset [12:42:18] [PASSED] horizontal offset (custom pitch) [12:42:18] [PASSED] vertical offset (custom pitch) [12:42:18] [PASSED] horizontal and vertical offset (custom pitch) [12:42:18] ============= [PASSED] drm_test_fb_clip_offset ============= [12:42:18] =================== drm_test_fb_memcpy ==================== [12:42:18] [PASSED] single_pixel_source_buffer: XR24 little-endian (0x34325258) [12:42:18] [PASSED] single_pixel_source_buffer: XRA8 little-endian (0x38415258) [12:42:18] [PASSED] single_pixel_source_buffer: YU24 little-endian (0x34325559) [12:42:18] [PASSED] single_pixel_clip_rectangle: XB24 little-endian (0x34324258) [12:42:18] [PASSED] single_pixel_clip_rectangle: XRA8 little-endian (0x38415258) [12:42:18] [PASSED] single_pixel_clip_rectangle: YU24 little-endian (0x34325559) [12:42:18] [PASSED] well_known_colors: XB24 little-endian (0x34324258) [12:42:18] [PASSED] well_known_colors: XRA8 little-endian (0x38415258) [12:42:18] [PASSED] well_known_colors: YU24 little-endian (0x34325559) [12:42:18] [PASSED] destination_pitch: XB24 little-endian (0x34324258) [12:42:18] [PASSED] destination_pitch: XRA8 little-endian (0x38415258) [12:42:18] [PASSED] destination_pitch: YU24 little-endian (0x34325559) [12:42:18] =============== [PASSED] drm_test_fb_memcpy ================ [12:42:18] ============= [PASSED] drm_format_helper_test ============== [12:42:18] ================= drm_format (18 subtests) ================= [12:42:18] [PASSED] drm_test_format_block_width_invalid [12:42:18] [PASSED] drm_test_format_block_width_one_plane [12:42:18] [PASSED] drm_test_format_block_width_two_plane [12:42:18] [PASSED] drm_test_format_block_width_three_plane [12:42:18] [PASSED] drm_test_format_block_width_tiled [12:42:18] [PASSED] drm_test_format_block_height_invalid [12:42:18] [PASSED] drm_test_format_block_height_one_plane [12:42:18] [PASSED] drm_test_format_block_height_two_plane [12:42:18] [PASSED] drm_test_format_block_height_three_plane [12:42:18] [PASSED] drm_test_format_block_height_tiled [12:42:18] [PASSED] drm_test_format_min_pitch_invalid [12:42:18] [PASSED] drm_test_format_min_pitch_one_plane_8bpp [12:42:18] [PASSED] drm_test_format_min_pitch_one_plane_16bpp [12:42:18] [PASSED] drm_test_format_min_pitch_one_plane_24bpp [12:42:18] [PASSED] drm_test_format_min_pitch_one_plane_32bpp [12:42:18] [PASSED] drm_test_format_min_pitch_two_plane [12:42:18] [PASSED] drm_test_format_min_pitch_three_plane_8bpp [12:42:18] [PASSED] drm_test_format_min_pitch_tiled [12:42:18] =================== [PASSED] drm_format ==================== [12:42:18] ============== drm_framebuffer (10 subtests) =============== [12:42:18] ========== drm_test_framebuffer_check_src_coords ========== [12:42:18] [PASSED] Success: source fits into fb [12:42:18] [PASSED] Fail: overflowing fb with x-axis coordinate [12:42:18] [PASSED] Fail: overflowing fb with y-axis coordinate [12:42:18] [PASSED] Fail: overflowing fb with source width [12:42:18] [PASSED] Fail: overflowing fb with source height [12:42:18] ====== [PASSED] drm_test_framebuffer_check_src_coords ====== [12:42:18] [PASSED] drm_test_framebuffer_cleanup [12:42:18] =============== drm_test_framebuffer_create =============== [12:42:18] [PASSED] ABGR8888 normal sizes [12:42:18] [PASSED] ABGR8888 max sizes [12:42:18] [PASSED] ABGR8888 pitch greater than min required [12:42:18] [PASSED] ABGR8888 pitch less than min required [12:42:18] [PASSED] ABGR8888 Invalid width [12:42:18] [PASSED] ABGR8888 Invalid buffer handle [12:42:18] [PASSED] No pixel format [12:42:18] [PASSED] ABGR8888 Width 0 [12:42:18] [PASSED] ABGR8888 Height 0 [12:42:18] [PASSED] ABGR8888 Out of bound height * pitch combination [12:42:18] [PASSED] ABGR8888 Large buffer offset [12:42:18] [PASSED] ABGR8888 Buffer offset for inexistent plane [12:42:18] [PASSED] ABGR8888 Invalid flag [12:42:18] [PASSED] ABGR8888 Set DRM_MODE_FB_MODIFIERS without modifiers [12:42:18] [PASSED] ABGR8888 Valid buffer modifier [12:42:18] [PASSED] ABGR8888 Invalid buffer modifier(DRM_FORMAT_MOD_SAMSUNG_64_32_TILE) [12:42:18] [PASSED] ABGR8888 Extra pitches without DRM_MODE_FB_MODIFIERS [12:42:18] [PASSED] ABGR8888 Extra pitches with DRM_MODE_FB_MODIFIERS [12:42:18] [PASSED] NV12 Normal sizes [12:42:18] [PASSED] NV12 Max sizes [12:42:18] [PASSED] NV12 Invalid pitch [12:42:18] [PASSED] NV12 Invalid modifier/missing DRM_MODE_FB_MODIFIERS flag [12:42:18] [PASSED] NV12 different modifier per-plane [12:42:18] [PASSED] NV12 with DRM_FORMAT_MOD_SAMSUNG_64_32_TILE [12:42:18] [PASSED] NV12 Valid modifiers without DRM_MODE_FB_MODIFIERS [12:42:18] [PASSED] NV12 Modifier for inexistent plane [12:42:18] [PASSED] NV12 Handle for inexistent plane [12:42:18] [PASSED] NV12 Handle for inexistent plane without DRM_MODE_FB_MODIFIERS [12:42:18] [PASSED] YVU420 DRM_MODE_FB_MODIFIERS set without modifier [12:42:18] [PASSED] YVU420 Normal sizes [12:42:18] [PASSED] YVU420 Max sizes [12:42:18] [PASSED] YVU420 Invalid pitch [12:42:18] [PASSED] YVU420 Different pitches [12:42:18] [PASSED] YVU420 Different buffer offsets/pitches [12:42:18] [PASSED] YVU420 Modifier set just for plane 0, without DRM_MODE_FB_MODIFIERS [12:42:18] [PASSED] YVU420 Modifier set just for planes 0, 1, without DRM_MODE_FB_MODIFIERS [12:42:18] [PASSED] YVU420 Modifier set just for plane 0, 1, with DRM_MODE_FB_MODIFIERS [12:42:18] [PASSED] YVU420 Valid modifier [12:42:18] [PASSED] YVU420 Different modifiers per plane [12:42:18] [PASSED] YVU420 Modifier for inexistent plane [12:42:18] [PASSED] YUV420_10BIT Invalid modifier(DRM_FORMAT_MOD_LINEAR) [12:42:18] [PASSED] X0L2 Normal sizes [12:42:18] [PASSED] X0L2 Max sizes [12:42:18] [PASSED] X0L2 Invalid pitch [12:42:18] [PASSED] X0L2 Pitch greater than minimum required [12:42:18] [PASSED] X0L2 Handle for inexistent plane [12:42:18] [PASSED] X0L2 Offset for inexistent plane, without DRM_MODE_FB_MODIFIERS set [12:42:18] [PASSED] X0L2 Modifier without DRM_MODE_FB_MODIFIERS set [12:42:18] [PASSED] X0L2 Valid modifier [12:42:18] [PASSED] X0L2 Modifier for inexistent plane [12:42:18] =========== [PASSED] drm_test_framebuffer_create =========== [12:42:18] [PASSED] drm_test_framebuffer_free [12:42:18] [PASSED] drm_test_framebuffer_init [12:42:18] [PASSED] drm_test_framebuffer_init_bad_format [12:42:18] [PASSED] drm_test_framebuffer_init_dev_mismatch [12:42:18] [PASSED] drm_test_framebuffer_lookup [12:42:18] [PASSED] drm_test_framebuffer_lookup_inexistent [12:42:18] [PASSED] drm_test_framebuffer_modifiers_not_supported [12:42:18] ================= [PASSED] drm_framebuffer ================= [12:42:18] ================ drm_gem_shmem (8 subtests) ================ [12:42:18] [PASSED] drm_gem_shmem_test_obj_create [12:42:18] [PASSED] drm_gem_shmem_test_obj_create_private [12:42:18] [PASSED] drm_gem_shmem_test_pin_pages [12:42:18] [PASSED] drm_gem_shmem_test_vmap [12:42:18] [PASSED] drm_gem_shmem_test_get_sg_table [12:42:18] [PASSED] drm_gem_shmem_test_get_pages_sgt [12:42:18] [PASSED] drm_gem_shmem_test_madvise [12:42:18] [PASSED] drm_gem_shmem_test_purge [12:42:18] ================== [PASSED] drm_gem_shmem ================== [12:42:18] === drm_atomic_helper_connector_hdmi_check (29 subtests) === [12:42:18] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode [12:42:18] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode_vic_1 [12:42:18] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode [12:42:18] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode_vic_1 [12:42:18] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode [12:42:18] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode_vic_1 [12:42:18] ====== drm_test_check_broadcast_rgb_cea_mode_yuv420 ======= [12:42:18] [PASSED] Automatic [12:42:18] [PASSED] Full [12:42:18] [PASSED] Limited 16:235 [12:42:18] == [PASSED] drm_test_check_broadcast_rgb_cea_mode_yuv420 === [12:42:18] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_changed [12:42:18] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_not_changed [12:42:18] [PASSED] drm_test_check_disable_connector [12:42:18] [PASSED] drm_test_check_hdmi_funcs_reject_rate [12:42:18] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_rgb [12:42:18] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_yuv420 [12:42:18] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv422 [12:42:18] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv420 [12:42:18] [PASSED] drm_test_check_driver_unsupported_fallback_yuv420 [12:42:18] [PASSED] drm_test_check_output_bpc_crtc_mode_changed [12:42:18] [PASSED] drm_test_check_output_bpc_crtc_mode_not_changed [12:42:18] [PASSED] drm_test_check_output_bpc_dvi [12:42:18] [PASSED] drm_test_check_output_bpc_format_vic_1 [12:42:18] [PASSED] drm_test_check_output_bpc_format_display_8bpc_only [12:42:18] [PASSED] drm_test_check_output_bpc_format_display_rgb_only [12:42:18] [PASSED] drm_test_check_output_bpc_format_driver_8bpc_only [12:42:18] [PASSED] drm_test_check_output_bpc_format_driver_rgb_only [12:42:18] [PASSED] drm_test_check_tmds_char_rate_rgb_8bpc [12:42:18] [PASSED] drm_test_check_tmds_char_rate_rgb_10bpc [12:42:18] [PASSED] drm_test_check_tmds_char_rate_rgb_12bpc [12:42:18] ============ drm_test_check_hdmi_color_format ============= [12:42:18] [PASSED] AUTO -> RGB [12:42:18] [PASSED] YCBCR422 -> YUV422 [12:42:18] [PASSED] YCBCR420 -> YUV420 [12:42:18] [PASSED] YCBCR444 -> YUV444 [12:42:18] [PASSED] RGB -> RGB [12:42:18] ======== [PASSED] drm_test_check_hdmi_color_format ========= [12:42:18] ======== drm_test_check_hdmi_color_format_420_only ======== [12:42:18] [PASSED] RGB should fail [12:42:18] [PASSED] YUV444 should fail [12:42:18] [PASSED] YUV422 should fail [12:42:18] [PASSED] YUV420 should work [12:42:18] ==== [PASSED] drm_test_check_hdmi_color_format_420_only ==== [12:42:18] ===== [PASSED] drm_atomic_helper_connector_hdmi_check ====== [12:42:18] === drm_atomic_helper_connector_hdmi_reset (6 subtests) ==== [12:42:18] [PASSED] drm_test_check_broadcast_rgb_value [12:42:18] [PASSED] drm_test_check_bpc_8_value [12:42:18] [PASSED] drm_test_check_bpc_10_value [12:42:18] [PASSED] drm_test_check_bpc_12_value [12:42:18] [PASSED] drm_test_check_format_value [12:42:18] [PASSED] drm_test_check_tmds_char_value [12:42:18] ===== [PASSED] drm_atomic_helper_connector_hdmi_reset ====== [12:42:18] = drm_atomic_helper_connector_hdmi_mode_valid (7 subtests) = [12:42:18] [PASSED] drm_test_check_mode_valid [12:42:18] [PASSED] drm_test_check_mode_valid_reject [12:42:18] [PASSED] drm_test_check_mode_valid_reject_rate [12:42:18] [PASSED] drm_test_check_mode_valid_reject_max_clock [12:42:18] [PASSED] drm_test_check_mode_valid_yuv420_only_max_clock [12:42:18] [PASSED] drm_test_check_mode_valid_reject_yuv420_only_connector [12:42:18] [PASSED] drm_test_check_mode_valid_accept_yuv420_also_connector_rgb [12:42:18] === [PASSED] drm_atomic_helper_connector_hdmi_mode_valid === [12:42:18] = drm_atomic_helper_connector_hdmi_infoframes (5 subtests) = [12:42:18] [PASSED] drm_test_check_infoframes [12:42:18] [PASSED] drm_test_check_reject_avi_infoframe [12:42:18] [PASSED] drm_test_check_reject_hdr_infoframe_bpc_8 [12:42:18] [PASSED] drm_test_check_reject_hdr_infoframe_bpc_10 [12:42:18] [PASSED] drm_test_check_reject_audio_infoframe [12:42:18] === [PASSED] drm_atomic_helper_connector_hdmi_infoframes === [12:42:18] ================= drm_managed (2 subtests) ================= [12:42:18] [PASSED] drm_test_managed_release_action [12:42:18] [PASSED] drm_test_managed_run_action [12:42:18] =================== [PASSED] drm_managed =================== [12:42:18] =================== drm_mm (6 subtests) ==================== [12:42:18] [PASSED] drm_test_mm_init [12:42:18] [PASSED] drm_test_mm_debug [12:42:18] [PASSED] drm_test_mm_align32 [12:42:18] [PASSED] drm_test_mm_align64 [12:42:18] [PASSED] drm_test_mm_lowest [12:42:18] [PASSED] drm_test_mm_highest [12:42:18] ===================== [PASSED] drm_mm ====================== [12:42:18] ============= drm_modes_analog_tv (5 subtests) ============= [12:42:18] [PASSED] drm_test_modes_analog_tv_mono_576i [12:42:18] [PASSED] drm_test_modes_analog_tv_ntsc_480i [12:42:18] [PASSED] drm_test_modes_analog_tv_ntsc_480i_inlined [12:42:18] [PASSED] drm_test_modes_analog_tv_pal_576i [12:42:18] [PASSED] drm_test_modes_analog_tv_pal_576i_inlined [12:42:18] =============== [PASSED] drm_modes_analog_tv =============== [12:42:18] ============== drm_plane_helper (2 subtests) =============== [12:42:18] =============== drm_test_check_plane_state ================ [12:42:18] [PASSED] clipping_simple [12:42:18] [PASSED] clipping_rotate_reflect [12:42:18] [PASSED] positioning_simple [12:42:18] [PASSED] upscaling [12:42:18] [PASSED] downscaling [12:42:18] [PASSED] rounding1 [12:42:18] [PASSED] rounding2 [12:42:18] [PASSED] rounding3 [12:42:18] [PASSED] rounding4 [12:42:18] =========== [PASSED] drm_test_check_plane_state ============ [12:42:18] =========== drm_test_check_invalid_plane_state ============ [12:42:18] [PASSED] positioning_invalid [12:42:18] [PASSED] upscaling_invalid [12:42:18] [PASSED] downscaling_invalid [12:42:18] ======= [PASSED] drm_test_check_invalid_plane_state ======== [12:42:18] ================ [PASSED] drm_plane_helper ================= [12:42:18] ====== drm_connector_helper_tv_get_modes (1 subtest) ======= [12:42:18] ====== drm_test_connector_helper_tv_get_modes_check ======= [12:42:18] [PASSED] None [12:42:18] [PASSED] PAL [12:42:18] [PASSED] NTSC [12:42:18] [PASSED] Both, NTSC Default [12:42:18] [PASSED] Both, PAL Default [12:42:18] [PASSED] Both, NTSC Default, with PAL on command-line [12:42:18] [PASSED] Both, PAL Default, with NTSC on command-line [12:42:18] == [PASSED] drm_test_connector_helper_tv_get_modes_check === [12:42:18] ======== [PASSED] drm_connector_helper_tv_get_modes ======== [12:42:18] ================== drm_rect (9 subtests) =================== [12:42:18] [PASSED] drm_test_rect_clip_scaled_div_by_zero [12:42:18] [PASSED] drm_test_rect_clip_scaled_not_clipped [12:42:18] [PASSED] drm_test_rect_clip_scaled_clipped [12:42:18] [PASSED] drm_test_rect_clip_scaled_signed_vs_unsigned [12:42:18] ================= drm_test_rect_intersect ================= [12:42:18] [PASSED] top-left x bottom-right: 2x2+1+1 x 2x2+0+0 [12:42:18] [PASSED] top-right x bottom-left: 2x2+0+0 x 2x2+1-1 [12:42:18] [PASSED] bottom-left x top-right: 2x2+1-1 x 2x2+0+0 [12:42:18] [PASSED] bottom-right x top-left: 2x2+0+0 x 2x2+1+1 [12:42:18] [PASSED] right x left: 2x1+0+0 x 3x1+1+0 [12:42:18] [PASSED] left x right: 3x1+1+0 x 2x1+0+0 [12:42:18] [PASSED] up x bottom: 1x2+0+0 x 1x3+0-1 [12:42:18] [PASSED] bottom x up: 1x3+0-1 x 1x2+0+0 [12:42:18] [PASSED] touching corner: 1x1+0+0 x 2x2+1+1 [12:42:18] [PASSED] touching side: 1x1+0+0 x 1x1+1+0 [12:42:18] [PASSED] equal rects: 2x2+0+0 x 2x2+0+0 [12:42:18] [PASSED] inside another: 2x2+0+0 x 1x1+1+1 [12:42:18] [PASSED] far away: 1x1+0+0 x 1x1+3+6 [12:42:18] [PASSED] points intersecting: 0x0+5+10 x 0x0+5+10 [12:42:18] [PASSED] points not intersecting: 0x0+0+0 x 0x0+5+10 [12:42:18] ============= [PASSED] drm_test_rect_intersect ============= [12:42:18] ================ drm_test_rect_calc_hscale ================ [12:42:18] [PASSED] normal use [12:42:18] [PASSED] out of max range [12:42:18] [PASSED] out of min range [12:42:18] [PASSED] zero dst [12:42:18] [PASSED] negative src [12:42:18] [PASSED] negative dst [12:42:18] ============ [PASSED] drm_test_rect_calc_hscale ============ [12:42:18] ================ drm_test_rect_calc_vscale ================ [12:42:18] [PASSED] normal use [12:42:18] [PASSED] out of max range [12:42:18] [PASSED] out of min range [12:42:18] [PASSED] zero dst [12:42:18] [PASSED] negative src [12:42:18] [PASSED] negative dst [12:42:18] ============ [PASSED] drm_test_rect_calc_vscale ============ [12:42:18] ================== drm_test_rect_rotate =================== [12:42:18] [PASSED] reflect-x [12:42:18] [PASSED] reflect-y [12:42:18] [PASSED] rotate-0 [12:42:18] [PASSED] rotate-90 [12:42:18] [PASSED] rotate-180 [12:42:18] [PASSED] rotate-270 [12:42:18] ============== [PASSED] drm_test_rect_rotate =============== [12:42:18] ================ drm_test_rect_rotate_inv ================= [12:42:18] [PASSED] reflect-x [12:42:18] [PASSED] reflect-y [12:42:18] [PASSED] rotate-0 [12:42:18] [PASSED] rotate-90 [12:42:18] [PASSED] rotate-180 [12:42:18] [PASSED] rotate-270 [12:42:18] ============ [PASSED] drm_test_rect_rotate_inv ============= [12:42:18] ==================== [PASSED] drm_rect ===================== [12:42:18] ============ drm_sysfb_modeset_test (1 subtest) ============ [12:42:18] ============ drm_test_sysfb_build_fourcc_list ============= [12:42:18] [PASSED] no native formats [12:42:18] [PASSED] XRGB8888 as native format [12:42:18] [PASSED] remove duplicates [12:42:18] [PASSED] convert alpha formats [12:42:18] [PASSED] random formats [12:42:18] ======== [PASSED] drm_test_sysfb_build_fourcc_list ========= [12:42:18] ============= [PASSED] drm_sysfb_modeset_test ============== [12:42:18] ================== drm_fixp (2 subtests) =================== [12:42:18] [PASSED] drm_test_int2fixp [12:42:18] [PASSED] drm_test_sm2fixp [12:42:18] ==================== [PASSED] drm_fixp ===================== [12:42:18] ============================================================ [12:42:18] Testing complete. Ran 637 tests: passed: 637 [12:42:18] Elapsed time: 26.692s total, 1.782s configuring, 24.744s building, 0.145s running + /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/ttm/tests/.kunitconfig [12:42:18] Configuring KUnit Kernel ... Regenerating .config ... Populating config with: $ make ARCH=um O=.kunit olddefconfig [12:42:20] Building KUnit Kernel ... Populating config with: $ make ARCH=um O=.kunit olddefconfig Building with: $ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48 [12:42:30] Starting KUnit Kernel (1/1)... [12:42:30] ============================================================ Running tests with: $ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt [12:42:30] ================= ttm_device (5 subtests) ================== [12:42:30] [PASSED] ttm_device_init_basic [12:42:30] [PASSED] ttm_device_init_multiple [12:42:30] [PASSED] ttm_device_fini_basic [12:42:30] [PASSED] ttm_device_init_no_vma_man [12:42:30] ================== ttm_device_init_pools ================== [12:42:30] [PASSED] No DMA allocations, no DMA32 required [12:42:30] [PASSED] DMA allocations, DMA32 required [12:42:30] [PASSED] No DMA allocations, DMA32 required [12:42:30] [PASSED] DMA allocations, no DMA32 required [12:42:30] ============== [PASSED] ttm_device_init_pools ============== [12:42:30] =================== [PASSED] ttm_device ==================== [12:42:30] ================== ttm_pool (8 subtests) =================== [12:42:30] ================== ttm_pool_alloc_basic =================== [12:42:30] [PASSED] One page [12:42:30] [PASSED] More than one page [12:42:30] [PASSED] Above the allocation limit [12:42:30] [PASSED] One page, with coherent DMA mappings enabled [12:42:30] [PASSED] Above the allocation limit, with coherent DMA mappings enabled [12:42:30] ============== [PASSED] ttm_pool_alloc_basic =============== [12:42:30] ============== ttm_pool_alloc_basic_dma_addr ============== [12:42:30] [PASSED] One page [12:42:30] [PASSED] More than one page [12:42:30] [PASSED] Above the allocation limit [12:42:30] [PASSED] One page, with coherent DMA mappings enabled [12:42:30] [PASSED] Above the allocation limit, with coherent DMA mappings enabled [12:42:30] ========== [PASSED] ttm_pool_alloc_basic_dma_addr ========== [12:42:30] [PASSED] ttm_pool_alloc_order_caching_match [12:42:30] [PASSED] ttm_pool_alloc_caching_mismatch [12:42:30] [PASSED] ttm_pool_alloc_order_mismatch [12:42:30] [PASSED] ttm_pool_free_dma_alloc [12:42:30] [PASSED] ttm_pool_free_no_dma_alloc [12:42:30] [PASSED] ttm_pool_fini_basic [12:42:30] ==================== [PASSED] ttm_pool ===================== [12:42:30] ================ ttm_resource (8 subtests) ================= [12:42:30] ================= ttm_resource_init_basic ================= [12:42:30] [PASSED] Init resource in TTM_PL_SYSTEM [12:42:30] [PASSED] Init resource in TTM_PL_VRAM [12:42:30] [PASSED] Init resource in a private placement [12:42:30] [PASSED] Init resource in TTM_PL_SYSTEM, set placement flags [12:42:30] ============= [PASSED] ttm_resource_init_basic ============= [12:42:30] [PASSED] ttm_resource_init_pinned [12:42:30] [PASSED] ttm_resource_fini_basic [12:42:30] [PASSED] ttm_resource_manager_init_basic [12:42:30] [PASSED] ttm_resource_manager_usage_basic [12:42:30] [PASSED] ttm_resource_manager_set_used_basic [12:42:30] [PASSED] ttm_sys_man_alloc_basic [12:42:30] [PASSED] ttm_sys_man_free_basic [12:42:30] ================== [PASSED] ttm_resource =================== [12:42:30] =================== ttm_tt (15 subtests) =================== [12:42:30] ==================== ttm_tt_init_basic ==================== [12:42:30] [PASSED] Page-aligned size [12:42:30] [PASSED] Extra pages requested [12:42:30] ================ [PASSED] ttm_tt_init_basic ================ [12:42:30] [PASSED] ttm_tt_init_misaligned [12:42:30] [PASSED] ttm_tt_fini_basic [12:42:30] [PASSED] ttm_tt_fini_sg [12:42:30] [PASSED] ttm_tt_fini_shmem [12:42:30] [PASSED] ttm_tt_create_basic [12:42:30] [PASSED] ttm_tt_create_invalid_bo_type [12:42:30] [PASSED] ttm_tt_create_ttm_exists [12:42:30] [PASSED] ttm_tt_create_failed [12:42:30] [PASSED] ttm_tt_destroy_basic [12:42:30] [PASSED] ttm_tt_populate_null_ttm [12:42:30] [PASSED] ttm_tt_populate_populated_ttm [12:42:30] [PASSED] ttm_tt_unpopulate_basic [12:42:30] [PASSED] ttm_tt_unpopulate_empty_ttm [12:42:30] [PASSED] ttm_tt_swapin_basic [12:42:30] ===================== [PASSED] ttm_tt ====================== [12:42:30] =================== ttm_bo (14 subtests) =================== [12:42:30] =========== ttm_bo_reserve_optimistic_no_ticket =========== [12:42:30] [PASSED] Cannot be interrupted and sleeps [12:42:30] [PASSED] Cannot be interrupted, locks straight away [12:42:30] [PASSED] Can be interrupted, sleeps [12:42:30] ======= [PASSED] ttm_bo_reserve_optimistic_no_ticket ======= [12:42:30] [PASSED] ttm_bo_reserve_locked_no_sleep [12:42:30] [PASSED] ttm_bo_reserve_no_wait_ticket [12:42:30] [PASSED] ttm_bo_reserve_double_resv [12:42:30] [PASSED] ttm_bo_reserve_interrupted [12:42:30] [PASSED] ttm_bo_reserve_deadlock [12:42:30] [PASSED] ttm_bo_unreserve_basic [12:42:30] [PASSED] ttm_bo_unreserve_pinned [12:42:30] [PASSED] ttm_bo_unreserve_bulk [12:42:30] [PASSED] ttm_bo_fini_basic [12:42:30] [PASSED] ttm_bo_fini_shared_resv [12:42:30] [PASSED] ttm_bo_pin_basic [12:42:30] [PASSED] ttm_bo_pin_unpin_resource [12:42:30] [PASSED] ttm_bo_multiple_pin_one_unpin [12:42:30] ===================== [PASSED] ttm_bo ====================== [12:42:30] ============== ttm_bo_validate (22 subtests) =============== [12:42:30] ============== ttm_bo_init_reserved_sys_man =============== [12:42:30] [PASSED] Buffer object for userspace [12:42:30] [PASSED] Kernel buffer object [12:42:30] [PASSED] Shared buffer object [12:42:30] ========== [PASSED] ttm_bo_init_reserved_sys_man =========== [12:42:30] ============== ttm_bo_init_reserved_mock_man ============== [12:42:30] [PASSED] Buffer object for userspace [12:42:30] [PASSED] Kernel buffer object [12:42:30] [PASSED] Shared buffer object [12:42:30] ========== [PASSED] ttm_bo_init_reserved_mock_man ========== [12:42:30] [PASSED] ttm_bo_init_reserved_resv [12:42:30] ================== ttm_bo_validate_basic ================== [12:42:30] [PASSED] Buffer object for userspace [12:42:30] [PASSED] Kernel buffer object [12:42:30] [PASSED] Shared buffer object [12:42:30] ============== [PASSED] ttm_bo_validate_basic ============== [12:42:30] [PASSED] ttm_bo_validate_invalid_placement [12:42:30] ============= ttm_bo_validate_same_placement ============== [12:42:30] [PASSED] System manager [12:42:30] [PASSED] VRAM manager [12:42:30] ========= [PASSED] ttm_bo_validate_same_placement ========== [12:42:30] [PASSED] ttm_bo_validate_failed_alloc [12:42:30] [PASSED] ttm_bo_validate_pinned [12:42:30] [PASSED] ttm_bo_validate_busy_placement [12:42:30] ================ ttm_bo_validate_multihop ================= [12:42:30] [PASSED] Buffer object for userspace [12:42:30] [PASSED] Kernel buffer object [12:42:30] [PASSED] Shared buffer object [12:42:30] ============ [PASSED] ttm_bo_validate_multihop ============= [12:42:30] ========== ttm_bo_validate_no_placement_signaled ========== [12:42:30] [PASSED] Buffer object in system domain, no page vector [12:42:30] [PASSED] Buffer object in system domain with an existing page vector [12:42:30] ====== [PASSED] ttm_bo_validate_no_placement_signaled ====== [12:42:30] ======== ttm_bo_validate_no_placement_not_signaled ======== [12:42:30] [PASSED] Buffer object for userspace [12:42:30] [PASSED] Kernel buffer object [12:42:30] [PASSED] Shared buffer object [12:42:30] ==== [PASSED] ttm_bo_validate_no_placement_not_signaled ==== [12:42:30] [PASSED] ttm_bo_validate_move_fence_signaled [12:42:30] ========= ttm_bo_validate_move_fence_not_signaled ========= [12:42:30] [PASSED] Waits for GPU [12:42:30] [PASSED] Tries to lock straight away [12:42:30] ===== [PASSED] ttm_bo_validate_move_fence_not_signaled ===== [12:42:30] [PASSED] ttm_bo_validate_swapout [12:42:30] [PASSED] ttm_bo_validate_happy_evict [12:42:30] [PASSED] ttm_bo_validate_all_pinned_evict [12:42:30] [PASSED] ttm_bo_validate_allowed_only_evict [12:42:30] [PASSED] ttm_bo_validate_deleted_evict [12:42:30] [PASSED] ttm_bo_validate_busy_domain_evict [12:42:30] [PASSED] ttm_bo_validate_evict_gutting [12:42:30] [PASSED] ttm_bo_validate_recrusive_evict [12:42:30] ================= [PASSED] ttm_bo_validate ================= [12:42:30] ============================================================ [12:42:30] Testing complete. Ran 102 tests: passed: 102 [12:42:30] Elapsed time: 11.936s total, 1.804s configuring, 9.918s building, 0.186s running + cleanup ++ stat -c %u:%g /kernel + chown -R 1003:1003 /kernel ^ permalink raw reply [flat|nested] 12+ messages in thread
* ✓ Xe.CI.BAT: success for drm/xe: Adopt xe_log SIGID API for structured error reporting (rev2) 2026-08-12 12:34 [PATCH v2 0/3] drm/xe: Adopt xe_log SIGID API for structured error reporting Mallesh Koujalagi ` (4 preceding siblings ...) 2026-08-12 12:42 ` ✓ CI.KUnit: success " Patchwork @ 2026-08-12 13:31 ` Patchwork 5 siblings, 0 replies; 12+ messages in thread From: Patchwork @ 2026-08-12 13:31 UTC (permalink / raw) To: Mallesh, Koujalagi; +Cc: intel-xe [-- Attachment #1: Type: text/plain, Size: 891 bytes --] == Series Details == Series: drm/xe: Adopt xe_log SIGID API for structured error reporting (rev2) URL : https://patchwork.freedesktop.org/series/171725/ State : success == Summary == CI Bug Log - changes from xe-5580-96ddbb14986632af742523e68f90d51c138c57f0_BAT -> xe-pw-171725v2_BAT ==================================================== Summary ------- **SUCCESS** No regressions found. Participating hosts (12 -> 12) ------------------------------ No changes in participating hosts Changes ------- No changes found Build changes ------------- * Linux: xe-5580-96ddbb14986632af742523e68f90d51c138c57f0 -> xe-pw-171725v2 IGT_9052: 9052 xe-5580-96ddbb14986632af742523e68f90d51c138c57f0: 96ddbb14986632af742523e68f90d51c138c57f0 xe-pw-171725v2: 171725v2 == Logs == For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-171725v2/index.html [-- Attachment #2: Type: text/html, Size: 1439 bytes --] ^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2026-08-12 18:02 UTC | newest] Thread overview: 12+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2026-08-12 12:34 [PATCH v2 0/3] drm/xe: Adopt xe_log SIGID API for structured error reporting Mallesh Koujalagi 2026-08-12 12:34 ` [PATCH v2 1/3] drm/xe/log: DO NOT REVIEW Mallesh Koujalagi 2026-08-12 12:49 ` sashiko-bot 2026-08-12 12:34 ` [PATCH v2 2/3] drm/xe/pcode: Improve PCODE logging using xe_log helper Mallesh Koujalagi 2026-08-12 12:44 ` sashiko-bot 2026-08-12 12:53 ` Bhadane, Dnyaneshwar 2026-08-12 13:10 ` Mallesh, Koujalagi 2026-08-12 18:02 ` Umesh Nerlige Ramappa 2026-08-12 12:34 ` [PATCH v2 3/3] drm/xe/sysctrl: Add better sysctrl error reporting Mallesh Koujalagi 2026-08-12 12:41 ` ✗ CI.checkpatch: warning for drm/xe: Adopt xe_log SIGID API for structured error reporting (rev2) Patchwork 2026-08-12 12:42 ` ✓ CI.KUnit: success " Patchwork 2026-08-12 13:31 ` ✓ Xe.CI.BAT: " Patchwork
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.