intel_idle and acpi_idle driver initcall order

From: Kallol Biswas [C]
Date: Mon Feb 06 2023 - 15:59:19 EST


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)