mbox series

[00/15] mm: move core MM initialization to mm/mm_init.c

Message ID 20230319220008.2138576-1-rppt@kernel.org (mailing list archive)
Headers show
Series mm: move core MM initialization to mm/mm_init.c | expand

Message

Mike Rapoport March 19, 2023, 9:59 p.m. UTC
From: "Mike Rapoport (IBM)" <rppt@kernel.org>

Also in git:
https://git.kernel.org/rppt/h/mm-init/v1

This set moves most of the core MM initialization to mm/mm_init.c.

This largely includes free_area_init() and its helpers, functions used at
boot time, mm_init() from init/main.c and some of the functions it calls.

Aside from gaining some more space before mm/page_alloc.c hits 10k lines,
this makes mm/page_alloc.c to be mostly about buddy allocator and moves the
init code out of the way, which IMO improves maintainability.

Besides, this allows to move a couple of declarations out of include/linux
and make them private to mm/.

And as an added bonus there a slight decrease in vmlinux size.
For tinyconfig and defconfig on x86 I've got

tinyconfig:
   text	   data	    bss	    dec	    hex	filename
 853206	 289376	1200128	2342710	 23bf36	a/vmlinux
 853198	 289344	1200128	2342670	 23bf0e	b/vmlinux

defconfig:
    text   	   data	    bss	    dec	    	    hex	filename
26152959	9730634	2170884	38054477	244aa4d	a/vmlinux
26152945	9730602	2170884	38054431	244aa1f	b/vmlinux

Mike Rapoport (IBM) (15):
  mips: fix comment about pgtable_init()
  mm/cma: move init_cma_reserved_pages() to cma.c and make it static
  mm/page_alloc: add helper for checking if check_pages_enabled
  mm: move most of core MM initialization to mm/mm_init.c
  mm: handle hashdist initialization in mm/mm_init.c
  mm/page_alloc: rename page_alloc_init() to page_alloc_init_cpuhp()
  init: fold build_all_zonelists() and page_alloc_init_cpuhp() to mm_init()
  init,mm: move mm_init() to mm/mm_init.c and rename it to mm_core_init()
  mm: move pgtable_init() to mm/mm_init.c and make it static
  mm: move init_mem_debugging_and_hardening() to mm/mm_init.c
  init,mm: fold late call to page_ext_init() to page_alloc_init_late()
  mm: move mem_init_print_info() to mm_init.c
  mm: move kmem_cache_init() declaration to mm/slab.h
  mm: move vmalloc_init() declaration to mm/internal.h
  MAINTAINERS: extend memblock entry to include MM initialization

 MAINTAINERS                    |    3 +-
 arch/mips/include/asm/fixmap.h |    2 +-
 include/linux/gfp.h            |    7 +-
 include/linux/mm.h             |    9 +-
 include/linux/page_ext.h       |    2 -
 include/linux/slab.h           |    1 -
 include/linux/vmalloc.h        |    4 -
 init/main.c                    |   74 +-
 mm/cma.c                       |   21 +
 mm/internal.h                  |   45 +
 mm/mm_init.c                   | 2532 +++++++++++++++++++++++++++
 mm/page_alloc.c                | 2981 +++-----------------------------
 mm/slab.h                      |    1 +
 13 files changed, 2855 insertions(+), 2827 deletions(-)

base-commit: 4018ab1f7cec061b8425737328edefebdc0ab832

Comments

David Hildenbrand March 20, 2023, 10:32 a.m. UTC | #1
On 19.03.23 22:59, Mike Rapoport wrote:
> From: "Mike Rapoport (IBM)" <rppt@kernel.org>
> 
> The bulk of memory management initialization code is spread all over
> mm/page_alloc.c and makes navigating through page allocator
> functionality difficult.
> 
> Move most of the functions marked __init and __meminit to mm/mm_init.c
> to make it better localized and allow some more spare room before
> mm/page_alloc.c reaches 10k lines.
> 
> No functional changes.
> 
> Signed-off-by: Mike Rapoport (IBM) <rppt@kernel.org>
> ---

Acked-by: David Hildenbrand <david@redhat.com>