background image

26-10 Vol. 3C

VM ENTRIES

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. This implies the following:
— Bits 3:0 (Type) must be 3, indicating an expand-up read/write accessed data segment.
— Bit 4 (S) must be 1.
— Bits 6:5 (DPL) must be 3.
— Bit 7 (P) must be 1.
— Bits 11:8 (reserved), bit 12 (software available), bit 13 (reserved/L), bit 14 (D/B), bit 15 (G),

bit 16 (unusable), and bits 31:17 (reserved) must all be 0.

If the guest will not be virtual-8086, the different sub-fields are considered separately:
— Bits 3:0 (Type).

CS. The values allowed depend on the setting of the “unrestricted guest” VM-execution
control:
— If the control is 0, the Type must be 9, 11, 13, or 15 (accessed code segment).
— If the control is 1, the Type must be either 3 (read/write accessed expand-up data

segment) or one of 9, 11, 13, and 15 (accessed code segment).

SS. If SS is usable, the Type must be 3 or 7 (read/write, accessed data segment).

DS, ES, FS, GS. The following checks apply if the register is usable:
— Bit 0 of the Type must be 1 (accessed).
— If bit 3 of the Type is 1 (code segment), then bit 1 of the Type must be 1 (readable).

— Bit 4 (S). If the register is CS or if the register is usable, S must be 1.
— Bits 6:5 (DPL).

CS.
— If the Type is 3 (read/write accessed expand-up data segment), the DPL must be 0. The

Type can be 3 only if the “unrestricted guest” VM-execution control is 1.

— If the Type is 9 or 11 (non-conforming code segment), the DPL must equal the DPL in the

access-rights field for SS.

— If the Type is 13 or 15 (conforming code segment), the DPL cannot be greater than the

DPL in the access-rights field for SS.

SS.
— If the “unrestricted guest” VM-execution control is 0, the DPL must equal the RPL from the

selector field.

— The DPL must be 0 either if the Type in the access-rights field for CS is 3 (read/write

accessed expand-up data segment) or if bit 0 in the CR0 field (corresponding to CR0.PE) is
0.

1

DS, ES, FS, GS. The DPL cannot be less than the RPL in the selector field if (1) the
“unrestricted guest” VM-execution control is 0; (2) the register is usable; and (3) the Type in
the access-rights field is in the range 0 – 11 (data segment or non-conforming code segment).

— Bit 7 (P). If the register is CS or if the register is usable, P must be 1.

1. The following apply if either the “unrestricted guest” VM-execution control or bit 31 of the primary processor-based VM-execution 

controls is 0:  (1) bit 0 in the CR0 field must be 1 if the capability MSR IA32_VMX_CR0_FIXED0 reports that CR0.PE must be 1 in 

VMX operation; and (2) the Type in the access-rights field for CS cannot be 3.