Lines Matching refs:memblock
18 #include <linux/memblock.h>
37 * DOC: memblock overview
60 * wrapped with struct memblock. This structure is statically
70 * The early architecture setup should tell memblock what the physical
78 * Once memblock is setup the memory can be allocated using one of the
95 * memblock data structures (except "physmem") will be discarded after the
115 struct memblock memblock __initdata_memblock = {
140 * keep a pointer to &memblock.memory in the text section to use it in
142 * For architectures that do not keep memblock data after init, this
145 static __refdata struct memblock_type *memblock_memory = &memblock.memory;
301 end = memblock.current_limit;
375 if (memblock.reserved.regions != memblock_reserved_init_regions) {
376 addr = __pa(memblock.reserved.regions);
378 memblock.reserved.max);
380 kfree(memblock.reserved.regions);
385 if (memblock.memory.regions != memblock_memory_init_regions) {
386 addr = __pa(memblock.memory.regions);
388 memblock.memory.max);
390 kfree(memblock.memory.regions);
400 * memblock_double_array - double the size of the memblock regions array
401 * @type: memblock type of the regions array being doubled
405 * Double the size of the @type regions array. If memblock is being used to
441 if (type == &memblock.memory)
452 if (type != &memblock.reserved)
456 memblock.current_limit,
460 min(new_area_start, memblock.current_limit),
466 pr_err("memblock: Failed to double %s array from %ld to %ld entries !\n",
472 memblock_dbg("memblock: %s is doubled to %ld at [%pa-%pa]",
494 * Reserve the new array if that comes from the memblock. Otherwise, we
508 * @type: memblock type to scan
543 * memblock_insert_region - insert new memblock region
544 * @type: memblock type to insert into
551 * Insert new memblock region [@base, @base + @size) into @type at @idx.
573 * memblock_add_range - add new memblock region
574 * @type: memblock type to add new region into
580 * Add new memblock region [@base, @base + @size) into @type. The new region
694 * memblock_add_node - add new memblock region within a NUMA node
700 * Add new memblock region [@base, @base + @size) to the "memory"
714 return memblock_add_range(&memblock.memory, base, size, nid, flags);
718 * memblock_add - add new memblock region
722 * Add new memblock region [@base, @base + @size) to the "memory"
735 return memblock_add_range(&memblock.memory, base, size, MAX_NUMNODES, 0);
740 * @type: memblock type to isolate range for
836 return memblock_remove_range(&memblock.memory, base, size);
869 return memblock_remove_range(&memblock.reserved, base, size);
879 return memblock_add_range(&memblock.reserved, base, size, MAX_NUMNODES, 0);
908 struct memblock_type *type = &memblock.memory;
980 * memblock, the caller must inform kmemleak to ignore that memory
1007 /* we never skip regions when iterating memblock.reserved or physmem */
1244 struct memblock_type *type = &memblock.memory;
1271 * memblock_set_node - set node ID on memblock regions
1274 * @type: memblock type to set node ID for
1277 * Set the nid of memblock @type regions in [@base, @base + @size) to @nid.
1326 &memblock.memory, &memblock.reserved,
1353 &memblock.memory, &memblock.reserved,
1376 * memblock.current_limit if @end == %MEMBLOCK_ALLOC_ACCESSIBLE.
1529 * this moment memblock may be deinitialized already and its
1535 if (max_addr > memblock.current_limit)
1536 max_addr = memblock.current_limit;
1561 * allocate only from memory limited by memblock.current_limit value
1592 * allocate only from memory limited by memblock.current_limit value
1623 * allocate only from memory limited by memblock.current_limit value
1655 * This is only useful when the memblock allocator has already been torn
1682 return memblock.memory.total_size;
1687 return memblock.reserved.total_size;
1693 return memblock.memory.regions[0].base;
1698 int idx = memblock.memory.cnt - 1;
1700 return (memblock.memory.regions[idx].base + memblock.memory.regions[idx].size);
1710 * the memory memblock regions, if the @limit exceeds the total size
1738 memblock_remove_range(&memblock.memory, max_addr,
1740 memblock_remove_range(&memblock.reserved, max_addr,
1757 ret = memblock_isolate_range(&memblock.memory, base, size,
1763 for (i = memblock.memory.cnt - 1; i >= end_rgn; i--)
1764 if (!memblock_is_nomap(&memblock.memory.regions[i]))
1765 memblock_remove_region(&memblock.memory, i);
1768 if (!memblock_is_nomap(&memblock.memory.regions[i]))
1769 memblock_remove_region(&memblock.memory, i);
1772 memblock_remove_range(&memblock.reserved, 0, base);
1773 memblock_remove_range(&memblock.reserved,
1813 return memblock_search(&memblock.reserved, addr) != -1;
1818 return memblock_search(&memblock.memory, addr) != -1;
1823 int i = memblock_search(&memblock.memory, addr);
1827 return !memblock_is_nomap(&memblock.memory.regions[i]);
1833 struct memblock_type *type = &memblock.memory;
1857 int idx = memblock_search(&memblock.memory, base);
1862 return (memblock.memory.regions[idx].base +
1863 memblock.memory.regions[idx].size) >= end;
1879 return memblock_overlaps_region(&memblock.reserved, base, size);
1900 memblock_remove_region(&memblock.memory,
1901 r - memblock.memory.regions);
1909 memblock.current_limit = limit;
1914 return memblock.current_limit;
1947 &memblock.memory.total_size,
1948 &memblock.reserved.total_size);
1950 memblock_dump(&memblock.memory);
1951 memblock_dump(&memblock.reserved);
1974 early_param("memblock", early_memblock);
2114 memblock_set_node(start, end, &memblock.reserved, nid);
2235 struct dentry *root = debugfs_create_dir("memblock", NULL);
2238 &memblock.memory, &memblock_debug_fops);
2240 &memblock.reserved, &memblock_debug_fops);