ACPI DSDT/SSDT patching
These instructions are meant for a system with EFI, systemd-boot and deb based packages. Adjust them to your needs.
Reference: https://www.kernel.org/doc/Documentation/acpi/initrd_table_override.txt
See also https://github.com/lbschenkel/acer-sf314_43-acpi-patch
ACPICA tools: https://acpica.org/downloads
sudo apt install acpica-tools
Option 1: DSDT, extract and modify the tables
Extract the acpi tables
mkdir acpi && cd acpi
sudo acpidump -b
Disassemble the tables
iasl -d dsdt.dat
Modify or patch the tables
vim dsdt.dsl
Assemble the custom tables
iasl -sa dsdt.dsl
Generate the cpio file for initrd
cd ..
mkdir -p kernel/firmware/acpi
cp acpi/dsdt.aml kernel/firmware/acpi/
find kernel | cpio -H newc --create > patched_acpi_tables.cpio
Grub does not require a cpio file, you can directly provide the dsl file.
Option 2: SSDT, create the tables
SSDT tables add missing features to the existing ACPI, without requiring disassembling. They are created using the same tools and procedure.
Assemble the custom tables
iasl -sa ssdt.dsl
Generate the cpio file for initrd
cd ..
mkdir -p kernel/firmware/acpi
cp acpi/ssdt.aml kernel/firmware/acpi/
find kernel | cpio -H newc --create > patched_acpi_tables.cpio
Install the tables (systemd-boot)
Copy the cpio file with the custom tables where it can be addressed by the EFI boot
sudo mkdir /boot/efi/EFI/acpi
sudo cp patched_acpi_tables.cpio /boot/efi/EFI/acpi/
Edit the entry sudo vim /boot/efi/loader/entries/Pop_OS-current.conf
linux /EFI/...
initrd /EFI/acpi/patched_acpi_tables.cpio
initrd /EFI/Pop_OS-.../initrd.img
options ...
To use it with grub, it is enough to copy
acpi/dsdtl.aml
to/boot/
. Then I used a slightly modified version of this script to generate the grub configuration (https://bugs.launchpad.net/ubuntu/+source/grub2/+bug/1045690).