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

Table Of Contents
Vol. 3 C-3
MP INITIALIZATION FOR P6 FAMILY PROCESSORS
IA32_APIC_BASE MSR. If the vector and APIC ID do not match, the processor
selects itself as an AP by entering the “wait for SIPI” state. (Note that in Figure 1,
the BIPI from processor 1 is the first BIPI to be handled, so processor 1 becomes
the BSP.)
5. The newly established BSP broadcasts an FIPI message to “all including self.” The
FIPI is guaranteed to be handled only after the completion of the BIPIs that were
issued by the non-BSP processors.
6. After the BSP has been established, the outstanding BIPIs are received one at a
time (at T2, T3, and T4) and ignored by all processors.
7. When the FIPI is finally received (at T5), only the BSP responds to it. It responds
by fetching and executing BIOS boot-strap code, beginning at the reset vector
(physical address FFFF FFF0H).
8. As part of the boot-strap code, the BSP creates an ACPI table and an MP table and
adds its initial APIC ID to these tables as appropriate.
9. At the end of the boot-strap procedure, the BSP broadcasts a SIPI message to all
the APs in the system. Here, the SIPI message contains a vector to the BIOS AP
initialization code (at 000V V000H, where VV is the vector contained in the SIPI
message).
10. All APs respond to the SIPI message by racing to a BIOS initialization semaphore.
The first one to the semaphore begins executing the initialization code. (See MP
init code for semaphore implementation details.) As part of the AP initialization
procedure, the AP adds its APIC ID number to the ACPI and MP tables as appro-
Figure C-1. MP System With Multiple Pentium III Processors
Pentium III
Processor 0
Pentium III
Processor 1
Pentium III
Processor 2
Pentium III
Processor 3
BIPI.1 BIPI.0 BIPI.3 BIPI.2 FIPI
T0 T1 T2 T3 T4 T5
System (CPU) Bus
APIC Bus
Serial Bus Activity
Processor 1
Becomes BSP