On Sun, Jul 13, 2008 at 08:49:44PM +0200, Bernhard Walle wrote: > From: Bernhard Walle <bernhard.walle at gmx.de> > > On a x86-64 machine (nothing special I could encounter) I had the problem that > crashkernel reservation with the usual "64M at 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 crashkernel reservation up 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 the long-term solution is to make the crashkernel reservation dynamic > (which is already done in -tip), this bug should be fixed also short-term for > 2.6.26 (or 2.6.26-stable if it's too short), and that's why I made that patch. > > > Signed-off-by: Bernhard Walle <bwalle at suse.de> > Signed-off-by: Bernhard Walle <bernhard.walle at gmx.de> > --- > arch/x86/kernel/setup_64.c | 7 ++++++- > 1 files changed, 6 insertions(+), 1 deletions(-) > > diff --git a/arch/x86/kernel/setup_64.c b/arch/x86/kernel/setup_64.c > index 6dff128..158cefe 100644 > --- a/arch/x86/kernel/setup_64.c > +++ b/arch/x86/kernel/setup_64.c > @@ -444,6 +444,12 @@ void __init setup_arch(char **cmdline_p) > contig_initmem_init(0, end_pfn); > #endif > > + /* > + * dma32_reserve_bootmem() allocates bootmem which may conflict > + * with the crashkernel command line, so do that before > + */ > + reserve_crashkernel(); > + > dma32_reserve_bootmem(); > > #ifdef CONFIG_ACPI_SLEEP > @@ -484,7 +490,6 @@ void __init setup_arch(char **cmdline_p) > } > } > #endif > - reserve_crashkernel(); > > reserve_ibft_region(); Looks good to me. Acked-by: Vivek Goyal <vgoyal at redhat.com> Thanks Vivek