EPT: Strange VM-Exits

EPT: Strange VM-Exits


I am developing a simple VMM with interrupts disabled in the host. It uses EPT 1-to-1 mapping from guest physical to physical addresses.
And I am getting strange VM-Exits (accidentally).
VM Exit Reason: 0x30 (EPT Violation)
IDT Vectoring Information: 0x800000d1 (delivering hardware interrupt 0xd1)
Exit Qualification: 0x81 (reading guest paging structure; guest physical memory is not readable)
Guest Physical Address: 0xb6206d60
Guest Virtual Address: 0x807ac6a8

EPT walk for gpa=0xb6206d60, EPTP=0xaadd001e:
PML4E: 0xaadd1007
PDPTE: 0xaadd4007
PDE: 0xa0c4f007
PTE: 0xb6206033 (physical address: 0xb6206000; readable, writable; memory type: writeback)

Since there is nothing to fix in EPT, I leave it intact and copy data from IDT-Vectoring Information to VM-Entry Interruption-Information field.

But then I get the same VM exits and VMM infinitely loops on them.

So questions are:
- Is it possible (Exit Qualification says page is NOT readable but it IS according to EPT walk) or I am doing something wrong?
- Is IDT-Vectoring Information handled right way?

Thanks in advance for any help!

2 posts / 0 new
Last post
For more complete information about compiler optimizations, see our Optimization Notice.


Here are some comments I received from a colleague:

"The VM exit reports that the EPT violation was detected during the translation of guest-linear address 0x807ac6a8.

It would be good to confirm that the translation of this linear address (based on CR3 and paging mode) does indeed require reading a paging-structure entry whose guest-physical address is 0xb6206d60.

The VM exit reports that the EPT violation was detected during the delivery of interrupt D1H.

It would be good to confirm that the delivery of interrupt D1H (based on IDTR, SS.DPL, and SS:ESP) will require access to linear address 0x807ac6a8."

Hope this helps.

David Ott

Leave a Comment

Please sign in to add a comment. Not a member? Join today