[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <CH0PR02MB799683E84389C55B1D88F9E8FED89@CH0PR02MB7996.namprd02.prod.outlook.com>
Date: Wed, 8 Feb 2023 00:30:20 +0000
From: "Kallol Biswas [C]" <kallol.biswas@...anix.com>
To: "Kallol Biswas [C]" <kallol.biswas@...anix.com>,
Linux Kernel Mailing List <linux-kernel@...r.kernel.org>
Subject: RE: intel_idle and acpi_idle driver initcall order
I think I have figured out why intel_idle_init is called before acpi_processor_driver_init.
The order seems to be determined by the driver location in drivers/Makefile. I have changed the file to bring down
obj-y += idle/
after
obj-$(CONFIG_ACPI) += acpi/
The resulting kernel booted up the system with acpi_idle loaded.
-----Original Message-----
From: Kallol Biswas [C] <kallol.biswas@...anix.com>
Sent: Monday, February 6, 2023 12:59 PM
To: Linux Kernel Mailing List <linux-kernel@...r.kernel.org>
Subject: intel_idle and acpi_idle driver initcall order
Hi,
Looking for help understanding how idle drivers get loaded on Intel platforms.
The intel_idle driver always gets loaded. Both intel_idle and acpi_idle drivers are built with =y and both use device_initcall.
Added initcall_debug cmd line param and noticed that always intel_idle_init got called before acpi_processor_driver_init.
2.736001] initcall efifb_driver_init+0x0/0x13 returned 0 after 5 usecs [ 2.736003] calling intel_idle_init+0x0/0x406 @ 1 [ 2.737335] initcall intel_idle_init+0x0/0x406 returned 0 after 1297 usecs [ 2.737337] calling ged_driver_init+0x0/0x13 @ 1 [ 2.737350] initcall ged_driver_init+0x0/0x13 returned 0 after 10 usecs [ 2.737352] calling acpi_processor_driver_init+0x0/0xbb @ 1 [ 2.767685] initcall acpi_processor_driver_init+0x0/0xbb returned 0 after 29618 usecs [ 2.767687] calling acpi_thermal_init+0x0/0x86 @ 1 [ 2.767850] initcall acpi_thermal_init+0x0/0x86 returned 0 after 156 usecs [ 2.767852] calling acpi_hed_driver_init+0x0/0x11 @ 1 [ 2.767888] initcall acpi_hed_driver_init+0x0/0x11 returned 0 after
Question: What determines the initcall order within the same level?
init.h:
#define device_initcall(fn) __define_initcall(fn, 6)
Powered by blists - more mailing lists