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

Table Of Contents
Vol. 3 21-15
VMX NON-ROOT OPERATION
Non-maskable interrupts (NMIs) and higher priority events take priority over
VM exits caused by this control. VM exits caused by this control take priority over
external interrupts and lower priority events.
These VM exits wake a logical processor from the same inactive states as would
an external interrupt. Specifically, they wake a logical processor from the states
entered using the HLT and MWAIT instructions. These VM exits do not occur if the
logical processor is in the shutdown state or the wait-for-SIPI state.
If the “NMI-window exiting” VM-execution control is 1, a VM exit occurs before
execution of any instruction if there is no virtual-NMI blocking and there is no
blocking of events by MOV SS (see Table 20-3). (A logical processor may also
prevent such a VM exit if there is blocking of events by STI.) Such a VM exit
occurs immediately after VM entry if the above conditions are true (see Section
22.6.6).
VM exits caused by the VMX-preemption timer and higher priority events take
priority over VM exits caused by this control. VM exits caused by this control take
priority over non-maskable interrupts (NMIs) and lower priority events.
These VM exits wake a logical processor from the same inactive states as would
an NMI. Specifically, they wake a logical processor from the shutdown state and
from the states entered using the HLT and MWAIT instructions. These VM exits do
not occur if the logical processor is in the wait-for-SIPI state.
21.4 CHANGES TO INSTRUCTION BEHAVIOR IN VMX NON-
ROOT OPERATION
The behavior of some instructions is changed in VMX non-root operation. Some of
these changes are determined by the settings of certain VM-execution control fields.
The following items detail such changes:
CLTS. Behavior of the CLTS instruction is determined by the bits in position 3
(corresponding to CR0.TS) in the CR0 guest/host mask and the CR0 read
shadow:
If bit 3 in the CR0 guest/host mask is 0, CLTS clears CR0.TS normally (the
value of bit 3 in the CR0 read shadow is irrelevant in this case), unless CR0.TS
is fixed to 1 in VMX operation (see Section 19.8), in which case CLTS causes
a general-protection exception.
If bit 3 in the CR0 guest/host mask is 1 and bit 3 in the CR0 read shadow is 0,
CLTS completes but does not change the contents of CR0.TS.
If the bits in position 3 in the CR0 guest/host mask and the CR0 read shadow
are both 1, CLTS causes a VM exit (see Section 21.1.3).
IRET. Behavior of IRET with regard to NMI blocking (see Table 20-3) is
determined by the settings of the “NMI exiting” and “virtual NMIs” VM-execution
controls: