ACPI issue, help to fix broken DSDT on an HP Pavilion DV6-6008el
I'm having a hard time fixing the ACPI subsystem of an HP laptop (Pavilion DV6-6008el, Ubuntu Natty 64-bit).
I can boot only if acpi=off
is specified as kernel parameter in grub, otherwise blank screen and system hanging. Both blank screen and ACPI disabled are not acceptable. There is another similar question by me on Ask Ubuntu with other details.
I was able to find good docs about how to debug ACPI; particularly useful is this technique: if decompiling and recompiling a DSDT table the compiler gives an error, well... the table is broken and this could be the reason for the boot failure. Next step is fix the code, compile and override the system DSDT with the fixed one (recompiling the kernel or building the custom DSDT into an initrd). This is the procedure:
# apt-get install acpidump
# dump a system's ACPI table with DSTD signature to an ASCII file
sudo acpidump -t DSDT > dump
# convert ASCII acpidump output to raw binary table. Creates DSDT.dat, binary.
acpixtract dump
# apt-get install iasl
# disassemble AML to ASL, creates DSDT.dsl
# (AML: ACPI Machine Language, binary. ASL: ACPI Source Language, source)
iasl -d DSDT.dat
# recompile AML in assembler (-ta) or C (-tc) hex table. -vr disables remarks.
iasl -vr -tc DSDT.dsl
Oops, iasl intel compiler complains:
DSDT.dsl 37: External (\TNOT)
Error 4057 - ^ Name already exists in scope (\TNOT)
DSDT.dsl 11050: Method (PAPR, 0, NotSerialized)
Warning 1088 - ^ Not all control paths return a value (PAPR)
DSDT.dsl 12566: Method (_CRS, 0, NotSerialized)
Warning 1088 - ^ Not all control paths return a value (_CRS)
DSDT.dsl 12566: Method (_CRS, 0, NotSerialized)
Warning 1081 - ^ Reserved method must return a value
(Buffer required for _CRS)
ASL Input: DSDT.dsl - 12748 lines, 424447 bytes, 5910 keywords
Compilation complete. 1 Errors, 3 Warnings, 8 Remarks, 20 Optimizations
Here is the full table source (36kb).
Any help to fix the issue, error and warnings, is greatly appreciated. Many thanks.
Useful resources
- Advanced Configuration and Power Interface Specification V4, 2010 (ch 18 ASL ref, ch 19, AML spec)
- Index of /doc/Documentation/acpi (kernel.org)
Linux/ACPI Overview - superseded by LessWatts.org, Saving Power on Intel systems with Linux
ACPICA (ACPI Component Architecture)
HOWTO Fix A Buggy DSDT File (ubuntuforums.org)
Solution 1:
You could try installing the fglrx drivers and tweaking the acpi options with aticonfig. Here is the link to the unofficial AMD wiki http://wiki.cchtml.com/index.php/Main_Page. It has helped me a lot. Please let me know if this helps. Thanks
Solution 2:
I try to do that myself.
I find the Gentoo Wiki very useful: ACPI/Fix common problems.
It's not directly applicable to Ubuntu, but almost.
The only difference I noticed so far is, when you install "iasl".
Gentoo:
echo "sys-power/iasl ~x86" >> /etc/portage/package.keywords; emerge -av iasl
Ubuntu:
sudo apt-get install iasl