Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

page allocator: use no-panic variant of alloc_bootmem() in alloc_large_system_hash()

.. since a failed allocation is being (initially) handled gracefully, and
panic()-ed upon failure explicitly in the function if retries with smaller
sizes failed.

Signed-off-by: Jan Beulich <jbeulich@novell.com>
Signed-off-by: David Howells <dhowells@redhat.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

authored by

Jan Beulich and committed by
Linus Torvalds
74768ed8 866c3663

+5 -1
+4
include/linux/bootmem.h
··· 97 97 #ifndef CONFIG_HAVE_ARCH_BOOTMEM_NODE 98 98 #define alloc_bootmem(x) \ 99 99 __alloc_bootmem(x, SMP_CACHE_BYTES, __pa(MAX_DMA_ADDRESS)) 100 + #define alloc_bootmem_nopanic(x) \ 101 + __alloc_bootmem_nopanic(x, SMP_CACHE_BYTES, __pa(MAX_DMA_ADDRESS)) 100 102 #define alloc_bootmem_low(x) \ 101 103 __alloc_bootmem_low(x, SMP_CACHE_BYTES, 0) 102 104 #define alloc_bootmem_pages(x) \ 103 105 __alloc_bootmem(x, PAGE_SIZE, __pa(MAX_DMA_ADDRESS)) 106 + #define alloc_bootmem_pages_nopanic(x) \ 107 + __alloc_bootmem_nopanic(x, PAGE_SIZE, __pa(MAX_DMA_ADDRESS)) 104 108 #define alloc_bootmem_low_pages(x) \ 105 109 __alloc_bootmem_low(x, PAGE_SIZE, 0) 106 110 #define alloc_bootmem_node(pgdat, x) \
+1 -1
mm/page_alloc.c
··· 4437 4437 do { 4438 4438 size = bucketsize << log2qty; 4439 4439 if (flags & HASH_EARLY) 4440 - table = alloc_bootmem(size); 4440 + table = alloc_bootmem_nopanic(size); 4441 4441 else if (hashdist) 4442 4442 table = __vmalloc(size, GFP_ATOMIC, PAGE_KERNEL); 4443 4443 else {