2018-12-06 11:31:15 +08:00
|
|
|
|
# [Draft] Virtio
|
2018-12-06 10:30:17 +08:00
|
|
|
|
|
|
|
|
|
## 1、基本概念
|
|
|
|
|
|
2018-12-06 11:31:15 +08:00
|
|
|
|
<https://www.ibm.com/developerworks/cn/linux/1402_caobb_virtio/>
|
|
|
|
|
<https://www.ibm.com/developerworks/cn/linux/l-virtio/index.html>
|
|
|
|
|
|
2018-12-06 10:30:17 +08:00
|
|
|
|
## 2、系统结构
|
|
|
|
|
|
|
|
|
|
## 3、Virtio 设备
|
|
|
|
|
|
2018-12-06 11:10:39 +08:00
|
|
|
|
## 3.1、Virtio 设备类型
|
2018-12-06 10:30:17 +08:00
|
|
|
|
|
2018-12-06 11:10:39 +08:00
|
|
|
|
主要分为 PCI 设备和非 PCI 的 mmio 设备。mmio 设备属于 Platform 设备,通过向 kernel 提供
|
2018-12-06 10:30:17 +08:00
|
|
|
|
|
2018-12-06 11:10:39 +08:00
|
|
|
|
virtio_mmio.device=<size>@<baseaddr>:<irq>[:<id>]
|
2018-12-06 10:30:17 +08:00
|
|
|
|
|
2018-12-06 11:10:39 +08:00
|
|
|
|
启动参数来让内核感知到设备存在,其中:
|
|
|
|
|
|
|
|
|
|
<size> := size (can use standard suffixes like K, M and G)
|
|
|
|
|
<baseaddr> := physical base address
|
|
|
|
|
<irq> := interrupt number (as passed to request_irq())
|
|
|
|
|
<id> := (optional) platform device id
|
2018-12-06 10:30:17 +08:00
|
|
|
|
|
|
|
|
|
使用 virtio mmio 内核参数的示例如下:
|
|
|
|
|
|
2018-12-06 11:10:39 +08:00
|
|
|
|
virtio_mmio.device=1K@0x100b0000:48:7
|
|
|
|
|
|
|
|
|
|
可以多次使用该内核参数来指定不同的 virtio mmio 设备。
|
|
|
|
|
|
|
|
|
|
非 mmio 设备有 Legacy 和 Modern 两种类型,这两种类型设备是通过 PCI 总线枚举而感知到虚拟设备存在的。如果在加载 virtio pci 设备模块时强制使用 Legacy 设备,则优先按 Legacy 设备进行加载,如果加载失败则按 Modern 设备加载。否则优先使用 Modern 设备加载。
|
2018-12-06 10:30:17 +08:00
|
|
|
|
|
2018-12-06 11:31:15 +08:00
|
|
|
|
Legacy 设备使用 CONFIGURATION ADDRESS(0xCF8) 和 CONFIGURATION DATA PORT(0xCFC)来进行设备访问(CAM);Modern 设备使用 ENHANCED 方式进行设备访问(ECAM)。参见《PCI_Configuration_Register_Access》。
|
2018-12-06 10:30:17 +08:00
|
|
|
|
|
2018-12-06 11:10:39 +08:00
|
|
|
|
其他还有 virtio vop 设备和 virtio ccw 设备,vop 设备指 Intel Virtio Over PCIe (VOP) driver;ccw 指 Concurrent I/O (CIO) 设备。virtio vop 和 virtio ccw 是分别属于这两种类型的 virtio 设备。
|
2018-12-06 10:30:17 +08:00
|
|
|
|
|
|
|
|
|
## 4、Virtqueue
|
|
|
|
|
|
|
|
|
|
## 5、Network Device
|
|
|
|
|
|
|
|
|
|
## 6、Block Device
|
|
|
|
|
|
|
|
|
|
## 7、Console Device
|
|
|
|
|
|
|
|
|
|
## 8、Entropy Device
|
|
|
|
|
|
|
|
|
|
## 9、Traditional Memory Balloon Device
|
|
|
|
|
|
|
|
|
|
## 10、SCSI Host Device
|
|
|
|
|
|
|
|
|
|
## 11、Reserved Feature Bits
|
|
|
|
|
|
|
|
|
|
## 12、Creating New Device Types
|