GHES handles the PCI Express Error Section and also the Compute Express
Link (CXL) Protocol Error Section. Two of its functions depend on the
APEI PCIe AER logging/recovering support (ACPI_APEI_PCIEAER).
Make GHES select ACPI_APEI_PCIEAER and remove the conditional
compilation from the body of two static functions that handle the CPER
Error Sections mentioned above.
Signed-off-by: Fabio M. De Francesco <fabio.m.de.francesco@linux.intel.com>
---
drivers/acpi/apei/Kconfig | 2 ++
drivers/acpi/apei/ghes.c | 4 ----
2 files changed, 2 insertions(+), 4 deletions(-)
diff --git a/drivers/acpi/apei/Kconfig b/drivers/acpi/apei/Kconfig
index 070c07d68dfb..cdf3cfa233b9 100644
--- a/drivers/acpi/apei/Kconfig
+++ b/drivers/acpi/apei/Kconfig
@@ -23,6 +23,8 @@ config ACPI_APEI_GHES
select ACPI_HED
select IRQ_WORK
select GENERIC_ALLOCATOR
+ select PCIEAER
+ select ACPI_APEI_PCIEAER
select ARM_SDE_INTERFACE if ARM64
help
Generic Hardware Error Source provides a way to report
diff --git a/drivers/acpi/apei/ghes.c b/drivers/acpi/apei/ghes.c
index 97ee19f2cae0..d6fe5f020e96 100644
--- a/drivers/acpi/apei/ghes.c
+++ b/drivers/acpi/apei/ghes.c
@@ -613,7 +613,6 @@ static bool ghes_handle_arm_hw_error(struct acpi_hest_generic_data *gdata,
*/
static void ghes_handle_aer(struct acpi_hest_generic_data *gdata)
{
-#ifdef CONFIG_ACPI_APEI_PCIEAER
struct cper_sec_pcie *pcie_err = acpi_hest_get_payload(gdata);
if (pcie_err->validation_bits & CPER_PCIE_VALID_DEVICE_ID &&
@@ -646,7 +645,6 @@ static void ghes_handle_aer(struct acpi_hest_generic_data *gdata)
(struct aer_capability_regs *)
aer_info);
}
-#endif
}
static BLOCKING_NOTIFIER_HEAD(vendor_record_notify_list);
@@ -711,7 +709,6 @@ struct work_struct *cxl_cper_prot_err_work;
static void cxl_cper_post_prot_err(struct cxl_cper_sec_prot_err *prot_err,
int severity)
{
-#ifdef CONFIG_ACPI_APEI_PCIEAER
struct cxl_cper_prot_err_work_data wd;
u8 *dvsec_start, *cap_start;
@@ -767,7 +764,6 @@ static void cxl_cper_post_prot_err(struct cxl_cper_sec_prot_err *prot_err,
}
schedule_work(cxl_cper_prot_err_work);
-#endif
}
int cxl_cper_register_prot_err_work(struct work_struct *work)
--
2.51.1
On Tue, 4 Nov 2025 19:22:34 +0100
"Fabio M. De Francesco" <fabio.m.de.francesco@linux.intel.com> wrote:
> GHES handles the PCI Express Error Section and also the Compute Express
> Link (CXL) Protocol Error Section. Two of its functions depend on the
> APEI PCIe AER logging/recovering support (ACPI_APEI_PCIEAER).
>
> Make GHES select ACPI_APEI_PCIEAER and remove the conditional
> compilation from the body of two static functions that handle the CPER
> Error Sections mentioned above.
Hi Fabio,
I'm not seeing a justification here for the change and there may be
APEI platforms without PCI support. So is this just to simplify things or
is there a functional reason that it is necessary?
Jonathan
>
> Signed-off-by: Fabio M. De Francesco <fabio.m.de.francesco@linux.intel.com>
> ---
> drivers/acpi/apei/Kconfig | 2 ++
> drivers/acpi/apei/ghes.c | 4 ----
> 2 files changed, 2 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/acpi/apei/Kconfig b/drivers/acpi/apei/Kconfig
> index 070c07d68dfb..cdf3cfa233b9 100644
> --- a/drivers/acpi/apei/Kconfig
> +++ b/drivers/acpi/apei/Kconfig
> @@ -23,6 +23,8 @@ config ACPI_APEI_GHES
> select ACPI_HED
> select IRQ_WORK
> select GENERIC_ALLOCATOR
> + select PCIEAER
> + select ACPI_APEI_PCIEAER
> select ARM_SDE_INTERFACE if ARM64
> help
> Generic Hardware Error Source provides a way to report
> diff --git a/drivers/acpi/apei/ghes.c b/drivers/acpi/apei/ghes.c
> index 97ee19f2cae0..d6fe5f020e96 100644
> --- a/drivers/acpi/apei/ghes.c
> +++ b/drivers/acpi/apei/ghes.c
> @@ -613,7 +613,6 @@ static bool ghes_handle_arm_hw_error(struct acpi_hest_generic_data *gdata,
> */
> static void ghes_handle_aer(struct acpi_hest_generic_data *gdata)
> {
> -#ifdef CONFIG_ACPI_APEI_PCIEAER
> struct cper_sec_pcie *pcie_err = acpi_hest_get_payload(gdata);
>
> if (pcie_err->validation_bits & CPER_PCIE_VALID_DEVICE_ID &&
> @@ -646,7 +645,6 @@ static void ghes_handle_aer(struct acpi_hest_generic_data *gdata)
> (struct aer_capability_regs *)
> aer_info);
> }
> -#endif
> }
>
> static BLOCKING_NOTIFIER_HEAD(vendor_record_notify_list);
> @@ -711,7 +709,6 @@ struct work_struct *cxl_cper_prot_err_work;
> static void cxl_cper_post_prot_err(struct cxl_cper_sec_prot_err *prot_err,
> int severity)
> {
> -#ifdef CONFIG_ACPI_APEI_PCIEAER
> struct cxl_cper_prot_err_work_data wd;
> u8 *dvsec_start, *cap_start;
>
> @@ -767,7 +764,6 @@ static void cxl_cper_post_prot_err(struct cxl_cper_sec_prot_err *prot_err,
> }
>
> schedule_work(cxl_cper_prot_err_work);
> -#endif
> }
>
> int cxl_cper_register_prot_err_work(struct work_struct *work)
On 2025/11/11 23:42, Jonathan Cameron wrote: > On Tue, 4 Nov 2025 19:22:34 +0100 > "Fabio M. De Francesco" <fabio.m.de.francesco@linux.intel.com> wrote: > >> GHES handles the PCI Express Error Section and also the Compute Express >> Link (CXL) Protocol Error Section. Two of its functions depend on the >> APEI PCIe AER logging/recovering support (ACPI_APEI_PCIEAER). >> >> Make GHES select ACPI_APEI_PCIEAER and remove the conditional >> compilation from the body of two static functions that handle the CPER >> Error Sections mentioned above. > > Hi Fabio, > > I'm not seeing a justification here for the change and there may be > APEI platforms without PCI support. So is this just to simplify things or > is there a functional reason that it is necessary? I have the same worry, embedded system with ACPI support may don't have PCI. And for APEI, AER is one of the error type and optional. Thanks Hanjun
© 2016 - 2025 Red Hat, Inc.