diff options
author | Jan Beulich <jbeulich@novell.com> | 2008-08-12 18:08:39 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-08-12 19:07:27 -0400 |
commit | 74768ed833344bb0f82b97cee46320a3d7f09ecd (patch) | |
tree | eee3404d1dd51eb184eab88e12dbc774dc693522 | |
parent | 866c36637f79506b283a6872a7c313b5ef499985 (diff) |
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>
-rw-r--r-- | include/linux/bootmem.h | 4 | ||||
-rw-r--r-- | mm/page_alloc.c | 2 |
2 files changed, 5 insertions, 1 deletions
diff --git a/include/linux/bootmem.h b/include/linux/bootmem.h index 652470b687c9..95837bfb5256 100644 --- a/include/linux/bootmem.h +++ b/include/linux/bootmem.h | |||
@@ -97,10 +97,14 @@ extern void *__alloc_bootmem_low_node(pg_data_t *pgdat, | |||
97 | #ifndef CONFIG_HAVE_ARCH_BOOTMEM_NODE | 97 | #ifndef CONFIG_HAVE_ARCH_BOOTMEM_NODE |
98 | #define alloc_bootmem(x) \ | 98 | #define alloc_bootmem(x) \ |
99 | __alloc_bootmem(x, SMP_CACHE_BYTES, __pa(MAX_DMA_ADDRESS)) | 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 | #define alloc_bootmem_low(x) \ | 102 | #define alloc_bootmem_low(x) \ |
101 | __alloc_bootmem_low(x, SMP_CACHE_BYTES, 0) | 103 | __alloc_bootmem_low(x, SMP_CACHE_BYTES, 0) |
102 | #define alloc_bootmem_pages(x) \ | 104 | #define alloc_bootmem_pages(x) \ |
103 | __alloc_bootmem(x, PAGE_SIZE, __pa(MAX_DMA_ADDRESS)) | 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 | #define alloc_bootmem_low_pages(x) \ | 108 | #define alloc_bootmem_low_pages(x) \ |
105 | __alloc_bootmem_low(x, PAGE_SIZE, 0) | 109 | __alloc_bootmem_low(x, PAGE_SIZE, 0) |
106 | #define alloc_bootmem_node(pgdat, x) \ | 110 | #define alloc_bootmem_node(pgdat, x) \ |
diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 401d104d2bb6..af982f7cdb2a 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c | |||
@@ -4437,7 +4437,7 @@ void *__init alloc_large_system_hash(const char *tablename, | |||
4437 | do { | 4437 | do { |
4438 | size = bucketsize << log2qty; | 4438 | size = bucketsize << log2qty; |
4439 | if (flags & HASH_EARLY) | 4439 | if (flags & HASH_EARLY) |
4440 | table = alloc_bootmem(size); | 4440 | table = alloc_bootmem_nopanic(size); |
4441 | else if (hashdist) | 4441 | else if (hashdist) |
4442 | table = __vmalloc(size, GFP_ATOMIC, PAGE_KERNEL); | 4442 | table = __vmalloc(size, GFP_ATOMIC, PAGE_KERNEL); |
4443 | else { | 4443 | else { |