[$] A quick history of early-boot memory allocators
One might think that memory allocation during system startup should not bedifficult: almost all of memory is free, there is no concurrency,and there are no background tasks that will compete for memory. Even so,boot-time memory management is a tricky task. Physical memory is notnecessarily contiguous, its extents change from system to system, andthe detection of those extents may be not trivial. With NUMA thingsare even more complex because, in order to satisfy allocationlocality, the exact memory topology must be determined.To cope with this, sophisticated mechanisms for memory management arerequired even during the earliest stages of the boot process.<p>Read on for a history of the evolution of the kernel's early-boot memoryallocator, contributed by Mike Rapoport.