22 How to track down ACPI Kernel/BIOS Problems
22.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:
- Install the kernel-source package.
- 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).
- 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.
- compile and install the kernel (this might take a while):
make
make install
- You might want to add new boot entry to your boot loader to be able
to boot the new compiled and your old kernel. 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).
- 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).
- 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.
- Now load the ACPI module you have problems with and have a look in
/var/log/messages whether you find useful information.
- 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).