The patch titled Subject: docs/boot-time-mm: remove bootmem documentation has been added to the -mm tree. Its filename is docs-boot-time-mm-remove-bootmem-documentation.patch This patch should soon appear at http://ozlabs.org/~akpm/mmots/broken-out/docs-boot-time-mm-remove-bootmem-documentation.patch and later at http://ozlabs.org/~akpm/mmotm/broken-out/docs-boot-time-mm-remove-bootmem-documentation.patch 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 and is updated there every 3-4 working days ------------------------------------------------------ From: Mike Rapoport <rppt@xxxxxxxxxxxxxxxxxx> Subject: docs/boot-time-mm: remove bootmem documentation Link: http://lkml.kernel.org/r/1536927045-23536-31-git-send-email-rppt@xxxxxxxxxxxxxxxxxx Signed-off-by: Mike Rapoport <rppt@xxxxxxxxxxxxxxxxxx> Cc: Catalin Marinas <catalin.marinas@xxxxxxx> Cc: Chris Zankel <chris@xxxxxxxxxx> Cc: "David S. Miller" <davem@xxxxxxxxxxxxx> Cc: Geert Uytterhoeven <geert@xxxxxxxxxxxxxx> Cc: Greentime Hu <green.hu@xxxxxxxxx> Cc: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> Cc: Guan Xuetao <gxt@xxxxxxxxxx> Cc: Ingo Molnar <mingo@xxxxxxxxxx> Cc: "James E.J. Bottomley" <jejb@xxxxxxxxxxxxxxxx> Cc: Jonas Bonn <jonas@xxxxxxxxxxxx> Cc: Jonathan Corbet <corbet@xxxxxxx> Cc: Ley Foon Tan <lftan@xxxxxxxxxx> Cc: Mark Salter <msalter@xxxxxxxxxx> Cc: Martin Schwidefsky <schwidefsky@xxxxxxxxxx> Cc: Matt Turner <mattst88@xxxxxxxxx> Cc: Michael Ellerman <mpe@xxxxxxxxxxxxxx> Cc: Michal Hocko <mhocko@xxxxxxxx> Cc: Michal Simek <monstr@xxxxxxxxx> Cc: Palmer Dabbelt <palmer@xxxxxxxxxx> Cc: Paul Burton <paul.burton@xxxxxxxx> Cc: Richard Kuo <rkuo@xxxxxxxxxxxxxx> Cc: Richard Weinberger <richard@xxxxxx> Cc: Rich Felker <dalias@xxxxxxxx> Cc: Russell King <linux@xxxxxxxxxxxxxxx> Cc: Serge Semin <fancer.lancer@xxxxxxxxx> Cc: Thomas Gleixner <tglx@xxxxxxxxxxxxx> Cc: Tony Luck <tony.luck@xxxxxxxxx> Cc: Vineet Gupta <vgupta@xxxxxxxxxxxx> Cc: Yoshinori Sato <ysato@xxxxxxxxxxxxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- Documentation/core-api/boot-time-mm.rst | 73 +++------------------- 1 file changed, 11 insertions(+), 62 deletions(-) --- a/Documentation/core-api/boot-time-mm.rst~docs-boot-time-mm-remove-bootmem-documentation +++ a/Documentation/core-api/boot-time-mm.rst @@ -5,54 +5,23 @@ Boot time memory management Early system initialization cannot use "normal" memory management simply because it is not set up yet. But there is still need to allocate memory for various data structures, for instance for the -physical page allocator. To address this, a specialized allocator -called the :ref:`Boot Memory Allocator <bootmem>`, or bootmem, was -introduced. Several years later PowerPC developers added a "Logical -Memory Blocks" allocator, which was later adopted by other -architectures and renamed to :ref:`memblock <memblock>`. There is also -a compatibility layer called `nobootmem` that translates bootmem -allocation interfaces to memblock calls. - -The selection of the early allocator is done using -``CONFIG_NO_BOOTMEM`` and ``CONFIG_HAVE_MEMBLOCK`` kernel -configuration options. These options are enabled or disabled -statically by the architectures' Kconfig files. - -* Architectures that rely only on bootmem select - ``CONFIG_NO_BOOTMEM=n && CONFIG_HAVE_MEMBLOCK=n``. -* The users of memblock with the nobootmem compatibility layer set - ``CONFIG_NO_BOOTMEM=y && CONFIG_HAVE_MEMBLOCK=y``. -* And for those that use both memblock and bootmem the configuration - includes ``CONFIG_NO_BOOTMEM=n && CONFIG_HAVE_MEMBLOCK=y``. - -Whichever allocator is used, it is the responsibility of the -architecture specific initialization to set it up in -:c:func:`setup_arch` and tear it down in :c:func:`mem_init` functions. +physical page allocator. + +A specialized allocator called ``memblock`` performs the +boot time memory management. The architecture specific initialization +must set it up in :c:func:`setup_arch` and tear it down in +:c:func:`mem_init` functions. Once the early memory management is available it offers a variety of functions and macros for memory allocations. The allocation request may be directed to the first (and probably the only) node or to a particular node in a NUMA system. There are API variants that panic -when an allocation fails and those that don't. And more recent and -advanced memblock even allows controlling its own behaviour. - -.. _bootmem: - -Bootmem -======= - -(mostly stolen from Mel Gorman's "Understanding the Linux Virtual -Memory Manager" `book`_) +when an allocation fails and those that don't. -.. _book: https://www.kernel.org/doc/gorman/ +Memblock also offers a variety of APIs that control its own behaviour. -.. kernel-doc:: mm/bootmem.c - :doc: bootmem overview - -.. _memblock: - -Memblock -======== +Memblock Overview +================= .. kernel-doc:: mm/memblock.c :doc: memblock overview @@ -61,26 +30,6 @@ Memblock Functions and structures ======================== -Common API ----------- - -The functions that are described in this section are available -regardless of what early memory manager is enabled. - -.. kernel-doc:: mm/nobootmem.c - -Bootmem specific API --------------------- - -These interfaces available only with bootmem, i.e when ``CONFIG_NO_BOOTMEM=n`` - -.. kernel-doc:: include/linux/bootmem.h -.. kernel-doc:: mm/bootmem.c - :nodocs: - -Memblock specific API ---------------------- - Here is the description of memblock data structures, functions and macros. Some of them are actually internal, but since they are documented it would be silly to omit them. Besides, reading the @@ -89,4 +38,4 @@ really happens under the hood. .. kernel-doc:: include/linux/memblock.h .. kernel-doc:: mm/memblock.c - :nodocs: + :functions: _ Patches currently in -mm which might be from rppt@xxxxxxxxxxxxxxxxxx are hexagon-switch-to-no_bootmem.patch of-ignore-sub-page-memory-regions.patch nios2-use-generic-early_init_dt_add_memory_arch.patch nios2-switch-to-no_bootmem.patch um-setup_physmem-stop-using-global-variables.patch um-switch-to-no_bootmem.patch unicore32-switch-to-no_bootmem.patch alpha-switch-to-no_bootmem.patch mips-switch-to-no_bootmem.patch mm-remove-config_no_bootmem.patch mm-remove-config_have_memblock.patch mm-remove-bootmem-allocator-implementation.patch mm-nobootmem-remove-dead-code.patch memblock-rename-memblock_alloc_nid_try_nid-to-memblock_phys_alloc.patch memblock-remove-_virt-from-apis-returning-virtual-address.patch memblock-replace-alloc_bootmem_align-with-memblock_alloc.patch memblock-replace-alloc_bootmem_low-with-memblock_alloc_low.patch memblock-replace-__alloc_bootmem_node_nopanic-with-memblock_alloc_try_nid_nopanic.patch memblock-replace-alloc_bootmem_pages_nopanic-with-memblock_alloc_nopanic.patch memblock-replace-__alloc_bootmem_nopanic-with-memblock_alloc_from_nopanic.patch memblock-add-align-parameter-to-memblock_alloc_node.patch memblock-replace-alloc_bootmem_pages_node-with-memblock_alloc_node.patch memblock-replace-__alloc_bootmem_node-with-appropriate-memblock_-api.patch memblock-replace-alloc_bootmem_node-with-memblock_alloc_node.patch memblock-replace-alloc_bootmem_low_pages-with-memblock_alloc_low.patch memblock-replace-alloc_bootmem_pages-with-memblock_alloc.patch memblock-replace-__alloc_bootmem-with-memblock_alloc_from.patch memblock-replace-alloc_bootmem-with-memblock_alloc.patch mm-nobootmem-remove-bootmem-allocation-apis.patch memblock-replace-free_bootmem_node-with-memblock_free.patch memblock-replace-free_bootmem_late-with-memblock_free_late.patch memblock-rename-free_all_bootmem-to-memblock_free_all.patch memblock-rename-__free_pages_bootmem-to-memblock_free_pages.patch mm-remove-nobootmem.patch memblock-replace-bootmem_alloc_-with-memblock-variants.patch mm-remove-include-linux-bootmemh.patch docs-boot-time-mm-remove-bootmem-documentation.patch