The patch titled Subject: mm: page_alloc: move set_zone_contiguous() into mm_init.c has been added to the -mm mm-unstable branch. Its filename is mm-page_alloc-move-set_zone_contiguous-into-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-page_alloc-move-set_zone_contiguous-into-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: Kefeng Wang <wangkefeng.wang@xxxxxxxxxx> Subject: mm: page_alloc: move set_zone_contiguous() into mm_init.c Date: Tue, 16 May 2023 14:38:11 +0800 set_zone_contiguous() is only used in mm init/hotplug, and clear_zone_contiguous() only used in hotplug, move them from page_alloc.c to the more appropriate file. Link: https://lkml.kernel.org/r/20230516063821.121844-4-wangkefeng.wang@xxxxxxxxxx Signed-off-by: Kefeng Wang <wangkefeng.wang@xxxxxxxxxx> Cc: David Hildenbrand <david@xxxxxxxxxx> Cc: "Huang, Ying" <ying.huang@xxxxxxxxx> Cc: Iurii Zaikin <yzaikin@xxxxxxxxxx> Cc: Kees Cook <keescook@xxxxxxxxxxxx> Cc: Len Brown <len.brown@xxxxxxxxx> Cc: Luis Chamberlain <mcgrof@xxxxxxxxxx> Cc: Mike Rapoport (IBM) <rppt@xxxxxxxxxx> Cc: Oscar Salvador <osalvador@xxxxxxx> Cc: Pavel Machek <pavel@xxxxxx> Cc: Rafael J. Wysocki <rafael@xxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- include/linux/memory_hotplug.h | 3 --- mm/internal.h | 7 +++++++ mm/mm_init.c | 22 ++++++++++++++++++++++ mm/page_alloc.c | 27 --------------------------- 4 files changed, 29 insertions(+), 30 deletions(-) --- a/include/linux/memory_hotplug.h~mm-page_alloc-move-set_zone_contiguous-into-mm_initc +++ a/include/linux/memory_hotplug.h @@ -326,9 +326,6 @@ static inline int remove_memory(u64 star static inline void __remove_memory(u64 start, u64 size) {} #endif /* CONFIG_MEMORY_HOTREMOVE */ -extern void set_zone_contiguous(struct zone *zone); -extern void clear_zone_contiguous(struct zone *zone); - #ifdef CONFIG_MEMORY_HOTPLUG extern void __ref free_area_init_core_hotplug(struct pglist_data *pgdat); extern int __add_memory(int nid, u64 start, u64 size, mhp_t mhp_flags); --- a/mm/internal.h~mm-page_alloc-move-set_zone_contiguous-into-mm_initc +++ a/mm/internal.h @@ -371,6 +371,13 @@ static inline struct page *pageblock_pfn return __pageblock_pfn_to_page(start_pfn, end_pfn, zone); } +void set_zone_contiguous(struct zone *zone); + +static inline void clear_zone_contiguous(struct zone *zone) +{ + zone->contiguous = false; +} + extern int __isolate_free_page(struct page *page, unsigned int order); extern void __putback_isolated_page(struct page *page, unsigned int order, int mt); --- a/mm/mm_init.c~mm-page_alloc-move-set_zone_contiguous-into-mm_initc +++ a/mm/mm_init.c @@ -2330,6 +2330,28 @@ void __init init_cma_reserved_pageblock( } #endif +void set_zone_contiguous(struct zone *zone) +{ + unsigned long block_start_pfn = zone->zone_start_pfn; + unsigned long block_end_pfn; + + block_end_pfn = pageblock_end_pfn(block_start_pfn); + for (; block_start_pfn < zone_end_pfn(zone); + block_start_pfn = block_end_pfn, + block_end_pfn += pageblock_nr_pages) { + + block_end_pfn = min(block_end_pfn, zone_end_pfn(zone)); + + if (!__pageblock_pfn_to_page(block_start_pfn, + block_end_pfn, zone)) + return; + cond_resched(); + } + + /* We confirm that there is no hole */ + zone->contiguous = true; +} + void __init page_alloc_init_late(void) { struct zone *zone; --- a/mm/page_alloc.c~mm-page_alloc-move-set_zone_contiguous-into-mm_initc +++ a/mm/page_alloc.c @@ -1532,33 +1532,6 @@ struct page *__pageblock_pfn_to_page(uns return start_page; } -void set_zone_contiguous(struct zone *zone) -{ - unsigned long block_start_pfn = zone->zone_start_pfn; - unsigned long block_end_pfn; - - block_end_pfn = pageblock_end_pfn(block_start_pfn); - for (; block_start_pfn < zone_end_pfn(zone); - block_start_pfn = block_end_pfn, - block_end_pfn += pageblock_nr_pages) { - - block_end_pfn = min(block_end_pfn, zone_end_pfn(zone)); - - if (!__pageblock_pfn_to_page(block_start_pfn, - block_end_pfn, zone)) - return; - cond_resched(); - } - - /* We confirm that there is no hole */ - zone->contiguous = true; -} - -void clear_zone_contiguous(struct zone *zone) -{ - zone->contiguous = false; -} - /* * The order of subdivision here is critical for the IO subsystem. * Please do not alter this order without good reasons and regression _ Patches currently in -mm which might be from wangkefeng.wang@xxxxxxxxxx are mm-memory_failure-move-memory_failure_attr_group-under-memory_failure.patch mm-memory-failure-move-sysctl-register-in-memory_failure_init.patch mm-page_alloc-move-mirrored_kernelcore-into-mm_initc.patch mm-page_alloc-move-init_on_alloc-free-into-mm_initc.patch mm-page_alloc-move-set_zone_contiguous-into-mm_initc.patch mm-page_alloc-collect-mem-statistic-into-show_memc.patch mm-page_alloc-squash-page_is_consistent.patch mm-page_alloc-remove-alloc_contig_dump_pages-stub.patch mm-page_alloc-split-out-fail_page_alloc.patch mm-page_alloc-split-out-debug_pagealloc.patch mm-page_alloc-move-mark_free_page-into-snapshotc.patch mm-page_alloc-move-pm_-function-into-power.patch mm-vmscan-use-gfp_has_io_fs.patch mm-page_alloc-move-sysctls-into-it-own-fils.patch mm-page_alloc-move-is_check_pages_enabled-into-page_allocc.patch