Hlavní navigace

Názor ke zprávičce Oprava uspávání notebooků s AMD bude v jádře 5.15 od Cabrón - Dali jsme to dohromady po nocích s lidma...

  • 10. 9. 2021 18:08

    Cabrón

    Dali jsme to dohromady po nocích s lidma na gentoo IRC, ve zkratce:

    1) extrahuješ a dekompiluješ tabulky DSDT a FACP

    acpidump -b
    iasl -d dsdt.dat
    iasl -d facp.dat

    2) v souboru dsdt.dsl je definice všech S* states, všechny začínají podtržítkem (_S0, _S4, ...), jenom S3 začíná X:

    Name (_S0, Package (0x04)  // _S0_: S0 System State
    (...)
    Name (XS3, Package (0x04)
    (...)
    Name (_S4, Package (0x04)  // _S4_: S4 System State
    (...)

    takže jediná změna v tomto souboru je, že Name (XS3, Package (0x04) přepíšeš na Name (_S3, Package (0x04). Na jednom z prvních řádků ještě číslo revize (řádek s DefinitionBlock inkrementuješ z (např.) 0x01072009 na 0x0107200A.

    3) v souboru facp.dsl vypneš (změníš 1 na 0) redukci funkcí a vypneš s2idle (i když to možná není nutné) a opět inkrementuješ číslo revize z 0x01072009 na 0x0107200A:

    Hardware Reduced (V5) : 0
    Low Power S0 Idle (V5) : 0

    4) oba soubory zase přeložíš do nativního formátu a vytvoříš cpio archiv, kterým při startu bootloader přepíše ACPI tabulky původně načtené z firmwaru (proto se inkrementuje ta revize, aby to ACPI runtime neignoroval):

    iasl -sa dsdt.dsl
    iasl -sa facp.dsl
    mkdir -p kernel/firmware/acpi
    mv {dsdt,facp}.aml kernel/firmware/acpi
    find kernel | cpio --format newc --create > /boot/envy-suspend-fix-F20.cpio

    5) a pak už to jen stačí přidat do bootloaderu jako další initramfs a restartovat. V Grubu něco ve stylu

    menuentry "Něco" {
        search --label boot
        linux /vmlinuz-latest xxx xxx
        initrd /envy-suspend-fix-F20.cpio /amd-uc.img /muj-normalni-initramfs
        boot
    }

    Výhoda je, že to nic trvale nemění - stačí v Grubu před bootem spustit editor a odstranit to z toho řádku, kdyby něco zlobilo.

    10. 9. 2021, 18:12 editováno autorem komentáře