<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'>Virtualization research projects <a title='ARM multicore kvm open source' href='/en/research'>in cloud and embedded systems</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> <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>

Virtual machines acceleration needs GPU full virtualization

full GPU virtualization mechanism to accelerate KVM on ARM virtual machines

Graphics Processing Units (GPUs) are today used not only to perform graphics tasks but also to execute general purpose applications for reducing CPU workload. Modern SoCs embed a GPU together with a general purpose CPU. Virtualization has become an essential technology in several application domains, thus also enabling virtual machines to benefit from GPU acceleration, not only to improve the graphical experience in virtualized systems but also to free CPU resources.

Enabling full GPU virtualization in new generation SoCs makes it easier to speed up the adoption of the SoC itself in several market segments including networking (Network Functions Virtualization - NFV), High Performance Computing (HPC), automotive and connected objects, smart-home and smart-meters gateways, smart-cell and telecommunication data centers.

GPU virtualization device assignment through VFIO

Legacy GPUs can be efficiently assigned to virtual machines with the so-called direct assignment virtualization technology through VFIO. Virtual Open Systems has ported the VFIO (Virtual Function I/O) framework to ARM platform devices, allowing to remove such devices from the host machine to be directly attached to a virtual machine. Thanks to VFIO, no action at the hypervisor level is needed to handle the interactions between a virtual machine and the physical device, providing near native performance in devices virtualization. In addition with this technology, the native vendor device driver can be used on the guest OS without any modification. Registers and interrupts are directly redirected to the virtual machine, while DMA access are secured by an IOMMU, which prevent the GPU to access memory spaces which are not allowed to.

GPU passthrough using VFIO to enable KVM on ARM direct assignment GPU virtualization

Top level architecture of the Virtual Open Systems VFIO based GPU virtualization

As a requirement, the VFIO framework ported to ARM based embedded SoCs needs a device which is put behind an IOMMU; such a device can be bound to a single virtual machine to enable for instance GPU virtualization. Having been directly involved in the open source development as the maintainer of VFIO for ARM platform devices, Virtual Open Systems can provide professional custom solutions based on the VFIO framework to enable GPU and accelerators virtualization for modern SoC based systems:

  • Support for custom IOMMU interface
  • Device support in QEMU
  • User space drivers development
  • Custom virtualization solutions

Hardware assisted GPU full virtualization for shared virtual GPU (vGPU)

More and more GPUs implement hardware extensions to improve virtualization features (e.g., direct assignment to multiple virtual machines). The GPU hardware creates virtual GPU (vGPU) interfaces, providing the abstraction of multiple physical GPU devices. Such vGPUs can be bound each to a different virtual machine through VFIO, thus providing unprecedented high performance GPU full virtualization. In addition, in this scenario virtual machines can still use the native vendor device driver.

Hardware assisted high performance GPU full virtualization to enable vGPU assignment to virtual machines through VFIO

Top level architecture for hardware-assisted VFIO-based GPU full virtualization

Similarly, for hardware assisted GPU full virtualization Virtual Open Systems offers professional custom development services to build the best virtualization solution around hardware assisted GPU:

  • Support for custom IOMMU interface
  • QEMU support for virtual GPU interfaces
  • Implementation of a custom vGPU manager component, to handle the whole life cycle of vGPU interfaces
  • Expose vGPU interfaces to guest through VFIO
  • Support for custom interrupt mechanisms (e.g., a single physical interrupt is shared by all vGPUs) and its integration into VFIO and QEMU