|
Linux ACPI Debug: How to Isolate Linux ACPI IssuesStart by identifying if the issue at hand:
Decoding ACPI Console Messages------------------------------TBD My System Doesn't BootFirst, boot with "acpi=off" (or build with CONFIG_ACPI=n), or disable ACPI in BIOS SETUP.
Device Interrupt Issues
Thermal IssuesIf the fan is spinning too much, or the system still gets hot when the fan is spinning fast:
Does the same issue happen with and without "acpi=off"? If yes, then Linux ACPI is not related to the failure. Does ACPI control the fan on this system? Virtually no desktops or servers use ACPI fan control. Instead, they use an embedded controller or other hardware on the motherboard that is independent of ACPI. Note that sometimes you can view and control this hardware with BIOS SETUP. Some systems, for example, run all fans at maximum speed by default and require you to enable fan speed control in SETUP. From Linux, you may be able to view and sometimes control native fan speed control with CONFIG_HWMON=y and the appropriate drivers sensors sub-system. Note, however, that some machines have conflicts between CONFIG_HWMON and CONFIG_ACPI because they may access the same underlying hardware using two different methods. Most notebooks also use native fan control instead of ACPI. There are, however, a couple of notable exceptions: HP/Compaq, Acer, and Fujitsu-Siemens often use ACPI-based fan-control. If /proc/acpi/fan is empty and /proc/acpi/thermal_zone/*/trip_points has no active trip points (those starting with "AC") then there is no ACPI-based fan control on your system. If you have dis-assembled the DSDT, you can also check
if the device "PNP0C0B" is present. That is the standard
identifier for a fan device. Suspend to RAM Issues---------------------TBD Suspend to Disk Issues----------------------TBD Using ACPI_DEBUG Boot Parameters:acpi.debug_level and acpi.debug_layerACPI can produce tons of debug output if these debug masks are switched to full on. include/acpi/acoutput.h shows which flags can be enabled for level and layer, and cat /sys/module/acpi/parameters/debug_{level,layer} also shows you the flags. Therefore, switch on debug flags carefully. You also might want to increase the kernel ring buffer by passing: log_buf_len=XY in bytes and later use dmesg -s XY to get more than 16k kernel log output. Instead of serial console logging you might want to use the netconsole
interface (Documentation/networking/netconsole.txt) to send syslog
messages over network or firewire to send syslog messages over
firewire. The latter might be the only way to debug early hangs on laptops
without a serial device anyway. Using ACPI_DEBUG Boot Parameters Using /sysfs and /procYou can also pass the parameters at runtime, for example, using:
# echo 0x1F >/sys/module/acpi/parameters/debug_{level,layer}
Note that this interface exists since 2.6.22. In older kernels, it is /proc/acpi/debug_{level,layer}, which worked in the same way. Wrapping such statements around loading and unloading a bug affected ACPI module might give you the possibility to increase debug_level, but still only give you a manageable amount of debug output. Using ACPI_DEBUG acpi_dbg_layer and acpi_dbg_level kernel variables. Similar, but more powerful than 3.2.3, is to modify the global kernel variables for level and layer conditionally in the kernel code for your needs. For example: /* increase debug output to max */
/* /* restore debug level again */ Overriding a DSDT----------------- TBD |