# Virtual Machine Manager

## Status
Accepted

## Context
rust-vmm-based VMM provides memory and concurrency safe solution.
cloud-hypervisor was chosen because firecrack does not support other
virtio-devices than net or block. crosvm was not chosen because cloud-hypervisor
has more flexible IPC mechanisms, more engaging community as LF-project.
cloud-hypervisor has more core features - such as snapshotting, live migration
and more general hot plugging. crosvm supports more devices we will also need.
It was seen easier to port devices from crosvm to cloud-hypervisor than to port
core features from cloud-hypervisor to crosvm.

## Decision
Spectrum OS design and implementation decision is to use cloud-hypervisor as the
primary VMM.

## Consequences
We gotta port some stuff from crosvm to cloud-hypervisor. It's easier for
Spectrum to handle virtualization dynamically with cloud-hypervisor. If the
primary VMM, cloud-hypervisor, is exchanged for trials etc. functionality is
expected to break or not supported.
