Intel 64 and IA-32 Architectures Software Developers Manual Volume 3A, System Programming Guide, Part 1
7-22 Vol. 3A
MULTIPLE-PROCESSOR MANAGEMENT
5. Executes the CPUID instruction with a value of 0H in the EAX register, then reads
the EBX, ECX, and EDX registers to determine if the AP is “GenuineIntel.”
6. Executes the CPUID instruction with a value of 1H in the EAX register, then saves
the values in the EAX, ECX, and EDX registers in a system configuration space in
RAM for use later.
7. Switches to protected mode and insures that the APIC address space is mapped
to the strong uncacheable (UC) memory type.
8. Determines the AP’s APIC ID from the local APIC ID register, and adds it to the MP
and ACPI tables and optionally to the system configuration space in RAM.
9. Initializes and configures the local APIC by setting bit 8 in the SVR register and
setting up the LVT3 (error LVT) for error handling (as described in steps 9 and 10
in Section 7.5.4.1, “Typical BSP Initialization Sequence”).
10. Configures the APs SMI execution environment. (Each AP and the BSP must have
a different SMBASE address.)
11. Increments the COUNT variable by 1.
12. Releases the semaphore.
13. Executes the CLI and HLT instructions.
14. Waits for an INIT IPI.
7.5.5 Identifying Logical Processors in an MP System
After the BIOS has completed the MP initialization protocol, each logical processor
can be uniquely identified by its local APIC ID. Software can access these APIC IDs in
either of the following ways:
• Read APIC ID for a local APIC — Code running on a logical processor can
execute a MOV instruction to read the processor’s local APIC ID register (see
Section 8.4.6, “Local APIC ID”). This is the ID to use for directing physical
destination mode interrupts to the processor.
• Read ACPI or MP table — As part of the MP initialization protocol, the BIOS
creates an ACPI table and an MP table. These tables are defined in the Multipro-
cessor Specification Version 1.4 and provide software with a list of the processors
in the system and their local APIC IDs. The format of the ACPI table is derived
from the ACPI specification, which is an industry standard power management
and platform configuration specification for MP systems.
• Read Initial APIC ID — An APIC ID is assigned to a logical processor during
power up and is called the initial APIC ID. This is the APIC ID reported by
CPUID.1:EBX[31:24] and may be different from the current value read from the
local APIC. Use the initial APIC ID to determine the topological relationship
between logical processors.
Bits in the initial APIC ID can be interpreted using several bit masks. Each bit
mask can be used to extract an identifier to represent a hierarchical level of the