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

Table Of Contents
Vol. 3 21-25
VMX NON-ROOT OPERATION
privilege levels are not checked on the referenced task-state segment (TSS)
descriptor.
c. If CALL or JMP accesses a TSS descriptor directly in IA-32e mode, a general-
protection exception occurs.
d. If CALL or JMP accesses a TSS descriptor directly outside IA-32e mode,
privilege levels are checked on the TSS descriptor.
e. If a non-maskable interrupt (NMI), an exception, or an external interrupt
accesses a task gate in the IDT in IA-32e mode, a general-protection
exception occurs.
f. If a non-maskable interrupt (NMI), an exception other than breakpoint
exceptions (#BP) and overflow exceptions (#OF), or an external interrupt
accesses a task gate in the IDT outside IA-32e mode, no privilege checks are
performed.
g. If IRET is executed with RFLAGS.NT = 1 in IA-32e mode, a general-
protection exception occurs.
h. If IRET is executed with RFLAGS.NT = 1 outside IA-32e mode, a TSS
descriptor is accessed directly and no privilege checks are made.
2. Checks are made on the new TSS selector (for example, that is within GDT
limits).
3. The new TSS descriptor is read. (A page fault results if a relevant GDT page is not
present).
4. The TSS descriptor is checked for proper values of type (depends on type of task
switch), P bit, S bit, and limit.
Only if checks 1–4 all pass (do not generate faults) might a VM exit occur. However,
the ordering between a VM exit due to a task switch and a page fault resulting from
accessing the old TSS or the new TSS is implementation-specific. Some logical
processors may generate a page fault (instead of a VM exit due to a task switch) if
accessing either TSS would cause a page fault. Other logical processors may
generate a VM exit due to a task switch even if accessing either TSS would cause a
page fault.
If an attempt at a task switch through a task gate in the IDT causes an exception
(before generating a VM exit due to the task switch) and that exception causes a
VM exit, information about the event whose delivery that accessed the task gate is
recorded in the IDT-vectoring information fields and information about the exception
that caused the VM exit is recorded in the VM-exit interruption-information fields.
See Section 23.2. The fact that a task gate was being accessed is not recorded in the
VMCS.
If an attempt at a task switch through a task gate in the IDT causes VM exit due to
the task switch, information about the event whose delivery accessed the task gate
is recorded in the IDT-vectoring fields of the VMCS. Since the cause of such a VM exit
is a task switch and not an interruption, the valid bit for the VM-exit interruption
information field is 0. See Section 23.2.