diff options
author | Yinghai Lu <yinghai@kernel.org> | 2009-11-10 21:27:23 -0500 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2009-11-11 14:14:32 -0500 |
commit | 196cf0d67acad70ebb2572da489d5cc7066cdd05 (patch) | |
tree | ba475e8afc56aeb6392d146a7cb9bdae7ff65279 /arch/x86/kernel/setup.c | |
parent | 0420101c075530c65ba00b6fe7291b126fbfc5d2 (diff) |
x86: Make sure wakeup trampoline code is below 1MB
Instead of using bootmem, try find_e820_area()/reserve_early(),
and call acpi_reserve_memory() early, to allocate the wakeup
trampoline code area below 1M.
This is more reliable, and it also removes a dependency on
bootmem.
-v2: change function name to acpi_reserve_wakeup_memory(),
as suggested by Rafael.
Signed-off-by: Yinghai Lu <yinghai@kernel.org>
Acked-by: H. Peter Anvin <hpa@zytor.com>
Acked-by: Rafael J. Wysocki <rjw@sisk.pl>
Cc: pm list <linux-pm@lists.linux-foundation.org>
Cc: Len Brown <lenb@kernel.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
LKML-Reference: <4AFA210B.3020207@kernel.org>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch/x86/kernel/setup.c')
-rw-r--r-- | arch/x86/kernel/setup.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c index f89141982702..0a6e94ab8339 100644 --- a/arch/x86/kernel/setup.c +++ b/arch/x86/kernel/setup.c | |||
@@ -897,6 +897,13 @@ void __init setup_arch(char **cmdline_p) | |||
897 | 897 | ||
898 | reserve_brk(); | 898 | reserve_brk(); |
899 | 899 | ||
900 | #ifdef CONFIG_ACPI_SLEEP | ||
901 | /* | ||
902 | * Reserve low memory region for sleep support. | ||
903 | * even before init_memory_mapping | ||
904 | */ | ||
905 | acpi_reserve_wakeup_memory(); | ||
906 | #endif | ||
900 | init_gbpages(); | 907 | init_gbpages(); |
901 | 908 | ||
902 | /* max_pfn_mapped is updated here */ | 909 | /* max_pfn_mapped is updated here */ |
@@ -948,12 +955,6 @@ void __init setup_arch(char **cmdline_p) | |||
948 | 955 | ||
949 | initmem_init(0, max_pfn, acpi, k8); | 956 | initmem_init(0, max_pfn, acpi, k8); |
950 | 957 | ||
951 | #ifdef CONFIG_ACPI_SLEEP | ||
952 | /* | ||
953 | * Reserve low memory region for sleep support. | ||
954 | */ | ||
955 | acpi_reserve_bootmem(); | ||
956 | #endif | ||
957 | /* | 958 | /* |
958 | * Find and reserve possible boot-time SMP configuration: | 959 | * Find and reserve possible boot-time SMP configuration: |
959 | */ | 960 | */ |