mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 12:28:41 +08:00
mm: handle hashdist initialization in mm/mm_init.c
The hashdist variable must be initialized before the first call to alloc_large_system_hash() and free_area_init() looks like a better place for it than page_alloc_init(). Move hashdist handling to mm/mm_init.c Link: https://lkml.kernel.org/r/20230321170513.2401534-5-rppt@kernel.org Signed-off-by: Mike Rapoport (IBM) <rppt@kernel.org> Acked-by: David Hildenbrand <david@redhat.com> Reviewed-by: Vlastimil Babka <vbabka@suse.cz> Cc: Doug Berger <opendmb@gmail.com> Cc: Matthew Wilcox (Oracle) <willy@infradead.org> Cc: Mel Gorman <mgorman@suse.de> Cc: Michal Hocko <mhocko@kernel.org> Cc: Thomas Bogendoerfer <tsbogend@alpha.franken.de> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
parent
9420f89db2
commit
534ef4e191
22
mm/mm_init.c
22
mm/mm_init.c
@ -607,6 +607,25 @@ int __meminit early_pfn_to_nid(unsigned long pfn)
|
||||
|
||||
return nid;
|
||||
}
|
||||
|
||||
int hashdist = HASHDIST_DEFAULT;
|
||||
|
||||
static int __init set_hashdist(char *str)
|
||||
{
|
||||
if (!str)
|
||||
return 0;
|
||||
hashdist = simple_strtoul(str, &str, 0);
|
||||
return 1;
|
||||
}
|
||||
__setup("hashdist=", set_hashdist);
|
||||
|
||||
static inline void fixup_hashdist(void)
|
||||
{
|
||||
if (num_node_state(N_MEMORY) == 1)
|
||||
hashdist = 0;
|
||||
}
|
||||
#else
|
||||
static inline void fixup_hashdist(void) {}
|
||||
#endif /* CONFIG_NUMA */
|
||||
|
||||
#ifdef CONFIG_DEFERRED_STRUCT_PAGE_INIT
|
||||
@ -1855,6 +1874,9 @@ void __init free_area_init(unsigned long *max_zone_pfn)
|
||||
}
|
||||
|
||||
memmap_init();
|
||||
|
||||
/* disable hash distribution for systems with a single node */
|
||||
fixup_hashdist();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -6393,28 +6393,10 @@ static int page_alloc_cpu_online(unsigned int cpu)
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_NUMA
|
||||
int hashdist = HASHDIST_DEFAULT;
|
||||
|
||||
static int __init set_hashdist(char *str)
|
||||
{
|
||||
if (!str)
|
||||
return 0;
|
||||
hashdist = simple_strtoul(str, &str, 0);
|
||||
return 1;
|
||||
}
|
||||
__setup("hashdist=", set_hashdist);
|
||||
#endif
|
||||
|
||||
void __init page_alloc_init(void)
|
||||
{
|
||||
int ret;
|
||||
|
||||
#ifdef CONFIG_NUMA
|
||||
if (num_node_state(N_MEMORY) == 1)
|
||||
hashdist = 0;
|
||||
#endif
|
||||
|
||||
ret = cpuhp_setup_state_nocalls(CPUHP_PAGE_ALLOC,
|
||||
"mm/page_alloc:pcp",
|
||||
page_alloc_cpu_online,
|
||||
|
Loading…
Reference in New Issue
Block a user