summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorkeith mannthey <kmannth@us.ibm.com>2006-09-25 23:31:03 -0700
committerLinus Torvalds <torvalds@g5.osdl.org>2006-09-26 08:48:45 -0700
commit91023300057e96de7f46e95166a3e02394ae72f9 (patch)
treeb28306089d7f5631bb023c7657808380359df316 /include
parentb221385bc41d6789edde3d2fa0cb20d5045730eb (diff)
downloadlinux-91023300057e96de7f46e95166a3e02394ae72f9.tar.gz
linux-91023300057e96de7f46e95166a3e02394ae72f9.tar.bz2
linux-91023300057e96de7f46e95166a3e02394ae72f9.zip
[PATCH] convert i386 NUMA KVA space to bootmem
Address a long standing issue of booting with an initrd on an i386 numa system. Currently (and always) the numa kva area is mapped into low memory by finding the end of low memory and moving that mark down (thus creating space for the kva). The issue with this is that Grub loads initrds into this similar space so when the kernel check the initrd it finds it outside max_low_pfn and disables it (it thinks the initrd is not mapped into usable memory) thus initrd enabled kernels can't boot i386 numa :( My solution to the problem just converts the numa kva area to use the bootmem allocator to save it's area (instead of moving the end of low memory). Using bootmem allows the kva area to be mapped into more diverse addresses (not just the end of low memory) and enables the kva area to be mapped below the initrd if present. I have tested this patch on numaq(no initrd) and summit(initrd) i386 numa based systems. [akpm@osdl.org: cleanups] Signed-off-by: Keith Mannthey <kmannth@us.ibm.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'include')
-rw-r--r--include/asm-i386/mmzone.h6
1 files changed, 6 insertions, 0 deletions
diff --git a/include/asm-i386/mmzone.h b/include/asm-i386/mmzone.h
index 22cb07cc8f32..61b073322006 100644
--- a/include/asm-i386/mmzone.h
+++ b/include/asm-i386/mmzone.h
@@ -38,10 +38,16 @@ static inline void get_memcfg_numa(void)
}
extern int early_pfn_to_nid(unsigned long pfn);
+extern void numa_kva_reserve(void);
#else /* !CONFIG_NUMA */
+
#define get_memcfg_numa get_memcfg_numa_flat
#define get_zholes_size(n) (0)
+
+static inline void numa_kva_reserve(void)
+{
+}
#endif /* CONFIG_NUMA */
#ifdef CONFIG_DISCONTIGMEM