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

Reply via email to