Which system-specific steps must the kernel perform once it has been loaded into memory and the assembler parts of initialization have been completed? Figure 3-12 shows a code flow diagram of the individual actions.
setup_arch machine_specific_memory_setup parse_early_param setup_memory
^ * pagetable_init zone_sizes_init add_active_range
Figure 3-12: Code flow diagram for memory initialization on IA-32 systems.
The figure includes only those function calls associated with memory management. All others are unimportant in this context and are therefore omitted. Recall that setup_arch is invoked from within start_kernel, as already noted in Section 3.4.1.
machine_specific_memory_setup is first invoked to create a list with the memory regions occupied by the system and the free memory regions. Because the way in which this information is obtained differs slightly between the "subarchitectures" of the IA-32 family,11 the kernel provides a machine-specific function that is defined in include/asm-x86/mach-type/setup.c. type can then stand for default, voyager, or visws; I discuss only the default situation.
A map provided by the BIOS and showing the individual memory regions is used in this case.
Was this article helpful?