BSDCan2016 - v1.1.24a

BSDCan 2016
The Technical BSD Conference

Mihai Carabas
Day Talks #2 - 11 June - 2016-06-11
Room DMS 1110
Start time 16:00
Duration 01:00
ID 660
Event type Lecture
Track Embedded
Language used for presentation English

Porting bhyve on ARM-based platforms

Current status of bhyve-on-arm

In the last years ARM has developed hardware assisted virtualization in its processors too, thus enabling them to run performant virtual machines. bhyve is the current FreeBSD hypervisor, but unfortunatelly only runs on x86-based platforms. The aim of this project is to port bhyve on ARM-based platforms.

bhyve was originally developed for x86-based platforms, the kernel code being written in the machine dependant part of the kernel (amd64/vmm). The exposed interface was made to be as generic as posible in order to be usable in the future by other platforms. As a first step I duplicated in arm/vmm the interface exposed in amd64/vmm, eliminating the x86 dependant variables. Than I've implemented the low-level context switch code that saves and restores the state of a virtual machine (arm/vmm/*.S files). ARM offers support only for a Type-1 hypervisor (running without the support of a HostOS). The HostOS doesn't run in the highest priviledge level. At this step we created the concept of "microvisor" which runs in the highest priviledge level (HYP-Mode) and context switches from the Host-OS to the Guest-OS whenever is needed (basically is a bridge between the VMs and the HostOS).

Any virtualization solution needs userspace utilities to control the state of a VM. We have rewritten the bhyve* utilities for ARM (bhyveloadarm and bhyvearm). Until this moment we are able to boot a virtual machine on an ARM platform that supports virtualization extensions (ARMv7e - CortexA15 on FastModels) until the interrupt controller gets initilized. The virtualization of interrupt controller and the timer are work-in-progress at this moment. In the next month we want to finish-up the current work-in-progress to have a fully functional virtual machine running on top of FreeBSD using an ARM processor.

Also in parallel there is a project trying to run bhyvearm on a real hardware platform from ARM: Exynos5250.

The goal of this talk is to give a status report of the whole project (porting bhyve on ARM) and may be a little demo.