Lines Matching refs:memblock

18 #include <linux/memblock.h>
33 * DOC: memblock overview
56 * wrapped with struct memblock. This structure is statically
66 * The early architecture setup should tell memblock what the physical
74 * Once memblock is setup the memory can be allocated using one of the
91 * memblock data structures (except "physmem") will be discarded after the
111 struct memblock memblock __initdata_memblock = {
136 * keep a pointer to &memblock.memory in the text section to use it in
138 * For architectures that do not keep memblock data after init, this
141 static __refdata struct memblock_type *memblock_memory = &memblock.memory;
291 end = memblock.current_limit;
365 if (memblock.reserved.regions != memblock_reserved_init_regions) {
366 addr = __pa(memblock.reserved.regions);
368 memblock.reserved.max);
370 kfree(memblock.reserved.regions);
375 if (memblock.memory.regions != memblock_memory_init_regions) {
376 addr = __pa(memblock.memory.regions);
378 memblock.memory.max);
380 kfree(memblock.memory.regions);
390 * memblock_double_array - double the size of the memblock regions array
391 * @type: memblock type of the regions array being doubled
395 * Double the size of the @type regions array. If memblock is being used to
431 if (type == &memblock.memory)
442 if (type != &memblock.reserved)
446 memblock.current_limit,
450 min(new_area_start, memblock.current_limit),
456 pr_err("memblock: Failed to double %s array from %ld to %ld entries !\n",
462 memblock_dbg("memblock: %s is doubled to %ld at [%pa-%pa]",
484 * Reserve the new array if that comes from the memblock. Otherwise, we
498 * @type: memblock type to scan
528 * memblock_insert_region - insert new memblock region
529 * @type: memblock type to insert into
536 * Insert new memblock region [@base, @base + @size) into @type at @idx.
558 * memblock_add_range - add new memblock region
559 * @type: memblock type to add new region into
565 * Add new memblock region [@base, @base + @size) into @type. The new region
660 * memblock_add_node - add new memblock region within a NUMA node
665 * Add new memblock region [@base, @base + @size) to the "memory"
674 return memblock_add_range(&memblock.memory, base, size, nid, 0);
678 * memblock_add - add new memblock region
682 * Add new memblock region [@base, @base + @size) to the "memory"
695 return memblock_add_range(&memblock.memory, base, size, MAX_NUMNODES, 0);
700 * @type: memblock type to isolate range for
796 return memblock_remove_range(&memblock.memory, base, size);
815 return memblock_remove_range(&memblock.reserved, base, size);
825 return memblock_add_range(&memblock.reserved, base, size, MAX_NUMNODES, 0);
854 struct memblock_type *type = &memblock.memory;
942 /* we never skip regions when iterating memblock.reserved or physmem */
1175 struct memblock_type *type = &memblock.memory;
1202 * memblock_set_node - set node ID on memblock regions
1205 * @type: memblock type to set node ID for
1208 * Set the nid of memblock @type regions in [@base, @base + @size) to @nid.
1258 &memblock.memory, &memblock.reserved,
1285 &memblock.memory, &memblock.reserved,
1308 * memblock.current_limit if @end == %MEMBLOCK_ALLOC_ACCESSIBLE.
1367 * The min_count is set to 0 so that memblock allocated
1446 * this moment memblock may be deinitialized already and its
1452 if (max_addr > memblock.current_limit)
1453 max_addr = memblock.current_limit;
1478 * allocate only from memory limited by memblock.current_limit value
1515 * allocate only from memory limited by memblock.current_limit value
1552 * allocate only from memory limited by memblock.current_limit value
1584 * This is only useful when the memblock allocator has already been torn
1611 return memblock.memory.total_size;
1616 return memblock.reserved.total_size;
1622 return memblock.memory.regions[0].base;
1627 int idx = memblock.memory.cnt - 1;
1629 return (memblock.memory.regions[idx].base + memblock.memory.regions[idx].size);
1639 * the memory memblock regions, if the @limit exceeds the total size
1667 memblock_remove_range(&memblock.memory, max_addr,
1669 memblock_remove_range(&memblock.reserved, max_addr,
1681 ret = memblock_isolate_range(&memblock.memory, base, size,
1687 for (i = memblock.memory.cnt - 1; i >= end_rgn; i--)
1688 if (!memblock_is_nomap(&memblock.memory.regions[i]))
1689 memblock_remove_region(&memblock.memory, i);
1692 if (!memblock_is_nomap(&memblock.memory.regions[i]))
1693 memblock_remove_region(&memblock.memory, i);
1696 memblock_remove_range(&memblock.reserved, 0, base);
1697 memblock_remove_range(&memblock.reserved,
1737 return memblock_search(&memblock.reserved, addr) != -1;
1742 return memblock_search(&memblock.memory, addr) != -1;
1747 int i = memblock_search(&memblock.memory, addr);
1751 return !memblock_is_nomap(&memblock.memory.regions[i]);
1757 struct memblock_type *type = &memblock.memory;
1781 int idx = memblock_search(&memblock.memory, base);
1786 return (memblock.memory.regions[idx].base +
1787 memblock.memory.regions[idx].size) >= end;
1803 return memblock_overlaps_region(&memblock.reserved, base, size);
1824 memblock_remove_region(&memblock.memory,
1825 r - memblock.memory.regions);
1833 memblock.current_limit = limit;
1838 return memblock.current_limit;
1871 &memblock.memory.total_size,
1872 &memblock.reserved.total_size);
1874 memblock_dump(&memblock.memory);
1875 memblock_dump(&memblock.reserved);
1898 early_param("memblock", early_memblock);
2016 struct dentry *root = debugfs_create_dir("memblock", NULL);
2019 &memblock.memory, &memblock_debug_fops);
2021 &memblock.reserved, &memblock_debug_fops);