From: Anton Blanchard __alloc_bootmem_node currently panics if it cant satisfy an allocation for a particular node. Thats rather antisocial, we should at the very least return NULL and allow the caller to proceed (eg try another node). A quick look at alloc_bootmem_node usage suggests we should fall back to allocating from other nodes if it fails (as arch/alpha/kernel/pci_iommu.c and arch/x86_64/kernel/setup64.c do). The following patch does that. We fall back to the regular __alloc_bootmem when __alloc_bootmem_node fails, which means all other nodes are checked for available memory. Signed-off-by: Anton Blanchard Signed-off-by: Andrew Morton --- 25-akpm/mm/bootmem.c | 7 +------ 1 files changed, 1 insertion(+), 6 deletions(-) diff -puN mm/bootmem.c~__alloc_bootmem_node-should-not-panic-when-it-fails mm/bootmem.c --- 25/mm/bootmem.c~__alloc_bootmem_node-should-not-panic-when-it-fails 2004-06-26 22:40:20.334235528 -0700 +++ 25-akpm/mm/bootmem.c 2004-06-26 22:40:20.338234920 -0700 @@ -371,11 +371,6 @@ void * __init __alloc_bootmem_node (pg_d if (ptr) return (ptr); - /* - * Whoops, we cannot satisfy the allocation request. - */ - printk(KERN_ALERT "bootmem alloc of %lu bytes failed!\n", size); - panic("Out of memory"); - return NULL; + return __alloc_bootmem(size, align, goal); } _