Hi, I submit this RFC to be sure I'm doing the right thing about the VirtioBus.
I push the patchset here : git://git.greensocs.com/qemu_virtio.git virtio_refact What I proposed to do : * Introduce a new VirtioBus ( same way as scsi-bus.c ), with VirtIODevice interface : -> callback to completely abstract the VirtioDevice from VirtioPCI. -> for the queue, load/save the queue/config, features, ..., other ? * Add a VirtioBus to the VirtioPCIProxy. ( virtio-pci.c ) : -> moving all to the newer callback. * For each of the virtio-device : ( virtio-x.c ) -> making a separate class for virtio-x which is a VirtioDevice. -> making a virtio-x-pci which has a virtio-x. * Create virtio-mmio ( virtio-mmio.c ). What it is done in this RFC : * introduce VirtioBus, which can be added to Virtio transports like virtio-pci or virtio-mmio. I think the interface must be improved. * add a VirtioBus to the existing VirtioPCIProxy ( virtio-pci ), and add a "virtio-pci" device which can be loaded without a VirtIODevice, and create a VirtioBus. * add a "virtio-blk" device which must be connected on a virtio-bus, to try the virtio-bus and virtio-pci. The info qtree return this structure : bus: main-system-bus type System dev: i440FX-pcihost, id "" bus: pci.0 type PCI dev: virtio-pci, id "" bus: virtio.0 type VIRTIO dev: virtio-blk, id "" What I must improve : * the Virtio-PCI still need the VirtIODevice. * others devices. * spliting virtio-x-pci to virtio-x + virtio-pci. Did I miss something ? Thanks, Fred.