Lines Matching refs:size
26 unsigned long long base, size, end; in lmb_dump_region() local
34 size = rgn->region[i].size; in lmb_dump_region()
35 end = base + size - 1; in lmb_dump_region()
39 name, i, base, end, size, flags); in lmb_dump_region()
81 phys_size_t size1 = rgn->region[r1].size; in lmb_regions_adjacent()
83 phys_size_t size2 = rgn->region[r2].size; in lmb_regions_adjacent()
94 rgn->region[i].size = rgn->region[i + 1].size; in lmb_remove_region()
104 rgn->region[r1].size += rgn->region[r2].size; in lmb_coalesce_regions()
138 if (!gd->bd->bi_dram[bank].size || in arch_lmb_reserve_generic()
143 gd->bd->bi_dram[bank].size - 1; in arch_lmb_reserve_generic()
212 if (bd->bi_dram[i].size) { in lmb_init_and_reserve()
214 bd->bi_dram[i].size); in lmb_init_and_reserve()
223 phys_size_t size, void *fdt_blob) in lmb_init_and_reserve_range() argument
226 lmb_add(lmb, base, size); in lmb_init_and_reserve_range()
232 phys_size_t size, enum lmb_flags flags) in lmb_add_region_flags() argument
239 rgn->region[0].size = size; in lmb_add_region_flags()
248 phys_size_t rgnsize = rgn->region[i].size; in lmb_add_region_flags()
250 phys_addr_t end = base + size - 1; in lmb_add_region_flags()
261 adjacent = lmb_addrs_adjacent(base, size, rgnbase, rgnsize); in lmb_add_region_flags()
265 rgn->region[i].base -= size; in lmb_add_region_flags()
266 rgn->region[i].size += size; in lmb_add_region_flags()
272 rgn->region[i].size += size; in lmb_add_region_flags()
275 } else if (lmb_addrs_overlap(base, size, rgnbase, rgnsize)) { in lmb_add_region_flags()
297 rgn->region[i + 1].size = rgn->region[i].size; in lmb_add_region_flags()
301 rgn->region[i + 1].size = size; in lmb_add_region_flags()
309 rgn->region[0].size = size; in lmb_add_region_flags()
319 phys_size_t size) in lmb_add_region() argument
321 return lmb_add_region_flags(rgn, base, size, LMB_NONE); in lmb_add_region()
325 long lmb_add(struct lmb *lmb, phys_addr_t base, phys_size_t size) in lmb_add() argument
329 return lmb_add_region(_rgn, base, size); in lmb_add()
332 long lmb_free(struct lmb *lmb, phys_addr_t base, phys_size_t size) in lmb_free() argument
336 phys_addr_t end = base + size - 1; in lmb_free()
344 rgnend = rgnbegin + rgn->region[i].size - 1; in lmb_free()
363 rgn->region[i].size -= size; in lmb_free()
369 rgn->region[i].size -= size; in lmb_free()
377 rgn->region[i].size = base - rgn->region[i].base; in lmb_free()
382 long lmb_reserve_flags(struct lmb *lmb, phys_addr_t base, phys_size_t size, in lmb_reserve_flags() argument
387 return lmb_add_region_flags(_rgn, base, size, flags); in lmb_reserve_flags()
390 long lmb_reserve(struct lmb *lmb, phys_addr_t base, phys_size_t size) in lmb_reserve() argument
392 return lmb_reserve_flags(lmb, base, size, LMB_NONE); in lmb_reserve()
396 phys_size_t size) in lmb_overlaps_region() argument
402 phys_size_t rgnsize = rgn->region[i].size; in lmb_overlaps_region()
403 if (lmb_addrs_overlap(base, size, rgnbase, rgnsize)) in lmb_overlaps_region()
410 phys_addr_t lmb_alloc(struct lmb *lmb, phys_size_t size, ulong align) in lmb_alloc() argument
412 return lmb_alloc_base(lmb, size, align, LMB_ALLOC_ANYWHERE); in lmb_alloc()
415 phys_addr_t lmb_alloc_base(struct lmb *lmb, phys_size_t size, ulong align, phys_addr_t max_addr) in lmb_alloc_base() argument
419 alloc = __lmb_alloc_base(lmb, size, align, max_addr); in lmb_alloc_base()
423 (ulong)size, (ulong)max_addr); in lmb_alloc_base()
428 static phys_addr_t lmb_align_down(phys_addr_t addr, phys_size_t size) in lmb_align_down() argument
430 return addr & ~(size - 1); in lmb_align_down()
433 phys_addr_t __lmb_alloc_base(struct lmb *lmb, phys_size_t size, ulong align, phys_addr_t max_addr) in __lmb_alloc_base() argument
441 phys_size_t lmbsize = lmb->memory.region[i].size; in __lmb_alloc_base()
443 if (lmbsize < size) in __lmb_alloc_base()
446 base = lmb_align_down(lmbbase + lmbsize - size, align); in __lmb_alloc_base()
452 base = lmb_align_down(base - size, align); in __lmb_alloc_base()
457 rgn = lmb_overlaps_region(&lmb->reserved, base, size); in __lmb_alloc_base()
461 size) < 0) in __lmb_alloc_base()
466 if (res_base < size) in __lmb_alloc_base()
468 base = lmb_align_down(res_base - size, align); in __lmb_alloc_base()
478 phys_addr_t lmb_alloc_addr(struct lmb *lmb, phys_addr_t base, phys_size_t size) in lmb_alloc_addr() argument
483 rgn = lmb_overlaps_region(&lmb->memory, base, size); in lmb_alloc_addr()
490 lmb->memory.region[rgn].size, in lmb_alloc_addr()
491 base + size - 1, 1)) { in lmb_alloc_addr()
493 if (lmb_reserve(lmb, base, size) >= 0) in lmb_alloc_addr()
515 lmb->reserved.region[i].size > addr) { in lmb_get_free_size()
522 lmb->memory.region[lmb->memory.cnt - 1].size - addr; in lmb_get_free_size()
533 lmb->reserved.region[i].size - 1; in lmb_is_reserved_flags()