Virtio¶
intro
virtio devices are implemented over MMIO, Channel I/O and PCI bus transports
virtqueue, vring
Document¶
initial paper from Rusty Russel: (Rusty, 2008) virtio: Towards a De-Facto Standard For Virtual I/O Devices
about virtio spec:
(2010), IBM developer works, Virtio: An I/O virtualization framework for Linux
CMU 15-412 materials, Virtio: An I/O virtualization framework for Linux
(2014, devconf.cz), Stefan Hajnoczi. VIRTIO 1.0 - Paravirtualized I/O for KVM and beyond
Performance comparsion: virtio-blk latency
notes¶
paper note: virtio-paper
virtqueue initialization (e.g. config)
virtqueue 5 ops 簡介
virtio-blk¶
documents
bio based virtio-blk guest driver: remove IO scheduling.
vhost blk host driver: remove host fs layer, no qemu userspace.
Misc¶
virtqueue kick: a pio write to a virtio PCI hardware register
Programming IO: https://en.wikipedia.org/wiki/Programmed_input/output
好吧, 看來 virtqueue kick 就是 trap, vring interrupt 也是一般的 interrupt.
virtio-ioeventfd (userspace emulation)
virtio-pci: Use ioeventfd for virtqueue notify