background image

24-6 Vol. 3C

VIRTUAL MACHINE CONTROL STRUCTURES

— 1: HLT. The logical processor is inactive because it executed the HLT instruction.
— 2: Shutdown. The logical processor is inactive because it incurred a triple fault

1

 or some other serious 

error.

— 3: Wait-for-SIPI. The logical processor is inactive because it is waiting for a startup-IPI (SIPI).
Future processors may include support for other activity states. Software should read the VMX capability MSR 
IA32_VMX_MISC (see Appendix A.6) to determine what activity states are supported.

Interruptibility state (32 bits). The IA-32 architecture includes features that permit certain events to be 
blocked for a period of time. This field contains information about such blocking. Details and the format of this 
field are given in Table 24-3.

Pending debug exceptions (64 bits; 32 bits on processors that do not support Intel 64 architecture). IA-32 
processors may recognize one or more debug exceptions without immediately delivering them.

2

 This field 

contains information about such exceptions. This field is described in Table 24-4.

2. Execution of the MWAIT instruction may put a logical processor into an inactive state. However, this VMCS field never reflects this 

state. See Section 27.1.

1. A triple fault occurs when a logical processor encounters an exception while attempting to deliver a double fault.

Table 24-3.  Format of Interruptibility State

Bit 

Position(s)

Bit Name

Notes

0

Blocking by STI

See the “STI—Set Interrupt Flag” section in Chapter 4 of the Intel® 64 and IA-32 Architectures 

Software Developer’s Manual, Volume 2B.
Execution of STI with RFLAGS.IF = 0 blocks interrupts (and, optionally, other events) for one 

instruction after its execution. Setting this bit indicates that this blocking is in effect.

1

Blocking  by 

MOV SS

See the “MOV—Move a Value from the Stack” from Chapter 4 of the Intel® 64 and IA-32 

Architectures Software Developer’s Manual, Volume 2B, and “POP—Pop a Value from the 

Stack” from Chapter 4 of thIntel® 64 and IA-32 Architectures Software Developer’s Manual, 

Volume 2B, and Section 6.8.3 in the Intel® 64 and IA-32 Architectures Software Developer’s 

Manual, Volume 3A.
Execution of a MOV to SS or a POP to SS blocks interrupts for one instruction after its 

execution. In addition, certain debug exceptions are inhibited between a MOV to SS or a POP to 

SS and a subsequent instruction. Setting this bit indicates that the blocking of all these events 

is in effect. This document uses the term “blocking by MOV SS,” but it applies equally to POP SS.

2

Blocking by SMI

See Section 34.2. System-management interrupts (SMIs) are disabled while the processor is in 

system-management mode (SMM). Setting this bit indicates that blocking of SMIs is in effect.

3

Blocking by NMI

See Section 6.7.1 in the Intel® 64 and IA-32 Architectures Software Developer’s Manual, 

Volume 3A and Section 34.8.
Delivery of a non-maskable interrupt (NMI) or a system-management interrupt (SMI) blocks 

subsequent NMIs until the next execution of IRET. See Section 25.3 for how this behavior of 

IRET may change in VMX non-root operation. Setting this bit indicates that blocking of NMIs is 

in effect. Clearing this bit does not imply that NMIs are not (temporarily) blocked for other 

reasons.
If the “virtual NMIs” VM-execution control (see Section 24.6.1) is 1, this bit does not control the 

blocking of NMIs. Instead, it refers to “virtual-NMI blocking” (the fact that guest software is not 

ready for an NMI).

4

Enclave 

interruption

A VM exit saves this bit as 1 to indicate that the VM exit was incident to enclave mode.

31:5

Reserved

VM entry will fail if these bits are not 0. See Section 26.3.1.5.