Re: [PATCH v3] acpi: Fix HED module initialization order when it is built-in
From: Jonathan Cameron
Date: Mon Jan 20 2025 - 06:04:38 EST
On Fri, 17 Jan 2025 10:29:57 +0800
Xiaofei Tan <tanxiaofei@xxxxxxxxxx> wrote:
> When the module HED is built-in, the module HED init is behind EVGED
> as the driver are in the same initcall level, then the order is determined
> by Makefile order. That order violates expectations. Because RAS records
> can't be handled in the special time window that EVGED has initialized
> while HED not.
>
> If the number of such RAS records is more than the APEI HEST error source
> number, the HEST resources could be occupied all, and then could affect
> subsequent RAS error reporting.
>
> Change the initcall level of HED to subsys_init to fix the issue. If build
> HED as a module, the problem remains. To solve this problem completely,
> change the ACPI_HED from tristate to bool.
>
> Reviewed-by: Jonathan Cameron <Jonathan.Cameron@xxxxxxxxxx>
Given the change in approach (even though I reviewed this internally)
should probably have dropped my RB. Anyhow, consider this me
giving it again on list.
Thanks,
Jonathan
> Signed-off-by: Xiaofei Tan <tanxiaofei@xxxxxxxxxx>
> ---
> drivers/acpi/Kconfig | 2 +-
> drivers/acpi/hed.c | 1 +
> 2 files changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/acpi/Kconfig b/drivers/acpi/Kconfig
> index d81b55f5068c..7f10aa38269d 100644
> --- a/drivers/acpi/Kconfig
> +++ b/drivers/acpi/Kconfig
> @@ -452,7 +452,7 @@ config ACPI_SBS
> the modules will be called sbs and sbshc.
>
> config ACPI_HED
> - tristate "Hardware Error Device"
> + bool "Hardware Error Device"
> help
> This driver supports the Hardware Error Device (PNP0C33),
> which is used to report some hardware errors notified via
> diff --git a/drivers/acpi/hed.c b/drivers/acpi/hed.c
> index 7652515a6be1..677dfcce2990 100644
> --- a/drivers/acpi/hed.c
> +++ b/drivers/acpi/hed.c
> @@ -81,6 +81,7 @@ static struct acpi_driver acpi_hed_driver = {
> },
> };
> module_acpi_driver(acpi_hed_driver);
> +subsys_initcall(acpi_hed_driver_init);
>
> MODULE_AUTHOR("Huang Ying");
> MODULE_DESCRIPTION("ACPI Hardware Error Device Driver");