Bug #12445
opendubious AcpiDisable() and dubious firmware pull together for reboot hang
0%
Description
On an i86pc system, while rebooting (as via reboot
, shutdown -i6
, etc) we call into the PSM right before resetting the hardware. This can bring us to apic_shutdown()
, where we call AcpiDisable()
from the acpica code to attempt to transition the hardware back to legacy mode.
On at least one system in the wild, the call to AcpiDisable()
results in a hung system instead of a rebooted system. That system then requires manual action to restore service. If, instead of reboot
, we use uadmin 1 1
, the system does indeed reset completely; i.e., the uadmin(A_REBOOT, AD_BOOT)
case does appear to work. If we prevent the reboot process from disabling ACPI, via mdb -kwe 'apic_enable_acpi/W 0'
, the system also reboots correctly via reboot
et al.
A cursory glance at both Linux and FreeBSD suggests that they do not call AcpiDisable()
at all. While more research is required, I suspect that the use of this mechanism just prior to attempting to reset the system is perhaps of dubious value.
Updated by J Y over 2 years ago
the system in the wild is mine, so i can offer up trying out things on my end.