Intel 64 and IA-32 Architectures Software Developers Manual Volume 3B, System Programming Guide Part 2

Table Of Contents
Vol. 3 C-1
APPENDIX C
MP INITIALIZATION FOR P6 FAMILY PROCESSORS
This appendix describes the MP initialization process for systems that use multiple P6
family processors. This process uses the MP initialization protocol that was intro-
duced with the Pentium Pro processor (see Section 7.5, “Multiple-Processor (MP)
Initialization”). For P6 family processors, this protocol is typically used to boot 2 or 4
processors that reside on single system bus; however, it can support from 2 to 15
processors in a multi-clustered system when the APIC busses are tied together.
Larger systems are not supported.
C.1 OVERVIEW OF THE MP INITIALIZATION PROCESS
FOR P6 FAMILY PROCESSORS
During the execution of the MP initialization protocol, one processor is selected as the
bootstrap processor (BSP) and the remaining processors are designated as applica-
tion processors (APs), see Section 7.5.1, “BSP and AP Processors.” Thereafter, the
BSP manages the initialization of itself and the APs. This initialization includes
executing BIOS initialization code and operating-system initialization code.
The MP protocol imposes the following requirements and restrictions on the system:
An APIC clock (APICLK) must be provided.
The MP protocol will be executed only after a power-up or RESET. If the MP
protocol has been completed and a BSP has been chosen, subsequent INITs
(either to a specific processor or system wide) do not cause the MP protocol to be
repeated. Instead, each processor examines its BSP flag (in the APIC_BASE MSR)
to determine whether it should execute the BIOS boot-strap code (if it is the BSP)
or enter a wait-for-SIPI state (if it is an AP).
All devices in the system that are capable of delivering interrupts to the
processors must be inhibited from doing so for the duration of the MP initial-
ization protocol. The time during which interrupts must be inhibited includes the
window between when the BSP issues an INIT-SIPI-SIPI sequence to an AP and
when the AP responds to the last SIPI in the sequence.
The following special-purpose interprocessor interrupts (IPIs) are used during the
boot phase of the MP initialization protocol. These IPIs are broadcast on the APIC
bus.
Boot IPI (BIPI)—Initiates the arbitration mechanism that selects a BSP from the
group of processors on the system bus and designates the remainder of the
processors as APs. Each processor on the system bus broadcasts a BIPI to all the
processors following a power-up or RESET.