An Open-Source ARM Virtualization System

As ARM CPUs grow in performance and ubiquity across phones, netbooks, and embedded computers, providing virtualization support for ARM-based devices is increasingly important.  The KVM for ARM project is focused on creating a open-source KVM-based virtualization solution for ARM-based devices that can run virtual machines efficiently.  We are exploring both software-only and hardware-assisted approaches, the latter by leveraging ARM virtualization extensions.

Because ARM is not virtualizable, our software-only approach uses lightweight paravirtualization, a script-based method to automatically modify the source code of an operating system kernel to allow it to run in a virtual machine. Lightweight paravirtualization is architecture specific, but operating system independent. It is minimally intrusive, completely automated, and requires no knowledge or understanding of the guest operating system kernel code. By leveraging KVM, which is an intrinsic part of the Linux kernel, KVM/ARM’s code base can be always kept in line with new kernel releases without additional maintenance costs, and can be easily included in most Linux distributions. We have implemented a KVM/ARM prototype based on the Linux kernel used in Google Android, and demonstrated its ability to successfully run nearly unmodified Linux guest operating systems.

Our hardware-assisted approach focuses on KVM support for the Virtualization Extensions for Cortex-A15.  While hardware is not yet available, we have implemented a KVM/ARM prototype leveraging these extensions that operates using FAST models and can successfully run unmodified Linux guest operating systems.

Related Publications

Cells: A Virtual Mobile Smartphone Architecture

Proceedings of the 23rd ACM Symposium on Operating Systems Principles (SOSP 2011), October 2011

Abstract

PDF

 

KVM for ARM

Proceedings of the 12th Annual Linux Symposium, July 2010

Abstract

PDF

 

Resources

Columbia University Department of Computer Science