Работа с DSDT.aml

Страницы:  1

Ответить
Автор
Сообщение

Yello


Работа с DSDT.aml
Извлечение оригинальных файлов | Дизассемблирование ACPI-файлов | Исправление ошибок | Патчинг
Программа для редактирования и патчинга DSDT.aml - MaciASL
Следите за тем какая версия ACPI в редакторе, в версии 1.4 почему то ACPI 4.0 по умолчанию
Программа для компилирования - iASL
Положить на «рабочий стол» скачанный файл(iasl), и в терминале выполнить команду: sudo mv ~/Desktop/iasl /usr/local/bin/ что бы переместить файл в /usr/bin
Добавление репозиториев в MaciASL:
  • Открыть MaciASL;
  • Настройки;
  • Выберите “Sources”;
  • Нажмите на [+];
  • Впишите имя репозитория, к примеру "Laptop-DSDT-Patch";
  • И вставьте ссылку:
Код:
http://raw.github.com/RehabMan/Laptop-DSDT-Patch/master
http://raw.github.com/olderst/Keyboard-Patches/master
http://raw.github.com/hieplpvip/AsusSMC/master

PJALM's Репозиторий патчей для MaciASL

PJALM ASUS
http://toothsie.tech/PJALM/repos/asus/
All-in-one patches for ASUS motherboards
PJALM Gigabyte
http://toothsie.tech/PJALM/repos/gigabyte/
All-in-one patches for Gigabyte motherboards
PJALM MSI
http://toothsie.tech/PJALM/repos/msi/
All-in-one patches for MSI motherboards
PJALM ASRock
http://toothsie.tech/PJALM/repos/asrock/
All-in-one patches for ASRock motherboards
PJALM Zotac
http://toothsie.tech/PJALM/repos/zotac/
All-in-one patches for Zotac motherboards
PJALM Intel 6
http://toothsie.tech/PJALM/repos/intel6/
PJALM Intel 7
http://toothsie.tech/PJALM/repos/intel7/
PJALM General
http://toothsie.tech/PJALM/repos/general/
PJALM Graphics
http://toothsie.tech/PJALM/repos/graphics/
Patches for Intel HD and AMD/nVidia graphic cards

Извлечение файлов:

Linux

В Linux файлы лежат по путям /sys/firmware/acpi/tables и /sys/firmware/acpi/tables/dynamic.

Clover

При старте флешки в меню Clover`а нажать клавишу F4, после чего он сохранит все по пути /EFI/Clover/ACPI/origin

Windows


Для винды есть еще один способ сдампить DSDT - с помощью скрипта SSDTTime
скрипт - https://github.com/corpnewt/SSDTTime и пример использования - https://dortania.github.io/Getting-Started-With-ACP...running-ssdttime

Дизассемблирование

Скачать компилятор iASL
Положить iASL так, чтобы был быстрый доступ из терминала (в /usr/bin).
Введите в терминале команды:
Код:
cd "путь к папке, куда вы положили DSDT и SSDT файлы"
iasl -da -dl *.aml
Примечание: Не пытайтесь разобрать другие ACPI файлы с помощью флага “-da“.
Дизассемблирование ACPI-файлов/ DSDT и SSDT

Ошибки DSDT при компиляции и их решение

Invalid object type for reserved name (_PLD: found Integer at index 0, Buffer required)

китайская материнка x79 с процессором 2670 v2 и при редактировании DSDT тоже наткнулся на такую ошибку.
В ходе долгого гуглинга нашел я таки патч, рехабмен его сделал, но закомментировал, т.к. считает их "не исследованными" -https://github.com/RehabMan/Laptop-DSDT-Patch/blob/...ntax/fix_PLD.txt
Так же нашел здесь пример исправления - https://bbs.pcbeta.com/forum.php?mod=viewthread&tid=1601063 и здесь - https://wiki.archlinux.org/title/DSDT
А так же пример того, как должны выглядеть строки с _PLD здесь - https://uefi.org/sites/default/files/resources/ACPI_6_2.pdf
В итоге патч выглядит так:
Код:
into_all all code_regex (Name\s*\(_PLD,\s*)Package(\s\([^\)].*\)[^\)]*) replaceall_matched
begin
%1Package(0x01) { Buffer%2 }
end;
или так
Код:
into_all all code_regex (Name\s*\(_PLD,\s*)Package(\s\([^\)].*\)[^\)]*) replaceall_matched
begin
%1Package(1) { Buffer%2 }
end;

Видео Ошибки DSDT и способы их исправления

Not all control paths return a value ^ (_CRS)

Оригинальный код
Код:
Method (_CRS, 0, NotSerialized)
{
If (IGDS)
{
Return (CRS)
}
}
}
}
}
Исправленный
Код:
Method (_CRS, 0, NotSerialized)
{
If (IGDS)
{
Return (CRS)
}
Return (Buffer (One)
{
0x00
})
}
}
}
}

Unknown reserved name (_CFG)

Код:
Убрать _

Invalid object type for reserved name (found BUFFER, requires Package)

Код:
Сменить BUFFER на Package

Not all control paths return a value

Прописать Return (Zero) перед последней скобкой "}" данного метода.

(Illegal forward reference (RAM_))

Переименовать RAM в ERAM, либо использовать компилятор версии 6,2

ResourceTag smaller than Field (Size mismatch, Tag: X, Field: X bits)

Такая же проблема
Sample Problem ( example below is Tag: 1 bit, Field: 8 bits ) :
Код:
CreateByteField (CRS3, \_SB.PCI0.LPC0.SIO1._Y0D._HE, IRQS)  // _HE_: High-Edge
Fix ( depending on the size Tag mismatch: 1 bit = CreateBitField, 8 bits = CreateByteField, 16 bits = CreateWordField, 32 bits = CreateDwordField, 64 bits = CreateQwordField ) :

Possible operator timeout is ignored

Код:
Acquire (MUT0, 0x0FFF)
Добавить еще одну букву F

Statement is unreachable

Код:
Return (RP00)
Return (Package (0x01)
Удалить Return (RP00)
 
logo
Error