DeAI Research
Source · IEEE International Conference on Computational Science and Engineering (CSE) and IEEE International Conference on Embedded and Ubiquitous Computing (EUC)

Platform Device Assignment to KVM-on-ARM Virtual Machines via VFIO

2014Antonios Motakis; Alvise Rigo; Daniel Raho

cid c743a24987cc444ec979633e4090e25147b7ffefb7d46f73f0b4c5b0d5d79709 · original · via openalex

Title: Platform Device Assignment to KVM-on-ARM Virtual Machines via VFIO
Authors: Antonios Motakis; Alvise Rigo; Daniel Raho
Venue: IEEE International Conference on Computational Science and Engineering (CSE) and IEEE International Conference on Embedded and Ubiquitous Computing (EUC)
Year: 2014
Canonical: doi:10.1109/euc.2014.32
URL: https://doi.org/10.1109/euc.2014.32
Collector: openalex
OA: false

ABSTRACT
VFIO (Virtual Function I/O) is a Linux kernel infrastructure that allows to leverage the capabilities of modern IOMMUs to drive a device directly from user space without any additional specialized kernel driver being involved. When used by QEMU/KVM, a device can be assigned to a guest VM, allowing to transparently handle all aspects of communication with the device, including DMA mapping, MMIO range mapping, and interrupts. To support a given hardware architecture and device, VFIO will need to be able to support the type of IOMMU that is in front of the device, and the discovery and configuration mechanisms of the bus that the device is connected to. However, often no auto configuration interface is exposed on ARM, as opposed to devices on a PCI bus, commonly used on x86. In order to support VFIO on ARM, in this work platform devices support is being implemented as a VFIO_PLATFORM driver. Additionally, VFIO is being extended to support common IOMMUs found on ARM systems, such as the ARM SMMU. In this paper, we highlight the challenges met while implementing the required components, and extensions to VFIO and KVM in order to fully support device assignment to Virtual Machines on modern ARM systems.