[PATCH v2 08/11] ACPI: APEI: introduce GHES helper
From: Ahmed Tiba <hidden>
Date: 2026-02-20 13:43:08
Also in:
linux-acpi, linux-devicetree, linux-doc
Subsystem:
acpi, acpi apei, acpi component architecture (acpica), compute express link (cxl), the rest · Maintainers:
"Rafael J. Wysocki", Saket Dumbre, Davidlohr Bueso, Jonathan Cameron, Dave Jiang, Alison Schofield, Vishal Verma, Dan Williams, Linus Torvalds
Add a dedicated GHES_CPER_HELPERS Kconfig entry so the shared helper code can be built even when ACPI_APEI_GHES is disabled. Update the build glue and headers to depend on the new symbol. Signed-off-by: Ahmed Tiba <redacted> --- drivers/Makefile | 1 + drivers/acpi/Kconfig | 4 ++++ drivers/acpi/apei/Kconfig | 1 + drivers/acpi/apei/Makefile | 2 +- include/acpi/ghes.h | 10 ++++++---- include/cxl/event.h | 2 +- 6 files changed, 14 insertions(+), 6 deletions(-)
diff --git a/drivers/Makefile b/drivers/Makefile
index 53fbd2e0acdd..3b98d3b44a35 100644
--- a/drivers/Makefile
+++ b/drivers/Makefile@@ -31,6 +31,7 @@ obj-y += idle/ obj-y += char/ipmi/ obj-$(CONFIG_ACPI) += acpi/ +obj-$(CONFIG_GHES_CPER_HELPERS) += acpi/apei/ghes_cper.o # PnP must come after ACPI since it will eventually need to check if acpi # was used and do nothing if so
diff --git a/drivers/acpi/Kconfig b/drivers/acpi/Kconfig
index df0ff0764d0d..153ec8de6490 100644
--- a/drivers/acpi/Kconfig
+++ b/drivers/acpi/Kconfig@@ -6,6 +6,10 @@ config ARCH_SUPPORTS_ACPI bool +config GHES_CPER_HELPERS + bool + select UEFI_CPER + menuconfig ACPI bool "ACPI (Advanced Configuration and Power Interface) Support" depends on ARCH_SUPPORTS_ACPI
diff --git a/drivers/acpi/apei/Kconfig b/drivers/acpi/apei/Kconfig
index 070c07d68dfb..2f65070b4ba3 100644
--- a/drivers/acpi/apei/Kconfig
+++ b/drivers/acpi/apei/Kconfig@@ -21,6 +21,7 @@ config ACPI_APEI_GHES bool "APEI Generic Hardware Error Source" depends on ACPI_APEI select ACPI_HED + select GHES_CPER_HELPERS select IRQ_WORK select GENERIC_ALLOCATOR select ARM_SDE_INTERFACE if ARM64
diff --git a/drivers/acpi/apei/Makefile b/drivers/acpi/apei/Makefile
index b3774af70883..1a0b85923cd4 100644
--- a/drivers/acpi/apei/Makefile
+++ b/drivers/acpi/apei/Makefile@@ -1,6 +1,6 @@ # SPDX-License-Identifier: GPL-2.0 obj-$(CONFIG_ACPI_APEI) += apei.o -obj-$(CONFIG_ACPI_APEI_GHES) += ghes.o ghes_cper.o +obj-$(CONFIG_ACPI_APEI_GHES) += ghes.o # clang versions prior to 18 may blow out the stack with KASAN ifeq ($(CONFIG_COMPILE_TEST)_$(CONFIG_CC_IS_CLANG)_$(call clang-min-version, 180000),y_y_) KASAN_SANITIZE_ghes.o := n
diff --git a/include/acpi/ghes.h b/include/acpi/ghes.h
index 7bea522c0657..fb9d53537b1e 100644
--- a/include/acpi/ghes.h
+++ b/include/acpi/ghes.h@@ -72,15 +72,17 @@ int ghes_register_vendor_record_notifier(struct notifier_block *nb); void ghes_unregister_vendor_record_notifier(struct notifier_block *nb); struct list_head *ghes_get_devices(void); - -void ghes_estatus_pool_region_free(unsigned long addr, u32 size); #else static inline struct list_head *ghes_get_devices(void) { return NULL; } - -static inline void ghes_estatus_pool_region_free(unsigned long addr, u32 size) { return; } #endif +#ifdef CONFIG_GHES_CPER_HELPERS int ghes_estatus_pool_init(unsigned int num_ghes); +void ghes_estatus_pool_region_free(unsigned long addr, u32 size); +#else +static inline int ghes_estatus_pool_init(unsigned int num_ghes) { return -ENODEV; } +static inline void ghes_estatus_pool_region_free(unsigned long addr, u32 size) { } +#endif static inline int acpi_hest_get_version(struct acpi_hest_generic_data *gdata) {
diff --git a/include/cxl/event.h b/include/cxl/event.h
index ff97fea718d2..2ebd65b0d9d6 100644
--- a/include/cxl/event.h
+++ b/include/cxl/event.h@@ -285,7 +285,7 @@ struct cxl_cper_prot_err_work_data { int severity; }; -#ifdef CONFIG_ACPI_APEI_GHES +#ifdef CONFIG_GHES_CPER_HELPERS int cxl_cper_register_work(struct work_struct *work); int cxl_cper_unregister_work(struct work_struct *work); int cxl_cper_kfifo_get(struct cxl_cper_work_data *wd);
--
2.43.0