VFIO - Virtual Fabric IO a.k.a. PCI pass-through
VFIO is a virtual fabric IO mechanism which intends to provide the
userspace access to real devices such as PCI hardware. There are 2 uses of
1) a usual userspace program which knows specific PCI hardware and can use
for custom application (high speed trading?);
2) pass it to a guest OS - so called "PCI Passthrough" - and this is what
the talk is all about.
There were 2 challenges in implementing VFIO:
1. Protect guest/host memory from other guest or host.
PCI passthrough requires virtualization support from the host hardware, the
feature is called "IOMMU". Different architectures support different IOMMU
models, the existing guest systems also have different capabilities
regarding IOMMU support/requirements. Current VFIO supports x86 and POWERPC
(server and embedded).
2. Provide implementation with minimum overhead compared to the bare metal
performance when uses with KVM. This includes DMA and MMIO acceleration.
Different approaches are used for x86 and POWERPC.
3. Support tweaks/quirks which various devices might want such as
power-on-self-test and so on. Support various types of device reset is the
most annoying part of this.
Alexey Kardashevskiy, linux kernel engineer in IBM Australia/Ozlabs team since 08/2010.
Area of focus - PowerKVM, QEMU on POWERPC, VFIO on POWER.