aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYinghai Lu <yinghai@kernel.org>2013-01-24 15:20:15 -0500
committerH. Peter Anvin <hpa@linux.intel.com>2013-01-29 22:32:59 -0500
commit38fa4175e60d98fb1c9815fb14f8057576dade73 (patch)
tree37472101af7cc4ed35b11b414a0ea8f9ac1d81db
parent8b78c21d72d9dbcb7230e97423a2cd8d8402c20c (diff)
mm: Add alloc_bootmem_low_pages_nopanic()
We don't need to panic in some case, like for swiotlb preallocating. Signed-off-by: Yinghai Lu <yinghai@kernel.org> Link: http://lkml.kernel.org/r/1359058816-7615-35-git-send-email-yinghai@kernel.org Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
-rw-r--r--include/linux/bootmem.h5
-rw-r--r--mm/bootmem.c8
-rw-r--r--mm/nobootmem.c8
3 files changed, 21 insertions, 0 deletions
diff --git a/include/linux/bootmem.h b/include/linux/bootmem.h
index 3f778c27f825..3cd16ba82f15 100644
--- a/include/linux/bootmem.h
+++ b/include/linux/bootmem.h
@@ -99,6 +99,9 @@ void *___alloc_bootmem_node_nopanic(pg_data_t *pgdat,
99extern void *__alloc_bootmem_low(unsigned long size, 99extern void *__alloc_bootmem_low(unsigned long size,
100 unsigned long align, 100 unsigned long align,
101 unsigned long goal); 101 unsigned long goal);
102void *__alloc_bootmem_low_nopanic(unsigned long size,
103 unsigned long align,
104 unsigned long goal);
102extern void *__alloc_bootmem_low_node(pg_data_t *pgdat, 105extern void *__alloc_bootmem_low_node(pg_data_t *pgdat,
103 unsigned long size, 106 unsigned long size,
104 unsigned long align, 107 unsigned long align,
@@ -132,6 +135,8 @@ extern void *__alloc_bootmem_low_node(pg_data_t *pgdat,
132 135
133#define alloc_bootmem_low(x) \ 136#define alloc_bootmem_low(x) \
134 __alloc_bootmem_low(x, SMP_CACHE_BYTES, 0) 137 __alloc_bootmem_low(x, SMP_CACHE_BYTES, 0)
138#define alloc_bootmem_low_pages_nopanic(x) \
139 __alloc_bootmem_low_nopanic(x, PAGE_SIZE, 0)
135#define alloc_bootmem_low_pages(x) \ 140#define alloc_bootmem_low_pages(x) \
136 __alloc_bootmem_low(x, PAGE_SIZE, 0) 141 __alloc_bootmem_low(x, PAGE_SIZE, 0)
137#define alloc_bootmem_low_pages_node(pgdat, x) \ 142#define alloc_bootmem_low_pages_node(pgdat, x) \
diff --git a/mm/bootmem.c b/mm/bootmem.c
index b93376c39b61..2b0bcb019ec2 100644
--- a/mm/bootmem.c
+++ b/mm/bootmem.c
@@ -833,6 +833,14 @@ void * __init __alloc_bootmem_low(unsigned long size, unsigned long align,
833 return ___alloc_bootmem(size, align, goal, ARCH_LOW_ADDRESS_LIMIT); 833 return ___alloc_bootmem(size, align, goal, ARCH_LOW_ADDRESS_LIMIT);
834} 834}
835 835
836void * __init __alloc_bootmem_low_nopanic(unsigned long size,
837 unsigned long align,
838 unsigned long goal)
839{
840 return ___alloc_bootmem_nopanic(size, align, goal,
841 ARCH_LOW_ADDRESS_LIMIT);
842}
843
836/** 844/**
837 * __alloc_bootmem_low_node - allocate low boot memory from a specific node 845 * __alloc_bootmem_low_node - allocate low boot memory from a specific node
838 * @pgdat: node to allocate from 846 * @pgdat: node to allocate from
diff --git a/mm/nobootmem.c b/mm/nobootmem.c
index 03d152a76acf..5e07d36e381e 100644
--- a/mm/nobootmem.c
+++ b/mm/nobootmem.c
@@ -391,6 +391,14 @@ void * __init __alloc_bootmem_low(unsigned long size, unsigned long align,
391 return ___alloc_bootmem(size, align, goal, ARCH_LOW_ADDRESS_LIMIT); 391 return ___alloc_bootmem(size, align, goal, ARCH_LOW_ADDRESS_LIMIT);
392} 392}
393 393
394void * __init __alloc_bootmem_low_nopanic(unsigned long size,
395 unsigned long align,
396 unsigned long goal)
397{
398 return ___alloc_bootmem_nopanic(size, align, goal,
399 ARCH_LOW_ADDRESS_LIMIT);
400}
401
394/** 402/**
395 * __alloc_bootmem_low_node - allocate low boot memory from a specific node 403 * __alloc_bootmem_low_node - allocate low boot memory from a specific node
396 * @pgdat: node to allocate from 404 * @pgdat: node to allocate from