Skip to content

Commit 8bba154

Browse files
Yinghai Lutorvalds
authored andcommitted
memblock/nobootmem: allow alloc_bootmem() to take 0 as low limit
The bootmem wrapper with memblock supports top-down now, so we do not need to set the low limit to __pa(MAX_DMA_ADDRESS). The logic should be: good to allocate above __pa(MAX_DMA_ADDRESS), but it is ok if we can not find memory above 16M on system that has a small amount of RAM. Signed-off-by: Yinghai LU <yinghai@kernel.org> Cc: Ingo Molnar <mingo@elte.hu> Cc: "H. Peter Anvin" <hpa@zytor.com> Cc: Olaf Hering <olaf@aepfle.de> Cc: Tejun Heo <tj@kernel.org> Cc: Lucas De Marchi <lucas.demarchi@profusion.mobi> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
1 parent 172703b commit 8bba154

File tree

1 file changed

+16
-9
lines changed

1 file changed

+16
-9
lines changed

include/linux/bootmem.h

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -99,24 +99,31 @@ extern void *__alloc_bootmem_low_node(pg_data_t *pgdat,
9999
unsigned long align,
100100
unsigned long goal);
101101

102+
#ifdef CONFIG_NO_BOOTMEM
103+
/* We are using top down, so it is safe to use 0 here */
104+
#define BOOTMEM_LOW_LIMIT 0
105+
#else
106+
#define BOOTMEM_LOW_LIMIT __pa(MAX_DMA_ADDRESS)
107+
#endif
108+
102109
#define alloc_bootmem(x) \
103-
__alloc_bootmem(x, SMP_CACHE_BYTES, __pa(MAX_DMA_ADDRESS))
110+
__alloc_bootmem(x, SMP_CACHE_BYTES, BOOTMEM_LOW_LIMIT)
104111
#define alloc_bootmem_align(x, align) \
105-
__alloc_bootmem(x, align, __pa(MAX_DMA_ADDRESS))
112+
__alloc_bootmem(x, align, BOOTMEM_LOW_LIMIT)
106113
#define alloc_bootmem_nopanic(x) \
107-
__alloc_bootmem_nopanic(x, SMP_CACHE_BYTES, __pa(MAX_DMA_ADDRESS))
114+
__alloc_bootmem_nopanic(x, SMP_CACHE_BYTES, BOOTMEM_LOW_LIMIT)
108115
#define alloc_bootmem_pages(x) \
109-
__alloc_bootmem(x, PAGE_SIZE, __pa(MAX_DMA_ADDRESS))
116+
__alloc_bootmem(x, PAGE_SIZE, BOOTMEM_LOW_LIMIT)
110117
#define alloc_bootmem_pages_nopanic(x) \
111-
__alloc_bootmem_nopanic(x, PAGE_SIZE, __pa(MAX_DMA_ADDRESS))
118+
__alloc_bootmem_nopanic(x, PAGE_SIZE, BOOTMEM_LOW_LIMIT)
112119
#define alloc_bootmem_node(pgdat, x) \
113-
__alloc_bootmem_node(pgdat, x, SMP_CACHE_BYTES, __pa(MAX_DMA_ADDRESS))
120+
__alloc_bootmem_node(pgdat, x, SMP_CACHE_BYTES, BOOTMEM_LOW_LIMIT)
114121
#define alloc_bootmem_node_nopanic(pgdat, x) \
115-
__alloc_bootmem_node_nopanic(pgdat, x, SMP_CACHE_BYTES, __pa(MAX_DMA_ADDRESS))
122+
__alloc_bootmem_node_nopanic(pgdat, x, SMP_CACHE_BYTES, BOOTMEM_LOW_LIMIT)
116123
#define alloc_bootmem_pages_node(pgdat, x) \
117-
__alloc_bootmem_node(pgdat, x, PAGE_SIZE, __pa(MAX_DMA_ADDRESS))
124+
__alloc_bootmem_node(pgdat, x, PAGE_SIZE, BOOTMEM_LOW_LIMIT)
118125
#define alloc_bootmem_pages_node_nopanic(pgdat, x) \
119-
__alloc_bootmem_node_nopanic(pgdat, x, PAGE_SIZE, __pa(MAX_DMA_ADDRESS))
126+
__alloc_bootmem_node_nopanic(pgdat, x, PAGE_SIZE, BOOTMEM_LOW_LIMIT)
120127

121128
#define alloc_bootmem_low(x) \
122129
__alloc_bootmem_low(x, SMP_CACHE_BYTES, 0)

0 commit comments

Comments
 (0)