background image

27-6 Vol. 3C

VM EXITS

— For MWAIT, the exit qualification contains a value that indicates whether address-range monitoring 

hardware was armed. The exit qualification is set either to 0 (if address-range monitoring hardware is not 
armed) or to 1 (if address-range monitoring hardware is armed).

— For an APIC-access VM exit resulting from a linear access or a guest-physical access to the APIC-access 

page (see Section 29.4), the exit qualification contains information about the access and has the format 
given in Table 27-6.

1

If the access to the APIC-access page occurred during execution of an instruction in enclave mode (and not 
during delivery of an event incident to enclave mode), bits 11:0 of the exit qualification are cleared.
Such a VM exit that set bits 15:12 of the exit qualification to 0000b (data read during instruction execution) 
or 0001b (data write during instruction execution) set bit 12—which distinguishes data read from data 
write—to that which would have been stored in bit 1—W/R—of the page-fault error code had the access 
caused a page fault instead of an APIC-access VM exit. This implies the following:

For an APIC-access VM exit caused by the CLFLUSH and CLFLUSHOPT instructions, the access type is 
“data read during instruction execution.”

For an APIC-access VM exit caused by the ENTER instruction, the access type is “data write during 
instruction execution.”

1. The exit qualification is undefined if the access was part of the logging of a branch record or a precise-event-based-sampling (PEBS) 

record to the DS save area. It is recommended that software configure the paging structures so that no address in the DS save area 

translates to an address on the APIC-access page.

Table 27-3.  Exit Qualification for Control-Register Accesses 

Bit Positions

Contents

3:0

Number of control register (0 for CLTS and LMSW). Bit 3 is always 0 on processors that do not support Intel 64 

architecture as they do not support CR8.

5:4

Access type:

0 =  MOV  to  CR

1 = MOV from CR

2 =  CLTS

3 =  LMSW

6

LMSW operand type:

0 =  register

1 =  memory

For CLTS and MOV CR, cleared to 0

7

Reserved (cleared to 0)

11:8

For MOV CR, the general-purpose register:

0 =  RAX

1 =  RCX

2 =  RDX

3 =  RBX

4 =  RSP

5 =  RBP

6 =  RSI

7 =  RDI

8–15 represent R8–R15, respectively (used only on processors that support Intel 64 architecture)

For CLTS and LMSW, cleared to 0

15:12

Reserved (cleared to 0)