class ApicIdDecoder
Defined at line 65 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/apic-id.h
ApicIdDecoder is a utility for extracting particular topological level
IDs from an (x2)APIC ID.
In full generality, an APIC ID might decompose as follows:
[intel/vol3]: Figure 8-5. Generalized Seven Level Interpretation of the APIC ID.
-----------------------------------------------------------------------------
| CLUSTER ID | PACKAGE ID | DIE ID | TILE ID | MODULE ID | CORE ID | SMT ID |
-----------------------------------------------------------------------------
where the full ID width is 32-bit (if x2APIC) or 8-bit.
This, however, is higher fidelity than we are able to make use of. Since
CLUSTER ID and PACKAGE_ID are not directly enumerable from CPUID, we elide
the two IDs into a single PACKAGE ID, defined as the rest of the ID above
DIE. Moreover, the system currently has no use for enumerating tiles and
modules directly (which is also a practice that AMD does not do): we elide
the TILE and MODULE IDs into DIE ID alone. Accordingly, ApicIdDecoder
partitions up the APIC address space as
------------------------------------------
| PACKAGE ID | DIE ID | CORE ID | SMT ID |
------------------------------------------
Public Methods
template <typename CpuidIoProvider, typename = std::enable_if_t<!std::is_same_v<CpuidIoProvider, ApicIdDecoder>>>
void ApicIdDecoder (CpuidIoProvider && io)
To avoid precedence over copy and move constructors.
Defined at line 70 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/apic-id.h
void ApicIdDecoder ()
Defined at line 142 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/apic-id.h
uint32_t smt_id (uint32_t apic_id)
Defined at line 144 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/apic-id.h
uint32_t core_id (uint32_t apic_id)
Defined at line 146 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/apic-id.h
uint32_t die_id (uint32_t apic_id)
Defined at line 150 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/apic-id.h
uint32_t package_id (uint32_t apic_id)
Defined at line 154 of file ../../zircon/kernel/lib/arch/include/lib/arch/x86/apic-id.h