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

Table Of Contents
Vol. 3 22-11
VM ENTRIES
If the “load IA32_EFER” VM-entry control is 1, bits reserved in the IA32_EFER
MSR must be 0 in the field for that register. In addition, the values of the LMA and
LME bits in the field must each be that of the “IA-32e mode guest” VM-exit
control.
22.3.1.2 Checks on Guest Segment Registers
This section specifies the checks on the fields for CS, SS, DS, ES, FS, GS, TR, and
LDTR. The following terms are used in defining these checks:
The guest will be virtual-8086 if the VM flag (bit 17) is 1 in the RFLAGS field in
the guest-state area.
The guest will be IA-32e mode if the “IA-32e mode guest” VM-entry control is 1.
(This is possible only on processors that support Intel 64 architecture.)
Any one of these registers is said to be usable if the unusable bit (bit 16) is 0 in
the access-rights field for that register.
The following are the checks on these fields:
Selector fields.
TR. The TI flag (bit 2) must be 0.
LDTR. If LDTR is usable, the TI flag (bit 2) must be 0.
SS. If the guest will not be virtual-8086, the RPL (bits 1:0) must equal the
RPL of the selector field for CS.
Base-address fields.
CS, SS, DS, ES, FS, GS. If the guest will be virtual-8086, the address must be
the selector field shifted left 4 bits (multiplied by 16).
The following checks are performed on processors that support Intel 64 archi-
tecture:
TR, FS, GS. The address must be canonical.
LDTR. If LDTR is usable, the address must be canonical.
CS. Bits 63:32 of the address must be zero.
SS, DS, ES. If the register is usable, bits 63:32 of the address must be
zero.
Limit fields for CS, SS, DS, ES, FS, GS. If the guest will be virtual-8086, the field
must be 0000FFFFH.
Access-rights fields.
CS, SS, DS, ES, FS, GS.
If the guest will be virtual-8086, the field must be 000000F3H. Note that
this implies the following: