Initialization Steps

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

-> free_area_init_nodes

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.

Continue reading here: These are not the same regions as in the NUMA concept but are areas occupied by system ROM for example or by ACPI functions

Was this article helpful?

0 0