Hello,
I'm having trouble with EPT on Core i3 550 and Core i3 370M (only available hardwar for my tests). I'm developping a bare metal hypervisor dedicated to one VM. The following behavior happens while the VM is running with EPT configured in WB mode. EPT mappings area identity mappings from the VM physical memory to the system one.
A Machine Check exception is raised by the CPU wherever we are into the VMM or the VM and whichever the current instruction is. It originally happened on a "wbinvd" and i thought it was related to cache coherency or something like that, but on the Core i3 370M the #MCE is raised upon a "cld" which does not make any sense to me.
The fact is that when i configure EPT mappings using UC memory type, the #MCE is never raised. Enabling or disabling MTRRs in the host/guest, does not change anything.
When inspecting the different MSRs related to MCE/MCA, i have been able to collect these values:
P5_ADDR 0x0
P5_TYPE 0x800
MCE cap 0xc09
MC0_STS 0x0
MC1_STS 0x800
MC2_STS 0x0
MC3_STS 0x0
MC4_STS 0x0
MC5_STS 0x0
MC6_STS 0x0
MC7_STS 0x0
MC8_STS 0xf
EPT write back memory type and Machine Check exception
For more complete information about compiler optimizations, see our Optimization Notice.


