Thursday, September 19

Haiku OS [GSoC 2024] Hardware Virtualization: Final Report

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):

Code

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:

  • Import sys/specialreg. h from DragonFlyBSD
  • Include _ IOR and comparable macros to nvmm ioctl codes

NVMM is composed in C while substantial pieces of Haiku are composed on C++. We chose to keep NVMM in C (that is,

ยป …
Find out more