mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 21:38:32 +08:00
ACPI: call init_acpi_device_notify() explicitly rather than as initcall
This patch makes acpi_init() call init_acpi_device_notify() directly. Previously, init_acpi_device_notify() was an arch_initcall (sequence 3), so it was called before acpi_init() (a subsys_initcall at sequence 4). init_acpi_device_notify() sets the platform_notify and platform_notify_remove function pointers. These pointers are not used until acpi_init() enumerates ACPI devices in this path: acpi_init() acpi_scan_init() acpi_bus_scan() acpi_add_single_object() acpi_device_register() device_add() <use platform_notify> So it is sufficient to have acpi_init() call init_acpi_device_notify() directly before it enumerates devices. Signed-off-by: Bjorn Helgaas <bjorn.helgaas@hp.com> Signed-off-by: Len Brown <len.brown@intel.com>
This commit is contained in:
parent
84f810c33f
commit
0e46517d96
@ -855,6 +855,7 @@ static int __init acpi_init(void)
|
||||
acpi_kobj = NULL;
|
||||
}
|
||||
|
||||
init_acpi_device_notify();
|
||||
result = acpi_bus_init();
|
||||
|
||||
if (!result) {
|
||||
|
@ -286,10 +286,8 @@ static int acpi_platform_notify_remove(struct device *dev)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int __init init_acpi_device_notify(void)
|
||||
int __init init_acpi_device_notify(void)
|
||||
{
|
||||
if (acpi_disabled)
|
||||
return 0;
|
||||
if (platform_notify || platform_notify_remove) {
|
||||
printk(KERN_ERR PREFIX "Can't use platform_notify\n");
|
||||
return 0;
|
||||
@ -298,5 +296,3 @@ static int __init init_acpi_device_notify(void)
|
||||
platform_notify_remove = acpi_platform_notify_remove;
|
||||
return 0;
|
||||
}
|
||||
|
||||
arch_initcall(init_acpi_device_notify);
|
||||
|
@ -1,5 +1,6 @@
|
||||
/* For use by Linux/ACPI infrastructure, not drivers */
|
||||
|
||||
int init_acpi_device_notify(void);
|
||||
int acpi_scan_init(void);
|
||||
int acpi_system_init(void);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user