Next: , Previous: FAQ, Up: Top


23 How to track down ACPI Kernel/BIOS Problems

23.1 Compile your Kernel with ACPI Debug set and track down ACPI problems

If you have ACPI problems on your machine, you should first have a look at DSDT. Try to disassemble your DSDT and recompile it. If you have sever compiler errors, first try to fix them, override your system's DSDT with your modified one and possibly your problems are gone. If this does not help go on reading this section.

This section describes how you enable ACPI debug in SUSE kernels which was disabled due to performance problems. Other distributions may already have ACPI debug set or you need to do things slightly different.

ACPI debug is not set anymore in SUSE kernels since version 9.3. Therefore you need to compile your own kernel with slightly other configs set:

  1. Install the kernel-source package.
  2. Move to the kernel's directory and copy the default configs:

    cd /usr/src/linux
    cp arch/i386/defconfig.default .config

    (Replace i386 with your architecture e.g. x86_64 on 64 bits systems. Replace default (after defconfig.) with smp if you have a multi processor system or a dual core or hyperthreaded CPU).

  3. Edit the .config file and enable CONFIG_ACPI_DEBUG: You need to replace:

    "CONFIG_ACPI_DEBUG_LITE=y" with "# CONFIG_ACPI_DEBUG_LITE is not set"
    and
    "# CONFIG_ACPI_DEBUG is not set" with "CONFIG_ACPI_DEBUG=y"
    Be careful, that the strings are identical to the ones above as the .config file is parsed by scripts. You could use make menuconfig and disable ACPI_DEBUG_LITE and enable ACPI_DEBUG with a little config front-end if you are unsure.

  4. compile and install the kernel (this might take a while):

    make
    make install

  5. You might want to add new boot entry to your boot loader to be able to boot the new compiled and your old kernel. When using grub, modify your /boot/grub/menu.lst file. Simply copy the first boot entry lines and make sure to replace the /boot/vmlinuz and /boot/initrd entries to point to the right files (/boot/vmlinuz-2.6.Kernel_Version, ls /boot and doing a copy paste helps).
  6. mkinitrd should not be necessary in newer SUSE versions. Shutdown the machine and boot the newly compiled kernel. (if you have ACPI problems during boot time you can now increase the ACPI debug output by the boot options: acpi_dbg_level=XXX (see next step for XXX values).
  7. You can increase the debug output during runtime by:
    echo XXX >/proc/acpi/debug_level
    Be careful, too high values result in MB of debug output in syslog. Do:
    cat /proc/acpi/debug_level
    to see what levels you can choose. E.g.:
    echo 0x1F >/proc/acpi/debug_level
    adds ERROR, WARN, INIT, DEBUG_OBJECT (DSDT debug statements) and INFO.
  8. Now load the ACPI module you have problems with and have a look in /var/log/messages whether you find useful information.
  9. If you think you find a kernel bug or an ugly BIOS problem that could be workarounded in the kernel, please file a bugzilla bug at kernel.org and assign it to the ACPI component or ask on the acpi-devel mailing list (see Lists for URLs).