VirtIO
Jump to navigation
Jump to search
VirtIO is a standard for performant virtualized hardware for use within virtual machines, created and managed by the OASIS Open Virtual I/O Device TC. VirtIO supports a variety of devices, such as, but not limited to: block (e.g. hard drive), network card, GPU, etc. Each of these devices have their own specific configuration and features, but all use the same underlying VirtIO queue structure for relaying data and commands to & from the device.
Device Types
Device Name | Device ID | Description |
---|---|---|
Network Card | 1 | Ethernet network interface |
Block Device | 2 | Block storage capabilities, e.g. hard drive, for storing files and other information |
Console | 3 | Serial console device for simple I/O communication |
Entropy Source | 4 | A source of entropy for cryptographically secure PRNGs |
Memory Ballooning (Traditional) | 5 | [TODO] |
ioMemory | 6 | [TODO] |
rpmsg | 7 | [TODO] |
SCSI Host | 8 | Grouping of one or more virtual logical units (e.g. disks) that can be managed via the SCSI protocol |
9P Transport | 9 | [TODO] |
MAC80211 WLAN | 10 | 802.11 WLAN interface for wireless LAN communication |
rproc Serial | 11 | [TODO] |
VirtIO CAIF | 12 | [TODO] |
Memory Balloon | 13 | [TODO] |
GPU | 16 | 2D & 3D GPU device, requires a 3D GPU on the host machine for 3D mode, as well as negotiating specific features |
Device Transports
VirtIO supports three different types of device transports: PCI Bus, MMIO, and Channel I/O. The PCIe transport is configured via the normal PCIe configuration mechanisms, while the MMIO transport is configured strictly via MMIO reads and writes.