Hello, This series converts virtio devices to QOM realize/unrealize. It is intended as base for fixing virtio-net initialization order issues, as reported by Jesse. Only partially tested though.
Note that while VirtioDevice was setting a DeviceClass::exit callback for cleaning up the bus name, this was overwritten by most derived classes. That is fixed as part of this conversion. Similarly, virtio_scsi_common_{init,exit} can be moved to VirtIOSCSICommon now. This has the side-effect that the two SCSI subclasses now perform some initializations after the common SCSI implementation has invoked virtio_bus_plug_device(). As a follow-up, VirtIOSerialPort is also converted to QOM realize/unrealize. As a side-effect, virtio-console realization is changed from in-order to pre-order. Incidentally I stumbled over a minor cleanup issue with virtserialport. Available from: https://github.com/afaerber/qemu-cpu/commits/realize-virtio.v1 git://github.com/afaerber/qemu-cpu.git realize-virtio.v1 Regards, Andreas Cc: Anthony Liguori <anth...@codemonkey.ws> Cc: Paolo Bonzini <pbonz...@redhat.com> Cc: Michael S. Tsirkin <m...@redhat.com> Cc: Jesse Larrew <jlar...@linux.vnet.ibm.com> Cc: Frederic Konrad <fred.kon...@greensocs.com> Andreas Färber (5): virtio-blk-dataplane: Improve error reporting virtio: Convert VirtioDevice to QOM realize/unrealize virtio-console: QOM'ify VirtConsole virtio-console: Use exitfn for virtserialport, too virtio-serial-port: Convert to QOM realize/unrealize hw/9pfs/virtio-9p-device.c | 67 ++++++++++++++------------ hw/9pfs/virtio-9p.h | 13 +++++ hw/block/dataplane/virtio-blk.c | 25 +++++----- hw/block/dataplane/virtio-blk.h | 5 +- hw/block/virtio-blk.c | 56 +++++++++++++-------- hw/char/virtio-console.c | 99 ++++++++++++++++++++++++++------------ hw/char/virtio-serial-bus.c | 94 ++++++++++++++++++------------------ hw/net/virtio-net.c | 48 ++++++++++-------- hw/scsi/vhost-scsi.c | 59 +++++++++++++---------- hw/scsi/virtio-scsi.c | 85 ++++++++++++++++++++------------ hw/virtio/virtio-balloon.c | 50 +++++++++++-------- hw/virtio/virtio-rng.c | 53 +++++++++++--------- hw/virtio/virtio.c | 20 +++----- include/hw/virtio/vhost-scsi.h | 13 +++++ include/hw/virtio/virtio-balloon.h | 13 +++++ include/hw/virtio/virtio-blk.h | 13 +++++ include/hw/virtio/virtio-net.h | 13 +++++ include/hw/virtio/virtio-rng.h | 13 +++++ include/hw/virtio/virtio-scsi.h | 29 +++++++++-- include/hw/virtio/virtio-serial.h | 24 ++++----- include/hw/virtio/virtio.h | 6 ++- 21 files changed, 513 insertions(+), 285 deletions(-) -- 1.8.1.4