Lines Matching refs:type
63 memblock_type_name(struct memblock_type *type) in memblock_type_name() argument
65 if (type == &memblock.memory) in memblock_type_name()
67 else if (type == &memblock.reserved) in memblock_type_name()
88 static long __init_memblock memblock_overlaps_region(struct memblock_type *type, in memblock_overlaps_region() argument
93 for (i = 0; i < type->cnt; i++) { in memblock_overlaps_region()
94 phys_addr_t rgnbase = type->regions[i].base; in memblock_overlaps_region()
95 phys_addr_t rgnsize = type->regions[i].size; in memblock_overlaps_region()
100 return (i < type->cnt) ? i : -1; in memblock_overlaps_region()
259 static void __init_memblock memblock_remove_region(struct memblock_type *type, unsigned long r) in memblock_remove_region() argument
261 type->total_size -= type->regions[r].size; in memblock_remove_region()
262 memmove(&type->regions[r], &type->regions[r + 1], in memblock_remove_region()
263 (type->cnt - (r + 1)) * sizeof(type->regions[r])); in memblock_remove_region()
264 type->cnt--; in memblock_remove_region()
267 if (type->cnt == 0) { in memblock_remove_region()
268 WARN_ON(type->total_size != 0); in memblock_remove_region()
269 type->cnt = 1; in memblock_remove_region()
270 type->regions[0].base = 0; in memblock_remove_region()
271 type->regions[0].size = 0; in memblock_remove_region()
272 type->regions[0].flags = 0; in memblock_remove_region()
273 memblock_set_region_node(&type->regions[0], MAX_NUMNODES); in memblock_remove_region()
320 static int __init_memblock memblock_double_array(struct memblock_type *type, in memblock_double_array() argument
337 old_size = type->max * sizeof(struct memblock_region); in memblock_double_array()
347 if (type == &memblock.memory) in memblock_double_array()
368 if (type != &memblock.reserved) in memblock_double_array()
383 memblock_type_name(type), type->max, type->max * 2); in memblock_double_array()
388 memblock_type_name(type), type->max * 2, (u64)addr, in memblock_double_array()
396 memcpy(new_array, type->regions, old_size); in memblock_double_array()
397 memset(new_array + type->max, 0, old_size); in memblock_double_array()
398 old_array = type->regions; in memblock_double_array()
399 type->regions = new_array; in memblock_double_array()
400 type->max <<= 1; in memblock_double_array()
428 static void __init_memblock memblock_merge_regions(struct memblock_type *type) in memblock_merge_regions() argument
433 while (i < type->cnt - 1) { in memblock_merge_regions()
434 struct memblock_region *this = &type->regions[i]; in memblock_merge_regions()
435 struct memblock_region *next = &type->regions[i + 1]; in memblock_merge_regions()
448 memmove(next, next + 1, (type->cnt - (i + 2)) * sizeof(*next)); in memblock_merge_regions()
449 type->cnt--; in memblock_merge_regions()
465 static void __init_memblock memblock_insert_region(struct memblock_type *type, in memblock_insert_region() argument
470 struct memblock_region *rgn = &type->regions[idx]; in memblock_insert_region()
472 BUG_ON(type->cnt >= type->max); in memblock_insert_region()
473 memmove(rgn + 1, rgn, (type->cnt - idx) * sizeof(*rgn)); in memblock_insert_region()
478 type->cnt++; in memblock_insert_region()
479 type->total_size += size; in memblock_insert_region()
498 int __init_memblock memblock_add_range(struct memblock_type *type, in memblock_add_range() argument
511 if (type->regions[0].size == 0) { in memblock_add_range()
512 WARN_ON(type->cnt != 1 || type->total_size); in memblock_add_range()
513 type->regions[0].base = base; in memblock_add_range()
514 type->regions[0].size = size; in memblock_add_range()
515 type->regions[0].flags = flags; in memblock_add_range()
516 memblock_set_region_node(&type->regions[0], nid); in memblock_add_range()
517 type->total_size = size; in memblock_add_range()
529 for (i = 0; i < type->cnt; i++) { in memblock_add_range()
530 struct memblock_region *rgn = &type->regions[i]; in memblock_add_range()
545 memblock_insert_region(type, i++, base, in memblock_add_range()
557 memblock_insert_region(type, i, base, end - base, in memblock_add_range()
566 while (type->cnt + nr_new > type->max) in memblock_add_range()
567 if (memblock_double_array(type, obase, size) < 0) in memblock_add_range()
572 memblock_merge_regions(type); in memblock_add_range()
619 static int __init_memblock memblock_isolate_range(struct memblock_type *type, in memblock_isolate_range() argument
632 while (type->cnt + 2 > type->max) in memblock_isolate_range()
633 if (memblock_double_array(type, base, size) < 0) in memblock_isolate_range()
636 for (i = 0; i < type->cnt; i++) { in memblock_isolate_range()
637 struct memblock_region *rgn = &type->regions[i]; in memblock_isolate_range()
653 type->total_size -= base - rbase; in memblock_isolate_range()
654 memblock_insert_region(type, i, rbase, base - rbase, in memblock_isolate_range()
664 type->total_size -= end - rbase; in memblock_isolate_range()
665 memblock_insert_region(type, i--, rbase, end - rbase, in memblock_isolate_range()
679 int __init_memblock memblock_remove_range(struct memblock_type *type, in memblock_remove_range() argument
685 ret = memblock_isolate_range(type, base, size, &start_rgn, &end_rgn); in memblock_remove_range()
690 memblock_remove_region(type, i); in memblock_remove_range()
716 struct memblock_type *type = &memblock.reserved; in memblock_reserve_region() local
723 return memblock_add_range(type, base, size, nid, flags); in memblock_reserve_region()
740 struct memblock_type *type = &memblock.memory; in memblock_setclr_flag() local
743 ret = memblock_isolate_range(type, base, size, &start_rgn, &end_rgn); in memblock_setclr_flag()
749 memblock_set_region_flags(&type->regions[i], flag); in memblock_setclr_flag()
751 memblock_clear_region_flags(&type->regions[i], flag); in memblock_setclr_flag()
753 memblock_merge_regions(type); in memblock_setclr_flag()
996 struct memblock_type *type = &memblock.memory; in __next_mem_pfn_range() local
999 while (++*idx < type->cnt) { in __next_mem_pfn_range()
1000 r = &type->regions[*idx]; in __next_mem_pfn_range()
1007 if (*idx >= type->cnt) { in __next_mem_pfn_range()
1034 struct memblock_type *type, int nid) in memblock_set_node() argument
1039 ret = memblock_isolate_range(type, base, size, &start_rgn, &end_rgn); in memblock_set_node()
1044 memblock_set_region_node(&type->regions[i], nid); in memblock_set_node()
1046 memblock_merge_regions(type); in memblock_set_node()
1387 static int __init_memblock memblock_search(struct memblock_type *type, phys_addr_t addr) in memblock_search() argument
1389 unsigned int left = 0, right = type->cnt; in memblock_search()
1394 if (addr < type->regions[mid].base) in memblock_search()
1396 else if (addr >= (type->regions[mid].base + in memblock_search()
1397 type->regions[mid].size)) in memblock_search()
1419 struct memblock_type *type = &memblock.memory; in memblock_search_pfn_nid() local
1420 int mid = memblock_search(type, PFN_PHYS(pfn)); in memblock_search_pfn_nid()
1425 *start_pfn = PFN_DOWN(type->regions[mid].base); in memblock_search_pfn_nid()
1426 *end_pfn = PFN_DOWN(type->regions[mid].base + type->regions[mid].size); in memblock_search_pfn_nid()
1428 return type->regions[mid].nid; in memblock_search_pfn_nid()
1505 static void __init_memblock memblock_dump(struct memblock_type *type, char *name) in memblock_dump() argument
1511 pr_info(" %s.cnt = 0x%lx\n", name, type->cnt); in memblock_dump()
1513 for (i = 0; i < type->cnt; i++) { in memblock_dump()
1514 struct memblock_region *rgn = &type->regions[i]; in memblock_dump()
1558 struct memblock_type *type = m->private; in memblock_debug_show() local
1562 for (i = 0; i < type->cnt; i++) { in memblock_debug_show()
1563 reg = &type->regions[i]; in memblock_debug_show()