CPUID Intercept Message

A CPUID intercept message is delivered by the hypervisor when a virtual processor executes a CPUID instruction and the parent partition previously called the HvInstallIntercept hypercall function to install an intercept on such instructions.

The format of CPUID intercept messages is shown in the following table. An HV_X64_CPUID_INTERCEPT_MESSAGE structure is used to encode a CPUID intercept message.

Message Header

0

MessageType (4 bytes)

Rsvd (3 bytes)

PayloadSize

(1 byte)

8

SourcePartition (8 bytes)

CPUID Intercept Payload

16

VpIndex (4 bytes)

InstLen

(1 byte)

Access
Type

(1 byte)

ExecutionState

(2 bytes)

24

CsSegment[0] (8 bytes)

32

CsSegment[1] (8 bytes)

40

Rip (8 bytes)

48

Rflags (8 bytes)

56

Rax (8 bytes)

64

Rcx (8 bytes)

72

Rdx (8 bytes)

80

Rbx (8 bytes)

88

DefaultResultRax (8 bytes)

96

DefaultResultRcx (8 bytes)

104

DefaultResultRdx (8 bytes)

112

DefaultResultRbx (8 bytes)

 

The following list describes the fields of CPUID intercept messages:

Rax-Rbx

The values in the corresponding registers when the CPUID instruction is executed.

DefaultResultRax-DefaultResultRbx

The default return values that the hypervisor would have returned in response to the CPUID instruction if the intercept had not been requested. The intercept handler is free to override these default values.

 

 

Send comments about this topic to Microsoft

Build date: 11/16/2013

Show:
© 2014 Microsoft. All rights reserved.