Skip to contentSkip to conversation

read DSDT from initramfs then try initrd

PATCH New Thomas Renninger 1 participant 1 message Feb 27, 2005 ACPI

lore
Share & tools
lore
#0 lore raw

PATCH 2/2 read DSDT from initramfs then try initrd

Markus, could you add this one to your collection of "override DSDT via initrd" patches on http://gaugusch.at/kernel.shtml, please?

An mkinitrd working for the patch can be found here:
ftp.suse.com/pub/people/trenn/mkinitrd

use:
mkinitrd -k vmlinuz-version -i initrd-version -a /etc/DSDT.aml for initramfs or
add the -R option to build up an initrd.

One time tested.
Comments appreciated.

Thomas

-> linux-2.6.11-rc5

Subject: Read DSDT from initrd or initramfs
From: Thomas Renninger <[email protected]>

Searches and reads in the root of initramfs a DSDT.aml file. If not found the initrd is scanned for a DSDT signature ("INITRDDSDT123DSDT123"). Once a DSDT in the initramfs or initrd is found the DSDT provided by BIOS is replaced.

drivers/acpi/Kconfig renamed from drivers/acpi/Kconfig.orig +13 -0
@@ -343,4 +343,17 @@
 	 	This is the ACPI generic container driver which supports
 		ACPI0004, PNP0A05 and PNP0A06 devices
 
+config ACPI_INITRD
+	bool "Read DSDT from initrd or initramfs"
+	depends on ACPI && BLK_DEV_INITRD && !ACPI_CUSTOM_DSDT
+	default n
+	help
+	  The DSDT (Differentiated System Description Table) often needs to be
+	  overridden because of broken BIOS implementations. If you want to use
+	  a customized DSDT, please use the mkinitrd tool (mkinitrd package) to 
+	  attach the DSDT to the initrd or initramfs 
+	  (see http://gaugusch.at/kernel.shtml for details)
+	  If there is no DSDT found in the initrd, the DSDT from the BIOS is
+	  used. It is save to say yes here.
+
 endmenu
drivers/acpi/tables/tbget.c renamed from drivers/acpi/tables/tbget.c.orig +6 -2
@@ -45,7 +45,6 @@
 #include <acpi/acpi.h>
 #include <acpi/actables.h>
 
-
 #define _COMPONENT          ACPI_TABLES
 	 ACPI_MODULE_NAME    ("tbget")
 
@@ -287,12 +286,17 @@
 			acpi_format_exception (status)));
 		return_ACPI_STATUS (status);
 	}
-
+	
 	/* Copy the table info */
 
 	ACPI_REPORT_INFO (("Table [%4.4s] replaced by host OS\n",
 		table_info->pointer->signature));
 
+#ifdef CONFIG_ACPI_INITRD
+	if (new_table)
+	    ACPI_MEM_FREE(new_table);
+#endif
+
 	return_ACPI_STATUS (AE_OK);
 }
 
drivers/acpi/osl.c renamed from drivers/acpi/osl.c.orig +99 -16

131 lines not on this page · raw message