ACPI问题,有助于修复HP Pavilion DV6-6008el上损坏的DSDT

我很难修复惠普笔记本电脑的ACPI子系统( Pavilion DV6-6008el ,Ubuntu Natty 64位)。

只有在grub中指定acpi=off作为内核参数,否则我才能启动,否则空白屏幕和系统挂起。 禁用空白屏幕和ACPI都是不可接受的。 我在Ask Ubuntu上还有另一个类似的问题和其他细节。

我能找到关于如何调试ACPI的好文档; 特别有用的是这种技术:如果反编译和重新编译DSDT表,编译器会给出一个错误,那么……表被破坏了,这可能是启动失败的原因。 下一步是修复代码,使用固定的DSDT编译和覆盖系统DSDT(重新编译内核或将自定义DSDT构建到initrd中)。 这是程序:

 # 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 

哎呀,iasl intel编译抱怨:

 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 

这是完整的表源 (36kb)。

任何帮助解决问题,错误和警告,非常感谢。 非常感谢。

有用的资源

  • 高级配置和电源接口规范V4,2010 (第18章ASL ref,第19章,AML规范)
  • / doc / Documentation / acpi索引 (kernel.org)
  • Linux / ACPI概述 – 被LessWatts.org取代,通过Linux在英特尔系统上节省电力

  • ACPICA (ACPI组件架构)

  • 如何修复Buggy DSDT文件 (ubuntuforums.org)

您可以尝试安装fglrx驱动程序并使用aticonfig调整acpi选项。 这是非官方AMD维基http://wiki.cchtml.com/index.php/Main_Page的链接。 它帮助了我很多。 请让我知道这可不可以帮你。 谢谢

我试着自己这样做。

我发现Gentoo Wiki非常有用: ACPI / Fix常见问题 。

它不是直接适用于Ubuntu,而是几乎。

到目前为止我注意到的唯一区别是,当你安装“iasl”时。

Gentoo的:

 echo "sys-power/iasl ~x86" >> /etc/portage/package.keywords; emerge -av iasl 

Ubuntu的:

 sudo apt-get install iasl 

你可以做一个sudo modprobe fglrx然后如果它给出了相同的错误,那么你可能需要重新启动。 请让我知道这可不可以帮你。 谢谢