/linux/arch/powerpc/mm/ |
H A D | init_64.c | 187 bool altmap_cross_boundary(struct vmem_altmap *altmap, unsigned long start, in altmap_cross_boundary() argument 193 if ((start_pfn + nr_pfn - 1) > altmap->end_pfn) in altmap_cross_boundary() 196 if (start_pfn < altmap->base_pfn) in altmap_cross_boundary() 203 struct vmem_altmap *altmap) in __vmemmap_populate() argument 231 if (altmap && !altmap_cross_boundary(altmap, start, page_size)) { in __vmemmap_populate() 232 p = vmemmap_alloc_block_buf(page_size, node, altmap); in __vmemmap_populate() 256 vmem_altmap_free(altmap, nr_pfns); in __vmemmap_populate() 277 struct vmem_altmap *altmap) in vmemmap_populate() argument 282 return radix__vmemmap_populate(start, end, node, altmap); in vmemmap_populate() 285 return __vmemmap_populate(start, end, node, altmap); in vmemmap_populate() [all …]
|
/linux/arch/s390/mm/ |
H A D | vmem.c | 39 static void vmem_free_pages(unsigned long addr, int order, struct vmem_altmap *altmap) in vmem_free_pages() argument 41 if (altmap) { in vmem_free_pages() 42 vmem_altmap_free(altmap, 1 << order); in vmem_free_pages() 167 struct vmem_altmap *altmap) in modify_pte_table() argument 180 vmem_free_pages((unsigned long)pfn_to_virt(pte_pfn(*pte)), get_order(PAGE_SIZE), altmap); in modify_pte_table() 184 void *new_page = vmemmap_alloc_block_buf(PAGE_SIZE, NUMA_NO_NODE, altmap); in modify_pte_table() 222 struct vmem_altmap *altmap) in modify_pmd_table() argument 240 vmem_free_pages(pmd_deref(*pmd), get_order(PMD_SIZE), altmap); in modify_pmd_table() 244 vmem_free_pages(pmd_deref(*pmd), get_order(PMD_SIZE), altmap); in modify_pmd_table() 267 new_page = vmemmap_alloc_block_buf(PMD_SIZE, NUMA_NO_NODE, altmap); in modify_pmd_table() [all …]
|
/linux/arch/loongarch/mm/ |
H A D | init.c | 109 void arch_remove_memory(u64 start, u64 size, struct vmem_altmap *altmap) in arch_remove_memory() argument 115 /* With altmap the first mapped page is offset from @start */ in arch_remove_memory() 116 if (altmap) in arch_remove_memory() 117 page += vmem_altmap_offset(altmap); in arch_remove_memory() 118 __remove_pages(start_pfn, nr_pages, altmap); in arch_remove_memory() 153 int node, struct vmem_altmap *altmap) in vmemmap_populate() argument 163 void vmemmap_free(unsigned long start, unsigned long end, struct vmem_altmap *altmap) in vmemmap_free() argument
|
/linux/include/linux/ |
H A D | memory_hotplug.h | 67 * because the altmap cannot be written (e.g., poisoned) when adding 70 * This allows for adding memory with an altmap that is not currently 80 * altmap: alternative allocator for memmap array (optional) 85 struct vmem_altmap *altmap; member 154 extern void arch_remove_memory(u64 start, u64 size, struct vmem_altmap *altmap); in movable_node_is_enabled() 156 struct vmem_altmap *altmap); 317 struct vmem_altmap *altmap, int migratetype); 322 unsigned long nr_pages, struct vmem_altmap *altmap, 325 struct vmem_altmap *altmap);
|
H A D | memory.h | 80 struct vmem_altmap *altmap; member 156 struct vmem_altmap *altmap,
|
H A D | memremap.h | 128 struct vmem_altmap altmap; member 151 return &pgmap->altmap; in pgmap_altmap()
|
H A D | mm.h | 3832 unsigned long nr_pages, int nid, struct vmem_altmap *altmap, 3839 struct vmem_altmap *altmap, struct page *reuse); 3843 struct vmem_altmap *altmap); 3850 int node, struct vmem_altmap *altmap); 3852 int node, struct vmem_altmap *altmap); 3854 struct vmem_altmap *altmap); 3858 struct vmem_altmap *altmap); 3862 static inline unsigned long vmem_altmap_offset(struct vmem_altmap *altmap) in vmem_altmap_offset() argument 3865 if (altmap) in vmem_altmap_offset() 3866 return altmap->reserve + altmap->free; in vmem_altmap_offset() [all …]
|
/linux/mm/ |
H A D | memory_hotplug.c | 394 struct vmem_altmap *altmap = params->altmap; in __add_pages() local 401 if (altmap) { in __add_pages() 405 if (altmap->base_pfn != pfn in __add_pages() 406 || vmem_altmap_offset(altmap) > nr_pages) { in __add_pages() 410 altmap->alloc = 0; in __add_pages() 422 err = sparse_add_section(nid, pfn, cur_nr_pages, altmap, in __add_pages() 593 struct vmem_altmap *altmap) in __remove_pages() argument 608 sparse_remove_section(pfn, cur_nr_pages, altmap); in __remove_pages() 773 struct vmem_altmap *altmap, int migratetype) in move_pfn_range_to_zone() argument 805 MEMINIT_HOTPLUG, altmap, migratetype); in move_pfn_range_to_zone() [all …]
|
H A D | memremap.c | 153 WARN_ONCE(pgmap->altmap.alloc, "failed to free all reserved pages\n"); in memunmap_pages() 179 "altmap not supported for multiple ranges\n")) in pagemap_range() 256 PHYS_PFN(range_len(range)), params->altmap, in pagemap_range() 295 .altmap = pgmap_altmap(pgmap), in memremap_pages() 392 * 2/ The altmap field may optionally be initialized, in which case
|
/linux/drivers/base/ |
H A D | memory.c | 108 /* Verify that the altmap is freed */ in memory_block_release() 109 WARN_ON(mem->altmap); in memory_block_release() 208 if (mem->altmap) in memory_block_online() 209 nr_vmemmap_pages = mem->altmap->free; in memory_block_online() 223 zone, mem->altmap->inaccessible); in memory_block_online() 272 if (mem->altmap) in memory_block_offline() 273 nr_vmemmap_pages = mem->altmap->free; in memory_block_offline() 779 struct vmem_altmap *altmap, in add_memory_block() argument 797 mem->altmap = altmap; in add_memory_block() 840 add_hotplug_memory_block(unsigned long block_id,struct vmem_altmap * altmap,struct memory_group * group) add_hotplug_memory_block() argument 871 create_memory_block_devices(unsigned long start,unsigned long size,struct vmem_altmap * altmap,struct memory_group * group) create_memory_block_devices() argument [all...] |
/linux/arch/riscv/mm/ |
H A D | init.c | 1454 struct vmem_altmap *altmap) in vmemmap_populate() argument 1462 return vmemmap_populate_hugepages(start, end, node, altmap); in vmemmap_populate() 1630 struct vmem_altmap *altmap) in free_vmemmap_storage() argument 1634 if (altmap) { in free_vmemmap_storage() 1635 vmem_altmap_free(altmap, size >> PAGE_SHIFT); in free_vmemmap_storage() 1651 bool is_vmemmap, struct vmem_altmap *altmap) in remove_pte_mapping() argument 1668 free_vmemmap_storage(pte_page(pte), PAGE_SIZE, altmap); in remove_pte_mapping() 1673 bool is_vmemmap, struct vmem_altmap *altmap) in remove_pmd_mapping() argument 1689 free_vmemmap_storage(pmd_page(pmd), PMD_SIZE, altmap); in remove_pmd_mapping() 1694 remove_pte_mapping(pte_base, addr, next, is_vmemmap, altmap); in remove_pmd_mapping() [all …]
|
/linux/arch/powerpc/include/asm/book3s/64/ |
H A D | radix.h | 334 int node, struct vmem_altmap *altmap); 336 struct vmem_altmap *altmap); 367 bool vmemmap_can_optimize(struct vmem_altmap *altmap, struct dev_pagemap *pgmap);
|
/linux/arch/powerpc/include/asm/ |
H A D | pgtable.h | 193 bool altmap_cross_boundary(struct vmem_altmap *altmap, unsigned long start,
|
/linux/Documentation/ABI/testing/ |
H A D | sysfs-bus-dax | 145 the 'altmap' for the hotplugged memory will be placed on the
|
/linux/arch/sparc/mm/ |
H A D | init_64.c | 2589 int node, struct vmem_altmap *altmap) in vmemmap_populate() argument
|