diff options
author | Bernhard Walle <bwalle@suse.de> | 2008-07-18 13:07:53 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-07-18 17:35:46 -0400 |
commit | 91467bdf6e53058af13fd255375d6634ba0c70e0 (patch) | |
tree | 267f33c8455bb2bd2c2fdbe39259fafd0e1d567b /arch/x86/kernel/setup.c | |
parent | 5b664cb235e97afbf34db9c4d77f08ebd725335e (diff) |
x86: move dma32_reserve_bootmem() after reserve_crashkernel()
On a x86-64 machine (nothing special I could encounter) I had the problem that
crashkernel reservation with the usual "64M@16M" failed. While debugging that,
I encountered that dma32_reserve_bootmem() reserves a memory region which is in
that area.
Because dma32_reserve_bootmem() does not rely on a specific offset but
crashkernel does, it makes sense to move the dma32_reserve_bootmem()
reservation down a bit. I tested that patch and it works without problems. I
don't see any negative effects of that move, but maybe I oversaw something ...
While we strictly don't need that patch in 2.6.27 because we have the
automatic, dynamic offset detection, it makes sense to also include it here
because:
- it's easier to get it in -stable then,
- many people are still used to the 'crashkernel=...@16M' syntax,
- not everybody may be using a reloatable kernel.
Signed-off-by: Bernhard Walle <bwalle@suse.de>
Cc: kexec@lists.infradead.org
Cc: vgoyal@redhat.com
Cc: akpm@linux-foundation.org
Cc: Bernhard Walle <bwalle@suse.de>
Cc: yhlu.kernel@gmail.com
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, 9 insertions, 4 deletions
diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c index 531b55b8e81a..74d110ef2690 100644 --- a/arch/x86/kernel/setup.c +++ b/arch/x86/kernel/setup.c | |||
@@ -792,10 +792,6 @@ void __init setup_arch(char **cmdline_p) | |||
792 | 792 | ||
793 | initmem_init(0, max_pfn); | 793 | initmem_init(0, max_pfn); |
794 | 794 | ||
795 | #ifdef CONFIG_X86_64 | ||
796 | dma32_reserve_bootmem(); | ||
797 | #endif | ||
798 | |||
799 | #ifdef CONFIG_ACPI_SLEEP | 795 | #ifdef CONFIG_ACPI_SLEEP |
800 | /* | 796 | /* |
801 | * Reserve low memory region for sleep support. | 797 | * Reserve low memory region for sleep support. |
@@ -810,6 +806,15 @@ void __init setup_arch(char **cmdline_p) | |||
810 | #endif | 806 | #endif |
811 | reserve_crashkernel(); | 807 | reserve_crashkernel(); |
812 | 808 | ||
809 | #ifdef CONFIG_X86_64 | ||
810 | /* | ||
811 | * dma32_reserve_bootmem() allocates bootmem which may conflict | ||
812 | * with the crashkernel command line, so do that after | ||
813 | * reserve_crashkernel() | ||
814 | */ | ||
815 | dma32_reserve_bootmem(); | ||
816 | #endif | ||
817 | |||
813 | reserve_ibft_region(); | 818 | reserve_ibft_region(); |
814 | 819 | ||
815 | #ifdef CONFIG_KVM_CLOCK | 820 | #ifdef CONFIG_KVM_CLOCK |