diff options
author | H. Peter Anvin <hpa@zytor.com> | 2008-01-30 13:32:51 +0100 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-01-30 13:32:51 +0100 |
commit | cf8fa920cb4271f17e0265c863d64bea1b31941a (patch) | |
tree | 5a036d33e78108c9a762913155823ff0c91051f5 /arch/x86/mm | |
parent | 6d7d7433750c7c6eec93d7b3206019e329228686 (diff) | |
download | linux-cf8fa920cb4271f17e0265c863d64bea1b31941a.tar.gz linux-cf8fa920cb4271f17e0265c863d64bea1b31941a.tar.bz2 linux-cf8fa920cb4271f17e0265c863d64bea1b31941a.zip |
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>
Diffstat (limited to 'arch/x86/mm')
-rw-r--r-- | arch/x86/mm/discontig_32.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/arch/x86/mm/discontig_32.c b/arch/x86/mm/discontig_32.c index 13a474d3c6e9..88a7499e8e48 100644 --- a/arch/x86/mm/discontig_32.c +++ b/arch/x86/mm/discontig_32.c @@ -288,8 +288,8 @@ unsigned long __init setup_memory(void) #ifdef CONFIG_BLK_DEV_INITRD /* Numa kva area is below the initrd */ - if (boot_params.hdr.type_of_loader && boot_params.hdr.ramdisk_image) - kva_start_pfn = PFN_DOWN(boot_params.hdr.ramdisk_image) + if (initrd_start) + kva_start_pfn = PFN_DOWN(initrd_start - PAGE_OFFSET) - kva_pages; #endif kva_start_pfn -= kva_start_pfn & (PTRS_PER_PTE-1); |