ACPI: basic initramfs DSDT override support

The basics of DSDT from initramfs. In case this option is selected,
populate_rootfs() is called a bit earlier to have the initramfs content
available during ACPI initialization.

This is a very similar path to the one available at
http://gaugusch.at/kernel.shtml but with some update in the
documentation, default set to No and the change of populate_rootfs() the
"Jeff Mahony way" (which avoids reading the initramfs twice).

Signed-off-by: Thomas Renninger <trenn@suse.de>
Signed-off-by: Eric Piel <eric.piel@tremplin-utc.net>
Signed-off-by: Len Brown <len.brown@intel.com>
This commit is contained in:
Markus Gaugusch
2008-02-05 00:04:06 +01:00
committed by Len Brown
parent 488b5ec871
commit 71fc47a9ad
5 changed files with 199 additions and 5 deletions

View File

@ -538,7 +538,7 @@ skip:
initrd_end = 0;
}
static int __init populate_rootfs(void)
int __init populate_rootfs(void)
{
char *err = unpack_to_rootfs(__initramfs_start,
__initramfs_end - __initramfs_start, 0);
@ -577,4 +577,10 @@ static int __init populate_rootfs(void)
}
return 0;
}
#ifndef CONFIG_ACPI_CUSTOM_DSDT_INITRD
/*
* if this option is enabled, populate_rootfs() is called _earlier_ in the
* boot sequence. This insures that the ACPI initialisation can find the file.
*/
rootfs_initcall(populate_rootfs);
#endif

View File

@ -102,6 +102,12 @@ static inline void mark_rodata_ro(void) { }
extern void tc_init(void);
#endif
#ifdef CONFIG_ACPI_CUSTOM_DSDT_INITRD
extern int populate_rootfs(void);
#else
static inline void populate_rootfs(void) {}
#endif
enum system_states system_state;
EXPORT_SYMBOL(system_state);
@ -648,6 +654,7 @@ asmlinkage void __init start_kernel(void)
check_bugs();
populate_rootfs(); /* For DSDT override from initramfs */
acpi_early_init(); /* before LAPIC and SMP init */
/* Do the rest non-__init'ed, we're now alive */