Project summary
QEMU is a virtual device which permits running an os within another. While there currently is a Haiku port, it presently does not support any velocity system through native virtualization (through Intel VT-x and AMD SVM.) This makes it too sluggish for lots of usages. This job intended to bring hardware virtualization to Haiku by porting NVMM, a hypervisor that currently has QEMU assistance, into Haiku from DragonFlyBSD. The job objectives (as consisted of on the proposition) were:
Job objectives
- NVMM motorist ported to Haiku (VMX backend just)
- QEMU efficient in speeding up virtual devices through NVMM
The task objectives didn't alter much throughout the job (although there were strategies to get SVM backend working too, which didn't occur because I didn't got at any time to enter it) and they've been finished to some level: The motorist (VMX backend) is practically entirely ported (there are just a few information missing out on) and QEMU can speeding up virtual devices however a number of bugs stay.
Now, the information:
Finished goals
- NVMM frontend ported
- NVMM VMX backend ported (with a couple problems staying)
- libnvmm (& & test suite) ported
- EPT assistance contributed to the kernel
- QEMU covered to support NVMM on Haiku and working
Unsolved concerns
- SVM backend not ported
- Some OSes do not work correctly on QEMU
- Various habits on genuine hardware
- QEMU crashes when SMP is allowed
- EPT translations not flushed from TLB on time
These are simply the significant problems, for a complete list of insufficient things describe GitHub (43 still opened while composing this post). Here we can see QEMU virtualizing KolibriOS through NVMM (on embedded virtualization):
The code is offered at GitHub (devotes outdated May 13 and later on in the master branch). None of it has actually been combined yet given that the motorist isn't totally working and the kernel modifications I made are just required for NVMM.
Finished goals: Technical information
Some information about everything I got done, in sequential order, with a few of the more pertinent dedicates consisted of. Some dedicates from the start of the job consist of modifications to more things than what the devote message states considering that at the start I needed to do great deals of modifications in several parts of the job and it was tough to divide things into different dedicates.
While the NVMM code from DragonFlyBSD was more OS-independent than the NetBSD one it still presumed a great deal of BSD macros were offered. A lot of them weren't readily available on Haiku so we brought some headers from DragonFlyBSD:
NVMM is composed in C while substantial pieces of Haiku are composed on C++. We chose to keep NVMM in C (that is,