aboutsummaryrefslogtreecommitdiffstats
path: root/lib/lmb.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/lmb.c')
-rw-r--r--lib/lmb.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/lib/lmb.c b/lib/lmb.c
index 83287d3869a3..93445dc8f818 100644
--- a/lib/lmb.c
+++ b/lib/lmb.c
@@ -286,8 +286,7 @@ static u64 __init lmb_alloc_nid_unreserved(u64 start, u64 end,
286 j = lmb_overlaps_region(&lmb.reserved, base, size); 286 j = lmb_overlaps_region(&lmb.reserved, base, size);
287 if (j < 0) { 287 if (j < 0) {
288 /* this area isn't reserved, take it */ 288 /* this area isn't reserved, take it */
289 if (lmb_add_region(&lmb.reserved, base, 289 if (lmb_add_region(&lmb.reserved, base, size) < 0)
290 lmb_align_up(size, align)) < 0)
291 base = ~(u64)0; 290 base = ~(u64)0;
292 return base; 291 return base;
293 } 292 }
@@ -333,6 +332,10 @@ u64 __init lmb_alloc_nid(u64 size, u64 align, int nid,
333 struct lmb_region *mem = &lmb.memory; 332 struct lmb_region *mem = &lmb.memory;
334 int i; 333 int i;
335 334
335 BUG_ON(0 == size);
336
337 size = lmb_align_up(size, align);
338
336 for (i = 0; i < mem->cnt; i++) { 339 for (i = 0; i < mem->cnt; i++) {
337 u64 ret = lmb_alloc_nid_region(&mem->region[i], 340 u64 ret = lmb_alloc_nid_region(&mem->region[i],
338 nid_range, 341 nid_range,
@@ -370,6 +373,8 @@ u64 __init __lmb_alloc_base(u64 size, u64 align, u64 max_addr)
370 373
371 BUG_ON(0 == size); 374 BUG_ON(0 == size);
372 375
376 size = lmb_align_up(size, align);
377
373 /* On some platforms, make sure we allocate lowmem */ 378 /* On some platforms, make sure we allocate lowmem */
374 /* Note that LMB_REAL_LIMIT may be LMB_ALLOC_ANYWHERE */ 379 /* Note that LMB_REAL_LIMIT may be LMB_ALLOC_ANYWHERE */
375 if (max_addr == LMB_ALLOC_ANYWHERE) 380 if (max_addr == LMB_ALLOC_ANYWHERE)
@@ -393,8 +398,7 @@ u64 __init __lmb_alloc_base(u64 size, u64 align, u64 max_addr)
393 j = lmb_overlaps_region(&lmb.reserved, base, size); 398 j = lmb_overlaps_region(&lmb.reserved, base, size);
394 if (j < 0) { 399 if (j < 0) {
395 /* this area isn't reserved, take it */ 400 /* this area isn't reserved, take it */
396 if (lmb_add_region(&lmb.reserved, base, 401 if (lmb_add_region(&lmb.reserved, base, size) < 0)
397 lmb_align_up(size, align)) < 0)
398 return 0; 402 return 0;
399 return base; 403 return base;
400 } 404 }