[PATCH v4 00/12] CPER: Add Memory Error Section 2 support

From: Pierre Gondois

Date: Fri Nov 13 2026 - 14:04:19 EST


The support is mostly duplicated from Memory Error Section handling.
Other than differences coming from the content of Memory Error
Section 1 and 2, differences in the support are:

- v2 do not rely on a compact "struct cper_mem_err_compact" struct.
This structure was used to support older versions of the Memory
Error Section (1). This is not needed for the new structure.

- The compact version is also used by the tracing framework.
To avoid relying and propagating a non-standard record format,
through trace event (cf. extlog_mem event) the new trace event
prints each field individually.

The last patch of the serie was only build-tested due to the
absence of relevant hardware. apei_mce_report_mem_error() and
arch_apei_report_mem_error() implementations were also removed since
last version.

It will also require a proper handling from the rasdaemon. Applying
this last patch without rasdaemon support will silent the reports of
Memory Error Section 2 error, cf. ras_userspace_consumers() check.

Future:
- _OSC support (if agreed)
- Addition of arm64 tracepoints
https://lore.kernel.org/lkml/20261023170405.000060b8@xxxxxxxxxxxxxxxx/
- Emission of lossy CPER Mem error v1 tracepoints for legacy userspace
tools
https://lore.kernel.org/lkml/at0rs4parlHFGI7k@xxxxxxxxxxxxxxxxxxxxxxxxxx/


RFC: https://lore.kernel.org/all/20260929074659.2587216-1-pierre.gondois@xxxxxxx/#t
V1: https://lore.kernel.org/all/20261019145643.1877246-1-pierre.gondois@xxxxxxx/
- Corrections from Jonathan's review
- New patch:
[PATCH v2 4/6] EDAC/ghes: Extract error report initialization
- Last patch not in RFC as it has been reviewed by Jonathan@
[PATCH v2 6/6] ACPI: extlog: add Memory Error Section 2 trace event
V2:
- Updated ghes_edac_init_error() to ghes_edac_init_error_desc(),
which now only acts on the input "struct edac_raw_error_desc"
+ added lockdep_assert_held() to ghes_edac_init_error_desc()
- Accumulate failures with "queued |=" in ghes_do_proc()
- New PATCH:
[PATCH v3 5/7] ACPI: APEI: Extract common memory failure handling

V3:
- Added <linux/bits.h> include
- Used pr_warn_rate_limited()
- Removed one warn for smbios handle overflow
- Replaced __string() -> __string_len() in trace event

Added patch to us scnprintf():
- cper: Return actual bytes written by DIMM location helpers
Added patches to increase buffer size and prevent overflows:
- EDAC/ghes: Small buffer fixes for mem other_detail helpers
- efi/cper: Pass buffer length to memory location helpers
- efi/cper: Pass buffer length to DIMM location helpers

Pierre Gondois (12):
cper: use BIT_ULL() for processor and memory validation bits
cper: add Memory Error Section 2 structures
cper: add helpers to handle Memory Error Section 2
cper: Return actual bytes written by DIMM location helpers
EDAC/ghes: Extract error report initialization
ACPI: APEI: Extract common memory failure handling
ACPI: APEI: add separate Memory Error Section 2 handlers
ACPI: extlog: add Memory Error Section 2 trace event
efi/cper: Pass buffer length to DIMM location helpers
efi/cper: Pass buffer length to memory location helpers
EDAC/ghes: Small buffer fixes for mem other_detail helpers
efi/cper: Increase memory error location and detail buffer sizes

drivers/acpi/acpi_extlog.c | 6 +
drivers/acpi/apei/ghes.c | 58 ++++++++--
drivers/edac/ghes_edac.c | 211 ++++++++++++++++++++++++++++--------
drivers/firmware/efi/cper.c | 137 ++++++++++++++++++++---
drivers/ras/ras.c | 1 +
include/acpi/ghes.h | 2 +
include/linux/cper.h | 138 ++++++++++++++++-------
include/linux/edac.h | 2 +-
include/ras/ras_event.h | 102 +++++++++++++++++
9 files changed, 548 insertions(+), 109 deletions(-)

--
2.43.0