]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
ACPI: HED: Always initialize before evged
authorXiaofei Tan <tanxiaofei@huawei.com>
Wed, 12 Feb 2025 06:34:08 +0000 (14:34 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 4 Jun 2025 12:38:01 +0000 (14:38 +0200)
[ Upstream commit cccf6ee090c8c133072d5d5b52ae25f3bc907a16 ]

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>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/acpi/Kconfig
drivers/acpi/hed.c

index 1da360c51d6625f107ebfa4bc1254c7848e809c7..6a178e38fc4a86f9b3d5a19a386eb97fbf7db4d4 100644 (file)
@@ -437,7 +437,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 60a2939cde6c500d9946f20be336a635e6979f51..e8e9b1ac06b889d6b0e70b887953d6df036d4aaa 100644 (file)
@@ -72,7 +72,12 @@ static struct acpi_driver acpi_hed_driver = {
                .notify = acpi_hed_notify,
        },
 };
-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");