Hi,
Just to be sure that we are all understanding the same thing about the
virtio
refactoring.
The old patch-set ( git://git.greensocs.com/qemu_virtio.git virtio ) I
sent was
not good because :
* It use a custom transport property ( e.g : transport=virtio-mmio.0 ) for
selecting a transport device between refactored virtio-pci and
virtio-mmio
which isn't QOM compliant.
* It wasn't easily reviewable, because the virtio-pci-new.c file is
created at
the beginning of the patch-set in order to keep virtio-pci.c ( and not
breaking the virtio-*-pci devices ).
To fix this, an idea is to use a new qbus named VirtioBus to link virtio-pci
or virtio-mmio with all the virtio backend ( VirtioDevice ). So
"virtio-pci" and
"virtio-mmio" will have a VirtioBus.
To do that we will do the following things in the right order :
* 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 ).
Is it the right approach ? Do I miss something ?
When it will work, we must be sure of :
-> migration compatibility.
-> not breaking the s390 transport.
-> compatibility with s390 ccw.
Fred