0001 ===========================
0002 Boot time memory management
0003 ===========================
0004
0005 Early system initialization cannot use "normal" memory management
0006 simply because it is not set up yet. But there is still need to
0007 allocate memory for various data structures, for instance for the
0008 physical page allocator.
0009
0010 A specialized allocator called ``memblock`` performs the
0011 boot time memory management. The architecture specific initialization
0012 must set it up in :c:func:`setup_arch` and tear it down in
0013 :c:func:`mem_init` functions.
0014
0015 Once the early memory management is available it offers a variety of
0016 functions and macros for memory allocations. The allocation request
0017 may be directed to the first (and probably the only) node or to a
0018 particular node in a NUMA system. There are API variants that panic
0019 when an allocation fails and those that don't.
0020
0021 Memblock also offers a variety of APIs that control its own behaviour.
0022
0023 Memblock Overview
0024 =================
0025
0026 .. kernel-doc:: mm/memblock.c
0027 :doc: memblock overview
0028
0029
0030 Functions and structures
0031 ========================
0032
0033 Here is the description of memblock data structures, functions and
0034 macros. Some of them are actually internal, but since they are
0035 documented it would be silly to omit them. Besides, reading the
0036 descriptions for the internal functions can help to understand what
0037 really happens under the hood.
0038
0039 .. kernel-doc:: include/linux/memblock.h
0040 .. kernel-doc:: mm/memblock.c
0041 :functions: