mirror of
https://github.com/opnsense/src.git
synced 2026-06-08 16:22:46 -04:00
fix poweroff regression from 9cdf326b4f by delaying shutdown_halt
The regression affected ACPI-based systems without EFI poweroff support (including VMs). The key reason for the regression is that I overlooked that poweroff is requested by RB_POWEROFF | RB_HALT combination of flags. In my opinion, that command is a bit bipolar, but since we've been doing that forever, then so be it. Because of that flag combination, the order of shutdown_final handlers that check for either flag does matter. Some additional complexity comes from platform-specific shutdown_final handlers that aim to handle multiple reboot options at once. E.g., acpi_shutdown_final handles both poweroff and reboot / reset. As explained in9cdf326b4f, such a handler must run after shutdown_panic to give it a chance. But as the change revealed, the handler must also run before shutdown_halt, so that the system can actually power off before entering the halt limbo. Previously, shutdown_panic and shutdown_halt had the same priority which appears to be incompatible with handlers that can do both poweroff and reset. The above also applies to power cycle handlers. PR: 276784 Reported by: many Tested by: Katsuyuki Miyoshi <katsubsd@gmail.com>, Masachika ISHIZUKA <ish@amail.plala.or.jp> Fixes:9cdf326b4frun acpi_shutdown_final later to give other handlers a chance MFC after: 1 week
This commit is contained in:
parent
8e1f58caf7
commit
e4ab361e53
1 changed files with 2 additions and 2 deletions
|
|
@ -262,10 +262,10 @@ shutdown_conf(void *unused)
|
|||
|
||||
EVENTHANDLER_REGISTER(shutdown_final, poweroff_wait, NULL,
|
||||
SHUTDOWN_PRI_FIRST);
|
||||
EVENTHANDLER_REGISTER(shutdown_final, shutdown_halt, NULL,
|
||||
SHUTDOWN_PRI_LAST + 100);
|
||||
EVENTHANDLER_REGISTER(shutdown_final, shutdown_panic, NULL,
|
||||
SHUTDOWN_PRI_LAST + 100);
|
||||
EVENTHANDLER_REGISTER(shutdown_final, shutdown_halt, NULL,
|
||||
SHUTDOWN_PRI_LAST + 200);
|
||||
}
|
||||
|
||||
SYSINIT(shutdown_conf, SI_SUB_INTRINSIC, SI_ORDER_ANY, shutdown_conf, NULL);
|
||||
|
|
|
|||
Loading…
Reference in a new issue