i386: handle an initrd in highmem (version 2)
commitcf8fa920cb4271f17e0265c863d64bea1b31941a
authorH. Peter Anvin <hpa@zytor.com>
Wed, 30 Jan 2008 12:32:51 +0000 (30 13:32 +0100)
committerIngo Molnar <mingo@elte.hu>
Wed, 30 Jan 2008 12:32:51 +0000 (30 13:32 +0100)
tree5a036d33e78108c9a762913155823ff0c91051f5
parent6d7d7433750c7c6eec93d7b3206019e329228686
i386: handle an initrd in highmem (version 2)

The boot protocol has until now required that the initrd be located in
lowmem, which makes the lowmem/highmem boundary visible to the boot
loader.  This was exported to the bootloader via a compile-time
field.  Unfortunately, the vmalloc= command-line option breaks this
part of the protocol; instead of adding yet another hack that affects
the bootloader, have the kernel relocate the initrd down below the
lowmem boundary inside the kernel itself.

Note that this does not rely on HIGHMEM being enabled in the kernel.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
arch/x86/boot/header.S
arch/x86/kernel/setup_32.c
arch/x86/mm/discontig_32.c