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.
Include asm/acpi.h in cper-x86.c to provide arch_apei_report_x86_error() declaration in ACPI-disabled builds. Signed-off-by: Ahmed Tiba <[email protected]> --- drivers/Makefile | 1 + drivers/acpi/Kconfig | 4 ++++ drivers/acpi/apei/Kconfig | 1 + drivers/acpi/apei/Makefile | 2 +- drivers/firmware/efi/cper-x86.c | 1 + include/acpi/ghes.h | 10 ++++++---- include/cxl/event.h | 2 +- 7 files changed, 15 insertions(+), 6 deletions(-) diff --git a/drivers/Makefile b/drivers/Makefile index 0841ea851847..27a664cb45ea 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 f165d14cf61a..13ef0e99f840 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 428458c623f0..ddb62638eb02 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 f57f3b009d8e..66588d6be56f 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/drivers/firmware/efi/cper-x86.c b/drivers/firmware/efi/cper-x86.c index 3949d7b5e808..aa9388284e65 100644 --- a/drivers/firmware/efi/cper-x86.c +++ b/drivers/firmware/efi/cper-x86.c @@ -3,6 +3,7 @@ #include <linux/cper.h> #include <linux/acpi.h> +#include <asm/acpi.h> /* * We don't need a "CPER_IA" prefix since these are all locally defined. diff --git a/include/acpi/ghes.h b/include/acpi/ghes.h index 8d7e5caef3f1..2ffab36b6154 100644 --- a/include/acpi/ghes.h +++ b/include/acpi/ghes.h @@ -83,15 +83,17 @@ int devm_ghes_register_vendor_record_notifier(struct device *dev, 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
