mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-16 04:21:09 -04:00
mm/sparse: remove !CONFIG_SPARSEMEM_VMEMMAP leftovers for CONFIG_MEMORY_HOTPLUG
CONFIG_MEMORY_HOTPLUG now depends on CONFIG_SPARSEMEM_VMEMMAP. So let's remove the !CONFIG_SPARSEMEM_VMEMMAP leftovers that are dead code. Adjust the comment above fill_subsection_map() accordingly. Link: https://lkml.kernel.org/r/20260320-sparsemem_cleanups-v2-6-096addc8800d@kernel.org Signed-off-by: David Hildenbrand (Arm) <david@kernel.org> Reviewed-by: Lorenzo Stoakes (Oracle) <ljs@kernel.org> Reviewed-by: Mike Rapoport (Microsoft) <rppt@kernel.org> Cc: Axel Rasmussen <axelrasmussen@google.com> Cc: Liam Howlett <liam.howlett@oracle.com> Cc: Michal Hocko <mhocko@suse.com> Cc: Oscar Salvador <osalvador@suse.de> Cc: Sidhartha Kumar <sidhartha.kumar@oracle.com> Cc: Suren Baghdasaryan <surenb@google.com> Cc: Vlastimil Babka <vbabka@kernel.org> Cc: Wei Xu <weixugc@google.com> Cc: Yuanchu Xie <yuanchu@google.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
committed by
Andrew Morton
parent
62257a5fb9
commit
119c31caa5
69
mm/sparse.c
69
mm/sparse.c
@@ -657,7 +657,6 @@ void offline_mem_sections(unsigned long start_pfn, unsigned long end_pfn)
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef CONFIG_SPARSEMEM_VMEMMAP
|
||||
static struct page * __meminit populate_section_memmap(unsigned long pfn,
|
||||
unsigned long nr_pages, int nid, struct vmem_altmap *altmap,
|
||||
struct dev_pagemap *pgmap)
|
||||
@@ -729,73 +728,11 @@ static int fill_subsection_map(unsigned long pfn, unsigned long nr_pages)
|
||||
|
||||
return rc;
|
||||
}
|
||||
#else
|
||||
static struct page * __meminit populate_section_memmap(unsigned long pfn,
|
||||
unsigned long nr_pages, int nid, struct vmem_altmap *altmap,
|
||||
struct dev_pagemap *pgmap)
|
||||
{
|
||||
return kvmalloc_node(array_size(sizeof(struct page),
|
||||
PAGES_PER_SECTION), GFP_KERNEL, nid);
|
||||
}
|
||||
|
||||
static void depopulate_section_memmap(unsigned long pfn, unsigned long nr_pages,
|
||||
struct vmem_altmap *altmap)
|
||||
{
|
||||
kvfree(pfn_to_page(pfn));
|
||||
}
|
||||
|
||||
static void free_map_bootmem(struct page *memmap)
|
||||
{
|
||||
unsigned long maps_section_nr, removing_section_nr, i;
|
||||
unsigned long type, nr_pages;
|
||||
struct page *page = virt_to_page(memmap);
|
||||
|
||||
nr_pages = PAGE_ALIGN(PAGES_PER_SECTION * sizeof(struct page))
|
||||
>> PAGE_SHIFT;
|
||||
|
||||
for (i = 0; i < nr_pages; i++, page++) {
|
||||
type = bootmem_type(page);
|
||||
|
||||
BUG_ON(type == NODE_INFO);
|
||||
|
||||
maps_section_nr = pfn_to_section_nr(page_to_pfn(page));
|
||||
removing_section_nr = bootmem_info(page);
|
||||
|
||||
/*
|
||||
* When this function is called, the removing section is
|
||||
* logical offlined state. This means all pages are isolated
|
||||
* from page allocator. If removing section's memmap is placed
|
||||
* on the same section, it must not be freed.
|
||||
* If it is freed, page allocator may allocate it which will
|
||||
* be removed physically soon.
|
||||
*/
|
||||
if (maps_section_nr != removing_section_nr)
|
||||
put_page_bootmem(page);
|
||||
}
|
||||
}
|
||||
|
||||
static int clear_subsection_map(unsigned long pfn, unsigned long nr_pages)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static bool is_subsection_map_empty(struct mem_section *ms)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
static int fill_subsection_map(unsigned long pfn, unsigned long nr_pages)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
#endif /* CONFIG_SPARSEMEM_VMEMMAP */
|
||||
|
||||
/*
|
||||
* To deactivate a memory region, there are 3 cases to handle across
|
||||
* two configurations (SPARSEMEM_VMEMMAP={y,n}):
|
||||
* To deactivate a memory region, there are 3 cases to handle:
|
||||
*
|
||||
* 1. deactivation of a partial hot-added section (only possible in
|
||||
* the SPARSEMEM_VMEMMAP=y case).
|
||||
* 1. deactivation of a partial hot-added section:
|
||||
* a) section was present at memory init.
|
||||
* b) section was hot-added post memory init.
|
||||
* 2. deactivation of a complete hot-added section.
|
||||
@@ -803,8 +740,6 @@ static int fill_subsection_map(unsigned long pfn, unsigned long nr_pages)
|
||||
*
|
||||
* For 1, when subsection_map does not empty we will not be freeing the
|
||||
* usage map, but still need to free the vmemmap range.
|
||||
*
|
||||
* For 2 and 3, the SPARSEMEM_VMEMMAP={y,n} cases are unified
|
||||
*/
|
||||
static void section_deactivate(unsigned long pfn, unsigned long nr_pages,
|
||||
struct vmem_altmap *altmap)
|
||||
|
||||
Reference in New Issue
Block a user