ACPI: HED: Always initialize before evged
authorXiaofei Tan <tanxiaofei@huawei.com>
Wed, 12 Feb 2025 06:34:08 +0000 (14:34 +0800)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Tue, 18 Feb 2025 18:24:29 +0000 (19:24 +0100)
When the HED driver is built-in, it initializes after evged because they
both are at the same initcall level, so the initialization ordering
depends on the Makefile order.  However, this prevents RAS records
coming in between the evged driver initialization and the HED driver
initialization from being handled.

If the number of such RAS records is above the APEI HEST error source
number, the HEST resources may be exhausted, and that may affect
subsequent RAS error reporting.

To fix this issue, change the initcall level of HED to subsys_initcall
and prevent the driver from being built as a module by changing ACPI_HED
in Kconfig from "tristate" to "bool".

Signed-off-by: Xiaofei Tan <tanxiaofei@huawei.com>
Link: https://patch.msgid.link/20250212063408.927666-1-tanxiaofei@huawei.com
[ rjw: Changelog edits ]
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/acpi/Kconfig
drivers/acpi/hed.c

index d81b55f5068c40977454d3cc82050b792b2a60e9..7f10aa38269d2189e14c716d44ef5d0b8e53a3d1 100644 (file)
@@ -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
index 7652515a6be1e33728b8cb3751b7457b2124d1d4..3499f86c411e3b67da64cf4554ea8e9410fb0634 100644 (file)
@@ -80,7 +80,12 @@ static struct acpi_driver acpi_hed_driver = {
                .remove = acpi_hed_remove,
        },
 };
-module_acpi_driver(acpi_hed_driver);
+
+static int __init acpi_hed_driver_init(void)
+{
+       return acpi_bus_register_driver(&acpi_hed_driver);
+}
+subsys_initcall(acpi_hed_driver_init);
 
 MODULE_AUTHOR("Huang Ying");
 MODULE_DESCRIPTION("ACPI Hardware Error Device Driver");