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

Table Of Contents
Vol. 3 26-17
VIRTUAL-MACHINE MONITOR PROGRAMMING CONSIDERATIONS
the virtualized state. If the VM is moved during execution, writes to the index should
be redone so subsequent data reads/writes go to the right location.
26.8.4 External Data Structures
Certain fields in the VMCS point to external data structures (for example: the MSR
bitmap, the I/O bitmaps). If a logical processor is in VMX non-root operation, none of
the external structures referenced by that logical processor's current VMCS should be
modified by any logical processor or DMA. Before updating one of these structures,
the VMM must ensure that no logical processor whose current VMCS references the
structure is in VMX non-root operation.
If a VMM uses multiple VMCS with each VMCS using separate external structures,
and these structures must be kept synchronized, the VMM must apply the same care
to updating these structures.
26.8.5 CPUID Emulation
CPUID reports information that is used by OS and applications to detect hardware
features. It also provides multi-threading/multi-core configuration information. For
example, MP-aware OSs rely on data reported by CPUID to discover the topology of
logical processors in a platform (see Section 7.10, “Programming Considerations for
Hardware Multi-Threading Capable Processors,” in the Intel® 64 and IA-32 Architec-
tures Software Developer’s Manual, Volume 3A).
If a VMM is to support asymmetric allocation of logical processor resources to guest
OSs that are MP aware, then the VMM must emulate CPUID for its guests. The emula-
tion of CPUID by the VMM must ensure the guest’s view of CPUID leaves are consis-
tent with the logical processor allocation committed by the VMM to each guest OS.
26.9 32-BIT AND 64-BIT GUEST ENVIRONMENTS
For the most part, extensions provided by VMX to support virtualization are orthog-
onal to the extensions provided by Intel 64 architecture. There are considerations
that impact VMM designs. These are described in the following subsections.
26.9.1 Operating Modes of Guest Environments
For Intel 64 processors, VMX operation supports host and guest environments that
run in IA-32e mode or without IA-32e mode. VMX operation also supports host and
guest environments on IA-32 processors.
A VMM entering VMX operation while IA-32e mode is active is considered to be an
IA-32e mode host. A VMM entering VMX operation while IA-32e mode is not activated