Software Archive
Read-only legacy content
17061 Discussions

EPT: Strange VM-Exits

hellfire
New Contributor I
578 Views
Hello,

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!

0 Kudos
1 Reply
David_O_Intel1
Employee
578 Views

Hi,

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

0 Kudos
Reply