Re: [RFC PATCH 0/6] CPER: Add Memory Error Section 2 support

From: Jonathan Cameron

Date: Tue Sep 29 2026 - 12:36:34 EST


On Tue, 29 Sep 2026 09:45:59 +0200
Pierre Gondois <pierre.gondois@xxxxxxx> wrote:

> Add support for Memory Error Section 2 records.
>
> Extend cper_mem_err_compact to hold both legacy and section-2 records.
> Add a common parser and convert the CPER, GHES, EDAC, extlog and x86 APEI
> paths to use it.
>
> The extlog_mem_event payload layout changes with this series.
> Compatibility with existing userspace decoders still needs to be
> addressed. More specifically, the rasdaemon relies on the current
> struct cper_mem_err_compact definition.
> Either:
> A-
> this patchset should not modify struct cper_mem_err_compact and
> create a new structure to handle Memory Error Section 2 events,
> but this would ignore the similarities of Memory Error Section (1)/2
> B-
> userspace should not rely on the struct cper_mem_err_compact
> layout. extlog_mem_event trace events should instead emit data
> that relies on the actual layout of the CPER records, as defined
> in the ACPI spec.
>
> I am looking for guidance on how to handle the above question.
> Current implementation lean toward B, but emits data in the trace
> event that maps the new/updated struct cper_mem_err_compact.

My initial thought is a no to modifying the usespace ABI.

It isn't particularly painful to just have separate handling code
for the new record. Unfortunately the ext_log tracepoints don't
split out the fields in a fashion that would let you change
the structure. Other RAS tracepoints do it field by field which
would have been possible to augment - even then it would have
required care to deal with field size changes.

It may be worth considering a much more 'expanded' tracepoint for
memory error section 2 to reduce similar future extension problems.
That is express ever field and don't use a compact structure at all.

Mauro, perhaps you can give input on what works better over the
long term?


Jonathan

>
> Pierre Gondois (6):
> ACPI: extlog: fix extlog_mem_event build issue
> cper: add Memory Error Section 2 structures
> cper: extend cper_mem_err_compact struct
> cper: add helpers to handle Memory Error Section 2
> x86/mce/apei: switch cper_sec_mem_err struct users to compact CPER
> records
> cper: make cper_mem_err_pack() static
>
> arch/x86/include/asm/mce.h | 4 +-
> arch/x86/kernel/acpi/apei.c | 2 +-
> arch/x86/kernel/cpu/mce/apei.c | 2 +-
> drivers/acpi/acpi_extlog.c | 23 +++-
> drivers/acpi/apei/apei-base.c | 2 +-
> drivers/acpi/apei/ghes.c | 20 +--
> drivers/edac/ghes_edac.c | 26 ++--
> drivers/firmware/efi/cper.c | 219 +++++++++++++++++++++++++++------
> include/acpi/apei.h | 2 +-
> include/linux/cper.h | 58 +++++++--
> include/ras/ras_event.h | 4 +-
> 11 files changed, 283 insertions(+), 79 deletions(-)
>
> --
> 2.43.0