Если у вас нет проблем с ACPI т.е. все кнопочки работают и никаких ошибок связанных с ACPI в логах не появляется. Что ж во первых я вас поздравляю закрывайте эту страницу и идите пить к примеру кофе/чай. Во вторых даже отсутствие ошибок в логах и абсолютно полностью работающая система не признак отсутствия ошибок в DSDT так что дальше смотрите сами. В любом случае проверка займет всего пару минут. И как поступить решать не мне.
Собственно у меня с моим ноутбуком AS5730ZG-323G25Mi изначально никаких проблем не было. Но дальше, как это часто бывает, расследую причины одной ошибки решил проверить DSDT.
Для тех кто захочет подковаться в теории: HOWTO: Fix Common ACPI Problems (DSDT, ECDT, etc.) и ACPI/Fix common problems
Далее переходим к практике… Для начала нужен главный инструмент
emerge sys-power/iasl
Далее нужна сама таблица DSDT. Для новых ядер
cat /sys/firmware/acpi/tables/DSDT > dsdt.dat
Для тех кто в криокамере
cat /proc/acpi/dsdt > dsdt.dat
Ну а теперь все просто как пять копеек
iasl -d dsdt.dat # Дизассемблируем DSDT iasl -tc dsdt.dsl # Перекомпилируем DSDT
Если после последней операции вы увидили
iasl -tc dsdt.dsl
(cut)
Compilation complete. 0 Errors, 0 Warnings, 0 Remarks, {ЧИСЛО} Optimizations
Я вас поздравляю закрывайте эту страницу и идите пить чай/кофе.
Вот например что увидел я
> iasl -tc acer-aspire-5730zg-bios.v-1.23-orig.dsl Intel ACPI Component Architecture ASL Optimizing Compiler version 20091013 [Dec 10 2009] Copyright (C) 2000 - 2009 Intel Corporation Supports ACPI Specification Revision 4.0 acer-aspire-5730zg-bios.v-1.23-orig.dsl 4922: Method (HKDS, 1, NotSerialized) Warning 1087 - Not all control paths return a value ^ (HKDS) acer-aspire-5730zg-bios.v-1.23-orig.dsl 5742: Name (_HID, "*pnp0c14") Error 4001 - String must be entirely alphanumeric ^ (*pnp0c14) acer-aspire-5730zg-bios.v-1.23-orig.dsl 5801: Method (_WED, 1, NotSerialized) Warning 1087 - Not all control paths return a value ^ (_WED) acer-aspire-5730zg-bios.v-1.23-orig.dsl 5801: Method (_WED, 1, NotSerialized) Warning 1080 - Reserved method must return a value ^ (_WED) acer-aspire-5730zg-bios.v-1.23-orig.dsl 6182: Method (WMC9, 3, NotSerialized) Warning 1087 - Not all control paths return a value ^ (WMC9) acer-aspire-5730zg-bios.v-1.23-orig.dsl 6445: Method (WRCB, 2, NotSerialized) Warning 1087 - Not all control paths return a value ^ (WRCB) acer-aspire-5730zg-bios.v-1.23-orig.dsl 6633: Method (WMCD, 3, NotSerialized) Warning 1087 - Not all control paths return a value ^ (WMCD) acer-aspire-5730zg-bios.v-1.23-orig.dsl 7277: Method (WMCF, 3, NotSerialized) Warning 1087 - Not all control paths return a value ^ (WMCF) acer-aspire-5730zg-bios.v-1.23-orig.dsl 7407: Name (_T_0, 0x00) Remark 5110 - Use of compiler reserved name ^ (_T_0) acer-aspire-5730zg-bios.v-1.23-orig.dsl 7444: Name (_T_1, 0x00) Remark 5110 - Use of compiler reserved name ^ (_T_1) acer-aspire-5730zg-bios.v-1.23-orig.dsl 7460: Name (_T_2, 0x00) Remark 5110 - Use of compiler reserved name ^ (_T_2) acer-aspire-5730zg-bios.v-1.23-orig.dsl 7518: Name (_T_3, 0x00) Remark 5110 - Use of compiler reserved name ^ (_T_3) acer-aspire-5730zg-bios.v-1.23-orig.dsl 7562: Name (_T_4, 0x00) Remark 5110 - Use of compiler reserved name ^ (_T_4) acer-aspire-5730zg-bios.v-1.23-orig.dsl 7604: Name (_T_5, 0x00) Remark 5110 - Use of compiler reserved name ^ (_T_5) acer-aspire-5730zg-bios.v-1.23-orig.dsl 7684: Method (WB15, 6, NotSerialized) Warning 1087 - Not all control paths return a value ^ (WB15) acer-aspire-5730zg-bios.v-1.23-orig.dsl 7740: Name (_HID, "*pnp0c14") Error 4001 - String must be entirely alphanumeric ^ (*pnp0c14) ASL Input: acer-aspire-5730zg-bios.v-1.23-orig.dsl - 10390 lines, 400823 bytes, 4157 keywords Compilation complete. 2 Errors, 8 Warnings, 6 Remarks, 1110 Optimizations
Не радостно… Сразу следует сказать вот какой момент пишут, что DSDT зависит еще и от версии биоса. Т.е. при обновлении биоса все якобы нужно начинать с начала. Поэтому я сохранял DSDT в acer-aspire-5730zg-bios.v-1.21-orig.dsl, acer-aspire-5730zg-bios.v-1.23-custom.dsl соответственно. Однако в моем случае производитель не внес никаких изменений. Далее я сохранял acer-aspire-5730zg-bios.v-1.23-custom.dsl уже как acer-aspire-5730zg-bios.v-1.23-custom.dsl и все изменения производил уже над ним.
Дальше я пойду по порядку возникновения ошибок.
4922: Method (HKDS, 1, NotSerialized)
Warning 1087 – Not all control paths return a value ^ (HKDS)
На строчке 4922 видим
Method (HKDS, 1, NotSerialized) # строка 4922
{
(cut)
If (LEqual (0x01, DSEN)) {}
} # строка 5067
Method (_Q19, 0, NotSerialized) # строка 5069 начало нового метода
Так вот собственно решение первой проблемы
Method (HKDS, 1, NotSerialized) # строка 4922
{
(cut)
If (LEqual (0x01, DSEN)) {}
Return (0x00) # вставили
} # строка 5068
Method (_Q19, 0, NotSerialized) # строка 5070 начало нового метода
Далее
5743: Name (_HID, “*pnp0c14″)
Error 4001 – String must be entirely alphanumeric ^ (*pnp0c14)
Name (_HID, "*pnp0c14") # строка 5743
Собственно решение
Name (_HID, "pnp0c14") # строка 5743
Для всех вот этих ошибок
5802: Method (_WED, 1, NotSerialized)
Warning 1087 – Not all control paths return a value ^ (_WED)5802: Method (_WED, 1, NotSerialized)
Warning 1080 – Reserved method must return a value ^ (_WED)6183: Method (WMC9, 3, NotSerialized)
Warning 1087 – Not all control paths return a value ^ (WMC9)6446: Method (WRCB, 2, NotSerialized)
Warning 1087 – Not all control paths return a value ^ (WRCB)6634: Method (WMCD, 3, NotSerialized)
Warning 1087 – Not all control paths return a value ^ (WMCD)7278: Method (WMCF, 3, NotSerialized)
Warning 1087 – Not all control paths return a value ^ (WMCF)
Решение будет аналогично первому т.е. до скобки закрытия каждого из описанных методов надо поставить Return (0×00)
Вот эта вереница загадок
7408: Name (_T_0, 0×00)
Remark 5110 – Use of compiler reserved name ^ (_T_0)7445: Name (_T_1, 0×00)
Remark 5110 – Use of compiler reserved name ^ (_T_1)7461: Name (_T_2, 0×00)
Remark 5110 – Use of compiler reserved name ^ (_T_2)7519: Name (_T_3, 0×00)
Remark 5110 – Use of compiler reserved name ^ (_T_3)7563: Name (_T_4, 0×00)
Remark 5110 – Use of compiler reserved name ^ (_T_4)7605: Name (_T_5, 0×00)
Remark 5110 – Use of compiler reserved name ^ (_T_5)
распутывается вообще банально. Компилятор пытается нам сказать, что вместо _T_0, _T_1, _T_2, _T_3, _T_4, _T_5 использовать T_0, T_1, T_2, T_3, T_4, T_5.
Далее
7685: Method (WB15, 6, NotSerialized)
Warning 1087 – Not all control paths return a value ^ (WB15)
Это мы уже проходили… Опять же вставить Return (0×00)
И наконец то
7741: Name (_HID, “*pnp0c14″)
Error 4001 – String must be entirely alphanumeric ^ (*pnp0c14)
И это уже было… убираем звёздочку.
И вот он финальный аккорд
> iasl -tc acer-aspire-5730zg-bios.v-1.23-custom.dsl Intel ACPI Component Architecture ASL Optimizing Compiler version 20091013 [Dec 10 2009] Copyright (C) 2000 - 2009 Intel Corporation Supports ACPI Specification Revision 4.0 ASL Input: acer-aspire-5730zg-bios.v-1.23-custom.dsl - 10397 lines, 398866 bytes, 4164 keywords AML Output: dsdt.aml - 41022 bytes, 897 named objects, 3267 executable opcodes Compilation complete. 0 Errors, 0 Warnings, 0 Remarks, 1117 Optimizations
Ну вот собственно и что из этого? Это не конец… это только начало.
cp /path/to/acer-aspire-5730zg-bios.v-1.23-custom.hex /usr/src/dsdt_table.h
Как советует руководство
First in kernel config, disable “Select only drivers that don’t need compile-time external firmware”
Т.е. Выключаем “Select only drivers that don’t need compile-time external firmware”
Device Drivers —>
Generic Driver Options —>
[ ] Select only drivers that don’t need compile-time external firmware
[ ] Prevent firmware from being built
Then enable the custom DSDT options in the kernel, and provide a path to the hex dsdt table that you compiled.
Включаем измененную DSDT
Power management options (ACPI, APM) —>
ACPI (Advanced Configuration and Power Interface) Support —>
[*] Include Custom DSDT
(/usr/src/dsdt_table.h) Custom DSDT Table file to include
Ну и дальше
Recompile your kernel, copy the bzImage, and modify your grub.conf to point to the new kernel.
В руководствах, кроме компилирования ядра с DSDT, рассмотрены несколько путей решения и как поступать определять вам.
Если что:
acer-aspire-5730zg-bios.v-1.21-orig.dsl.gz
acer-aspire-5730zg-bios.v-1.23-orig.dsl.gz
acer-aspire-5730zg-bios.v-1.23-custom.dsl.gz
Только поменяйте gz1.odt на gz

Здоровски, отче!
Для меня несколько не актуально, но на всякий пожарный, возьму-ка я это дело на заметку…
комментарий от the_Shadow — 16.12.2009 @ 11:41
[...] об acpi. На сей раз разговор пойдет об оптимизации dsdt. Начало было там и касалось собственно исправления ошибок. Теперь же [...]
Уведомление от Оптимизация dsdt « Gentoo itself is power — 17.06.2011 @ 20:34
Мир вашему дому))
У меня такой вопрос:
Ноутбук Samsung R460, на котором стояла виста 32х битная при покупке. Всё прекрасно работало (учитывая что это винда…). Процессор T5800 (Instruction Set – 64-bit). При загрузке с любого лайфсиди 64 бит (генту, дебиан, федора, и др.. ) комп уходит в ребут. Ставили вин 7 64 бит. Работает, но до установки видеодрайвера (nvidia 9200M). После установки винда хочет перегрузиться и не поднимается. уходит в ребут как и линукс.. Может ли быть это связано с ацпи??
комментарий от Neznaechko Irkutsk — 22.10.2011 @ 13:49
Это не просто может быть связано с acpi… вполне вероятно что это непосредственно иллюстрирует возможные последствия от кривого acpi/dsdt
В частности чтобы подтвердить/опровергнуть свое предположение насчет acpi/dsdt в случае с minimall install cd gentoo достаточно внимательно прочитать README.txt обращая особое внимание на опции отключающие acpi:
Этот файл кстати есть и на самом live cd.
А затем нужно просто загрузится к примеру с параметром acpi=off
комментарий от init_6 — 22.10.2011 @ 14:14
Когда пытался понять,в чем же дело (а было это позопрошлем летом) понятия не имел о дсдт и о том что производители могут делать ошибки в нем. А теперь пытаюсь заставить коррктно работать свою настольную систему под маком (тоесть она работает, но не совсем корректно). Как я понял – железо в дсдт не совсем правильно описано. Исправляю и становится легче жить )) Вот,сейчас, например, искал информацию на тему и вспомнил о ноуте.
вот что думает компилятор о нативном дсдт:
Intel ACPI Component Architecture
ASL Optimizing Compiler version 20100528 [Oct 15 2010]
Copyright (c) 2000 – 2010 Intel Corporation
Supports ACPI Specification Revision 4.0a
/media/Win7/r460_dsdt/d2 1124: 0×00000000, // Length
Error 4122 – Invalid combination of Length and Min/Max fixed flags ^
/media/Win7/r460_dsdt/d2 1131: 0×00000000, // Length
Error 4122 – Invalid combination of Length and Min/Max fixed flags ^
/media/Win7/r460_dsdt/d2 2950: Or (TMOR, TMPV)
Warning 1106 – Result is not used, operator has no effect ^
ASL Input: /media/Win7/r460_dsdt/d2 – 6946 lines, 241144 bytes, 3226 keywords
Compilation complete. 2 Errors, 1 Warnings, 0 Remarks, 8 Optimizations
После такой наглости как то начинаешь думать о самсунге не очень. На асусовской плате была тоько одна ошибка. ))
комментарий от Neznaechko Irkutsk — 23.10.2011 @ 00:08
На самом деле все гораздо проще. Производители зачастую пользуются продуктами одной известной компании из города Редмонда. Но прикол заключается в том, что ПО той компании создает (если касаться именно нашего разговора) прошивки биоса которые собственно не вполне соответствуют официальным спецификациям. Т.е. оно вреде бы как и похоже на правду но при детальном рассмотрении это вовсе не так.
Ошибку специально нагенерированную производителем железа как то и ошибкой называть неохота. К тому же по понятиям той самой фирмы из Редмонда и не ошибка это вовсе. Производители железа идут на это из-за желания получить красивую наклейку “совместимо с ну ты понял”
Вообще идеальным решением была бы поддержка coreboot со стороны производителей железа. Но они на это не пойдут по понятным причинам… Поэтому все в наших руках. И да кстати именно поэтому я иногда завидую владельцам к примеру OLPC у них подобные проблемы просто не могут появится.
комментарий от init_6 — 23.10.2011 @ 07:41