<div class='slidealt'>Virtualization research projects <a title='ARM multicore kvm open source' href='/en/research'>in cloud and embedded systems</a></div> <div class='slidealt'>Virtualization solutions for heterogeneous <a title='ARMv7-ARMv8 virtualization open source solutions' href='/en/solutions'>ARM multicore systems</a></div> <div class='slidealt'>Benefit from custom <a title='kvm on arm services full virtualization' href='/en/services'>virtualization services</a></div> <div class='slidealt'>Experience kvm <a title='virtualization for embedded heterogeneous arm core platforms' href='/en/products'>virtualization extensions</a></div> <div class='slidealt'>KVM on ARMv7 and ARMv8 <a title='kvm-on-arm open source smu extensions' href='/en/solutions/guides/vfio-on-arm/'>IOMMU full virtualization</a></div>

Open source KVM full virtualization for ARM SoCs

open source virtualization architecture using linux kvm for arm platforms

Virtualization in embedded systems has emerged fairly recently. With the growth of complexity in both hardware and software systems, virtualization is increasingly becoming a key technology. ARM-based devices are seeing tremendous growth across smartphones, tablets, netbooks, embedded systems, networking, servers and automotive. ARM processors represent nowadays the most important architecture deployed in many market segments. While ARM CPUs have benefited from their advantages in power efficiency in these markets, they continue to increase in performance challenging the x86 CPUs for many classes of applications.

This is spurring the development of new ARM-based microservers, competing with traditional server and PC markets. KVM is an open source linux hypervisor implemented within the linux kernel and allows virtual machine creation with the help of userspace drivers. KVM works by exposing a simple interface to userspace (as shown in the figure below), through which a regular process becomes a virtual machine. Usually Quick Emulator (QEMU) is used on the userspace side to emulate I/O devices, and KVM handles Virtual CPUs and memory virtualization. Virtual Open Systems is at the front edge in the KVM on ARM development and any custom extension, required by specific ARM SoC architecture implementations.

The open source advantages of linux KVM compared to closed solutions

kvm on arm virtualization for arm based heterogeneous SoCs

The primary differentiating factor between KVM and other virtualization techniques is the efficient implementation approach used by KVM. In other virtualization solutions, the virtual machine monitor (VMM) largely implements all major services like the scheduler, memory manager and timers. This results in a fairly large and complicated code base. On the contrary, KVM takes advantage of the existing code base within the linux kernel, such as the scheduler and memory management, thus resulting in a smaller code base hypervisor. This aspect allowed KVM to evolve at an impressive pace and to become one of the most full featured virtualization solutions.

KVM takes care of processor and memory virtualization at the kernel level, whereas the I/O devices are emulated in userspace, such as network interfaces and storage. An interface to userspace is exposed by KVM, so that devices can be emulated by the application setting up the virtual machine. Additionally, the same approach can be extended to the virtualization of GPU, hardware codecs and related API standards such as OpenGL and OpenMAX. Today KVM-on-ARM is very popular, for the following reasons:

  • Native support for any Guest OS. As a bare metal, open source hypervisor KVM uses hardware-based virtualization to support almost any guest OS within linux with near native performance.
  • Open source solution avoids vendor lock-in effects. Closed virtualization solutions force manufacturers to pay royalty fees. In addition, the development cost and the code port to future processor architectures are expensive.