[PATCH v5 0/5] acpi/ghes, cper, cxl: Process CXL CPER Protocol errors

From: Smita Koralahalli
Date: Tue Jan 14 2025 - 07:05:35 EST


This patchset adds logging support for CXL CPER endpoint and port protocol
errors.

The first 3 patches update the existing codebase to support CXL CPER
Protocol error reporting.

The last 2 patches introduce recognizing and reporting CXL CPER Protocol
errors.

Should be based on top of:
https://lore.kernel.org/linux-cxl/20250107143852.3692571-1-terry.bowman@xxxxxxx

Link to v4:
https://lore.kernel.org/linux-cxl/20241217022032.87298-1-Smita.KoralahalliChannabasappa@xxxxxxx

Changes in v4 -> v5:
[Dave]: Reviewed-by tags.
[Jonathan]: Remove blank line.
[Jonathan, Ira]: Change CXL -> "CXL".
[Ira]: Fix build error for CONFIG_ACPI_APEI_PCIEAER.

Changes in v3 -> v4:
[Ira]: Use memcpy() for RAS Cap struct.
[Jonathan]: Commit description edits.
[Jonathan]: Use separate work registration functions for protocol and
component errors.
[Jonathan, Ira]: Replace flags with separate functions for port and
device errors.
[Jonathan]: Use goto for register and unregister calls.

Changes in v2 -> v3:
[Dan]: Define a new workqueue for CXL CPER Protocol errors and avoid
reusing existing workqueue which handles CXL CPER events.
[Dan] Update function and struct names.
[Ira] Don't define common function get_cxl_devstate().
[Dan] Use switch cases rather than defining array of structures.
[Dan] Pass the entire cxl_cper_prot_err struct for CXL subsystem.
[Dan] Use pr_err_ratelimited().
[Dan] Use AER_ severities directly. Don't define CXL_ severities.
[Dan] Limit either to Device ID or Agent Info check.
[Dan] Validate size of RAS field matches expectations.

Changes in v2 -> v1:
[Jonathan] Refactor code for trace support. Rename get_cxl_dev()
to get_cxl_devstate().
[Jonathan] Cleanups for get_cxl_devstate().
[Alison, Jonathan]: Define array of structures for Device ID and Serial
number comparison.
[Dave] p_err -> rec/p_rec.
[Jonathan] Remove pr_warn.

Smita Koralahalli (5):
efi/cper, cxl: Prefix protocol error struct and function names with
cxl_
efi/cper, cxl: Make definitions and structures global
efi/cper, cxl: Remove cper_cxl.h
acpi/ghes, cper: Recognize and cache CXL Protocol errors
acpi/ghes, cxl/pci: Process CXL CPER Protocol Errors

drivers/acpi/apei/ghes.c | 103 ++++++++++++++++++++++++++++++++
drivers/cxl/core/pci.c | 62 +++++++++++++++++++
drivers/cxl/cxlpci.h | 9 +++
drivers/cxl/pci.c | 59 +++++++++++++++++-
drivers/firmware/efi/cper.c | 6 +-
drivers/firmware/efi/cper_cxl.c | 39 +-----------
drivers/firmware/efi/cper_cxl.h | 66 --------------------
include/cxl/event.h | 101 +++++++++++++++++++++++++++++++
include/linux/cper.h | 8 +++
9 files changed, 347 insertions(+), 106 deletions(-)
delete mode 100644 drivers/firmware/efi/cper_cxl.h

--
2.17.1