1=========================== 2Boot time memory management 3=========================== 4 5Early system initialization cannot use "normal" memory management 6simply because it is not set up yet. But there is still need to 7allocate memory for various data structures, for instance for the 8physical page allocator. 9 10A specialized allocator called ``memblock`` performs the 11boot time memory management. The architecture specific initialization 12must set it up in :c:func:`setup_arch` and tear it down in 13:c:func:`mem_init` functions. 14 15Once the early memory management is available it offers a variety of 16functions and macros for memory allocations. The allocation request 17may be directed to the first (and probably the only) node or to a 18particular node in a NUMA system. There are API variants that panic 19when an allocation fails and those that don't. 20 21Memblock also offers a variety of APIs that control its own behaviour. 22 23Memblock Overview 24================= 25 26.. kernel-doc:: mm/memblock.c 27 :doc: memblock overview 28 29 30Functions and structures 31======================== 32 33Here is the description of memblock data structures, functions and 34macros. Some of them are actually internal, but since they are 35documented it would be silly to omit them. Besides, reading the 36descriptions for the internal functions can help to understand what 37really happens under the hood. 38 39.. kernel-doc:: include/linux/memblock.h 40.. kernel-doc:: mm/memblock.c 41 :functions: 42