Project

General

Profile

Bug #12445

dubious AcpiDisable() and dubious firmware pull together for reboot hang

Added by Joshua M. Clulow 8 months ago. Updated 8 months ago.

Status:
New
Priority:
Normal
Assignee:
-
Category:
kernel
Start date:
Due date:
% Done:

0%

Estimated time:
Difficulty:
Medium
Tags:
Gerrit CR:

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.

#1

Updated by J Y 8 months ago

the system in the wild is mine, so i can offer up trying out things on my end.

Also available in: Atom PDF