The patch titled Subject: mm: handle hashdist initialization in mm/mm_init.c has been added to the -mm mm-unstable branch. Its filename is mm-handle-hashdist-initialization-in-mm-mm_initc.patch This patch will shortly appear at https://git.kernel.org/pub/scm/linux/kernel/git/akpm/25-new.git/tree/patches/mm-handle-hashdist-initialization-in-mm-mm_initc.patch This patch will later appear in the mm-unstable branch at git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm Before you just go and hit "reply", please: a) Consider who else should be cc'ed b) Prefer to cc a suitable mailing list as well c) Ideally: find the original patch on the mailing list and do a reply-to-all to that, adding suitable additional cc's *** Remember to use Documentation/process/submit-checklist.rst when testing your code *** The -mm tree is included into linux-next via the mm-everything branch at git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm and is updated there every 2-3 working days ------------------------------------------------------ From: "Mike Rapoport (IBM)" <rppt@xxxxxxxxxx> Subject: mm: handle hashdist initialization in mm/mm_init.c Date: Sun, 19 Mar 2023 23:59:58 +0200 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/20230319220008.2138576-6-rppt@xxxxxxxxxx Signed-off-by: Mike Rapoport (IBM) <rppt@xxxxxxxxxx> Acked-by: David Hildenbrand <david@xxxxxxxxxx> Cc: Matthew Wilcox (Oracle) <willy@xxxxxxxxxxxxx> Cc: Mel Gorman <mgorman@xxxxxxx> Cc: Michal Hocko <mhocko@xxxxxxxxxx> Cc: Thomas Bogendoerfer <tsbogend@xxxxxxxxxxxxxxxx> Cc: Vlastimil Babka <vbabka@xxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- --- a/mm/mm_init.c~mm-handle-hashdist-initialization-in-mm-mm_initc +++ a/mm/mm_init.c @@ -607,6 +607,25 @@ int __meminit early_pfn_to_nid(unsigned 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 } memmap_init(); + + /* disable hash distribution for systems with a single node */ + fixup_hashdist(); } /** --- a/mm/page_alloc.c~mm-handle-hashdist-initialization-in-mm-mm_initc +++ a/mm/page_alloc.c @@ -6390,28 +6390,10 @@ static int page_alloc_cpu_online(unsigne 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, _ Patches currently in -mm which might be from rppt@xxxxxxxxxx are mm-move-get_page_from_free_area-to-mm-page_allocc.patch mips-fix-comment-about-pgtable_init.patch mm-cma-move-init_cma_reserved_pages-to-cmac-and-make-it-static.patch mm-page_alloc-add-helper-for-checking-if-check_pages_enabled.patch mm-move-most-of-core-mm-initialization-to-mm-mm_initc.patch mm-handle-hashdist-initialization-in-mm-mm_initc.patch mm-page_alloc-rename-page_alloc_init-to-page_alloc_init_cpuhp.patch init-fold-build_all_zonelists-and-page_alloc_init_cpuhp-to-mm_init.patch initmm-move-mm_init-to-mm-mm_initc-and-rename-it-to-mm_core_init.patch mm-move-pgtable_init-to-mm-mm_initc-and-make-it-static.patch mm-move-init_mem_debugging_and_hardening-to-mm-mm_initc.patch initmm-fold-late-call-to-page_ext_init-to-page_alloc_init_late.patch mm-move-mem_init_print_info-to-mm_initc.patch mm-move-kmem_cache_init-declaration-to-mm-slabh.patch mm-move-vmalloc_init-declaration-to-mm-internalh.patch maintainers-extend-memblock-entry-to-include-mm-initialization.patch