Virtio infrastructure
commit05b97bc61a509e80386396bb643f7ee958a51f60
authorAnthony Liguori <aliguori@us.ibm.com>
Sun, 30 Dec 2007 22:18:22 +0000 (31 00:18 +0200)
committerAvi Kivity <avi@qumranet.com>
Wed, 2 Jan 2008 15:48:44 +0000 (2 17:48 +0200)
treee7cf48f97fcca835dff02c75c1d95152d5c2e0e3
parent6deeee13d18ac361450be92e04e3f8f5a9b49160
Virtio infrastructure

This patch implements the basic infrastructure for virtio devices.  These
devices are exposed to the guest as real PCI devices.  The PCI vendor/device
IDs have been donated by Qumranet and the subsystem IDs are used to distinguish
the virtio device itself.

Virtio provides an abstraction for performing guest=>host and host=>guest
communications.  It also provides a standard ring queue interface and discovery
mechanism.  Finally, virtio provides a simple mechanism for passing
configuration between host and guest.

In this virtio implementation, we provide these things via normal PCI
operations.  The Linux kernel support for this virtio device is pending in
Rusty's virtio patch queue[1].  They should be submitted once the merge window
opens again.

Some future TODOs are to use endian/alignment safe routines when accessing the
virtqueue so that mixed mode host/guests are supported.

[1] http://ozlabs.org/~rusty/kernel/hg

Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Cc: Rusty Russell <rusty@rustcorp.com.au>
Signed-off-by: Dor Laor <dor.laor@qumranet.com>
Signed-off-by: Avi Kivity <avi@qumranet.com>
Makefile.target
hw/virtio.c [new file with mode: 0644]
hw/virtio.h [new file with mode: 0644]