VirtIO

From FriendOS Wiki
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

VirtIO 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.