• Home
  • Raw
  • Download

Lines Matching refs:type

162 bool __init_memblock memblock_overlaps_region(struct memblock_type *type,  in memblock_overlaps_region()  argument
169 for (i = 0; i < type->cnt; i++) in memblock_overlaps_region()
170 if (memblock_addrs_overlap(base, size, type->regions[i].base, in memblock_overlaps_region()
171 type->regions[i].size)) in memblock_overlaps_region()
173 return i < type->cnt; in memblock_overlaps_region()
321 static void __init_memblock memblock_remove_region(struct memblock_type *type, unsigned long r) in memblock_remove_region() argument
323 type->total_size -= type->regions[r].size; in memblock_remove_region()
324 memmove(&type->regions[r], &type->regions[r + 1], in memblock_remove_region()
325 (type->cnt - (r + 1)) * sizeof(type->regions[r])); in memblock_remove_region()
326 type->cnt--; in memblock_remove_region()
329 if (type->cnt == 0) { in memblock_remove_region()
330 WARN_ON(type->total_size != 0); in memblock_remove_region()
331 type->cnt = 1; in memblock_remove_region()
332 type->regions[0].base = 0; in memblock_remove_region()
333 type->regions[0].size = 0; in memblock_remove_region()
334 type->regions[0].flags = 0; in memblock_remove_region()
335 memblock_set_region_node(&type->regions[0], MAX_NUMNODES); in memblock_remove_region()
384 static int __init_memblock memblock_double_array(struct memblock_type *type, in memblock_double_array() argument
401 old_size = type->max * sizeof(struct memblock_region); in memblock_double_array()
411 if (type == &memblock.memory) in memblock_double_array()
422 if (type != &memblock.reserved) in memblock_double_array()
437 type->name, type->max, type->max * 2); in memblock_double_array()
443 type->name, type->max * 2, &addr, &new_end); in memblock_double_array()
450 memcpy(new_array, type->regions, old_size); in memblock_double_array()
451 memset(new_array + type->max, 0, old_size); in memblock_double_array()
452 old_array = type->regions; in memblock_double_array()
453 type->regions = new_array; in memblock_double_array()
454 type->max <<= 1; in memblock_double_array()
482 static void __init_memblock memblock_merge_regions(struct memblock_type *type) in memblock_merge_regions() argument
487 while (i < type->cnt - 1) { in memblock_merge_regions()
488 struct memblock_region *this = &type->regions[i]; in memblock_merge_regions()
489 struct memblock_region *next = &type->regions[i + 1]; in memblock_merge_regions()
502 memmove(next, next + 1, (type->cnt - (i + 2)) * sizeof(*next)); in memblock_merge_regions()
503 type->cnt--; in memblock_merge_regions()
519 static void __init_memblock memblock_insert_region(struct memblock_type *type, in memblock_insert_region() argument
525 struct memblock_region *rgn = &type->regions[idx]; in memblock_insert_region()
527 BUG_ON(type->cnt >= type->max); in memblock_insert_region()
528 memmove(rgn + 1, rgn, (type->cnt - idx) * sizeof(*rgn)); in memblock_insert_region()
533 type->cnt++; in memblock_insert_region()
534 type->total_size += size; in memblock_insert_region()
553 int __init_memblock memblock_add_range(struct memblock_type *type, in memblock_add_range() argument
567 if (type->regions[0].size == 0) { in memblock_add_range()
568 WARN_ON(type->cnt != 1 || type->total_size); in memblock_add_range()
569 type->regions[0].base = base; in memblock_add_range()
570 type->regions[0].size = size; in memblock_add_range()
571 type->regions[0].flags = flags; in memblock_add_range()
572 memblock_set_region_node(&type->regions[0], nid); in memblock_add_range()
573 type->total_size = size; in memblock_add_range()
585 for_each_memblock_type(idx, type, rgn) { in memblock_add_range()
604 memblock_insert_region(type, idx++, base, in memblock_add_range()
616 memblock_insert_region(type, idx, base, end - base, in memblock_add_range()
628 while (type->cnt + nr_new > type->max) in memblock_add_range()
629 if (memblock_double_array(type, obase, size) < 0) in memblock_add_range()
634 memblock_merge_regions(type); in memblock_add_range()
694 static int __init_memblock memblock_isolate_range(struct memblock_type *type, in memblock_isolate_range() argument
708 while (type->cnt + 2 > type->max) in memblock_isolate_range()
709 if (memblock_double_array(type, base, size) < 0) in memblock_isolate_range()
712 for_each_memblock_type(idx, type, rgn) { in memblock_isolate_range()
728 type->total_size -= base - rbase; in memblock_isolate_range()
729 memblock_insert_region(type, idx, rbase, base - rbase, in memblock_isolate_range()
739 type->total_size -= end - rbase; in memblock_isolate_range()
740 memblock_insert_region(type, idx--, rbase, end - rbase, in memblock_isolate_range()
754 static int __init_memblock memblock_remove_range(struct memblock_type *type, in memblock_remove_range() argument
760 ret = memblock_isolate_range(type, base, size, &start_rgn, &end_rgn); in memblock_remove_range()
765 memblock_remove_region(type, i); in memblock_remove_range()
825 struct memblock_type *type = &memblock.memory; in memblock_setclr_flag() local
828 ret = memblock_isolate_range(type, base, size, &start_rgn, &end_rgn); in memblock_setclr_flag()
833 struct memblock_region *r = &type->regions[i]; in memblock_setclr_flag()
841 memblock_merge_regions(type); in memblock_setclr_flag()
919 struct memblock_type *type = &memblock.reserved; in __next_reserved_mem_region() local
921 if (*idx < type->cnt) { in __next_reserved_mem_region()
922 struct memblock_region *r = &type->regions[*idx]; in __next_reserved_mem_region()
1174 struct memblock_type *type = &memblock.memory; in __next_mem_pfn_range() local
1177 while (++*idx < type->cnt) { in __next_mem_pfn_range()
1178 r = &type->regions[*idx]; in __next_mem_pfn_range()
1185 if (*idx >= type->cnt) { in __next_mem_pfn_range()
1212 struct memblock_type *type, int nid) in memblock_set_node() argument
1217 ret = memblock_isolate_range(type, base, size, &start_rgn, &end_rgn); in memblock_set_node()
1222 memblock_set_region_node(&type->regions[i], nid); in memblock_set_node()
1224 memblock_merge_regions(type); in memblock_set_node()
1687 static int __init_memblock memblock_search(struct memblock_type *type, phys_addr_t addr) in memblock_search() argument
1689 unsigned int left = 0, right = type->cnt; in memblock_search()
1694 if (addr < type->regions[mid].base) in memblock_search()
1696 else if (addr >= (type->regions[mid].base + in memblock_search()
1697 type->regions[mid].size)) in memblock_search()
1728 struct memblock_type *type = &memblock.memory; in memblock_search_pfn_nid() local
1729 int mid = memblock_search(type, PFN_PHYS(pfn)); in memblock_search_pfn_nid()
1734 *start_pfn = PFN_DOWN(type->regions[mid].base); in memblock_search_pfn_nid()
1735 *end_pfn = PFN_DOWN(type->regions[mid].base + type->regions[mid].size); in memblock_search_pfn_nid()
1737 return type->regions[mid].nid; in memblock_search_pfn_nid()
1813 static void __init_memblock memblock_dump(struct memblock_type *type) in memblock_dump() argument
1820 pr_info(" %s.cnt = 0x%lx\n", type->name, type->cnt); in memblock_dump()
1822 for_each_memblock_type(idx, type, rgn) { in memblock_dump()
1835 type->name, idx, &base, &end, &size, nid_buf, flags); in memblock_dump()
1964 struct memblock_type *type = m->private; in memblock_debug_show() local
1969 for (i = 0; i < type->cnt; i++) { in memblock_debug_show()
1970 reg = &type->regions[i]; in memblock_debug_show()