Xvisor: eXtensible Versatile hypervISOR
What is Xvisor?
Xvisor® is an open-source type-1 hypervisor, which aims at providing a monolithic, light-weight, portable, and flexible virtualization solution.
It provides a high performance and low memory foot print virtualization solution for ARMv5, ARMv6, ARMv7a, ARMv7a-ve, ARMv8a, x86_64, RISC-V and other CPU architectures. In comparison to other ARM hypervisors, it is one of the few hypervisors providing support for ARM CPUs which do not have ARM virtualization extensions. In RISC-V world, it is world first Type-1 RISC-V hypervisor.
The Xvisor source code is highly portable and can be easily ported to most general-purpose 32-bit or 64-bit architectures as long as they have a paged memory management unit (PMMU) and a port of the GNU C compiler (GCC).
Xvisor primarily supports Full virtualization hence, supports a wide range of unmodified Guest operating systems. Paravirtualization is optional for Xvisor and will be supported in an architecture independent manner (such as VirtIO PCI/MMIO devices) to ensure no-change in Guest OS for using paravirtualization.
It has most features expected from a modern hypervisor, such as: Device tree based configuration, Tickless and high resolution timekeeping, Threading framework, Host device driver framework, IO device emulation framework, Runtime loadable modules, Pass through hardware access, Dynamic guest creation/destruction, Managment terminal, Network virtualization, Input device virtualization, Display device virtualization and many more.
Hypervisors can be categorized into three categories based on Host hardware access, CPU virtualization, and Guest IO emulation, as follows:
- Complete Monolithic: Complete monolithic hypervisors (e.g. Xvisor) have one common software for Host hardware access, CPU virtualization, and Guest IO emulation.
- Partially Monolithic: Partially monolithic hypervisors (e.g. KVM) are usually an extension of general purpose monolithic OS (e.g. Linux®, FreeBSD®, NetBSD®, etc.) to support Host hardware access + CPU virtualization in kernel and support Guest IO emulation from software running in user-space (e.g. QEMU®).
- Micro-kernelized: Micro-kernelized hypervisors (e.g. Xen®) are usually light-weight micro-kernels providing basic Host hardware access + CPU virtualization in kernel and for rest it depends on a Managment Guest (e.g. Dom0 of Xen) which provides complete Host hardware access, Management interface, and Guest IO emulation.
Xvisor is a complete monolithic hypervisor whereas most open-source hypervisors are either partially monolithic or micro-kernelized.