Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ACPI: HED: Always initialize before evged

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>

authored by

Xiaofei Tan and committed by
Rafael J. Wysocki
cccf6ee0 0ad2507d

+7 -2
+1 -1
drivers/acpi/Kconfig
··· 452 452 the modules will be called sbs and sbshc. 453 453 454 454 config ACPI_HED 455 - tristate "Hardware Error Device" 455 + bool "Hardware Error Device" 456 456 help 457 457 This driver supports the Hardware Error Device (PNP0C33), 458 458 which is used to report some hardware errors notified via
+6 -1
drivers/acpi/hed.c
··· 80 80 .remove = acpi_hed_remove, 81 81 }, 82 82 }; 83 - module_acpi_driver(acpi_hed_driver); 83 + 84 + static int __init acpi_hed_driver_init(void) 85 + { 86 + return acpi_bus_register_driver(&acpi_hed_driver); 87 + } 88 + subsys_initcall(acpi_hed_driver_init); 84 89 85 90 MODULE_AUTHOR("Huang Ying"); 86 91 MODULE_DESCRIPTION("ACPI Hardware Error Device Driver");