background image

24-20 Vol. 3C

VIRTUAL MACHINE CONTROL STRUCTURES

VM-entry MSR-load address (64 bits). This field contains the physical address of the VM-entry MSR-load 
area. The area is a table of entries, 16 bytes per entry, where the number of entries is given by the VM-entry 
MSR-load count. The format of entries is described in Table 24-11. If the VM-entry MSR-load count is not zero, 
the address must be 16-byte aligned.

See Section 26.4 for details of how this area is used on VM entries.

24.8.3 

VM-Entry Controls for Event Injection

VM entry can be configured to conclude by delivering an event through the IDT (after all guest state and MSRs have 
been loaded). This process is called event injection and is controlled by the following three VM-entry control 
fields:

VM-entry interruption-information field (32 bits). This field provides details about the event to be injected. 
Table 24-13 describes the field.

— The vector (bits 7:0) determines which entry in the IDT is used or which other event is injected.
— The interruption type (bits 10:8) determines details of how the injection is performed. In general, a VMM 

should use the type hardware exception for all exceptions other than breakpoint exceptions (#BP; 
generated by INT3) and overflow exceptions (#OF; generated by INTO); it should use the type software 
exception
 for #BP and #OF. The type other event is used for injection of events that are not delivered 
through the IDT.

— For  exceptions,  the  deliver-error-code bit (bit 11) determines whether delivery pushes an error code on 

the guest stack.

— VM entry injects an event if and only if the valid bit (bit 31) is 1. The valid bit in this field is cleared on 

every VM exit (see Section 27.2).

VM-entry exception error code (32 bits). This field is used if and only if the valid bit (bit 31) and the deliver-
error-code bit (bit 11) are both set in the VM-entry interruption-information field.

VM-entry instruction length (32 bits). For injection of events whose type is software interrupt, software 
exception, or privileged software exception, this field is used to determine the value of RIP that is pushed on 
the stack.

See Section 26.5 for details regarding the mechanics of event injection, including the use of the interruption type 
and the VM-entry instruction length.
VM exits clear the valid bit (bit 31) in the VM-entry interruption-information field.

Table 24-13.  Format of the VM-Entry Interruption-Information Field

Bit Position(s)

Content

7:0

Vector of interrupt or exception

10:8

Interruption type:

0: External interrupt

1: Reserved

2: Non-maskable interrupt (NMI)

3: Hardware exception

4: Software interrupt

5: Privileged software exception

6: Software exception

7: Other event

11

Deliver error code (0 = do not deliver; 1 = deliver)

30:12

Reserved

31

Valid