VFIO - Virtual Fabric IO a.k.a. PCI pass-through

158 Views
Published
Alexey Kardashevskiy
http://lca2015.linux.org.au/schedule/30231/view_talk
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
this:
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.
Category
Network Cards
Be the first to comment