aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/lmb.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/lib/lmb.c b/lib/lmb.c
index 98078b4ec20e..6390d63a2a0e 100644
--- a/lib/lmb.c
+++ b/lib/lmb.c
@@ -245,6 +245,11 @@ static unsigned long lmb_align_down(unsigned long addr, unsigned long size)
245 return addr & ~(size - 1); 245 return addr & ~(size - 1);
246} 246}
247 247
248static unsigned long lmb_align_up(unsigned long addr, unsigned long size)
249{
250 return (addr + (size - 1)) & ~(size - 1);
251}
252
248unsigned long __init __lmb_alloc_base(unsigned long size, unsigned long align, 253unsigned long __init __lmb_alloc_base(unsigned long size, unsigned long align,
249 unsigned long max_addr) 254 unsigned long max_addr)
250{ 255{
@@ -281,7 +286,8 @@ unsigned long __init __lmb_alloc_base(unsigned long size, unsigned long align,
281 if (i < 0) 286 if (i < 0)
282 return 0; 287 return 0;
283 288
284 lmb_add_region(&lmb.reserved, base, size); 289 if (lmb_add_region(&lmb.reserved, base, lmb_align_up(size, align)) < 0)
290 return 0;
285 291
286 return base; 292 return base;
287} 293}