Closed ghost closed 1 year ago
If you use the Nix-based setup and the patch succeeds, the resulting DSDT table is most likely correct.
Logs from my boxes (Upstream Linux 5.15.y):
ACPI: DSDT ACPI table found in initrd [kernel/firmware/acpi/dsdt.aml]
ACPI: Table Upgrade: override [DSDT-ALASKA- A M I ]
ACPI: DSDT 0x00000000BB233000 Physical table override, new table: 0x00000000BD632000
ACPI: DSDT 0x00000000BD632000 005847 (v02 ALASKA A M I 0107200A INTL 20180427)
From looking around the kernel code which handles this, the UnRAID kernel might not have ACPI_TABLE_UPGRADE not enabled. That's required for replacing physical ACPI tables (like we're doing here).
That may be it. Seems I have to recompile my kernel. Thanks for helping.
@noclueoncoding Can I close this?
Sorry for not closing myself. I went down the rabbit hole just to find out that the Unraid kernel actually is build with the following configs enabled:
CONFIG_ARCH_HAS_ACPI_TABLE_UPGRADE=y
CONFIG_ACPI_TABLE_UPGRADE=y
It seems that wasn't it. And at this point it seems like end of the line for me, I guess. Yes, please close the issue and again thanks for your support.
Yeah, it seems like UnRAID has a quirk which breaks loading the modified ACPI table. Closing this.
I have very curious case at hand here because even after your fix S3 sleep isn't available. I'am running X300-STX/4750G on Unraid 6.9.2 (based on Slackware 14.2) With the nix-based setup (and your help) I've managed to patch iasl, the acpi tables and to compile acpi_dsdt_override.cpio I was quite lost when it came to prepending the cpio to intramfs in Slackware. Unraid uses Syslinux boot config instead of grub or similar. So I consulted the documentation of syslinux regarding how to prepend a cpio archive to initramfs. And it seems quite easy:
So I copied
acpi_dsdt_override.cpio
to/boot
and changed my syslinux config frominitrd=/bzroot
toinitrd=/acpi_dsdt_override.cpio,/bzroot
Et voila this is what my boot log says:
Loading /bzimage... ok
Loading /acpi_dsdt_override.cpio... ok
Loading /bzroot... ok
I know the documentation says this mechanism is part of the APPEND (and not PREPEND) statement, but since the cpio is loaded before bzroot (-> initramfs) this counts for prepending, right?
The system booted correctly but still no S3 sleep. The status is exactly the same as before acpi table override:
cat /sys/power/state
saysfreeze
andmem
and no this is not real S3 (suspend to memory) since my system seems to resort to S5 when I executeecho -n "mem" > /sys/power/state
More interesting is what syslog hast to say:shouldn't there be something like
Physical table override, new table:
in the second entry?aaaand still no S3
I dont know what the problem is but it seems like I didn't correctly prepended the patched table to initramf or patching the acpi table went wrong. Also I wonder if it is important to adjust the kernel version referenced in the
default.nix
to the kernel version of the system (I didn't do that)Attached you find my acpi_dsdt_override.cpio. Thanks again for your help. acpi_dsdt_override.cpio.zip