aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux
diff options
context:
space:
mode:
authorAndi Kleen <ak@suse.de>2006-04-07 13:49:21 -0400
committerLinus Torvalds <torvalds@g5.osdl.org>2006-04-09 14:53:16 -0400
commita8062231d80239cf3405982858c02aea21a6066a (patch)
tree0576493fa99cda91069fe3b67c19bd024858e69e /include/linux
parent68a3a7feb08f960095072f28ec20f7900793c506 (diff)
[PATCH] x86_64: Handle empty PXMs that only contain hotplug memory
The node setup code would try to allocate the node metadata in the node itself, but that fails if there is no memory in there. This can happen with memory hotplug when the hotplug area defines an so far empty node. Now use bootmem to try to allocate the mem_map in other nodes. And if it fails don't panic, but just ignore the node. To make this work I added a new __alloc_bootmem_nopanic function that does what its name implies. TBD should try to use nearby nodes here. Currently we just use any. It's hard to do it better because bootmem doesn't have proper fallback lists yet. Signed-off-by: Andi Kleen <ak@suse.de> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/bootmem.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/include/linux/bootmem.h b/include/linux/bootmem.h
index de3eb8d8ae26..da2d107fe2cf 100644
--- a/include/linux/bootmem.h
+++ b/include/linux/bootmem.h
@@ -45,6 +45,7 @@ extern unsigned long __init bootmem_bootmap_pages (unsigned long);
45extern unsigned long __init init_bootmem (unsigned long addr, unsigned long memend); 45extern unsigned long __init init_bootmem (unsigned long addr, unsigned long memend);
46extern void __init free_bootmem (unsigned long addr, unsigned long size); 46extern void __init free_bootmem (unsigned long addr, unsigned long size);
47extern void * __init __alloc_bootmem (unsigned long size, unsigned long align, unsigned long goal); 47extern void * __init __alloc_bootmem (unsigned long size, unsigned long align, unsigned long goal);
48extern void * __init __alloc_bootmem_nopanic (unsigned long size, unsigned long align, unsigned long goal);
48extern void * __init __alloc_bootmem_low(unsigned long size, 49extern void * __init __alloc_bootmem_low(unsigned long size,
49 unsigned long align, 50 unsigned long align,
50 unsigned long goal); 51 unsigned long goal);