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.