Hi, I'm a developer of a simple and tiny hypervisor. Now I have a huge trouble with behavior of VMCS' "Exit qualification" field.For example, this guest assembly code... ... mov eax, CR4_PSE_BIT mov cr4, eax ... ... causes #VMEXIT with exit reason 0x1C.At the next step my hypervisor analizes a value of "Exit qualification" field to determine a type of instruction and registers' numbers.And its value is wrong. For "mov cr4, eax" this is 0x13, but it's an incorrect value (it's correct for "mov eax, cr3"). When I change an instruction in guest to another "MOV CR" instruction this value changes, but often it isn't correct too.Can anybody help me? What's the probable reason of such behavior?My hypervisor works with EPT and Unrestricted guest extensions.
For more complete information about compiler optimizations, see our Optimization Notice.