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

Table Of Contents
Vol. 3 23-35
VM EXITS
The type field and S bit are set as follows:
CS. Type set to 11 and S set to 1 (execute/read, accessed, non-conforming
code segment).
SS, DS, ES, FS, and GS. Undefined if the segment is unusable; otherwise,
type set to 3 and S set to 1 (read/write, accessed, expand-up data segment).
TR. Type set to 11 and S set to 0 (busy 32-bit task-state segment).
The DPL is set as follows:
CS, SS, and TR. Set to 0. The current privilege level (CPL) will be 0 after the
VM exit completes.
DS, ES, FS, and GS. Undefined if the segment is unusable; otherwise, set to
0.
The P bit is set as follows:
CS, TR. Set to 1.
SS, DS, ES, FS, and GS. Undefined if the segment is unusable; otherwise, set
to 1.
On processors that support Intel 64 architecture, CS.L is loaded with the setting
of the “host address-space size” VM-exit control. Because the value of this
control is also loaded into IA32_EFER.LMA (see Section 23.5.1), no VM exit is
ever to compatibility mode (which requires IA32_EFER.LMA = 1 and CS.L = 0).
D/B.
CS. Loaded with the inverse of the setting of the “host address-space size”
VM-exit control. For example, if that control is 0, indicating a 32-bit guest,
CS.D/B is set to 1.
SS, DS, ES, FS, and GS. Undefined if the segment is unusable; otherwise, set
to 1.
TR. Set to 0.
G.
CS. Set to 1.
SS, DS, ES, FS, and GS. Undefined if the segment is unusable; otherwise, set
to 1.
TR. Set to 0.
The host-state area does not contain a selector field for LDTR. LDTR is established as
follows on all VM exits: the selector is cleared to 0000H, the segment is marked
unusable and is otherwise undefined (although the base address is always canon-
ical).
The base addresses for GDTR and IDTR are loaded from the GDTR base-address field
and the IDTR base-address field, respectively. The GDTR and IDTR limits are each set
to FFFFH.