Running KVM on Arndale Exynos boards

This page covers bringing up KVM on the Arndale boards, and references git branches that have some Arndale patches in. For a general ARM KVM implementation against mainline please see:


Before booting the kernel, one needs a hypervisor-enabled u-boot. A clone of Rony's u-boot tree with Christoffer Dall's modifcations can be found at:

git:// lue_arndale-kvm

Build & installation instructions as per Rony's [1].

Kernel - hypervisor

A clone of Christoffer's Arndale KVM tree with my NUMA patches applied, can be found at:

git:// numa_huge_kvm

A more recent set of ARM KVM sources for the Arndale can be found at:

git:// lue_arndale-kvm-huge

The KVM configuration can be found in: arndale_kvm_defconfig

Kernel and dt installed as per [1].

As a heads-up, the device tree has some extra timer information required for KVM; so do make sure to re-install the dt.


I opted to use kvmtool to manage kvm guests. The source tree I used was:

git:// kvmtool/arm

The source for kvmtool can be found in tools/kvm. I built this and copied the lkvm binary somewhere safe.

Kernel - guest

To run a guest under kvmtool, one requires mach-virt support. This can be found in 3.9-rc1.

I used the vexpress_defconfig and enabled the following extra options:

  • "System Type->Dummy Virtual Machine" (ARCH_VIRT)

  • "Device Drivers->Virtio Drivers" (VIRTIO)

  • "Device Drivers->Virtio Drivers->Virtio balloon driver" (VIRTIO_BALLOON)

  • "Device Drivers->Virtio Drivers->Platform bus driver for memory mapped virtio devices" (VIRTIO_MMIO)

  • "Device Drivers->Block Devices->Virtio block driver" (VIRTIO_BLK)

  • "Device Drivers->Character Devices->Virtio console" (VIRTIO_CONSOLE)

  • "Device Drivers->Network device support->Virtio network driver" (VIRTIO_NET)

Running the guest

One can fire up a guest vm via: ./lkvm run ./kvmtool/arch/arm/boot/zImage --network trans=mmio,mode=user --console virtio -d ./disk.img -p "console=hvc0,38400 rw root=/dev/vda1"

Console output will appear from the guest in the current window.

To stop all guests running one can invoke: ./lkvm stop --all

To debug a guest, one can run the following: ./lkvm debug -a -d (this displays the PC & LR of all the CPUs in the guests).

-- Steve

[1] -

LEG/Engineering/Kernel/KVM (last modified 2013-07-31 01:24:53)