Expand description
Multiprocessor Boot Support
The MP initialization protocol defines two classes of processors: the bootstrap processor (BSP) and the application processors (APs). Following a power-up or RESET of an MP system, system hardware dynamically selects one of the processors on the system bus as the BSP. The remaining processors are designated as APs.
The BSP executes the BIOS’s boot-strap code to configure the APIC environment, sets up system-wide data structures. Up to now, BSP has completed most of the initialization of the OS, but APs has not been awakened.
Following a power-up or reset, the APs complete a minimal self-configuration, then wait for a startup signal (a SIPI message) from the BSP processor.
The wake-up of AP follows SNIT-SIPI-SIPI IPI sequence:
- Broadcast INIT IPI (Initialize the APs to the wait-for-SIPI state)
- Wait
- Broadcast De-assert INIT IPI (Only older processors need this step)
- Wait
- Broadcast SIPI IPI (APs exits the wait-for-SIPI state and starts executing code)
- Wait
- Broadcast SIPI IPI (If an AP fails to start)
This sequence does not need to be strictly followed, and there may be different considerations in different systems.