LINUX.ORG.RU

Ноутбук зависает с custom dsdt.

 , , ,


0

1

iasl самый свежий релизный. Получаю и декомпелирую DSDT ноутбука Acer Aspire 4741G.

sudo cat /sys/firmware/acpi/tables/DSDT > dsdt.dat
iasl -d dsdt.dat

Warning при декомпиляции:

ACPI Warning: NsLookup: Type mismatch on WPSC (RegionField), searching for (Buffer) (20100528/nsaccess-731)

Чиню dsdt.dsl. В гугле много решений всяких проблем. Собираю.

iasl -tc dsdt.dsl

Копирую получившийся aml файл в /boot/dsdt.aml

У grub2 есть такая опция

acpi /boot/dsdt.aml

Проблема в том что ноутбук зависает с таким dsdt :)

Ладно проверяем по другому, получаю dsdt, декомпилирую и сразу же собираю игнорируя все ошибки. Все тоже самое не загружается.

Как вы загружаете кустомные dsdt?!

NOTE

Подмена DSDT через GRUB2. Для начала не советую «автоматизировать» генерацию конфига груба. Просто положите dsdt.aml в /boot, пезагрузитесь и отредактируйте команду груба добавив acpi /boot/dsdt.aml (перед linux или после initrd).

Если в выхлопе iasl видите два warning для одного и того же метода, то силу имеет последний.

★★★★★

Последнее исправление: bhfq (всего исправлений: 4)

У grub2 есть такая опция

Которая скорее всего не работает ;) в чем и есть причина сабжа.

Меняй либо через включение в ядро(работает на ванилле) либо через включение дсдт в инитрд(работает если наложен соотвествующий патч)

init_6 ★★★★★
()
Ответ на: комментарий от bhfq

Вот это спасибо, буду капать!

Успехов! Ага а этот боян с подменой dsdt при помощи grub2 ходит уже давно. Однако я не видел чтобы оно работало хотя сам пробовал не раз и иные способы надежнее.

Способ включения в ядро это

CONFIG_ACPI_CUSTOM_DSDT_FILE="/<тут путь>/dsdt.hex"
и будет работать железобетонно даже на ванильных ядрах.

Через initrd нужна патчи с 001-acpi_initrd_override_tables.patch по 010-acpi_initrd_override_tables.patch из SuSE ;)

init_6 ★★★★★
()

есть тулзы которые автоматически исправляют DSDT
dsdt auto-patcher например
на оно под os x
Я брал свой DSDT уже исправленный из osx ешё когда пилил её под свой ноут
ибо после получения его из линукса были ошибки
способ c загрузкой своего DSDT через grub у меня лично сработал

залей дамп своего DSDT и прикрепи ссылку в тему - может можно что-то сделать

smilessss ★★★★★
()
Ответ на: комментарий от smilessss

Это пофикшеной мной (там есть 4 FIXME пункта которые не знаю как решить):
http://dl.dropbox.com/u/7983994/lor/dsdt/aspire4741g/dsdt_linux_fixed.dsl

Оригинальный бинарный:
http://dl.dropbox.com/u/7983994/lor/dsdt/aspire4741g/dsdt_linux_orig.dat

Оригинальный декомпилированный:
http://dl.dropbox.com/u/7983994/lor/dsdt/aspire4741g/dsdt_linux_orig.dsl

bhfq ★★★★★
() автор топика
Ответ на: комментарий от bhfq

уже готовый AML

DSL для дальнейшего пиления

попробуй подкинуть к грубу или вкомпилить в ядро, должно помочь

ASL Input: dsdt.dsl - 16329 lines, 514888 bytes, 5812 keywords AML Output: dsdt.aml - 58357 bytes, 1323 named objects, 4489 executable opcodes

Compilation complete. 0 Errors, 0 Warnings, 0 Remarks, 3 Optimizations [Completed]

smilessss ★★★★★
()

вот ещё собраный через iasl

DSL
AML

разница там в 1 ошибку, которую увидел iasl и не увидел DSDTse

ASL Input: /home/arch/Desktop/dsdt1.dsl - 16329 lines, 514040 bytes, 5812 keywords AML Output: /home/arch/Desktop/dsdt.aml - 58357 bytes, 1323 named objects, 4489 executable opcodes

Compilation complete. 0 Errors, 0 Warnings, 0 Remarks, 3 Optimizations

smilessss ★★★★★
()

посмотрел ещё твой пофикшенный и допилил
и для чего собственно нужно править DSDT ?

aml
dsl

ASL Input: dsdt.dsl - 16380 lines, 531914 bytes, 5812 keywords AML Output: dsdt.aml - 58366 bytes, 1323 named objects, 4489 executable opcodes Compilation complete. 0 Errors, 0 Warnings, 0 Remarks, 148 Optimizations [Completed]

smilessss ★★★★★
()
Ответ на: комментарий от smilessss

А чего допилил? Как починил FIXME? Попозже проверю твои DSDT под grub...

и для чего собственно нужно править DSDT?

Модно, молодежно!

bhfq ★★★★★
() автор топика
Последнее исправление: bhfq (всего исправлений: 1)
Ответ на: комментарий от bhfq

А чего допилил? Как починил FIXME?

пофиксил все warning и fixme заменой

 Method (_WED, 1, NotSerialized)  // _Wxx: Wake Event
            {
на
 Method (WED, 1, NotSerialized)  //  Wake Event
            {
например

ну а после этого уже

             Return (B2ED)
                }
                //FIXME// Return(Package(0x02){0x00, 0x00})
            }
на
 

             Return (B2ED)
                }
               Return(Package(0x02){0x00, 0x00})
            }
может под fixme имелось ввиду что-то другое, кроме не компиляции с ним ?
Я так понял что метод WED должен что-то возвращать, а с неправильным названием оно не работало, не компилилось.
И так со всеми 18 warning.
Нижнее подчеркивание появляется либо из-за софта, который криво дампит DSDT, либо из-за производителя, который сознательно лепит девайсы с кривым DSDT

smilessss ★★★★★
()
Ответ на: комментарий от smilessss

Ни один dsdt.aml по твоим ссылкам не взлетел через grub2 :)

Я уже научился собирать ведро со своим dsdt. Пожалуй последний по твоим ссылкам возьму и заюзаю. Спасибо!

bhfq ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.