From: Raag Jadav <raag.jadav@intel.com>
To: Badal Nilawar <badal.nilawar@intel.com>
Cc: intel-xe@lists.freedesktop.org, anshuman.gupta@intel.com,
rodrigo.vivi@intel.com, daniele.ceraolospurio@intel.com,
riana.tauro@intel.com, mallesh.koujalagi@intel.com,
aravind.iddamsetty@intel.com, himal.prasad.ghimiray@intel.com,
arvind.yadav@intel.com, syed.abdul.muqthyar.ahmed@intel.com,
nitin.r.gote@intel.com
Subject: Re: [PATCH v5 03/13] drm/xe/cper: Initialize Intel-specific section header
Date: Mon, 26 Oct 2026 06:57:56 +0100 [thread overview]
Message-ID: <at7r5F9TrkHza2xf@black.igk.intel.com> (raw)
In-Reply-To: <20261023043422.681260-18-badal.nilawar@intel.com>
On Fri, Oct 23, 2026 at 10:04:25AM +0530, Badal Nilawar wrote:
> Define the Intel-specific CPER header and initialize it
Please also use the same terminology in subject.
> from the error counter record for Intel GPU hardware errors.
>
> Assisted-by: LLM
> Signed-off-by: Badal Nilawar <badal.nilawar@intel.com>
> ---
> v5:
> - Move xe_cper_emit_counter() from patch 7 of rev4 to this patch to
> avoid code churn (Raag)
> - Use __packed for individual structures instead of #pragma pack (Raag)
> - Drop redundent 'err'/'error' references, shorten structure name (Raag)
> v4:
> - Split from "drm/xe/cper: Prepare CPER record" (Raag)
> - Add dedicated struct xe_cper_error_class (Michal)
> - Drop empty fill_fw_id() stub, leave a TODO instead
> v2:
> - Guard against NULL THIS_MODULE->srcversion (sashiko)
> ---
> drivers/gpu/drm/xe/xe_cper.c | 52 ++++++++++++++++++++++++++++++
> drivers/gpu/drm/xe/xe_cper_types.h | 51 +++++++++++++++++++++++++++++
> 2 files changed, 103 insertions(+)
> create mode 100644 drivers/gpu/drm/xe/xe_cper_types.h
>
> diff --git a/drivers/gpu/drm/xe/xe_cper.c b/drivers/gpu/drm/xe/xe_cper.c
> index a9044e708cac..3d7657517223 100644
> --- a/drivers/gpu/drm/xe/xe_cper.c
> +++ b/drivers/gpu/drm/xe/xe_cper.c
> @@ -6,18 +6,68 @@
> #include <linux/err.h>
> #include <linux/kernel.h>
> #include <linux/minmax.h>
> +#include <linux/pci.h>
>
> #include "xe_cper.h"
> +#include "xe_cper_types.h"
> #include "xe_device.h"
> #include "xe_printk.h"
> #include "xe_ras.h"
> #include "xe_ras_types.h"
>
> +static bool is_valid_sigid(u32 sigid)
Can simply be is_sigid().
> +{
> + return sigid != U32_MAX;
> +}
> +
> static bool is_hw_sigid(enum xe_sigid sigid)
> {
> return in_range(sigid, INTEL_SIGID_GPU_XE_HARDWARE_START, INTEL_SIGID_BATCH);
> }
>
> +static void cper_init_intel_hdr(struct xe_device *xe,
> + const struct xe_ras_error_class *counter,
This looks like can be less lines.
> + u64 first_timestamp, u32 sig_id, u32 error_count,
> + struct xe_cper_intel_hdr *ihdr)
> +{
> + ihdr->counter = *counter;
> + ihdr->validation_bits |= XE_CPER_VALID_LOCATION;
> +
> + if (first_timestamp) {
> + ihdr->first_timestamp = first_timestamp;
> + ihdr->validation_bits |= XE_CPER_VALID_FIRST_TIMESTAMP;
> + }
> +
> + if (is_valid_sigid(sig_id)) {
> + ihdr->sig_id = sig_id;
> + ihdr->validation_bits |= XE_CPER_VALID_SIG_ID;
> + }
> +
> + ihdr->error_count = error_count;
> +
> + strscpy(ihdr->pci_bdf, pci_name(to_pci_dev(xe->drm.dev)), sizeof(ihdr->pci_bdf));
> + ihdr->validation_bits |= XE_CPER_VALID_PCI_BDF;
> +
> +#ifdef MODULE
> + if (THIS_MODULE->srcversion) {
> + strscpy(ihdr->drv_version, THIS_MODULE->srcversion, sizeof(ihdr->drv_version));
> + ihdr->validation_bits |= XE_CPER_VALID_DRV_VERSION;
> + }
> +#endif
> +
> + /* TODO: fill fw_id and set XE_CPER_VALID_FW_ID */
Hm, see below.
> +}
> +
> +static void cper_emit_counter(struct xe_device *xe, int cper_sev, enum xe_sigid sigid,
> + const struct xe_ras_error_class *counter,
> + const struct xe_ras_get_counter_response *response)
> +{
> + struct xe_cper_intel_hdr ihdr = {};
> +
> + cper_init_intel_hdr(xe, counter, response->timestamp,
> + sigid, response->value, &ihdr);
> +}
> +
> static void cper_emit_hw_err(struct xe_device *xe, int cper_sev, enum xe_sigid sigid,
> const struct xe_ras_error_class *counter)
> {
> @@ -31,6 +81,8 @@ static void cper_emit_hw_err(struct xe_device *xe, int cper_sev, enum xe_sigid s
> xe_err(xe, "CPER: failed to get counter, skipping record\n");
> return;
> }
> +
> + cper_emit_counter(xe, cper_sev, sigid, counter, &response);
> }
>
> /**
> diff --git a/drivers/gpu/drm/xe/xe_cper_types.h b/drivers/gpu/drm/xe/xe_cper_types.h
> new file mode 100644
> index 000000000000..a8730ff62b69
> --- /dev/null
> +++ b/drivers/gpu/drm/xe/xe_cper_types.h
> @@ -0,0 +1,51 @@
> +/* SPDX-License-Identifier: MIT */
> +/*
> + * Copyright © 2026 Intel Corporation
> + */
> +
> +#ifndef _XE_CPER_TYPES_H_
> +#define _XE_CPER_TYPES_H_
> +
> +#include <linux/types.h>
> +
> +#include "xe_ras_types.h"
> +
> +/*
> + * Validation bits definition for validation_bits in struct
> + * xe_cper_intel_hdr. When set, corresponding fields in header
> + * contains valid data
> + */
> +#define XE_CPER_VALID_LOCATION 0x0001
> +#define XE_CPER_VALID_FIRST_TIMESTAMP 0x0002
> +#define XE_CPER_VALID_SIG_ID 0x0004
> +#define XE_CPER_VALID_PCI_BDF 0x0008
> +#define XE_CPER_VALID_DRV_VERSION 0x0010
> +
> +/**
> + * struct xe_cper_intel_hdr - Intel-specific CPER header
> + *
> + * Fixed-size header for the Intel GPU error section of a CPER record.
> + * All multi-byte fields are little-endian.
> + */
> +struct xe_cper_intel_hdr {
> + /** @counter: Error class (severity, component, location, cause) */
> + struct xe_ras_error_class counter;
> + /** @first_timestamp: First occurrence of this error class, in ticks */
> + u64 first_timestamp;
> + /** @sig_id: Aggregated error class SIG ID; set to U32_MAX if unknown */
> + u32 sig_id;
> + /** @error_count: Number of times this error has been observed */
> + u32 error_count;
> + /** @validation_bits: Raw u16 view of all valid bits */
> + u16 validation_bits;
> + /** @pci_bdf: PCI location string, format "DDDD:bb:dd.f" */
> + char pci_bdf[16];
> + /** @drv_version: Driver source version string (THIS_MODULE->srcversion) */
> + char drv_version[25];
> + /** @fw_id: Firmware version string (GFSP+PCODE+CSC+GUC or MNG+NUC+RAS+GUC) */
> + char fw_id[256];
Please introduce this member in the patch you actually use it.
Raag
> + /** @reserved: Reserved for future use, must be zero */
> + u8 reserved[5];
> +} __packed;
> +
> +#endif
> --
> 2.54.0
>
next prev parent reply other threads:[~2026-10-26 5:58 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-23 4:34 [PATCH v5 00/13] Add CPER logging support for CRI Badal Nilawar
2026-10-23 4:24 ` ✗ CI.checkpatch: warning for Add CPER logging support for CRI (rev5) Patchwork
2026-10-23 4:26 ` ✓ CI.KUnit: success " Patchwork
2026-10-23 4:34 ` [PATCH v5 01/13] drm/xe/cper: Add CPER reporting entry point for xe_log Badal Nilawar
2026-10-24 11:38 ` Raag Jadav
2026-10-23 4:34 ` [PATCH v5 02/13] drm/xe/cper: Retrieve the error counter record for CPER reporting Badal Nilawar
2026-10-24 11:50 ` Raag Jadav
2026-10-23 4:34 ` [PATCH v5 03/13] drm/xe/cper: Initialize Intel-specific section header Badal Nilawar
2026-10-23 4:30 ` sashiko-bot
2026-10-26 5:57 ` Raag Jadav [this message]
2026-10-23 4:34 ` [PATCH v5 04/13] drm/xe/cper: Construct CPER record for hardware errors Badal Nilawar
2026-10-26 9:54 ` Raag Jadav
2026-10-27 3:34 ` Nilawar, Badal
2026-10-23 4:34 ` [PATCH v5 05/13] drm/xe/cper: Log CPER records for aggregate counter retrieval Badal Nilawar
2026-10-26 11:31 ` Raag Jadav
2026-10-23 4:34 ` [PATCH v5 06/13] drm/xe/cper: Emit cper record to trace buf Badal Nilawar
2026-10-26 12:29 ` Raag Jadav
2026-10-27 4:21 ` Nilawar, Badal
2026-10-23 4:34 ` [PATCH v5 07/13] drm/xe/xe_ras: Report device memory errors using SIGID Badal Nilawar
2026-10-26 12:47 ` Raag Jadav
2026-10-26 18:31 ` Nilawar, Badal
2026-10-27 1:29 ` Raag Jadav
2026-10-27 6:03 ` Nilawar, Badal
2026-10-23 4:34 ` [PATCH v5 08/13] drm/xe/xe_ras: Report core compute " Badal Nilawar
2026-10-23 6:24 ` Mallesh, Koujalagi
2026-10-27 12:43 ` Raag Jadav
2026-10-23 4:34 ` [PATCH v5 09/13] drm/xe/xe_ras: Report soc internal " Badal Nilawar
2026-10-23 6:16 ` Mallesh, Koujalagi
2026-10-26 12:57 ` Raag Jadav
2026-10-23 4:34 ` [PATCH v5 10/13] drm/xe/xe_ras: Report correctable " Badal Nilawar
2026-10-26 15:17 ` Raag Jadav
2026-10-27 4:13 ` Raag Jadav
2026-10-23 4:34 ` [PATCH v5 11/13] drm/xe/xe_ras: Report unknown " Badal Nilawar
2026-10-23 4:34 ` [PATCH v5 12/13] drm/xe/xe_ras: Add support to retrieve info queue data Badal Nilawar
2026-10-23 4:34 ` [PATCH v5 13/13] drm/xe/cper: Prepare Intel CPER info records Badal Nilawar
2026-10-23 6:34 ` ✓ Xe.CI.FULL: success for Add CPER logging support for CRI (rev5) Patchwork
2026-10-23 6:35 ` ✓ Xe.CI.BAT: " Patchwork
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=at7r5F9TrkHza2xf@black.igk.intel.com \
--to=raag.jadav@intel.com \
--cc=anshuman.gupta@intel.com \
--cc=aravind.iddamsetty@intel.com \
--cc=arvind.yadav@intel.com \
--cc=badal.nilawar@intel.com \
--cc=daniele.ceraolospurio@intel.com \
--cc=himal.prasad.ghimiray@intel.com \
--cc=intel-xe@lists.freedesktop.org \
--cc=mallesh.koujalagi@intel.com \
--cc=nitin.r.gote@intel.com \
--cc=riana.tauro@intel.com \
--cc=rodrigo.vivi@intel.com \
--cc=syed.abdul.muqthyar.ahmed@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.