Hello. I am trying to make realization of vmx for qemu.

For now it can:

- decode vmx instructions, vmx determination and vmx MSRs reading is
supported

- handle interrupts, exceptions, vm exits due to cr 0/4 exits, cr shadowing
is supported

- run bios POST and some amount of guest code in VirtualBox (tested on 5+
version). Current problem here is a strange wish of hypervisor to change
processor mode in vmx non-root to vm86 and find ill_op there. I have no
ideas, why VirtualBox wants it (may be someone knows?).

- configure guest in kvm, but guest can't run due to #PF which kvm can't
handle right on my realization. Details: when kvm configures guest and
enters in it, #PF with 0xfe05b address happens. Kvm goes to handle #PF.
kvm_mmu_page_fault goes to nonpaging_page_fault, which don't find page in
cache and calls nonpaging_map. nonpaging_map exits after critical section
before out_unlock label. For me reaction looks normal, but I didn't dig
deeper. After #PF handling kvm enters to guest again and falls to kvm again
with #PF on 0xfe05b. This situation repeats infinitely.

 

If somebody have an interest in subject, he can find sources here
https://github.com/ispras/qemu.git , branch vmx.

 

Best regards, 

Dmitry Poletaev.

 

Reply via email to