Lines Matching refs:type

69 memblock_type_name(struct memblock_type *type)  in memblock_type_name()  argument
71 if (type == &memblock.memory) in memblock_type_name()
73 else if (type == &memblock.reserved) in memblock_type_name()
94 bool __init_memblock memblock_overlaps_region(struct memblock_type *type, in memblock_overlaps_region() argument
99 for (i = 0; i < type->cnt; i++) { in memblock_overlaps_region()
100 phys_addr_t rgnbase = type->regions[i].base; in memblock_overlaps_region()
101 phys_addr_t rgnsize = type->regions[i].size; in memblock_overlaps_region()
106 return i < type->cnt; in memblock_overlaps_region()
285 static void __init_memblock memblock_remove_region(struct memblock_type *type, unsigned long r) in memblock_remove_region() argument
287 type->total_size -= type->regions[r].size; in memblock_remove_region()
288 memmove(&type->regions[r], &type->regions[r + 1], in memblock_remove_region()
289 (type->cnt - (r + 1)) * sizeof(type->regions[r])); in memblock_remove_region()
290 type->cnt--; in memblock_remove_region()
293 if (type->cnt == 0) { in memblock_remove_region()
294 WARN_ON(type->total_size != 0); in memblock_remove_region()
295 type->cnt = 1; in memblock_remove_region()
296 type->regions[0].base = 0; in memblock_remove_region()
297 type->regions[0].size = 0; in memblock_remove_region()
298 type->regions[0].flags = 0; in memblock_remove_region()
299 memblock_set_region_node(&type->regions[0], MAX_NUMNODES); in memblock_remove_region()
346 static int __init_memblock memblock_double_array(struct memblock_type *type, in memblock_double_array() argument
363 old_size = type->max * sizeof(struct memblock_region); in memblock_double_array()
373 if (type == &memblock.memory) in memblock_double_array()
394 if (type != &memblock.reserved) in memblock_double_array()
409 memblock_type_name(type), type->max, type->max * 2); in memblock_double_array()
414 memblock_type_name(type), type->max * 2, (u64)addr, in memblock_double_array()
422 memcpy(new_array, type->regions, old_size); in memblock_double_array()
423 memset(new_array + type->max, 0, old_size); in memblock_double_array()
424 old_array = type->regions; in memblock_double_array()
425 type->regions = new_array; in memblock_double_array()
426 type->max <<= 1; in memblock_double_array()
454 static void __init_memblock memblock_merge_regions(struct memblock_type *type) in memblock_merge_regions() argument
459 while (i < type->cnt - 1) { in memblock_merge_regions()
460 struct memblock_region *this = &type->regions[i]; in memblock_merge_regions()
461 struct memblock_region *next = &type->regions[i + 1]; in memblock_merge_regions()
474 memmove(next, next + 1, (type->cnt - (i + 2)) * sizeof(*next)); in memblock_merge_regions()
475 type->cnt--; in memblock_merge_regions()
491 static void __init_memblock memblock_insert_region(struct memblock_type *type, in memblock_insert_region() argument
496 struct memblock_region *rgn = &type->regions[idx]; in memblock_insert_region()
498 BUG_ON(type->cnt >= type->max); in memblock_insert_region()
499 memmove(rgn + 1, rgn, (type->cnt - idx) * sizeof(*rgn)); in memblock_insert_region()
504 type->cnt++; in memblock_insert_region()
505 type->total_size += size; in memblock_insert_region()
524 int __init_memblock memblock_add_range(struct memblock_type *type, in memblock_add_range() argument
537 if (type->regions[0].size == 0) { in memblock_add_range()
538 WARN_ON(type->cnt != 1 || type->total_size); in memblock_add_range()
539 type->regions[0].base = base; in memblock_add_range()
540 type->regions[0].size = size; in memblock_add_range()
541 type->regions[0].flags = flags; in memblock_add_range()
542 memblock_set_region_node(&type->regions[0], nid); in memblock_add_range()
543 type->total_size = size; in memblock_add_range()
555 for (i = 0; i < type->cnt; i++) { in memblock_add_range()
556 struct memblock_region *rgn = &type->regions[i]; in memblock_add_range()
575 memblock_insert_region(type, i++, base, in memblock_add_range()
587 memblock_insert_region(type, i, base, end - base, in memblock_add_range()
596 while (type->cnt + nr_new > type->max) in memblock_add_range()
597 if (memblock_double_array(type, obase, size) < 0) in memblock_add_range()
602 memblock_merge_regions(type); in memblock_add_range()
618 struct memblock_type *type = &memblock.memory; in memblock_add_region() local
625 return memblock_add_range(type, base, size, nid, flags); in memblock_add_region()
649 static int __init_memblock memblock_isolate_range(struct memblock_type *type, in memblock_isolate_range() argument
662 while (type->cnt + 2 > type->max) in memblock_isolate_range()
663 if (memblock_double_array(type, base, size) < 0) in memblock_isolate_range()
666 for (i = 0; i < type->cnt; i++) { in memblock_isolate_range()
667 struct memblock_region *rgn = &type->regions[i]; in memblock_isolate_range()
683 type->total_size -= base - rbase; in memblock_isolate_range()
684 memblock_insert_region(type, i, rbase, base - rbase, in memblock_isolate_range()
694 type->total_size -= end - rbase; in memblock_isolate_range()
695 memblock_insert_region(type, i--, rbase, end - rbase, in memblock_isolate_range()
709 static int __init_memblock memblock_remove_range(struct memblock_type *type, in memblock_remove_range() argument
715 ret = memblock_isolate_range(type, base, size, &start_rgn, &end_rgn); in memblock_remove_range()
720 memblock_remove_region(type, i); in memblock_remove_range()
746 struct memblock_type *type = &memblock.reserved; in memblock_reserve_region() local
753 return memblock_add_range(type, base, size, nid, flags); in memblock_reserve_region()
770 struct memblock_type *type = &memblock.memory; in memblock_setclr_flag() local
773 ret = memblock_isolate_range(type, base, size, &start_rgn, &end_rgn); in memblock_setclr_flag()
779 memblock_set_region_flags(&type->regions[i], flag); in memblock_setclr_flag()
781 memblock_clear_region_flags(&type->regions[i], flag); in memblock_setclr_flag()
783 memblock_merge_regions(type); in memblock_setclr_flag()
838 struct memblock_type *type = &memblock.reserved; in __next_reserved_mem_region() local
840 if (*idx >= 0 && *idx < type->cnt) { in __next_reserved_mem_region()
841 struct memblock_region *r = &type->regions[*idx]; in __next_reserved_mem_region()
1083 struct memblock_type *type = &memblock.memory; in __next_mem_pfn_range() local
1086 while (++*idx < type->cnt) { in __next_mem_pfn_range()
1087 r = &type->regions[*idx]; in __next_mem_pfn_range()
1094 if (*idx >= type->cnt) { in __next_mem_pfn_range()
1121 struct memblock_type *type, int nid) in memblock_set_node() argument
1126 ret = memblock_isolate_range(type, base, size, &start_rgn, &end_rgn); in memblock_set_node()
1131 memblock_set_region_node(&type->regions[i], nid); in memblock_set_node()
1133 memblock_merge_regions(type); in memblock_set_node()
1494 static int __init_memblock memblock_search(struct memblock_type *type, phys_addr_t addr) in memblock_search() argument
1496 unsigned int left = 0, right = type->cnt; in memblock_search()
1501 if (addr < type->regions[mid].base) in memblock_search()
1503 else if (addr >= (type->regions[mid].base + in memblock_search()
1504 type->regions[mid].size)) in memblock_search()
1526 struct memblock_type *type = &memblock.memory; in memblock_search_pfn_nid() local
1527 int mid = memblock_search(type, PFN_PHYS(pfn)); in memblock_search_pfn_nid()
1532 *start_pfn = PFN_DOWN(type->regions[mid].base); in memblock_search_pfn_nid()
1533 *end_pfn = PFN_DOWN(type->regions[mid].base + type->regions[mid].size); in memblock_search_pfn_nid()
1535 return type->regions[mid].nid; in memblock_search_pfn_nid()
1612 static void __init_memblock memblock_dump(struct memblock_type *type, char *name) in memblock_dump() argument
1618 pr_info(" %s.cnt = 0x%lx\n", name, type->cnt); in memblock_dump()
1620 for (i = 0; i < type->cnt; i++) { in memblock_dump()
1621 struct memblock_region *rgn = &type->regions[i]; in memblock_dump()
1665 struct memblock_type *type = m->private; in memblock_debug_show() local
1669 for (i = 0; i < type->cnt; i++) { in memblock_debug_show()
1670 reg = &type->regions[i]; in memblock_debug_show()