Lines Matching full:size
21 debug(" memory.size = 0x%llx\n", in lmb_dump_all()
22 (unsigned long long)lmb->memory.size); in lmb_dump_all()
26 debug(" .size = 0x%llx\n", in lmb_dump_all()
27 (unsigned long long)lmb->memory.region[i].size); in lmb_dump_all()
32 debug(" reserved.size = 0x%llx\n", in lmb_dump_all()
33 (unsigned long long)lmb->reserved.size); in lmb_dump_all()
37 debug(" .size = 0x%llx\n", in lmb_dump_all()
38 (unsigned long long)lmb->reserved.region[i].size); in lmb_dump_all()
67 phys_size_t size1 = rgn->region[r1].size; in lmb_regions_adjacent()
69 phys_size_t size2 = rgn->region[r2].size; in lmb_regions_adjacent()
80 rgn->region[i].size = rgn->region[i + 1].size; in lmb_remove_region()
89 rgn->region[r1].size += rgn->region[r2].size; in lmb_coalesce_regions()
96 lmb->memory.size = 0; in lmb_init()
98 lmb->reserved.size = 0; in lmb_init()
120 if (bd->bi_dram[i].size) { in lmb_init_and_reserve()
122 bd->bi_dram[i].size); in lmb_init_and_reserve()
134 phys_size_t size, void *fdt_blob) in lmb_init_and_reserve_range() argument
137 lmb_add(lmb, base, size); in lmb_init_and_reserve_range()
142 static long lmb_add_region(struct lmb_region *rgn, phys_addr_t base, phys_size_t size) in lmb_add_region() argument
149 rgn->region[0].size = size; in lmb_add_region()
157 phys_size_t rgnsize = rgn->region[i].size; in lmb_add_region()
159 if ((rgnbase == base) && (rgnsize == size)) in lmb_add_region()
163 adjacent = lmb_addrs_adjacent(base, size, rgnbase, rgnsize); in lmb_add_region()
165 rgn->region[i].base -= size; in lmb_add_region()
166 rgn->region[i].size += size; in lmb_add_region()
170 rgn->region[i].size += size; in lmb_add_region()
173 } else if (lmb_addrs_overlap(base, size, rgnbase, rgnsize)) { in lmb_add_region()
193 rgn->region[i + 1].size = rgn->region[i].size; in lmb_add_region()
196 rgn->region[i + 1].size = size; in lmb_add_region()
203 rgn->region[0].size = size; in lmb_add_region()
212 long lmb_add(struct lmb *lmb, phys_addr_t base, phys_size_t size) in lmb_add() argument
216 return lmb_add_region(_rgn, base, size); in lmb_add()
219 long lmb_free(struct lmb *lmb, phys_addr_t base, phys_size_t size) in lmb_free() argument
223 phys_addr_t end = base + size - 1; in lmb_free()
228 /* Find the region where (base, size) belongs to */ in lmb_free()
231 rgnend = rgnbegin + rgn->region[i].size - 1; in lmb_free()
250 rgn->region[i].size -= size; in lmb_free()
256 rgn->region[i].size -= size; in lmb_free()
264 rgn->region[i].size = base - rgn->region[i].base; in lmb_free()
268 long lmb_reserve(struct lmb *lmb, phys_addr_t base, phys_size_t size) in lmb_reserve() argument
272 return lmb_add_region(_rgn, base, size); in lmb_reserve()
276 phys_size_t size) in lmb_overlaps_region() argument
282 phys_size_t rgnsize = rgn->region[i].size; in lmb_overlaps_region()
283 if (lmb_addrs_overlap(base, size, rgnbase, rgnsize)) in lmb_overlaps_region()
290 phys_addr_t lmb_alloc(struct lmb *lmb, phys_size_t size, ulong align) in lmb_alloc() argument
292 return lmb_alloc_base(lmb, size, align, LMB_ALLOC_ANYWHERE); in lmb_alloc()
295 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
299 alloc = __lmb_alloc_base(lmb, size, align, max_addr); in lmb_alloc_base()
303 (ulong)size, (ulong)max_addr); in lmb_alloc_base()
308 static phys_addr_t lmb_align_down(phys_addr_t addr, phys_size_t size) in lmb_align_down() argument
310 return addr & ~(size - 1); in lmb_align_down()
313 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
321 phys_size_t lmbsize = lmb->memory.region[i].size; in __lmb_alloc_base()
323 if (lmbsize < size) in __lmb_alloc_base()
326 base = lmb_align_down(lmbbase + lmbsize - size, align); in __lmb_alloc_base()
332 base = lmb_align_down(base - size, align); in __lmb_alloc_base()
337 rgn = lmb_overlaps_region(&lmb->reserved, base, size); in __lmb_alloc_base()
341 size) < 0) in __lmb_alloc_base()
346 if (res_base < size) in __lmb_alloc_base()
348 base = lmb_align_down(res_base - size, align); in __lmb_alloc_base()
358 phys_addr_t lmb_alloc_addr(struct lmb *lmb, phys_addr_t base, phys_size_t size) in lmb_alloc_addr() argument
363 rgn = lmb_overlaps_region(&lmb->memory, base, size); in lmb_alloc_addr()
370 lmb->memory.region[rgn].size, in lmb_alloc_addr()
371 base + size - 1, 1)) { in lmb_alloc_addr()
373 if (lmb_reserve(lmb, base, size) >= 0) in lmb_alloc_addr()
395 lmb->reserved.region[i].size > addr) { in lmb_get_free_size()
402 lmb->memory.region[lmb->memory.cnt - 1].size - addr; in lmb_get_free_size()
413 lmb->reserved.region[i].size - 1; in lmb_is_reserved()