
Ich habe den Code verfolgt und Folgendes erhalten:
native_machine_shutdown()
https://elixir.bootlin.com/linux/latest/source/arch/x86/kernel/reboot.c#L682
aber ich habe keinen Code zum Herunterfahren der Stromversorgung oder zum Auslösen des CPU-Registers zum Herunterfahren gesehen?
Ich bin dorthin gekommen von:
void kernel_power_off(void)
{
kernel_shutdown_prepare(SYSTEM_POWER_OFF);
if (pm_power_off_prepare)
pm_power_off_prepare();
migrate_to_reboot_cpu();
syscore_shutdown();
pr_emerg("Power down\n");
kmsg_dump(KMSG_DUMP_SHUTDOWN);
machine_power_off();
}
https://elixir.bootlin.com/linux/latest/source/kernel/reboot.c#L287
Antwort1
Es steht drin reboot.c
und ist nett kommentiert.
static void native_machine_power_off(void)
{
if (pm_power_off) {
if (!reboot_force)
machine_shutdown();
pm_power_off();
}
/* A fallback in case there is no PM info available */
tboot_shutdown(TB_SHUTDOWN_HALT);
}
Also pm_power_off
: Das ist jetztWirklichplattformspezifisch; es ist ein Unterschied, ob Sie eine Spielekonsole oder einen Rack-Server verwenden.
Sie suchen wahrscheinlich nach dem EFI-Treiber, der Folgendes kann:
efi.reset_system(EFI_RESET_SHUTDOWN, EFI_SUCCESS, 0, NULL);
in Treiber/Firmware/EFI/Reboot.c