42 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
			
		
		
	
	
			42 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
| ===========================
 | |
| 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.
 | |
| 
 | |
| 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.
 | |
| 
 | |
| Memblock also offers a variety of APIs that control its own behaviour.
 | |
| 
 | |
| Memblock Overview
 | |
| =================
 | |
| 
 | |
| .. kernel-doc:: mm/memblock.c
 | |
|    :doc: memblock overview
 | |
| 
 | |
| 
 | |
| Functions and structures
 | |
| ========================
 | |
| 
 | |
| 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
 | |
| descriptions for the internal functions can help to understand what
 | |
| really happens under the hood.
 | |
| 
 | |
| .. kernel-doc:: include/linux/memblock.h
 | |
| .. kernel-doc:: mm/memblock.c
 | |
|    :functions:
 |