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:
committed by
Len Brown
parent
488b5ec871
commit
71fc47a9ad
@ -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
|
||||
|
@ -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 */
|
||||
|
Reference in New Issue
Block a user