FS#10261 - [kernel 2.6.25-1] Doesn't load custom ACPI DSDT file
Attached to Project:
Arch Linux
Opened by Robert Hampovcan (rhampovcan) - Wednesday, 23 April 2008, 18:10 GMT
Last edited by Thomas Bächler (brain0) - Tuesday, 20 May 2008, 22:47 GMT
Opened by Robert Hampovcan (rhampovcan) - Wednesday, 23 April 2008, 18:10 GMT
Last edited by Thomas Bächler (brain0) - Tuesday, 20 May 2008, 22:47 GMT
|
Details
Description:
As announced, the Kernel 2.6.25 doesn't load custom ACPI DSDT files in the initram anymore: http://tinyurl.com/5r4m9d I upgraded to kernel26 2.6.25-1 and on my laptop (HP Compaq 6715s) the inclusion is essential because of the buggy DSDT in BIOS. Otherwise the system is not usable with ACPI. Users like me are forced to stay with 2.6.24 unitl a _comfortable_ solution is found. Steps to reproduce: - Upgrade to Kernel 2.6.25-1 (Testing repository) - Check if custom DSDT is loaded |
This task depends upon
If it's not a bug your best path is probably to make a PKGBUILD for the modified kernel.
The situation is the same as with 2.6.24: We have to add a patch to the kernel which adds custom dsdt support. This hasn't changed and support for the custom dsdt is built into the -ARCH kernel.
The patch used by arch is the one mentioned here: http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=9a9e0d685553af76cb6ae2af93cca4913e7fcd47
More details: http://fixunix.com/kernel/359747-2-6-25-rc5-mm1-8.html
I don't think the new (acpi-dsdt-initrd-v0.9a-2.6.25) patch will fix the problem but i will probably test it tonight.
diff -Naur acpi-dsdt-initrd-v0.9-2.6.25.patch acpi-dsdt-initrd-v0.9a-2.6.25.patch
The only thing worth mentioning:
++#ifdef CONFIG_ACPI_CUSTOM_DSDT_INITRD
+#include <acpi/acpi.h>
++#endif
[lexiw@stroggos ~]$ dmesg|grep DSDT
ACPI: DSDT 7F6D5400, 438C (r1 INT430 SYSFexxx 1001 INTL 20050624)
ACPI: Checking initramfs for custom DSDT
ACPI: EC: Look up EC in DSDT
Extract the kernel26.img there is no trace of the DSDT.aml.
However using the linux-2.6.25/Documentation/acpi/initramfs-add-dsdt.sh script will add the DSDT to the kernel26.img.
mkinitcpio.log is the output of mkinitcpio -v
Looking in /boot/kernel26.img there is a /DSDT.aml file
mkinitcpio.log (5.6 KiB)
The custom DSDT worked till kernel 2.6.24, now the monitor won't turn off in terminal after i close the lid, it works in gnome but maybe there is a workaround (vbetool?). However it acts weird when i open the lid.
You could save a filelist with mkinitcpio -s somefile and post it. Then show me the filelist of the resulting image using zcat kernel26.img | cpio -t and post that as well to speed things up for me.
mkinitcpio -g somefile.img
zcat somefile.img | cpio -t > zcat.log
zcat.log (3.5 KiB)
BTW, where should i send that patch (and maybe any future patch) for mkinitcpio?
I have reports on the forums that the dsdt patch works, but not if you add the dsdt using mkinitcpio.
This patch (http://www.mail-archive.com/linux-kernel@vger.kernel.org/msg271899.html) against http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=drivers/acpi/ec.c;h=7222a18a03198d0bc70121d1246dc27af1d0629e;hb=4b119e21d0c66c22e8ca03df05d9de623d0eb50f worked for me.
My original report was not related to this bug at all (but i discovered it later!) that's why i'm telling you that, for me, it's closed and i don't belong to the discussion anymore.
Using the standard mkinitcpio.conf (generated during the setup) always worked for me.
I tried to move the dsdt hook to the beginning and end of the HOOKS list (and remade the image every time, of course). This didn't help and the DSDT gets still ignored.
Robert, Daniel could you list the initramfs to see if the DSDT.aml file is inside?
zcat /boot/initrd-2.6.25.3-XXX.img | cpio -t > zcat.log
If indeed, it is present, I'll have a closer look at the acpi-dsdt-initrd patch. It could be possible that in the new version there is a bug in the cpio parser.
BTW, Thomas, you can also try it at home :-) Just use you normal DSDT: you can find it there: /sys/firmware/acpi/tables/DSDT . Copy this file in the initramfs, and you should find in dmesg a line saying your DSDT has been overridden.
In the mean time, just for archlinux you confirm this comes from there by changing the "DSDT.aml" string in the patch to "/DSDT.aml" .
echo "file ${dest} ${fil} $(stat -c '%a' ${fil}) 0 0" >> "${FILELIST}"
to
echo "file ${dest#/} ${fil} $(stat -c '%a' ${fil}) 0 0" >> "${FILELIST}"
and then regenerate your initramfs. This is only a partial fix, but the DSDT.aml should now be found if what you say is true.
Could some reporter try it? Robert, Daniel?
bash-3.2# mkinitcpio -g /boot/kernel26.img
:: Begin build
:: Parsing hook [base]
:: Parsing hook [udev]
:: Parsing hook [dsdt]
:: Parsing hook [v86d]
:: Parsing hook [autodetect]
:: Parsing hook [pata]
:: Parsing hook [scsi]
:: Parsing hook [sata]
:: Parsing hook [keymap]
:: Parsing hook [filesystems]
:: Generating module dependencies
WARNING: Couldn't open directory /tmp/mkinitcpio.bCS1HH/lib/modules/2.6.25-ARCH: No such file or directory
FATAL: Could not open /tmp/mkinitcpio.bCS1HH/lib/modules/2.6.25-ARCH/modules.dep.temp for writing: No such file or directory
ERROR: file '/tmp/mkinitcpio.bCS1HH/lib/modules/2.6.25-ARCH/modules.dep' does not exist
ERROR: file '/tmp/mkinitcpio.bCS1HH/lib/modules/2.6.25-ARCH/modules.alias' does not exist
ERROR: file '/tmp/mkinitcpio.bCS1HH/lib/modules/2.6.25-ARCH/modules.symbols' does not exist
:: Generating image '/boot/kernel26.img'...SUCCESS
add_file "/lib/initcpio/custom.dsdt" "/DSDT.aml"
to:
add_file "/lib/initcpio/custom.dsdt" "DSDT.aml"
worked for me.
Before the workaround:
[lexiw@stroggos ~]$ dmesg|grep DSDT
ACPI: DSDT 7F6D5400, 438C (r1 INT430 SYSFexxx 1001 INTL 20050624)
ACPI: Checking initramfs for custom DSDT
ACPI: EC: Look up EC in DSDT
After the workaround:
[lexiw@stroggos ~]$ dmesg|grep DSDT
ACPI: DSDT 7F6D5400, 438C (r1 INT430 SYSFexxx 1001 INTL 20050624)
ACPI: Checking initramfs for custom DSDT
ACPI: Found DSDT in DSDT.aml.
ACPI: Override [DSDT-SYSFexxx], this is unsafe: tainting kernel
ACPI: Table DSDT replaced by host OS
ACPI: DSDT 00000000, 3E4C (r1 INT430 SYSFexxx 1001 INTL 20061109)
ACPI: DSDT override uses original SSDTs unless "acpi_no_auto_ssdt"CPU0: Intel(R) Core(TM)2 CPU T7200 @ 2.00GHz stepping 06
ACPI: EC: Look up EC in DSDT
My lid is working again now with the Arch 'vanilla' kernel.
From my side we can close this bug.
Thanks for your effort! / Danke für die Mühe!
Many thanks also to Eric for his direct participation.
The workaround by lexiw works for me.